./PaxHeaders.7332/eztrace-1.1-70000644000000000000000000000013213171135500012703 xustar0030 mtime=1508162368.814001684 30 atime=1508162372.166294941 30 ctime=1508162368.814001684 eztrace-1.1-7/0000755000175000017500000000000013171135500014012 5ustar00trahaytrahay00000000000000eztrace-1.1-7/PaxHeaders.7332/aclocal.m40000644000000000000000000000013213171135252014467 xustar0030 mtime=1508162218.465722137 30 atime=1508162218.557728875 30 ctime=1508162365.457708634 eztrace-1.1-7/aclocal.m40000644000175000017500000012251713171135252015666 0ustar00trahaytrahay00000000000000# generated automatically by aclocal 1.15.1 -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.15.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.15.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) m4_include([m4/pkg.m4]) eztrace-1.1-7/PaxHeaders.7332/example0000644000000000000000000000013213171135475014214 xustar0030 mtime=1508162365.581719452 30 atime=1508162367.741908015 30 ctime=1508162365.581719452 eztrace-1.1-7/example/0000755000175000017500000000000013171135475015460 5ustar00trahaytrahay00000000000000eztrace-1.1-7/example/PaxHeaders.7332/README0000644000000000000000000000013212544237152015147 xustar0030 mtime=1435582058.511899952 30 atime=1507797515.181965171 30 ctime=1508162365.585719801 eztrace-1.1-7/example/README0000644000175000017500000000630612544237152016343 0ustar00trahaytrahay00000000000000 --- Writing a plugin module for eztrace --- I - Introduction ================ This is an example of plugin module for eztrace. This directory contains 2 sub-directories: libexample_orig --------------- This is an example library with functions that we want to trace using eztrace. This library implements two simple functions (example_function1 and example_function2). This directory also includes a simple program that uses this library. libexample_eztrace ------------------ This directory contains an example plugin for eztrace. This plugin allows to trace the libexample functions with eztrace. II - Files required for an eztrace module ========================================= Writing an eztrace module requires 2 steps: a. Recording events when a particular function is called. This step happens during the application execution. b. Interpreting the recorded events and generating a trace. This step happens after the application execution, when eztrace_convert is run. It is thus required to create two dynamic libraries that are loaded by eztrace and eztrace_convert. II.1 - Recording events ----------------------- (see libexample_eztrace/example.c) For recording events, eztrace relies on functions that redefines the functions that have to be traced (MPI_Send, pthread_create, etc.) Writing a plugin module for eztrace thus boils down to redefining all the needed functions (for example example_function1 and example_function2). Each redefined function f has to record an event and to call the original f function. Usually such a function looks like this: int f(int arg1, double arg2) { EZTRACE_EVENT2(F_START, arg1, arg2); int ret = f_orig(arg1, arg2); EZTRACE_EVENT1(F_STOP, ret); return ret; } This function records an event (which code is F_START), calls the original f function, and records another after f (which code is F_STOP). In order to call the original f function, the constructor of the library should invoke the INTERCEPT macro: INTERCEPT("f", f_orig); This macro replace the original f function with the one defined in the current module. It copies the address of the original function in the f_orig variable. II.2 - Interpreting the recorded events --------------------------------------- (see libexample_eztrace/eztrace_convert_example.c) The interpretation plugin has to register to eztrace at startup. This can be done by using a constructor (see the libinit function). During the registration, the plugin defines a set of callbacks as well as general information on the plugin: int (*init)(): The initialization function. This function is called once all the plugins are loaded and the trace is started. This function usually declared StateTypes, LinkTypes, etc. int (*handle)(eztrace_event_t* ev): The function that interprets events. It is called for each event in the Fxt trace. int (*handle_stats)(eztrace_event_t* ev): The function called for handling an event when eztrace_stats is called void (*print_stats)(): Print the results of statistics. uint8_t module_prefix: Plugin identifier. char* name: Name of the plugin. It is used for selecting the list of plugins to use (ie. EZTRACE_TRACE) char* description: Description of the plugin (printed by eztrace_avail) eztrace-1.1-7/example/PaxHeaders.7332/libexample_orig0000644000000000000000000000013213171135475017356 xustar0030 mtime=1508162365.605721546 30 atime=1508162367.741908015 30 ctime=1508162365.605721546 eztrace-1.1-7/example/libexample_orig/0000755000175000017500000000000013171135475020622 5ustar00trahaytrahay00000000000000eztrace-1.1-7/example/libexample_orig/PaxHeaders.7332/static_example.c0000644000000000000000000000013212544237152022577 xustar0030 mtime=1435582058.511899952 30 atime=1507797515.181965171 30 ctime=1508162365.601721196 eztrace-1.1-7/example/libexample_orig/static_example.c0000644000175000017500000000064712544237152023775 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include "example.h" /* dummy function #1 */ double example_static_function(double *array, int array_size) { int i; double sum = 0; for (i = 0; i < array_size; i++) { array[i] = array[i] * (i + 1); sum += array[i]; } return sum; } eztrace-1.1-7/example/libexample_orig/PaxHeaders.7332/main.c0000644000000000000000000000013212544237152020521 xustar0030 mtime=1435582058.511899952 30 atime=1507797515.185965298 30 ctime=1508162365.605721546 eztrace-1.1-7/example/libexample_orig/main.c0000644000175000017500000000207012544237152021707 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ /* simple program that calls the libexample library */ #include #include #include "example.h" #define SIZE (1024*1024) int main(int argc, char**argv) { double *double_array = malloc(sizeof(double) * SIZE); int *int_array = malloc(sizeof(int) * SIZE); int i; /* initialize the array with something */ for (i = 0; i < SIZE; i++) { double_array[i] = (i * i) / 31; } double sum_double = example_function1(double_array, SIZE); /* initialize the array with something */ for (i = 0; i < SIZE; i++) { double_array[i] = (i * i) / 31; } double static_sum_double = example_static_function(double_array, SIZE); for (i = 0; i < SIZE; i++) { int_array[i] = i % 17; } int sum_int = example_function2(int_array, SIZE); printf("sum double = %lf\n", sum_double); printf("static sum double = %lf\n", static_sum_double); printf("sum int = %d\n", sum_int); return 0; } eztrace-1.1-7/example/libexample_orig/PaxHeaders.7332/Makefile0000644000000000000000000000013212544237152021071 xustar0030 mtime=1435582058.511899952 30 atime=1507797515.185965298 30 ctime=1508162365.609721895 eztrace-1.1-7/example/libexample_orig/Makefile0000644000175000017500000000127512544237152022265 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis # See COPYING in top-level directory. BIN = libexample.so libstatic_example.a main main_mpi all: $(BIN) main_mpi: main.c example.h mpicc -o main_mpi main.c -L. -lexample main: main.c example.h libexample.so libstatic_example.a $(CC) -o main main.c -L. -lexample libstatic_example.a -O0 -g libexample.so: example.o $(CC) --shared -o libexample.so example.o -ldl libstatic_example.a: static_example.o ar rcs libstatic_example.a static_example.o static_example.o: static_example.c $(CC) -c static_example.c -O0 -g example.o: example.c example.h $(CC) -o example.o -c example.c -fPIC -O0 -g clean: rm -f $(BIN) *.oeztrace-1.1-7/example/libexample_orig/PaxHeaders.7332/example.c0000644000000000000000000000013212544237152021230 xustar0030 mtime=1435582058.511899952 30 atime=1507797515.185965298 30 ctime=1508162365.601721196 eztrace-1.1-7/example/libexample_orig/example.c0000644000175000017500000000114412544237152022417 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include "example.h" /* dummy function #1 */ double example_function1(double *array, int array_size) { int i; double sum = 0; for (i = 0; i < array_size; i++) { array[i] = array[i] * (i + 1); sum += array[i]; } return sum; } /* dummy function #2 */ int example_function2(int *array, int array_size) { int i; int sum = 0; for (i = 0; i < array_size; i++) { array[i] = array[i] * (i + 1); sum += array[i]; } return sum; } eztrace-1.1-7/example/libexample_orig/PaxHeaders.7332/example.h0000644000000000000000000000013212544237152021235 xustar0030 mtime=1435582058.511899952 30 atime=1507797515.185965298 30 ctime=1508162365.605721546 eztrace-1.1-7/example/libexample_orig/example.h0000644000175000017500000000063512544237152022430 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #ifndef __EXAMPLE_H__ #define __EXAMPLE_H__ /* dummy function #1 */ double example_function1(double*, int); /* dummy function #2 */ int example_function2(int*, int); double example_static_function(double *array, int array_size); #endif /* __EXAMPLE_H__ */ eztrace-1.1-7/example/PaxHeaders.7332/libexample_eztrace0000644000000000000000000000013213171135475020053 xustar0030 mtime=1508162365.593720499 30 atime=1508162367.741908015 30 ctime=1508162365.593720499 eztrace-1.1-7/example/libexample_eztrace/0000755000175000017500000000000013171135475021317 5ustar00trahaytrahay00000000000000eztrace-1.1-7/example/libexample_eztrace/PaxHeaders.7332/example_ev_codes.h0000644000000000000000000000013112544237152023600 xustar0030 mtime=1435582058.511899952 30 atime=1507797515.185965298 29 ctime=1508162365.58972015 eztrace-1.1-7/example/libexample_eztrace/example_ev_codes.h0000644000175000017500000000231512544237152024771 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #ifndef __EXAMPLE_EV_CODES_H__ #define __EXAMPLE_EV_CODES_H__ /* This file defines the event codes that are used by the example * module. */ #include "ev_codes.h" /* Event codes prefix. This identifies the module and thus should be * unique. * The 0x0? prefix is reserved for eztrace internal use. Thus you can * use any prefix between 0x10 and 0xff. */ #define EXAMPLE_EVENTS_ID USER_MODULE_ID(0x11) #define EXAMPLE_PREFIX (EXAMPLE_EVENTS_ID << NB_BITS_EVENTS) /* Define various event codes used by the example module * The 2 most significant bytes should correspond to the module id, * as below: */ #define EZTRACE_EXAMPLE_FUNCTION1_ENTRY (EXAMPLE_PREFIX | 0x0001) #define EZTRACE_EXAMPLE_FUNCTION1_EXIT (EXAMPLE_PREFIX | 0x0002) #define EZTRACE_EXAMPLE_FUNCTION2_ENTRY (EXAMPLE_PREFIX | 0x0011) #define EZTRACE_EXAMPLE_FUNCTION2_EXIT (EXAMPLE_PREFIX | 0x0012) #define EZTRACE_STATIC_EXAMPLE_FUNCTION_ENTRY (EXAMPLE_PREFIX | 0x0101) #define EZTRACE_STATIC_EXAMPLE_FUNCTION_EXIT (EXAMPLE_PREFIX | 0x0102) #endif /* __EXAMPLE_EV_CODES_H__ */ eztrace-1.1-7/example/libexample_eztrace/PaxHeaders.7332/Makefile0000644000000000000000000000013212544237152021566 xustar0030 mtime=1435582058.511899952 30 atime=1507797515.185965298 30 ctime=1508162365.593720499 eztrace-1.1-7/example/libexample_eztrace/Makefile0000644000175000017500000000143712544237152022762 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis # See COPYING in top-level directory. BIN = libeztrace-convert-example.so libeztrace-autostart-example.so libeztrace-example.so # LDFLAGS=-LPATH_TO_EZTRACE/lib # CFLAGS=-IPATH_TO_EZTRACE/include all: $(BIN) libeztrace-convert-example.so: eztrace_convert_example.c example_ev_codes.h $(CC) --shared -o libeztrace-convert-example.so eztrace_convert_example.c -fPIC $(CFLAGS) $(LDFLAGS) -ldl libeztrace-example.so: example.c example_ev_codes.h $(CC) --shared -o libeztrace-example.so example.c -fPIC $(CFLAGS) $(LDFLAGS) -ldl libeztrace-autostart-example.so: example.c example_ev_codes.h $(CC) --shared -o libeztrace-autostart-example.so example.c -fPIC $(CFLAGS) $(LDFLAGS) -ldl -DEZTRACE_AUTOSTART clean: rm -f $(BIN) eztrace-1.1-7/example/libexample_eztrace/PaxHeaders.7332/example.c0000644000000000000000000000013212544237152021725 xustar0030 mtime=1435582058.511899952 30 atime=1507797515.185965298 30 ctime=1508162365.585719801 eztrace-1.1-7/example/libexample_eztrace/example.c0000644000175000017500000000565212544237152023124 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ /* This file contains an alternative libexample.so * The functions defined in libexample (example_function1 and * example_function2) are redefined so that when the application * call one of these functions, the hereby version of it is actually * invoked. */ /* In order to compile this library, you need to add -ldl */ #include "eztrace.h" #include "example_ev_codes.h" /* pointers to the actual functions (located in the original * libexample.so) */ double (*libexample_function1)(double*, int); double (*libstatic_example_function)(double*, int); int (*libexample_function2)(int*, int); /* redefine example_function1. * This version of the function only record some events and calls * the original example_function1 function */ double example_function1(double *array, int array_size) { /* record an event with code EZTRACE_EXAMPLE_FUNCTION1_ENTRY * and two values */ EZTRACE_EVENT2(EZTRACE_EXAMPLE_FUNCTION1_ENTRY, array, array_size); /* call the actual function (located in the original libexample.so) */ double ret = libexample_function1(array, array_size); /* record another event with code EZTRACE_EXAMPLE_FUNCTION1_ENTRY * and two values */ EZTRACE_EVENT2(EZTRACE_EXAMPLE_FUNCTION1_EXIT, array, array_size); return ret; } double static_example_function(double*array, int array_size) { EZTRACE_EVENT2(EZTRACE_STATIC_EXAMPLE_FUNCTION_ENTRY, array, array_size); /* call the actual function (located in the original libexample.so) */ double ret = libstatic_example_function(array, array_size); /* record another event with code EZTRACE_EXAMPLE_FUNCTION1_ENTRY * and two values */ EZTRACE_EVENT2(EZTRACE_STATIC_EXAMPLE_FUNCTION_EXIT, array, array_size); return ret; } /* redefine example_function2. * This version of the function only record some events and calls * the original example_function2 function */ int example_function2(int *array, int array_size) { EZTRACE_EVENT2(EZTRACE_EXAMPLE_FUNCTION2_ENTRY, array, array_size); int ret = libexample_function2(array, array_size); EZTRACE_EVENT2(EZTRACE_EXAMPLE_FUNCTION2_EXIT, array, array_size); return ret; } void __example_init(void) __attribute__ ((constructor)); /* Initialize the current library */ void __example_init(void) { /* store the address of the example_function1 in libexample_function1 * so that the redefined version of this function can call the * original one */ INTERCEPT("example_function1", libexample_function1); INTERCEPT("example_function2", libexample_function2); INTERCEPT("static_example_function", libstatic_example_function); /* start event recording */ #ifdef EZTRACE_AUTOSTART eztrace_start (); #endif } void __example_conclude(void) __attribute__ ((destructor)); void __example_conclude(void) { /* stop event recording */ eztrace_stop(); } eztrace-1.1-7/example/libexample_eztrace/PaxHeaders.7332/eztrace_convert_example.c0000644000000000000000000000013212544237152025202 xustar0030 mtime=1435582058.511899952 30 atime=1507797515.185965298 30 ctime=1508162365.593720499 eztrace-1.1-7/example/libexample_eztrace/eztrace_convert_example.c0000644000175000017500000001606112544237152026375 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ /* This file contains the methods invoked during the conversion of * the trace (ie. during eztrace_convert). * After compilation, this file is transformed into the plugin * libeztrace_convert_example.so * When this plugin is loaded by eztrace_convert, its constructor * (libinit() ) should register the plugin and specify various callbacks */ #include #include #include "example_ev_codes.h" #include "eztrace_convert.h" int eztrace_convert_example_init(); int handle_example_events(eztrace_event_t *ev); void handle_example_function1_entry(); void handle_example_function1_exit(); void handle_example_function2_entry(); void handle_example_function2_exit(); void print_example_stats(); int handle_example_stats(eztrace_event_t *ev); /* Constructor of the plugin. * This function registers the current module to eztrace_convert */ struct eztrace_convert_module example_module; void libinit(void) __attribute__ ((constructor)); void libinit(void) { /* Specify the initialization function. * This function will be called once all the plugins are loaded * and the trace is started. * This function usually declared StateTypes, LinkTypes, etc. */ example_module.init = eztrace_convert_example_init; /* Specify the function to call for handling an event */ example_module.handle = handle_example_events; /* Specify the function to call for handling an event when eztrace_stats is called */ example_module.handle_stats = handle_example_stats; /* Print the results of statistics */ example_module.print_stats = print_example_stats; /* Specify the module prefix */ example_module.module_prefix = EXAMPLE_EVENTS_ID; asprintf(&example_module.name, "example"); asprintf(&example_module.description, "Module for Example library"); example_module.token.data = &example_module; /* Register the module to eztrace_convert */ eztrace_convert_register_module(&example_module); printf("module Example loaded\n"); } void libfinalize(void) __attribute__ ((destructor)); void libfinalize(void) { printf("unloading module Example\n"); } /* * This function will be called once all the plugins are loaded * and the trace is started. * This function usually declared StateTypes, LinkTypes, etc. */ int eztrace_convert_example_init() { addEntityValue("function1_alias", "ST_Thread", "Doing function1", GTG_PINK); addEntityValue("function2_alias", "ST_Thread", "Doing function2", GTG_BLACK); return 0; } /* declare a few variable for computing statistics */ static int nb_function1 = 0; static int nb_function2 = 0; static float total_time_in_function1 = 0; static float total_time_in_function2 = 0; static float last_start_time_function1 = 0; static float last_start_time_function2 = 0; /* Function called for handling an event when eztrace_stats is called * It shall return 1 if the event was handled successfully or * 0 otherwise. */ int handle_example_stats(eztrace_event_t *ev) { /* depending on the event code, let's count the number of calls to function1 and function2 * for both function, compute the average duration of the function call */ switch (ev->code) { case EZTRACE_EXAMPLE_FUNCTION1_ENTRY: nb_function1++; last_start_time_function1 = CURRENT; break; case EZTRACE_EXAMPLE_FUNCTION1_EXIT: /* WARNING: this does not support support reentrant calls to function1. */ total_time_in_function1 += CURRENT - last_start_time_function1; break; case EZTRACE_EXAMPLE_FUNCTION2_ENTRY: nb_function2++; last_start_time_function2 = CURRENT; break; case EZTRACE_EXAMPLE_FUNCTION2_EXIT: /* WARNING: this does not support support reentrant calls to function2. */ total_time_in_function2 += CURRENT - last_start_time_function2; break; default: /* The event was not handled */ return 0; } return 1; } /* Print the results of statistics. */ void print_example_stats() { printf("\nLibExample:\n"); printf("-----------\n"); if (nb_function1) { /* Only print this when calls to function1 were detected */ printf("%d calls to Function1\n", nb_function1); printf("\taverage duration: %f us\n", total_time_in_function1 / nb_function1); } if (nb_function2) { /* Only print this when calls to function2 were detected */ printf("%d calls to Function2\n", nb_function2); printf("\taverage duration: %f us\n", total_time_in_function2 / nb_function2); } } /* * This function is called by eztrace_convert for each event to handle. * It shall return one if the event was handled successfully or zero otherwise. */ int handle_example_events(eztrace_event_t *ev) { switch (ev->code) { case EZTRACE_EXAMPLE_FUNCTION1_ENTRY: handle_example_function1_entry(); break; case EZTRACE_EXAMPLE_FUNCTION1_EXIT: handle_example_function1_exit(); break; case EZTRACE_EXAMPLE_FUNCTION2_ENTRY: handle_example_function2_entry(); break; case EZTRACE_EXAMPLE_FUNCTION2_EXIT: handle_example_function2_exit(); break; case EZTRACE_STATIC_EXAMPLE_FUNCTION_ENTRY: fprintf(stderr, "static exemple function entry\n"); break; case EZTRACE_STATIC_EXAMPLE_FUNCTION_EXIT: fprintf(stderr, "static exemple function exit\n"); break; default: /* The event was not handled */ return 0; } return 1; } /* This function is called by handle_example_events when reaching * the EZTRACE_EXAMPLE_FUNCTION1_ENTRY event. */ void handle_example_function1_entry() { /* FUNC_NAME is used for debugging. If -v is passed to eztrace_convert, * FUNC_NAME prints the name of the function */ FUNC_NAME; /* Initialize a char* thread_id and generate a string that * identifies the thread that issued the current event */ INIT_THREAD_ID(thread_id); /* Update the state of the thread in the output trace. */CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "function1_alias"); free(thread_id); } /* This function is called by handle_example_events when reaching * the EZTRACE_EXAMPLE_FUNCTION1_EXIT event. */ void handle_example_function1_exit() { FUNC_NAME; INIT_THREAD_ID(thread_id); /* Restore the state of the thread to its previous state in the * output trace. */CHANGE() popState(CURRENT, "ST_Thread", thread_id); free(thread_id); } /* This function is called by handle_example_events when reaching * the EZTRACE_EXAMPLE_FUNCTION2_ENTRY event. */ void handle_example_function2_entry() { FUNC_NAME; INIT_THREAD_ID(thread_id); /* Update the state of the thread in the output trace. */CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "function2_alias"); free(thread_id); } /* This function is called by handle_example_events when reaching * the EZTRACE_EXAMPLE_FUNCTION2_EXIT event. */ void handle_example_function2_exit() { FUNC_NAME; INIT_THREAD_ID(thread_id); /* Restore the state of the thread to its previous state in the * output trace. */CHANGE() popState(CURRENT, "ST_Thread", thread_id); free(thread_id); } eztrace-1.1-7/PaxHeaders.7332/missing0000644000000000000000000000013113171135253014223 xustar0030 mtime=1508162219.601805434 29 atime=1508162266.28138609 30 ctime=1508162365.493711775 eztrace-1.1-7/missing0000755000175000017500000001533013171135253015420 0ustar00trahaytrahay00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/PaxHeaders.7332/test0000644000000000000000000000013213171135500013525 xustar0030 mtime=1508162368.741995391 30 atime=1508162372.166294941 30 ctime=1508162368.741995391 eztrace-1.1-7/test/0000755000175000017500000000000013171135500014771 5ustar00trahaytrahay00000000000000eztrace-1.1-7/test/PaxHeaders.7332/module_generator0000644000000000000000000000013213171135475017073 xustar0030 mtime=1508162365.565718056 30 atime=1508162367.741908015 30 ctime=1508162365.565718056 eztrace-1.1-7/test/module_generator/0000755000175000017500000000000013171135475020337 5ustar00trahaytrahay00000000000000eztrace-1.1-7/test/module_generator/PaxHeaders.7332/example.tpl0000644000000000000000000000013212544237152021322 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.837986159 30 ctime=1508162365.565718056 eztrace-1.1-7/test/module_generator/example.tpl0000644000175000017500000000464612544237152022523 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis # See COPYING in top-level directory. # There are deliberately trailing whitespace everywhere. This # (<-- see?) is for stressing the script parser. # Sorry for the inconvenience. BEGIN_MODULE NAME example_lib DESC "module for the example library" LANGUAGE C ID 09 BEGIN_INCLUDE #include END_INCLUDE int example_do_event( int n) BEGIN EVENT("Do new function") END void appli_function1(double* array, int size) BEGIN RECORD_STATE("running appli_function1") END double example_function1(double* array, int array_size) int example_function2(int* array, int array_size) BEGIN RECORD_STATE("running example_function2") END int example_fcall( int* array, int array_size ) BEGIN CALL_FUNC END int example_push (int* array,int array_size) BEGIN PUSH_STATE("doing function example_push") END int example_event(int* array, int array_size) BEGIN EVENT("example_event called") END int example_set_var(int* array, int array_size) BEGIN SET_VAR("variable name", 5) END int example_add_var(int* array, int array_size) BEGIN ADD_VAR("variable name", 1) END int example_sub_var ( int* array, int array_size) BEGIN SUB_VAR("variable name", 4) END int example_set_var2 ( int* array, int array_size) BEGIN SET_VAR("another variable name", 21) END int example_set_var3( int* array, int array_size) BEGIN ADD_VAR("another variable name", 10) END int example_set_var4( int* array, int array_size) BEGIN SUB_VAR("another variable name", 3) END int example_set_var5( int* array, int array_size) BEGIN SET_VAR("another variable name", 13) END int example_set_var6( int* array, int array_size) BEGIN ADD_VAR("variable name", 2) CALL_FUNC SUB_VAR("variable name", 1) END int example_many_args( int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7) BEGIN ADD_VAR("variable name", 2) CALL_FUNC SUB_VAR("variable name", 1) END DEFINE_SAMPLING_FUNCTION (example_sampling, 1000) int example_sampling(struct ezt_sampling_callback_instance *instance) { double *ptr = NULL; if(!instance->plugin_data) { instance->plugin_data = malloc(sizeof(double)); ptr = instance->plugin_data; *ptr = 0; } ptr = instance->plugin_data; (*ptr) ++; if(*ptr>1) { SAMPLING_RECORD(*ptr, "Value of PTR"); } return 0; } END_DEFINE END_MODULE eztrace-1.1-7/test/module_generator/PaxHeaders.7332/example_application0000644000000000000000000000013213171135475023111 xustar0030 mtime=1508162365.581719452 30 atime=1508162367.741908015 30 ctime=1508162365.581719452 eztrace-1.1-7/test/module_generator/example_application/0000755000175000017500000000000013171135475024355 5ustar00trahaytrahay00000000000000eztrace-1.1-7/test/module_generator/example_application/PaxHeaders.7332/main.c0000644000000000000000000000013213011376143024246 xustar0030 mtime=1478884451.304236887 30 atime=1507797515.841986287 30 ctime=1508162365.581719452 eztrace-1.1-7/test/module_generator/example_application/main.c0000644000175000017500000000356613011376143025447 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ /* simple program that calls the libexample library */ #include #include #include "example.h" #define SIZE (1024*1024) void appli_function1(double* array, int size) { fprintf(stderr, "appli function1 (%p, %d)\n", array, size); compute(10); } int main(int argc, char**argv) { double *double_array = NULL; int *int_array = NULL; int func_num = 0; func_num = example_do_event(func_num); example_function1(double_array, SIZE); compute(200000); func_num = example_do_event(func_num); example_function2(int_array, SIZE); compute(200000); func_num = example_do_event(func_num); example_fcall(int_array, SIZE); compute(200000); func_num = example_do_event(func_num); example_push(int_array, SIZE); compute(200000); func_num = example_do_event(func_num); example_pop(int_array, SIZE); compute(200000); func_num = example_do_event(func_num); example_event(int_array, SIZE); compute(200000); func_num = example_do_event(func_num); example_set_var(int_array, SIZE); compute(200000); func_num = example_do_event(func_num); example_add_var(int_array, SIZE); compute(200000); func_num = example_do_event(func_num); example_sub_var(int_array, SIZE); compute(200000); func_num = example_do_event(func_num); example_set_var2(int_array, SIZE); compute(200000); func_num = example_do_event(func_num); example_set_var3(int_array, SIZE); compute(200000); func_num = example_do_event(func_num); example_set_var4(int_array, SIZE); compute(200000); func_num = example_do_event(func_num); example_set_var5(int_array, SIZE); compute(200000); func_num = example_do_event(func_num); appli_function1(double_array, SIZE); compute(200000); return 0; } eztrace-1.1-7/test/module_generator/example_application/PaxHeaders.7332/Makefile0000644000000000000000000000013113012560437024617 xustar0029 mtime=1479205151.30472761 30 atime=1507797515.841986287 30 ctime=1508162365.581719452 eztrace-1.1-7/test/module_generator/example_application/Makefile0000644000175000017500000000066413012560437026015 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis # See COPYING in top-level directory. BIN = libexample.so main CC = gcc CFLAGS = -O0 -g all: $(BIN) main: main.c example.h $(CC) $(CFLAGS) -o main main.c -L. -lexample libexample.so: example.o $(CC) $(CFLAGS) --shared -o libexample.so example.o -ldl example.o: example.c example.h $(CC) $(CFLAGS) -o example.o -c example.c -fPIC clean: rm -f $(BIN) *.o eztrace-1.1-7/test/module_generator/example_application/PaxHeaders.7332/example.c0000644000000000000000000000013212544237152024763 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.841986287 30 ctime=1508162365.565718056 eztrace-1.1-7/test/module_generator/example_application/example.c0000644000175000017500000000322112544237152026150 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include #include #include "example.h" #define TIME_DIFF(t1, t2) \ ((t2.tv_sec - t1.tv_sec) * 1000000 + (t2.tv_usec - t1.tv_usec)) void compute(unsigned usec) { struct timeval tv1, tv2; gettimeofday(&tv1, NULL); do { gettimeofday(&tv2, NULL); } while (TIME_DIFF(tv1, tv2) < usec); } int example_do_event(int n) { fprintf(stderr, "Doing function #%d\n", n); return n + 1; } /* dummy function #1 */ double example_function1(double *array, int array_size) { compute(10); return 0; } /* dummy function #2 */ int example_function2(int *array, int array_size) { compute(10); return 0; } int example_fcall(int *array, int array_size) { compute(10); return 0; } int example_push(int *array, int array_size) { compute(10); return 0; } int example_pop(int *array, int array_size) { compute(10); return 0; } int example_event(int *array, int array_size) { compute(10); return 0; } int example_set_var(int *array, int array_size) { compute(10); return 0; } int example_set_var2(int *array, int array_size) { compute(10); return 0; } int example_set_var3(int *array, int array_size) { compute(10); return 0; } int example_set_var4(int *array, int array_size) { compute(10); return 0; } int example_set_var5(int *array, int array_size) { compute(10); return 0; } int example_add_var(int *array, int array_size) { compute(10); return 0; } int example_sub_var(int *array, int array_size) { compute(10); return 0; } eztrace-1.1-7/test/module_generator/example_application/PaxHeaders.7332/example.h0000644000000000000000000000013212544237152024770 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.841986287 30 ctime=1508162365.573718755 eztrace-1.1-7/test/module_generator/example_application/example.h0000644000175000017500000000165712544237152026170 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #ifndef __EXAMPLE_H__ #define __EXAMPLE_H__ void compute(unsigned usec); int example_do_event(int n); /* dummy function #1 */ double example_function1(double*, int); /* dummy function #2 */ int example_function2(int*, int); int example_fcall(int *array, int array_size); int example_push(int *array, int array_size); int example_pop(int *array, int array_size); int example_event(int *array, int array_size); int example_set_var(int *array, int array_size); int example_add_var(int *array, int array_size); int example_sub_var(int *array, int array_size); int example_set_var2(int *array, int array_size); int example_set_var3(int *array, int array_size); int example_set_var4(int *array, int array_size); int example_set_var5(int *array, int array_size); #endif /* __EXAMPLE_H__ */ eztrace-1.1-7/test/PaxHeaders.7332/static0000644000000000000000000000013213171135500015014 xustar0030 mtime=1508162368.621984905 30 atime=1508162372.166294941 30 ctime=1508162368.621984905 eztrace-1.1-7/test/static/0000755000175000017500000000000013171135500016260 5ustar00trahaytrahay00000000000000eztrace-1.1-7/test/static/PaxHeaders.7332/static.c0000644000000000000000000000013212544237152016535 xustar0030 mtime=1435582058.575899951 30 atime=1507797515.845986415 30 ctime=1508162365.617722592 eztrace-1.1-7/test/static/static.c0000644000175000017500000000220112544237152017717 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include #include #include // Debugging part, print out only if debugging level of the system is verbose or more int _debug = -77; void debug(char *fmt, ...) { if (_debug == -77) { char *buf = getenv("EZTRACE_DEBUG"); if (buf == NULL) _debug = 0; else _debug = atoi(buf); } if (_debug >= 0) { // debug verbose mode va_list va; va_start(va, fmt); vfprintf(stdout, fmt, va); va_end(va); } } // end of debugging part #define microsleep(us) do { struct timespec tm; tm.tv_sec = (time_t)us / 1000; tm.tv_nsec = (long)(us % 1000) * 1000; nanosleep(&tm, NULL); } while(0) int mafunc(int n) { debug("i sleep %d microsec\n", n); microsleep(n); return EXIT_SUCCESS; } int main() { int i = 0; debug("hello i m in main an i will wait 4 microsec\n"); microsleep(4); for (i = 0; i < 4; i++) { mafunc(i); debug("main sleep 1 microsec\n"); microsleep(1); } return EXIT_SUCCESS; } eztrace-1.1-7/test/static/PaxHeaders.7332/Makefile.am0000644000000000000000000000013213012560437017132 xustar0030 mtime=1479205151.308727685 30 atime=1508162220.397863922 30 ctime=1508162368.621984905 eztrace-1.1-7/test/static/Makefile.am0000644000175000017500000000423513012560437020325 0ustar00trahaytrahay00000000000000# Copyright © CNRS, INRIA, Université Bordeaux 1 # See COPYING in top-level directory. if AMEXTERNLITL TLCFLAGS=$(TL_CPPFLAGS) TLLDFLAGS=$(TL_LDFLAGS) TLLIBADD=$(TL_LIB) else # AMEXTERNLITL TLCFLAGS = -I$(top_srcdir)/extlib/litl/src -I$(top_builddir)/extlib/litl/src TLLDFLAGS = $(top_builddir)/extlib/litl/src/liblitl.la TLLIBADD=$(TL_LIB) endif # AMINTERNLITL if AMEXTERNGTG GTGCFLAGS=$(GTG_CPPFLAGS) GTGLDFLAGS=$(GTG_LDFLAGS) GTGDEPENDENCIES = GTGLIBADD=$(GTG_LIB) else GTGCFLAGS = -I$(top_srcdir)/extlib/gtg/inc -I$(top_builddir)/extlib/gtg GTGLDFLAGS = $(top_builddir)/extlib/gtg/src/libgtg.la GTGDEPENDENCIES = $(GTGLDFLAGS) GTGLIBADD= endif EZT_DEPS = $(top_builddir)/src/core/eztrace_config.h if GTG_OUT_OF_ORDER GTGCFLAGS+=-DGTG_OUT_OF_ORDER endif check_PROGRAMS = static check_LTLIBRARIES = libeztrace-convert-staticlib.la\ libeztrace-staticlib.la\ libeztrace-autostart-staticlib.la static_SOURCES = static.c AM_CFLAGS = -W -Wall -Wextra -I$(top_builddir)/src/core/ -I$(top_srcdir)/src/core -I$(top_srcdir)/src/pptrace libeztrace_convert_staticlib_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(GTGCFLAGS) libeztrace_convert_staticlib_la_LIBADD = $(TLLIBADD) $(GTG_LIB) libeztrace_convert_staticlib_la_LDFLAGS = $(GTGLDFLAGS) $(TLLDFLAGS) -module -avoid-version -rpath /dev/null libeztrace_convert_staticlib_la_DEPENDENCIES = $(GTGDEPENDENCIES) $(EZT_DEPS) libeztrace_convert_staticlib_la_SOURCES = eztrace_convert_staticlib.c libeztrace_staticlib_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) libeztrace_staticlib_la_LIBADD = $(TLLIBADD) libeztrace_staticlib_la_LDFLAGS = --no-undefined $(TLLDFLAGS) -Wl,-Bsymbolic -module -avoid-version -rpath /dev/null libeztrace_staticlib_la_SOURCES = staticlib.c libeztrace_autostart_staticlib_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) libeztrace_autostart_staticlib_la_LIBADD = $(TLLIBADD) libeztrace_autostart_staticlib_la_LDFLAGS = --no-undefined $(TLLDFLAGS) -Wl,-Bsymbolic -module -avoid-version -rpath /dev/null libeztrace_autostart_staticlib_la_CFLAGS = $(AM_CFLAGS) -W -Wall -Wextra -DEZTRACE_AUTOSTART libeztrace_autostart_staticlib_la_SOURCES = staticlib.c noinst_HEADERS = staticlib_ev_codes.h eztrace-1.1-7/test/static/PaxHeaders.7332/staticlib.c0000644000000000000000000000013213143047722017222 xustar0030 mtime=1502367698.676456411 30 atime=1507797515.845986415 30 ctime=1508162365.617722592 eztrace-1.1-7/test/static/staticlib.c0000644000175000017500000000154613143047722020417 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include "eztrace.h" #include "staticlib_ev_codes.h" int (*libmafunc)(int n); int mafunc(int n) { EZTRACE_EVENT1(EZTRACE_staticlib_mafunc_1, n); int ret = libmafunc(n); EZTRACE_EVENT1(EZTRACE_staticlib_mafunc_2, n); return ret; } START_INTERCEPT INTERCEPT2("mafunc", libmafunc) END_INTERCEPT static void __staticlib_init(void) __attribute__ ((constructor)); /* Initialize the current library */ static void __staticlib_init(void) { DYNAMIC_INTERCEPT_ALL(); /* start event recording */ #ifdef EZTRACE_AUTOSTART eztrace_start (); #endif } static void __staticlib_conclude(void) __attribute__ ((destructor)); static void __staticlib_conclude(void) { /* stop event recording */ eztrace_stop(); } eztrace-1.1-7/test/static/PaxHeaders.7332/staticlib_ev_codes.h0000644000000000000000000000013213143047722021076 xustar0030 mtime=1502367698.676456411 30 atime=1507797515.845986415 30 ctime=1508162365.621722942 eztrace-1.1-7/test/static/staticlib_ev_codes.h0000644000175000017500000000166113143047722022271 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #ifndef __staticlib_EV_CODES_H__ #define __staticlib_EV_CODES_H__ /* This file defines the event codes that are used by the example * module. */ #include "ev_codes.h" /* Event codes prefix. This identifies the module and thus should be * unique. * The 0x0? prefix is reserved for eztrace internal use. Thus you can * use any prefix between 0x10 and 0xff. */ #define staticlib_EVENTS_ID USER_MODULE_ID(0x99) #define staticlib_PREFIX (staticlib_EVENTS_ID << NB_BITS_EVENTS) /* Define various event codes used by the example module * The 2 most significant bytes should correspond to the module id, * as below: */ #define EZTRACE_staticlib_mafunc_1 (staticlib_PREFIX | 0x1) #define EZTRACE_staticlib_mafunc_2 (staticlib_PREFIX | 0x2) #endif /* __staticlib_EV_CODES_H__ */ eztrace-1.1-7/test/static/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135254017144 xustar0030 mtime=1508162220.429866277 30 atime=1508162286.831044492 30 ctime=1508162365.613722244 eztrace-1.1-7/test/static/Makefile.in0000644000175000017500000007173413171135254020347 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright © CNRS, INRIA, Université Bordeaux 1 # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @GTG_OUT_OF_ORDER_TRUE@am__append_1 = -DGTG_OUT_OF_ORDER check_PROGRAMS = static$(EXEEXT) subdir = test/static ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__DEPENDENCIES_1 = @AMEXTERNLITL_FALSE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) @AMEXTERNLITL_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) libeztrace_autostart_staticlib_la_DEPENDENCIES = \ $(am__DEPENDENCIES_2) am_libeztrace_autostart_staticlib_la_OBJECTS = \ libeztrace_autostart_staticlib_la-staticlib.lo libeztrace_autostart_staticlib_la_OBJECTS = \ $(am_libeztrace_autostart_staticlib_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libeztrace_autostart_staticlib_la_LINK = $(LIBTOOL) $(AM_V_lt) \ --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libeztrace_autostart_staticlib_la_CFLAGS) $(CFLAGS) \ $(libeztrace_autostart_staticlib_la_LDFLAGS) $(LDFLAGS) -o $@ am_libeztrace_convert_staticlib_la_OBJECTS = \ libeztrace_convert_staticlib_la-eztrace_convert_staticlib.lo libeztrace_convert_staticlib_la_OBJECTS = \ $(am_libeztrace_convert_staticlib_la_OBJECTS) libeztrace_convert_staticlib_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) \ $(libeztrace_convert_staticlib_la_LDFLAGS) $(LDFLAGS) -o $@ libeztrace_staticlib_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_libeztrace_staticlib_la_OBJECTS = \ libeztrace_staticlib_la-staticlib.lo libeztrace_staticlib_la_OBJECTS = \ $(am_libeztrace_staticlib_la_OBJECTS) libeztrace_staticlib_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libeztrace_staticlib_la_LDFLAGS) \ $(LDFLAGS) -o $@ am_static_OBJECTS = static.$(OBJEXT) static_OBJECTS = $(am_static_OBJECTS) static_LDADD = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libeztrace_autostart_staticlib_la_SOURCES) \ $(libeztrace_convert_staticlib_la_SOURCES) \ $(libeztrace_staticlib_la_SOURCES) $(static_SOURCES) DIST_SOURCES = $(libeztrace_autostart_staticlib_la_SOURCES) \ $(libeztrace_convert_staticlib_la_SOURCES) \ $(libeztrace_staticlib_la_SOURCES) $(static_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUDA_CFLAGS = @CUDA_CFLAGS@ CUDA_LDFLAGS = @CUDA_LDFLAGS@ CUDA_LIBS = @CUDA_LIBS@ CUDA_ROOT = @CUDA_ROOT@ CUPTI_CFLAGS = @CUPTI_CFLAGS@ CUPTI_LDFLAGS = @CUPTI_LDFLAGS@ CUPTI_LIBS = @CUPTI_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ DYNLIB_EXT = @DYNLIB_EXT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ GTGDIR = @GTGDIR@ GTG_CPPFLAGS = @GTG_CPPFLAGS@ GTG_DEPENDENCIES = @GTG_DEPENDENCIES@ GTG_EXT_CPPFLAGS = @GTG_EXT_CPPFLAGS@ GTG_EXT_LDFLAGS = @GTG_EXT_LDFLAGS@ GTG_EXT_LIB = @GTG_EXT_LIB@ GTG_LDFLAGS = @GTG_LDFLAGS@ GTG_LIB = @GTG_LIB@ GTG_OUT_OF_ORDER = @GTG_OUT_OF_ORDER@ HAVE_ENV = @HAVE_ENV@ HAVE_LIBBACKTRACE = @HAVE_LIBBACKTRACE@ HAVE_LIBOPCODE = @HAVE_LIBOPCODE@ HAVE_PRCTL_H = @HAVE_PRCTL_H@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LD_LIBRARY_PATH_NAME = @LD_LIBRARY_PATH_NAME@ LD_PRELOAD_NAME = @LD_PRELOAD_NAME@ LIBBACKTRACE_CPPFLAGS = @LIBBACKTRACE_CPPFLAGS@ LIBBACKTRACE_LDFLAGS = @LIBBACKTRACE_LDFLAGS@ LIBBACKTRACE_LIB = @LIBBACKTRACE_LIB@ LIBBACKTRACE_ROOT = @LIBBACKTRACE_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LITL_PRINT = @LITL_PRINT@ LITL_ROOT = @LITL_ROOT@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPI_CFLAGS = @MPI_CFLAGS@ MPI_EVENT_ID = @MPI_EVENT_ID@ MPI_INC = @MPI_INC@ MPI_LDFLAGS = @MPI_LDFLAGS@ MPI_MODULE_NAME = @MPI_MODULE_NAME@ MPI_ROOT = @MPI_ROOT@ NM = @NM@ NMEDIT = @NMEDIT@ NVCC = @NVCC@ NVCCFLAGS = @NVCCFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAPIDIR = @PAPIDIR@ PAPI_CPPFLAGS = @PAPI_CPPFLAGS@ PAPI_ENABLED = @PAPI_ENABLED@ PAPI_LDFLAGS = @PAPI_LDFLAGS@ PAPI_LIBDIR = @PAPI_LIBDIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PPTRACE_BINARY_TYPE = @PPTRACE_BINARY_TYPE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STARPU_CFLAGS = @STARPU_CFLAGS@ STARPU_CPPFLAGS = @STARPU_CPPFLAGS@ STARPU_LDFLAGS = @STARPU_LDFLAGS@ STARPU_LIBS = @STARPU_LIBS@ STARPU_ROOT = @STARPU_ROOT@ STRIP = @STRIP@ TARGET_BITS = @TARGET_BITS@ TL_CPPFLAGS = @TL_CPPFLAGS@ TL_EXT_CPPFLAGS = @TL_EXT_CPPFLAGS@ TL_EXT_LDFLAGS = @TL_EXT_LDFLAGS@ TL_EXT_LIB = @TL_EXT_LIB@ TL_LDFLAGS = @TL_LDFLAGS@ TL_LIB = @TL_LIB@ USE_BIN_INSTRUMENTATION = @USE_BIN_INSTRUMENTATION@ USE_CUDADIR_FROM_USER = @USE_CUDADIR_FROM_USER@ USE_GETTID = @USE_GETTID@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ USE_PAPIDIR_FROM_USER = @USE_PAPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @AMEXTERNLITL_FALSE@TLCFLAGS = -I$(top_srcdir)/extlib/litl/src -I$(top_builddir)/extlib/litl/src @AMEXTERNLITL_TRUE@TLCFLAGS = $(TL_CPPFLAGS) @AMEXTERNLITL_FALSE@TLLDFLAGS = $(top_builddir)/extlib/litl/src/liblitl.la @AMEXTERNLITL_TRUE@TLLDFLAGS = $(TL_LDFLAGS) @AMEXTERNLITL_FALSE@TLLIBADD = $(TL_LIB) @AMEXTERNLITL_TRUE@TLLIBADD = $(TL_LIB) @AMEXTERNGTG_FALSE@GTGCFLAGS = -I$(top_srcdir)/extlib/gtg/inc \ @AMEXTERNGTG_FALSE@ -I$(top_builddir)/extlib/gtg \ @AMEXTERNGTG_FALSE@ $(am__append_1) @AMEXTERNGTG_TRUE@GTGCFLAGS = $(GTG_CPPFLAGS) $(am__append_1) @AMEXTERNGTG_FALSE@GTGLDFLAGS = $(top_builddir)/extlib/gtg/src/libgtg.la @AMEXTERNGTG_TRUE@GTGLDFLAGS = $(GTG_LDFLAGS) @AMEXTERNGTG_FALSE@GTGDEPENDENCIES = $(GTGLDFLAGS) @AMEXTERNGTG_TRUE@GTGDEPENDENCIES = @AMEXTERNGTG_FALSE@GTGLIBADD = @AMEXTERNGTG_TRUE@GTGLIBADD = $(GTG_LIB) EZT_DEPS = $(top_builddir)/src/core/eztrace_config.h check_LTLIBRARIES = libeztrace-convert-staticlib.la\ libeztrace-staticlib.la\ libeztrace-autostart-staticlib.la static_SOURCES = static.c AM_CFLAGS = -W -Wall -Wextra -I$(top_builddir)/src/core/ -I$(top_srcdir)/src/core -I$(top_srcdir)/src/pptrace libeztrace_convert_staticlib_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(GTGCFLAGS) libeztrace_convert_staticlib_la_LIBADD = $(TLLIBADD) $(GTG_LIB) libeztrace_convert_staticlib_la_LDFLAGS = $(GTGLDFLAGS) $(TLLDFLAGS) -module -avoid-version -rpath /dev/null libeztrace_convert_staticlib_la_DEPENDENCIES = $(GTGDEPENDENCIES) $(EZT_DEPS) libeztrace_convert_staticlib_la_SOURCES = eztrace_convert_staticlib.c libeztrace_staticlib_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) libeztrace_staticlib_la_LIBADD = $(TLLIBADD) libeztrace_staticlib_la_LDFLAGS = --no-undefined $(TLLDFLAGS) -Wl,-Bsymbolic -module -avoid-version -rpath /dev/null libeztrace_staticlib_la_SOURCES = staticlib.c libeztrace_autostart_staticlib_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) libeztrace_autostart_staticlib_la_LIBADD = $(TLLIBADD) libeztrace_autostart_staticlib_la_LDFLAGS = --no-undefined $(TLLDFLAGS) -Wl,-Bsymbolic -module -avoid-version -rpath /dev/null libeztrace_autostart_staticlib_la_CFLAGS = $(AM_CFLAGS) -W -Wall -Wextra -DEZTRACE_AUTOSTART libeztrace_autostart_staticlib_la_SOURCES = staticlib.c noinst_HEADERS = staticlib_ev_codes.h all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/static/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu test/static/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkLTLIBRARIES: -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) @list='$(check_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libeztrace-autostart-staticlib.la: $(libeztrace_autostart_staticlib_la_OBJECTS) $(libeztrace_autostart_staticlib_la_DEPENDENCIES) $(EXTRA_libeztrace_autostart_staticlib_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_autostart_staticlib_la_LINK) $(libeztrace_autostart_staticlib_la_OBJECTS) $(libeztrace_autostart_staticlib_la_LIBADD) $(LIBS) libeztrace-convert-staticlib.la: $(libeztrace_convert_staticlib_la_OBJECTS) $(libeztrace_convert_staticlib_la_DEPENDENCIES) $(EXTRA_libeztrace_convert_staticlib_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_convert_staticlib_la_LINK) $(libeztrace_convert_staticlib_la_OBJECTS) $(libeztrace_convert_staticlib_la_LIBADD) $(LIBS) libeztrace-staticlib.la: $(libeztrace_staticlib_la_OBJECTS) $(libeztrace_staticlib_la_DEPENDENCIES) $(EXTRA_libeztrace_staticlib_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_staticlib_la_LINK) $(libeztrace_staticlib_la_OBJECTS) $(libeztrace_staticlib_la_LIBADD) $(LIBS) clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list static$(EXEEXT): $(static_OBJECTS) $(static_DEPENDENCIES) $(EXTRA_static_DEPENDENCIES) @rm -f static$(EXEEXT) $(AM_V_CCLD)$(LINK) $(static_OBJECTS) $(static_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_autostart_staticlib_la-staticlib.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_convert_staticlib_la-eztrace_convert_staticlib.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_staticlib_la-staticlib.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/static.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libeztrace_autostart_staticlib_la-staticlib.lo: staticlib.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_staticlib_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_staticlib_la_CFLAGS) $(CFLAGS) -MT libeztrace_autostart_staticlib_la-staticlib.lo -MD -MP -MF $(DEPDIR)/libeztrace_autostart_staticlib_la-staticlib.Tpo -c -o libeztrace_autostart_staticlib_la-staticlib.lo `test -f 'staticlib.c' || echo '$(srcdir)/'`staticlib.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_autostart_staticlib_la-staticlib.Tpo $(DEPDIR)/libeztrace_autostart_staticlib_la-staticlib.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='staticlib.c' object='libeztrace_autostart_staticlib_la-staticlib.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_staticlib_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_staticlib_la_CFLAGS) $(CFLAGS) -c -o libeztrace_autostart_staticlib_la-staticlib.lo `test -f 'staticlib.c' || echo '$(srcdir)/'`staticlib.c libeztrace_convert_staticlib_la-eztrace_convert_staticlib.lo: eztrace_convert_staticlib.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_staticlib_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_convert_staticlib_la-eztrace_convert_staticlib.lo -MD -MP -MF $(DEPDIR)/libeztrace_convert_staticlib_la-eztrace_convert_staticlib.Tpo -c -o libeztrace_convert_staticlib_la-eztrace_convert_staticlib.lo `test -f 'eztrace_convert_staticlib.c' || echo '$(srcdir)/'`eztrace_convert_staticlib.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_convert_staticlib_la-eztrace_convert_staticlib.Tpo $(DEPDIR)/libeztrace_convert_staticlib_la-eztrace_convert_staticlib.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_convert_staticlib.c' object='libeztrace_convert_staticlib_la-eztrace_convert_staticlib.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_staticlib_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_convert_staticlib_la-eztrace_convert_staticlib.lo `test -f 'eztrace_convert_staticlib.c' || echo '$(srcdir)/'`eztrace_convert_staticlib.c libeztrace_staticlib_la-staticlib.lo: staticlib.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_staticlib_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_staticlib_la-staticlib.lo -MD -MP -MF $(DEPDIR)/libeztrace_staticlib_la-staticlib.Tpo -c -o libeztrace_staticlib_la-staticlib.lo `test -f 'staticlib.c' || echo '$(srcdir)/'`staticlib.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_staticlib_la-staticlib.Tpo $(DEPDIR)/libeztrace_staticlib_la-staticlib.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='staticlib.c' object='libeztrace_staticlib_la-staticlib.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_staticlib_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_staticlib_la-staticlib.lo `test -f 'staticlib.c' || echo '$(srcdir)/'`staticlib.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) check: check-am all-am: Makefile $(HEADERS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ clean-libtool cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/test/static/PaxHeaders.7332/eztrace_convert_staticlib.c0000644000000000000000000000013113143047722022476 xustar0030 mtime=1502367698.676456411 30 atime=1507797515.845986415 29 ctime=1508162365.62972364 eztrace-1.1-7/test/static/eztrace_convert_staticlib.c0000644000175000017500000000536713143047722023701 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include #include "eztrace_convert.h" #include "staticlib_ev_codes.h" int eztrace_convert_staticlib_init(); int handle_staticlib_events(eztrace_event_t *ev); void handleEZTRACE_staticlib_mafunc_1(); void handleEZTRACE_staticlib_mafunc_2(); /* Constructor of the plugin. * This function registers the current module to eztrace_convert */ struct eztrace_convert_module staticlib_module; void libinit(void) __attribute__ ((constructor)); void libinit(void) { staticlib_module.api_version = EZTRACE_API_VERSION; /* Specify the initialization function. * This function will be called once all the plugins are loaded * and the trace is started. * This function usually declared StateTypes, LinkTypes, etc. */ staticlib_module.init = eztrace_convert_staticlib_init; /* Specify the function to call for handling an event */ staticlib_module.handle = handle_staticlib_events; /* Specify the module prefix */ staticlib_module.module_prefix = staticlib_EVENTS_ID; asprintf(&staticlib_module.name, "staticlib"); asprintf(&staticlib_module.description, "module for the example library"); staticlib_module.token.data = &staticlib_module; /* Register the module to eztrace_convert */ eztrace_convert_register_module(&staticlib_module); //printf("module staticlib loaded\n"); } void libfinalize(void) __attribute__ ((destructor)); void libfinalize(void) { //printf("unloading module staticlib\n"); } /* * This function will be called once all the plugins are loaded * and the trace is started. * This function usually declared StateTypes, LinkTypes, etc. */ int eztrace_convert_staticlib_init() { addEntityValue("staticlib_STATE_0", "ST_Thread", "Doing function mafunc", GTG_PINK); } /* This function is called by eztrace_convert for each event to * handle. * It shall return 1 if the event was handled successfully or * 0 otherwise. */ int handle_staticlib_events(eztrace_event_t *ev) { switch (LITL_READ_GET_CODE(ev)) { case EZTRACE_staticlib_mafunc_1: handleEZTRACE_staticlib_mafunc_1(); break; case EZTRACE_staticlib_mafunc_2: handleEZTRACE_staticlib_mafunc_2(); break; default: /* The event was not handled */ return 0; } return 1; } void handleEZTRACE_staticlib_mafunc_1() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "staticlib_STATE_0"); } void handleEZTRACE_staticlib_mafunc_2() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState(CURRENT, "ST_Thread", thread_id); } eztrace-1.1-7/test/PaxHeaders.7332/memory0000644000000000000000000000013213171135500015035 xustar0030 mtime=1508162368.697991546 30 atime=1508162372.166294941 30 ctime=1508162368.697991546 eztrace-1.1-7/test/memory/0000755000175000017500000000000013171135500016301 5ustar00trahaytrahay00000000000000eztrace-1.1-7/test/memory/PaxHeaders.7332/memory.c0000644000000000000000000000013212544237152016577 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.845986415 30 ctime=1508162365.561717708 eztrace-1.1-7/test/memory/memory.c0000644000175000017500000000611712544237152017773 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include #include #include #include #include #include #include #include /* Number of iterations */ #define ITER 10 /* Number of threads */ #define NTH 2 typedef union { unsigned long long tick; struct { unsigned low; unsigned high; }; } tick_t; int fd[2][2]; sem_t thread_ready; #define TICK_DIFF(t1, t2) \ ((t2).tick - (t1).tick) #define TIME_DIFF(t1, t2) \ ((t2.tv_sec - t1.tv_sec) * 1000000 + (t2.tv_usec - t1.tv_usec)) // Debugging part, print out only if debugging level of the system is verbose or more int _debug = -77; void debug(char *fmt, ...) { if (_debug == -77) { char *buf = getenv("DEBUG_LEVEL"); if (buf == NULL) _debug = 0; else _debug = atoi(buf); } if (_debug >= 2) { // debug verbose mode va_list va; va_start(va, fmt); vfprintf(stderr, fmt, va); va_end(va); } } // end of debugging part /* Fake computation of usec microseconds */ void compute(int usec) { struct timeval tv1, tv2; gettimeofday(&tv1, NULL); do { gettimeofday(&tv2, NULL); } while (TIME_DIFF(tv1, tv2) < usec); } void test_malloc() { int i, j; char*buffer[ITER]; for (i = 0; i < ITER; i++) { int alloc_size = (1 + i) * 1024; debug("\tloop %d/%d: allocating %d bytes\n", i, ITER, alloc_size); buffer[i] = malloc(alloc_size); for (j = 0; j < (1 + i) * 1024; j++) { buffer[i][j] = 'a'; } /* compute for 1ms */ compute(50000); free(buffer[i]); compute(10000); } } void test_realloc() { int i, j; char*buffer[ITER]; for (i = 0; i < ITER; i++) { int alloc_size = (1 + i) * 1024; debug("\tloop %d/%d: allocating %d bytes\n", i, ITER, alloc_size); buffer[i] = malloc(alloc_size); for (j = 0; j < (1 + i) * 1024; j++) { buffer[i][j] = 'a'; } /* compute for 1ms */ compute(20000); alloc_size *= 2; debug("\t\tloop %d/%d: reallocating %d bytes\n", i, ITER, alloc_size); buffer[i] = realloc(buffer[i], alloc_size); compute(20000); free(buffer[i]); compute(10000); } } void test_calloc() { int i, j; char*buffer[ITER]; for (i = 0; i < ITER; i++) { int alloc_size = (1 + i) * 1024; debug("\tloop %d/%d: allocating %d bytes\n", i, ITER, alloc_size); buffer[i] = calloc(alloc_size, sizeof(uint8_t)); for (j = 0; j < (1 + i) * 1024; j++) { buffer[i][j] = 'a'; } /* compute for 1ms */ compute(50000); free(buffer[i]); compute(10000); } } int main(int argc, char**argv) { char* buffer[ITER]; int i, j; debug("Testing malloc\n"); test_malloc(); debug("1/2 done\n"); compute(100000); test_malloc(); debug("2/2 done\n"); compute(100000); debug("Testing realloc\n"); test_realloc(); debug("realloc done\n"); compute(100000); debug("Testing calloc\n"); test_calloc(); debug("calloc done\n"); return 0; } eztrace-1.1-7/test/memory/PaxHeaders.7332/Makefile.am0000644000000000000000000000013112544237152017156 xustar0030 mtime=1435582058.571899951 29 atime=1508162220.28185539 30 ctime=1508162368.697991546 eztrace-1.1-7/test/memory/Makefile.am0000644000175000017500000000025012544237152020343 0ustar00trahaytrahay00000000000000# Copyright © CNRS, INRIA, Université Bordeaux 1 # See COPYING in top-level directory. check_PROGRAMS = memory memory_SOURCES = memory.c memory_LDFLAGS = -lpthread eztrace-1.1-7/test/memory/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135254017165 xustar0030 mtime=1508162220.301856861 30 atime=1508162286.859046779 30 ctime=1508162368.697991546 eztrace-1.1-7/test/memory/Makefile.in0000644000175000017500000004706013171135254020363 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright © CNRS, INRIA, Université Bordeaux 1 # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ check_PROGRAMS = memory$(EXEEXT) subdir = test/memory ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am_memory_OBJECTS = memory.$(OBJEXT) memory_OBJECTS = $(am_memory_OBJECTS) memory_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = memory_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(memory_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(memory_SOURCES) DIST_SOURCES = $(memory_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUDA_CFLAGS = @CUDA_CFLAGS@ CUDA_LDFLAGS = @CUDA_LDFLAGS@ CUDA_LIBS = @CUDA_LIBS@ CUDA_ROOT = @CUDA_ROOT@ CUPTI_CFLAGS = @CUPTI_CFLAGS@ CUPTI_LDFLAGS = @CUPTI_LDFLAGS@ CUPTI_LIBS = @CUPTI_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ DYNLIB_EXT = @DYNLIB_EXT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ GTGDIR = @GTGDIR@ GTG_CPPFLAGS = @GTG_CPPFLAGS@ GTG_DEPENDENCIES = @GTG_DEPENDENCIES@ GTG_EXT_CPPFLAGS = @GTG_EXT_CPPFLAGS@ GTG_EXT_LDFLAGS = @GTG_EXT_LDFLAGS@ GTG_EXT_LIB = @GTG_EXT_LIB@ GTG_LDFLAGS = @GTG_LDFLAGS@ GTG_LIB = @GTG_LIB@ GTG_OUT_OF_ORDER = @GTG_OUT_OF_ORDER@ HAVE_ENV = @HAVE_ENV@ HAVE_LIBBACKTRACE = @HAVE_LIBBACKTRACE@ HAVE_LIBOPCODE = @HAVE_LIBOPCODE@ HAVE_PRCTL_H = @HAVE_PRCTL_H@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LD_LIBRARY_PATH_NAME = @LD_LIBRARY_PATH_NAME@ LD_PRELOAD_NAME = @LD_PRELOAD_NAME@ LIBBACKTRACE_CPPFLAGS = @LIBBACKTRACE_CPPFLAGS@ LIBBACKTRACE_LDFLAGS = @LIBBACKTRACE_LDFLAGS@ LIBBACKTRACE_LIB = @LIBBACKTRACE_LIB@ LIBBACKTRACE_ROOT = @LIBBACKTRACE_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LITL_PRINT = @LITL_PRINT@ LITL_ROOT = @LITL_ROOT@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPI_CFLAGS = @MPI_CFLAGS@ MPI_EVENT_ID = @MPI_EVENT_ID@ MPI_INC = @MPI_INC@ MPI_LDFLAGS = @MPI_LDFLAGS@ MPI_MODULE_NAME = @MPI_MODULE_NAME@ MPI_ROOT = @MPI_ROOT@ NM = @NM@ NMEDIT = @NMEDIT@ NVCC = @NVCC@ NVCCFLAGS = @NVCCFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAPIDIR = @PAPIDIR@ PAPI_CPPFLAGS = @PAPI_CPPFLAGS@ PAPI_ENABLED = @PAPI_ENABLED@ PAPI_LDFLAGS = @PAPI_LDFLAGS@ PAPI_LIBDIR = @PAPI_LIBDIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PPTRACE_BINARY_TYPE = @PPTRACE_BINARY_TYPE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STARPU_CFLAGS = @STARPU_CFLAGS@ STARPU_CPPFLAGS = @STARPU_CPPFLAGS@ STARPU_LDFLAGS = @STARPU_LDFLAGS@ STARPU_LIBS = @STARPU_LIBS@ STARPU_ROOT = @STARPU_ROOT@ STRIP = @STRIP@ TARGET_BITS = @TARGET_BITS@ TL_CPPFLAGS = @TL_CPPFLAGS@ TL_EXT_CPPFLAGS = @TL_EXT_CPPFLAGS@ TL_EXT_LDFLAGS = @TL_EXT_LDFLAGS@ TL_EXT_LIB = @TL_EXT_LIB@ TL_LDFLAGS = @TL_LDFLAGS@ TL_LIB = @TL_LIB@ USE_BIN_INSTRUMENTATION = @USE_BIN_INSTRUMENTATION@ USE_CUDADIR_FROM_USER = @USE_CUDADIR_FROM_USER@ USE_GETTID = @USE_GETTID@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ USE_PAPIDIR_FROM_USER = @USE_PAPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ memory_SOURCES = memory.c memory_LDFLAGS = -lpthread all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/memory/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu test/memory/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list memory$(EXEEXT): $(memory_OBJECTS) $(memory_DEPENDENCIES) $(EXTRA_memory_DEPENDENCIES) @rm -f memory$(EXEEXT) $(AM_V_CCLD)$(memory_LINK) $(memory_OBJECTS) $(memory_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memory.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/test/PaxHeaders.7332/pptrace0000644000000000000000000000013213171135475015176 xustar0030 mtime=1508162365.445707588 30 atime=1508162367.741908015 30 ctime=1508162365.445707588 eztrace-1.1-7/test/pptrace/0000755000175000017500000000000013171135475016442 5ustar00trahaytrahay00000000000000eztrace-1.1-7/test/pptrace/PaxHeaders.7332/automatic0000644000000000000000000000013213171135475017164 xustar0030 mtime=1508162365.645725036 30 atime=1508162367.741908015 30 ctime=1508162365.645725036 eztrace-1.1-7/test/pptrace/automatic/0000755000175000017500000000000013171135475020430 5ustar00trahaytrahay00000000000000eztrace-1.1-7/test/pptrace/automatic/PaxHeaders.7332/common.h0000644000000000000000000000013212544237152020700 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.849986542 30 ctime=1508162365.633723988 eztrace-1.1-7/test/pptrace/automatic/common.h0000644000175000017500000000410412544237152022066 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * common.h - common basis for several tests * * Created on: 3 sep. 2012 * Author: Damien Martin-Guillerez */ #include #include int debug; // Common parts #define DEBUG(x) if(debug > 1) fprintf(stderr, "\tDEBUG %s: " x "\n", __method__) #define DEBUG1(x, p1) if(debug > 1) fprintf(stderr, "\tDEBUG %s: " x "\n", __method__, p1) #define DEBUG2(x, p1, p2) if(debug > 1) fprintf(stderr, "\tDEBUG %s: " x "\n", __method__, p1, p2) #define BEGIN_TEST(method) \ int do_run_test_##method; \ int test_##method() { static const char *__method__ = #method; if(debug > 0) fprintf(stderr, "%s\n", __method__); #define END_TEST(method) return 0; } #define RUN_TEST(x) do { \ if(runall || do_run_test_##x) { \ r = test_##x(); \ if(r < 0) { \ return r; \ } \ } \ } while(0) #define PARSE_TEST(x) do { \ if(strcmp(av[i], #x) == 0) { \ do_run_test_##x = 1; \ runall = 0; \ } \ } while(0) #define TEST0(test, testname, msg) do { \ if(!(test)) { \ fprintf(stderr, "FAIL %s for test `" #testname "` with message: " msg "\n", __method__); \ return -__LINE__; \ } \ DEBUG(#testname " succeeded"); \ } while(0) #define TEST1(test, testname, msg, p1) do { \ if(!(test)) { \ fprintf(stderr, "FAIL %s for test `" #testname "` with message: " msg "\n", __method__, p1); \ return -__LINE__; \ } \ DEBUG(#testname " succeeded"); \ } while(0) #define TEST2(test, testname, msg, p1, p2) do { \ if(!(test)) { \ fprintf(stderr, "FAIL %s for test `" #testname "` with message: " msg "\n", __method__, p1, p2); \ return -__LINE__; \ } \ DEBUG(#testname " succeeded"); \ } while(0) #define TEST3(test, testname, msg, p1, p2, p3) do { \ if(!(test)) { \ fprintf(stderr, "FAIL %s for test `" #testname "` with message: " msg "\n", __method__, p1, p2, p3); \ return -__LINE__; \ } \ DEBUG(#testname " succeeded"); \ } while(0) // End of common parts eztrace-1.1-7/test/pptrace/automatic/PaxHeaders.7332/binary.c0000644000000000000000000000013113020570506020657 xustar0029 mtime=1480782150.41241237 30 atime=1507797515.849986542 30 ctime=1508162365.633723988 eztrace-1.1-7/test/pptrace/automatic/binary.c0000644000175000017500000001274113020570506022054 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * binary.h -- tests of binary reading functions (binary.h) * * Created on: 4 Aug. 2011 * Author: Damien Martin-Guillerez */ #include #include #include #include #include #include #include #include char *readline(int fd) { char buf; size_t size = 1024; int index = 0; char *buffer = (char*) malloc(size); buffer[index] = 0; int r; while (0 <= (r = read(fd, &buf, 1))) { if (buf == '\n') { return buffer; } //printf("%d ", buf); buffer[index++] = buf; if (index >= size) { size += 1024; buffer = (char*) realloc(buffer, size); } buffer[index] = 0; } if (r < 0) { free(buffer); return NULL; } return buffer; } int compare_name(char *line, char *symbol) { if (strlen(symbol) + 1 >= strlen(line)) return 0; int i = strlen(line) - strlen(symbol) - 1; if (!isblank(line[i])) return 0; return strcmp(line + i + 1, symbol) == 0 ? 1 : 0; } char *get_nm_symbol(char *path, char *symbol) { int p[2]; if (pipe(p) == -1) return NULL; pid_t child = fork(); if (child == -1) { close(p[1]); close(p[0]); return NULL; } if (child == 0) { close(p[0]); close(STDOUT_FILENO); dup2(p[1], STDOUT_FILENO); close(p[1]); execlp("nm", "nm", path, NULL); exit(-1); } else { close(p[1]); char* buffer = readline(p[0]); while (buffer != NULL) { if (compare_name(buffer, symbol)) { close(p[0]); return buffer; } free(buffer); buffer = readline(p[0]); } close(p[0]); } return NULL; } int compare_result(char *path, zzt_symbol *sym, char *symbol) { if (strcmp(sym->symbol_name, symbol)) return -__LINE__; char *nm = get_nm_symbol(path, symbol); if (!nm) return -__LINE__; zzt_word addr = strtoul(nm, NULL, 16); free(nm); if (!addr) return -__LINE__; if (addr != sym->section_addr + sym->symbol_offset) return -__LINE__; return EXIT_SUCCESS; } int test_read_zstring_array(void *bin, char *symbol, char **model) { char **frombin = read_zstring_array(bin, symbol); if (frombin == NULL && model != NULL) return -__LINE__; if (model == NULL && frombin != NULL) return -__LINE__; int i = 0; while (frombin[i] || model[i]) { if (strcmp(frombin[i], model[i]) != 0) return -__LINE__; i++; } if (frombin[i]) return -__LINE__; if (model[i]) return -__LINE__; free_zstring_array(frombin); return 0; } int test_dump_symbol(void *bin, int bits, zzt_symbol *sym, char **model) { char buf[1024]; char buf2[1024]; uint32_t* val32 = (uint32_t*) buf; word_uint* val64 = (word_uint*) buf; int i = 0; ssize_t size = read_symbol(bin, sym, buf, 1024); bits >>= 3; size /= bits; //printf("Size of symbol %s: %d\n", sym->symbol_name, (int)size); for (i = 0; model[i] && i < size; i++) { zzt_word w = (bits == 4) ? val32[i] : val64[i]; size_t s = read_zstring(bin, sym, w, buf2, 1024); // printf("\t[%d] %p %s\n", i, (void*)w, buf2); if (strcmp(model[i], buf2) != 0) return -__LINE__; } if (i < size) { zzt_word w = (bits == 4) ? val32[i] : val64[i]; if (w != 0) return -__LINE__; } else if (model[i]) { return -__LINE__; } return EXIT_SUCCESS; } char *sym_model[] = {"absolutely", "dummy", "heho", NULL}; int testcase(char *path, int bits, char *symbol, char *arraysym, char *nonsym) { void *bin = open_binary(path); if (bin == NULL) return -__LINE__; if (get_binary_bits(bin) != bits) return -__LINE__; if (get_symbol(bin, nonsym) != NULL) return -__LINE__; zzt_symbol *sym = get_symbol(bin, symbol); if (sym == NULL) return -__LINE__; int r = compare_result(path, sym, symbol); free_symbol(sym); if (r < 0) { close_binary(bin); return r; } sym = get_symbol(bin, arraysym); if (sym == NULL) return -__LINE__; r = test_dump_symbol(bin, bits, sym, sym_model); free_symbol(sym); if (r < 0) { close_binary(bin); return r; } r = test_read_zstring_array(bin, arraysym, sym_model); close_binary(bin); return r; } int nulltest() { return open_binary("/path/to/unknown") == NULL ? EXIT_SUCCESS : -__LINE__; } int getbits(char *path) { int i = strlen(path); if (i > 3 && strncmp(path + strlen(path) - 3, ".so", 3) == 0) { i -= 3; } for (i--; i >= 0 && path[i] != '.'; i--) ; return atoi(path + i + 1); } char* getname(char *path) { char *name = strdup(path); char *bnam = basename(name); int i = strlen(bnam); if (i > 3 && strncmp(bnam + strlen(bnam) - 3, ".so", 3) == 0) { i -= 3; } for (i--; i >= 0 && bnam[i] != '.'; i--) ; if (i > 0) { bnam[i] = 0; char *result = strdup(bnam); free(name); return result; } free(name); return NULL; } int main(int argc, char **argv) { int i, r; if ((r = nulltest())) { fprintf(stderr, "Failed nulltest() at line %d\n", -r); exit(r); } for (i = 1; i < argc; i++) { char *name = getname(argv[i]); if (name != NULL) { r = testcase(argv[i], getbits(argv[i]), name, "dummy_symbol", "_stup_dummy42__45642"); if (r) { fprintf(stderr, "Failed for testcase %s at line %d\n", argv[i], -r); exit(r); } } } exit(EXIT_SUCCESS); return 0; } eztrace-1.1-7/test/pptrace/automatic/PaxHeaders.7332/wait_open.c0000644000000000000000000000013212544237152021370 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.849986542 30 ctime=1508162365.653725734 eztrace-1.1-7/test/pptrace/automatic/wait_open.c0000644000175000017500000000741412544237152022565 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * wait_open.c - test waiting for open and mmap in both 32 and 64 bits * * Created on: 5 Aug. 2011 * Author: Damien Martin-Guillerez */ #include #include #include #include #include #include #include #include #include char **new_envp(char **envp, char *ldpreload) { int i; for (i = 0; envp[i]; i++) ; char **env = (char**) malloc(sizeof(char*) * (i + 1)); env[0] = (char*) malloc(15 + strlen(ldpreload)); snprintf(env[0], 15 + strlen(ldpreload), "LD_PRELOAD=%s", ldpreload); for (i = 0; envp[i]; i++) env[i + 1] = envp[i]; env[i + 1] = NULL; return env; } int test(int debug, char *prog, char *lib, char **envp) { char *argv[] = {NULL, "-s", NULL}; argv[0] = prog; char **env = new_envp(envp, lib); void *bin = open_binary(prog); if (bin == NULL) { fprintf(stderr, "Failed to open binary %s!\n", prog); return -__LINE__; } trace_set_bits(get_binary_bits(bin)); close_binary(bin); pid_t child = trace_run(prog, argv, env, 1); //memory leak here to avoid double free on hydra //free(env[0]); //free(env); if (child <= 0) { fprintf(stderr, "Failed to trace process %s!\n", prog); return -__LINE__; } //open("/etc/ld.so.cache", *) word_uint fd; if (trace_wait_syscall(child, &fd, TRACE_SYSCALL(open), SYSCALL_ARGTYPE_ZSTRING, lib, SYSCALL_ARGTYPE_IGNORE, SYSCALL_ARGTYPE_END) < 0) { fprintf(stderr, "Failed to wait for open(\"%s\", *) for process %s (pid = %d)!\n", lib, prog, child); trace_detach(child); return -__LINE__; } if (debug) printf("open(\"%s\", *) = "WORD_DEC_FORMAT"\n", lib, fd); if ((int) fd < 3) { fprintf( stderr, "open(\"%s\", *) returned a negative value or a reserved file descriptor ("WORD_DEC_FORMAT" - "WORD_HEX_FORMAT") for process %s (pid = %d)!\n", lib, fd, fd, prog, child); return -__LINE__; } //mmap(NULL, 22967, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f4b50756000 //mmap(NULL, *, *, *, fd, 0) word_uint addr; if (trace_wait_syscall(child, &addr, MMAP_SYSCALLS, SYSCALL_ARGTYPE_IGNORE, SYSCALL_ARGTYPE_IGNORE, SYSCALL_ARGTYPE_INT, (word_uint) (PROT_READ | PROT_EXEC), SYSCALL_ARGTYPE_IGNORE, SYSCALL_ARGTYPE_INT, (word_uint) fd, SYSCALL_ARGTYPE_IGNORE, SYSCALL_ARGTYPE_END) < 0) { fprintf( stderr, "Failed to wait for mmap(*, *, PROT_READ|PROT_EXEC, *, "WORD_DEC_FORMAT", *) for process %s (pid = %d)!\n", fd, prog, child); trace_detach(child); return -__LINE__; } if (debug) printf( "mmap(*, *, PROT_READ|PROT_EXEC, *, "WORD_DEC_FORMAT", *) = "WORD_HEX_FORMAT"\n", fd, addr); if ((void*) addr == MAP_FAILED) { fprintf( stderr, "mmap(*, *, PROT_READ|PROT_EXEC, *, "WORD_DEC_FORMAT", *) returned MAP_FAILED for process %s (pid = %d)!\n", fd, prog, child); return -__LINE__; } trace_detach(child); trace_wait(child); return EXIT_SUCCESS; } int main(int argc, char **argv, char **envp) { int debug = 0; int i; for (i = 1; argv[i] != NULL; i++) { if (strcasecmp(argv[i], "-d") == 0) { debug = 1; } else if (strstr(argv[i], ".so") == NULL) { char lib[1024]; strcpy(lib, argv[i]); strcat(lib, ".so"); int r = test(debug, argv[i], lib, envp); if (r) { return r; } } } return EXIT_SUCCESS; } eztrace-1.1-7/test/pptrace/automatic/PaxHeaders.7332/hijack.c0000644000000000000000000000013213012560437020630 xustar0030 mtime=1479205151.308727685 30 atime=1507797515.849986542 30 ctime=1508162365.637724338 eztrace-1.1-7/test/pptrace/automatic/hijack.c0000644000175000017500000001152513012560437022023 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * hijack.c - test for symbol hijacking * * Created on: 4 Sep. 2012 * Author: Damien Martin-Guillerez */ #include #include #include #include #include #include #include #include #include #include #include #include "common.h" int testfork; int waitattach; // Common parts pid_t child; int fds[2]; void *bin; char *prog; static inline int run_ipc() { if (testfork) return 0; pipe(fds); child = trace_run(NULL, NULL, NULL, 1); if (child > 0) { close(fds[1]); bin = open_binary(prog); return 1; } return 0; } static inline void close_ipc() { close_binary(bin); close(fds[0]); } #define FINISH_IPC() do { \ trace_detach(child); \ trace_wait(child); \ DEBUG("process finished"); \ } while(0) #define IPC_END() do { \ DEBUG("traced process is exiting"); \ exit(0); \ } while(0) #define READ_WORD(w) TEST1(-1 != read(fds[0], &w, sizeof(w)), read, "read failed with error %s!", strerror(errno)) #define WRITE_WORD(w) write(fds[1], &w, sizeof(w)) void buffer_function() { asm("nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop"); } void bad_function() { char *__method__ = "bad_function"; int r = 3; DEBUG("in"); WRITE_WORD(r); } void (*original_pointer)() = bad_function; void original_function() { char *__method__ = "original_function"; int r = 1; DEBUG("in"); WRITE_WORD(r); } void good_function() { char *__method__ = "good_function"; int r = 2; DEBUG2("in (original_pointer = %p, r = %d)", original_pointer, r); WRITE_WORD(r); original_pointer(); WRITE_WORD(r); DEBUG("out"); } #define BEGIN_TEST_HIJACK(name) \ BEGIN_TEST(name) \ if(run_ipc()) { #define END_TEST_HIJACK(name) \ FINISH_IPC(); \ int r; \ READ_WORD(r); TEST1(r == 2, prolog, "Not in good_function() (r = %d)!", r); \ READ_WORD(r); TEST1(r == 1, original, "Not in original_function() (r = %d)!", r); \ READ_WORD(r); TEST1(r == 2, epilog, "Not in good_function() (r = %d)!", r); \ close_ipc(); \ } else { \ if(waitattach) { fprintf(stderr, "child pid = %d\n", getpid()); sleep(10); } \ original_function(); \ IPC_END(); \ } \ END_TEST(name) // End of common parts BEGIN_TEST_HIJACK(hijack_code) ssize_t res = hijack_code( bin, child, (word_uint) (word_uint) original_function, (word_uint) (word_uint) good_function - (word_uint) (word_uint) original_function, (word_uint) (word_uint) buffer_function, (word_uint) (word_uint) &original_pointer, (word_uint) (word_uint) good_function); TEST1(res > 0, result, "hijack_code returned negative value ("WORD_DEC_FORMAT")!", res); END_TEST_HIJACK(hijack_code) BEGIN_TEST_HIJACK(hijack) INIT_ZZT_SYMBOL(toHijack, (word_uint )original_function, (word_uint )good_function - (word_uint )original_function); INIT_ZZT_SYMBOL(orig, (word_uint )&original_pointer, sizeof(original_pointer)); INIT_ZZT_SYMBOL(repl, (word_uint )good_function, 0); ssize_t res = hijack(bin, child, &toHijack, &orig, &repl); TEST1(res > 0, result, "hijack returned negative value ("WORD_DEC_FORMAT")!", res); END_TEST_HIJACK(hijack) void usage(char **av, char option) { if (option != 0) { fprintf(stderr, "Unknown option '%c'", option); } fprintf( stderr, "Usage: %s [-v[v]dg] [test1 test2 test3 ...]\n" "\t-v output verbose debugging information (the more d option, the more verbose the output)\n" "\t-d don't actually run the tests, simply execute the child (used in conjunction with test specifiers to debug)\n" "\t-g print the pid of the child and sleep 10 seconds after detachment to enable GDB attachment.\n" "\ttest specifies the tests to runs (default is all tests). Available tests: hijack_code, hijack.\n", av[0]); exit(-1); } int main(int ac, char **av) { int r, i, j; debug = 0; testfork = 0; waitattach = 0; int runall = 1; prog = av[0]; for (i = 1; i < ac; i++) { if (av[i][0] == '-') { for (j = 1; av[i][j] != 0; j++) { switch (av[i][j]) { case 'v': debug++; break; case 'g': waitattach++; break; case 'd': testfork++; break; default: usage(av, av[i][j]); } } } else { PARSE_TEST(hijack_code); PARSE_TEST(hijack); } } RUN_TEST(hijack_code); RUN_TEST(hijack); return 0; } eztrace-1.1-7/test/pptrace/automatic/PaxHeaders.7332/errors.c0000644000000000000000000000013212544237152020717 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.849986542 30 ctime=1508162365.633723988 eztrace-1.1-7/test/pptrace/automatic/errors.c0000644000175000017500000000211612544237152022106 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * errors.c -- test of errors function (errors.h) * * Created on: 4 Aug. 2011 * Author: Damien Martin-Guillerez */ #include #include #include #include #include int test_pptrace_error_reporting() { pptrace_clear_error(); const char *err = pptrace_get_error(); if (err != NULL) return -__LINE__; pptrace_report_error("ERROR"); err = pptrace_get_error(); if (err == NULL || strcmp(err, "ERROR")) return -__LINE__; pptrace_report_error("ERROR %d", 1); err = pptrace_get_error(); if (err == NULL || strcmp(err, "ERROR 1")) return -__LINE__; pptrace_clear_error(); malloc(-1); // Force error err = pptrace_get_error(); if (errno) { return err != NULL && (strcmp(strerror(errno), err) == 0) ? 0 : -__LINE__; } return err == NULL ? 0 : -__LINE__; } int main() { return test_pptrace_error_reporting(); } eztrace-1.1-7/test/pptrace/automatic/PaxHeaders.7332/Makefile.in0000644000000000000000000000012713020570643021303 xustar0028 mtime=1480782243.2272739 30 atime=1508162286.919051681 29 ctime=1508162365.47371003 eztrace-1.1-7/test/pptrace/automatic/Makefile.in0000644000175000017500000000420613020570643022470 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis # See COPYING in top-level directory. BITS=@TARGET_BITS@ CORE_DIRECTORY=@abs_top_builddir@/src/core CORE_SRC_DIRECTORY=@abs_top_srcdir@/src/core PPTRACE_DIRECTORY=@abs_top_srcdir@/src/pptrace TEST_DIRECTORY=@abs_top_srcdir@/test/pptrace/automatic ifeq "@HAVE_LIBBFD@" "1" TESTS=errors binary tracing opcodes wait_open hijack endif DEBUG_LEVEL=0 ifeq "@PPTRACE_BINARY_TYPE@" "1" LIBBIN=-lbfd -lopcodes else LIBBIN=-lelf endif PPTRACE_DEPS=errors.c\ binary.c ADDITIONAL_DEPS=$(CORE_SRC_DIRECTORY)/ezt_demangle.c errors_FLAGS=$(LIBBIN) errors_DEPS=$(PPTRACE_DEPS) binary_FLAGS=$(LIBBIN) binary_DEPS=$(PPTRACE_DEPS) wait_open_FLAGS=$(LIBBIN) wait_open_DEPS=$(PPTRACE_DEPS)\ tracing.c tracing_FLAGS=$(LIBBIN) tracing_DEPS=$(PPTRACE_DEPS)\ tracing.c opcodes_FLAGS=$(LIBBIN) opcodes_DEPS=$(PPTRACE_DEPS)\ opcodes.c hijack_FLAGS=$(LIBBIN) hijack_DEPS= $(PPTRACE_DEPS)\ opcodes.c\ tracing.c\ hijack.c\ memory.c\ isize.c TESTCASES_=$(patsubst %.c,%,$(wildcard $(TEST_DIRECTORY)/testcase/*.c)) TESTCASES=$(foreach testcase,$(TESTCASES_),$(foreach b,$(BITS),$(testcase).$(b) $(testcase).$(b).so)) TESTS_CHECK=$(foreach test,$(TESTS),$(test).check) CFLAGS = -O0 -g -I$(PPTRACE_DIRECTORY) -I$(CORE_DIRECTORY) -I$(CORE_SRC_DIRECTORY) -D__PPTRACE_DEBUG_LEVEL=$(DEBUG_LEVEL) .PHONY: check testcase all: distdir: check: testcase $(TESTS) testcase: @make -C $(TEST_DIRECTORY)/testcase BITS='$(BITS)' %.check: % @echo -n " *** RUNNING TEST $<... " @./$<.test || (echo "FAILED!"; false) @echo "OK" %:: $(TEST_DIRECTORY)/%.c @echo CC $@ @$(CC) $(CFLAGS) $^ $(foreach d,$($@_DEPS),$(PPTRACE_DIRECTORY)/$d) $(ADDITIONAL_DEPS) -o $@ $($@_FLAGS) @echo "#!/bin/sh" >$@.test @echo "cd $$PWD" >>$@.test @echo './$@ ${TESTCASES} $$*' >>$@.test @echo 'RES=$$?' >>$@.test @echo 'cd - >/dev/null' >>$@.test @echo 'exit $$RES'>>$@.test @chmod +x $@.test install: installcheck: uninstall: distclean: clean clean: @rm -f $(TESTS) $(foreach d,$(TESTS),$d.test) @if [ -d $(TEST_DIRECTORY)/testcase ] ; then make -C $(TEST_DIRECTORY)/testcase BITS='$(BITS)' clean ; fi eztrace-1.1-7/test/pptrace/automatic/PaxHeaders.7332/opcodes.c0000644000000000000000000000013212544237152021037 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.849986542 30 ctime=1508162365.641724687 eztrace-1.1-7/test/pptrace/automatic/opcodes.c0000644000175000017500000001565512544237152022242 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * opcodes.c - tests for opcode generation * * Created on: 3 Sep. 2012 * Author: Damien Martin-Guillerez */ #include #include #include #include #include #include #include #include #include #include "common.h" #define MIN(a,b) (((a) > (b)) ? (b) : (a)) BEGIN_TEST(insert_opcodes) // Try to insert opcodes in a a buffer size_t size = 10; uint8_t buf[15]; int i; for (i = 0; i < 15; i++) buf[i] = 0; ssize_t offset = 0; ssize_t prev = 0; #define INSERT_OP_TEST(str, expected) do { \ DEBUG2("inserting %s at offset "WORD_DEC_FORMAT, str, offset); \ offset = insert_opcodes((uint8_t*)str, strlen(str), buf, size, offset); \ buf[14] = 0; \ TEST2(offset == MIN(prev + strlen(str), size), return, "returned "WORD_DEC_FORMAT" while awaiting "WORD_DEC_FORMAT"!", offset, MIN(prev + strlen(str), size)); \ TEST2(strcmp(buf, expected) == 0, result, "buffer is `%s` while awaiting `%s`!", buf, expected); \ prev = offset; \ } while(0) INSERT_OP_TEST("ABC", "ABC"); INSERT_OP_TEST("ABCDE", "ABCABCDE"); INSERT_OP_TEST("ABCDE", "ABCABCDEAB"); END_TEST(insert_opcodes) int test_function() { return 1; } BEGIN_TEST(generate_trampoline) void *maped_area; void *maped_area2; ssize_t offset; int (*f)(void); #define GENTRAMP_TEST(options, off) do { \ offset = 0; \ maped_area = mmap(NULL, 1024, PROT_READ|PROT_WRITE|PROT_EXEC, options, -1, 0); \ TEST0(maped_area != MAP_FAILED, set-up_##off, "mmap failed!"); \ maped_area2 = (void*)((uint8_t*)maped_area + off); \ offset = generate_trampoline(maped_area, off, (word_uint)(word_uint)maped_area, (word_uint)(word_uint)test_function); \ TEST1(offset > 0, result_##off, "returned value from generate_trampoline is null or negative ("WORD_DEC_FORMAT")!", offset); \ offset = generate_trampoline(maped_area2, 1024-off, (word_uint)(word_uint)maped_area2, (word_uint)(word_uint)maped_area); \ TEST1(offset > 0, result_##off, "returned value from generate_trampoline is null or negative ("WORD_DEC_FORMAT")!", offset); \ f = (int (*)(void))maped_area2; \ int r = f(); \ TEST1(f() == 1, jump_##off, "jump returned %d while awaiting 1!", r); \ munmap(maped_area, 1024); \ } while(0) GENTRAMP_TEST(MAP_ANONYMOUS | MAP_PRIVATE, 512); GENTRAMP_TEST(MAP_ANONYMOUS | MAP_PRIVATE, 128); GENTRAMP_TEST(MAP_ANONYMOUS | MAP_PRIVATE, 127); GENTRAMP_TEST(MAP_ANONYMOUS | MAP_PRIVATE, 126); GENTRAMP_TEST(MAP_ANONYMOUS | MAP_PRIVATE, 125); #if __WORDSIZE == 64 // Trying 32-bits mapping in 64 bits environment GENTRAMP_TEST(MAP_ANONYMOUS | MAP_PRIVATE | MAP_32BIT, 512); GENTRAMP_TEST(MAP_ANONYMOUS | MAP_PRIVATE | MAP_32BIT, 128); GENTRAMP_TEST(MAP_ANONYMOUS | MAP_PRIVATE | MAP_32BIT, 127); GENTRAMP_TEST(MAP_ANONYMOUS | MAP_PRIVATE | MAP_32BIT, 126); GENTRAMP_TEST(MAP_ANONYMOUS | MAP_PRIVATE | MAP_32BIT, 125); #endif END_TEST(generate_trampoline) BEGIN_TEST(read_jump) uint8_t buffer[] = { // from testcase/test.cc main function 0x55,// push %rbp 0x48, 0x89, 0xe5, // mov %rsp,%rbp 0x48, 0x83, 0xec, 0x10, // sub $0x10,%rsp 0xc7, 0x45, 0xf8, 0x00, 0x00, 0x00, 0x00, // movl $0x0,-0x8(%rbp) 0xeb, 0x34, // jmp , 0x400539 0xc7, 0x45, 0xfc, 0x00, 0x00, 0x00, 0x00, // movl $0x0,-0x4(%rbp) 0xeb, 0x1c, // jmp , 0x40052a 0x8b, 0x45, 0xf8, // mov -0x8(%rbp),%eax 0x0f, 0xaf, 0x45, 0xfc, // imul -0x4(%rbp),%eax 0x89, 0xc6, // mov %eax,%esi 0xbf, 0x3c, 0x06, 0x40, 0x00, // mov $0x40063c,%edi 0xb8, 0x00, 0x00, 0x00, 0x00, // mov $0x0,%eax 0xe8, 0xca, 0xfe, 0xff, 0xff, // callq , 0x4003f0 0x83, 0x45, 0xfc, 0x01, // addl $0x1,-0x4(%rbp) 0x83, 0x7d, 0xfc, 0x13, // cmpl $0x13,-0x4(%rbp) 0x0f, 0x9e, 0xc0, // setle %al 0x84, 0xc0, // test %al,%al 0x75, 0xd9, // jne , 0x40050e 0x83, 0x45, 0xf8, 0x01, // addl $0x1,-0x8(%rbp) 0x83, 0x7d, 0xf8, 0x09, // cmpl $0x9,-0x8(%rbp) 0x0f, 0x9e, 0xc0, // setle %al 0x84, 0xc0, // test %al,%al 0x75, 0xc1, // jne 400505 0xb8, 0x00, 0x00, 0x00, 0x00, // mov $0x0,%eax 0xc9, // leaveq 0xc3, // retq }; int sizes[] = {1, 3, 4, 7, 2, 7, 2, 3, 4, 2, 5, 5, 5, 4, 4, 3, 2, 2, 4, 4, 3, 2, 2, 5, 1, 1, 0}; int jumps[] = {0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1}; int i; size_t offset = 0; // the actual test for (i = 0; sizes[i] != 0; i++) { /* - read_jump(buf, size, offset, prefix): read a jump part that was prefixed * by *prefix* and that is contained at offset *offset* of *buf* (*size* is * the size of *buf*). The returned value is the size of the instruction * if a jump is read, 0 if a valid prefix for a jump was encountered, and < 0 * if the instruction is not a jump. */ ssize_t r = read_jump(buffer, 87, offset, 0); if (r == 0) { r = read_jump(buffer, 87, offset + 1, buffer[offset]); if (r > 0) r++; } if (r < 0) { TEST1(jumps[i] == 0, notjump, "instruction %d was a jump but wasn't detected!", i); } else { TEST2( jumps[i] == 1, jump, "instruction %d wasn't a jump but was detected as one with size "WORD_DEC_FORMAT"!", i, r); TEST3(sizes[i] == r, size, "instruction %d has size %d but got "WORD_DEC_FORMAT"!", i, sizes[i], r); } offset += sizes[i]; } END_TEST(read_jump) void usage(char **av, char option) { if (option != 0) { fprintf(stderr, "Unknown option '%c'", option); } fprintf( stderr, "Usage: %s [-v[v]] [test1 test2 test3 ...]\n" "\t-v output verbose debugging information (the more d option, the more verbose the output)\n" "\ttest specifies the tests to runs (default is all tests). Available tests: insert_opcodes, generate_trampoline, read_jump.\n", av[0]); exit(-1); } int main(int ac, char **av) { int r, i, j; debug = 0; int runall = 1; for (i = 1; i < ac; i++) { if (av[i][0] == '-') { for (j = 1; av[i][j] != 0; j++) { switch (av[i][j]) { case 'v': debug++; break; default: usage(av, av[i][j]); } } } else { PARSE_TEST(insert_opcodes); PARSE_TEST(generate_trampoline); PARSE_TEST(read_jump); } } RUN_TEST(insert_opcodes); RUN_TEST(generate_trampoline); RUN_TEST(read_jump); return 0; } eztrace-1.1-7/test/pptrace/automatic/PaxHeaders.7332/tracing.c0000644000000000000000000000013213012560437021026 xustar0030 mtime=1479205151.308727685 30 atime=1507797515.849986542 30 ctime=1508162365.645725036 eztrace-1.1-7/test/pptrace/automatic/tracing.c0000644000175000017500000001711213012560437022217 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * tracing.c - test for tracing functions * * Created on: 26 Aug. 2012 * Author: Damien Martin-Guillerez */ #include #include #include #include #include #include #include #include #include "common.h" int testfork; // Common parts #if __x86_64__ // x86_64 #define instr_call_parent() asm("int3") #elif __arm__ // ARMv7 #define instr_call_parent() asm("bkpt #0") #endif #define call_parent() \ do { \ DEBUG("traced process is before call_parent"); \ instr_call_parent(); \ DEBUG("traced process is after call_parent"); \ } while(0) #define call_parent_lbl(lbl) \ do { \ DEBUG("traced process is before call_parent"); \ instr_call_parent(); \ do_lbl(lbl); \ } while(0) #define lbl_name(lbl) test_##lbl #define lbl_addr(lbl) &&lbl_name(lbl) #define do_lbl(lbl) do { \ lbl_name(lbl): \ DEBUG("traced process is after label " #lbl); \ } while(0) pid_t child; int fds[2]; static inline int run_ipc() { if (testfork) return 0; pipe(fds); child = trace_run(NULL, NULL, NULL, 1); return child > 0 ? 1 : 0; } static inline void close_ipc() { close(fds[0]); close(fds[1]); } #define FINISH_IPC() do { \ trace_detach(child); \ trace_wait(child); \ DEBUG("process finished"); \ } while(0) #define IPC_END() do { \ DEBUG("traced process is exiting"); \ exit(0); \ } while(0) #define READ_WORD(w) read(fds[0], &w, sizeof(w)) #define WRITE_WORD(w) write(fds[1], &w, sizeof(w)) // End of common parts BEGIN_TEST(getset_ip) void* r; word_uint rr; // print the ip of the int 3 instruction and propose a function ip if (run_ipc()) { // The tracing process trace_continue(child); r = (void*) get_ip(child); TEST2(lbl_addr(getset_ip_lbl1) == r, get_ip, "returned %p while awaiting %p!", r, lbl_addr(getset_ip_lbl1)); set_ip(child, (word_uint)lbl_addr(getset_ip_lbl2)); FINISH_IPC() ; READ_WORD(rr); TEST1(rr == 1, set_ip, "returned "WORD_DEC_FORMAT" while awaiting 1!", rr); close_ipc(); } else { // The traced process rr = 1; call_parent_lbl(getset_ip_lbl1); rr = 0; do_lbl(getset_ip_lbl2); WRITE_WORD(rr); IPC_END(); } END_TEST(getset_ip) BEGIN_TEST(trace_readwrite) static word_uint result; // try write then read result and compares if (run_ipc()) { word_uint rr; trace_continue(child); READ_WORD(result); trace_read(child, (word_uint) &result, (uint8_t*) &rr, sizeof(rr)); TEST2(rr == result, trace_read, "returned "WORD_HEX_FORMAT" while awaiting "WORD_HEX_FORMAT"!", rr, result); rr = 42; trace_write(child, (word_uint) &result, (uint8_t*) &rr, sizeof(rr)); FINISH_IPC() ; READ_WORD(result); TEST2( rr == result, trace_write, "trace_write(): value of result is "WORD_HEX_FORMAT" while awaiting "WORD_HEX_FORMAT"!", rr, result); close_ipc(); } else { result = 4242; WRITE_WORD(result); call_parent(); WRITE_WORD(result); IPC_END(); } END_TEST(trace_readwrite) BEGIN_TEST(trace_replace) // give one address and the original value and a value to replace static uint8_t value; if (run_ipc()) { trace_continue(child); READ_WORD(value); uint8_t rr = trace_replace(child, (word_uint) &value, 42); TEST2(value == rr, trace_replace, "returned %x while awaiting %x", rr, value); FINISH_IPC() ; READ_WORD(value); TEST1(value == 42, trace_replace, "written %x while awaiting 42", value); close_ipc(); } else { value = 24; WRITE_WORD(value); call_parent(); WRITE_WORD(value); IPC_END(); } END_TEST(trace_replace) BEGIN_TEST(trace_copy) // give two addresses and a string then print the resulting string static char buffer[10]; static const char *tocopy = "BBBBBBBBB\0ABC"; word_uint val = -1; if (run_ipc()) { trace_copy(child, (word_uint) tocopy, (word_uint) buffer, strlen(tocopy) + 1); FINISH_IPC() ; READ_WORD(val); TEST0(val == 1, trace_copy, "the buffer comparison failed"); close_ipc(); } else { val = strcmp(buffer, tocopy) == 0 ? 1 : 0; if (!val) { DEBUG2("%s != %s!", buffer, tocopy); } WRITE_WORD(val); IPC_END(); } END_TEST(trace_copy) BEGIN_TEST(trace_singlestep) void *r; if (run_ipc()) { trace_continue(child); r = (void*) get_ip(child); TEST2(lbl_addr(singlestep_lbl1) == r, set-up, "eip is %p while awaiting %p!", r, lbl_addr(singlestep_lbl1)); trace_singlestep(child); r = (void*) get_ip(child); TEST2(lbl_addr(singlestep_lbl2) == r, singlestep, "eip is %p while awaiting %p!", r, lbl_addr(singlestep_lbl2)); FINISH_IPC() ; close_ipc(); } else { instr_call_parent(); lbl_name(singlestep_lbl1): #if __x86_64__ // x86_64 #if __WORDSIZE == 64 asm("inc %rax"); #else asm("inc %eax"); #endif #elif __arm__ // ARMv7 asm("add r0, r0, #1"); #endif lbl_name(singlestep_lbl2): IPC_END(); } END_TEST(trace_singlestep) BEGIN_TEST(trace_mmap) static char *buf1 = "ABCDEF"; static char *buf2; if (run_ipc()) { word_uint mmap = trace_mmap(child, 0, 1024, PROT_READ | PROT_WRITE); TEST0(mmap != 0, mmap_nonnull, "mmap returned null!"); int errcode = (int) (-(word_uint) mmap); TEST2(errcode < 0 || errcode > 127, mmap_failed, "mmap returned the error code %d (strerror = %s)!", errcode, strerror(errcode)); DEBUG1("trace_mmap returned %p", (void* )mmap); trace_write(child, (word_uint) &buf2, (uint8_t*) &mmap, sizeof(mmap)); DEBUG("written the address of mmap to buf2"); trace_copy(child, (word_uint) buf1, mmap, strlen(buf1) + 1); DEBUG("copied content of buf1 to mmap'd content"); FINISH_IPC() ; READ_WORD(mmap); TEST0(mmap == 1, mmap_copy, "data comparison failed!"); close_ipc(); } else { DEBUG1("buf2 = %p", buf2); word_uint val = strcmp(buf1, buf2) == 0 ? 1 : 0; if (!val) { DEBUG2("%s != %s!", buf1, buf2); } WRITE_WORD(val); IPC_END(); } END_TEST(trace_mmap) void usage(char **av, char option) { if (option != 0) { fprintf(stderr, "Unknown option '%c'", option); } fprintf( stderr, "Usage: %s [-v[v]] [test1 test2 test3 ...]\n" "\t-v output verbose debugging information (the more d option, the more verbose the output)\n" "\t-d don't actually run the tests, simply execute the child (used in conjunction with test specifiers to debug)\n" "\ttest specifies the tests to runs (default is all tests). Available tests: getset_ip, readwrite, replace, copy, singlestep, mmap.\n", av[0]); exit(-1); } int main(int ac, char **av) { int r, i, j; debug = 0; testfork = 0; int runall = 1; for (i = 1; i < ac; i++) { if (av[i][0] == '-') { for (j = 1; av[i][j] != 0; j++) { switch (av[i][j]) { case 'v': debug++; break; case 'd': testfork++; break; default: usage(av, av[i][j]); } } } else { PARSE_TEST(getset_ip); PARSE_TEST(trace_readwrite); PARSE_TEST(trace_replace); PARSE_TEST(trace_copy); PARSE_TEST(trace_singlestep); PARSE_TEST(trace_mmap); } } RUN_TEST(getset_ip); RUN_TEST(trace_readwrite); RUN_TEST(trace_replace); RUN_TEST(trace_copy); RUN_TEST(trace_singlestep); RUN_TEST(trace_mmap); return 0; } eztrace-1.1-7/test/pptrace/automatic/PaxHeaders.7332/testcase0000644000000000000000000000013213171135475020777 xustar0030 mtime=1508162365.661726431 30 atime=1508162367.741908015 30 ctime=1508162365.661726431 eztrace-1.1-7/test/pptrace/automatic/testcase/0000755000175000017500000000000013171135475022243 5ustar00trahaytrahay00000000000000eztrace-1.1-7/test/pptrace/automatic/testcase/PaxHeaders.7332/Makefile0000644000000000000000000000013112544237152022511 xustar0030 mtime=1435582058.571899951 29 atime=1507797515.85398667 30 ctime=1508162365.661726431 eztrace-1.1-7/test/pptrace/automatic/testcase/Makefile0000644000175000017500000000116312544237152023702 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis # See COPYING in top-level directory. TESTCASES_=$(patsubst %.c,%,$(wildcard *.c)) ifeq "32" "$(shell getconf LONG_BIT)" BITS=32 else BITS=32 64 endif TESTCASES=$(foreach testcase,$(TESTCASES_),$(foreach b,$(BITS),$(testcase).$(b) $(testcase).$(b).so)) all: $(TESTCASES) echo: echo '$(BITS) + $(TESTCASES_) = $(TESTCASES)' %.32: %.c @$(CC) -m32 -o $@ $^ %.64: %.c @$(CC) -m64 -o $@ $^ %.32.so: %.c @$(CC) -m32 -shared -fPIC -Wl,-Bsymbolic -o $@ $^ %.64.so: %.c @$(CC) -m64 -shared -fPIC -Wl,-Bsymbolic -o $@ $^ clean: @rm -f $(TESTCASES) eztrace-1.1-7/test/pptrace/automatic/testcase/PaxHeaders.7332/titi.c0000644000000000000000000000013112544237152022166 xustar0030 mtime=1435582058.571899951 29 atime=1507797515.85398667 30 ctime=1508162365.661726431 eztrace-1.1-7/test/pptrace/automatic/testcase/titi.c0000644000175000017500000000274012544237152023361 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * titi.c -- test case for automated tests * * Created on: 2 March. 2011 * Author: Damien Martin-Guillerez */ #include #include #include char *dummy_symbol[] = {"absolutely", "dummy", "heho", NULL}; int silent = 0; void postface() { if (!silent) printf("In postface()\n"); if (!silent) printf("Out postface()\n"); } void preface() { if (!silent) printf("In preface()\n"); if (!silent) printf("Out preface()\n"); } void tata(char *test) { if (!silent) printf("In tata()\n"); if (!silent) printf("%s\n", test); if (!silent) printf("Out tata()\n"); } void titi() { if (!silent) printf("In titi()\n"); tata("Hello, World!"); if (!silent) printf("Out titi()\n"); } int main(int argc, char **argv) { int i; int pause = 0; for (i = 0; i < argc; i++) { if (strcmp(argv[i], "-p") == 0) { pause = 1; } if (strcmp(argv[i], "-s") == 0) { silent = 1; } } if (!silent) { printf("Entering program with usage : "); for (i = 0; i < argc; i++) { printf("%s ", argv[i]); } printf("\n"); } if (pause) { printf("Enter a key to continue: "); getchar(); printf("\n"); } titi(); if (!silent) { printf("Exiting program\n"); } return 0; } eztrace-1.1-7/test/PaxHeaders.7332/pthread0000644000000000000000000000013213171135500015154 xustar0030 mtime=1508162368.741995391 30 atime=1508162372.166294941 30 ctime=1508162368.741995391 eztrace-1.1-7/test/pthread/0000755000175000017500000000000013171135500016420 5ustar00trahaytrahay00000000000000eztrace-1.1-7/test/pthread/PaxHeaders.7332/dummy_thread.c0000644000000000000000000000013212675166672020105 xustar0030 mtime=1458892218.325829848 30 atime=1507797515.861986926 30 ctime=1508162365.549716661 eztrace-1.1-7/test/pthread/dummy_thread.c0000644000175000017500000000505012675166672021274 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include #include #include #include #include #include #include // Debugging part, print out only if debugging level of the system is verbose or more int _debug = -77; void debug(char *fmt, ...) { if (_debug == -77) { char *buf = getenv("EZTRACE_DEBUG"); if (buf == NULL) _debug = 0; else _debug = atoi(buf); } if (_debug >= 0) { // debug verbose mode va_list va; va_start(va, fmt); vfprintf(stdout, fmt, va); va_end(va); } } // end of debugging part /* Number of iterations */ #define ITER 10 /* Number of threads */ #define NTH 2 typedef union { unsigned long long tick; struct { unsigned low; unsigned high; }; } tick_t; #define TICK_DIFF(t1, t2) \ ((t2).tick - (t1).tick) #define TIME_DIFF(t1, t2) \ ((t2.tv_sec - t1.tv_sec) * 1000000 + (t2.tv_usec - t1.tv_usec)) /* Only used during thread creating to make sure that the thread * got the correct args. */ sem_t thread_ready; /* Block/unblock a thread */ sem_t sem[NTH]; pthread_mutex_t mutex; /* Fake computation of usec microseconds */ void compute(int usec) { struct timeval tv1, tv2; gettimeofday(&tv1, NULL); do { gettimeofday(&tv2, NULL); } while (TIME_DIFF(tv1, tv2) < usec); } void* f_thread(void* arg) { uint8_t my_id = *(uint8_t*) arg; /* Notify the main thread that we got the args */ sem_post(&thread_ready); debug("Running thread #%d\n", my_id); int i; for (i = 0; i < ITER; i++) { /* Wait until the previous thread has finished his job */ sem_wait(&sem[my_id]); debug("[thread #%d] loop %d\n", my_id, i); /* compute for 1ms */ pthread_mutex_lock(&mutex); compute(50000); pthread_mutex_unlock(&mutex); compute(50000); /* Wake up the next thread */ sem_post(&sem[(my_id + 1) % NTH]); } debug("End of thread #%d\n", my_id); return NULL; } int main(int argc, char**argv) { pthread_t tid[NTH]; int i; pthread_mutex_init(&mutex, NULL); sem_init(&thread_ready, 0, 0); for (i = 0; i < NTH; i++) sem_init(&sem[i], 0, 0); for (i = 0; i < NTH; i++) { pthread_create(&tid[i], NULL, f_thread, &i); sem_wait(&thread_ready); } /* Unblock the first thread so that it can start working */ sem_post(&sem[0]); for (i = 0; i < NTH; i++) { pthread_join(tid[i], NULL); } return 0; } eztrace-1.1-7/test/pthread/PaxHeaders.7332/test_pthread.c0000644000000000000000000000013212544237152020074 xustar0030 mtime=1435582058.575899951 30 atime=1507797515.861986926 30 ctime=1508162365.553717009 eztrace-1.1-7/test/pthread/test_pthread.c0000644000175000017500000000702312544237152021265 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include #include #include #include #include #include #include // Debugging part, print out only if debugging level of the system is verbose or more int _debug = -77; void debug(char *fmt, ...) { if (_debug == -77) { char *buf = getenv("EZTRACE_DEBUG"); if (buf == NULL) _debug = 0; else _debug = atoi(buf); } if (_debug >= 0) { // debug verbose mode va_list va; va_start(va, fmt); vfprintf(stdout, fmt, va); va_end(va); } } // end of debugging part /* Number of iterations */ #define ITER 10 /* Number of threads */ #define NTH 2 typedef union { unsigned long long tick; struct { unsigned low; unsigned high; }; } tick_t; #define TICK_DIFF(t1, t2) \ ((t2).tick - (t1).tick) #define TIME_DIFF(t1, t2) \ ((t2.tv_sec - t1.tv_sec) * 1000000 + (t2.tv_usec - t1.tv_usec)) /* Only used during thread creating to make sure that the thread * got the correct args. */ sem_t thread_ready; /* Block/unblock a thread */ sem_t sem[NTH]; pthread_mutex_t mutex; pthread_spinlock_t spinlock; pthread_barrier_t barrier; pthread_cond_t cond; pthread_rwlock_t rwlock; /* Fake computation of usec microseconds */ void compute(int usec) { struct timeval tv1, tv2; gettimeofday(&tv1, NULL); do { gettimeofday(&tv2, NULL); } while (TIME_DIFF(tv1, tv2) < usec); } void* f_thread(void* arg) { uint8_t my_id = *(uint8_t*) arg; /* Notify the main thread that we got the args */ sem_post(&thread_ready); debug("Running thread #%d\n", my_id); pthread_barrier_wait(&barrier); int i; for (i = 0; i < ITER; i++) { /* Wait until the previous thread has finished his job */ sem_wait(&sem[my_id]); debug("[thread #%d] loop %d\n", my_id, i); /* test mutex */ pthread_mutex_lock(&mutex); compute(5000); pthread_mutex_unlock(&mutex); compute(5000); /* test spinlock */ pthread_spin_lock(&spinlock); compute(5000); pthread_spin_unlock(&spinlock); compute(5000); /* test spinlock */ pthread_spin_lock(&spinlock); compute(5000); pthread_spin_unlock(&spinlock); compute(5000); /* test rwlock */ pthread_rwlock_rdlock(&rwlock); compute(5000); pthread_rwlock_unlock(&rwlock); compute(5000); pthread_rwlock_wrlock(&rwlock); compute(5000); pthread_rwlock_unlock(&rwlock); compute(5000); /* Wake up the next thread */ sem_post(&sem[(my_id + 1) % NTH]); } pthread_barrier_wait(&barrier); debug("End of thread #%d\n", my_id); return NULL; } int main(int argc, char**argv) { pthread_t tid[NTH]; int i; pthread_mutex_init(&mutex, NULL); pthread_spin_init(&spinlock, 0); pthread_barrier_init(&barrier, NULL, NTH); pthread_cond_init(&cond, NULL); pthread_rwlock_init(&rwlock, NULL); sem_init(&thread_ready, 0, 0); for (i = 0; i < NTH; i++) sem_init(&sem[i], 0, 0); for (i = 0; i < NTH; i++) { pthread_create(&tid[i], NULL, f_thread, &i); sem_wait(&thread_ready); } /* Unblock the first thread so that it can start working */ sem_post(&sem[0]); for (i = 0; i < NTH; i++) { pthread_join(tid[i], NULL); } pthread_mutex_destroy(&mutex); pthread_spin_destroy(&spinlock); pthread_barrier_destroy(&barrier); pthread_cond_destroy(&cond); pthread_rwlock_destroy(&rwlock); return 0; } eztrace-1.1-7/test/pthread/PaxHeaders.7332/test_sigsegv.c0000644000000000000000000000013212544237152020114 xustar0030 mtime=1435582058.575899951 30 atime=1507797515.861986926 30 ctime=1508162365.557717359 eztrace-1.1-7/test/pthread/test_sigsegv.c0000644000175000017500000000441612544237152021310 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include #include #include #include #include #include #include // Debugging part, print out only if debugging level of the system is verbose or more int _debug = -77; void debug(char *fmt, ...) { if (_debug == -77) { char *buf = getenv("EZTRACE_DEBUG"); if (buf == NULL) _debug = 0; else _debug = atoi(buf); } if (_debug >= 0) { // debug verbose mode va_list va; va_start(va, fmt); vfprintf(stdout, fmt, va); va_end(va); } } // end of debugging part /* This program calls functions (more or less) randomly and recursively. * At some point, it raises a SIGSEGV. */ typedef union { unsigned long long tick; struct { unsigned low; unsigned high; }; } tick_t; #define TICK_DIFF(t1, t2) \ ((t2).tick - (t1).tick) #define TIME_DIFF(t1, t2) \ ((t2.tv_sec - t1.tv_sec) * 1000000 + (t2.tv_usec - t1.tv_usec)) void func1(int a); void func2(int a); void func3(int a); /* Fake computation of usec microseconds */ void compute(int usec) { struct timeval tv1, tv2; gettimeofday(&tv1, NULL); do { gettimeofday(&tv2, NULL); } while (TIME_DIFF(tv1, tv2) < usec); } void func1(int a) { debug("func1(%d)\n", a); compute(100 * a); int alea = rand() % 7; if (!alea) *(int*) 0 = 0; switch (a % 3) { case 0: func1(a - 1); break; case 1: func2(a - 1); break; case 2: func3(a - 1); break; } } void func2(int a) { debug("func2(%d)\n", a); compute(100 * a); int alea = rand() % 6; if (!alea) *(int*) 0 = 0; switch (a % 3) { case 0: func1(a - 1); break; case 1: func2(a - 1); break; case 2: func3(a - 1); break; } } void func3(int a) { debug("func3(%d)\n", a); compute(100 * a); int alea = rand() % 5; if (!alea) *(int*) 0 = 0; switch (a % 3) { case 0: func1(a - 1); break; case 1: func2(a - 1); break; case 2: func3(a - 1); break; } } int main(int argc, char**argv) { srand(time(NULL)); while (1) func1(rand() % 101); return 0; } eztrace-1.1-7/test/pthread/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212544237152017276 xustar0030 mtime=1435582058.575899951 30 atime=1508162220.369861863 30 ctime=1508162368.737995042 eztrace-1.1-7/test/pthread/Makefile.am0000644000175000017500000000051212544237152020463 0ustar00trahaytrahay00000000000000# Copyright © CNRS, INRIA, Université Bordeaux 1 # See COPYING in top-level directory. check_PROGRAMS = cond dummy_thread test_pthread cond_SOURCES = cond.c cond_LDFLAGS = -lpthread dummy_thread_SOURCES = dummy_thread.c dummy_thread_LDFLAGS = -lpthread test_pthread_SOURCES = test_pthread.c test_pthread_LDFLAGS = -lpthread eztrace-1.1-7/test/pthread/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135254017304 xustar0030 mtime=1508162220.393863628 30 atime=1508162286.875048086 30 ctime=1508162368.741995391 eztrace-1.1-7/test/pthread/Makefile.in0000644000175000017500000005176213171135254020506 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright © CNRS, INRIA, Université Bordeaux 1 # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ check_PROGRAMS = cond$(EXEEXT) dummy_thread$(EXEEXT) \ test_pthread$(EXEEXT) subdir = test/pthread ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am_cond_OBJECTS = cond.$(OBJEXT) cond_OBJECTS = $(am_cond_OBJECTS) cond_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = cond_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(cond_LDFLAGS) $(LDFLAGS) -o $@ am_dummy_thread_OBJECTS = dummy_thread.$(OBJEXT) dummy_thread_OBJECTS = $(am_dummy_thread_OBJECTS) dummy_thread_LDADD = $(LDADD) dummy_thread_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(dummy_thread_LDFLAGS) $(LDFLAGS) -o $@ am_test_pthread_OBJECTS = test_pthread.$(OBJEXT) test_pthread_OBJECTS = $(am_test_pthread_OBJECTS) test_pthread_LDADD = $(LDADD) test_pthread_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(test_pthread_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(cond_SOURCES) $(dummy_thread_SOURCES) \ $(test_pthread_SOURCES) DIST_SOURCES = $(cond_SOURCES) $(dummy_thread_SOURCES) \ $(test_pthread_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUDA_CFLAGS = @CUDA_CFLAGS@ CUDA_LDFLAGS = @CUDA_LDFLAGS@ CUDA_LIBS = @CUDA_LIBS@ CUDA_ROOT = @CUDA_ROOT@ CUPTI_CFLAGS = @CUPTI_CFLAGS@ CUPTI_LDFLAGS = @CUPTI_LDFLAGS@ CUPTI_LIBS = @CUPTI_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ DYNLIB_EXT = @DYNLIB_EXT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ GTGDIR = @GTGDIR@ GTG_CPPFLAGS = @GTG_CPPFLAGS@ GTG_DEPENDENCIES = @GTG_DEPENDENCIES@ GTG_EXT_CPPFLAGS = @GTG_EXT_CPPFLAGS@ GTG_EXT_LDFLAGS = @GTG_EXT_LDFLAGS@ GTG_EXT_LIB = @GTG_EXT_LIB@ GTG_LDFLAGS = @GTG_LDFLAGS@ GTG_LIB = @GTG_LIB@ GTG_OUT_OF_ORDER = @GTG_OUT_OF_ORDER@ HAVE_ENV = @HAVE_ENV@ HAVE_LIBBACKTRACE = @HAVE_LIBBACKTRACE@ HAVE_LIBOPCODE = @HAVE_LIBOPCODE@ HAVE_PRCTL_H = @HAVE_PRCTL_H@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LD_LIBRARY_PATH_NAME = @LD_LIBRARY_PATH_NAME@ LD_PRELOAD_NAME = @LD_PRELOAD_NAME@ LIBBACKTRACE_CPPFLAGS = @LIBBACKTRACE_CPPFLAGS@ LIBBACKTRACE_LDFLAGS = @LIBBACKTRACE_LDFLAGS@ LIBBACKTRACE_LIB = @LIBBACKTRACE_LIB@ LIBBACKTRACE_ROOT = @LIBBACKTRACE_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LITL_PRINT = @LITL_PRINT@ LITL_ROOT = @LITL_ROOT@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPI_CFLAGS = @MPI_CFLAGS@ MPI_EVENT_ID = @MPI_EVENT_ID@ MPI_INC = @MPI_INC@ MPI_LDFLAGS = @MPI_LDFLAGS@ MPI_MODULE_NAME = @MPI_MODULE_NAME@ MPI_ROOT = @MPI_ROOT@ NM = @NM@ NMEDIT = @NMEDIT@ NVCC = @NVCC@ NVCCFLAGS = @NVCCFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAPIDIR = @PAPIDIR@ PAPI_CPPFLAGS = @PAPI_CPPFLAGS@ PAPI_ENABLED = @PAPI_ENABLED@ PAPI_LDFLAGS = @PAPI_LDFLAGS@ PAPI_LIBDIR = @PAPI_LIBDIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PPTRACE_BINARY_TYPE = @PPTRACE_BINARY_TYPE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STARPU_CFLAGS = @STARPU_CFLAGS@ STARPU_CPPFLAGS = @STARPU_CPPFLAGS@ STARPU_LDFLAGS = @STARPU_LDFLAGS@ STARPU_LIBS = @STARPU_LIBS@ STARPU_ROOT = @STARPU_ROOT@ STRIP = @STRIP@ TARGET_BITS = @TARGET_BITS@ TL_CPPFLAGS = @TL_CPPFLAGS@ TL_EXT_CPPFLAGS = @TL_EXT_CPPFLAGS@ TL_EXT_LDFLAGS = @TL_EXT_LDFLAGS@ TL_EXT_LIB = @TL_EXT_LIB@ TL_LDFLAGS = @TL_LDFLAGS@ TL_LIB = @TL_LIB@ USE_BIN_INSTRUMENTATION = @USE_BIN_INSTRUMENTATION@ USE_CUDADIR_FROM_USER = @USE_CUDADIR_FROM_USER@ USE_GETTID = @USE_GETTID@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ USE_PAPIDIR_FROM_USER = @USE_PAPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ cond_SOURCES = cond.c cond_LDFLAGS = -lpthread dummy_thread_SOURCES = dummy_thread.c dummy_thread_LDFLAGS = -lpthread test_pthread_SOURCES = test_pthread.c test_pthread_LDFLAGS = -lpthread all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/pthread/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu test/pthread/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list cond$(EXEEXT): $(cond_OBJECTS) $(cond_DEPENDENCIES) $(EXTRA_cond_DEPENDENCIES) @rm -f cond$(EXEEXT) $(AM_V_CCLD)$(cond_LINK) $(cond_OBJECTS) $(cond_LDADD) $(LIBS) dummy_thread$(EXEEXT): $(dummy_thread_OBJECTS) $(dummy_thread_DEPENDENCIES) $(EXTRA_dummy_thread_DEPENDENCIES) @rm -f dummy_thread$(EXEEXT) $(AM_V_CCLD)$(dummy_thread_LINK) $(dummy_thread_OBJECTS) $(dummy_thread_LDADD) $(LIBS) test_pthread$(EXEEXT): $(test_pthread_OBJECTS) $(test_pthread_DEPENDENCIES) $(EXTRA_test_pthread_DEPENDENCIES) @rm -f test_pthread$(EXEEXT) $(AM_V_CCLD)$(test_pthread_LINK) $(test_pthread_OBJECTS) $(test_pthread_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cond.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dummy_thread.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_pthread.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/test/pthread/PaxHeaders.7332/cond.c0000644000000000000000000000013212544237152016331 xustar0030 mtime=1435582058.575899951 30 atime=1507797515.861986926 30 ctime=1508162365.541715963 eztrace-1.1-7/test/pthread/cond.c0000644000175000017500000000201212544237152017513 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include #include #include // Debugging part, print out only if debugging level of the system is verbose or more int _debug = -77; void debug(char *fmt, ...) { if (_debug == -77) { char *buf = getenv("EZTRACE_DEBUG"); if (buf == NULL) _debug = 0; else _debug = atoi(buf); } if (_debug >= 0) { // debug verbose mode va_list va; va_start(va, fmt); vfprintf(stdout, fmt, va); va_end(va); } } // end of debugging part int main() { pthread_cond_t cond; pthread_mutex_t mutex; debug("Testing pthread_cond_*\n"); pthread_cond_init(&cond, NULL); pthread_mutex_init(&mutex, NULL); pthread_mutex_lock(&mutex); pthread_cond_signal(&cond); pthread_cond_broadcast(&cond); pthread_mutex_unlock(&mutex); pthread_cond_destroy(&cond); debug("OK ! \n"); return 0; } eztrace-1.1-7/test/pthread/PaxHeaders.7332/race_cond.c0000644000000000000000000000013212544237152017323 xustar0030 mtime=1435582058.575899951 30 atime=1507797515.861986926 30 ctime=1508162365.545716312 eztrace-1.1-7/test/pthread/race_cond.c0000644000175000017500000000361112544237152020513 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include #include #include #include #include // Debugging part, print out only if debugging level of the system is verbose or more int _debug = -77; void debug(char *fmt, ...) { if (_debug == -77) { char *buf = getenv("EZTRACE_DEBUG"); if (buf == NULL) _debug = 0; else _debug = atoi(buf); } if (_debug >= 0) { // debug verbose mode va_list va; va_start(va, fmt); vfprintf(stdout, fmt, va); va_end(va); } } // end of debugging part // Number of threads #define NBTHREAD 2 // Number of iterations #define NBITER 10000 /* * Only used during thread creating to make sure that the thread * got the correct args. */ sem_t thread_ready; pthread_barrier_t barrier; volatile int sum = 0; void compute() __attribute__((optimize("-O0"))); void compute() { int i; for (i = 0; i < NBITER; i++) { void *ptr = malloc(1); free(ptr); sum += 1; } } void* do_work(void* arg) { uint8_t my_id = *(uint8_t*) arg; // Notify the main thread that we got the args sem_post(&thread_ready); debug("Running thread #%d\n", my_id); pthread_barrier_wait(&barrier); compute(); pthread_barrier_wait(&barrier); debug("End of thread #%d\n", my_id); return NULL; } int main() { pthread_t tid[NBTHREAD]; int i; pthread_barrier_init(&barrier, NULL, NBTHREAD); sem_init(&thread_ready, 0, 0); for (i = 0; i < NBTHREAD; i++) { pthread_create(&tid[i], NULL, do_work, &i); sem_wait(&thread_ready); } for (i = 0; i < NBTHREAD; i++) pthread_join(tid[i], NULL); printf("Thread sum: %d\n", sum); sum = NBTHREAD * NBITER; printf("Check sum: %d\n", sum); pthread_barrier_destroy(&barrier); return 0; } eztrace-1.1-7/test/PaxHeaders.7332/automake0000644000000000000000000000013213171135500015333 xustar0030 mtime=1508162368.810001335 30 atime=1508162372.166294941 30 ctime=1508162368.810001335 eztrace-1.1-7/test/automake/0000755000175000017500000000000013171135500016577 5ustar00trahaytrahay00000000000000eztrace-1.1-7/test/automake/PaxHeaders.7332/teststatic.c0000644000000000000000000000013212544237152017754 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.861986926 30 ctime=1508162368.806000984 eztrace-1.1-7/test/automake/teststatic.c0000644000175000017500000000261312544237152021145 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #define nproc 1 #define nameprog "test/static/static" #define NBMAXEVENT 50 #define NBMAXREALEVENT 50 #define module "staticlib" #define path "/test/static/.libs" #include "testcommon.h" /* Function use to init the event structure */ void init_tabevent() { int j; nbdiffevent = 0; for (j = 0; j < nproc; j++) { listevent[j][0].code = "990001"; listevent[j][0].nbeventexpected = 8; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][1].code = "990002"; listevent[j][1].nbeventexpected = 8; } nbdiffevent++; } /*Function use to make some test on stdio event */ void teststatic() { if (listevent[0][0].realnbofevent != listevent[0][1].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][0].code); exit(EXIT_FAILURE); } if (debug >= DEBUG_INFO) fprintf(stderr, "test static finished\n"); } /* The main function */ int main() { parseenv(); run_eztrace(); fetch_traces(); /* Before checking the bintrace we need to init the structur of event */ init_tabevent(); /*After that we retrieve the event of the trace */ parseevent(); // checks teststatic(); run_eztrace_convert(); // clean-up clean(); return EXIT_SUCCESS; } eztrace-1.1-7/test/automake/PaxHeaders.7332/testopenmpnestlock.c0000644000000000000000000000013212544237152021526 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.861986926 30 ctime=1508162368.793999936 eztrace-1.1-7/test/automake/testopenmpnestlock.c0000644000175000017500000001762512544237152022730 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #define eztrace_extra "OMP_NUM_THREADS=2 " #define nproc 1 #define nameprog "test/pthread/cond" #define NBMAXEVENT 55 #define NBMAXREALEVENT 85 #define module "pthread" #define path "/src/modules/omp/.libs" #include "testcommon.h" /* Function use to init the event structure */ void init_tabevent() { int j; nbdiffevent = 0; for (j = 0; j < nproc; j++) { listevent[j][0].code = "10001"; listevent[j][0].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][1].code = "10002"; listevent[j][1].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][2].code = "10003"; listevent[j][2].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][3].code = "10004"; listevent[j][3].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][4].code = "10005"; listevent[j][4].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][5].code = "10006"; listevent[j][5].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][6].code = "10007"; listevent[j][6].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][7].code = "1ffff"; listevent[j][7].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][8].code = "10010"; listevent[j][8].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][9].code = "10011"; listevent[j][9].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][10].code = "10020"; listevent[j][10].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][11].code = "10021"; listevent[j][11].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][12].code = "10030"; listevent[j][12].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][13].code = "10031"; listevent[j][13].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][14].code = "10040"; listevent[j][14].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][15].code = "10041"; listevent[j][15].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][16].code = "10042"; listevent[j][16].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][17].code = "10043"; listevent[j][17].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][18].code = "10050"; listevent[j][18].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][19].code = "10051"; listevent[j][19].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][20].code = "10060"; listevent[j][20].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][21].code = "10061"; listevent[j][21].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][22].code = "10070"; listevent[j][22].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][23].code = "10071"; listevent[j][23].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][24].code = "10072"; listevent[j][24].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][25].code = "10073"; listevent[j][25].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][26].code = "10080"; listevent[j][26].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][27].code = "10081"; listevent[j][27].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][28].code = "10082"; listevent[j][28].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][29].code = "10083"; listevent[j][29].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][30].code = "10090"; listevent[j][30].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][31].code = "10091"; listevent[j][31].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][32].code = "10092"; listevent[j][32].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][33].code = "10093"; listevent[j][33].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][34].code = "100a0"; listevent[j][34].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][35].code = "100a1"; listevent[j][35].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][36].code = "100b0"; listevent[j][36].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][37].code = "100b1"; listevent[j][37].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][38].code = "100b2"; listevent[j][38].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][39].code = "100b3"; listevent[j][39].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][40].code = "100b4"; listevent[j][40].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][41].code = "100b5"; listevent[j][41].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][42].code = "100b6"; listevent[j][42].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][43].code = "100b7"; listevent[j][43].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][44].code = "100b8"; listevent[j][44].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][45].code = "100b9"; listevent[j][45].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][46].code = "100ba"; listevent[j][46].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][47].code = "10101"; listevent[j][47].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][48].code = "10102"; listevent[j][48].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][49].code = "10103"; listevent[j][49].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][50].code = "10104"; listevent[j][50].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][51].code = "10111"; listevent[j][51].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][52].code = "10112"; listevent[j][52].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][53].code = "10113"; listevent[j][53].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][54].code = "10114"; listevent[j][54].nbeventexpected = 0; } nbdiffevent++; } /* The main function */ int main() { parseenv(); run_eztrace(); fetch_traces(); /* Before checking the bintrace we need to init the structur of event */ init_tabevent(); /*After that we retrieve the event of the trace */ parseevent(); // Check for eztrace_convert success run_eztrace_convert(); clean(); return EXIT_SUCCESS; } eztrace-1.1-7/test/automake/PaxHeaders.7332/testpthreadtest.c0000644000000000000000000000013212544237152021014 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.861986926 30 ctime=1508162368.806000984 eztrace-1.1-7/test/automake/testpthreadtest.c0000644000175000017500000000742512544237152022213 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #define nproc 1 #define nameprog "test/pthread/test_pthread" #define NBMAXEVENT 55 #define NBMAXREALEVENT 85 #define module "pthread" #define path "/src/modules/pthread/.libs" #include "testcommon.h" /* Function use to init the event structure */ void init_tabevent() { int j; nbdiffevent = 0; for (j = 0; j < nproc; j++) { listevent[j][0].code = "20010"; listevent[j][0].nbeventexpected = 23; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][1].code = "20011"; listevent[j][1].nbeventexpected = 22; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][2].code = "20012"; listevent[j][2].nbeventexpected = 22; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][3].code = "20020"; listevent[j][3].nbeventexpected = 40; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][4].code = "20021"; listevent[j][4].nbeventexpected = 40; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][5].code = "20022"; listevent[j][5].nbeventexpected = 40; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][6].code = "20023"; listevent[j][6].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][7].code = "20030"; listevent[j][7].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][8].code = "20031"; listevent[j][8].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][9].code = "20033"; listevent[j][9].nbeventexpected = 20; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][10].code = "20034"; listevent[j][10].nbeventexpected = 20; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][11].code = "20035"; listevent[j][11].nbeventexpected = 20; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][12].code = "20040"; listevent[j][12].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][13].code = "20041"; listevent[j][13].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][14].code = "20042"; listevent[j][14].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][15].code = "20043"; listevent[j][15].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][16].code = "20050"; listevent[j][16].nbeventexpected = 20; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][17].code = "20051"; listevent[j][17].nbeventexpected = 20; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][18].code = "20052"; listevent[j][18].nbeventexpected = 20; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][19].code = "20053"; listevent[j][19].nbeventexpected = 20; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][20].code = "20054"; listevent[j][20].nbeventexpected = 40; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][21].code = "20060"; listevent[j][21].nbeventexpected = 4; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][22].code = "20061"; listevent[j][22].nbeventexpected = 4; } nbdiffevent++; } /* The main function */ int main() { parseenv(); run_eztrace(); fetch_traces(); /* Before checking the bintrace we need to init the structur of event */ init_tabevent(); /*After that we retrieve the event of the trace */ parseevent(); testpthread(); // Check for eztrace_convert success run_eztrace_convert(); clean(); return EXIT_SUCCESS; } eztrace-1.1-7/test/automake/PaxHeaders.7332/testmemory.c0000644000000000000000000000013212544237152017775 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.861986926 30 ctime=1508162368.785999238 eztrace-1.1-7/test/automake/testmemory.c0000644000175000017500000000245712544237152021174 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #define nproc 1 #define nameprog "test/memory/memory" #define NBMAXEVENT 55 #define NBMAXREALEVENT 85 #define module "memory" #define path "/src/modules/memory/.libs" #include "testcommon.h" /* Function use to init the event structure */ void init_tabevent() { int j; nbdiffevent = 0; for (j = 0; j < nproc; j++) { listevent[j][0].code = "50001"; listevent[j][0].nbeventexpected = 40; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][1].code = "50002"; listevent[j][1].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][2].code = "50003"; listevent[j][2].nbeventexpected = 10; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][3].code = "50010"; listevent[j][3].nbeventexpected = 40; } nbdiffevent++; } /* The main function */ int main() { parseenv(); run_eztrace(); fetch_traces(); /* Before checking the bintrace we need to init the structur of event */ init_tabevent(); /*After that we retrieve the event of the trace */ parseevent(); // Check for eztrace_convert success run_eztrace_convert(); clean(); return EXIT_SUCCESS; } eztrace-1.1-7/test/automake/PaxHeaders.7332/testopenmplock.c0000644000000000000000000000013212544237152020634 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.861986926 30 ctime=1508162368.789999587 eztrace-1.1-7/test/automake/testopenmplock.c0000644000175000017500000001755312544237152022036 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #define nproc 1 #define nameprog "test/pthread/cond" #define NBMAXEVENT 55 #define NBMAXREALEVENT 85 #define module "pthread" #define path "/src/modules/omp/.libs" #include "testcommon.h" /* Function use to init the event structure */ void init_tabevent() { int j; nbdiffevent = 0; for (j = 0; j < nproc; j++) { listevent[j][0].code = "10001"; listevent[j][0].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][1].code = "10002"; listevent[j][1].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][2].code = "10003"; listevent[j][2].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][3].code = "10004"; listevent[j][3].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][4].code = "10005"; listevent[j][4].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][5].code = "10006"; listevent[j][5].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][6].code = "10007"; listevent[j][6].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][7].code = "1ffff"; listevent[j][7].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][8].code = "10010"; listevent[j][8].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][9].code = "10011"; listevent[j][9].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][10].code = "10020"; listevent[j][10].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][11].code = "10021"; listevent[j][11].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][12].code = "10030"; listevent[j][12].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][13].code = "10031"; listevent[j][13].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][14].code = "10040"; listevent[j][14].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][15].code = "10041"; listevent[j][15].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][16].code = "10042"; listevent[j][16].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][17].code = "10043"; listevent[j][17].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][18].code = "10050"; listevent[j][18].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][19].code = "10051"; listevent[j][19].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][20].code = "10060"; listevent[j][20].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][21].code = "10061"; listevent[j][21].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][22].code = "10070"; listevent[j][22].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][23].code = "10071"; listevent[j][23].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][24].code = "10072"; listevent[j][24].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][25].code = "10073"; listevent[j][25].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][26].code = "10080"; listevent[j][26].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][27].code = "10081"; listevent[j][27].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][28].code = "10082"; listevent[j][28].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][29].code = "10083"; listevent[j][29].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][30].code = "10090"; listevent[j][30].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][31].code = "10091"; listevent[j][31].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][32].code = "10092"; listevent[j][32].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][33].code = "10093"; listevent[j][33].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][34].code = "100a0"; listevent[j][34].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][35].code = "100a1"; listevent[j][35].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][36].code = "100b0"; listevent[j][36].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][37].code = "100b1"; listevent[j][37].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][38].code = "100b2"; listevent[j][38].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][39].code = "100b3"; listevent[j][39].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][40].code = "100b4"; listevent[j][40].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][41].code = "100b5"; listevent[j][41].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][42].code = "100b6"; listevent[j][42].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][43].code = "100b7"; listevent[j][43].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][44].code = "100b8"; listevent[j][44].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][45].code = "100b9"; listevent[j][45].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][46].code = "100ba"; listevent[j][46].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][47].code = "10101"; listevent[j][47].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][48].code = "10102"; listevent[j][48].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][49].code = "10103"; listevent[j][49].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][50].code = "10104"; listevent[j][50].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][51].code = "10111"; listevent[j][51].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][52].code = "10112"; listevent[j][52].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][53].code = "10113"; listevent[j][53].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][54].code = "10114"; listevent[j][54].nbeventexpected = 0; } nbdiffevent++; } /* The main function */ int main() { parseenv(); run_eztrace(); fetch_traces(); /* Before checking the bintrace we need to init the structur of event */ init_tabevent(); /*After that we retrieve the event of the trace */ parseevent(); // Check for eztrace_convert success run_eztrace_convert(); clean(); return EXIT_SUCCESS; } eztrace-1.1-7/test/automake/PaxHeaders.7332/testpthreadcond.c0000644000000000000000000000013212544237152020760 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.861986926 30 ctime=1508162368.798000286 eztrace-1.1-7/test/automake/testpthreadcond.c0000644000175000017500000000737712544237152022165 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #define nproc 1 #define nameprog "test/pthread/cond" #define NBMAXEVENT 55 #define NBMAXREALEVENT 85 #define module "pthread" #define path "/src/modules/pthread/.libs" #include "testcommon.h" /* Function use to init the event structure */ void init_tabevent() { int j; nbdiffevent = 0; for (j = 0; j < nproc; j++) { listevent[j][0].code = "20010"; listevent[j][0].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][1].code = "20011"; listevent[j][1].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][2].code = "20012"; listevent[j][2].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][3].code = "20020"; listevent[j][3].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][4].code = "20021"; listevent[j][4].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][5].code = "20022"; listevent[j][5].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][6].code = "20023"; listevent[j][6].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][7].code = "20030"; listevent[j][7].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][8].code = "20031"; listevent[j][8].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][9].code = "20033"; listevent[j][9].nbeventexpected = 1; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][10].code = "20034"; listevent[j][10].nbeventexpected = 1; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][11].code = "20035"; listevent[j][11].nbeventexpected = 1; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][12].code = "20040"; listevent[j][12].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][13].code = "20041"; listevent[j][13].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][14].code = "20042"; listevent[j][14].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][15].code = "20043"; listevent[j][15].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][16].code = "20050"; listevent[j][16].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][17].code = "20051"; listevent[j][17].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][18].code = "20052"; listevent[j][18].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][19].code = "20053"; listevent[j][19].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][20].code = "20054"; listevent[j][20].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][21].code = "20060"; listevent[j][21].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][22].code = "20061"; listevent[j][22].nbeventexpected = 0; } nbdiffevent++; } /* The main function */ int main() { parseenv(); run_eztrace(); fetch_traces(); /* Before checking the bintrace we need to init the structur of event */ init_tabevent(); /*After that we retrieve the event of the trace */ parseevent(); testpthread(); // Check for eztrace_convert success run_eztrace_convert(); clean(); return EXIT_SUCCESS; } eztrace-1.1-7/test/automake/PaxHeaders.7332/testpthreaddummy_thread.c0000644000000000000000000000013212544237152022517 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.861986926 30 ctime=1508162368.802000635 eztrace-1.1-7/test/automake/testpthreaddummy_thread.c0000644000175000017500000000741512544237152023715 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #define nproc 1 #define nameprog "test/pthread/dummy_thread" #define NBMAXEVENT 55 #define NBMAXREALEVENT 85 #define module "pthread" #define path "/src/modules/pthread/.libs" #include "testcommon.h" /* Function use to init the event structure */ void init_tabevent() { int j; nbdiffevent = 0; for (j = 0; j < nproc; j++) { listevent[j][0].code = "20010"; listevent[j][0].nbeventexpected = 23; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][1].code = "20011"; listevent[j][1].nbeventexpected = 22; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][2].code = "20012"; listevent[j][2].nbeventexpected = 22; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][3].code = "20020"; listevent[j][3].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][4].code = "20021"; listevent[j][4].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][5].code = "20022"; listevent[j][5].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][6].code = "20023"; listevent[j][6].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][7].code = "20030"; listevent[j][7].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][8].code = "20031"; listevent[j][8].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][9].code = "20033"; listevent[j][9].nbeventexpected = 20; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][10].code = "20034"; listevent[j][10].nbeventexpected = 20; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][11].code = "20035"; listevent[j][11].nbeventexpected = 20; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][12].code = "20040"; listevent[j][12].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][13].code = "20041"; listevent[j][13].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][14].code = "20042"; listevent[j][14].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][15].code = "20043"; listevent[j][15].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][16].code = "20050"; listevent[j][16].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][17].code = "20051"; listevent[j][17].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][18].code = "20052"; listevent[j][18].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][19].code = "20053"; listevent[j][19].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][20].code = "20054"; listevent[j][20].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][21].code = "20060"; listevent[j][21].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][22].code = "20061"; listevent[j][22].nbeventexpected = 0; } nbdiffevent++; } /* The main function */ int main() { parseenv(); run_eztrace(); fetch_traces(); /* Before checking the bintrace we need to init the structur of event */ init_tabevent(); /*After that we retrieve the event of the trace */ parseevent(); testpthread(); // Check for eztrace_convert success run_eztrace_convert(); clean(); return EXIT_SUCCESS; } eztrace-1.1-7/test/automake/PaxHeaders.7332/Makefile.am0000644000000000000000000000013113012560437017450 xustar0029 mtime=1479205151.30472761 30 atime=1508162220.241852448 30 ctime=1508162368.777998538 eztrace-1.1-7/test/automake/Makefile.am0000644000175000017500000000320313012560437020636 0ustar00trahaytrahay00000000000000# Copyright © CNRS, INRIA, Université Bordeaux 1 # See COPYING in top-level directory. if AMEXTERNLITL TLCFLAGS=$(TL_CPPFLAGS) TLLDFLAGS=$(TL_LDFLAGS) TLLIBADD=$(TL_LIB) else # AMEXTERNLITL TLCFLAGS = -I$(top_srcdir)/extlib/litl/src -I$(top_builddir)/extlib/litl/src TLLDFLAGS = $(top_builddir)/extlib/litl/src/liblitl.la TLLIBADD=$(TL_LIB) endif # AMINTERNLITL if AMEXTERNGTG GTGCFLAGS=$(GTG_CPPFLAGS) GTGLDFLAGS=$(GTG_LDFLAGS) GTGDEPENDENCIES = GTGLIBADD=$(GTG_LIB) else GTGCFLAGS = -I$(top_srcdir)/extlib/gtg/inc -I$(top_builddir)/extlib/gtg GTGLDFLAGS = $(top_builddir)/extlib/gtg/src/libgtg.la GTGDEPENDENCIES = $(GTGLDFLAGS) GTGLIBADD= endif if GTG_OUT_OF_ORDER GTGCFLAGS+=-DGTG_OUT_OF_ORDER endif AM_CFLAGS = -W -Wall -Wextra -I$(srcdir)/../../core/ -I$(top_builddir)/src/core -I$(top_builddir)/src/pptrace $(TLCFLAGS) AM_CPPFLAGS = $(TLCFLAGS) AM_LDFLAGS= $(TLLDFLAGS) CTESTS = teststdio \ testmemory \ teststatic if OPENMP_FOUND CTESTS += testopenmpsimple testopenmplock testopenmpnestlock endif if USE_MPI CTESTS += testmpiring endif if USE_PTHREAD CTESTS += testpthreaddummy_thread testpthreadtest testpthreadcond #testpthreadcond_SOURCES = testpthreadcond.c #testpthreadcond_DEPENDENCIES=../pthread/cond #testpthreaddummy_thread_SOURCES = testpthreaddummy_thread.c #testpthreaddummy_thread_DEPENDENCIES=../pthread/dummy_thread #testpthreadtest_SOURCES = testpthreadtest.c #testpthreadtest_DEPENDENCIES=../pthread/test_pthread endif check_PROGRAMS = $(CTESTS) TESTS = $(CTESTS) #teststdio_SOURCES = teststdio.c #teststdio_DEPENDENCIES=../stdio/stdio #teststatic_SOURCES = teststatic.c #teststatic_DEPENDENCIES=../static/static eztrace-1.1-7/test/automake/PaxHeaders.7332/testopenmpsimple.c0000644000000000000000000000013113012560437021170 xustar0029 mtime=1479205151.30472761 30 atime=1507797515.861986926 30 ctime=1508162368.793999936 eztrace-1.1-7/test/automake/testopenmpsimple.c0000644000175000017500000001763313012560437022372 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #define eztrace_extra "OMP_NUM_THREADS=2 " #define nproc 1 #define nameprog "test/openmp/openmp_simple" #define NBMAXEVENT 55 #define NBMAXREALEVENT 85 #define module "omp" #define path "/src/modules/omp/.libs" #include "testcommon.h" /* Function use to init the event structure */ void init_tabevent() { int j; nbdiffevent = 0; for (j = 0; j < nproc; j++) { listevent[j][0].code = "10001"; listevent[j][0].nbeventexpected = 9; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][1].code = "10002"; listevent[j][1].nbeventexpected = 18; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][2].code = "10003"; listevent[j][2].nbeventexpected = 18; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][3].code = "10004"; listevent[j][3].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][4].code = "10005"; listevent[j][4].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][5].code = "10006"; listevent[j][5].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][6].code = "10007"; listevent[j][6].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][7].code = "1ffff"; listevent[j][7].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][8].code = "10010"; listevent[j][8].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][9].code = "10011"; listevent[j][9].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][10].code = "10020"; listevent[j][10].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][11].code = "10021"; listevent[j][11].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][12].code = "10030"; listevent[j][12].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][13].code = "10031"; listevent[j][13].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][14].code = "10040"; listevent[j][14].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][15].code = "10041"; listevent[j][15].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][16].code = "10042"; listevent[j][16].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][17].code = "10043"; listevent[j][17].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][18].code = "10050"; listevent[j][18].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][19].code = "10051"; listevent[j][19].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][20].code = "10060"; listevent[j][20].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][21].code = "10061"; listevent[j][21].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][22].code = "10070"; listevent[j][22].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][23].code = "10071"; listevent[j][23].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][24].code = "10072"; listevent[j][24].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][25].code = "10073"; listevent[j][25].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][26].code = "10080"; listevent[j][26].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][27].code = "10081"; listevent[j][27].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][28].code = "10082"; listevent[j][28].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][29].code = "10083"; listevent[j][29].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][30].code = "10090"; listevent[j][30].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][31].code = "10091"; listevent[j][31].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][32].code = "10092"; listevent[j][32].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][33].code = "10093"; listevent[j][33].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][34].code = "100a0"; listevent[j][34].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][35].code = "100a1"; listevent[j][35].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][36].code = "100b0"; listevent[j][36].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][37].code = "100b1"; listevent[j][37].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][38].code = "100b2"; listevent[j][38].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][39].code = "100b3"; listevent[j][39].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][40].code = "100b4"; listevent[j][40].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][41].code = "100b5"; listevent[j][41].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][42].code = "100b6"; listevent[j][42].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][43].code = "100b7"; listevent[j][43].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][44].code = "100b8"; listevent[j][44].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][45].code = "100b9"; listevent[j][45].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][46].code = "100ba"; listevent[j][46].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][47].code = "10101"; listevent[j][47].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][48].code = "10102"; listevent[j][48].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][49].code = "10103"; listevent[j][49].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][50].code = "10104"; listevent[j][50].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][51].code = "10111"; listevent[j][51].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][52].code = "10112"; listevent[j][52].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][53].code = "10113"; listevent[j][53].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][54].code = "10114"; listevent[j][54].nbeventexpected = 0; } nbdiffevent++; } /* The main function */ int main() { parseenv(); run_eztrace(); fetch_traces(); /* Before checking the bintrace we need to init the structur of event */ init_tabevent(); /*After that we retrieve the event of the trace */ parseevent(); // Check for eztrace_convert success run_eztrace_convert(); clean(); return EXIT_SUCCESS; } eztrace-1.1-7/test/automake/PaxHeaders.7332/teststdio.c0000644000000000000000000000013212544237152017607 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.861986926 30 ctime=1508162368.814001684 eztrace-1.1-7/test/automake/teststdio.c0000644000175000017500000001574112544237152021006 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #define nproc 1 #define nameprog "test/stdio/stdio" #define NBMAXEVENT 50 #define NBMAXREALEVENT 50 #define module "stdio" #define path "/src/modules/stdio/.libs" #include "testcommon.h" /* Function use to init the event structure */ void init_tabevent() { int j; nbdiffevent = 0; for (j = 0; j < nproc; j++) { listevent[j][0].code = "30110"; listevent[j][0].nbeventexpected = 20; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][1].code = "30120"; listevent[j][1].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][2].code = "30130"; listevent[j][2].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][3].code = "30140"; listevent[j][3].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][4].code = "30210"; listevent[j][4].nbeventexpected = 21; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][5].code = "30220"; listevent[j][5].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][6].code = "30230"; listevent[j][6].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][7].code = "30240"; listevent[j][7].nbeventexpected = 0; // (debug > 0) ? 1 : 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][8].code = "30310"; listevent[j][8].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][9].code = "30320"; listevent[j][9].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][10].code = "30330"; listevent[j][10].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][11].code = "30340"; listevent[j][11].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][12].code = "30350"; listevent[j][12].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][13].code = "30111"; listevent[j][13].nbeventexpected = 20; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][14].code = "30121"; listevent[j][14].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][15].code = "30131"; listevent[j][15].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][16].code = "30141"; listevent[j][16].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][17].code = "30211"; listevent[j][17].nbeventexpected = 21; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][18].code = "30221"; listevent[j][18].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][19].code = "30231"; listevent[j][19].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][20].code = "30241"; listevent[j][20].nbeventexpected = 0; // (debug > 0) ? 1 : 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][21].code = "30311"; listevent[j][21].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][22].code = "30321"; listevent[j][22].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][23].code = "30331"; listevent[j][23].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][24].code = "30341"; listevent[j][24].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][25].code = "30351"; listevent[j][25].nbeventexpected = 0; } nbdiffevent++; } /*Function use to make some test on stdio event */ void teststdio() { if (listevent[0][0].realnbofevent != listevent[0][13].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][0].code); exit(EXIT_FAILURE); } if (listevent[0][1].realnbofevent != listevent[0][14].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][1].code); exit(EXIT_FAILURE); } if (listevent[0][2].realnbofevent != listevent[0][15].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][2].code); exit(EXIT_FAILURE); } if (listevent[0][3].realnbofevent != listevent[0][16].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][3].code); exit(EXIT_FAILURE); } if (listevent[0][4].realnbofevent != listevent[0][17].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][4].code); exit(EXIT_FAILURE); } if (listevent[0][5].realnbofevent != listevent[0][18].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][5].code); exit(EXIT_FAILURE); } if (listevent[0][6].realnbofevent != listevent[0][19].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][6].code); exit(EXIT_FAILURE); } if (listevent[0][7].realnbofevent != listevent[0][20].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][7].code); exit(EXIT_FAILURE); } if (listevent[0][8].realnbofevent != listevent[0][21].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][8].code); exit(EXIT_FAILURE); } if (listevent[0][9].realnbofevent != listevent[0][22].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][9].code); exit(EXIT_FAILURE); } if (listevent[0][10].realnbofevent != listevent[0][23].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][10].code); exit(EXIT_FAILURE); } if (listevent[0][11].realnbofevent != listevent[0][24].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][11].code); exit(EXIT_FAILURE); } if (listevent[0][12].realnbofevent != listevent[0][25].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][12].code); exit(EXIT_FAILURE); } if (debug >= DEBUG_INFO) fprintf(stderr, "test stdio finished\n"); } /* The main function */ int main() { parseenv(); run_eztrace(); fetch_traces(); /* Before checking the bintrace we need to init the structur of event */ init_tabevent(); /*After that we retrieve the event of the trace */ parseevent(); teststdio(); // Check for eztrace_convert success run_eztrace_convert(); clean(); return EXIT_SUCCESS; } eztrace-1.1-7/test/automake/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135254017463 xustar0030 mtime=1508162220.277855096 30 atime=1508162286.891049394 30 ctime=1508162368.777998538 eztrace-1.1-7/test/automake/Makefile.in0000644000175000017500000012376113171135254020664 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright © CNRS, INRIA, Université Bordeaux 1 # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @GTG_OUT_OF_ORDER_TRUE@am__append_1 = -DGTG_OUT_OF_ORDER @OPENMP_FOUND_TRUE@am__append_2 = testopenmpsimple testopenmplock testopenmpnestlock @USE_MPI_TRUE@am__append_3 = testmpiring @USE_PTHREAD_TRUE@am__append_4 = testpthreaddummy_thread testpthreadtest testpthreadcond check_PROGRAMS = $(am__EXEEXT_4) TESTS = $(am__EXEEXT_4) subdir = test/automake ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = testcommon.h CONFIG_CLEAN_VPATH_FILES = @OPENMP_FOUND_TRUE@am__EXEEXT_1 = testopenmpsimple$(EXEEXT) \ @OPENMP_FOUND_TRUE@ testopenmplock$(EXEEXT) \ @OPENMP_FOUND_TRUE@ testopenmpnestlock$(EXEEXT) @USE_MPI_TRUE@am__EXEEXT_2 = testmpiring$(EXEEXT) @USE_PTHREAD_TRUE@am__EXEEXT_3 = testpthreaddummy_thread$(EXEEXT) \ @USE_PTHREAD_TRUE@ testpthreadtest$(EXEEXT) \ @USE_PTHREAD_TRUE@ testpthreadcond$(EXEEXT) am__EXEEXT_4 = teststdio$(EXEEXT) testmemory$(EXEEXT) \ teststatic$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) \ $(am__EXEEXT_3) testmemory_SOURCES = testmemory.c testmemory_OBJECTS = testmemory.$(OBJEXT) testmemory_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = testmpiring_SOURCES = testmpiring.c testmpiring_OBJECTS = testmpiring.$(OBJEXT) testmpiring_LDADD = $(LDADD) testopenmplock_SOURCES = testopenmplock.c testopenmplock_OBJECTS = testopenmplock.$(OBJEXT) testopenmplock_LDADD = $(LDADD) testopenmpnestlock_SOURCES = testopenmpnestlock.c testopenmpnestlock_OBJECTS = testopenmpnestlock.$(OBJEXT) testopenmpnestlock_LDADD = $(LDADD) testopenmpsimple_SOURCES = testopenmpsimple.c testopenmpsimple_OBJECTS = testopenmpsimple.$(OBJEXT) testopenmpsimple_LDADD = $(LDADD) testpthreadcond_SOURCES = testpthreadcond.c testpthreadcond_OBJECTS = testpthreadcond.$(OBJEXT) testpthreadcond_LDADD = $(LDADD) testpthreaddummy_thread_SOURCES = testpthreaddummy_thread.c testpthreaddummy_thread_OBJECTS = testpthreaddummy_thread.$(OBJEXT) testpthreaddummy_thread_LDADD = $(LDADD) testpthreadtest_SOURCES = testpthreadtest.c testpthreadtest_OBJECTS = testpthreadtest.$(OBJEXT) testpthreadtest_LDADD = $(LDADD) teststatic_SOURCES = teststatic.c teststatic_OBJECTS = teststatic.$(OBJEXT) teststatic_LDADD = $(LDADD) teststdio_SOURCES = teststdio.c teststdio_OBJECTS = teststdio.$(OBJEXT) teststdio_LDADD = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = testmemory.c testmpiring.c testopenmplock.c \ testopenmpnestlock.c testopenmpsimple.c testpthreadcond.c \ testpthreaddummy_thread.c testpthreadtest.c teststatic.c \ teststdio.c DIST_SOURCES = testmemory.c testmpiring.c testopenmplock.c \ testopenmpnestlock.c testopenmpsimple.c testpthreadcond.c \ testpthreaddummy_thread.c testpthreadtest.c teststatic.c \ teststdio.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) AM_RECURSIVE_TARGETS = check recheck TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testcommon.h.in \ $(top_srcdir)/depcomp $(top_srcdir)/test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUDA_CFLAGS = @CUDA_CFLAGS@ CUDA_LDFLAGS = @CUDA_LDFLAGS@ CUDA_LIBS = @CUDA_LIBS@ CUDA_ROOT = @CUDA_ROOT@ CUPTI_CFLAGS = @CUPTI_CFLAGS@ CUPTI_LDFLAGS = @CUPTI_LDFLAGS@ CUPTI_LIBS = @CUPTI_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ DYNLIB_EXT = @DYNLIB_EXT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ GTGDIR = @GTGDIR@ GTG_CPPFLAGS = @GTG_CPPFLAGS@ GTG_DEPENDENCIES = @GTG_DEPENDENCIES@ GTG_EXT_CPPFLAGS = @GTG_EXT_CPPFLAGS@ GTG_EXT_LDFLAGS = @GTG_EXT_LDFLAGS@ GTG_EXT_LIB = @GTG_EXT_LIB@ GTG_LDFLAGS = @GTG_LDFLAGS@ GTG_LIB = @GTG_LIB@ GTG_OUT_OF_ORDER = @GTG_OUT_OF_ORDER@ HAVE_ENV = @HAVE_ENV@ HAVE_LIBBACKTRACE = @HAVE_LIBBACKTRACE@ HAVE_LIBOPCODE = @HAVE_LIBOPCODE@ HAVE_PRCTL_H = @HAVE_PRCTL_H@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LD_LIBRARY_PATH_NAME = @LD_LIBRARY_PATH_NAME@ LD_PRELOAD_NAME = @LD_PRELOAD_NAME@ LIBBACKTRACE_CPPFLAGS = @LIBBACKTRACE_CPPFLAGS@ LIBBACKTRACE_LDFLAGS = @LIBBACKTRACE_LDFLAGS@ LIBBACKTRACE_LIB = @LIBBACKTRACE_LIB@ LIBBACKTRACE_ROOT = @LIBBACKTRACE_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LITL_PRINT = @LITL_PRINT@ LITL_ROOT = @LITL_ROOT@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPI_CFLAGS = @MPI_CFLAGS@ MPI_EVENT_ID = @MPI_EVENT_ID@ MPI_INC = @MPI_INC@ MPI_LDFLAGS = @MPI_LDFLAGS@ MPI_MODULE_NAME = @MPI_MODULE_NAME@ MPI_ROOT = @MPI_ROOT@ NM = @NM@ NMEDIT = @NMEDIT@ NVCC = @NVCC@ NVCCFLAGS = @NVCCFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAPIDIR = @PAPIDIR@ PAPI_CPPFLAGS = @PAPI_CPPFLAGS@ PAPI_ENABLED = @PAPI_ENABLED@ PAPI_LDFLAGS = @PAPI_LDFLAGS@ PAPI_LIBDIR = @PAPI_LIBDIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PPTRACE_BINARY_TYPE = @PPTRACE_BINARY_TYPE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STARPU_CFLAGS = @STARPU_CFLAGS@ STARPU_CPPFLAGS = @STARPU_CPPFLAGS@ STARPU_LDFLAGS = @STARPU_LDFLAGS@ STARPU_LIBS = @STARPU_LIBS@ STARPU_ROOT = @STARPU_ROOT@ STRIP = @STRIP@ TARGET_BITS = @TARGET_BITS@ TL_CPPFLAGS = @TL_CPPFLAGS@ TL_EXT_CPPFLAGS = @TL_EXT_CPPFLAGS@ TL_EXT_LDFLAGS = @TL_EXT_LDFLAGS@ TL_EXT_LIB = @TL_EXT_LIB@ TL_LDFLAGS = @TL_LDFLAGS@ TL_LIB = @TL_LIB@ USE_BIN_INSTRUMENTATION = @USE_BIN_INSTRUMENTATION@ USE_CUDADIR_FROM_USER = @USE_CUDADIR_FROM_USER@ USE_GETTID = @USE_GETTID@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ USE_PAPIDIR_FROM_USER = @USE_PAPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @AMEXTERNLITL_FALSE@TLCFLAGS = -I$(top_srcdir)/extlib/litl/src -I$(top_builddir)/extlib/litl/src @AMEXTERNLITL_TRUE@TLCFLAGS = $(TL_CPPFLAGS) @AMEXTERNLITL_FALSE@TLLDFLAGS = $(top_builddir)/extlib/litl/src/liblitl.la @AMEXTERNLITL_TRUE@TLLDFLAGS = $(TL_LDFLAGS) @AMEXTERNLITL_FALSE@TLLIBADD = $(TL_LIB) @AMEXTERNLITL_TRUE@TLLIBADD = $(TL_LIB) @AMEXTERNGTG_FALSE@GTGCFLAGS = -I$(top_srcdir)/extlib/gtg/inc \ @AMEXTERNGTG_FALSE@ -I$(top_builddir)/extlib/gtg \ @AMEXTERNGTG_FALSE@ $(am__append_1) @AMEXTERNGTG_TRUE@GTGCFLAGS = $(GTG_CPPFLAGS) $(am__append_1) @AMEXTERNGTG_FALSE@GTGLDFLAGS = $(top_builddir)/extlib/gtg/src/libgtg.la @AMEXTERNGTG_TRUE@GTGLDFLAGS = $(GTG_LDFLAGS) @AMEXTERNGTG_FALSE@GTGDEPENDENCIES = $(GTGLDFLAGS) @AMEXTERNGTG_TRUE@GTGDEPENDENCIES = @AMEXTERNGTG_FALSE@GTGLIBADD = @AMEXTERNGTG_TRUE@GTGLIBADD = $(GTG_LIB) AM_CFLAGS = -W -Wall -Wextra -I$(srcdir)/../../core/ -I$(top_builddir)/src/core -I$(top_builddir)/src/pptrace $(TLCFLAGS) AM_CPPFLAGS = $(TLCFLAGS) AM_LDFLAGS = $(TLLDFLAGS) CTESTS = teststdio testmemory teststatic $(am__append_2) \ $(am__append_3) $(am__append_4) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/automake/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu test/automake/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testcommon.h: $(top_builddir)/config.status $(srcdir)/testcommon.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list testmemory$(EXEEXT): $(testmemory_OBJECTS) $(testmemory_DEPENDENCIES) $(EXTRA_testmemory_DEPENDENCIES) @rm -f testmemory$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testmemory_OBJECTS) $(testmemory_LDADD) $(LIBS) testmpiring$(EXEEXT): $(testmpiring_OBJECTS) $(testmpiring_DEPENDENCIES) $(EXTRA_testmpiring_DEPENDENCIES) @rm -f testmpiring$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testmpiring_OBJECTS) $(testmpiring_LDADD) $(LIBS) testopenmplock$(EXEEXT): $(testopenmplock_OBJECTS) $(testopenmplock_DEPENDENCIES) $(EXTRA_testopenmplock_DEPENDENCIES) @rm -f testopenmplock$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testopenmplock_OBJECTS) $(testopenmplock_LDADD) $(LIBS) testopenmpnestlock$(EXEEXT): $(testopenmpnestlock_OBJECTS) $(testopenmpnestlock_DEPENDENCIES) $(EXTRA_testopenmpnestlock_DEPENDENCIES) @rm -f testopenmpnestlock$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testopenmpnestlock_OBJECTS) $(testopenmpnestlock_LDADD) $(LIBS) testopenmpsimple$(EXEEXT): $(testopenmpsimple_OBJECTS) $(testopenmpsimple_DEPENDENCIES) $(EXTRA_testopenmpsimple_DEPENDENCIES) @rm -f testopenmpsimple$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testopenmpsimple_OBJECTS) $(testopenmpsimple_LDADD) $(LIBS) testpthreadcond$(EXEEXT): $(testpthreadcond_OBJECTS) $(testpthreadcond_DEPENDENCIES) $(EXTRA_testpthreadcond_DEPENDENCIES) @rm -f testpthreadcond$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testpthreadcond_OBJECTS) $(testpthreadcond_LDADD) $(LIBS) testpthreaddummy_thread$(EXEEXT): $(testpthreaddummy_thread_OBJECTS) $(testpthreaddummy_thread_DEPENDENCIES) $(EXTRA_testpthreaddummy_thread_DEPENDENCIES) @rm -f testpthreaddummy_thread$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testpthreaddummy_thread_OBJECTS) $(testpthreaddummy_thread_LDADD) $(LIBS) testpthreadtest$(EXEEXT): $(testpthreadtest_OBJECTS) $(testpthreadtest_DEPENDENCIES) $(EXTRA_testpthreadtest_DEPENDENCIES) @rm -f testpthreadtest$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testpthreadtest_OBJECTS) $(testpthreadtest_LDADD) $(LIBS) teststatic$(EXEEXT): $(teststatic_OBJECTS) $(teststatic_DEPENDENCIES) $(EXTRA_teststatic_DEPENDENCIES) @rm -f teststatic$(EXEEXT) $(AM_V_CCLD)$(LINK) $(teststatic_OBJECTS) $(teststatic_LDADD) $(LIBS) teststdio$(EXEEXT): $(teststdio_OBJECTS) $(teststdio_DEPENDENCIES) $(EXTRA_teststdio_DEPENDENCIES) @rm -f teststdio$(EXEEXT) $(AM_V_CCLD)$(LINK) $(teststdio_OBJECTS) $(teststdio_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testmemory.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testmpiring.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testopenmplock.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testopenmpnestlock.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testopenmpsimple.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testpthreadcond.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testpthreaddummy_thread.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testpthreadtest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/teststatic.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/teststdio.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ if test -n "$(PACKAGE_BUGREPORT)"; then \ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all $(check_PROGRAMS) @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? teststdio.log: teststdio$(EXEEXT) @p='teststdio$(EXEEXT)'; \ b='teststdio'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) testmemory.log: testmemory$(EXEEXT) @p='testmemory$(EXEEXT)'; \ b='testmemory'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) teststatic.log: teststatic$(EXEEXT) @p='teststatic$(EXEEXT)'; \ b='teststatic'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) testopenmpsimple.log: testopenmpsimple$(EXEEXT) @p='testopenmpsimple$(EXEEXT)'; \ b='testopenmpsimple'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) testopenmplock.log: testopenmplock$(EXEEXT) @p='testopenmplock$(EXEEXT)'; \ b='testopenmplock'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) testopenmpnestlock.log: testopenmpnestlock$(EXEEXT) @p='testopenmpnestlock$(EXEEXT)'; \ b='testopenmpnestlock'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) testmpiring.log: testmpiring$(EXEEXT) @p='testmpiring$(EXEEXT)'; \ b='testmpiring'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) testpthreaddummy_thread.log: testpthreaddummy_thread$(EXEEXT) @p='testpthreaddummy_thread$(EXEEXT)'; \ b='testpthreaddummy_thread'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) testpthreadtest.log: testpthreadtest$(EXEEXT) @p='testpthreadtest$(EXEEXT)'; \ b='testpthreadtest'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) testpthreadcond.log: testpthreadcond$(EXEEXT) @p='testpthreadcond$(EXEEXT)'; \ b='testpthreadcond'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ recheck tags tags-am uninstall uninstall-am .PRECIOUS: Makefile #teststdio_SOURCES = teststdio.c #teststdio_DEPENDENCIES=../stdio/stdio #teststatic_SOURCES = teststatic.c #teststatic_DEPENDENCIES=../static/static # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/test/automake/PaxHeaders.7332/testcommon.h.in0000644000000000000000000000013213064472165020372 xustar0030 mtime=1490187381.625677685 30 atime=1508162286.903050374 30 ctime=1508162368.781998887 eztrace-1.1-7/test/automake/testcommon.h.in0000644000175000017500000003103513064472165021563 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ // A refactoring of automake tests #ifndef __TEST_COMMON_H #define __TEST_COMMON_H #ifndef eztrace_extra #define eztrace_extra #endif #include #include #include #include #include #include #include #include #include #define TOP_BUILDDIR "@abs_top_builddir@/" #define EZTRACE "@abs_top_builddir@/src/core/eztrace" #define EZTRACE_CONVERT "@abs_top_builddir@/src/core/eztrace_convert" #define TL_READ "@LITL_PRINT@" char pwd[512]; char user[32]; int debug = 3; char trace[nproc][256]; pid_t pid; int nbdiffevent; char filecode[nproc][25]; char fileref[nproc][25]; char filetime[nproc][25]; char filearg1[nproc][25]; char filearg2[nproc][25]; /* struct used in order to record event */ struct realevent { int proc; unsigned long long int time; int arg1, arg2; }; struct event { char* code; int nbeventexpected; int realnbofevent; struct realevent tab_realevent[NBMAXREALEVENT]; }; struct event listevent[nproc][NBMAXEVENT]; #define DEBUG_INFO 1 #define DEBUG_VERBOSE 2 #define DEBUG_ALL 3 #ifndef nb_modules #define nb_modules 1 #endif char* libpath; #if nb_modules > 1 void __set_libpath() __attribute__((constructor)); void __set_libpath() { // handle the situation when more than one module is required char arr[512]; // get the old path and complete it by adding TOP_BUILDDIR strcpy(arr, path); libpath = malloc(sizeof(arr) + nb_modules * sizeof(TOP_BUILDDIR)); char *ptr = strtok(arr, ":"); strcat(libpath, TOP_BUILDDIR); strcat(libpath, (const char *) ptr); ptr = strtok(NULL, ":"); while (ptr != NULL) { strcat(libpath, ":"); strcat(libpath, TOP_BUILDDIR); strcat(libpath, (const char *) ptr); ptr = strtok(NULL, ":"); } } #endif /* function that delete all files created */ void clean() { int j; for (j = 0; j < nproc; j++) { unlink(trace[j]); unlink(filecode[j]); unlink(fileref[j]); unlink(filetime[j]); unlink(filearg1[j]); unlink(filearg2[j]); unlink("eztrace_output.trace"); } if (debug >= DEBUG_VERBOSE) fprintf(stderr, "all files deleted\n"); } /* function that return the number of the event choose for each proc, also complete the table of real event */ int getnbevent(int index, int numproc) { int i; FILE *fic, *fic2, *fic3, *fic4; int nb_event = 0; char ligne[128], ligne2[128], ligne3[128], ligne4[128]; char buffertime[25]; unsigned long long int time; // opening files fic = fopen(filecode[numproc], "r"); // ouvrir en lecture fic2 = fopen(filetime[numproc], "r"); fic3 = fopen(filearg1[numproc], "r"); fic4 = fopen(filearg2[numproc], "r"); if (fic == NULL || fic2 == NULL || fic3 == NULL || fic4 == NULL) { fprintf(stderr, "can't open one file in function getnbevent()\n"); return -1; } // count event and do the work nb_event = 0; while (fgets(ligne, 512, fic) != NULL) { assert(fgets(ligne2, 512, fic2) != NULL); assert(fgets(ligne3, 512, fic3) != NULL); assert(fgets(ligne4, 512, fic4) != NULL); if (strncmp(ligne, listevent[numproc][index].code, 5) == 0) { strncpy(buffertime, ligne2, 15); buffertime[15] = '\0'; time = atol(buffertime); listevent[numproc][index].tab_realevent[nb_event].time = time; #warning TODO: the way we retrieve parameters doesnt work with litl listevent[numproc][index].tab_realevent[nb_event].arg1 = atoi(ligne3); listevent[numproc][index].tab_realevent[nb_event].arg2 = atoi(ligne4); if (debug >= DEBUG_ALL) fprintf(stderr, "%d event %s found with time = %llu , arg1 = %d , arg2 = %d\n", nb_event + 1, listevent[numproc][index].code, listevent[numproc][index].tab_realevent[nb_event].time, listevent[numproc][index].tab_realevent[nb_event].arg1, listevent[numproc][index].tab_realevent[nb_event].arg2); nb_event++; } } listevent[numproc][index].tab_realevent[nb_event].time = 0; // closing files if (fclose(fic) == EOF || fclose(fic2) == EOF || fclose(fic3) == EOF || fclose(fic4) == EOF) { fprintf(stderr, "Problem closing one file in function getnbevent()\n"); return -1; } return nb_event; } void sysexec(char *cmd, ...) { // Variable length system method char command[1024]; command[0] = 0; va_list ap; va_start(ap, cmd); while (cmd != NULL) { strncat(command, cmd, 1024); cmd = va_arg(ap, char*); } va_end(ap); command[1023] = 0; if (debug >= DEBUG_ALL) fprintf(stderr, "%s\n", command); if (system(command) == -1) { fprintf(stderr, "Command %s failed!\n", command); exit(EXIT_FAILURE); } } /* Function that parse all element of each trace */ void parseevent() { int i; int j; for (j = 0; j < nproc; j++) { snprintf(fileref[j], 25, "testlog%d.txt", j); if (debug >= DEBUG_ALL) fprintf(stderr, "fileref %d = %s\n", j, fileref[j]); } for (j = 0; j < nproc; j++) { snprintf(filecode[j], 25, "testlog%d.txt", j + 100); if (debug >= DEBUG_ALL) fprintf(stderr, "filecode %d = %s\n", j, filecode[j]); snprintf(filetime[j], 25, "testlog%d.txt", j + 200); if (debug >= DEBUG_ALL) fprintf(stderr, "filetime %d = %s\n", j, filetime[j]); snprintf(filearg1[j], 25, "testlog%d.txt", j + 300); if (debug >= DEBUG_ALL) fprintf(stderr, "filearg1 %d = %s\n", j, filearg1[j]); snprintf(filearg2[j], 25, "testlog%d.txt", j + 400); if (debug >= DEBUG_ALL) fprintf(stderr, "filearg2 %d = %s\n", j, filearg2[j]); } for (j = 0; j < nproc; j++) { /* read the binary trace */ sysexec(TL_READ, " -f ", trace[j], " > ", fileref[j], NULL); /* remove the header */ sysexec("sed -i 1,2d ", fileref[j], " >/dev/null", NULL); /* retrieve the code, time and arguments of each event */ sysexec("awk '{print $4}' ", fileref[j], " > ", filecode[j], NULL); sysexec("awk '{print $1}' ", fileref[j], " > ", filetime[j], NULL); sysexec("awk '{print $5}' ", fileref[j], " > ", filearg1[j], NULL); sysexec("awk '{print $6}' ", fileref[j], " > ", filearg2[j], NULL); } /* check if the number of events is the one that we expect */ for (j = 0; j < nproc; j++) { for (i = 0; i < nbdiffevent; i++) { listevent[j][i].realnbofevent = getnbevent(i, j); if (listevent[j][i].realnbofevent != listevent[j][i].nbeventexpected) { fprintf( stderr, "Problem with code %s, expected number : %d, but there is %d event on the trace\n", listevent[j][i].code, listevent[j][i].nbeventexpected, listevent[j][i].realnbofevent); exit(EXIT_FAILURE); } if (debug >= DEBUG_INFO) fprintf(stderr, "code %s have the correct number of events for trace %d\n", listevent[j][i].code, j); } } if (debug >= DEBUG_INFO) fprintf(stderr, "parsing of event finish\n"); } // Test the existence and readability of file void testfilereadable(char *file) { struct stat st; if (stat(file, &st) < 0) { fprintf(stderr, "Can't stat file %s: %s\n", file, strerror(errno)); exit(EXIT_FAILURE); } if ((st.st_mode & S_IRUSR) == 0) { fprintf(stderr, "File %s is not readable\n", file); exit(EXIT_FAILURE); } } /* function that check the creation of all trace */ void testbintracecreation() { int j; for (j = 0; j < nproc; j++) { testfilereadable(trace[j]); if (debug >= DEBUG_INFO) fprintf(stderr, "trace[%d] correctly created\n", j); } if (debug >= DEBUG_INFO) fprintf(stderr, "bintrace correctly creates\n"); } // Parse common information from the environment static inline void parseenv() { /* debug info */ char *buffer = getenv("DEBUG_LEVEL"); if (buffer != NULL) debug = atoi(buffer); if (debug <= 0) setenv("EZTRACE_DEBUG", "-1", 1); /* bug on hydra, don't know why... else if(debug > 2) { setenv("EZTRACE_DEBUG", "2", 1); } */ /* we need some environment variable to retrieve the trace name */ if (getenv("USER") == NULL) setenv("USER", "foo", 1); strcpy(user, getenv("USER")); // The path assert(getcwd(pwd, sizeof(pwd)) != NULL); } // Actually run eztrace static inline void run_eztrace() { if (debug >= DEBUG_INFO) { if (nb_modules > 1) fprintf(stderr, "libpath= %s\n", libpath); else fprintf(stderr, "libpath= %s%s\n", TOP_BUILDDIR, path); } /* We execute the program with eztrace with the correct module*/ char *devnull = (debug == 0) ? " 2>/dev/null" : ""; if (nproc == 1) // without MPI if (nb_modules > 1) sysexec(eztrace_extra "EZTRACE_LIBRARY_PATH=", libpath, " EZTRACE_TRACE=", module, " ", EZTRACE, " -p ", TOP_BUILDDIR, nameprog, devnull, NULL); else sysexec(eztrace_extra "EZTRACE_LIBRARY_PATH=", TOP_BUILDDIR, path, " EZTRACE_TRACE=", module, " ", EZTRACE, " -p ", TOP_BUILDDIR, nameprog, devnull, NULL); else { // with MPI char numbuf[4]; sprintf(numbuf, "%d", nproc); if (nb_modules > 1) sysexec(eztrace_extra "EZTRACE_LIBRARY_PATH=", libpath, " EZTRACE_TRACE=", module, " mpirun -np ", numbuf, " ", EZTRACE, " -p ", TOP_BUILDDIR, nameprog, devnull, NULL); else sysexec(eztrace_extra "EZTRACE_LIBRARY_PATH=", TOP_BUILDDIR, path, " EZTRACE_TRACE=", module, " mpirun -np ", numbuf, " ", EZTRACE, " -p ", TOP_BUILDDIR, nameprog, devnull, NULL); } } // Run eztrace_convert static inline void run_eztrace_convert() { char traces[2048]; int i; traces[0] = 0; for (i = 0; i < nproc; i++) { strncat(traces, " ", 2048); strncat(traces, trace[i], 2048); } if (debug >= DEBUG_INFO) { if (nb_modules > 1) fprintf(stderr, "libpath= %s\n", libpath); else fprintf(stderr, "libpath= %s%s\n", TOP_BUILDDIR, path); } /* We execute the program with eztrace_convert with the correct module*/ char *devnull = (debug == 0) ? " 2>/dev/null >/dev/null" : ""; if (nb_modules > 1) sysexec("EZTRACE_LIBRARY_PATH=", libpath, " EZTRACE_TRACE=", module, " ", EZTRACE_CONVERT, traces, devnull, NULL); else sysexec("EZTRACE_LIBRARY_PATH=", TOP_BUILDDIR, path, " EZTRACE_TRACE=", module, " ", EZTRACE_CONVERT, traces, devnull, NULL); testfilereadable("eztrace_output.trace"); if (debug >= DEBUG_INFO) fprintf(stderr, "eztrace_convert ran with success!\n"); } // Fetch the traces static inline void fetch_traces() { char* trace_dir = "./"; char buffertrace[256]; int i; if (getenv("EZTRACE_TRACE_DIR") != NULL) trace_dir = getenv("EZTRACE_TRACE_DIR"); if (debug >= DEBUG_VERBOSE) fprintf(stderr, "trace_dir = %s\n", trace_dir); snprintf(buffertrace, 256, "%s/%s_eztrace_log_rank_", trace_dir, user); if (nproc == 1) { snprintf(trace[0], 256, "%s1", buffertrace); if (debug >= DEBUG_VERBOSE) fprintf(stderr, "trace = %s\n", trace[0]); } else { for (i = 0; i < nproc; i++) { snprintf(trace[i], 256, "%s%d", buffertrace, i); if (debug >= DEBUG_VERBOSE) fprintf(stderr, "trace[%d] = %s\n", i, trace[i]); } } /* We need to check if the traces are created */ testbintracecreation(); } // test for pthread module /*Function use to make some test on pthread event */ void testpthread() { if (listevent[0][1].realnbofevent != listevent[0][2].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][0].code); exit(EXIT_FAILURE); } if (listevent[0][3].realnbofevent != listevent[0][4].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][1].code); exit(EXIT_FAILURE); } if (listevent[0][9].realnbofevent != listevent[0][10].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][2].code); exit(EXIT_FAILURE); } if (listevent[0][14].realnbofevent != listevent[0][15].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][3].code); exit(EXIT_FAILURE); } if (listevent[0][16].realnbofevent != listevent[0][17].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][4].code); exit(EXIT_FAILURE); } if (listevent[0][18].realnbofevent != listevent[0][19].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][5].code); exit(EXIT_FAILURE); } if (listevent[0][21].realnbofevent != listevent[0][22].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][6].code); exit(EXIT_FAILURE); } if (debug >= DEBUG_INFO) fprintf(stderr, "test pthread finished\n"); } #endif // defined(__TESTCOMMON_H)_ eztrace-1.1-7/test/automake/PaxHeaders.7332/testmpiring.c0000644000000000000000000000013212544237152020132 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.861986926 30 ctime=1508162368.785999238 eztrace-1.1-7/test/automake/testmpiring.c0000644000175000017500000005243712544237152021334 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #define nproc 3 #define nameprog "./test/mpi/mpi_ring" #define NBMAXEVENT 85 #define NBMAXREALEVENT 50 #define module "mpi" #define path "/src/modules/mpi/.libs" #include "testcommon.h" /* Function use to init the event structure */ void init_tabevent() { int j; nbdiffevent = 0; for (j = 0; j < nproc; j++) { listevent[j][0].code = "40010"; listevent[j][0].nbeventexpected = 1; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][1].code = "40001"; listevent[j][1].nbeventexpected = 10; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][2].code = "40002"; listevent[j][2].nbeventexpected = 10; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][3].code = "40003"; listevent[j][3].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][4].code = "40004"; listevent[j][4].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][5].code = "40005"; listevent[j][5].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][6].code = "40006"; listevent[j][6].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][7].code = "40007"; listevent[j][7].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][8].code = "40008"; listevent[j][8].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][9].code = "4000a"; listevent[j][9].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][10].code = "4000b"; listevent[j][10].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][11].code = "4000c"; listevent[j][11].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][12].code = "4000d"; listevent[j][12].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][13].code = "40101"; listevent[j][13].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][14].code = "40103"; listevent[j][14].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][15].code = "40105"; listevent[j][15].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][16].code = "40107"; listevent[j][16].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][17].code = "40201"; listevent[j][17].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][18].code = "40202"; listevent[j][18].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][19].code = "40203"; listevent[j][19].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][20].code = "40204"; listevent[j][20].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { // mpi_start_recv listevent[j][21].code = "41003"; listevent[j][21].nbeventexpected = 10; } nbdiffevent++; for (j = 0; j < nproc; j++) { // mpi_stop_recv listevent[j][22].code = "41004"; listevent[j][22].nbeventexpected = 10; } for (j = 0; j < nproc; j++) { // mpi_irecv listevent[j][23].code = "41005"; listevent[j][23].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][24].code = "42001"; listevent[j][24].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][25].code = "42002"; listevent[j][25].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][26].code = "42003"; listevent[j][26].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][27].code = "42004"; listevent[j][27].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][28].code = "42005"; listevent[j][28].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][29].code = "42006"; listevent[j][29].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][30].code = "42007"; listevent[j][30].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][31].code = "42008"; listevent[j][31].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][32].code = "42009"; listevent[j][32].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][33].code = "4200a"; listevent[j][33].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][34].code = "4200b"; listevent[j][34].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][35].code = "43101"; listevent[j][35].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][36].code = "43001"; listevent[j][36].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][37].code = "43002"; listevent[j][37].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][38].code = "43003"; listevent[j][38].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][39].code = "43004"; listevent[j][39].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][40].code = "43005"; listevent[j][40].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][41].code = "43006"; listevent[j][41].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][42].code = "43007"; listevent[j][42].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][43].code = "43008"; listevent[j][43].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][44].code = "43009"; listevent[j][44].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][45].code = "4300a"; listevent[j][45].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][46].code = "4300b"; listevent[j][46].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][47].code = "4300c"; listevent[j][47].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][48].code = "4300d"; listevent[j][48].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][49].code = "4300e"; listevent[j][49].nbeventexpected = 11; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][50].code = "43011"; listevent[j][50].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][51].code = "43012"; listevent[j][51].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][52].code = "43013"; listevent[j][52].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][53].code = "43014"; listevent[j][53].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][54].code = "43015"; listevent[j][54].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][55].code = "43016"; listevent[j][55].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][56].code = "43017"; listevent[j][56].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][57].code = "43018"; listevent[j][57].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][58].code = "43019"; listevent[j][58].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][59].code = "4301a"; listevent[j][59].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][60].code = "4301b"; listevent[j][60].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][61].code = "4301c"; listevent[j][61].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][62].code = "4301d"; listevent[j][62].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][63].code = "4301e"; listevent[j][63].nbeventexpected = 11; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][64].code = "44001"; listevent[j][64].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][65].code = "44002"; listevent[j][65].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][66].code = "45001"; listevent[j][66].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][67].code = "45002"; listevent[j][67].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][68].code = "45003"; listevent[j][68].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][69].code = "45004"; listevent[j][69].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][70].code = "45010"; listevent[j][70].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][71].code = "45100"; listevent[j][71].nbeventexpected = 0; } nbdiffevent++; for (j = 0; j < nproc; j++) { listevent[j][72].code = "49999"; listevent[j][72].nbeventexpected = 0; } nbdiffevent++; //init the event table; } /* function that test MPI communication */ void mpisendrecv() { /* FIXME: * This test doesn't work anymore with litl because of the way litl_print * prints the parameters */ return; int i; int index2; int proc = 0; int index; long long int timecom; for (i = 0; i < nproc; i++) { for (proc = 0; proc < nproc; proc++) { index = 0; index2 = 0; if (proc != i) { if (debug >= DEBUG_VERBOSE) fprintf(stderr, "send/recv test from trace %d to trace %d\n", i, proc); while (index < listevent[i][1].realnbofevent) { if (listevent[i][1].tab_realevent[index].arg2 == proc) { if (debug >= DEBUG_VERBOSE) fprintf(stderr, "send found from trace %d to trace %d\n", i, proc); if (index2 == listevent[proc][22].realnbofevent) { fprintf( stderr, "Problem in logged communication between %d and %d, there is a send from %d but no recv\n", i, proc, i); exit(EXIT_FAILURE); } while (index2 < listevent[proc][22].realnbofevent) { if (listevent[proc][22].tab_realevent[index2].arg2 == i) { timecom = listevent[proc][22].tab_realevent[index2].time - listevent[i][1].tab_realevent[index].time; if (timecom < 0) { fprintf( stderr, "problem during communication from %d to %d, negative time =%lli\n", i, proc, timecom); return EXIT_FAILURE; } if (debug >= DEBUG_VERBOSE) { fprintf(stderr, "time of send = %llu\n", listevent[i][1].tab_realevent[index].time); fprintf(stderr, "time of recv = %llu\n", listevent[proc][22].tab_realevent[index2].time); fprintf( stderr, "MPI comm detected, msg send from %d to %d, time of the communication = %lli\n", i, proc, timecom); } index2++; break; } index2++; if (debug >= DEBUG_VERBOSE) fprintf(stderr, "%d & %d \n", index2, listevent[proc][22].realnbofevent); if (index2 == listevent[proc][22].realnbofevent) { fprintf( stderr, "Problem in communication between %d and %d, there is a send from %d but no recv\n", i, proc, i); exit(EXIT_FAILURE); } } } index++; } } } } // we do the same for recv for (i = 0; i < nproc; i++) { for (proc = 0; proc < nproc; proc++) { index = 0; index2 = 0; if (proc != i) { if (debug >= DEBUG_VERBOSE) fprintf(stderr, "recv/send test from trace %d to trace %d\n", i, proc); while (index < listevent[i][22].realnbofevent) { if (listevent[i][22].tab_realevent[index].arg2 == proc) { if (debug >= DEBUG_VERBOSE) fprintf(stderr, "recv found from trace %d to trace %d\n", i, proc); if (index2 == listevent[proc][1].realnbofevent) { fprintf( stderr, "Problem in communication between %d and %d, there is recv from %d but no send\n", i, proc, i); exit(EXIT_FAILURE); } while (index2 < listevent[proc][1].realnbofevent) { if (listevent[proc][1].tab_realevent[index2].arg2 == i) { timecom = listevent[i][22].tab_realevent[index].time - listevent[proc][1].tab_realevent[index2].time; if (timecom < 0) { fprintf( stderr, "problem during communication from %d to %d, negative time =%lli\n", i, proc, timecom); return EXIT_FAILURE; } if (debug >= DEBUG_VERBOSE) { fprintf(stderr, "time of send = %llu\n", listevent[i][22].tab_realevent[index].time); fprintf(stderr, "time of recv = %llu\n", listevent[proc][1].tab_realevent[index2].time); fprintf( stderr, "MPI comm detected, msg send from %d to %d, time of the communication = %lli\n", i, proc, timecom); } index2++; break; } index2++; fprintf(stderr, "%d et %d \n", index2, listevent[proc][1].realnbofevent); if (index2 == listevent[proc][1].realnbofevent) { fprintf( stderr, "Problem in communication between %d and %d, there is a recv from %d but no send\n", i, proc, i); exit(EXIT_FAILURE); } } } index++; } } } } if (debug >= DEBUG_INFO) fprintf(stderr, "mpi communication test finished\n"); } /*Function use to make some test on mpi event */ int testmpi() { if (listevent[0][1].realnbofevent != listevent[0][2].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][0].code); exit(EXIT_FAILURE); } if (listevent[0][3].realnbofevent != listevent[0][4].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][1].code); exit(EXIT_FAILURE); } if (listevent[0][5].realnbofevent != listevent[0][6].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][2].code); exit(EXIT_FAILURE); } if (listevent[0][7].realnbofevent != listevent[0][8].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][3].code); exit(EXIT_FAILURE); } if (listevent[0][9].realnbofevent != listevent[0][10].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][4].code); exit(EXIT_FAILURE); } if (listevent[0][11].realnbofevent != listevent[0][12].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][5].code); exit(EXIT_FAILURE); } if (listevent[0][17].realnbofevent != listevent[0][18].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][6].code); exit(EXIT_FAILURE); } if (listevent[0][19].realnbofevent != listevent[0][20].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][5].code); exit(EXIT_FAILURE); } if (listevent[0][21].realnbofevent != listevent[0][22].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][6].code); exit(EXIT_FAILURE); } if (listevent[0][24].realnbofevent != listevent[0][25].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][6].code); exit(EXIT_FAILURE); } if (listevent[0][27].realnbofevent != listevent[0][28].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][6].code); exit(EXIT_FAILURE); } if (listevent[0][31].realnbofevent != listevent[0][32].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][6].code); exit(EXIT_FAILURE); } if (listevent[0][33].realnbofevent != listevent[0][34].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][6].code); exit(EXIT_FAILURE); } if (listevent[0][36].realnbofevent != listevent[0][50].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][2].code); exit(EXIT_FAILURE); } if (listevent[0][37].realnbofevent != listevent[0][51].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][3].code); exit(EXIT_FAILURE); } if (listevent[0][38].realnbofevent != listevent[0][52].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][4].code); exit(EXIT_FAILURE); } if (listevent[0][39].realnbofevent != listevent[0][53].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][5].code); exit(EXIT_FAILURE); } if (listevent[0][40].realnbofevent != listevent[0][54].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][6].code); exit(EXIT_FAILURE); } if (listevent[0][41].realnbofevent != listevent[0][55].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][5].code); exit(EXIT_FAILURE); } if (listevent[0][42].realnbofevent != listevent[0][56].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][6].code); exit(EXIT_FAILURE); } if (listevent[0][43].realnbofevent != listevent[0][57].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][6].code); exit(EXIT_FAILURE); } if (listevent[0][44].realnbofevent != listevent[0][58].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][6].code); exit(EXIT_FAILURE); } if (listevent[0][45].realnbofevent != listevent[0][59].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][6].code); exit(EXIT_FAILURE); } if (listevent[0][46].realnbofevent != listevent[0][60].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][6].code); exit(EXIT_FAILURE); } if (listevent[0][47].realnbofevent != listevent[0][61].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][6].code); exit(EXIT_FAILURE); } if (listevent[0][48].realnbofevent != listevent[0][62].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][6].code); exit(EXIT_FAILURE); } if (listevent[0][49].realnbofevent != listevent[0][63].realnbofevent) { fprintf(stderr, "Number of start/stop for event %s isn't the same", listevent[0][6].code); exit(EXIT_FAILURE); } if (debug >= DEBUG_INFO) fprintf(stderr, "test mpi finished\n"); } /* The main function */ int main() { parseenv(); run_eztrace(); fetch_traces(); /* Before checking the bintrace we need to init the structur of event */ init_tabevent(); /*After that we retrieve the event of the trace */ parseevent(); testmpi(); // Check for eztrace_convert success run_eztrace_convert(); if (nproc > 1) { // special test for mpi communication mpisendrecv(); } clean(); return EXIT_SUCCESS; } eztrace-1.1-7/test/PaxHeaders.7332/mpi0000644000000000000000000000013213171135500014312 xustar0030 mtime=1508162368.505974768 30 atime=1508162372.166294941 30 ctime=1508162368.505974768 eztrace-1.1-7/test/mpi/0000755000175000017500000000000013171135500015556 5ustar00trahaytrahay00000000000000eztrace-1.1-7/test/mpi/PaxHeaders.7332/mpi_ring.c0000644000000000000000000000013113012560437016343 xustar0029 mtime=1479205151.30472761 30 atime=1507797515.861986926 30 ctime=1508162365.509713171 eztrace-1.1-7/test/mpi/mpi_ring.c0000644000175000017500000000564613012560437017546 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include #include #include #include // Debugging part, print out only if debugging level of the system is verbose or more int _debug = -77; void debug(char *fmt, ...) { if (_debug == -77) { char *buf = getenv("EZTRACE_DEBUG"); if (buf == NULL) _debug = 0; else _debug = atoi(buf); } if (_debug >= 0) { // debug verbose mode va_list va; va_start(va, fmt); vfprintf(stdout, fmt, va); va_end(va); } } // end of debugging part #define LEN 1024 #define LOOPS 10 static int comm_rank = -1; static int comm_size = -1; static char host_name[1024] = ""; static unsigned char *main_buffer = NULL; /* fill the buffer */ void fill_buffer(unsigned char* buffer, int buffer_size) { int i; for (i = 0; i < buffer_size; i++) buffer[i] = 'a' + (i % 26); } /* fill the buffer with 0 */ void zero_buffer(unsigned char* buffer, int buffer_size) { int i; for (i = 0; i < buffer_size; i++) buffer[i] = 0; } /* check wether the buffer contains errornous data * return 1 if it contains an error */ int check_buffer(unsigned char* buffer, int buffer_size) { int i; for (i = 0; i < buffer_size; i++) if (buffer[i] != 'a' + (i % 26)) return 1; return 0; } void compute(unsigned usec) { double t1, t2; t1 = MPI_Wtime(); do { t2 = MPI_Wtime(); } while ((t2 - t1) * 1e6 < usec); } int main(int argc, char **argv) { int ping_side; int rank_dst; int start_len = LEN; int iterations = LOOPS; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &comm_size); MPI_Comm_rank(MPI_COMM_WORLD, &comm_rank); if (gethostname(host_name, 1023) < 0) { perror("gethostname"); exit(1); } if (comm_size < 2) { fprintf(stderr, "This program requires at least 2 MPI processes, aborting...\n"); goto out; } debug("(%s): My rank is %d\n", host_name, comm_rank); ping_side = !(comm_rank & 1); main_buffer = malloc(start_len); fill_buffer(main_buffer, start_len); int size = 1024; int i; MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < iterations; i++) { if (!comm_rank) { MPI_Send(main_buffer, size, MPI_CHAR, (comm_rank + 1) % comm_size, 0, MPI_COMM_WORLD); MPI_Recv(main_buffer, size, MPI_CHAR, (comm_rank + comm_size - 1) % comm_size, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); } else { MPI_Recv(main_buffer, size, MPI_CHAR, (comm_rank + comm_size - 1) % comm_size, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); compute(100); MPI_Send(main_buffer, size, MPI_CHAR, (comm_rank + 1) % comm_size, 0, MPI_COMM_WORLD); } MPI_Barrier(MPI_COMM_WORLD); } out: free(main_buffer); MPI_Finalize(); return 0; } eztrace-1.1-7/test/mpi/PaxHeaders.7332/waitany.c0000644000000000000000000000013213143047722016216 xustar0030 mtime=1502367698.676456411 30 atime=1507797515.865987054 30 ctime=1508162365.521714217 eztrace-1.1-7/test/mpi/waitany.c0000644000175000017500000000214613143047722017410 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include "mpi.h" #include int main(int argc, char *argv[]) { int rank, size; int i, index; int buffer[400]; MPI_Request request[4]; MPI_Status status[4]; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size != 4) { printf("Please run with 4 processes.\n"); fflush(stdout); MPI_Finalize(); return 1; } MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { for (i = 0; i < size * 100; i++) buffer[i] = i / 100; for (i = 0; i < size - 1; i++) { MPI_Isend(&buffer[i * 100], 100, MPI_INT, i + 1, 123, MPI_COMM_WORLD, &request[i]); } for (i = 0; i < size - 1; i++) { MPI_Waitany(size - 1, request, &index, status); fprintf(stderr, "index=%d\n", index); } } else { MPI_Recv(buffer, 100, MPI_INT, 0, 123, MPI_COMM_WORLD, &status[0]); printf("%d: buffer[0] = %d\n", rank, buffer[0]); fflush(stdout); } MPI_Finalize(); return 0; } eztrace-1.1-7/test/mpi/PaxHeaders.7332/persistent.c0000644000000000000000000000013112544237152016743 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.865987054 29 ctime=1508162365.51371352 eztrace-1.1-7/test/mpi/persistent.c0000644000175000017500000000355012544237152020136 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include #include #include int main(int argc, char **argv) { int numtasks, rank; int rank_dst, ping_side; // Initialise MPI MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &numtasks); if (numtasks != 2) { printf("Need 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); exit(1); } ping_side = !(rank & 1); rank_dst = ping_side ? (rank | 1) : (rank & ~1); if (ping_side) { int x = 42, y; MPI_Request send_request; MPI_Request recv_request; MPI_Send_init(&x, 1, MPI_INT, rank_dst, 1, MPI_COMM_WORLD, &send_request); MPI_Start(&send_request); MPI_Wait(&send_request, MPI_STATUS_IGNORE); MPI_Start(&send_request); MPI_Wait(&send_request, MPI_STATUS_IGNORE); MPI_Recv_init(&y, 1, MPI_INT, rank_dst, 1, MPI_COMM_WORLD, &recv_request); MPI_Start(&recv_request); MPI_Wait(&recv_request, MPI_STATUS_IGNORE); if (y == 42) printf("success\n"); else printf("failure\n"); MPI_Start(&recv_request); MPI_Wait(&recv_request, MPI_STATUS_IGNORE); if (y == 42) printf("success\n"); else printf("failure\n"); } else { int x, y; MPI_Recv(&x, 1, MPI_INT, rank_dst, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE); MPI_Recv(&y, 1, MPI_INT, rank_dst, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE); MPI_Send(&y, 1, MPI_INT, rank_dst, 1, MPI_COMM_WORLD); MPI_Send(&y, 1, MPI_INT, rank_dst, 1, MPI_COMM_WORLD); if (x == 42) printf("success\n"); else printf("failure\n"); if (y == 42) printf("success\n"); else printf("failure\n"); } MPI_Barrier(MPI_COMM_WORLD); MPI_Finalize(); exit(0); } eztrace-1.1-7/test/mpi/PaxHeaders.7332/mpi_spawn.c0000644000000000000000000000013112544237152016540 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.865987054 29 ctime=1508162365.51371352 eztrace-1.1-7/test/mpi/mpi_spawn.c0000644000175000017500000000165412544237152017736 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include "mpi.h" #include #include #define NUM_SPAWNS 2 /* 'Compute' for a fixed duration */ void compute(unsigned usec) { double t1, t2; t1 = MPI_Wtime(); do { t2 = MPI_Wtime(); } while (((t2 - t1) * 1e6) < (double) usec); } int main(int argc, char *argv[]) { int np = NUM_SPAWNS; int errcodes[NUM_SPAWNS]; MPI_Comm parentcomm, intercomm; MPI_Init(&argc, &argv); MPI_Comm_get_parent(&parentcomm); compute(100000); if (parentcomm == MPI_COMM_NULL) { MPI_Comm_spawn("./mpi_spawn", MPI_ARGV_NULL, np, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm, errcodes); printf("I'm the parent.\n"); compute(1000000); } else { printf("I'm the spawned.\n"); } fflush(stdout); MPI_Finalize(); return 0; } eztrace-1.1-7/test/mpi/PaxHeaders.7332/mpi_ping.c0000644000000000000000000000013113127702543016344 xustar0030 mtime=1499432291.066606286 30 atime=1507797515.865987054 29 ctime=1508162365.51371352 eztrace-1.1-7/test/mpi/mpi_ping.c0000644000175000017500000000437113127702543017541 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include #include #include #define LEN 16 #define LOOPS 10000 #define WARMUP 100 static unsigned char *main_buffer = NULL; void SEND(char* buffer, int len, int dest, int tag) { MPI_Send(buffer, len, MPI_CHAR, dest, tag, MPI_COMM_WORLD); } void RECV(char* buffer, int len, int src, int tag) { MPI_Recv(buffer, len, MPI_CHAR, src, tag, MPI_COMM_WORLD, MPI_STATUS_IGNORE); } void fill_buffer(char *buffer, int len) { int i; for (i = 0; i < len; i++) { buffer[i] = 'a' + (i % 26); } } void compute(unsigned usec) { double t1, t2; t1 = MPI_Wtime(); do { t2 = MPI_Wtime(); } while ((t2 - t1) * 1e6 < usec); } int main(int argc, char **argv) { int comm_rank = -1; int comm_size = -1; char host_name[1024] = ""; int dest; int len = LEN; int iterations = LOOPS; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &comm_size); MPI_Comm_rank(MPI_COMM_WORLD, &comm_rank); if (gethostname(host_name, 1023) < 0) { perror("gethostname"); exit(1); } if (comm_size != 2) { fprintf(stderr, "This program requires 2 MPI processes, aborting...\n"); goto out; } fprintf(stdout, "(%s): My rank is %d\n", host_name, comm_rank); dest = (comm_rank + 1) % 2; main_buffer = malloc(len); fill_buffer(main_buffer, len); int i; for (i = 0; i < WARMUP; i++) { if (!comm_rank) { SEND(main_buffer, len, dest, 0); RECV(main_buffer, len, dest, 0); } else { RECV(main_buffer, len, dest, 0); SEND(main_buffer, len, dest, 0); } } double t1, t2; t1 = MPI_Wtime(); MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < iterations; i++) { if (!comm_rank) { SEND(main_buffer, len, dest, 0); RECV(main_buffer, len, dest, 0); } else { RECV(main_buffer, len, dest, 0); SEND(main_buffer, len, dest, 0); } } MPI_Barrier(MPI_COMM_WORLD); t2 = MPI_Wtime(); if (!comm_rank) { double latency = 1e6 * (t2 - t1) / (2 * iterations); printf("%d\t%d\t%lf\n", iterations, len, latency); } out: free(main_buffer); MPI_Finalize(); return 0; } eztrace-1.1-7/test/mpi/PaxHeaders.7332/mpi_multiring.c0000644000000000000000000000013212544237152017423 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.865987054 30 ctime=1508162365.517713869 eztrace-1.1-7/test/mpi/mpi_multiring.c0000644000175000017500000000601412544237152020613 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include #include #include #define LEN 1024 #define LOOPS 2 #define NB_MSG 4 static int comm_rank = -1; static int comm_size = -1; static char host_name[1024] = ""; static unsigned char **main_buffer = NULL; /* fill the buffer */ void fill_buffer(unsigned char** buffer, int buffer_size) { int i, j; for (i = 0; i < NB_MSG; i++) for (j = 0; j < buffer_size; j++) buffer[i][j] = 'a' + (j % 26); } /* fill the buffer with 0 */ void zero_buffer(unsigned char** buffer, int buffer_size) { int i, j; for (i = 0; i < NB_MSG; i++) for (j = 0; j < buffer_size; j++) buffer[i][j] = 0; } /* check wether the buffer contains errornous data * return 1 if it contains an error */ int check_buffer(unsigned char** buffer, int buffer_size) { int i, j; for (i = 0; i < NB_MSG; i++) for (j = 0; j < buffer_size; j++) if (buffer[i][j] != 'a' + (i % 26)) return 1; return 0; } void compute(unsigned usec) { double t1, t2; t1 = MPI_Wtime(); do { t2 = MPI_Wtime(); } while ((t2 - t1) * 1e6 < usec); } int main(int argc, char **argv) { int ping_side; int rank_dst; int start_len = LEN; int iterations = LOOPS; int i, j; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &comm_size); MPI_Comm_rank(MPI_COMM_WORLD, &comm_rank); if (gethostname(host_name, 1023) < 0) { perror("gethostname"); exit(1); } if (comm_size < 2) { fprintf(stderr, "This program requires at least 2 MPI processes, aborting...\n"); goto out; } fprintf(stdout, "(%s): My rank is %d\n", host_name, comm_rank); ping_side = !(comm_rank & 1); main_buffer = malloc(sizeof(unsigned char*) * NB_MSG); for (i = 0; i < NB_MSG; i++) main_buffer[i] = malloc(start_len); fill_buffer(main_buffer, start_len); int size = 1024; //MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < iterations; i++) { for (j = 0; j < comm_rank; j++) compute(100); if (!comm_rank) { for (j = 0; j < NB_MSG; j++) MPI_Send(main_buffer[j], size, MPI_CHAR, (comm_rank + 1) % comm_size, 0, MPI_COMM_WORLD); } else { for (j = 0; j < NB_MSG; j++) MPI_Recv(main_buffer[j], size, MPI_CHAR, (comm_rank + comm_size - 1) % comm_size, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); } compute(100); if (!comm_rank) { for (j = 0; j < NB_MSG; j++) MPI_Recv(main_buffer[j], size, MPI_CHAR, (comm_rank + comm_size - 1) % comm_size, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); } else { for (j = 0; j < NB_MSG; j++) MPI_Send(main_buffer[j], size, MPI_CHAR, (comm_rank + 1) % comm_size, 0, MPI_COMM_WORLD); } } MPI_Barrier(MPI_COMM_WORLD); out: for (i = 0; i < NB_MSG; i++) free(main_buffer[i]); MPI_Finalize(); return 0; } eztrace-1.1-7/test/mpi/PaxHeaders.7332/allgather.c0000644000000000000000000000013212544237152016507 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.865987054 30 ctime=1508162365.521714217 eztrace-1.1-7/test/mpi/allgather.c0000644000175000017500000000160312544237152017676 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include "mpi.h" #include #include int main(int argc, char **argv) { int rank, size; int errors = 0; MPI_Comm comm = MPI_COMM_WORLD; int sendarray[100]; int *rbuf; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); /* Exactly 2 processes can participate */ if (size < 2) { fprintf(stderr, "Number of processors must be at least 2\n"); fflush(stderr); MPI_Abort(MPI_COMM_WORLD, 1); } rbuf = (int *) malloc(size * 100 * sizeof(int)); MPI_Allgather(sendarray, 100, MPI_INT, rbuf, 100, MPI_INT, comm); MPI_Finalize(); if (errors) { printf("[%d] done with ERRORS(%d)!\n", rank, errors); fflush(stdout); } return errors; } eztrace-1.1-7/test/mpi/PaxHeaders.7332/test_mpi.c0000644000000000000000000000013212622361610016362 xustar0030 mtime=1447682952.646378552 30 atime=1507797515.869987182 30 ctime=1508162365.517713869 eztrace-1.1-7/test/mpi/test_mpi.c0000644000175000017500000004330112622361610017552 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include #include #include #define LEN 1024 #define LOOPS 10 static int comm_rank = -1; static int comm_size = -1; static char host_name[1024] = ""; static unsigned char *main_buffer = NULL; /* fill the buffer */ void fill_buffer(unsigned char* buffer, int buffer_size) { int i; for (i = 0; i < buffer_size; i++) buffer[i] = 'a' + (i % 26); } /* fill the buffer with 0 */ void zero_buffer(unsigned char* buffer, int buffer_size) { int i; for (i = 0; i < buffer_size; i++) buffer[i] = 0; } /* check wether the buffer contains errornous data * return 1 if it contains an error */ int check_buffer(unsigned char* buffer, int buffer_size) { int i; for (i = 0; i < buffer_size; i++) if (buffer[i] != 'a' + (i % 26)) return 1; return 0; } /* 'Compute' for a fixed duration */ void compute(unsigned usec) { double t1, t2; t1 = MPI_Wtime(); do { t2 = MPI_Wtime(); } while (((t2 - t1) * 1e6) < (double) usec); } int main(int argc, char **argv) { int ping_side; int rank_dst; int start_len = LEN; int iterations = LOOPS; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &comm_size); MPI_Comm_rank(MPI_COMM_WORLD, &comm_rank); if (gethostname(host_name, 1023) < 0) { perror("gethostname"); exit(1); } if (comm_size != 2) { fprintf(stderr, "This program requires 2 MPI processes, aborting...\n"); goto out; } fprintf(stdout, "(%s): My rank is %d\n", host_name, comm_rank); ping_side = !(comm_rank & 1); rank_dst = ping_side ? (comm_rank | 1) : (comm_rank & ~1); main_buffer = malloc(start_len); fill_buffer(main_buffer, start_len); MPI_Barrier(MPI_COMM_WORLD); /* Test */ if (ping_side) { int size = start_len; int nb_samples; MPI_Barrier(MPI_COMM_WORLD); for (nb_samples = 0; nb_samples < iterations; nb_samples++) { fill_buffer(main_buffer, size); MPI_Send(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD); zero_buffer(main_buffer, size); MPI_Recv(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Send/MPI_Recv failed !\n", ping_side); goto out; } } fprintf(stderr, "[%d] MPI_Send/MPI_Recv passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); for (nb_samples = 0; nb_samples < iterations; nb_samples++) { fill_buffer(main_buffer, size); MPI_Send(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD); zero_buffer(main_buffer, size); MPI_Recv(main_buffer, size, MPI_CHAR, MPI_ANY_SOURCE, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Send/MPI_Recv ANYSRC failed !\n", ping_side); goto out; } } fprintf(stderr, "[%d] MPI_Send/MPI_Recv ANYSRC passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); for (nb_samples = 0; nb_samples < iterations; nb_samples++) { fill_buffer(main_buffer, size); MPI_Send(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD); zero_buffer(main_buffer, size); MPI_Recv(main_buffer, size, MPI_CHAR, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Send/MPI_Recv ANYSRC+ANYTAG failed !\n", ping_side); goto out; } } fprintf(stderr, "[%d] MPI_Send/MPI_Recv ANYSRC+ANYTAG passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); for (nb_samples = 0; nb_samples < iterations; nb_samples++) { fill_buffer(main_buffer, size); MPI_Send(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD); zero_buffer(main_buffer, size); MPI_Recv(main_buffer, size, MPI_CHAR, rank_dst, MPI_ANY_TAG, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Send/MPI_Recv ANYTAG failed !\n", ping_side); goto out; } } fprintf(stderr, "[%d] MPI_Send/MPI_Recv ANYTAG passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); for (nb_samples = 0; nb_samples < iterations; nb_samples++) { fill_buffer(main_buffer, size); MPI_Ssend(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD); zero_buffer(main_buffer, size); MPI_Recv(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Ssend/MPI_Recv failed !\n", ping_side); goto out; } } fprintf(stderr, "[%d] MPI_Ssend/MPI_Recv passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); for (nb_samples = 0; nb_samples < iterations; nb_samples++) { fill_buffer(main_buffer, size); MPI_Rsend(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD); zero_buffer(main_buffer, size); MPI_Recv(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Rsend/MPI_Recv failed !\n", ping_side); goto out; } } fprintf(stderr, "[%d] MPI_Rsend/MPI_Recv passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); /* non blocking functions */ for (nb_samples = 0; nb_samples < iterations; nb_samples++) { MPI_Request req; fill_buffer(main_buffer, size); MPI_Isend(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, &req); compute(100); MPI_Wait(&req, MPI_STATUS_IGNORE); zero_buffer(main_buffer, size); MPI_Irecv(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Isend/MPI_Irecv failed !\n", ping_side); goto out; } } fprintf(stderr, "[%d] MPI_Isend/MPI_Irecv passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); for (nb_samples = 0; nb_samples < iterations; nb_samples++) { MPI_Request req; fill_buffer(main_buffer, size); MPI_Issend(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, &req); compute(100); MPI_Wait(&req, MPI_STATUS_IGNORE); zero_buffer(main_buffer, size); MPI_Irecv(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Issend/MPI_Irecv failed !\n", ping_side); goto out; } } fprintf(stderr, "[%d] MPI_Issend/MPI_Irecv passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); for (nb_samples = 0; nb_samples < iterations; nb_samples++) { MPI_Request req; fill_buffer(main_buffer, size); MPI_Irsend(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, &req); compute(100); MPI_Wait(&req, MPI_STATUS_IGNORE); zero_buffer(main_buffer, size); MPI_Irecv(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Irsend/MPI_Irecv failed !\n", ping_side); goto out; } } fprintf(stderr, "[%d] MPI_Irsend/MPI_Irecv passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); /* MPI_Bsend */ int bufsize = 1024 + MPI_BSEND_OVERHEAD; char *buf = malloc(bufsize); MPI_Buffer_attach(buf, bufsize); for (nb_samples = 0; nb_samples < iterations; nb_samples++) { MPI_Request req; fill_buffer(main_buffer, size); MPI_Bsend(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD); zero_buffer(main_buffer, size); MPI_Irecv(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Irsend/MPI_Irecv failed !\n", ping_side); goto out; } } fprintf(stderr, "[%d] MPI_Bsend/MPI_Irecv passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); /* MPI_Ibsend */ for (nb_samples = 0; nb_samples < iterations; nb_samples++) { MPI_Request req; fill_buffer(main_buffer, size); MPI_Bsend(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD); compute(100); zero_buffer(main_buffer, size); MPI_Irecv(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Irsend/MPI_Irecv failed !\n", ping_side); goto out; } } MPI_Buffer_detach(&buf, &bufsize); fprintf(stderr, "[%d] MPI_Ibsend/MPI_Irecv passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); /* MPI_Waitall */ for (nb_samples = 0; nb_samples < iterations; nb_samples++) { MPI_Request req[4]; int vars[4]; int i; for (i = 0; i < 4; i++) { vars[i] = i * i; MPI_Isend(&vars[i], 1, MPI_INTEGER, rank_dst, 0, MPI_COMM_WORLD, &req[i]); } MPI_Waitall(4, req, MPI_STATUS_IGNORE); compute(100); for (i = 0; i < 4; i++) { vars[i] = -1; MPI_Irecv(&vars[i], 1, MPI_INTEGER, rank_dst, 0, MPI_COMM_WORLD, &req[i]); } MPI_Waitall(4, req, MPI_STATUS_IGNORE); for (i = 0; i < 4; i++) { if (vars[i] != i * i) { fprintf(stderr, "[%d] MPI_Waitall failed !\n", ping_side); goto out; } } } fprintf(stderr, "[%d] MPI_Waitall passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); } else { int size = start_len; int nb_samples; MPI_Barrier(MPI_COMM_WORLD); for (nb_samples = 0; nb_samples < iterations; nb_samples++) { MPI_Recv(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Send/MPI_Recv failed !\n", ping_side); goto out; } fill_buffer(main_buffer, size); MPI_Send(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD); zero_buffer(main_buffer, size); } fprintf(stderr, "[%d] MPI_Send/MPI_Recv passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); for (nb_samples = 0; nb_samples < iterations; nb_samples++) { MPI_Recv(main_buffer, size, MPI_CHAR, MPI_ANY_SOURCE, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Send/MPI_Recv ANYSRC failed !\n", ping_side); goto out; } fill_buffer(main_buffer, size); MPI_Send(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD); zero_buffer(main_buffer, size); } fprintf(stderr, "[%d] MPI_Send/MPI_Recv ANYSRC passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); for (nb_samples = 0; nb_samples < iterations; nb_samples++) { MPI_Recv(main_buffer, size, MPI_CHAR, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Send/MPI_Recv ANYSRC+ANYTAG failed !\n", ping_side); goto out; } fill_buffer(main_buffer, size); MPI_Send(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD); zero_buffer(main_buffer, size); } fprintf(stderr, "[%d] MPI_Send/MPI_Recv ANYSRC+ANYTAG passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); for (nb_samples = 0; nb_samples < iterations; nb_samples++) { MPI_Recv(main_buffer, size, MPI_CHAR, rank_dst, MPI_ANY_TAG, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Send/MPI_Recv ANYTAG failed !\n", ping_side); goto out; } fill_buffer(main_buffer, size); MPI_Send(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD); zero_buffer(main_buffer, size); } fprintf(stderr, "[%d] MPI_Send/MPI_Recv ANYTAG passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); for (nb_samples = 0; nb_samples < iterations; nb_samples++) { MPI_Recv(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Ssend/MPI_Recv failed !\n", ping_side); goto out; } fill_buffer(main_buffer, size); MPI_Ssend(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD); zero_buffer(main_buffer, size); } fprintf(stderr, "[%d] MPI_Ssend/MPI_Recv passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); for (nb_samples = 0; nb_samples < iterations; nb_samples++) { MPI_Recv(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Rsend/MPI_Recv failed !\n", ping_side); goto out; } fill_buffer(main_buffer, size); MPI_Rsend(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD); zero_buffer(main_buffer, size); } fprintf(stderr, "[%d] MPI_Rsend/MPI_Recv passed\n", ping_side); /* non blocking functions */ MPI_Barrier(MPI_COMM_WORLD); for (nb_samples = 0; nb_samples < iterations; nb_samples++) { MPI_Request req; MPI_Irecv(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Isend/MPI_Irecv failed !\n", ping_side); goto out; } fill_buffer(main_buffer, size); MPI_Isend(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); zero_buffer(main_buffer, size); } fprintf(stderr, "[%d] MPI_Isend/MPI_Irecv passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); for (nb_samples = 0; nb_samples < iterations; nb_samples++) { MPI_Request req; MPI_Irecv(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Isend/MPI_Irecv failed !\n", ping_side); goto out; } fill_buffer(main_buffer, size); MPI_Issend(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); zero_buffer(main_buffer, size); } fprintf(stderr, "[%d] MPI_Issend/MPI_Irecv passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); for (nb_samples = 0; nb_samples < iterations; nb_samples++) { MPI_Request req; MPI_Irecv(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Irsend/MPI_Irecv failed !\n", ping_side); goto out; } fill_buffer(main_buffer, size); MPI_Irsend(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); zero_buffer(main_buffer, size); } fprintf(stderr, "[%d] MPI_Irsend/MPI_Irecv passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); /* MPI_Bsend */ int bufsize = 1024 + MPI_BSEND_OVERHEAD; char *buf = malloc(bufsize); MPI_Buffer_attach(buf, bufsize); for (nb_samples = 0; nb_samples < iterations; nb_samples++) { MPI_Request req; MPI_Irecv(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Irsend/MPI_Irecv failed !\n", ping_side); goto out; } fill_buffer(main_buffer, size); MPI_Bsend(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD); zero_buffer(main_buffer, size); } fprintf(stderr, "[%d] MPI_Bsend/MPI_Irecv passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); /* MPI_Ibsend */ for (nb_samples = 0; nb_samples < iterations; nb_samples++) { MPI_Request req; MPI_Irecv(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); if (check_buffer(main_buffer, size)) { fprintf(stderr, "[%d] MPI_Irsend/MPI_Irecv failed !\n", ping_side); goto out; } fill_buffer(main_buffer, size); MPI_Ibsend(main_buffer, size, MPI_CHAR, rank_dst, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); zero_buffer(main_buffer, size); } MPI_Buffer_detach(&buf, &bufsize); fprintf(stderr, "[%d] MPI_Ibsend/MPI_Irecv passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); /* MPI_Ibsend */ for (nb_samples = 0; nb_samples < iterations; nb_samples++) { MPI_Request req[4]; int vars[4]; int i; for (i = 0; i < 4; i++) { vars[i] = -1; MPI_Irecv(&vars[i], 1, MPI_INTEGER, rank_dst, 0, MPI_COMM_WORLD, &req[i]); } MPI_Waitall(4, req, MPI_STATUS_IGNORE); compute(100); for (i = 0; i < 4; i++) { MPI_Isend(&vars[i], 1, MPI_INTEGER, rank_dst, 0, MPI_COMM_WORLD, &req[i]); } MPI_Waitall(4, req, MPI_STATUS_IGNORE); for (i = 0; i < 4; i++) { if (vars[i] != i * i) { fprintf(stderr, "[%d] MPI_Waitall failed !\n", ping_side); goto out; } } } fprintf(stderr, "[%d] MPI_Waitall passed\n", ping_side); MPI_Barrier(MPI_COMM_WORLD); } free(main_buffer); out: MPI_Finalize(); return 0; } eztrace-1.1-7/test/mpi/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212544237152016434 xustar0030 mtime=1435582058.571899951 30 atime=1508162220.309857449 30 ctime=1508162365.501712473 eztrace-1.1-7/test/mpi/Makefile.am0000644000175000017500000000041612544237152017624 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis # See COPYING in top-level directory. CC =$(MPICC) AM_CFLAGS = -DWITH_MPI if USE_MPI check_PROGRAMS = mpi_ring mpi_multiring mpi_spawn test_mpi waitall waitany persistent mpi_ping allgather endif eztrace-1.1-7/test/mpi/PaxHeaders.7332/mpi_openmp.c0000644000000000000000000000013212544237152016707 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.869987182 30 ctime=1508162365.505712821 eztrace-1.1-7/test/mpi/mpi_openmp.c0000644000175000017500000000462512544237152020105 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include #include #include //#define LEN (1024*1024*100) #define LEN (10*1024*1024) #define LOOPS 5 static int comm_rank = -1; static int comm_size = -1; static char host_name[1024] = ""; static unsigned char *main_buffer = NULL; /* fill the buffer */ void fill_buffer(double* buffer, int buffer_size) { int i; for (i = 0; i < buffer_size; i++) buffer[i] = (double) i; } /* fill the buffer with 0 */ void zero_buffer(double* buffer, int buffer_size) { int i; for (i = 0; i < buffer_size; i++) buffer[i] = 0; } /* 'Compute' for a fixed duration */ void compute(unsigned usec) { double t1, t2; t1 = MPI_Wtime(); do { t2 = MPI_Wtime(); } while (((t2 - t1) * 1e6) < (double) usec); } int main(int argc, char **argv) { int ping_side; int rank_dst; int required = MPI_THREAD_SERIALIZED; int provided; MPI_Init_thread(&argc, &argv, required, &provided); if (required != provided) { fprintf(stderr, "MPI does not support thread safety level %d\n", required); return 1; } MPI_Comm_size(MPI_COMM_WORLD, &comm_size); MPI_Comm_rank(MPI_COMM_WORLD, &comm_rank); if (gethostname(host_name, 1023) < 0) { perror("gethostname"); exit(1); } if (comm_size != 2) { fprintf(stderr, "This program requires 2 MPI processes, aborting...\n"); goto out; } fprintf(stdout, "(%s): My rank is %d\n", host_name, comm_rank); ping_side = !(comm_rank & 1); rank_dst = ping_side ? (comm_rank | 1) : (comm_rank & ~1); int i; int nb_iter = LOOPS; int size = LEN; int iter = 0; double *A = malloc(size * sizeof(double)); double *B = malloc(size * sizeof(double)); fill_buffer(A, size); zero_buffer(B, size); MPI_Request req[2]; MPI_Barrier(MPI_COMM_WORLD); for (iter = 0; iter < nb_iter; iter++) { fprintf(stderr, "[%d] loop %d\n", comm_rank, iter); #pragma omp parallel for for (i = 0; i < size; i++) { A[i] = B[i] + A[i]; } MPI_Isend(A, size, MPI_DOUBLE, rank_dst, 0, MPI_COMM_WORLD, &req[0]); MPI_Recv(B, size, MPI_DOUBLE, rank_dst, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); MPI_Wait(&req[0], MPI_STATUS_IGNORE); } MPI_Barrier(MPI_COMM_WORLD); free(A); free(B); out: MPI_Finalize(); return 0; } eztrace-1.1-7/test/mpi/PaxHeaders.7332/Makefile.in0000644000000000000000000000013113171135254016441 xustar0030 mtime=1508162220.333859215 29 atime=1508162286.75903861 30 ctime=1508162368.509975118 eztrace-1.1-7/test/mpi/Makefile.in0000644000175000017500000005523613171135254017644 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @USE_MPI_TRUE@check_PROGRAMS = mpi_ring$(EXEEXT) \ @USE_MPI_TRUE@ mpi_multiring$(EXEEXT) mpi_spawn$(EXEEXT) \ @USE_MPI_TRUE@ test_mpi$(EXEEXT) waitall$(EXEEXT) \ @USE_MPI_TRUE@ waitany$(EXEEXT) persistent$(EXEEXT) \ @USE_MPI_TRUE@ mpi_ping$(EXEEXT) allgather$(EXEEXT) subdir = test/mpi ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = allgather_SOURCES = allgather.c allgather_OBJECTS = allgather.$(OBJEXT) allgather_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = mpi_multiring_SOURCES = mpi_multiring.c mpi_multiring_OBJECTS = mpi_multiring.$(OBJEXT) mpi_multiring_LDADD = $(LDADD) mpi_ping_SOURCES = mpi_ping.c mpi_ping_OBJECTS = mpi_ping.$(OBJEXT) mpi_ping_LDADD = $(LDADD) mpi_ring_SOURCES = mpi_ring.c mpi_ring_OBJECTS = mpi_ring.$(OBJEXT) mpi_ring_LDADD = $(LDADD) mpi_spawn_SOURCES = mpi_spawn.c mpi_spawn_OBJECTS = mpi_spawn.$(OBJEXT) mpi_spawn_LDADD = $(LDADD) persistent_SOURCES = persistent.c persistent_OBJECTS = persistent.$(OBJEXT) persistent_LDADD = $(LDADD) test_mpi_SOURCES = test_mpi.c test_mpi_OBJECTS = test_mpi.$(OBJEXT) test_mpi_LDADD = $(LDADD) waitall_SOURCES = waitall.c waitall_OBJECTS = waitall.$(OBJEXT) waitall_LDADD = $(LDADD) waitany_SOURCES = waitany.c waitany_OBJECTS = waitany.$(OBJEXT) waitany_LDADD = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = allgather.c mpi_multiring.c mpi_ping.c mpi_ring.c \ mpi_spawn.c persistent.c test_mpi.c waitall.c waitany.c DIST_SOURCES = allgather.c mpi_multiring.c mpi_ping.c mpi_ring.c \ mpi_spawn.c persistent.c test_mpi.c waitall.c waitany.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = $(MPICC) CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUDA_CFLAGS = @CUDA_CFLAGS@ CUDA_LDFLAGS = @CUDA_LDFLAGS@ CUDA_LIBS = @CUDA_LIBS@ CUDA_ROOT = @CUDA_ROOT@ CUPTI_CFLAGS = @CUPTI_CFLAGS@ CUPTI_LDFLAGS = @CUPTI_LDFLAGS@ CUPTI_LIBS = @CUPTI_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ DYNLIB_EXT = @DYNLIB_EXT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ GTGDIR = @GTGDIR@ GTG_CPPFLAGS = @GTG_CPPFLAGS@ GTG_DEPENDENCIES = @GTG_DEPENDENCIES@ GTG_EXT_CPPFLAGS = @GTG_EXT_CPPFLAGS@ GTG_EXT_LDFLAGS = @GTG_EXT_LDFLAGS@ GTG_EXT_LIB = @GTG_EXT_LIB@ GTG_LDFLAGS = @GTG_LDFLAGS@ GTG_LIB = @GTG_LIB@ GTG_OUT_OF_ORDER = @GTG_OUT_OF_ORDER@ HAVE_ENV = @HAVE_ENV@ HAVE_LIBBACKTRACE = @HAVE_LIBBACKTRACE@ HAVE_LIBOPCODE = @HAVE_LIBOPCODE@ HAVE_PRCTL_H = @HAVE_PRCTL_H@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LD_LIBRARY_PATH_NAME = @LD_LIBRARY_PATH_NAME@ LD_PRELOAD_NAME = @LD_PRELOAD_NAME@ LIBBACKTRACE_CPPFLAGS = @LIBBACKTRACE_CPPFLAGS@ LIBBACKTRACE_LDFLAGS = @LIBBACKTRACE_LDFLAGS@ LIBBACKTRACE_LIB = @LIBBACKTRACE_LIB@ LIBBACKTRACE_ROOT = @LIBBACKTRACE_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LITL_PRINT = @LITL_PRINT@ LITL_ROOT = @LITL_ROOT@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPI_CFLAGS = @MPI_CFLAGS@ MPI_EVENT_ID = @MPI_EVENT_ID@ MPI_INC = @MPI_INC@ MPI_LDFLAGS = @MPI_LDFLAGS@ MPI_MODULE_NAME = @MPI_MODULE_NAME@ MPI_ROOT = @MPI_ROOT@ NM = @NM@ NMEDIT = @NMEDIT@ NVCC = @NVCC@ NVCCFLAGS = @NVCCFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAPIDIR = @PAPIDIR@ PAPI_CPPFLAGS = @PAPI_CPPFLAGS@ PAPI_ENABLED = @PAPI_ENABLED@ PAPI_LDFLAGS = @PAPI_LDFLAGS@ PAPI_LIBDIR = @PAPI_LIBDIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PPTRACE_BINARY_TYPE = @PPTRACE_BINARY_TYPE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STARPU_CFLAGS = @STARPU_CFLAGS@ STARPU_CPPFLAGS = @STARPU_CPPFLAGS@ STARPU_LDFLAGS = @STARPU_LDFLAGS@ STARPU_LIBS = @STARPU_LIBS@ STARPU_ROOT = @STARPU_ROOT@ STRIP = @STRIP@ TARGET_BITS = @TARGET_BITS@ TL_CPPFLAGS = @TL_CPPFLAGS@ TL_EXT_CPPFLAGS = @TL_EXT_CPPFLAGS@ TL_EXT_LDFLAGS = @TL_EXT_LDFLAGS@ TL_EXT_LIB = @TL_EXT_LIB@ TL_LDFLAGS = @TL_LDFLAGS@ TL_LIB = @TL_LIB@ USE_BIN_INSTRUMENTATION = @USE_BIN_INSTRUMENTATION@ USE_CUDADIR_FROM_USER = @USE_CUDADIR_FROM_USER@ USE_GETTID = @USE_GETTID@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ USE_PAPIDIR_FROM_USER = @USE_PAPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CFLAGS = -DWITH_MPI all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/mpi/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu test/mpi/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list allgather$(EXEEXT): $(allgather_OBJECTS) $(allgather_DEPENDENCIES) $(EXTRA_allgather_DEPENDENCIES) @rm -f allgather$(EXEEXT) $(AM_V_CCLD)$(LINK) $(allgather_OBJECTS) $(allgather_LDADD) $(LIBS) mpi_multiring$(EXEEXT): $(mpi_multiring_OBJECTS) $(mpi_multiring_DEPENDENCIES) $(EXTRA_mpi_multiring_DEPENDENCIES) @rm -f mpi_multiring$(EXEEXT) $(AM_V_CCLD)$(LINK) $(mpi_multiring_OBJECTS) $(mpi_multiring_LDADD) $(LIBS) mpi_ping$(EXEEXT): $(mpi_ping_OBJECTS) $(mpi_ping_DEPENDENCIES) $(EXTRA_mpi_ping_DEPENDENCIES) @rm -f mpi_ping$(EXEEXT) $(AM_V_CCLD)$(LINK) $(mpi_ping_OBJECTS) $(mpi_ping_LDADD) $(LIBS) mpi_ring$(EXEEXT): $(mpi_ring_OBJECTS) $(mpi_ring_DEPENDENCIES) $(EXTRA_mpi_ring_DEPENDENCIES) @rm -f mpi_ring$(EXEEXT) $(AM_V_CCLD)$(LINK) $(mpi_ring_OBJECTS) $(mpi_ring_LDADD) $(LIBS) mpi_spawn$(EXEEXT): $(mpi_spawn_OBJECTS) $(mpi_spawn_DEPENDENCIES) $(EXTRA_mpi_spawn_DEPENDENCIES) @rm -f mpi_spawn$(EXEEXT) $(AM_V_CCLD)$(LINK) $(mpi_spawn_OBJECTS) $(mpi_spawn_LDADD) $(LIBS) persistent$(EXEEXT): $(persistent_OBJECTS) $(persistent_DEPENDENCIES) $(EXTRA_persistent_DEPENDENCIES) @rm -f persistent$(EXEEXT) $(AM_V_CCLD)$(LINK) $(persistent_OBJECTS) $(persistent_LDADD) $(LIBS) test_mpi$(EXEEXT): $(test_mpi_OBJECTS) $(test_mpi_DEPENDENCIES) $(EXTRA_test_mpi_DEPENDENCIES) @rm -f test_mpi$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_mpi_OBJECTS) $(test_mpi_LDADD) $(LIBS) waitall$(EXEEXT): $(waitall_OBJECTS) $(waitall_DEPENDENCIES) $(EXTRA_waitall_DEPENDENCIES) @rm -f waitall$(EXEEXT) $(AM_V_CCLD)$(LINK) $(waitall_OBJECTS) $(waitall_LDADD) $(LIBS) waitany$(EXEEXT): $(waitany_OBJECTS) $(waitany_DEPENDENCIES) $(EXTRA_waitany_DEPENDENCIES) @rm -f waitany$(EXEEXT) $(AM_V_CCLD)$(LINK) $(waitany_OBJECTS) $(waitany_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allgather.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpi_multiring.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpi_ping.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpi_ring.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpi_spawn.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/persistent.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_mpi.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/waitall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/waitany.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/test/mpi/PaxHeaders.7332/waitall.c0000644000000000000000000000013213143047722016177 xustar0030 mtime=1502367698.676456411 30 atime=1507797515.869987182 30 ctime=1508162365.525714567 eztrace-1.1-7/test/mpi/waitall.c0000644000175000017500000000247713143047722017400 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include "mpi.h" #include int main(int argc, char *argv[]) { int rank, size; int i, index; int buffer[400]; MPI_Request request[4]; MPI_Status status[4]; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size != 4) { printf("Please run with 4 processes.\n"); fflush(stdout); MPI_Finalize(); return 1; } MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { for (i = 0; i < size * 100; i++) buffer[i] = i / 100; for (i = 0; i < size - 1; i++) { MPI_Isend(&buffer[i * 100], 100, MPI_INT, i + 1, 123, MPI_COMM_WORLD, &request[i]); } while (1) { /* just for testing if eztrace works when some of the requests are already successful when calling mpi_waitall */ int flag; MPI_Status status; MPI_Test(&request[0], &flag, &status); if (flag) { break; } } MPI_Waitall(size - 1, request, status); MPI_Waitall(size - 1, request, status); } else { MPI_Recv(buffer, 100, MPI_INT, 0, 123, MPI_COMM_WORLD, &status[0]); printf("%d: buffer[0] = %d\n", rank, buffer[0]); fflush(stdout); } MPI_Finalize(); return 0; } eztrace-1.1-7/test/PaxHeaders.7332/stdio0000644000000000000000000000013213171135500014647 xustar0030 mtime=1508162368.661988401 30 atime=1508162372.166294941 30 ctime=1508162368.661988401 eztrace-1.1-7/test/stdio/0000755000175000017500000000000013171135500016113 5ustar00trahaytrahay00000000000000eztrace-1.1-7/test/stdio/PaxHeaders.7332/stdio.c0000644000000000000000000000013212544237152016223 xustar0030 mtime=1435582058.575899951 30 atime=1507797515.869987182 30 ctime=1508162365.557717359 eztrace-1.1-7/test/stdio/stdio.c0000644000175000017500000000555112544237152017420 0ustar00trahaytrahay00000000000000/* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include #include #include #include #include #include #include #include #include #include // Debugging part, print out only if debugging level of the system is verbose or more int _debug = -77; void debug(char *fmt, ...) { if (_debug == -77) { char *buf = getenv("EZTRACE_DEBUG"); if (buf == NULL) _debug = 0; else _debug = atoi(buf); } va_list va; va_start(va, fmt); if (_debug >= 0) { // debug verbose mode vfprintf(stderr, fmt, va); } else { // Don't print out => redirect to /dev/null FILE *f = fopen("/dev/null", "a"); vfprintf(f, fmt, va); fclose(f); } va_end(va); } // end of debugging part #define __STDIO_TEST_STATIC #ifdef __STDIO_TEST_STATIC /*ssize_t read(int fd, void *buf, size_t size) { if(size > 30) size = 30; memcpy(buf, "012345678901234567890123456789", size); sleep(0.1); return (ssize_t)size; } */ #endif // __STDIO_TEST_STATIC /* Number of iterations */ #define ITER 10 /* Number of threads */ #define NTH 2 typedef union { unsigned long long tick; struct { unsigned low; unsigned high; }; } tick_t; int fd[2][2]; sem_t* thread_ready; #define TICK_DIFF(t1, t2) \ ((t2).tick - (t1).tick) #define TIME_DIFF(t1, t2) \ ((t2.tv_sec - t1.tv_sec) * 1000000 + (t2.tv_usec - t1.tv_usec)) /* Fake computation of usec microseconds */ void compute(int usec) { struct timeval tv1, tv2; gettimeofday(&tv1, NULL); do { gettimeofday(&tv2, NULL); } while (TIME_DIFF(tv1, tv2) < usec); } void* f_thread(void* arg) { int my_id = *(int*) arg; /* Notify the main thread that we got the args */ sem_post(thread_ready); debug("Running thread #%d\n", my_id); int buf = -1; int i; for (i = 0; i < ITER; i++) { /* Wait until the previous thread has finished his job */ read(fd[my_id][0], &buf, sizeof(int)); debug("[thread #%d] read %d\n", my_id, buf); /* compute for 1ms */ compute(50000); buf++; /* Wake up the next thread */ write(fd[(my_id + 1) % 2][1], &buf, sizeof(int)); buf = 0; } debug("End of thread #%d\n", my_id); return NULL; } int main(int argc, char**argv) { pthread_t tid[NTH]; int i; if (pipe(fd[0]) || pipe(fd[1])) { fprintf(stderr, "error while calling pipe\n"); return 1; } sem_unlink("ready"); thread_ready = sem_open("ready", O_CREAT, 0666, 0); for (i = 0; i < NTH; i++) { pthread_create(&tid[i], NULL, f_thread, &i); sem_wait(thread_ready); } sem_unlink("ready"); i = 0; debug("Main thread writes %d\n", i); write(fd[0][1], &i, sizeof(int)); for (i = 0; i < NTH; i++) { pthread_join(tid[i], NULL); } return 0; } eztrace-1.1-7/test/stdio/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212544237152016771 xustar0030 mtime=1435582058.575899951 30 atime=1508162220.433866571 30 ctime=1508162368.657988052 eztrace-1.1-7/test/stdio/Makefile.am0000644000175000017500000000024312544237152020157 0ustar00trahaytrahay00000000000000# Copyright © CNRS, INRIA, Université Bordeaux 1 # See COPYING in top-level directory. check_PROGRAMS = stdio stdio_SOURCES = stdio.c stdio_LDFLAGS = -lpthread eztrace-1.1-7/test/stdio/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135254016777 xustar0030 mtime=1508162220.453868042 30 atime=1508162286.847045799 30 ctime=1508162368.661988401 eztrace-1.1-7/test/stdio/Makefile.in0000644000175000017500000004702713171135254020200 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright © CNRS, INRIA, Université Bordeaux 1 # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ check_PROGRAMS = stdio$(EXEEXT) subdir = test/stdio ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am_stdio_OBJECTS = stdio.$(OBJEXT) stdio_OBJECTS = $(am_stdio_OBJECTS) stdio_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = stdio_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(stdio_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(stdio_SOURCES) DIST_SOURCES = $(stdio_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUDA_CFLAGS = @CUDA_CFLAGS@ CUDA_LDFLAGS = @CUDA_LDFLAGS@ CUDA_LIBS = @CUDA_LIBS@ CUDA_ROOT = @CUDA_ROOT@ CUPTI_CFLAGS = @CUPTI_CFLAGS@ CUPTI_LDFLAGS = @CUPTI_LDFLAGS@ CUPTI_LIBS = @CUPTI_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ DYNLIB_EXT = @DYNLIB_EXT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ GTGDIR = @GTGDIR@ GTG_CPPFLAGS = @GTG_CPPFLAGS@ GTG_DEPENDENCIES = @GTG_DEPENDENCIES@ GTG_EXT_CPPFLAGS = @GTG_EXT_CPPFLAGS@ GTG_EXT_LDFLAGS = @GTG_EXT_LDFLAGS@ GTG_EXT_LIB = @GTG_EXT_LIB@ GTG_LDFLAGS = @GTG_LDFLAGS@ GTG_LIB = @GTG_LIB@ GTG_OUT_OF_ORDER = @GTG_OUT_OF_ORDER@ HAVE_ENV = @HAVE_ENV@ HAVE_LIBBACKTRACE = @HAVE_LIBBACKTRACE@ HAVE_LIBOPCODE = @HAVE_LIBOPCODE@ HAVE_PRCTL_H = @HAVE_PRCTL_H@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LD_LIBRARY_PATH_NAME = @LD_LIBRARY_PATH_NAME@ LD_PRELOAD_NAME = @LD_PRELOAD_NAME@ LIBBACKTRACE_CPPFLAGS = @LIBBACKTRACE_CPPFLAGS@ LIBBACKTRACE_LDFLAGS = @LIBBACKTRACE_LDFLAGS@ LIBBACKTRACE_LIB = @LIBBACKTRACE_LIB@ LIBBACKTRACE_ROOT = @LIBBACKTRACE_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LITL_PRINT = @LITL_PRINT@ LITL_ROOT = @LITL_ROOT@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPI_CFLAGS = @MPI_CFLAGS@ MPI_EVENT_ID = @MPI_EVENT_ID@ MPI_INC = @MPI_INC@ MPI_LDFLAGS = @MPI_LDFLAGS@ MPI_MODULE_NAME = @MPI_MODULE_NAME@ MPI_ROOT = @MPI_ROOT@ NM = @NM@ NMEDIT = @NMEDIT@ NVCC = @NVCC@ NVCCFLAGS = @NVCCFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAPIDIR = @PAPIDIR@ PAPI_CPPFLAGS = @PAPI_CPPFLAGS@ PAPI_ENABLED = @PAPI_ENABLED@ PAPI_LDFLAGS = @PAPI_LDFLAGS@ PAPI_LIBDIR = @PAPI_LIBDIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PPTRACE_BINARY_TYPE = @PPTRACE_BINARY_TYPE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STARPU_CFLAGS = @STARPU_CFLAGS@ STARPU_CPPFLAGS = @STARPU_CPPFLAGS@ STARPU_LDFLAGS = @STARPU_LDFLAGS@ STARPU_LIBS = @STARPU_LIBS@ STARPU_ROOT = @STARPU_ROOT@ STRIP = @STRIP@ TARGET_BITS = @TARGET_BITS@ TL_CPPFLAGS = @TL_CPPFLAGS@ TL_EXT_CPPFLAGS = @TL_EXT_CPPFLAGS@ TL_EXT_LDFLAGS = @TL_EXT_LDFLAGS@ TL_EXT_LIB = @TL_EXT_LIB@ TL_LDFLAGS = @TL_LDFLAGS@ TL_LIB = @TL_LIB@ USE_BIN_INSTRUMENTATION = @USE_BIN_INSTRUMENTATION@ USE_CUDADIR_FROM_USER = @USE_CUDADIR_FROM_USER@ USE_GETTID = @USE_GETTID@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ USE_PAPIDIR_FROM_USER = @USE_PAPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ stdio_SOURCES = stdio.c stdio_LDFLAGS = -lpthread all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/stdio/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu test/stdio/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list stdio$(EXEEXT): $(stdio_OBJECTS) $(stdio_DEPENDENCIES) $(EXTRA_stdio_DEPENDENCIES) @rm -f stdio$(EXEEXT) $(AM_V_CCLD)$(stdio_LINK) $(stdio_OBJECTS) $(stdio_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stdio.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/test/PaxHeaders.7332/openmp0000644000000000000000000000013213171135500015023 xustar0030 mtime=1508162368.553978963 30 atime=1508162372.166294941 30 ctime=1508162368.553978963 eztrace-1.1-7/test/openmp/0000755000175000017500000000000013171135500016267 5ustar00trahaytrahay00000000000000eztrace-1.1-7/test/openmp/PaxHeaders.7332/openmp_nowait.f0000644000000000000000000000013212544237152020137 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.873987311 30 ctime=1508162365.537715613 eztrace-1.1-7/test/openmp/openmp_nowait.f0000644000175000017500000000230712544237152021330 0ustar00trahaytrahay00000000000000! Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis ! See COPYING in top-level directory. program squelette_RECOM implicit none integer n, i, j, m parameter (n=8, m=100) real*8 a(0:n),b(0:n),c(0:n),r do i=0,n a(i)=sqrt(REAL(i)) b(i)=0 enddo !$OMP PARALLEL !$OMP DO private(i) do i=0,n A(i) = A(i) +1 enddo !$omp end do nowait !$OMP DO private(i) do i=0,n do j=0,((i/10000)+1)*m b(i) = b(i) + sqrt(a(i))/3 enddo enddo !$omp end do nowait !$OMP DO private(i) do i=0,n do j=0,((i/10000)+1)*m c(i) = c(i) + sqrt(a(i))/3 enddo enddo !$omp end do !$OMP DO private(i) do i=0,n-1 do j=0,((i/10000)+1)*m b(i+1) = b(i+1) + sqrt(a(i)) enddo enddo !$omp end do nowait !$omp do private(i) do i=0,n-1 c(i+1) = c(i+1) + sqrt(a(i)) enddo !$omp end do !$omp do private(i) do i=0,n-1 b(i+1) = b(i+1) + sqrt(a(i)) + c(i) enddo !$omp end do !$omp master do i=0,n r=r+b(i) enddo print *, r !$omp end master !$OMP END PARALLEL end eztrace-1.1-7/test/openmp/PaxHeaders.7332/openmp_simple.c0000644000000000000000000000013113012560437020117 xustar0029 mtime=1479205151.30472761 30 atime=1507797515.873987311 30 ctime=1508162365.529714916 eztrace-1.1-7/test/openmp/openmp_simple.c0000644000175000017500000000370513012560437021314 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ # include # include # include # include #include // Debugging part, print out only if debugging level of the system is verbose or more int _debug = -77; void debug(char *fmt, ...) { if (_debug == -77) { char *buf = getenv("EZTRACE_DEBUG"); if (buf == NULL) _debug = 0; else _debug = atoi(buf); } if (_debug >= 0) { // debug verbose mode va_list va; va_start(va, fmt); vfprintf(stdout, fmt, va); va_end(va); } } // end of debugging part void fake_compute() { struct timeval t1, t2; gettimeofday(&t1, NULL); do { gettimeofday(&t2, NULL); } while(((t2.tv_sec-t1.tv_sec)*1e6)+(t2.tv_usec-t1.tv_usec) < 100000); } #define SIZE (1024*1024*8) int main(void) { int i; int *A = malloc(sizeof(int) * SIZE); int *B = malloc(sizeof(int) * SIZE); int *C = malloc(sizeof(int) * SIZE); for (i = 0; i < SIZE; i++) { A[i] = i * 17 % 7; B[i] = i * 19 % 7; C[i] = 0; } //compute for real! int j; for (j = 0; j < 3; j++) { debug("loop %d\n", j); debug("\trunning parallel for schedule(static)\n"); #pragma omp parallel for schedule(static) for (i = 0; i < SIZE; i++) { C[i] = A[i] + B[i]; } fake_compute(); debug("\trunning parallel for schedule(runtime)\n"); #pragma omp parallel for schedule(runtime) for (i = 0; i < SIZE; i++) { C[i] = A[i] + B[i]; } fake_compute(); debug("\trunning parallel for schedule(dynamic)\n"); #pragma omp parallel for schedule(dynamic) for (i = 0; i < SIZE; i++) { C[i] = A[i] + B[i]; } fake_compute(); debug("\trunning parallel for schedule(guided)\n"); #pragma omp parallel for schedule(guided) for (i = 0; i < SIZE; i++) { C[i] = A[i] + B[i]; } fake_compute(); } return 0; } eztrace-1.1-7/test/openmp/PaxHeaders.7332/test_task.c0000644000000000000000000000013212544237152017256 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.873987311 30 ctime=1508162365.541715963 eztrace-1.1-7/test/openmp/test_task.c0000644000175000017500000000242612544237152020451 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ # include # include # include # include #include // Debugging part, print out only if debugging level of the system is verbose or more int _debug = -77; void debug(char *fmt, ...) { if (_debug == -77) { char *buf = getenv("EZTRACE_DEBUG"); if (buf == NULL) _debug = 0; else _debug = atoi(buf); } if (_debug >= 0) { // debug verbose mode va_list va; va_start(va, fmt); vfprintf(stdout, fmt, va); va_end(va); } } // end of debugging part #define SIZE (1024*8) int res = 0; omp_lock_t lock; void task_function(int n) { // printf("task_function(%d) : res = %d\n", n, res); if (n % 2) { omp_set_lock(&lock); res += 1; omp_unset_lock(&lock); } } int main(void) { int i; omp_init_lock(&lock); int j; #pragma omp parallel for (j = 0; j < 10; j++) { debug("loop %d\n", j); for (i = 0; i < SIZE; i++) { if (j % 2) { #pragma omp task untied task_function(i); } else { #pragma omp task task_function(i); } } #pragma omp taskwait } debug("result = %d\n", res); return 0; } eztrace-1.1-7/test/openmp/PaxHeaders.7332/Makefile.am0000644000000000000000000000013113012560437017140 xustar0029 mtime=1479205151.30472761 30 atime=1508162220.341859803 30 ctime=1508162365.525714567 eztrace-1.1-7/test/openmp/Makefile.am0000644000175000017500000000050413012560437020327 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis # See COPYING in top-level directory. AM_CFLAGS = -fopenmp -lm if OPENMP_FOUND check_PROGRAMS = openmp_simple test_nest_lock test_lock openmp_simple_SOURCES=openmp_simple.c test_nest_lock_SOURCES=test_nest_lock.c test_lock_SOURCES=test_lock.c endif eztrace-1.1-7/test/openmp/PaxHeaders.7332/openmp_nowait_c.c0000644000000000000000000000013212544237152020436 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.881987567 30 ctime=1508162365.537715613 eztrace-1.1-7/test/openmp/openmp_nowait_c.c0000644000175000017500000000301012544237152021617 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include #include #include // Debugging part, print out only if debugging level of the system is verbose or more int _debug = -77; void debug(char *fmt, ...) { if (_debug == -77) { char *buf = getenv("EZTRACE_DEBUG"); if (buf == NULL) _debug = 0; else _debug = atoi(buf); } if (_debug >= 0) { // debug verbose mode va_list va; va_start(va, fmt); vfprintf(stdout, fmt, va); va_end(va); } } // end of debugging part #define N 100000 #define M 10 int main() { int i, j; double a[N], b[N], c[N]; double r = 0; for (i = 0; i < N; i++) { a[i] = sqrt(i); b[i] = 0; c[i] = 0; } #pragma omp parallel { #pragma omp for private(i, j) nowait for (i = 0; i < N; i++) { for (j = 0; j < ((i / 10000) + 1) * M; j++) { b[i] = b[i] + sqrt(a[i]) / 3; } } #pragma omp for private(i, j) for (i = 0; i < N; i++) { for (j = 0; j < ((i / 10000) + 1) * M; j++) { c[i] = c[i] + sqrt(a[i]); } } #pragma omp for private(i, j) for (i = 0; i < N; i++) { for (j = 0; j < ((i / 10000) + 1) * M; j++) { b[i] = b[i] + sqrt(a[i]) / 3 + c[i]; } } #pragma omp barrier #pragma omp master { for (i = 0; i < N; i++) { r = r + b[i]; } debug("r = %lf\n", r); } } return 0; } eztrace-1.1-7/test/openmp/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135254017153 xustar0030 mtime=1508162220.365861569 30 atime=1508162286.775039917 30 ctime=1508162368.549978613 eztrace-1.1-7/test/openmp/Makefile.in0000644000175000017500000005161513171135254020352 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @OPENMP_FOUND_TRUE@check_PROGRAMS = openmp_simple$(EXEEXT) \ @OPENMP_FOUND_TRUE@ test_nest_lock$(EXEEXT) test_lock$(EXEEXT) subdir = test/openmp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__openmp_simple_SOURCES_DIST = openmp_simple.c @OPENMP_FOUND_TRUE@am_openmp_simple_OBJECTS = openmp_simple.$(OBJEXT) openmp_simple_OBJECTS = $(am_openmp_simple_OBJECTS) openmp_simple_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = am__test_lock_SOURCES_DIST = test_lock.c @OPENMP_FOUND_TRUE@am_test_lock_OBJECTS = test_lock.$(OBJEXT) test_lock_OBJECTS = $(am_test_lock_OBJECTS) test_lock_LDADD = $(LDADD) am__test_nest_lock_SOURCES_DIST = test_nest_lock.c @OPENMP_FOUND_TRUE@am_test_nest_lock_OBJECTS = \ @OPENMP_FOUND_TRUE@ test_nest_lock.$(OBJEXT) test_nest_lock_OBJECTS = $(am_test_nest_lock_OBJECTS) test_nest_lock_LDADD = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(openmp_simple_SOURCES) $(test_lock_SOURCES) \ $(test_nest_lock_SOURCES) DIST_SOURCES = $(am__openmp_simple_SOURCES_DIST) \ $(am__test_lock_SOURCES_DIST) \ $(am__test_nest_lock_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUDA_CFLAGS = @CUDA_CFLAGS@ CUDA_LDFLAGS = @CUDA_LDFLAGS@ CUDA_LIBS = @CUDA_LIBS@ CUDA_ROOT = @CUDA_ROOT@ CUPTI_CFLAGS = @CUPTI_CFLAGS@ CUPTI_LDFLAGS = @CUPTI_LDFLAGS@ CUPTI_LIBS = @CUPTI_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ DYNLIB_EXT = @DYNLIB_EXT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ GTGDIR = @GTGDIR@ GTG_CPPFLAGS = @GTG_CPPFLAGS@ GTG_DEPENDENCIES = @GTG_DEPENDENCIES@ GTG_EXT_CPPFLAGS = @GTG_EXT_CPPFLAGS@ GTG_EXT_LDFLAGS = @GTG_EXT_LDFLAGS@ GTG_EXT_LIB = @GTG_EXT_LIB@ GTG_LDFLAGS = @GTG_LDFLAGS@ GTG_LIB = @GTG_LIB@ GTG_OUT_OF_ORDER = @GTG_OUT_OF_ORDER@ HAVE_ENV = @HAVE_ENV@ HAVE_LIBBACKTRACE = @HAVE_LIBBACKTRACE@ HAVE_LIBOPCODE = @HAVE_LIBOPCODE@ HAVE_PRCTL_H = @HAVE_PRCTL_H@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LD_LIBRARY_PATH_NAME = @LD_LIBRARY_PATH_NAME@ LD_PRELOAD_NAME = @LD_PRELOAD_NAME@ LIBBACKTRACE_CPPFLAGS = @LIBBACKTRACE_CPPFLAGS@ LIBBACKTRACE_LDFLAGS = @LIBBACKTRACE_LDFLAGS@ LIBBACKTRACE_LIB = @LIBBACKTRACE_LIB@ LIBBACKTRACE_ROOT = @LIBBACKTRACE_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LITL_PRINT = @LITL_PRINT@ LITL_ROOT = @LITL_ROOT@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPI_CFLAGS = @MPI_CFLAGS@ MPI_EVENT_ID = @MPI_EVENT_ID@ MPI_INC = @MPI_INC@ MPI_LDFLAGS = @MPI_LDFLAGS@ MPI_MODULE_NAME = @MPI_MODULE_NAME@ MPI_ROOT = @MPI_ROOT@ NM = @NM@ NMEDIT = @NMEDIT@ NVCC = @NVCC@ NVCCFLAGS = @NVCCFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAPIDIR = @PAPIDIR@ PAPI_CPPFLAGS = @PAPI_CPPFLAGS@ PAPI_ENABLED = @PAPI_ENABLED@ PAPI_LDFLAGS = @PAPI_LDFLAGS@ PAPI_LIBDIR = @PAPI_LIBDIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PPTRACE_BINARY_TYPE = @PPTRACE_BINARY_TYPE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STARPU_CFLAGS = @STARPU_CFLAGS@ STARPU_CPPFLAGS = @STARPU_CPPFLAGS@ STARPU_LDFLAGS = @STARPU_LDFLAGS@ STARPU_LIBS = @STARPU_LIBS@ STARPU_ROOT = @STARPU_ROOT@ STRIP = @STRIP@ TARGET_BITS = @TARGET_BITS@ TL_CPPFLAGS = @TL_CPPFLAGS@ TL_EXT_CPPFLAGS = @TL_EXT_CPPFLAGS@ TL_EXT_LDFLAGS = @TL_EXT_LDFLAGS@ TL_EXT_LIB = @TL_EXT_LIB@ TL_LDFLAGS = @TL_LDFLAGS@ TL_LIB = @TL_LIB@ USE_BIN_INSTRUMENTATION = @USE_BIN_INSTRUMENTATION@ USE_CUDADIR_FROM_USER = @USE_CUDADIR_FROM_USER@ USE_GETTID = @USE_GETTID@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ USE_PAPIDIR_FROM_USER = @USE_PAPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CFLAGS = -fopenmp -lm @OPENMP_FOUND_TRUE@openmp_simple_SOURCES = openmp_simple.c @OPENMP_FOUND_TRUE@test_nest_lock_SOURCES = test_nest_lock.c @OPENMP_FOUND_TRUE@test_lock_SOURCES = test_lock.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/openmp/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu test/openmp/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list openmp_simple$(EXEEXT): $(openmp_simple_OBJECTS) $(openmp_simple_DEPENDENCIES) $(EXTRA_openmp_simple_DEPENDENCIES) @rm -f openmp_simple$(EXEEXT) $(AM_V_CCLD)$(LINK) $(openmp_simple_OBJECTS) $(openmp_simple_LDADD) $(LIBS) test_lock$(EXEEXT): $(test_lock_OBJECTS) $(test_lock_DEPENDENCIES) $(EXTRA_test_lock_DEPENDENCIES) @rm -f test_lock$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_lock_OBJECTS) $(test_lock_LDADD) $(LIBS) test_nest_lock$(EXEEXT): $(test_nest_lock_OBJECTS) $(test_nest_lock_DEPENDENCIES) $(EXTRA_test_nest_lock_DEPENDENCIES) @rm -f test_nest_lock$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_nest_lock_OBJECTS) $(test_nest_lock_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openmp_simple.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_lock.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_nest_lock.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/test/openmp/PaxHeaders.7332/test_lock.c0000644000000000000000000000013212544237152017244 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.885987695 30 ctime=1508162368.553978963 eztrace-1.1-7/test/openmp/test_lock.c0000644000175000017500000000261412544237152020436 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ # include # include # include # include #include // Debugging part, print out only if debugging level of the system is verbose or more int _debug = -77; void debug(char *fmt, ...) { if (_debug == -77) { char *buf = getenv("EZTRACE_DEBUG"); if (buf == NULL) _debug = 0; else _debug = atoi(buf); } if (_debug >= 0) { // debug verbose mode va_list va; va_start(va, fmt); vfprintf(stdout, fmt, va); va_end(va); } } // end of debugging part #define SIZE (1024*1024*8) int main(void) { int i; int *A = malloc(sizeof(int) * SIZE); int *B = malloc(sizeof(int) * SIZE); int *C = malloc(sizeof(int) * SIZE); for (i = 0; i < SIZE; i++) { A[i] = i * 17 % 7; B[i] = i * 19 % 7; C[i] = 0; } omp_lock_t lock; omp_init_lock(&lock); int somme = 0; //compute for real! int j; for (j = 0; j < 1; j++) { debug("loop %d\n", j); debug("\trunning parallel for schedule(static)\n"); #pragma omp parallel for for (i = 0; i < SIZE; i++) { C[i] = A[i] + B[i]; if (i % 1000 == 0) { omp_set_lock(&lock); somme += C[i]; omp_unset_lock(&lock); } } } printf("somme = %d\n", somme); return 0; } eztrace-1.1-7/test/openmp/PaxHeaders.7332/test_nest_lock.c0000644000000000000000000000013212544237152020275 xustar0030 mtime=1435582058.571899951 30 atime=1507797515.885987695 30 ctime=1508162368.553978963 eztrace-1.1-7/test/openmp/test_nest_lock.c0000644000175000017500000000346412544237152021473 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ # include # include # include # include # include #include // Debugging part, print out only if debugging level of the system is verbose or more int _debug = -77; void debug(char *fmt, ...) { if (_debug == -77) { char *buf = getenv("EZTRACE_DEBUG"); if (buf == NULL) _debug = 0; else _debug = atoi(buf); } if (_debug >= 0) { // debug verbose mode va_list va; va_start(va, fmt); vfprintf(stdout, fmt, va); va_end(va); } } // end of debugging part #define SIZE (1024*1024*8) void compute(unsigned usec) { #define TIME_DIFF(t1, t2) ((t2.tv_sec - t1.tv_sec)*1e6) + (t2.tv_usec - t1.tv_usec) struct timeval t1, t2; gettimeofday(&t1, NULL); do { gettimeofday(&t2, NULL); } while (TIME_DIFF(t1, t2) < usec); } int main(void) { int i; int *A = malloc(sizeof(int) * SIZE); int *B = malloc(sizeof(int) * SIZE); int *C = malloc(sizeof(int) * SIZE); for (i = 0; i < SIZE; i++) { A[i] = i * 17 % 7; B[i] = i * 19 % 7; C[i] = 0; } omp_nest_lock_t lock; omp_init_nest_lock(&lock); int somme = 0; //compute for real! int j; for (j = 0; j < 1; j++) { debug("loop %d\n", j); debug("\trunning parallel for schedule(static)\n"); #pragma omp parallel for for (i = 0; i < SIZE; i++) { C[i] = A[i] + B[i]; if (i % 1000 == 0) { omp_set_nest_lock(&lock); compute(10); { omp_set_nest_lock(&lock); compute(10); omp_unset_nest_lock(&lock); } somme += C[i]; omp_unset_nest_lock(&lock); } } } debug("somme = %d\n", somme); return 0; } eztrace-1.1-7/PaxHeaders.7332/doc0000644000000000000000000000013213171135504013317 xustar0030 mtime=1508162372.138292489 30 atime=1508162372.166294941 30 ctime=1508162372.138292489 eztrace-1.1-7/doc/0000755000175000017500000000000013171135504014563 5ustar00trahaytrahay00000000000000eztrace-1.1-7/doc/PaxHeaders.7332/references.bib0000644000000000000000000000013212544237152016200 xustar0030 mtime=1435582058.511899952 30 atime=1508162369.830090513 30 ctime=1508162372.138292489 eztrace-1.1-7/doc/references.bib0000644000175000017500000000566112544237152017377 0ustar00trahaytrahay00000000000000 @article{Coulomb10periscope, title={An open-source tool-chain for performance analysis}, author={Kevin Coulomb and Augustin Degomme and Mathieu Faverge and Fran{\c c}ois Trahay}, journal={Tools for High Performance Computing 2011}, year={2012}, pages={37-48}, publisher = {Springer-Verlag}, address = {Berlin, Heidelberg} } @article{Buck00DynInst, author = {Buck, Bryan and Hollingsworth, Jeffrey K.}, title = {An {API} for Runtime Code Patching}, journal = {Int. J. High Perform. Comput. Appl.}, issue_date = {November 2000}, volume = {14}, number = {4}, month = nov, year = {2000}, pages = {317--329}, publisher = {Sage Publications, Inc.}, address = {Thousand Oaks, CA, USA}, } @article{Agullo09Plasma, title={{Numerical linear algebra on emerging architectures: The PLASMA and MAGMA projects}}, author={Agullo, E. and Demmel, J. and Dongarra, J. and Hadri, B. and Kurzak, J. and Langou, J. and Ltaief, H. and Luszczek, P. and Tomov, S.}, journal={Journal of Physics: Conference Series}, volume={180}, year={2009}, organization={IOP Publishing} } @inproceedings{Danjean05FxT, author = {Danjean, Vincent and Namyst, Raymond and Wacrenier, Pierre-Andr{\'e}}, title = {An efficient multi-level trace toolkit for multi-threaded applications}, booktitle = {Proceedings of the 11th international Euro-Par conference on Parallel Processing}, series = {Euro-Par'05}, year = {2005}, pages = {166--175}, publisher = {Springer-Verlag}, address = {Berlin, Heidelberg} } @inproceedings{TraRue11Ccgrid, title = { {EZT}race: a generic framework for performance analysis}, author = {{T}rahay, {F}ran{\c{c}}ois and {R}ue, {F}ran{\c{c}}ois and {F}averge, {M}athieu and {I}shikawa, {Y}utaka and {N}amyst, {R}aymond and {D}ongarra, {J}ack}, booktitle = {Proceedings of the {IEEE}/{ACM} {I}nternational {S}ymposium on {C}luster, {C}loud and {G}rid {C}omputing ({CCG}rid) }, address = {{N}ewport {B}each, {CA}, USA }, month = may, year = {2011} } @inproceedings{Aulagnon12EZTrace, title = {{Runtime function instrumentation with EZTrace}}, author = {Aulagnon, Charles and Martin-Guillerez, Damien and Rue, Fran{\c c}ois and Trahay, Fran{\c c}ois}, booktitle = {Proceedings of the {PROPER -- 5th Workshop on Productivity and Performance}}, address = {Rhodes, Greece}, year = {2012}, month = Aug, } @misc{vite, title = {{ViTE -- Visual Trace Explorer}}, author = {Kevin Coulomb and Mathieu Faverge and Johnny Jazeix and Olivier Lagrasse and Jule Marcoueille and Pascal Noisette and Arthur Redondy and Cle\'ment Vuchener }, note = {Available via the {WWW.} Cited 14 October 2012. \url{http://vite.gforge.inria.fr/index.php}} } @misc{gtg, title = {{GTG -- Generic Trace Generator}}, author = {Fran\c{c}ois Rue and Fran\c{c}ois Trahay and Johnny Jazeiz and Kevin Coulomb and Mathieu Faverge and Olivier Lagrasse}, note = {Available via the {WWW.} Cited 14 October 2012. \url{http://gtg.gforge.inria.fr/}} } eztrace-1.1-7/doc/PaxHeaders.7332/user_manual.pdf0000644000000000000000000000013213171135503016401 xustar0030 mtime=1508162371.994279877 30 atime=1508162369.418054487 30 ctime=1508162372.134292138 eztrace-1.1-7/doc/user_manual.pdf0000644000175000017500000063660413171135503017607 0ustar00trahaytrahay00000000000000%PDF-1.5 % 124 0 obj << /Length 259 /Filter /FlateDecode >> stream xڅ=k0w%.SC dp]'&v+:t:yޗp B3cT2K 3,h\ >=ҳnZ~ϛ$(Ɍ5]b 0[.l5iU> stream xXr0+6zb mʫC8j-\Y5CE{un|:;x4aٙl|"pYLC~x44nH/> ^(yHyfǣ37JR|ŔpYǁ]5^/]DUmkQ&kuvEGUR%Idg߫t XbմVmLBUɀJkfWt{6uDw"8}fL 9++pr~2Ҥdb;9ERE׍l}>s1R]XkD$BY] Z{'eբcH:CCF= {8Q=I zfVkibaOGI@]{o|4j_j(,,*o>S. 5z7F]Q,yyCuFl4[OI0&@G;YUCMe|0TY5ou]qwSv_|-2ݗ/4ڸ0MixtF4>}ﳭ2h؃hcqZ49ÃZn"" nգ\fǘp#Y6`=oZS"|Xr:մ)c 5'vnoq4 Ԡ-dWS"& ؍uu;/!͛5B:|aW~/ endstream endobj 169 0 obj << /Length 119 /Filter /FlateDecode >> stream x3PHW0Pp2N!\n z !i zF &zf !) NI9EFFF暱!^p P273 C 3B endstream endobj 173 0 obj << /Length 1474 /Filter /FlateDecode >> stream x}WKs6Whr 5cѤ(zK3~^*Tf$ĕdvt/x(.Gqȸ_LAmAU,#{vH?QW$EG3"/p#ٰb9fgK\jۼ>d9"SɡZـa8}nPӃ\r\?frCoK>ҽzȇbqn&:Ѕy7UC jTdy}q7g'GdU@bxD{-m$`pDFߘ(zhle`R#9eD43.i9`qYN+J^dJ&FˣF`OgÞ.?20U#+9> stream xY]o}ׯǶ@Ak7v{kAL8(QmJh$pKrg̙CʑHVQ" E?H{E:z2=&6 zD2 Y%ړS.9X(i80H\"ϸc'#бq(D<f1"fb#ϔS&D)bA(:Z'N"ĀfJc"h1>F!bp@-LP&$sJás2<:$3ҠM\)8e+V#l2PW $BKj#c 3Ҡ##X$`@iF%qH#g^#>d1Z&ڴ[!En-@diz bMNvH uFJg<XّFw-7E,@V%1lQ0 x!D@aiɾj@r˛$l@h;YFt܁c {4~S]T4~ELo'M^g[7~)y9ϩ@'gЯc.,-d64EU>>ϧ +lлEQwẏLЛiy\ Yf墘]qK#G?U7dnkVrDxaa |&`}(1s! aj;ӻʼ,){ȧ Em8qޑчӳtt?+mηs?GǷF\69h MUbzj|ZM~GGdy^lCazѥӼܘ qR̠3nzfѥy&M16̯l@,&=_}7NL muVǢJQ7>Y>h+[S}hjmwVVqQ"fR&_ :evb ś!Pf 괺^<*~tRcٳt4"?)*tH趪$Z}x?+zrxq_JݠOJƿx1_|i|6GldaI $#GwZXme:ͯ.np7A't5Znwl!eNQr1]=?8,kT/@Ϫ^Rc6gy(sy#K>' +Rha5B !^`Y]M.1׫_ ?ͨ0:>* /N Iel]r ]vtVwmu\u\u\uǝ?q;wKc{4>_o_%nWoǗ2H)3R6r4xB^{|}a+°. x}Xp6 0UfSa9a=*SX.a#b><~qDxu[ If]]"䒶sɛ0:ubTrqNA0vwh.B(= 7QETh .h Z$oQ*3{ Fy9wن~m"G2gq2CZ%osL CpclkpU `IZoQ]w }RywO˼#M|l9Q_%̙8p;hTΕl48  'pxHfCHg|D^lֽ\),2oz0:̇]h`P4fmo +^ų^x!5}Մi_JD>Sh乻h_u$=:WNP831h$w_*MYSWlY a_._ endstream endobj 183 0 obj << /Length 851 /Filter /FlateDecode >> stream x}UMo8 W(kY ts6ej[lO&=Q(΢CEd~|$(Ҳ̋h8:2oRɫhF?Qvq" q߇OrVuX%Ik.S7LpJ6uŜPx6YsST4 قQG~ `#m|Efqv=ϙ3كS̶Nu o[fc8H`R=r`dWwl?.13+NuFgNS'(-ܶ!] E˟w*>y40 u{΀Z̴Q ȟ9f@eڀ ߤDZz2"ɴ"3~B W˭ry5j; mm(L)*Ѕcʺ_-ӝ!S [fA3MBS+(yy>^O,hDdt {98)82:5ÁRNZS'xsi#:g0S PO3s߱2W[4{gWB!HL<9@iְ#/2h7iբ%E^iB)D /,}" 92\s?! KR _1#w˰;$HhA[3~1uzoF*\I4iVM/ A endstream endobj 195 0 obj << /Length 1051 /Filter /FlateDecode >> stream xڝVK68'ڔ*df3dY4A0קEk!9LZ-`ʻ^dDJe0IXUݩh%$ѧOHg*)H |pJ[W]g&!jNRfdJ!}5:`tc\Hi)އD|{WBRTMQ "l^Nj(@’h0~P)^:/fOfq"Xrh*qzi6(ͺW}$D9(/h}6z Hy))ߣ?hJOm.a8a%g; hxI9%0_qe>wQXuP]vdۍ۸׭VV۸~@!^OD0~2 *I6XL|r)!Z_'$+|5 'Qc֟z3x;lS Nӌa0f(wfbWymUuD6X$4y,I(〟|㠰Qɦ5jف%$,5WfI槪p?0`pl}V[$O2[7Ĕ0Vv m& u=1Q]]nbmK.B32!sXX38dpQmb,$gv$;dߎ}=9ȭٻ l?ew\Z~ꩉLXzP]5 ~FKcvʲpӛg8N ;hIyY N(.!&hB.=#pzZg^3`sB+u׍O-ͅWҰ " aR$ژ %VKgT=saǦ=ӗ' a$ps3wݿI! endstream endobj 208 0 obj << /Length 759 /Filter /FlateDecode >> stream xڭUR0}+Pqq;`Em^CUgN=L,SY0}Hj eacgb?v>Nn_'DˉD|= ﻘr#y:xY<+%Ȑi*`=EF1pL/[%o2v4r0ChnUm2fyY-Llm8'q[{4y@앧jQpc"./_.>QS GQ-٪G8c+j"sh*NSB ;WYt0ׅOW S:|-x^D$8~Z;oKI/5{P.4Pf5V"Pɮ`VOdӴO0D{ZźB@AwH/iB&r5I4H<0'œQ4U&ǺQ8yrIf"+_$ǐPR OUU/B(Y;1Fo%f<6κ2C|ϻf/Fd.ˢ6#Pb$itI]fsgh endstream endobj 213 0 obj << /Length 1074 /Filter /FlateDecode >> stream xڽVm6~哑nlcW4kSS7EF;;p$Q_㱟yfah%wWIx~zy+tz1iƳHqCS&`x%dJ/oxJu^KUjhR{sCBjͯ8Ӥ \/1op+@FGLPOw X 8q蘣ez t҆*daPA߾z}n]JVT35#Kx{$yW+1>y%r[ `Uq[V]9&_ c`}`R>QySkiYT2uU2uy~oܖ/Ҷ:G.Cʉ3dc.Ecb_27{wLJ0E ̗ F)C&* nԐ4:jr,>T]HzөpЇ|Jygxr³ZgY~ӉOuv3> stream xڭXmo6_2P1HPKRt@Ѣ0(6m%A/I_;%[fXws-vhY俯W.DJŋDLl:d, @d2+ @tv1[f!1kĵbI .^mpKǵuQD3\26Y }9R L0ia8JQ(|sԱuç$:aA;`=YiI*Bm[bXu4fH;.S`z-?FESD]"XEE0n"MPͽ­rRHwrDeMr W_x>h/BȤӣ -.2wRt<">8A9ҍmh+| ),J*}oK>a X5%Qe2,cPaș 59 v']OO'A5~>DcH >HrTbpȗc}G[l8 50e۬/pUYδcCO-ki@W(FY1)Yb)wjdc:踬әH6:bZOi(t#$88\K9\ 72i䨱uav7UyDUj&H" Y7&󞢒êنo$j۹AZ^ƷNSL6a5օu2BDSA90p\ M$/>\fe]HN%\L/C$_4U[?a/"_Fż:߭}ZFau}];ƒ):$}1aos DV{}@ q1mZuΚM\P0@~&JA=Ӥ.G;4 10fC LUt89(P Ѝ0d~@u:7U^t92߈h);fBibzxo16;4p##M[||*3}C* BN?MZ 4JǷ͐*ȷdZU.w<5LT 2d@*ap)ih;:!sG3X8[}1Ǻ='Tǂ65./$`^q檡K'D0Tg1f|V't S T6'{S*ٌ}چg4Vo,3q?\'~>Pf2r_^ endstream endobj 222 0 obj << /Length 1274 /Filter /FlateDecode >> stream xڕWmo6_21`daA 5JUTKH*%>$O݄N~yGz~w~͓ c$ o6"O":|t|>u>4*Q|P*ZUdkN% Mjף$HѳZ%|~Sl6"5*}?pRC<!)fo)Kqw^ԝaʰ(Q4i̝^(d@qs9•9j/ A9d^@4^@ oZ`V@B\V*=6= ,F՗ H!e27P8'ivA:  !Ƣ\!?ط[N}׮AE&Y.4}"c 6ADkԘX٬W^@,-vdV`HX C ̱ikϛ0p?e1a1C/C]:@\`-T,]Q25'?!̖FS=_u-TXPwPTXg<_uJL?P{1&)?62F'!bЂU 4Pd_E5"?aݎgU* 1p(p ÝYe>ДYSd]t$ao|4@4W^Kf!?'<F1hj-S|Ĭ P{Eb ͩi&+9f΋OZ2+sf2P烎 ֜nΰ[[C"e!Ix4Dzja A aŒјD!t|r5[w9[:[=,Jɢ,L5hYҦu,vD?4Ҁhae?TZ*_S3ɏ&)XU#99ا|Å)dFe c:7ua?n1;p|C zc%S0r gQB,{uYړP {v9R?JMQ<'o8@UR}WᬟMRg|v)]J1$"#/\i1[.sBs*%c=WotYF(Id1r|koY8^/ y@l8hSljSԙMV7'-I콳5Ont U;a_Q^ex?u҉e9Bh '$ (&!-"0GW endstream endobj 226 0 obj << /Length 2313 /Filter /FlateDecode >> stream xZms6_ɗP7J_rɥ;=Lh$PJq_RLf. `X,vvGW#wˋ^h$QKh"T(p=!?GOh)q$yRΪ4Ot`W*)|=x?H"_w4Q0fCx,f96sżU -w;aI>VSq_um^J 7Hë)f`Cxy;NRR E,fQI {ʩ eGF최- zȄ\y}>2i̸?2۵(XY_p@DBI|u.-|Lxqm;t^Mo?T0Ҳ0-FhHWJ WF u1d: -ogHHAC lZ n,2Md(SVlH׃!OX[4^nW%H\g Xq@f2Y'Mf^Lr8 > IvL‰Kgܭsb0[j$O*B$9HwwV~S^EUz/~awݏ+I y.PUCAaՠl ЋVeiœHD):C u=%]b*DvL%k,:[֪UfU˫7η7ze{7 ?F(AH#mBlY<32" ޾ Aah/'lA5Fw)D“Q$ *P3*TRc*۵Ӈlqg+߳!nil6|PRyKjrѡJvʌzfI=t"X{SɱU?S/шTVV')lçK#BԢ222y se1iw.&st4]q'J5˦TΩ,;r{=^>* 8;y@DNC.[Ȍv^CB+:%1OB~WKV\e\Y)W1WEm9rs]mJx5E* pI[ (Cw-i'q's<lN;-*屢wzrpg;84#T[rfr=~)ъZ ow+Jæ2(FΚ)MMoXOH3SjBw֤u0@/=6< }}GP<-NAMI 26Wl=Dn=뾟Yd({ЍrZ2YTEAK'u@H=#UdpcCİ1t=9fKt`w/Ώ^L߽}y~tOGG`ƣfhmZŪLV4j%B ssh10oL-􈩉 sIA7}lE 2\E[(C $Bc nIq~YKjP4`qժ Wu`e2o ru:J8Y%سέ&@dC09"R:}L)Pq>8:P')*Jp~Y<9<> stream xXYoF~ϯDͽx胝Ga;-HBXM"q_ߙ%-ʴ@"-go&worƳ7G̟0ύM&jxeŸ,ɟ>}Hk9sIfQL<]ݥŔ9i;\&Yưt9sⲘitVD/S⁹%Ui,w{9Ie1CSr*Lf2UUV5rER:iMP8Iq9Q> wbvg;v, ;C:N ٦6F]98]:9Nv7 |1N~߃/^!nM5gOHDJ p5ا b4K ˻u(+2gOy7h=_;Iou7ά!bV{~ތ,{E`fL;(UB ˃ˏ`y2B~Z|Df"VlC 4llH ,ҺJD -%Gecr{BފHIzzSx໑[~D@Q(; ztWͥNh,a ^"f%ԑDbosf#2$!׹r.pui> ns}JξDnZ!ҊH%1f?xcQ/F=CE {:3^L-b2P%L<ܧhia#<0tn9@cSyMNL]'QŘ ;} ,v_S!ϫf`INU;6:=N.ޟGkd&}s+ֶgNʗ~gl'[Rz x)]rN>a>L]opd 5$f+:w`-kHߙj5 TE㗦?z{%w>-͐;Ew;5ϡf@ R"&򪴏eMSk% ]*`|Q; endstream endobj 256 0 obj << /Length 396 /Filter /FlateDecode >> stream xmRn0>1k+hiZ9u9X@D6ekgB['{flv ϻd2[ Ri-! 8g ?KHᗬ:eUْWx!ٜJP |9~1] WW[R#!!$Y *,@ǬC@6M}n/$"0}JD0pI5 ͖Nm c'׹3p*=^j#g U!CKoγK>UV6NC0j鎒 Q"r|QɽfDu{[B #wVVwsRE=ujOqVS-9 BѐߔE2( endstream endobj 265 0 obj << /Length 1787 /Filter /FlateDecode >> stream xڅَ6=_G3}JhQ(VBu%(ɓșp*F8\XSSPj_ezS/aJ ČҜPZOh=ӡ'HHkVsD^HRG(J2Ép/br(Ŋ i]  8`bdb9iɚτcH`\L:niMӯWq)zma̩`hYVb܂+ABDm9fRM+l2R7 SGvtV=i&a>V@ Bys|.d8z$# D·oUC:jcHG2#t " X:xbBXJڬ%A>$R'Cf:"C"hbUci$x+mzX.elp"_T̓Y)g /Y,Y6C=g(`؏ML Ԅk~Kĺ5ز2Put:Ӕ%,D# u)DZ+<%W¸&~=t?MI-x42 ޢиaIqlx"9y0M{*.p*GS3>9wHQ"[P&d1y w:b Rb۩|2]DGPD;K{F<`3gd\e}L}k7sf%P !㚇`wn-0nq- y^Ue:&j ?yo׆8u ѾBs!7M@sۃ  o:1*HHMБ1HB*k\$EY& JͲ g0`VMEDjjdN]^Sxfsu9)͉WLѰ@AqSeF shb'eYMyEAU@ a,nBB8]_'~SL r?z"XG..+ %K TLdpA,+Kw9AΕrʡZw=ݹE5{jiff[V"xC_ >9+=BLgl]!\1r }?bG[N>^.mT#VJ^_U endstream endobj 273 0 obj << /Length 1813 /Filter /FlateDecode >> stream xڍXKs6WHD $SO=Ns)HBw_$[ɉXn>݇T,RۙRrW"N*g[T 󇛤}24g ].u\ljPJg͏58OˬL|D0_$q ꆍkw8"8Ed۹^EDk<2 3Z{" ( jTTY,4IkS{|j罰} E@#TA%,]РE4 I28GqwIl67IZ"TY2S_xǤfkK{*"[uMo X;Q=ppF&1͵ro1eHU 1GvgJ<"pи504݁ə-]wmF\chtLuXG $ hِqMkQ w=^fj^`;KK~}\0Ph:8IΏF0ՀPyٳ7UizY<xά/Ѵh,A'١, Ѐka$422HfmrU>֙*c3s mw㞉$'f,*7;xRT3tS0tA#uY5Rw!>#i,.Fld&CIH xm8 X\4z~rp2qb*E@AB9[\P'!6of1Î9#``OkIH ?1`PV3wi awڱ=.{w=k"9y@Ge! tO.Y ^ӓgA yY/%z2t^xaXNdoAo[]p0s5V7"PݐГ[^;{6MNdx틫O|72E: \Bށu@*y;K X$ S,s kB_ppS\rW iͶt3D قp|yN eO6a8o>]`[TttCyEL72¨^ 8G]l,XK)IddY5hWu@/"+mP =]仿^jZ352msɂY%s/|t׋呈<[\#Є\Ea4ؙ"OAx:Ʊb Tzz= endstream endobj 278 0 obj << /Length 1644 /Filter /FlateDecode >> stream xڝXm6 _`_V,ɲp ]öQ;Kۯ)IZ쾜%Jb(>Cv=3$j8,,\ϖ_]vl3d[nf"f:E06,1x;Ouz[ͅ &iqn4۶+E'$93qSfL2 d] 25,Ϳ =ҧ|?i@_PyvXt;s9Oed}8ʒ!me<*DM\20d%qV^^$NȢ/6U/9`8G]EL6};>r5ʺug]÷$]EE;oiepVQI ~$%`Uxr<ǛoV߿_.n"Sl ᑳ۬Rjt&`4MvC{kHD~D~A[ D \hfՀ ۝H˛7欹#pHb4\M1 [ 5 ڜ$7:}U DJlܓm©hm쐲M~ڶ$X4P=\y]m-1fuӃ%'4g\-=W^ﻜC}h;9"Zoߢ,Mjj(3VSN$^_;`S,,yژ,%FXĉNw4Cݻz([u}޺r<2LQKMp[>1yRhLPkaO )?;(b#nDLSNaLu %V_PcK$ɋ̓OYcXjA O•Mft_ sbw?<“%+PTyٯ7/v/\$! S(=I3m¢TD0EÍqu9җ51h|]muůcD}gsDjWǗ-[V@E9 )yl_\0?B+x]Oa[AsOGLGڽʼnPqa1^ NsI_FbiHz) ܘDY+f/o L endstream endobj 176 0 obj << /Type /ObjStm /N 100 /First 862 /Length 1818 /Filter /FlateDecode >> stream xYMo7W^pQI4@  5|P5uNbKNHM.|/gq'oXτn_2x3~wgRxf px<?y>)ᅂEt0*Kp2XD<*l{`3ڨPE̋)xg(GAA:I!bHLqC0U)Ss›`HgO&8 Z sFM N"**-G BW TSdP:2ŞCS}УaP$VIl8Z* 1{ ,v)(Qb/Z✉&Qκ`4ŏDGtJ:0݂+:BF|БN6 F$y ~:2qT;0,a<#1v0a-l3ɪ)|F]/z3Jj(:EMFUQǜu$`+ˤ&,,!#C'&'z@blRRs)(@1<ۛ4O̱Ǵμ0 I6c",ht]L~QyܟË5ah⧷a:ƏghF܁Vj/a;cL4Gܐh]O7ݰ_|&͋v_.frqlk%&`SU3F)ijUa47i/_κדQ8my<:Q3lGn!r*"o%?4O@cΆ_O]yϣT o7R2[G@e|qvC>B%ZA,y/.r_RH\) X%8`Ks>foy`@!c\6ݵȊk,fPmӷo3NzdC +4 Y=BLk< ;+TO0\4y?=?Ӯyh]6/_tU2x%)N\owZ{-Φ墹Xce3[dN68=5 ` jkFrvJE[{<э`fA4~1S]y~>]5I9eݷܘ"'K&$ցCDbm8/څ IRM5uFHSt endstream endobj 285 0 obj << /Length 1575 /Filter /FlateDecode >> stream xڵXoF ޿ؾ@$͒ :lkkz$KGʱ\݂K<Nwr=X>]Dܝr3^DQ8\?,ד߭˽Jˮi{ZVhΊBߑ׳$sd[:eʪM˂%m9}VnBdSZ_| ;8Ol;ISKk,g߯*Xz+h5l/p xiՠsRZE2TSiCT+lMbUUe杲J,"+I̼yaפŖzlf Ecͼju7U1b8ri湁X4 oQD҂-DA'ח 1igȋ]VH Qle |8>ڳ<ȄOqqʷVJ#qS.p%aAU;>/&tK ~!׉HTRze;+z(D,d9VI);Kdk4b,ɓ27i0R!*;pQuvI ǏD Uk4Q^܄lc6e)6gd ]OKbVSm**9w\GvjYءZ/p羵eYFl  O"4R45o6l3 x \$ʤڸbt:%.,|:#0]sdMnF&G3tu0Z>UY4.i4ұSNyuouh0VwkJNPH!t.dluk{"}A1ݔmR $۴T~bRx^)D_K,8`dC#Ȫ56q@zyM50ume4&t9)31>#?x9$Eq0D ?) 8kĨ^ogUΡ}߭кa[8p=r=9'__7) 2r9R!DZ_z@/ @ib{y5kt]\ur2Q0*>\`6(r&{_q?l c2:q=.;uAGd FI-0C\DO2< @E$|[3cMKņTјkZ_ .MY&1WSU R`a:#E.pFg2~-ys@ݔ9ch*DrcPc>hGEhtO!w`&HYk |VVU~~(A !MO~pEtS/C;ш;9MEXj±k۪9ͶPשr6,3{V)3y6ܙ@Xwx Z$xSO*F!zioa{]Sԣ- zg|¦uQS@$ 2KQ^"q잌K~(pB7HQa' endstream endobj 291 0 obj << /Length 2098 /Filter /FlateDecode >> stream xڍXKSϯ*UX]`20 0)ȅw8 GN63O$Rw_J0)&SGO_i6aO҄NJ?e$r5I}Bz2 '?'dO0ddVteY`3'"7)%<}+K]BkGN|*VZ~x9IEUԝ:V(pNNh5\loB-a^ 6M㷐 !? C=6%l ̺RU]/bdeUBN:URgѠEuVf\uҨSw ,<>Z +jwY@*oӌi5 _][v/ts~F `YX7< ȑZ6<<ĄKHhWVЇH^]o(/ }>*T;G{Gay f{W@._Da!Mm R>7h>-YwPKZre 8i0MŹWflWJ2:{ l"ZKBG0)l,ts}TpvVsX`q`J^)vD:bM JVB1wv1oomfaጕas-Qy d{oʑ(|[|e^rϧq; ?A>~xCPc$rd{$5#s*J}0u{V>nQ0T,C}2w3fKP ,ާV7-1!t̏rd~ Fս.%;=G rmǽ00v: 6~2쉍WĞcO[={f|z(:,)FI8 4K#>6k@os|~82(=ҳ.֬Ѩn^j|nc"-@* <ͭ^Vd}D~d{et=Z]z L\37Be;EG ,̟|^W[`|ZE endstream endobj 296 0 obj << /Length 204 /Filter /FlateDecode >> stream xڕб 0+ (z/I E*AAAQp(Q|^mE\$|K.Ij:zm}> stream xڕн 0+C4_( šV08СG#ttp0! r$T< Nz4xBɮSlM#}dzA,]NI h#oQg‰JrۗHNN#80om[ӵx"mT#lG[X)iue0ۀ3+|RA endstream endobj 298 0 obj << /Length 136 /Filter /FlateDecode >> stream x3231S0P0S54S02PTH1*24 (Bes< =\ %E\N \. ц \. ?  ?o`0`(`H 0703310XB \\\˗! endstream endobj 299 0 obj << /Length 93 /Filter /FlateDecode >> stream x3231S0PbCK bU@tr.'~%U()*Mw pV0wQ6T0tQcoo u 6 \\\Tt endstream endobj 300 0 obj << /Length 164 /Filter /FlateDecode >> stream x3131Q0P0T52T05T03RH1*2(XCs<L,=\ %E\N \. ц \. ؀L1C)0 PB@B|PX5ـX :NcV  \\\- endstream endobj 301 0 obj << /Length 117 /Filter /FlateDecode >> stream x3231S0Pb#3c3CB.C HrW04r{*r;8+r(D*ry(001g | !h 'W % endstream endobj 302 0 obj << /Length 96 /Filter /FlateDecode >> stream x337T0P0W04S0T02TH1*2 (B$s<Á\ \ %E\N @AhX.O??}r Iz endstream endobj 303 0 obj << /Length 94 /Filter /FlateDecode >> stream x%@@ ݻHl!R )xOÌjSl7?ytRS!ᱟ $o ZHҌ%  endstream endobj 304 0 obj << /Length 219 /Filter /FlateDecode >> stream xUн@]X"yp7O&Bt),J-x`+ BX3wf>fQ6bG)38Afkbwq f̼)s>/'&t EP>{Z;f,OȞ?B]}t1LU|h!L+^ި=I T̝B?Kk Y +xir endstream endobj 305 0 obj << /Length 275 /Filter /FlateDecode >> stream xڅJ0顐}Ͳ º=ɃxR(y{(3itG&dfd^QAeE-Wt_g5G ZQmj_*Kz}y{Px[Uo @<9uf8g:&hFO^|IN{?,''Oi%_M ?KӴ L z@;u32<ی+٦ JfW-ƽ<%5ߒ uP:N}m endstream endobj 306 0 obj << /Length 245 /Filter /FlateDecode >> stream x]JPO\g Ds Zj"ZU`Ch(>Kf .;Mb٩qg%wq.M27Vl~k>?^.L*veS> stream xmѽJ@yppp` A+ RK EB>Z:_#o)B֙wGf6ł2 :):rjʒUyL=um;*K^qܤ5}thG[ RdJ " h"|<z؎t! #siD0$'x,.$cq/c,g J z\U endstream endobj 308 0 obj << /Length 208 /Filter /FlateDecode >> stream xб 0[VZ N⤎(}JK@ȗ.#fREP3sҠraJ !!Lv(]pgt.8÷ xY4}k]FhaZ7C|ݩxS)މZX* Sd endstream endobj 309 0 obj << /Length 155 /Filter /FlateDecode >> stream xڵ?AAWl2#dK$P)DRA98b|3z8*qq!lK,f!+zS/4qhTQy~1} 3MP u|f*ez7"ȅ``_St endstream endobj 310 0 obj << /Length 199 /Filter /FlateDecode >> stream xuϱ 0[z/imu* vtr'u\G#tPE#.p?" 01C8jfwF!xz-qb"G<)o)~􌍭omƻmjVFf+ɇclݟO2ΗVgvdMi5L?X:pc=_Чn3'VO endstream endobj 311 0 obj << /Length 300 /Filter /FlateDecode >> stream x]?J@"{3'0   BRUx #8IoEZ&>Sz ŋ( bVEk_k$BߩP")$ NHA?%A^ |6^@(.:\= )ʛɠWQY;XvrʚTf;<+fT QR8vʙYeKa hd'I~:t'mi ٪ #JkRBVAn+q饙 endstream endobj 312 0 obj << /Length 266 /Filter /FlateDecode >> stream xmбN@!$;/Hl<)L0Vjy팷ƣp9L0@eef./Zr)6r]VWVRŜzI;s;gۇ<p"OO-.47RDS4EYRzcfc=Th\KΕHg:Ád@ůq _e\o ә͌Ec@[ѵWKY6' PǝѶpl>6ȿmy endstream endobj 313 0 obj << /Length 208 /Filter /FlateDecode >> stream xe;0 T H*0V*  & ۣ(=BG`O1$N;f22LКhxLSg(J[4NA+]'z)9RLPQjN-rĄTD#ɉ~T?BfrOMPըs`;v)G/O7r$i%O#}jI$֣w{?(a/5sR endstream endobj 314 0 obj << /Length 261 /Filter /FlateDecode >> stream xMAJ0)]fa/sm+"BЕ quBQpG ihMIyM:dhOsj錎Oi'a?bKE67xK/lﮨfGO8ceID``g&@Y953ؕ#˙ fW<@ Es>(R :$V.bA*3J ʘsJڛ?&JI_B)Jr&| eDX#d? endstream endobj 315 0 obj << /Length 255 /Filter /FlateDecode >> stream xeбJ@?Lqy1;y),J--ɣR\g&w|'[1Ϲ#^<PSL[.V_ʘ^ߟ(__7|=PaH(fTA#{Ľ8=Nݯ#_+Atj֛4H`~AWQ~,@EkflF[b[Ϡ~-(N[NA/V袦?Fj endstream endobj 316 0 obj << /Length 214 /Filter /FlateDecode >> stream xUϱj@ `ZB'㐫S0NBc )-t͏G!z3HKh{~\.hN )')+,9qs<\>1-_ -ޱwz𐴶L 73nb. fV cFI, m%5Ҁ+IIbM/1Nb5'1UWwݦpt endstream endobj 317 0 obj << /Length 293 /Filter /FlateDecode >> stream xeѱJ@ [H^ .<WYZ Qn ;b!epn6} ?L=;^`eG3$++#8_nx~Ղ秗{/OK,nxAc:s`+ Ezb^ӎ^HY && ^T'{mGQPTjsIҋNJW1)T(@ I{;e$!I >A|Y(ߡ$>R'o')ᏤU?RD ~-:T endstream endobj 318 0 obj << /Length 212 /Filter /FlateDecode >> stream xM?@oH1\@ȻNbjະ)+P $`Nog7)SdgFA/}q7`o:Ph>ggiLjaDGIſ|:w/Hxx@@6/cGP!R^!'TH3=,њR;gXK%Hs$h%Ƣug+> stream x]ο POG@] b`955DS5f&>$)5}6+X8!C %jPfJ`Rjן旭Zz FB!‚_C4KhEoM> endstream endobj 320 0 obj << /Length 237 /Filter /FlateDecode >> stream xUαN@PL#0/ H3D+ cH 7Y0@IAXcClbv?;92Id#GdO!g^&^xWUc奼=]Iz/$w\G ~=BO \N nkm``\MdG :5">fg|w3ތT8ڦLH[e"48 6I|k endstream endobj 321 0 obj << /Length 193 /Filter /FlateDecode >> stream xm=@!$ S $&ZY+hfx=%-l,f&LC9QQф)LLs IK^nGՌ9owT p< AZ-@:hM,љTY(P zG߁ؐIavU.R8Uk Z B endstream endobj 322 0 obj << /Length 216 /Filter /FlateDecode >> stream xڕб @ !? 4?Z`A'qRGEC~Z?O[&\A.rIf>n,؃ҵṊw0 A.vAN(2pڂFh pi0@!D-%\"ōr"R\uTP\(z>Saا#|sfCuL1>|S$^Ik,b&rs\ ;] endstream endobj 323 0 obj << /Length 236 /Filter /FlateDecode >> stream xEοJ1YL2/ٸ{y[Z]!Vz ({h_$",I曯^SE 5=:|zӊ%+mmvssAUn @E2 Ȩ1JAE8Ab„rg|FÄ d]2Gd3Kꖂ''Bǥx`:!s\I`~zNx /[_TdW endstream endobj 324 0 obj << /Length 229 /Filter /FlateDecode >> stream xUϱJ@7^~@gfaŁuSne!Vj)`̧S"@-Fa0a.wӪ,NJ~CW5;;׈7vu{)%۵ܗ2{z- DfJHG"|Z֦Û)`tfTvh"?|@QZ計VШ@01E-e҃nO;`DhI|Ud" endstream endobj 325 0 obj << /Length 187 /Filter /FlateDecode >> stream xڅ1 @R,L^@ܹn),J-m5M)Sq793?<~Qq̇.6Ҍ􆣀žIgK]Gj!oCv^a JH˸;%BX[O ԎgU[kM4FF~xϕӁBT hњ~; 9 endstream endobj 326 0 obj << /Length 248 /Filter /FlateDecode >> stream xUαJ@YXrM.A\8O0Xe _|XFlR,3m/ʽe4ݜg4/6G,r|{eSVgrvy~L9]]c"-"46"n"ja g\ô 꽅}abZvLRȴWWqz=A腁=AFZp2Ǥ>}m1fxԑ0S!9TxR^ endstream endobj 327 0 obj << /Length 172 /Filter /FlateDecode >> stream x}1 @bم #BBRPQH!(9eٵ(E!/I )txAM )e8E!Q,LF.vQīI m%;L>?9:^j7N=j AvG ) E endstream endobj 328 0 obj << /Length 266 /Filter /FlateDecode >> stream xUAJ0?dQ^`0v:B[La.]WRU'GQ2xɢt|MUG^dy*W',WOxقt,ErHh,Z}> stream xUϱjP? 9/Pc0$Bj;u(ڎV2HQ#dt`]8x)?DxgDGNx/4/)|8Yb o7/ K7Sd蓺@7=bTEVӊUш?I4M;@AmQSuj#S}7~9`^B 詤tU endstream endobj 330 0 obj << /Length 190 /Filter /FlateDecode >> stream x=ο POG@]A(AAM T EmB/fo#AB߁;ˁ.=t谿6;)#ɭI;~=7~.ɄO.;gJ +92 = Y5"$*GE1_kMAێfb)n! a!"t5}6)G endstream endobj 331 0 obj << /Length 238 /Filter /FlateDecode >> stream x]ϿN0/!Қ?"R)ĀZF@j?y=D $|jr=.YMxzH]lo-_iVSȪNTBᆥ:'zzLfU/2k`&[~6bT~4Ѓ{Νh{FRDJ*+oFt:^Cf\8،&и%FӶt[ӂ~Jl endstream endobj 332 0 obj << /Length 182 /Filter /FlateDecode >> stream xU1 0_:`/PMCv(j3:9: U:zI!78QL#NN"# ÈDkg%- lcdrE,_ω#+h(  0RGC:k3dV4P` {@1gy9xΡoi|KZCf1.$n > stream x=ͱj`27h 6] fԡtҎ*:H|(V;QX\Fje%E)MT̂k1RvO1j}H9S B47Z4^7^;r<ȇ0)z!Be,; e__=FʼW|/Hd endstream endobj 334 0 obj << /Length 178 /Filter /FlateDecode >> stream x]1 @ )tMBą-,J-+GQrBt |(1%2EϨR.#ʒ;baPI(\4 ^nrJ1ʒ61E[4%o!Au4x@u/YqDwk;ppjhWO: m 837ġB endstream endobj 335 0 obj << /Length 216 /Filter /FlateDecode >> stream x51J@o";MBuS,he!Vj)x9a)BpSo\^]s-_Tܴ\ZKӶ5w1S WT##M~!J& zt9Fauޝ"Ya b&91ĐMJ^-}?9:o,Uێ;VF endstream endobj 336 0 obj << /Length 205 /Filter /FlateDecode >> stream xU1j@/L!]Xsx^"W.B*' v+h:aKxl%4ol9dxaa苬2g@˚%t§'3+~3Sb$PTh$&w;.Cչ Yw A HD)Ԁ TC8!#_^P=WDC)k VA endstream endobj 337 0 obj << /Length 243 /Filter /FlateDecode >> stream xUпJ@/l¼HSge!Vj)DN.>Z:_ca;SQ9m~ )T38,>')f(eHzB %m.ALsI7zkv+FQ"q I`{}w3 faB=3 ӍKM;t~='s.C˱ |GewUû%sLrȕ|ob3 endstream endobj 338 0 obj << /Length 230 /Filter /FlateDecode >> stream x]бJA?l0> %w'6 ^!he!Vjihw_le+B\&L/lEe/ˬb2b|y~e-Ag%Է*ayw>=IR4tI6FZt#?jvOG,I#1>- k`#؎ yD}Ñq ~`[ u^#g endstream endobj 339 0 obj << /Length 176 /Filter /FlateDecode >> stream xm1 @ iILT-,J-mMxB\'6OB(4]'v;,4.UPuDuI0v[>˙i7 w40`V.v^'VOȬh/|5V W5cjSK.[HG endstream endobj 340 0 obj << /Length 277 /Filter /FlateDecode >> stream x-J@gIy/I/a<V"E!bkk#lGfvbzZќNTQYSn^ͬb1r> stream xej@!0@yvM`A'Sc-<byzMo9lgJ[]f7q!㔓#za*ŐyziFvÔBd%~l_NW&Fs+\*R+p.)og6*Tj)h` arA?Dr8xuG+iN iJ!PAm|cyHn<Z endstream endobj 345 0 obj << /Length 208 /Filter /FlateDecode >> stream xڍ; @``s!sMUBBRPNb,SXhg3FNg.ikC@눂x 9_=ŘNx- Α)8J8W7~LxIXh9Z~W dQB&iH/lmڀ)-HN endstream endobj 346 0 obj << /Length 221 /Filter /FlateDecode >> stream xUϱJ@Ypa Z7/{I(E;0XݑˣQRn!93^:LOR -5O3Zc]G3,MFS+}bгT+\QM=`.If `kCt3ܛOZm\01it3(N䤲g7~`O=Nc3\Cpl:\ r u%oG endstream endobj 347 0 obj << /Length 189 /Filter /FlateDecode >> stream xڝ1 @EL70s @BBZZ( 9Z#XZ:IVt« 3Or#xjBN%7nt8SjImYǤ+]'RzΚT;l@TJ @ hxjze/ ]a;AdD/ak+?iTRS" }G@ endstream endobj 348 0 obj << /Length 188 /Filter /FlateDecode >> stream xڝ1 @EL/ :ͮA"EVbE$Nxg1q߄l">h.!Ǧ^OXRcR 7'e|ޏՌ5ٔs@ th~//iKxO`LГtIVx?>(=Cuڕ/@RriniMoEBs endstream endobj 349 0 obj << /Length 104 /Filter /FlateDecode >> stream x3230W0P0W52T02R03RH1*24(XCs< M=\ %E\N \. ц \. a0C \= h endstream endobj 350 0 obj << /Length 102 /Filter /FlateDecode >> stream x͎;@PggwAxJ!* %>Et300 UjrR豆iqA 5Tv̐ɩ p:_thq_h endstream endobj 351 0 obj << /Length 130 /Filter /FlateDecode >> stream x-ɱ 0 g 2'0-k3:9 TGAEfڢ|7lXU:x@='e; m;P=fpq}kw+*\ǣҟ;ZFy2ddL*R!sBY ,P# endstream endobj 352 0 obj << /Length 131 /Filter /FlateDecode >> stream x-1 @E?^ xЙmV"RP:ٙ&Nwo\%红V\xA=y1:nwՇ Y/ t4M22DT&2+<*B# endstream endobj 353 0 obj << /Length 94 /Filter /FlateDecode >> stream x3230W0PaCsKCB.K &r9yr+Xr{O_T.}gC.}hCX.Oz 0X [\w endstream endobj 354 0 obj << /Length 101 /Filter /FlateDecode >> stream x3230W0PaCsc3CB.K 'r9yr+Xr{=}JJS ]  b<]d7`= 1S'W fp" endstream endobj 355 0 obj << /Length 94 /Filter /FlateDecode >> stream xM=@PEx$^!R { T߱4J2:*54`ƴ"f@BJJ7"i endstream endobj 356 0 obj << /Length 90 /Filter /FlateDecode >> stream x3135R0B#C##cCB.C D"9ɓK?\ĐKCKW4K)Y(  $'W R endstream endobj 357 0 obj << /Length 119 /Filter /FlateDecode >> stream x3135R0P0P01T06Q05QH1*24ōRɹ\N\ \@q.}O_T.}gC.}hCX.O  .WO@.Ϭ{ endstream endobj 358 0 obj << /Length 175 /Filter /FlateDecode >> stream x331Q0P0bScSKCB.S1s<L =\ %E\N @QhX.O g``~?`g N}`o`F¢0?Q\\\ endstream endobj 359 0 obj << /Length 208 /Filter /FlateDecode >> stream xѱ@?Xf!FHJ"BJ--|1}_aau=΁egM]p,+qeL?&wXis)|›p1$Myƀv3|-{Pe!,GpPghFdPCWT-kCj( gf"{![ޗAftC endstream endobj 360 0 obj << /Length 235 /Filter /FlateDecode >> stream xmj1 ^=;Od-$AhO=Xބͣ{N"Q6>fB&?N'izmf4Z||DJƠz.rM/T%V~rEP@X8 \IU{3bY1Ez$'i=Sː†LBp6Pu 8:R [49޲&&Z'XΝ_%m endstream endobj 361 0 obj << /Length 209 /Filter /FlateDecode >> stream xڕ00#pO`Amd3ALd08Fgh< @ڴ_e4f, kӄqH2@5(xEB3 i3 5C8ZA/:L^pXpkFbIF2qUNCE>_c+vdn&~VP endstream endobj 362 0 obj << /Length 260 /Filter /FlateDecode >> stream xڭѱJ@? LaZ 4ܪ[-'BBRP̛*y+uvg!B#n;MG4Zly\Ѣ瞚-Sӟ-5#%_v^QdRPDZTRR OԵ@*(AWE],RIR57P&?2oƐ(~#FLg5=dF#zvL;mf&,mXJ[a # }R:%e-vvS=U:霾es endstream endobj 363 0 obj << /Length 194 /Filter /FlateDecode >> stream x3331V0PaS SsCB.S I$r9yr+p{E=}JJS ]  b<]Bc``D@.0L1S?UB7@`JJ=SP (<9P@=mrC%hAC!@ y`> stream xuб 0  /0 D4?/iLsqINƪ&v)9 O44FQ5o3j ioKk2 DdFLƤ1(C8^QDɰ|p1۽."byҀ)gk׿R?U~ endstream endobj 365 0 obj << /Length 166 /Filter /FlateDecode >> stream x353R0P0bSCSsCB.s I$r9yr+s{E=}JJS ]  b<]d `6`RAI68؀L2`%Hv0)"G'!P5Ⱥ AJ$ `G@%\=Mx endstream endobj 366 0 obj << /Length 254 /Filter /FlateDecode >> stream xڭѱJ@?l&yM"&`p` A+ :--7`kMg+ & XKf]{t\)pp{ =SuV=UvT]j__Z]>5(6S`-̗oնd IS03aLlB".!1Ox&pcJ&HۅrI)ܔ_,v0{ltT颧 endstream endobj 367 0 obj << /Length 125 /Filter /FlateDecode >> stream x333P0P0bSKSsCB.SS I$r9yr+r{E=}JJS ]  b<]?T b78) s)hb y.WO@.!7 endstream endobj 368 0 obj << /Length 106 /Filter /FlateDecode >> stream x3ԳT0P0aKSsCB.#3 I$r9yr+q{E=}JJS ]  b<]acW3v\ endstream endobj 369 0 obj << /Length 165 /Filter /FlateDecode >> stream x3133W0P0V5R0T05WH1*26 (ZBds<M=\ %E\N \. ц \. ?@"000=o`#?0o  0X0`ao`27Áq \\\` endstream endobj 370 0 obj << /Length 243 /Filter /FlateDecode >> stream x]J@Yr̡@&A[sjsɃxj= Qj(y=HДeDz~,//Ue7~_G8"Ǎ;ΟGΗoKWn6^D8I F"!:+2oa[87`d`+hLMfp&byiguf0~5jRryd* Sk_ N9Lxods-5P endstream endobj 371 0 obj << /Length 140 /Filter /FlateDecode >> stream x35ԳT0P0bKSsCB.S I$r9yr+r{E=}JJS ]  b<]d3 eR/i& 0 d`L?`@!\=Afl endstream endobj 372 0 obj << /Length 244 /Filter /FlateDecode >> stream xu?kP{<0p '% ur(vtـ]G|X#y=8. [~< 8:İ˵W|Ք.1wQ@jH>yo瘣1 ý 8hFx]*18yTB,a PM 2< fep\$I5+zG4VY5D NZ@fW'coQ! endstream endobj 373 0 obj << /Length 243 /Filter /FlateDecode >> stream xUпJ@/.0fMN?Sge!VjihkR\AKT֩$EuwM1f``w%=.>jRWRkRnKO/VSYZR7T@fm큼0 {düۘ=4]L3Ȧa@bli@T|`MLjb4L1dtFW$G *.|ؙtI6Dc endstream endobj 374 0 obj << /Length 239 /Filter /FlateDecode >> stream xڭ08#^@D'D::htGxWm~_LyxJsNgo(I5M7?/&~I#K CԼ*x1F%)dB 񑊅A8EjGU(Nk4, ~j}> stream x3535T0P0bS#SsCB.K I$r9yr+Xr{E=}JJS ]ry( , LS? 0adT Y;PCuP7 .ĵ'W K endstream endobj 376 0 obj << /Length 221 /Filter /FlateDecode >> stream xڕѽ 0𖂁#x/i*U ~I(}JK "&HrtF*8 q0Y Ȁf4  ״ 2o@.08BDu uf,HW lf(ze~ަ_Q@6+L6elZv,XKP~EԺe֩N=v< endstream endobj 377 0 obj << /Length 256 /Filter /FlateDecode >> stream xUϱN0 )K~h{=B @!Z̏F%Psw|J8êt0r^jE>U KWk=?ܻbuyJz_uEk?ƌ!fl#>3Z;@'7x &&ȖNm9R0!G/aEFD+E$ьMX^>a-M=:upǴ-i}GA^{sywָ+=# endstream endobj 378 0 obj << /Length 150 /Filter /FlateDecode >> stream x3Գ4W0P0bSsJ1*2" Fr.'~1PKW4K)YKE!P E?<@0g`A bP>T*L`)`J+F Hʃr Wr endstream endobj 379 0 obj << /Length 191 /Filter /FlateDecode >> stream x= @B\@7JL!he!Vj)h9G,Sl3X,fuVsmnFlzl @Hw4HH/I'S>[ِ҃C#^(>l \3X~ZPCAJ'BEH?4u7{-'ROr%xVݙ÷C qBszxa endstream endobj 380 0 obj << /Length 240 /Filter /FlateDecode >> stream xm1j0g1> stream xu1K0W v8b vtr@?')ΝCMHH^K^Y/PX.8\> stream xαJAYL"y.p1bLBASP=p2E8n@,ofgɌKWR+s8 5srzJ 5W7Y ~k%vTZ^{cٳUoC0˖*STB`ζ&%EQ0b43e}"_馡}l endstream endobj 383 0 obj << /Length 232 /Filter /FlateDecode >> stream xU1J@/&Gw@B,āuSZY `-G#liv|ߋ`fȟiʓRuMϕK]ټOӺVEͅF6}8rBG g@p voDD,ZNE- -FI2vpeDZdbtkt`el6X"d=y<"W.;_t endstream endobj 384 0 obj << /Length 204 /Filter /FlateDecode >> stream xm; @ . Vf.1L!he!Vji(X({8Qښ}i<"Ńf{Qj{T3Qes:.{TŘ4 5E&6%/_x/PAP02g0yp&dBw:+0}ATyM6Ӣ5l.5iK|T endstream endobj 385 0 obj << /Length 198 /Filter /FlateDecode >> stream x3134V0P0R5T01V0PH1*21PASKLr.'~PKW4K)YKE!P ETD0S$00|`A; 00* ?8Q"I&PMb`߁q ̍:]'W ckA endstream endobj 386 0 obj << /Length 182 /Filter /FlateDecode >> stream xڍA `'?(   AZDjX.̣y҅Tcu 7f: 5P L % MBb%_/#jƒ&Ύ҄Z{Ue5TƩ-ՇW6j@-OӉ;*`{^[bTd7 wSZ= endstream endobj 387 0 obj << /Length 198 /Filter /FlateDecode >> stream x3134V0P0V5T01Q0PH1*21PASKLr.'~PKW4K)YKE!P ETz !HԱ` |P=iu D)ph<krF=A?0`> stream x]1 @\B/ 8M(+Tr!bI q23;9nvdC)lGUgwIBf6$32d@fr@&m)2ϩ\^sϵ2HQRQO5QJrh MTrL@V@ endstream endobj 389 0 obj << /Length 141 /Filter /FlateDecode >> stream x3236W0P0bcSKCB.# I$r9yr+Yp{E=}JJS ]*c<]70| C`003a`\=&[ endstream endobj 390 0 obj << /Length 237 /Filter /FlateDecode >> stream xڍJ1ƿ00 v^@9Å+T[}> stream x3134V0P0bS CB.C I$r9yr+r{E=}JJS. @-\. ?&iNa`D~700n?D䇁$7 \\\y endstream endobj 392 0 obj << /Length 122 /Filter /FlateDecode >> stream x3230W0P0aCS3CB.C I$r9yr+Zp{E=}JJS ]  b<]0@A@8~? q0\=(CE` endstream endobj 393 0 obj << /Length 150 /Filter /FlateDecode >> stream x3236W0P5Q54W0P05SH1*22 (s< =\ %E\N @QhX.O  P?`E6?gc?P~.WO@.W endstream endobj 394 0 obj << /Length 196 /Filter /FlateDecode >> stream xڵ1 @Еir3'p.#BBRPQr0E:? d37u.{ʧHrCqJzƁGz$15x2`ts [R?L3؂rkm;x3HKv@%.oԐ nn**ɍ@ÔDr endstream endobj 395 0 obj << /Length 108 /Filter /FlateDecode >> stream x3230W0P0aCS CB.C I$r9yr+Zp{E=}JJS ]  b<]?0! ̃`qzrrƂQ. endstream endobj 396 0 obj << /Length 177 /Filter /FlateDecode >> stream x33R0Pa3scsCB.3 I$r9yr+p{E=}JJS ]  b<]?`@=:773n? Da`N``` O7Nszrr#߈ endstream endobj 397 0 obj << /Length 147 /Filter /FlateDecode >> stream x3134V0P0bcsCB.C I$r9yr+r{E=}JJS. @-\. ?00`D~70n?D䇁$0I.WO@.e% endstream endobj 398 0 obj << /Length 188 /Filter /FlateDecode >> stream xڍ1@E #0e6 &naRK v9GTd)HN^f̦ǚ95(EqߜR{cRkI ? ldM*H&g8^WSQdHVR!J*- i~ nN/ookg$AH> wlzZIK endstream endobj 399 0 obj << /Length 196 /Filter /FlateDecode >> stream xڝα @ HByuj;:9::(>Zp"]qQ |CB?2ܓ1G!#I:Ramd$V$fO"tٓH$R^K6ʯ\UW0/%>T5*4hy~> stream x3635R0PacCcsCB.# I$r9yr+Yp{E=}JJS ]  b<]3P?n3 ~o0ah`?PszrrjF endstream endobj 401 0 obj << /Length 195 /Filter /FlateDecode >> stream x=αJ@Xf x{`TSwZ * W6`"8%Gf|q~K.4pR^j<> stream x363T0P0T5T0P05TH1*22 (Ads≮=\ %E\N \. ц \.   W  @ @,?(fQ 0pC sC3=;?f.WO@.uH endstream endobj 403 0 obj << /Length 153 /Filter /FlateDecode >> stream x3134V0P0R5T01Q06WH1*21 ([@ds<L =\ %E\N @QhX.O `J`pB`왏I@.WO@.1c endstream endobj 404 0 obj << /Length 183 /Filter /FlateDecode >> stream xU̱ P#k[WJ' rjj Ɔh>`Phj @ B\Q#HEldȗ$"Sg3:.{|LVkRj_ ..X ,g0i) <p&A=j|c(vk]b=(ԿOI |F? endstream endobj 405 0 obj << /Length 233 /Filter /FlateDecode >> stream xU=KPs Xxv(zb`A' Q|A7|~Lx`7UN?8g!Aj"z$r~nhdHڙdrO/$GcHN* WUP6Aߴ45q " bx%tq_cGŲh;L t5<fOk2|+ZlECd(IBY_ endstream endobj 406 0 obj << /Length 210 /Filter /FlateDecode >> stream xMν @ )(> stream xUj@Yi nZ$sSEGQ|x I;=F(N8^D!qiIs ǔB3I-1QYAg//74gZv* 0ÿ+]SCE@QsϰF,IqSn/'gCb^mmjg`1'>ڟK endstream endobj 408 0 obj << /Length 183 /Filter /FlateDecode >> stream x%1 @@$|'0+AA),DQI:IUuO)Fh~!;:c̐ېዬQ֑)HpIH]RY#H[m(l2Oe-?uC endstream endobj 409 0 obj << /Length 188 /Filter /FlateDecode >> stream xڵ1 @EH!L#d.ͺB` A+ RK EBbGRRl6Pt+ǬƬ5$Ii;Xf$#aI,Dv$f,I(K~ |[jWopG!SE /zO6x+ӸY~uд` endstream endobj 410 0 obj << /Length 121 /Filter /FlateDecode >> stream x3135R0P0bc3SSCB.# I$r9yr+Yp{E=}JJS ]  b<]0001; aX*6T?0'W N endstream endobj 411 0 obj << /Length 228 /Filter /FlateDecode >> stream xmαJ@o"0M^ป'pWSZY `eh>J+5E~;Yct_^iC-/+9u'Zst }{} ,, %s'l"aAZқMY'W Tc| endstream endobj 412 0 obj << /Length 235 /Filter /FlateDecode >> stream xu1N0ЉRX`3',ZiY$R AE GQr[0"OʌǓ/^ҟ+Vɾݭ%+yxb>F:iy-29Q EPE6fLV&b&e6fՎY (y/ifU _ cBԨM>y2_ |Ǜjh endstream endobj 413 0 obj << /Length 188 /Filter /FlateDecode >> stream xڕν @ + At-('𮶵kotrP?Q_ I+F!=ړ,o)$G$'KROt8oH&{$S^zVSBĢ iAf1h.p;`Z \2oߛy544` endstream endobj 414 0 obj << /Length 226 /Filter /FlateDecode >> stream xڕϿjAna s=b!j WJ!`R nGG8̜EH:_1;dySpnyΟ9)_6[d?9oR&[}";YL9#;e銊Һ„pQ*+j .+xs7xĕ\ }rR /:tKuNTc'ې'jiT2Dׂ+X endstream endobj 415 0 obj << /Length 243 /Filter /FlateDecode >> stream xmJ@O"p}dXW0 j)h()SDm>{uuVZjG+9}Mjag"VNbkx|JV+-*@ Ps&[ D>#E@rI~2> stream xڕα @ HB}Ѽ]`A'u(GQ|TZ?$w#3ihdȎhC!s8cТZp*Yz?WS2f5wHPQY 4a:B@ 8 1n -SQR-8 d_Ѯ+J_> stream xMJ@Eo[8м$AB`B]W҅E ;#Ǜ*y{wquLZZj}%OR7KmN~&wlֺ₲<>H\i%Jo*-o])L O[ `;d1a3X`LpM6{{xSHp|tO01l6 i4,e3zwgRS@v伕+c endstream endobj 418 0 obj << /Length 237 /Filter /FlateDecode >> stream xu1N0бRD@\lBTE"T AKr!e3 gi_'aE5tB 2(_pӢ&1^_v7T]M=[b.'0S2*(ٌ`&p B!t 灼__Rc%ɞ 6{6C!Ic)A?XZ1IN+OVqY- m9 endstream endobj 423 0 obj << /Length 178 /Filter /FlateDecode >> stream xu1 @E Fc@` A+ RK E;=Z,S:ٵ^5?ј5 :I9~HEEj&%5;j@XNِ*ycXo*EXW#ot Oؖ-pw/GW_rQHt"u;@fKV/9- endstream endobj 424 0 obj << /Length 173 /Filter /FlateDecode >> stream xu1 @EX FbVj)hk<#XZq38%S֜0$I{Cg2 5IHvG*- BƤ쒯ہT!UqmXoV|Z4@;DOD/>{ O,<:!a3\ſ?g)D$:Z 4h- 6 endstream endobj 425 0 obj << /Length 102 /Filter /FlateDecode >> stream x3632W0P0Q5W06T5TH1*22 (A$s≮=BIQi*S!BA,B ?Ab\\\& endstream endobj 426 0 obj << /Length 157 /Filter /FlateDecode >> stream x3632W0P0Q0S06T06UH1*22(Y%s≮=\ %E\N \. ц \. r `,@Fៜy 7 `A@A@C6Փ+ 2 endstream endobj 427 0 obj << /Length 120 /Filter /FlateDecode >> stream x3632W0P04RеT02QTH1*24 -2ɹ\N\ \@q.}O_T.}gB4PS,<}Ch@;?P.WO@.]# endstream endobj 428 0 obj << /Length 108 /Filter /FlateDecode >> stream x3632W0P0W02R0P01RH1*22PA#Lr.'~8PKLz*r;8+r(D*ry(T0>;Q  2`8qv6 endstream endobj 429 0 obj << /Length 158 /Filter /FlateDecode >> stream x3632W0P0bcc#CB.crAɹ\N\ \@Q.}O_T.}gC.}hCX.O `,|5?G f`?30?8>,`?0 szrr'R endstream endobj 430 0 obj << /Length 161 /Filter /FlateDecode >> stream x3632W0P0bc#CCB.#K I$r9yr+Yr{E=}JJS|hCX.O?0po`83T~> f񃿁 @t.WO@.KeL endstream endobj 431 0 obj << /Length 190 /Filter /FlateDecode >> stream xڍ=0 ]uGi"" & Pz!#H#t8P#)~BL6Ř3챨P.I(,ft:w(%X1ِWotZ B`/]A^{GkDǝs "8p/.S endstream endobj 432 0 obj << /Length 160 /Filter /FlateDecode >> stream x3632W0P0bc#CCB.crAɹ\N\ \@Q.}O_T.}g E!2E? Py fA25Db$} s@1C1 {Aq\= XS endstream endobj 433 0 obj << /Length 131 /Filter /FlateDecode >> stream x3632W0P0bcCCB.cC I$r9yr+r{E=}JJS|hX.OȘ.b#˃3 c ÆC\=M\( endstream endobj 434 0 obj << /Length 188 /Filter /FlateDecode >> stream xuα @ A>^űP+x8[}M r`Z&ː@4SH1M"ҚN^Q+x̠ڑQ1*qFmiQx@ȗ4> stream x3632W0P0bcCCB.#c I$r9yr+s{E=}JJS|hCX.O!#!4\= >| endstream endobj 436 0 obj << /Length 113 /Filter /FlateDecode >> stream x3632W0P0bccCCB.crAɹ\N\ \@Q.}O_T.}g E!P E 9 ?\=f*H endstream endobj 437 0 obj << /Length 144 /Filter /FlateDecode >> stream x3632W0P0bcCCB.c# I$r9yr+q{E=}JJS|hX.O 3=`r| 2r66,cQ!'W|@0Ar  ZM endstream endobj 438 0 obj << /Length 165 /Filter /FlateDecode >> stream x3632W0P0bccCCB.crAɹ\N\ \@Q.}O_T.}g E!P E0 b(b9(b~$ތ̇C0b(bk0`y(\={Sq endstream endobj 439 0 obj << /Length 150 /Filter /FlateDecode >> stream x3632W0P0Q5T06T01RH1*22 !2ɹ\N\ Ff\@a.}O_T.}gC.}hCX.Oa0oocoa? ~0a] {Ar} wrzrrW]U endstream endobj 440 0 obj << /Length 187 /Filter /FlateDecode >> stream x}10 PiňTD$02`N6Fp8B!N'*'IH(txF24 ņBpk咮EDQVRò m+ke,f"cX9"&|;_--Ggܙy]G/cz6]\?@8/q_] endstream endobj 441 0 obj << /Length 204 /Filter /FlateDecode >> stream xM1j@oT4HVZ݂@T*EH4ncA.GJBh4. T[B+)Z{}/e/~ɰк߼meՈ{VX\ㇸӝRj*Zamb?159:EB#8 'd@Dr2ڀ9P)%|}7[B4A0vs:}#2b endstream endobj 442 0 obj << /Length 144 /Filter /FlateDecode >> stream x3632W0P0T5T06Q01TH1*26 (Ads<=\ %E\N \. ц \. G h01 Xg` 'W m[{ endstream endobj 443 0 obj << /Length 158 /Filter /FlateDecode >> stream x3632W0P0T5T06Q01TH1*26 (Ads<=\ %E\N \. ц \. A| ~2FCءb@?? 00r J endstream endobj 444 0 obj << /Length 168 /Filter /FlateDecode >> stream x-̽ 0>B LP)P+AAA9>cR~p;Κ9Vhkr+tm f-S0~.Q= *4qI9bH+MjT  3B-). #-%$s|;tI endstream endobj 445 0 obj << /Length 171 /Filter /FlateDecode >> stream x3632W0P0bccCCB.c1s< =\ %E\N @B4Pe,P1;>| ``0@:(Âj>0PH?`@~?s.WO@.eT endstream endobj 446 0 obj << /Length 162 /Filter /FlateDecode >> stream x3632W0P0bcC#KCB.#1s<L=\ %E\N \. ц \. a`XA=}C=C=CX0LS|zy'W 7 endstream endobj 447 0 obj << /Length 172 /Filter /FlateDecode >> stream xu-0ǻL<#은r $H,Zq9biy]0$ ~G|.PSpXgA`{ʀ\V g4s<.{bk\dF!|7EAR=SٔdEJWt ~y馼+yol?ǿ]NޔL[ endstream endobj 448 0 obj << /Length 170 /Filter /FlateDecode >> stream x] 0E_xK?! L")P+AAAѵͧS Dpz>*NhtxoW銭EA-*yAnQutTv9O `v587PD"D?D0A9J|upeq.L endstream endobj 449 0 obj << /Length 143 /Filter /FlateDecode >> stream x3632W0P0bcCCB. HrW02r{*r;8+. ц \. 0@l0ر`c`@7 j(cՓ+ @ endstream endobj 450 0 obj << /Length 144 /Filter /FlateDecode >> stream x3632W0P0bcCCB.c# I$r9yr+q{E=}JJS|hX.O bv|o`G\=<[ endstream endobj 451 0 obj << /Length 119 /Filter /FlateDecode >> stream x3632W0P0bcC#CB.# I$r9yr+p{E=}JJS ]  b<],"ؑ@6'W w2 endstream endobj 452 0 obj << /Length 144 /Filter /FlateDecode >> stream x3632W0P0V54U02U01RH1*22(Cs< =\ %E\N @QhX.O ?PP01 ba? ?`'W \O endstream endobj 453 0 obj << /Length 112 /Filter /FlateDecode >> stream x3632W0P0bc#CCB. HrW02r{*r;8+. ц \. Gz f8\?aՓ+ Ϩ0m endstream endobj 454 0 obj << /Length 148 /Filter /FlateDecode >> stream x3632W0P5f F )\\@`\.'O.p.}0BIQi*S!B4Pe,B<0H2?'8`@?? b\\\cMa endstream endobj 455 0 obj << /Length 137 /Filter /FlateDecode >> stream x3632W0P0bc#KCB.c# I$r9yr+q{E=}JJS ]*c<]7a??`H?#a\\\R_ endstream endobj 456 0 obj << /Length 165 /Filter /FlateDecode >> stream x3632W0P0bcC#KCB.#3 I$r9yr+q{E=}JJS ]  b<]?``cogcgcoao;V a:z{  2d>.WO@.=D endstream endobj 457 0 obj << /Length 178 /Filter /FlateDecode >> stream x3632W0P0T54U06V0TH1*26(@s< =\ %E\N @QhX.O` |:: ;<7~P=Q?L^s endstream endobj 458 0 obj << /Length 142 /Filter /FlateDecode >> stream xڍ; AЎ+ }燈麂(+G(a1 FC?f˾'5&¬9XywYNql-ࡒDE4'L*Jz#R"?OsՎY o"G endstream endobj 459 0 obj << /Length 160 /Filter /FlateDecode >> stream x1 @D*77@VbBmM> stream x3632W0P0bc 2WH1* \.'O.p#s.}(BIQi*S!BA,Cܸazp0?10a``BJ( endstream endobj 461 0 obj << /Length 127 /Filter /FlateDecode >> stream x3632W0P0bc#KCB.c# I$r9yr+q{E=}JJS ]*c<]72f?L!fb`?'W nN endstream endobj 462 0 obj << /Length 155 /Filter /FlateDecode >> stream x3632W0P0bcc#KCB.crAɹ\N\ \@Q.}O_T.}gC.}hCX.Oc Px??g`| >@ `X```o`r ; endstream endobj 463 0 obj << /Length 170 /Filter /FlateDecode >> stream x3632W0P0bcc#KCB.crAɹ\N\ \@Q.}O_T.}gC.}hCX.O@@5 ?j>00?``b@alC X/9 AaՓ+ uF endstream endobj 464 0 obj << /Length 183 /Filter /FlateDecode >> stream x] @ t^vuD CPѩ:}4GA]-~ qh$yS:xAIO&نGP{drI,YE%CҳfaJQi ф[}g*V3Gѳ4D@bѪ5qOD) endstream endobj 465 0 obj << /Length 167 /Filter /FlateDecode >> stream xM1 @EX2'p b+T ģ(9–So?tgunv8^v!ZӮqIg*gVlw2Fj$] ѼXq$-`j|:\cI:i!S|--m 9M endstream endobj 466 0 obj << /Length 131 /Filter /FlateDecode >> stream x3632W0P0bc#CB.#c I$r9yr+s{E=}JJS ]  b<]$lj? 0Q?.WO@. ;6 endstream endobj 467 0 obj << /Length 209 /Filter /FlateDecode >> stream xMαJA?\qa}0{1BVb_lGHqbR5Ӝ/WYMe(,x7On)s\QB{/ַ\SC#Fʀ ݣ N~d-\PŁ7lQ'I9W'H;~ s7}OH_FGx`M]tGN^- endstream endobj 471 0 obj << /Length 114 /Filter /FlateDecode >> stream x3631Q0P0b#SccCB.C I$r9yr+Zp{E=}JJS ]  b<]00>``O0ZՓ+ V4q endstream endobj 472 0 obj << /Length 171 /Filter /FlateDecode >> stream xɱ 0+ ?D'0iZM ftrC>Z1C 6wrZ,G8уā"Vz˯J-9#cDzŁEqʰ10;- 0q#1™3Zkg6T endstream endobj 473 0 obj << /Length 170 /Filter /FlateDecode >> stream x-1 0t{wMtB`A'utP:֣3jox?> stream xM1 @D'`ࣽ?B+!Fp Ab!j)r4o2$X8)fIj7Φꃞ$k;v8^$bJ͂Uӊk}ܟg1fNL;v/P"w$cf :ޠBR!e}ƈ1dXƕFOy ([=9 endstream endobj 475 0 obj << /Length 166 /Filter /FlateDecode >> stream xUɽ 0@ wr,(}/\ B}>J!c&cP1rl-I4R'd P%= -ib2jE\HNc5>Ȃy-CRL &ЄC827e, 721 endstream endobj 476 0 obj << /Length 171 /Filter /FlateDecode >> stream x=̱ P# ·6{^uÝ hƠAGºD(9CQ[EG ?ld$$6f|>]v$ɔW5e)ëQN{u߭B `@n<` @X>ppIF z1/ endstream endobj 477 0 obj << /Length 156 /Filter /FlateDecode >> stream x3631Q0P0Q5T0T06QH1*2 (Bds<L=\ %E\N \. ц \.  6 Q$0$0X$0`xpv6>0 @.WO@.}/ endstream endobj 481 0 obj << /Length 99 /Filter /FlateDecode >> stream x313T0P04F )\\@$lIr p{IO_T.}g E!'EA0XAՓ+ ; endstream endobj 482 0 obj << /Length 157 /Filter /FlateDecode >> stream x313T0P0U5W0T0PH1*26 (Bds<=\ %E\N \. ц \. @#HD؁:Q'@&> f0d82>3 df Dpzrr@: endstream endobj 483 0 obj << /Length 107 /Filter /FlateDecode >> stream x313T0P04F f )\\@ IrW04 s{*r;8+E]zb<]:\={-= endstream endobj 484 0 obj << /Length 191 /Filter /FlateDecode >> stream xm= @ x Ղ?` A+ RK E[)S,;h%Xfh< }:ex\T:8^pVQ>EmqF;)C}FE$ sXBט^Hȃ@?|bezYETZ_q-`R!a~K<.Kj/\ endstream endobj 485 0 obj << /Length 193 /Filter /FlateDecode >> stream xڕα@ .<} L &`qRG;[pqᾤ 5)+H+9s<^&|XLפ*L,r0S⺡MNMC $z11wx!"><Zi&N?>cH RaH'c ˁ:ѴmO, YK endstream endobj 486 0 obj << /Length 201 /Filter /FlateDecode >> stream xmPE4K BBrmM>}}V́;ܹiԥS=T'u9&a+NFF⻥OK+ VZ[( f#2;܃J>PDCv@Z }•cC 7'* 4u.7mp b2rcZI_ endstream endobj 487 0 obj << /Length 154 /Filter /FlateDecode >> stream x313T0P0asSCCB.c1s<=\ %E\N @BA,@Az H?*;&p4Aka[~ `1.WO@.^ endstream endobj 488 0 obj << /Length 253 /Filter /FlateDecode >> stream x}J@#E`}!k.p` A+ RK E#U(y[,gǰzqꜟJz`;볟 Z.(wk~x|ws%{/xv4lnfxYDdItSn\#7@efd=`El6X4jB*`f}E_h0bj1SL̀,x>v*!*:MƢ:?-y%ۧF@-7> endstream endobj 489 0 obj << /Length 161 /Filter /FlateDecode >> stream x313T0P0bcSCCB.1s<L =\ %E\N @B4Pe,B @d ?  B~oAd $?HzI8'W z endstream endobj 490 0 obj << /Length 132 /Filter /FlateDecode >> stream x313T0P0bcKS#CB.cC I$r9yr+r{E=}JJS. @-\.  @x@@?C1;}pA|.WO@.O) endstream endobj 491 0 obj << /Length 115 /Filter /FlateDecode >> stream x313T0P0b ebUel䃹 \.'O.pc.}(BIQi*Sm`Pz<7,{\W endstream endobj 492 0 obj << /Length 171 /Filter /FlateDecode >> stream xڽ= @[&G\@7!Q1#X^,7[n8ȃW3r9Al&]'-\,cx܎` s0 n ==Cbq1 SeKvI'mr/)T8R`5zf endstream endobj 493 0 obj << /Length 155 /Filter /FlateDecode >> stream x313T0P0bcc3CB.1s<L =\ %E\N @QhX.O$$PD2`$ȃ@H&?:7 q.WO@.ll endstream endobj 494 0 obj << /Length 183 /Filter /FlateDecode >> stream x}=@XLvNBLH0XF[٣Q8ab^2}KJ)*%Kw4 +@@)juE]VQzB[_P :9o.A@9(dq%7@'a/=ߵG.^Tyh p A!\\[>P: endstream endobj 495 0 obj << /Length 200 /Filter /FlateDecode >> stream xڥ= @g fI"SZYZZ(ښͣ[.(wS|7q4HRYs_8 LWCNv?$#(%p:lHj&5pGٌs V,S*7;(&A]t, -GT@8=F> $_ȥF<5ޯ endstream endobj 496 0 obj << /Length 158 /Filter /FlateDecode >> stream xڭ1 @ПJuj!Fp A+ RKAEh9JAqc![̃I`4-ØԈmjw쎜{Vky\Y\/|9êe_Hx+5C8#$RC\B"xo<Iw endstream endobj 497 0 obj << /Length 155 /Filter /FlateDecode >> stream x313T0P0bc 3CB.cS I$r9yr+r{E=}JJS ]  b<] @AH2`h AA~[@ Lx:B endstream endobj 498 0 obj << /Length 186 /Filter /FlateDecode >> stream x5= 0W:oN`B`A'qRGE7^̭ ء4ؔ? ,&Q@>0[}pb*Q)QzܟvI>>yG:J^]S |-,ZHZX:^<r[C准qzb&gaQ$L endstream endobj 499 0 obj << /Length 202 /Filter /FlateDecode >> stream xE; PEoH!LUBBBN!۲t @!L@,a̻{ې lfOÄܒZrɌOp>ܘW!kJ/LnRQ;H(+p{h/ O.ok> 44W&F&R$}xY& endstream endobj 503 0 obj << /Length 102 /Filter /FlateDecode >> stream x3235V0P0b#CCcCB.C Hr=BIQi*S!BA,A'W !$ endstream endobj 504 0 obj << /Length 111 /Filter /FlateDecode >> stream x3235V0P0b#CcsCB.C HrW04r{*r;8+r(D*ry(7?P70`szrrD7 endstream endobj 505 0 obj << /Length 138 /Filter /FlateDecode >> stream x3531V0PaScSsCB.K I$r9yr+Xr{E=}JJS ]  b<]V0RP %B٣P?bP8(.WO@. endstream endobj 506 0 obj << /Length 264 /Filter /FlateDecode >> stream xڅN0 ]1Drop @ZUt`b81# xlB$7bBb"~??;㺧j|ƶoE]p3A{)~=\SvK;rJxP0w4{\ .c9N]"Yp&Zmm1B`XX 212sP)HrL51UW[$tUݒYņ'r endstream endobj 507 0 obj << /Length 122 /Filter /FlateDecode >> stream x3235V0Pa#SSKCB.#C I$r9yr+r{E=}JJS. @-\. 0!("3#! F#.WO@.Nq endstream endobj 508 0 obj << /Length 151 /Filter /FlateDecode >> stream x3530U0P0bS#csCB. I$r9yr+Xp{E=}JJS ]  b<]1` g$m7>0`l@"$'W  endstream endobj 509 0 obj << /Length 187 /Filter /FlateDecode >> stream x%= P7.BBBQy[Hθb2+$+]n: 2/*NrN7rZmx]9]bJV9q*> stream x3634Q0P0bc#ScCB.#K I$r9yr+Yr{E=}JJS ]  b<]0<z @?bT 7~`@400cr pR endstream endobj 511 0 obj << /Length 122 /Filter /FlateDecode >> stream x3137U0P0bCSCB.cc I$r9yr+s{E=}JJS ]  b<]DbvQ$G%AÈB\ endstream endobj 512 0 obj << /Length 188 /Filter /FlateDecode >> stream xڕϱ @  Y6O`[ҥTAAAQPG#ttt $Byp :D%;摤8ߨ0XnlBuحVK>/'2%;%|AtG*A0`/PuF199a{Db#j3X5SS imhO_o`{ endstream endobj 516 0 obj << /Length 105 /Filter /FlateDecode >> stream x3634R0Pb#CSCB. m@ $ɥs{IO_T.}gC.}hCX.O!'W ( endstream endobj 517 0 obj << /Length 187 /Filter /FlateDecode >> stream x3332Q0P0bSKsCB.S3 I$r9yr+q{E=}JJS ]  b<] 9?~0a``cR؁:5S`)`R(C^ yP:5>Փ+ c endstream endobj 518 0 obj << /Length 291 /Filter /FlateDecode >> stream xڍ1j0a  jR'YbHSB;u(ڎZڭؾI=JIqT`$/VI~k,sOxym ɓYSH{dsf=;#ҍkTNUD38L41裵>+*bT)?d C~yE}QKZq<8ZTb+Ώ1ܼn NqA(F.gEㅸ$ > stream xŒ=N@ M!$)fE"T (AKrSXؓ,=S$_> stream xҽ 0-}V NlGpPz&M@ᗄ$$BgK|<p8s93d-!%_Vve9rȑx)QTŔxe4GzMa)["ei=AikLM!Ch.TC#ig^woJ-$KHWeN'Q<6?K endstream endobj 521 0 obj << /Length 208 /Filter /FlateDecode >> stream xڍҽ 0[[' I'|д@ໄ\.]=0փa:=)%!i> 2xށc@&]CuŘPq"p3q%ѫN(WUyx98 V6q1 D=$D/$|d endstream endobj 522 0 obj << /Length 173 /Filter /FlateDecode >> stream x3731R0P0b3S3 CB.3rAɹ\N\ f\@Q.}O_T.}gC.}hCX.O@>`AJ3Biz(m4?f 43+F3| @3hf4;`+hz~v1HiP~ r ϐ endstream endobj 523 0 obj << /Length 300 /Filter /FlateDecode >> stream xҽN@P\2 p Xg"V*4Q5&*< ƙ`Q{,̿,OsL1Ǔ 3/)7(r^L<k^gHVAƇ k4#g̫`Id KD-XHTHQd[;'n1i/j{;_ZX\?b. 꿫Q_%5tIs&AciUݠhNN SӤ#vPHDH&4MnLϕO!|&%Ig] r endstream endobj 524 0 obj << /Length 104 /Filter /FlateDecode >> stream x3137R0P0aK3 CB.cS I$r9yr+r{E=}JJS ]  b<]lQ3\=i% endstream endobj 525 0 obj << /Length 278 /Filter /FlateDecode >> stream xڍMJ0. o Hd8]ʅjtBQ讽WM0ϼW:(yĚt+ܲfshsat}e^-o.V?^RV T+xi[D2h; _Џ.#ğ Gf ,D# H_W3H| gQPMAP]r:)8P]ʂiP]͂.Yc႒4<]:l_@c0ώá%+/]z endstream endobj 526 0 obj << /Length 286 /Filter /FlateDecode >> stream xڽN0 sb!~U1U:H01s(};R!F:$_؎k{sqV xZa%>Wu kyzm 7,C ۻ+du쳇vι:>H%0h}GONhIl+"$>x$OA93H:7ICc0C0” d4rGZƹ3h醥A:w*8,;$qQRrWEg{ !Љ̳A:>6@ chٰu } endstream endobj 527 0 obj << /Length 185 /Filter /FlateDecode >> stream x3735V0PasC3 CB.3s I$r9yr+s{E=}JJS ]  b<]co100U@  P3 v,f[=n/O~085 )cpzrr\ endstream endobj 528 0 obj << /Length 305 /Filter /FlateDecode >> stream xmJPO"pyfaa]Vbv ɣQ)#\83w.x9zuhI5t^Sҽj-%]2on۸+n$>?^];z,i<H90w{1c]< h=Q=6 zh,݌$d1b׆ا#XA}ăiM֩S-dpAí$ r0cGݑ"y*\'5 К?)ԜhVVQnܽ endstream endobj 529 0 obj << /Length 162 /Filter /FlateDecode >> stream x37׳4T0P0bs3sCB.3K I$r9yr+Yr{E=}JJS ]ry(D11o``!`G0 5#Fʨ e02`'\\\T. endstream endobj 530 0 obj << /Length 208 /Filter /FlateDecode >> stream x= @G, &"),J--mMQ> stream xڍѱJ@9R7p p$p` A+J--m<=J!e|3\{% U*4V'o{apqxjC.gU^|$_ LTOG"'9|d@: f$j%Y#e%!-#,BW .$# 䄔;Y"Hg3xF^Blqb kmCSlʤ*)Y$%ˤKJvIɼtys>|^& endstream endobj 532 0 obj << /Length 232 /Filter /FlateDecode >> stream x}ϽN0Jl;Ta?pۜ7kBjikVb7/;8jC'_o6RsS-3[&0`Q0|T*M *pӌ_2 $Lo1ÔJc4|ݜ~82;eSz)<8`͊N9y{2hl endstream endobj 533 0 obj << /Length 214 /Filter /FlateDecode >> stream xڭ1 @E'l&G\@7E1#BBBQRgEv>'S &3!3c4#NqRdn uS:]L> stream xu=n@gbi|eYGH@TDjh> X VyyD%JC80/*v[ dvջ\/_Gvxv+١hJʞ2Ն(W FOFFl@&%`}b zdeL,>2~dgygL[41Ƕ hKyJ BasQ D endstream endobj 535 0 obj << /Length 167 /Filter /FlateDecode >> stream x3632V0PacsCB.cK I$r9yr+[r{E=}JJS ]  b<]700P?aA<$AD0H0 A6b#4o@ endstream endobj 536 0 obj << /Length 281 /Filter /FlateDecode >> stream xڕ=N0’!sHE"T ()@`)<؋$'{Iן5-5tA-ukZw75oZOv3RpC/^Rk-=ԣ/qZqg XxqdWjIpnIUi+W%KK"5-CiK #;A58E, k΢SvYlK S^`%*#G4dPɲ1:^.eiiC%>+^ ~ endstream endobj 537 0 obj << /Length 167 /Filter /FlateDecode >> stream x3332Q0Pa3 TH1*25\Dr.'~)PKW4K)YKE!P EObPFS@ >? uBP?(lԁD(.WO@.Jm endstream endobj 538 0 obj << /Length 131 /Filter /FlateDecode >> stream x3634R0P0b#KsCB.#1s<L=\ %E\N \. ц \. 5 7?D # P?P1?H{pzrrD endstream endobj 539 0 obj << /Length 107 /Filter /FlateDecode >> stream x3634R0P0bc3KCB.#S I$r9yr+r{E=}JJS ]  b<]0q7c.WO@.S endstream endobj 540 0 obj << /Length 209 /Filter /FlateDecode >> stream x? P C!;Bs_ZA,T;:9::( n>'GoqQzJcߗdڍZE5eujh}OSXcu4vB{%gQh@&lJ2DxbΪUdK 9T`P+XU.> stream x3332Q0Pa3 ebUej 䃹 \.'O.pSS.}(BIQi*S!BA,C}?7T10@ 6P?|'W [ endstream endobj 542 0 obj << /Length 213 /Filter /FlateDecode >> stream xڥ1 P #B[SV N⤎h=JбC1&E\|>?dј>c &tA$GOX4 "4 %]/#d5#MJ[h6%y=\0`..Y尀AK<@\@Q#6-WQwu;Sw ?kBKn&j״1a>7k.sk|]ŏf endstream endobj 543 0 obj << /Length 227 /Filter /FlateDecode >> stream xڵѱjAY,i|tNWbe!V&e->B|-XDTX>euڝLJ+Hޗ,ה?8G۹)ϲYo؎^$e;E*ɒPS݁T+(5OT@u%BMwF=poH-eua~nl]Tȇ`1)6AbXi DA O  endstream endobj 544 0 obj << /Length 161 /Filter /FlateDecode >> stream x3137U0P0bcSCB.cK I$r9yr+[r{E=}JJS ]  b<]oH?1"~`? L7?bl'W n endstream endobj 545 0 obj << /Length 223 /Filter /FlateDecode >> stream xE1N@ E?b%790;"E"T (AKq%GH"4o4v]_+^sk{w6[{T^o(=fKdJ~|Q_stgj8UR:EZ ʷcVG@VjU'3rع: Fg u1vM#bj2;4@* endstream endobj 546 0 obj << /Length 173 /Filter /FlateDecode >> stream x3135S0P0R5T0P03VH1*26 (@ds<M=\ %E\N \. ц \. Xv8'=3,X w'C=`?`A<7@ ? r  ,t endstream endobj 547 0 obj << /Length 166 /Filter /FlateDecode >> stream x+@i*6#06&$  (D@@/G[58"e9P!Zj Z)%eʡ^Rv3:N[|LuM+C]MD ! a9PIcУd/-x>o;w*!aVB78\ d endstream endobj 548 0 obj << /Length 216 /Filter /FlateDecode >> stream x}=j` `-A䳋M)PH !SڱCC |'ꫯo4J$QLS<Üh'+v 3v/ز^e`7O$e7e*Ɋ*#3Qs;*ؗ /@ih#2+1@[|iơy(sG=ַ G#ʳpH endstream endobj 549 0 obj << /Length 234 /Filter /FlateDecode >> stream x}N0(C['4R[$2 ĀlUGK$/ 0ղOeu%\s][E;jjXƇZw䟸-?_o-p НiB1E mQ,GE!A0)29÷N3DhIA i17VpH4Y0Ml3ÐEgP1jDEKێ(k endstream endobj 550 0 obj << /Length 267 /Filter /FlateDecode >> stream x}ϽJ@Rn7p h~(b`]VbB !y&)Sdw̙SRqKu&Zso\iLs9 gRiή1笹ַRpBGn6b-eFGZ0Ucc^pG))$)Y= Ư㗥itjuGj wAlhA_Bg6UT2u2Ho^_˄>> endstream endobj 551 0 obj << /Length 126 /Filter /FlateDecode >> stream x3530T0Pb 3SCB.c I$r9yr+[p{E=}JJS ]ry(000```` H0@,0%#zl'W  endstream endobj 552 0 obj << /Length 266 /Filter /FlateDecode >> stream xmбN0|G/qCyfίF0t^ߟlߣO;O$9 1!rHdڈ4f&pBl9{Ð68,ִ/vKqbҷ+tي%+NC7"EB8сVP #RI*h~j:Rᕤ[Il`Φʗ'& endstream endobj 553 0 obj << /Length 258 /Filter /FlateDecode >> stream xڅN` {@ $g%^Ltr0NzGh< @= icu]RHRb)U?XHUw>5?1r~geΛ{p~z< 7g!ґRUcR;Q2QP:X Ja2m0{tƔyl[J8 XϠ-AvHxiOzMYSgčV6oGbǝ2ClčLU[ϟ]~(6?d endstream endobj 554 0 obj << /Length 216 /Filter /FlateDecode >> stream xڭбjP r7DpI *NJ'utP-4|-7_խmzޏs/{Ck#ґS]ŲdbkFR̋&1 {*|ZL4XL_m̛3ul󇚴] I@BI /s'sABNjAOB/#&-'5o#Rԑ endstream endobj 555 0 obj << /Length 253 /Filter /FlateDecode >> stream xڥ1N0 `?uGx^:bF4G  Gءj]&`>EIc;Gy:r>fG}=~@{M;vyJn-2ЀL]_~EI-jV8Yz&? }Bs훃$ShjMM|wSSYN-Nm8NZT2f5JD 2Mr[μ̐51= x_d endstream endobj 559 0 obj << /Length 197 /Filter /FlateDecode >> stream xڍ `4w/Pj)MPԚ>#46_Gth =(TWC# |=yrϭ3;/ft싳^l,N+=u-',]ƠBR"/ w]OJ Hѐ4MJ0?_9.6վэ-iN͋eVL endstream endobj 560 0 obj << /Length 196 /Filter /FlateDecode >> stream xڍ= @ GbVbh%GH"/Vef Ʃj?8$C(gbg(X]r;fwPL@ | ~nF <z/@:Mrp\3]8[FihHOҙAHVxuO endstream endobj 561 0 obj << /Length 197 /Filter /FlateDecode >> stream x=;0DQ m#'1Q.@T@Ip'Xz&p:SN8qjhBq&,d p’r^ %mW|O w=ْ\%NfN‚R8Ԏ;?]Aq !帿;$EC3NMYBvҶ6n* UKe endstream endobj 562 0 obj << /Length 194 /Filter /FlateDecode >> stream xE10AH MR.@T@I< )) bex{6G9avὡũ4!H#8%5))z -lH1r-9 "HE H$;5ƚ2 @Ll)a7lI3G+lJ endstream endobj 563 0 obj << /Length 110 /Filter /FlateDecode >> stream x31ӳP0P0TеP01Q03VH1*22(Bs<L=\ %E\N @BA,BQ? C GG\\\0oy endstream endobj 564 0 obj << /Length 112 /Filter /FlateDecode >> stream x31ӳP0P0VеP0P03VH1*22 (Bds<L=\ %E\N @BA,B@ C \\\HB endstream endobj 565 0 obj << /Length 106 /Filter /FlateDecode >> stream x31ӳP0P0UеT01R5RH1*26 (C$s<͸=̹=}JJS ]  b<]L!W51 endstream endobj 566 0 obj << /Length 143 /Filter /FlateDecode >> stream x31ӳP0P04S02U06V05SH1* !T*9ɓK?s{*r;8+. ц \. ?조1aPoP`L.D endstream endobj 567 0 obj << /Length 118 /Filter /FlateDecode >> stream x31ӳP0P0V0W01Q0PH1*21PACDr.'~PKW4K)YwQ6T0tQ``a:S$G`1j%r > endstream endobj 568 0 obj << /Length 142 /Filter /FlateDecode >> stream x31ӳP0P04S54V06R04TH1*24 (s< M=\ %E\N \. ц \. ?aC??@P`4,r endstream endobj 569 0 obj << /Length 96 /Filter /FlateDecode >> stream x31ӳP0P0@P!Ő H(`\.'O.pU()*Mw pV]zb<]\= endstream endobj 570 0 obj << /Length 162 /Filter /FlateDecode >> stream x31ӳP0P0UеP01R03VH1*26 (Bds<͸=\ %E\N @BA,<b@N ?8$D D`#2f2X3Iq,63 *@'W yK/ endstream endobj 571 0 obj << /Length 104 /Filter /FlateDecode >> stream x31ӳP0P0@dbUeh䃹`\.'O.pCC.}0BIQi*SPE!'EA0XA0Փ+ 9-I endstream endobj 572 0 obj << /Length 111 /Filter /FlateDecode >> stream x31ӳP0P0V04W01Q0PH1*21PA#CLr.'~PKW4K)YwQ6T0tQz ?*1pՓ+ JS endstream endobj 573 0 obj << /Length 102 /Filter /FlateDecode >> stream x31ӳP0PP04W0T02VH1*26PA3Dr.'~BIQi*S!BA,B?ĸ\=E:( endstream endobj 574 0 obj << /Length 102 /Filter /FlateDecode >> stream x31ӳP0PP04W0T02VH1*26PA3Dr.'~BIQi*S!BA,B?ĸ\=E:( endstream endobj 575 0 obj << /Length 118 /Filter /FlateDecode >> stream x31ӳP0P04P0"sSsCB.#39T*9ɓK?\ȌK(ΥPRTʥ`ȥm``P !\`߀ Apzrr]7 endstream endobj 576 0 obj << /Length 172 /Filter /FlateDecode >> stream x31ӳP0P0bS3CB.rAɹ\N\ &\@Q.}O_T.}gC.}hCX.O&4Ŀ,`ꀐh2B0 0`@?D0pzrrV endstream endobj 577 0 obj << /Length 262 /Filter /FlateDecode >> stream xuN@ u%+ iCN*E"L 22`7 or}g!uIg ZTW)Zg\5QUc~%c̛kz{}|usA^}I6k Fe`<@!cf0?]p sېy&dH}8*v%Vf51СJZ FGY&I⣽0n5FzPEZI7s.^6x*H endstream endobj 578 0 obj << /Length 201 /Filter /FlateDecode >> stream xڕ1 @E'l&GȜMFQVbIx--qFj%.̃^ )LKb> stream x31ӳP0P0bSSsCB.1s<L=\ %E\N \. ц \. P߀ J2~~d|"N`%값 hL F'y,$33oAYՓ+ H06 endstream endobj 580 0 obj << /Length 198 /Filter /FlateDecode >> stream x}ϱ 0 [|TkI Nj}>JcҘ 4蠄|4;.ˇ)Jq)+di#  3 bnA5o3bDTYk[z^DyÒ1 <§QSHhUsjD0N/QG<T]KDbh@C63K[xGj endstream endobj 581 0 obj << /Length 230 /Filter /FlateDecode >> stream xڥбJ@/L i +PysQ%o镶={[r\/䶷\C#;"L E(JdG)23!_#2C[{GE{ʐ :Z2 fFb֘9e)QSFO?V2C鎾?9ru endstream endobj 582 0 obj << /Length 197 /Filter /FlateDecode >> stream x31ӳP0P0bS3CB.C I$r9yr+r{E=}JJS. @-\. 700& @Y4$)&?H L2A :0Y&q RbbH.C _@|A! HC, !݈I endstream endobj 583 0 obj << /Length 149 /Filter /FlateDecode >> stream x31ӳP0P0bSS3CB.C I$r9yr+r{E=}JJS. @-\. $BփI uD6`D2JOĥj2|$(47Ae\=WD endstream endobj 584 0 obj << /Length 141 /Filter /FlateDecode >> stream x31ӳP0P0bS3CB.rAɹ\N\ &\@Q.}O_T.}gC.}hCX.O$3``'Lȁ|DAjD  \\\, endstream endobj 585 0 obj << /Length 230 /Filter /FlateDecode >> stream xڕN0/?BՅv`b@Lб $R_.jKŊ-}oﳻͦTИJr&7R+Ly?ocv~K*^d`dPɑaDZN{8;@Ά:0GdzT 3#'d!Q M4 >15Ȏ×t*ć5 endstream endobj 586 0 obj << /Length 114 /Filter /FlateDecode >> stream x31ӳP0P0bSS3CB.1s<L=\ %E\N \. ц \. p,~BĄ'W NP endstream endobj 587 0 obj << /Length 105 /Filter /FlateDecode >> stream x31ӳP0P0bS3CB.c# I$r9yr+q{E=}JJS ]  b<] 0 %\\\6Qg? endstream endobj 588 0 obj << /Length 126 /Filter /FlateDecode >> stream x31ӳP0P0bS3CB.rAɹ\N\ &\@Q.}O_T.}gC.}hCX.O``'!P:'`b\=jo endstream endobj 589 0 obj << /Length 201 /Filter /FlateDecode >> stream xڭ1 @4 \kP1),J--!9D,,T]S[̃3nQ*9zK5.sWj9!!qSdaV o,cP$nPPBz@Q(>Zll/5.K=&Mإ(o9)[-_m0v`fs8 endstream endobj 590 0 obj << /Length 199 /Filter /FlateDecode >> stream xe1 0-wӖZtP*AAAQPPRo7iqpT I( 8{~B&6}\9Ol[L,7@g@GEq;>:@8w^@8@X&as!eV^zH4 6Q25> stream x͐=@XL #V &naRK (҂.C l}/N竌BJh&)^PF ] 厹Fq(Eu1 }C$QtQZۂgmJ9Հe 7Fд?oaF k ,|_F&h endstream endobj 592 0 obj << /Length 182 /Filter /FlateDecode >> stream xڭϱ 0H^{ӐZZ+AAA(}$]8N KM9&xg,\Od+ f.S0~ ,Ђ)qo19/"jB.P;UuDF 'aybhF4j-iMːO*"`a oƅt endstream endobj 593 0 obj << /Length 218 /Filter /FlateDecode >> stream xڝн 1 Y|;? N⤎磝"b/Y>Jڤu)&cjiɈZ=qYh>&xޡG*hɘR. eى/".Ҭt ҪwVhO/o2C xBbMn7ݥ| "Ԁ3ï>$$J endstream endobj 594 0 obj << /Length 250 /Filter /FlateDecode >> stream xu1N@E'rai=1IL,  DѶ. (ig?lncQiں'Tl=yE&lk\FZ,6KNZa| 9|t5iûH Jbz<rd'0 (9qp&8 %?cFi=H^Q #t)g/pxLkDυ3zA endstream endobj 595 0 obj << /Length 127 /Filter /FlateDecode >> stream x31ӳP0P0bSS3CB.1s<L=\ %E\N \. ц \. D?`OY$$ ;R?$XՓ+ VX endstream endobj 596 0 obj << /Length 174 /Filter /FlateDecode >> stream x1 @ ) fa n!he!Vjih-GL2 +7&.&RY S2sjOƠZKFe7?/4#ڂJ"nݯ;QO7ZB؈U$fMYD@ ϝf+;|WW endstream endobj 597 0 obj << /Length 197 /Filter /FlateDecode >> stream x} @\|jU$A:uNձCQWQ /mU%v?,Ŝlriz mgCsb ۓ"[YyAm }$E'}2FZ_V7W?Wei f )XP>V*5yMg9V/zVJAf9'*LCx8 endstream endobj 598 0 obj << /Length 210 /Filter /FlateDecode >> stream xڍϱj@_pK@{98Sj@-48 -rpnA0f#VX܏]і1ey8%dIL2~Ar<"9hM锳AitJweB# LX6vs`RaF$i4 ;QWytExݭ'{gk~϶,O*$=t %~ endstream endobj 599 0 obj << /Length 242 /Filter /FlateDecode >> stream xmбn@ P#$/ "L :vhծgO@@$2Dv."PtO h"+4}ih//hMм.tI?hfs ,hRtA אLZ5;: Gk?ޱR/R7ux;xl;3{gߺjmkxN|סuޔΚv:T-tjO;Q d,ŲZ8ݎ[+R endstream endobj 600 0 obj << /Length 201 /Filter /FlateDecode >> stream xڵͽ 0+ zO`ZE`A'qRGE6Go t(;T%w.z!h>22J;@j)bAjPjJ-SYmEc-wy 7R5-!l·<дM nܝޣtVWYw8C:rb endstream endobj 601 0 obj << /Length 186 /Filter /FlateDecode >> stream xڭ1 @ aM!L!he!Vji(Xͣ)ykk|x$ 0 S9|W> stream xu=N@ _b%79 H" * D[n&"ymafYy.\O:/wa\gVVOK{Ǵý~~|m]=(k}fϋ kEm&fhF hrá +'2ʉ3q4|PY؁0e齳s5\@e'XreSU4Q~MQd endstream endobj 603 0 obj << /Length 206 /Filter /FlateDecode >> stream xڥϽ 0+->Z+S*AAAѹ}>b$*.bBz:ԥVDJQܣmT;fiTTf3:; :Yc6\;lhkb⍹/N-Z6*p|ZX?4>usn tn N2\KKv endstream endobj 604 0 obj << /Length 205 /Filter /FlateDecode >> stream xڍn1 ]1%o )$n@S ZYG!i _ϲ=gzp;:٨T6{hh.DmyءQvF0`80cf̱b9)zA}T$"'S|_Q((M I +TPGey?4dѸYz1_ S endstream endobj 605 0 obj << /Length 220 /Filter /FlateDecode >> stream xڝ; @ )isJE"b=A aS~] endstream endobj 606 0 obj << /Length 216 /Filter /FlateDecode >> stream xu1N0E*ir ,-D $(VT@Iv(>–)VAaYO??V=ϝz`U6]oX?ݕvⷺ}qE XXͨ̎p[P0LhB M 4ESDiDf( DETHIc %)>/~Œ\r/_})oG endstream endobj 607 0 obj << /Length 164 /Filter /FlateDecode >> stream x31ӳP0P0bSsCB.c3 I$r9yr+q{E=}JJS ]  b<]300? C=`cf ?F%5Ƅ@.N%\=CSt endstream endobj 608 0 obj << /Length 275 /Filter /FlateDecode >> stream xڅ=N@ M_(E"T+*AD \%7!H9Ec{BHLid=RI'tT%=VjIM}h=<|ŕԱh UXiSQy :!1{.g t<A9Nt¿ɽ`n [Y'(3@ ~sPoi5E,b6y0ɬ1$V ٺ[Lz #h&;ij$^MR} ^x?m endstream endobj 609 0 obj << /Length 165 /Filter /FlateDecode >> stream xɱ @ : Y k 7:9utPt>ZpcҘ(@>?1t>C1I0IF*x܂ڡA ʮv@F G` t>'C/fH= b賚'b6l Q"Di endstream endobj 610 0 obj << /Length 137 /Filter /FlateDecode >> stream x31ӳP0P0bCSsCB.cc I$r9yr+s{E=}JJS ]  b<](B` D00 aDHpzrrȧYA endstream endobj 611 0 obj << /Length 168 /Filter /FlateDecode >> stream x1@!&p,`EVJ--4ͣ(-!5W? 9ER?֔$4hqF=`iP(QͤGet>]ń4֚ | f!N^ :^]寸3 lnO(N . k7 endstream endobj 612 0 obj << /Length 217 /Filter /FlateDecode >> stream xڭνn0pH' Q" vP+ċekdUGk?>48^iƏ%Ii?1B4,Ⱦr'd Wwc'/kL8TEk%t:u=|?Q ;DN d~U7 S[v0ؼ?bjv? k1N\*7V*=4#S endstream endobj 613 0 obj << /Length 123 /Filter /FlateDecode >> stream x31ӳP0P0b#S3CB.c3 I$r9yr+q{E=}JJS ]  b<]``? ×0? 'W g endstream endobj 614 0 obj << /Length 161 /Filter /FlateDecode >> stream x31ӳP0C CB.sD"9ɓK?\ĜK(ʥPRTʥ`ȥm`C}?  Yo`*?!*9=g!@d\= endstream endobj 615 0 obj << /Length 159 /Filter /FlateDecode >> stream x1 @бa1[ZYZZ(ZoG 2΢]> stream xڍ1@E #0eV$&ZY+h+{4(- 㲘ڼOϛ$ͦ񄇚1'O6MvV6&U~{I7 ֤rkT dR" "/x"o"x Aā, Ң~~5oU9qNȩ9IR 3,hK` endstream endobj 617 0 obj << /Length 221 /Filter /FlateDecode >> stream xڭбn0bt @Y"QPNt@hycs U.ɺϿm˧ > stream xڭϱJA?lq0= %*#xE@+ I-SD5_,9 ,9nsckc_ťc?f5ySǣZhZ}dl5.dj0r DW@`D$  F]67@Hmtt9OYw억g߹٫e&ڥOM&7ۊ` endstream endobj 619 0 obj << /Length 172 /Filter /FlateDecode >> stream xڵ1 A i832VºSZYZZ(ZXYz#llXZO7荆d/9C;GtVibs0W,lQ9O=l1!洖}N)!0Z2-ygg"(.0P5tŷAUɲ+Y0\%-nYW endstream endobj 620 0 obj << /Length 218 /Filter /FlateDecode >> stream xM1J`b`w.~7hXW0VbZ * vnUra!,ǔK-tgQ ->Gy劲p3%WtpK-Ϗ kxzX 33䎅rCF40@:b #LɂY.dČ 曶AȺ lB{,Zxώ`1K{+orSN~o' endstream endobj 621 0 obj << /Length 160 /Filter /FlateDecode >> stream x31ӳP0P0R5T01P05PH1*26 \.'O.pcs.}0BIQi*Sm` $?` #$`'0   Sd.WO@.] endstream endobj 622 0 obj << /Length 159 /Filter /FlateDecode >> stream x31ӳP0P0R5T01U0TH1*21 (@es<L=\ %E\N \. ц \. `,dF }H<00g?`G"?\=kqt endstream endobj 623 0 obj << /Length 174 /Filter /FlateDecode >> stream x31ӳP0P0bScKCB.1s<L=\ %E\N \. ц \. 7P& eJ``$? @cg@%4*PFF2?F2~~F2?N7 H{ r V endstream endobj 624 0 obj << /Length 195 /Filter /FlateDecode >> stream xuν @ > stream xmν 0C(vAAAѵͣ7Q|AwݤGr6&آt&=>'|z zzBQvi z0b zoU YUX)է-ؽFF'{DžyVJtlH!r&u]Ŋ;7RCSQ񋦠iwH>ʳh endstream endobj 626 0 obj << /Length 237 /Filter /FlateDecode >> stream xeαN02D%{pҊ.TD$: &73Ea+RősƂ)eTQS9mr|IJҌ.kk* C秗{˫3Q&l [f۲cvӨh+켍 R PPÛLm55wۃQ?ڋ_"|v։&Ԋ*Z IM ]4O`9kb{0D>7k endstream endobj 627 0 obj << /Length 171 /Filter /FlateDecode >> stream xڍ1 @ aM@ Fp A+ RK EۉG(2E:/u ͧB"IIR9|c#ʅgݺ+Kٕr%:/%!ԕIDeoKhѰj#0#0?Y` ` `]ГnS^yi endstream endobj 628 0 obj << /Length 218 /Filter /FlateDecode >> stream xڥ1n@E?@#\ ^ c)ʅ*q"QQ8%Ŋ2[$r~y.9R3.#OcE_/T_ܙt_?g~)O)'o6`Pv*;k . , UPC< èzDNe{Υ]ɷ~+| 2%E_Iqhҁ x endstream endobj 629 0 obj << /Length 143 /Filter /FlateDecode >> stream x31ӳP0PbSsCB.crAɹ\N\ \@Q.}O_T.}gC.}hCX.O@l``z 灸C??P szrrRZ endstream endobj 630 0 obj << /Length 232 /Filter /FlateDecode >> stream xmN0Kxe' 0Y*E"L vd(~wH`O,+¯.wZt7j='(IB??v7ϭo^x# `0#,yB=:F0A.O= {řs2t 9FtJ:ZTTwHsͪTU!,)b")3t#}wo endstream endobj 631 0 obj << /Length 239 /Filter /FlateDecode >> stream xMбN@ `G"yv~%-a H0u@LбCQn館?I}LeC-c%H00cRbL5hR"&\/d /N^J+Jx#jC(^ Nw6d`NV?1F3:=0+(-aO"{|ldy endstream endobj 632 0 obj << /Length 196 /Filter /FlateDecode >> stream xڕ=@%$p."AL0XF;pJ 87[syc Of|F&di\%8])Hلט6?/#)"*C Ė(\ -p- *XJ  pZZYjW ( 0G(Yb_/*:p^ endstream endobj 633 0 obj << /Length 217 /Filter /FlateDecode >> stream xڭα@4;/@NYYZZ(ښWG#Lq:q5_1xD1 P)> stream xm1N0E'ris v7,eHV ()@&9#L<| Q`ɯ9JrZ\\Q<^ W7(s W+:C-GnB"LdT@.ëGHF316 6P9n\ Pbf4RuYHq_#B}!\0gܜ!TFIAC$yDE}H#A _|o_ endstream endobj 635 0 obj << /Length 187 /Filter /FlateDecode >> stream xڕ1 @49s݄$@Vbz%GHbQgq80 qL) (#r(SjEAjgTzNe*]LG'o:+x*Pd܂H.'oR(@RB)`na \# endstream endobj 636 0 obj << /Length 232 /Filter /FlateDecode >> stream xu=N@"4>`m Z) HPQ *HIh{=KV)yl/[.᳊Rsut_iۑ%e-o﮸"NJ'v\8I@/#2DR9LKp)Lz OnPY]D 5ň>Lr>AʍpgWi9ԫo0ZTj~]wtO endstream endobj 637 0 obj << /Length 261 /Filter /FlateDecode >> stream xmбJ@ )yŻgp` ,J--m/Zy/0`0h#eg?|%3Yq-SYc/> stream x啽N0/`~6EBb!`b@LɣQ3D6w社B +;\Qqxr즮+fLSa^MQhA6?94Yd~>yf~YڋBh`x:B ]yrCTcґ b <=^N`.|b5? endstream endobj 642 0 obj << /Length 356 /Filter /FlateDecode >> stream xڵN0 Su%UMCL &`dJZx7v0D뫓(>᠂e 'KԣZ>Y">UkXԪ8iU4r)TXMF5kBErψqJ{82jtL6[Ga&>GQ8P*Q̸nj@I-ۋI9cƫHYrTAr Edm]sG%e8݄mI?[DsF]{Ca6$^mC#$RcX:-qwH%!@BF]/j endstream endobj 643 0 obj << /Length 316 /Filter /FlateDecode >> stream xڝ=N0G\#ABeiY$R AEJ =%GHE3vR$=ycu%Tpg5WRw6~.FԪW#*o*;zUjUᩆj5!2qπ\ 몛^=oaf+ endstream endobj 644 0 obj << /Length 225 /Filter /FlateDecode >> stream xӽ 0H-}FPAAAMG#tXz&Պ.!#&:ؒmh8WȄs[r= ]|1w5ޤ2=<o̠e7f~vVmm(OMFZ#:ih[Rmg(G%2˲*'/'ڬN>t\rWSWЃ)\Sn endstream endobj 645 0 obj << /Length 323 /Filter /FlateDecode >> stream xN0K8̅G`^@٬ʉd]9ɃٓzhYl-h~pQ | endstream endobj 646 0 obj << /Length 201 /Filter /FlateDecode >> stream x? P H!GhNkQZI]mQz'v(|UM)a'm+aG>8g[[܏X%h)h"qê?j( _%GC!\M1.Jk@babu8Cj(ȅέ 5}x~> stream xұ 0[Z UN⤎GQ|IEEP\ *D-l IupA0 l$9090{d2"P | :zlƬB7 7YEl(ݛ~҆:srmH'lGa/\^eVOa 0 endstream endobj 648 0 obj << /Length 150 /Filter /FlateDecode >> stream x˱ @ ۲#'.V: N|!?i1ÀTc^#Q'+TCo 4 j5o3f@0 h8uFE:)Z8ͷډ/cdɯ2>jj endstream endobj 649 0 obj << /Length 401 /Filter /FlateDecode >> stream xڍӿN0pG,y#O@VtTD$02`}<|#寨T;wVڮűOWOj9^Gު.;/˪^ؗխ/OmVm7VaNW9%{mA[ PnKB] P{ьS+$tX 3TD'9::JrGD u"~F?x,<áP50~Cpb*򄁿ďohQ'h.6㙂FQM-%5 'F};iiiWҮFo7d"H0CPkm=: > stream xڅN0y%)R)`b@L9}4?J!c*> x~Ν;}YvfW^۲ۗҼ``Yצx)n)[jݕ-M=zcRG#Q18c: >*T-z$V d Ds )iMLCs3e(*F$*΍(U!f$uR@?(## GD8&(YR"7AP3S$GrRVBDfLdLnL푛Vr9N!RF q8$>}2Ko|tG) (RA{Vͺا.)狪|/,-LJ!&߈F |AXBܛo-q endstream endobj 651 0 obj << /Length 280 /Filter /FlateDecode >> stream x;N0Љ\Dz`PYHPQ *A ; ; X{ Ym#܁s(EnAdW%;˒^ʼnu쵳+VX]%iSvPjF))3#O}A >(;dިWSJ:HJ)PkP甆z(RTtC!CTTaP )j h d1 b:(m64&Րg?ԏ]?y_JNKobg endstream endobj 652 0 obj << /Length 381 /Filter /FlateDecode >> stream xMJ0Hlziav! ҅*z,JȠKz}Uu2_^ZֺR/jY |YUeK\Wes^ߟT>ו*7z[ٝj6Z <:A: `+"8 x=L .aL\E-#+ I SVQm0V YFBwXVR0%ꋃ<,cgZ |7=L E>c=.`dChK;FSP1g|^>$Sg!D; JnC3r}Ds^Y܋o=S YCyFݨOr endstream endobj 653 0 obj << /Length 423 /Filter /FlateDecode >> stream xڭԽN0D"y#/i(maTD$02`%~<x;)** ѡga;葞=}roJufSlD]ߩRz6U bynU1?;ҥ*ԣ+\~u/hD5c$І l vm -*hpN}RˊvQi昆М,PV5/̪uA)[/> stream xڍJ0AՃymOB`Ƀ,,GAE>ZУ!+RCG$$ɺb+Mg%L#Ֆ Cϒ@\pAۂlG*B䟁s.e萁/Њ ߤd] @̲_@E"iƵ̱np0!n18(##z H@ ;W" endstream endobj 658 0 obj << /Length 198 /Filter /FlateDecode >> stream xڝ 0Eoq(PhP+AAQPQO}i,:IΔܓh4 b֜ 9yЙBf%HYAj͡&5}RłہTr@*MzKE΀N@F x-%08W\g-21鐹WZu2sw[Z,巷EVE\'hbD[ endstream endobj 659 0 obj << /Length 199 /Filter /FlateDecode >> stream xڝO @Bx @ػ@N( rԪEAEAKQt#ps}x4'cZ{RTYpH*}K@ ]6XV /a& +̌Sv47fUEc]~s|lm[sIaU].Gz]H||-scL endstream endobj 660 0 obj << /Length 103 /Filter /FlateDecode >> stream x3234R0PP52V02Q0PH1*24(XBs< M=\ %E\N @BA,aJb.WO@.p endstream endobj 661 0 obj << /Length 103 /Filter /FlateDecode >> stream x3234R0P0T52V04W0PH1*24(XBs< M=\ %E\N @BA,1 %r1'W E3 endstream endobj 662 0 obj << /Length 133 /Filter /FlateDecode >> stream x=1 @E? x+p'c#8ET,mv |>ӜdYx@=w7@p>Å-_ޭp [?"4'ҠK6ɟI&L2LJ%w9 {|ɉ$_ endstream endobj 663 0 obj << /Length 132 /Filter /FlateDecode >> stream x=ɱ 0  :t AG˛i "~1WOjŊ/|:=PM-_Ul[Q6<*]+a˃.&dR 1YG$ endstream endobj 664 0 obj << /Length 95 /Filter /FlateDecode >> stream x3234R0PbC KCB.K &r9yr+Xr{O_T.}gC.}hCX.Oz 0X [x endstream endobj 665 0 obj << /Length 161 /Filter /FlateDecode >> stream x313R0P0U52V01P0PH1*26(XBs<M=\ %E\N @BA,`F0 $;`| NȀ 8a" DH F2-CXHeh6ix-cr E- endstream endobj 666 0 obj << /Length 102 /Filter /FlateDecode >> stream x3234R0PbC cKCB.K 'r9yr+Xr{=}JJS ]  b<]d7`= S/'W " endstream endobj 667 0 obj << /Length 142 /Filter /FlateDecode >> stream x3234R0PP5P0T0TH1*24PASsTr.'~PKW4K)YKE!P EA 30z` pxڂ!Փ+ |-s endstream endobj 668 0 obj << /Length 94 /Filter /FlateDecode >> stream xMɻ@@E|wGb BT(H4]])8+61|cZGHO@BJJ7" endstream endobj 669 0 obj << /Length 91 /Filter /FlateDecode >> stream x313R0B#cS#SCB. D"9ɓK?\ĄKCKW4K)YKE!P E?|\\\KF endstream endobj 670 0 obj << /Length 125 /Filter /FlateDecode >> stream x313R0PT06T06S03QH1*22 (Cds≮=\ %E\N \. ц \. v 172 |'W ( endstream endobj 671 0 obj << /Length 177 /Filter /FlateDecode >> stream x3532U0P0b 3CB.3 I$r9yr+q{E=}JJS ]*c<]1@  d0%d= u  fh gdՓ+ =ŀ endstream endobj 672 0 obj << /Length 181 /Filter /FlateDecode >> stream xŐ @ A xxUp( vtr'utPtmh} bIbH `sȑ 3xćd|/'Js61Η|܎Ռ#o򌁎ԥ>Ŵ)mPN8J@ Gּ y[ʽVRl"紦 endstream endobj 673 0 obj << /Length 157 /Filter /FlateDecode >> stream x3532U0P0b 3CB.3 I$r9yr+q{E=}JJS ]*c<]3w@20$)"@d=e0PPHZBOhr 5 endstream endobj 674 0 obj << /Length 194 /Filter /FlateDecode >> stream xڍ= @R (?` A+ T,D=Z,SFbݭFK}SFMׁ% 9Xb13B1#nc=N1I_1/$()P/q<+&lK/Wj&y2cpt> stream xmнj0P6%hHSB;e(Bұd!C_[ǾBNWd,,~r3}iwo;w>ؾt;Ŵ3+mk`> stream xڕѽ @ G0opz'A+AAA>Zѡܙ^2T)dJh-Q6/.w\ehd--gd;z=74b4)bΘ|!T0' 4, L*0V}Uv~ݷ'CdxxJDv5vwԁ?/uҹ |.uB)&) endstream endobj 677 0 obj << /Length 269 /Filter /FlateDecode >> stream xڵJ@!E`8yHE p` A+ T,ɣQ)-[ww"ؙe|SǛN )9?fJEnYJᙶ .rR6L'R۫3H6'@hXkcznL 0>[DPiG Ѩ zCt`:D_drfZjF=c?`.-l[/Ǎ;b?Oy=^F.Dd/Z{ FF\n\3w* g7tMVXv endstream endobj 678 0 obj << /Length 211 /Filter /FlateDecode >> stream xڵ10p lAĉ1D'㤎z@j %Ŕp6# 8CWt4G΀)|4.1!Bv> stream x}ѱ 0ДCpuz_`5ŮDQPQpOS *Rr<.p c4£+(erQep$A/*l> stream x3гP0P0bSS3#CB.SC I$r9yr+r{E=}JJS. @-\. bH700C(`B1P(|Teb P`BPP9J>4 B&!^@\=6 endstream endobj 681 0 obj << /Length 268 /Filter /FlateDecode >> stream xڵJ0) B_`V4* ɃxR(}=ɔai I:S:<&Iso+ +nZT+T|TKQm=b%0V́a͖A;Cz\;Pf3b6~^\`pfg GDؿAGCF_> stream x3337U0P0b3S3#CB.3C I$r9yr+r{E=}JJS. @-\. ? t 0 lPoՓ+ _* endstream endobj 683 0 obj << /Length 106 /Filter /FlateDecode >> stream x3633V0Pc3#CB.#3 I$r9yr+q{E=}JJS ]  b<]?``o7drzrra endstream endobj 684 0 obj << /Length 170 /Filter /FlateDecode >> stream x1 @БbVj(2n6)F#9fÄ4᭤̇1lT+VI9_b1aIJr&S2"/:wԍ_OS#hG1;XD级[e endstream endobj 685 0 obj << /Length 266 /Filter /FlateDecode >> stream x];N0RDb}RneHJ$@P'b;NA(s#L`$ɏ؞ln]*[gv~ԅGԜ]1g큳-8ڛ\otdd<KKMKMa; .0. >>N w&`>koFc7$կHo8={jp?53j~ M7wנuI}Ri"ӡ|V ! endstream endobj 686 0 obj << /Length 144 /Filter /FlateDecode >> stream x353P0P0bS#3#CB. HrW0r{*r;8+r(D*ry(2`o^$3^L 0H9$Lց d Brzrr3nX endstream endobj 687 0 obj << /Length 252 /Filter /FlateDecode >> stream x}j1 . Wo;OZXB{ -= Jt(ڄ$btUd5"|D~8k '9s|)e(gg5JҺ1*/G)g*G=Cl-[VҚCZ 7=+q,A wTÀ&u4-U(qhK$)n;%<.<2!WxS endstream endobj 688 0 obj << /Length 250 /Filter /FlateDecode >> stream x]ѱJ@ )O`y),DPN:NEn}$!Grq63ͦXYbl1c7ƞ?ж7#zm)~zw{ix7!pu\ĵ khì>RQ|jbJg1T9XN`1,*/rpnLXb95#OSZʜ> stream xڵn01D%8AMPH@fN S(y (96c-ٟ"3(҄lFV@$Chw:;4ˏhSbM7 -oʼ.+aWy!a paN8(e~NHb+[&|EGMl#K!e_<۾zzP<vOlgԬEWGWWO} endstream endobj 690 0 obj << /Length 175 /Filter /FlateDecode >> stream x333T0P0bS33#CB.S# I$r9yr+q{E=}JJS ]  b<]J쁢 ??0BC0eB} B1PG@\ٹ+ ` (V9(P$ endstream endobj 691 0 obj << /Length 330 /Filter /FlateDecode >> stream xڵAK@Yk>; !ST)#B@"$n;*c~33Gl&8Op~wzR FZ*dS __U{F\nhG9SVt6JӘ_q- 8;g4Nu bi endstream endobj 692 0 obj << /Length 230 /Filter /FlateDecode >> stream xڝ @ azyZںfNSu *꬏#x ~iHwfC} /.~?A .Dh~f q+vX+%H cȇ\'izhIi|Ӵ&:/?ռw~R2}6rӿC991uΪ9ɿ66-M쩥]e'(,G%Vɕb0` Ox1 endstream endobj 693 0 obj << /Length 266 /Filter /FlateDecode >> stream xeϽJ@HMګ̾rw y),J--Gˣ#݂ˍ39TWEn0 *L2~5,'itvck]pXgͥy}y{:ۚ[t 6vZ5'@O6a&~`QLɤ䀄hADDND(An%=٨X }d*;Ad|HףMH+>o ߄k endstream endobj 694 0 obj << /Length 158 /Filter /FlateDecode >> stream x3332W0P0b3#J1*2" \.'O.pS .}(BIQi*S!BA,0`0?do `L3c ` }L3 D3@hQ'bDc&@ endstream endobj 695 0 obj << /Length 207 /Filter /FlateDecode >> stream xJ@?Py &^!`B=PBcAE[|4cZ/9avgaϮffzR}\^ 3f/U#n>wX\o;qbLk]Γ4І~,O~=[yR+>ɟ:ᑸgF#bn8&kufY f0AjekQ~uI endstream endobj 696 0 obj << /Length 262 /Filter /FlateDecode >> stream xmбJAYiSݻ ^!he!B@-s >=`y֙]T;3 etd3zJ 킇Y<:G}GvǨkx|FS2oȹ qĕ+yD>8c8c\4{`*n;5[F6UEJ8YHrg@s/>p뭃Xl7i$S>~w_Wiuqyؤom endstream endobj 697 0 obj << /Length 321 /Filter /FlateDecode >> stream xuK0+a;h;{A'a,7V4Nz|H&">NN1b\D8!/2Ih2IY.S`e^ Wg`w2]5(kv?=k@@# sG0qТ崖8n֩vI벒<=~ULlab[3'qݧe*&!R3- -*C7. )E{sܥ ). %sc^ CaĚh_eӯ0H:}󦃬\4e~8qC㠡vg穼 endstream endobj 698 0 obj << /Length 251 /Filter /FlateDecode >> stream x1K@-f݀,b?B_T|ÿ%t_ endstream endobj 699 0 obj << /Length 232 /Filter /FlateDecode >> stream xڅбJA᳤&m:81+[bAPFGGsϚ])~.Sdz͵]L ]e-V祸*חgqs-ĭ^V>ضY2@Y=ޓ_h1|> stream xmο@/, ShuqZZ(ښ<$y<–!q,䎁 1v<qƖ혭᭡ٌcfiNmFzƤw>;Ռ 9ξ(35 !+PLpW.Pe@"Qmڢ i"1Ŕ"?OVHnqLUOUo*D6i|UԴiMעL endstream endobj 701 0 obj << /Length 210 /Filter /FlateDecode >> stream xڽн @ B>Bzm=(vtr'utPvIK: #=vDzAmHJ]t9UgnHbR2pĻ~E;G3=hNa1/kFˈ܉Slx`p:FlTveV`9zTbr^MRV R':q@&x endstream endobj 702 0 obj << /Length 193 /Filter /FlateDecode >> stream xڝ1 @E00Mntft` A+ RK E;19%Gu`ak?r}YЁ2+bvM6{*+K,Ȥr>bCz+險1CD(p.ܐ lQ4C!i(]W!pE#k%7)%c\_p0T78> endstream endobj 703 0 obj << /Length 210 /Filter /FlateDecode >> stream xڽ= @ )sĬSZYZZDo7hB\gwJ)|浂F3"$;ԎhbR0 9IbcɄE:ŐdH 5:Pi=uek=BЫjn_t+k-JffLWn噞\y U;3ygz? endstream endobj 704 0 obj << /Length 204 /Filter /FlateDecode >> stream xuο 0/t(`_@轀:YAAAMj-#8viQp0?K|6隌Nc8Sje57 N-鉌IS>N[ِ҃ / '+*F PWR7HU8##;o\]>K-AZ//>L^T^('N"nhAUhwdZ#=d# r!I endstream endobj 705 0 obj << /Length 143 /Filter /FlateDecode >> stream x3233V0P0bcc3CB.c1s< =\ %E\N @QhX.O ?00``?<3c:f 1%P}Pszrr_ endstream endobj 706 0 obj << /Length 261 /Filter /FlateDecode >> stream xڕ=N0_4>B|ȏ宴,)@T@IF(' 9e kb (H/˛tG}wȣ]>n~ndKuETgK՟秗{V'fӍk^".ٷtD\0_f+`Gt~΀~ܡLcxc㠤2%Ii(ئ4rB8F+ OƬܫ>Q=9'|V)X,i/ mh endstream endobj 707 0 obj << /Length 165 /Filter /FlateDecode >> stream x3532T0P0b 3cCB.S I$r9yr+r{E=}JJS ]ry(0`$;dt"H @҆ 3g`D\$3ؑr y endstream endobj 708 0 obj << /Length 124 /Filter /FlateDecode >> stream x3234R0Pc#3CCB.CK I$r9yr+Zr{E=}JJS|hCX.O  P001aqzrrHT endstream endobj 709 0 obj << /Length 150 /Filter /FlateDecode >> stream x3233V0P5Q5T02P03TH1*2 (Xs<=\ %E\N \. ц \.   P( ulj3cP\=v9E endstream endobj 710 0 obj << /Length 213 /Filter /FlateDecode >> stream xڽJ@`_@> stream x3234R0Pcc3cCB.#rAɹ\N\ F\@Q.}O_T.}gC.}hCX.O a0\=W endstream endobj 712 0 obj << /Length 186 /Filter /FlateDecode >> stream xб 0  Ej3:9::( NGˣ:4qqé8Hķ)tJRWI8^0(v$kgfAuFX lYhFAQJ*˂Yu*>P'sx'`‚ʷs3 endstream endobj 713 0 obj << /Length 154 /Filter /FlateDecode >> stream x3532T0P0b CB.S I$r9yr+r{E=}JJS ]ry(0` iH~`~ ?3 !d; \\\ep endstream endobj 714 0 obj << /Length 188 /Filter /FlateDecode >> stream xڍ1 ` _qVdV8h֣;5I䅼Dq><Y>X:SwN'Js2c2 K^nG2jƖL[H5pG %BxʃAxNӃX:>ŴI=JRh4 V\_螡yNkPM endstream endobj 715 0 obj << /Length 208 /Filter /FlateDecode >> stream xڭ1 @YR &] F0X`er%GH!u6 Z+ٿȧ>u!)P)N}fQrIJr2xޡc PƴSkLbF{z`)3Apڀ\A4ikh+/;Ň/׊y.L[ov3_nBk/cC:՘M$;| endstream endobj 716 0 obj << /Length 223 /Filter /FlateDecode >> stream xڭϱjAbaH`B*EҔ)H!GGGuγFlbv;x$s ۘ7 }Mes֟4ɼMdN&2~<:ELtjtDEX pPYuwoڽmOX6JCT:knGC_ 8=Pח4%o endstream endobj 717 0 obj << /Length 145 /Filter /FlateDecode >> stream x3634S0P0bccCB.c4H$r9yr+p{E=}JJS ]  b<]?~x?̟0~g 0cH`3szrrM[ endstream endobj 718 0 obj << /Length 203 /Filter /FlateDecode >> stream x-AjP?d70sBtB[ܙʷyŷqRq,Q^i4d6Wd4&S/y&3[ْYqgc$Ovw x 4tHB8tmԨuUupAD#r&iNBKZӚ.8W endstream endobj 719 0 obj << /Length 151 /Filter /FlateDecode >> stream x3634S0P0R5T06P05SH1*22 \.'O.p#s.}0BIQi*S!BA,Vl+313C1#T8fq{v r wSM6 endstream endobj 720 0 obj << /Length 160 /Filter /FlateDecode >> stream x3532T0P0R5T0P01PH1*21 (Bds<LL=\ %E\N @B4РX.O `G%00a`f$Н l0A?? $@?P'W rjy endstream endobj 721 0 obj << /Length 193 /Filter /FlateDecode >> stream x]= @YB\@71JL!he!B@- 19%GHi|{ G.?'T>.o=(D"壜q2|ݣ-䡜К6N(]9' {6*};:fViucfU)1[m?6*q_D endstream endobj 722 0 obj << /Length 248 /Filter /FlateDecode >> stream xmϱJP? Ĝ{j@`N"QPQpNP|d63|p?=.%ww =Qjx>礯85eM:{SNH:asCºXWU<&.*;d (Faы> stream xMαJA?lq0lk!< 8B*ERKHzh(ufL4/Y_Ttz%RKxMGnܓtu|9}ۼ> stream x]J@; x%'S~\#^/4Iq1w-}<9&{@ 7lz P@?[VqtPA8.=փdFDb+8w:+cw9<<#Oʬj\ԯR*ٕmm`giM?AP endstream endobj 725 0 obj << /Length 199 /Filter /FlateDecode >> stream x5= 1oI!Ls5"Z-n!he!Vjih9e`i!0 #vܗ|Ltԇ&% {Ov!d%_/#j9osv;*g7  $Oy $m}RK ****IQ $ Q&2JuWk D$_h^Қ8.G endstream endobj 726 0 obj << /Length 191 /Filter /FlateDecode >> stream xڽ1 @EL2͚DL!he!Vjih'(9B -)fsofyH0d@iNjő!5T>'.&Ien(@*/SC^^$N-8b,(p OA-iU۹*m_ ڰ^!c9- @m endstream endobj 727 0 obj << /Length 126 /Filter /FlateDecode >> stream x313R0Pbc 3CCB.#K I$r9yr+Yr{E=}JJS|hCX.O @@\ <yP\=sU endstream endobj 728 0 obj << /Length 242 /Filter /FlateDecode >> stream xuJ@% f$,ăSZYHV2u@J&llDmwjR_@> ; l?hٝv* ؄'!nE5i>p {Nhd42FJgaZtEjZ!'Ēh } lV~hp endstream endobj 729 0 obj << /Length 246 /Filter /FlateDecode >> stream xuN@ ed!/kBR$2 щ1c<==B ULp?77K%5ZGo?nY'[,vxK톞U/m#yTLP%d'd`ofAِ'~VN\'(uˈn(Eu,_ڡgŨxqGc/VJs5M#1%-~nn endstream endobj 730 0 obj << /Length 185 /Filter /FlateDecode >> stream xڕϱ @ BP:w> stream xڥбj@ @_ 4z|k:ŐPdc! (= t:IÄS~¹ӑB)fgW)NnxfOnk醪9 mvarU();'Q/$C 3!`.z7l(ki?n!a먠luAIu2θ ҫq42BT]E endstream endobj 732 0 obj << /Length 249 /Filter /FlateDecode >> stream xuϱJ@?LᾀSZY mr| 3J duM/|HհXhS-7YwkH~Ͳݍ~}~JR>Z=x~]賑ix o@ʺ\ur'x; endstream endobj 733 0 obj << /Length 202 /Filter /FlateDecode >> stream xڕ; @A  M QL!he!9ZGHB;RXW?#l hS+z*ߛņBQK'jF;LA0Ӫ]WCȋz&\e (t XLݷ!)&e~R27ukd1y ]msXp endstream endobj 734 0 obj << /Length 277 /Filter /FlateDecode >> stream x]J@EoH$j),J-- ɧͧ']ͪ x}|)TrBf1^զUٽʮYVY{#/*^J<?v+'@-0#" |'İ+Y X9"1fm)ӎz+~x/ȇ3FY g,ڏ@'DV{:RRh4zQc;uD*` "Ah^ᰥKp[Vݩoqg endstream endobj 735 0 obj << /Length 252 /Filter /FlateDecode >> stream xu1J@?f. ]@lbځuSZY,Vj)h+ Bn+oayTg+ιW?Be9 e\֔]6e?R>炲 o 0@:)vr"yĂILiNיvFoi􇐃 `%<)ơYto%SK u+P ˴N2(vGU*DF I2v: endstream endobj 739 0 obj << /Length 105 /Filter /FlateDecode >> stream x3г0S0P0b##CCB. m@ $ɥs{IO_T.}gC.}hCX.O???`or u% endstream endobj 740 0 obj << /Length 91 /Filter /FlateDecode >> stream x35Գ4V0B#cS##3CB.SC1D"9ɓK?\ԐKCKW4K)Y(  R\\\&2 endstream endobj 741 0 obj << /Length 210 /Filter /FlateDecode >> stream xڕ@ KH <HDxNI4ƣ#0:kˠF/^:G(JR:xDHGm',, %ܢK^nG4jF11E;%A&J\}@؅bs^ࡸ N;ERP)T p3P_2? d6 5>&,k endstream endobj 742 0 obj << /Length 266 /Filter /FlateDecode >> stream x}бN0a["ݒG'j JȀ@AG2z1 pRϗ׭*깄WpW<`[~P߂o ݕ*Ac=;X)8̥];N и>om n]h} &$$NEȀ܃6JJYK&0xx\G Tzq A9x`I5 dK'h>,(lkn> endstream endobj 743 0 obj << /Length 217 /Filter /FlateDecode >> stream xڥ 0O[| Lk%v+ vtr'utPtG#tPRHG K['eHrAW(Li..wSGK[}"kQ$t2gLRfU-ՇY2kTu臆c3C~Po~M(,\<6XjZqRߒw~#wsSy&~د endstream endobj 744 0 obj << /Length 221 /Filter /FlateDecode >> stream x=0o|': &2`A3x&)%/|0a#qc)rx48wkgf 3`iPb.i)K|E4Zo '^QZp6*/?aT|bUYeTݍ'e[x? endstream endobj 745 0 obj << /Length 198 /Filter /FlateDecode >> stream x}ѽ 0['bp+ vtr'utPQ|xm.Id)LqDƨ*:mv`wd*dN]H^$r-qCKPx "oS%zgs6QTֽ1(#ǘYIY{sop oCGqjc1[¬-GǏ endstream endobj 746 0 obj << /Length 169 /Filter /FlateDecode >> stream x3332W0P0b3C3#CB.S3 I$r9yr+q{E=}JJS ]  b<]C> stream xڳ034W0P0bss3#CB.s# I$r9yr+q{E=}JJS ]  b<]?b0a``0POe W3I \\\$@ endstream endobj 748 0 obj << /Length 102 /Filter /FlateDecode >> stream x3гP0P0as3#CB.c1s<=\ %E\N \. ц \. `0J@ l!3x< endstream endobj 749 0 obj << /Length 141 /Filter /FlateDecode >> stream x333T0P0bS 3#CB.Sc I$r9yr+s{E=}JJS ]  b<]CBU>Q(dBC({L1C('W ٸu endstream endobj 750 0 obj << /Length 269 /Filter /FlateDecode >> stream xڽ=NP e%G/^4e H0u@sr%GȘ!4AEy{~ ͨT\soX)kyzeaKí1TwayÚsZ3`]|#HR zMju3hX"Ps؊ɻWRM!s 3U\S}? ?0{[AkwMLQ%4N2d , [qmpS~ endstream endobj 751 0 obj << /Length 337 /Filter /FlateDecode >> stream xڽJ@wI&yIAy),J-|/-S,7+ fgj:V\P> stream x3732V0P0b3 3CCB.3 HrW03r{*r;8+. ц \. NC=7h? Of5FW@hB-Gf 4-8i.WO@.ڬ endstream endobj 753 0 obj << /Length 201 /Filter /FlateDecode >> stream x33P0P0V5T07W03RH1*27 (Cds<̍=\ %E\N \. ц \. Dg1cz FY%fՠX`8cd1?$Y ;H'jŌ`f10 l@XI.WO@. endstream endobj 754 0 obj << /Length 258 /Filter /FlateDecode >> stream xu1JP&K3Q#BBBQݥd )${.b1sHstp|6> axYI7RQYpkI 1=(֩ @7!*F4V'"y J,I,wOnfr, &gF$`r'L$|?[Oł& ] \%dH|l]c;ɜLgK=y+Ċ endstream endobj 755 0 obj << /Length 226 /Filter /FlateDecode >> stream xmϽN0-y P'4d-`b@'+Q"`8;UO}ȳf]qShypw-Q7פ=do4M%dWr~0$HX `~@} I VV&$}R˴`\Se^BM#3]Gd>r˽^R|KKJ,uO?} endstream endobj 756 0 obj << /Length 205 /Filter /FlateDecode >> stream xڽѱ 0 [ж( vtr'utPtn-Gء/$fB/r<S@CFC< hhovGS$C\F?]|=/Մ6fiB"OV]<3hT0))E7]DK2)~BGk>K3sjfUف( ](7p 9@ endstream endobj 757 0 obj << /Length 207 /Filter /FlateDecode >> stream xڝα@f`~`w2 ),Bqi|B)}wxwn9z#ιWe;<ke{YEnŘBcrՒϧ==9{3Pw2u i,ڨdW2aCvڑ4C9e F.IiLw}U*[e? endstream endobj 758 0 obj << /Length 211 /Filter /FlateDecode >> stream xڽ1 0H[z h vIMJob҈.u^H贗bU5&)8V\c2+d9+ !x>]g1ruk޳|[h#FWLrH"yDw3+šVDu30/-Oh=ؖ,ҾsRUܯ!QH%iKx. endstream endobj 759 0 obj << /Length 208 /Filter /FlateDecode >> stream xm1j@/T s{h!"eS0)l MGT!4[;]f{gN8Yα{ϔv>˦o**v ٕ^^gEX/8%[6䝪H N@ F>J4^{!g#Ѕwo9&K Ck`DZ8eEotWq endstream endobj 760 0 obj << /Length 160 /Filter /FlateDecode >> stream x3637Q0P0b3CB.c3 I$r9yr+q{E=}JJS ]  b<]000g``? ?0PF?%7 @HJ:AQt#I4Փ+ EE endstream endobj 761 0 obj << /Length 261 /Filter /FlateDecode >> stream xڍнJ@9Rlo h^j<VbvBhy[nvx)~0Et 7Ϧ ??mgn7@%=z{uƈw|빹3ݎ$Dr+YȜ3)D!{a٥sΧk%P2=PtQteRPGu*&أߦ2o?}أƀnrQ-.j,Iz Syg']T endstream endobj 762 0 obj << /Length 159 /Filter /FlateDecode >> stream x353W0P0bS33cCB.SC I$r9yr+r{E=}JJS. @-\. @?B1ӟQ7))9@0RPl'W u endstream endobj 763 0 obj << /Length 129 /Filter /FlateDecode >> stream x3г0S0P0b#33CB.#C I$r9yr+r{E=}JJS. @-\. ?0c  R@@eH?3-?Փ+ !;X endstream endobj 764 0 obj << /Length 209 /Filter /FlateDecode >> stream xѿ 0[| ;:9::(Q\;v(9Մ##!y8y{ft> stream x3г0S0P0b#s3cCB.## I$r9yr+q{E=}JJS ]  b<]3GB7qzrr] endstream endobj 766 0 obj << /Length 153 /Filter /FlateDecode >> stream x353W0P0bS3CCB.SC I$r9yr+r{E=}JJS|hX.O ! fHH1?``gRB}S0RPl'W  endstream endobj 767 0 obj << /Length 195 /Filter /FlateDecode >> stream xڝ0KHnR) bb::htGQxFymٌ3SL0ŹB^Etb: J:a,w+T +<*LN`*31QBWDM4D7dGeYX/ugw7rvNw->=-n'N|Ɛ6; endstream endobj 768 0 obj << /Length 203 /Filter /FlateDecode >> stream xڵ1 @ [ h` A+ RK Er28ΚbՃ?,;M܋)>u-iDfTvGLR d4s1Lt9_& I:`\AQȼ&s ׏]޴[e endstream endobj 769 0 obj << /Length 227 /Filter /FlateDecode >> stream xڵнjAq4ysх:"TbeRPҭy_EA<첅8=E4oٙYi[Yk(P4'-p5^I٘l┕\>)E> stream x3135Q0P0bCJ1*26" \.'O.pcs.}(BIQi*Sm`?{`WaH s`` t$ApzrrX] endstream endobj 771 0 obj << /Length 223 /Filter /FlateDecode >> stream x=ϱJ1` ̼f n!he!Vwvr#lE8A dHlϯ/g+B԰zO";J~p5?wܾPf f(pCU|KNC;~$&ԉhDڞmJFm=ZR*'28H3#: td{w"$#۞n g endstream endobj 772 0 obj << /Length 154 /Filter /FlateDecode >> stream x313T0P0R5T06Q0PH1*26 (ZBds< =\ %E\N @QhX.O ̏呰=CF fbGŒP9*b9B A@=:б \\\1j endstream endobj 773 0 obj << /Length 159 /Filter /FlateDecode >> stream x10 aW |:V*E"L @07h!8gvbPPr{ cɽ<9xD{=p٭$xv3dvq.eϮZL5l8BJd:R%?08);'h:ʀ~fzؚ&j &i%?9~ endstream endobj 774 0 obj << /Length 218 /Filter /FlateDecode >> stream xmͱJA`7OX1WZYU2ABN|Wnn l! S_U\nsuɫ^)9L}z,74o>qS+߶k.Yc^]G!`<2%sJ@!Ꮙ2ShRxV&GL#>|G@#"@&{ @ωCdw" 1E{rb,mK Sc} endstream endobj 775 0 obj << /Length 245 /Filter /FlateDecode >> stream x}αJ@YLop7؍9 'BBR+N,|o )gl# 39:.Oi#b5;*+٢ ;/s8(fn!o`@ld*=lJzx3^GP\0(afQwK+5fLYq>Ch*g 4ՐC>UOB6!FK@ endstream endobj 776 0 obj << /Length 267 /Filter /FlateDecode >> stream xmϱJ@ [!op$zL!he!WBro,X\2őuv6?˂r:bAsz*˜)W fT=f-}$2!jBn܉tZBۥy*ҳȸVA듫D"S *^7x> stream x35Գ4V0P0bS3CB.c1s<͹=\ %E\N \. ц \. @ "ꁘ?b;=?.WO@.v)aG endstream endobj 778 0 obj << /Length 247 /Filter /FlateDecode >> stream xeнJ@H0>sSZYZ^qy^]E⣴> stream xuJ@ 30<.zXWAOēz}y>B=$++B$,^lNm9*6MWuXSZdx|zw{I򿧇D#v{/R図x^9H`mZt/O/eegZx~ǜ endstream endobj 780 0 obj << /Length 197 /Filter /FlateDecode >> stream xڝ @`\|'h4 ԩCtAY>ћ9`fgoNe9~SO]ܕTS;ҫtq&oNx{4a0TeЂ6t~l*hB ofU)h墍8`%R4 E:v#6~U3)mܤ endstream endobj 781 0 obj << /Length 247 /Filter /FlateDecode >> stream xڝнJ@U)LkyMs'6.'B RK E;!HQ)XnXbcdvv>vO%8ny'j^[nWg,;mx>(*1> stream x}J@'8&p,m 'BRK E;!h(yAQgg?r'+i'wĭ]=F/ՙཕ{4 LTyS!T*/p1*3J`=s6:IG&c Mi5~1| qOefrRǴ[[6Md`5Y:"CF(|5B endstream endobj 783 0 obj << /Length 210 /Filter /FlateDecode >> stream xڥ= @ )f.(XSZYZZ( br#Ɲ`_1˰uuߡzkF,ͺSw8HP-(PMU2E5 IRSdD j 2S|[ob.f" sgMY_ 20_^RGt%9}kN9]m`~ՖVR˓Z.qs|z endstream endobj 787 0 obj << /Length 136 /Filter /FlateDecode >> stream x323P0PP5T02P04PH1*24(YBs< =\ %E\N @QhX.O9   fv6> $'W  ' endstream endobj 788 0 obj << /Length 280 /Filter /FlateDecode >> stream xڽn@ Ǎ2 y/D%dCJS کC!Q&<#02\M90qwYSL)ݭ(K(3SR7n oN>f3?_h/{B@J lF3@.!-@A> Aވݜ*PB QAo"|s Fà \Ji oץ%Ocj{:T~LpaE `M5(QlWq2 endstream endobj 789 0 obj << /Length 213 /Filter /FlateDecode >> stream xѱ 0; 4X-P vtr'uTt7)7&/“ h4"rMӘzd endstream endobj 790 0 obj << /Length 203 /Filter /FlateDecode >> stream xڝ 0OKдv vtrAPGAEA0G#8:ANȹ-Lp;"dJ Z_V[UglJ#IWc>NҽIs-0pu@܀_x vZհu/{#ҡ^EA^UzN4 E A2;Wa V4'VhLr endstream endobj 791 0 obj << /Length 210 /Filter /FlateDecode >> stream xu1j0g<7 41'z(S$ MHXGQ|JW\(T 7uN3uki1}.Gq%Cf&u#U])Yϧz\R׹fi WOp_PI! I@*#f%#~,K{ǏT#,ΰq`(nYsLޖF^V2 endstream endobj 792 0 obj << /Length 209 /Filter /FlateDecode >> stream xڝ= @GR2MtbSZYZZ(ډr2EH|((v̛ݝGa_ endstream endobj 793 0 obj << /Length 144 /Filter /FlateDecode >> stream x36׳4R0P0a3CB.c HrW06r{*r;8+r(D*ry(0`?l(g?6g u@lC{ pP endstream endobj 794 0 obj << /Length 160 /Filter /FlateDecode >> stream x36׳4R0P0R5T06V03TH1*26PA3#Lr.'~PKW4K)YKE!P Ea9$luPفX$N#Ccagc{  00?r Jm endstream endobj 795 0 obj << /Length 207 /Filter /FlateDecode >> stream xڽ P FҡмVn?`A'qRGE7f}>BŚނ*3$|9VuQۀ}+5͞1%kTڤ|18Ux*%V738 \A&rOP deyܿ>X ?c\%#'q(IfNĴ) endstream endobj 796 0 obj << /Length 131 /Filter /FlateDecode >> stream x337U0PbC33CB.c# I$r9yr+q{E=}JJS ]  b<] >00013 A9 CaՓ+ t^@ endstream endobj 797 0 obj << /Length 259 /Filter /FlateDecode >> stream x]J@Of!"." E0pA.Z v |˝gH0??pNNmnҮwYUϹ勧7wk"nssa q[{_AꭅBaD4%;>#p{%*édlW]HO˷df 3ÂױtK҇FoMfl=o,"E"pLΉ~WhFF*4& !3DWZnvj endstream endobj 798 0 obj << /Length 257 /Filter /FlateDecode >> stream xuпJ@o"0y!Dr1SZ) ɣQ[X2N[3.脋%?NEav \d^j??^(]_sNs0y("=I 5poIu~ѽv ڧ5F r q/oAz Fx`cο=!)a$ܠkkR:5.̈% endstream endobj 799 0 obj << /Length 219 /Filter /FlateDecode >> stream xڥJ@ Ci X/b ͡PB,M$G#xP .C3;&z8YQ> stream x3635Q0P04F f )\\@$2ɹ\N\@.}0PRTʥ`ȥm`@#\\\hE*a endstream endobj 804 0 obj << /Length 95 /Filter /FlateDecode >> stream x31ֳ0U0P0T02T06W06RH1*2  !2ɹ\N\ Ʀ\@a.}O_T.}g E!P E?< r WGz endstream endobj 805 0 obj << /Length 210 /Filter /FlateDecode >> stream x풱@ 0tx &2`A>=@..,:r_{^4ICƸI¾uaw$=(r:_N1]&p eV+k]nC%0!$ؔ'lQ.1DP밨i􆀕RHO𤲀tԗ?m6 M?~f0T endstream endobj 806 0 obj << /Length 327 /Filter /FlateDecode >> stream xڕӿj0q%C `*B]WC:Nm-vG#dt&?RiD ~i]_\V;WzG*I꒚M dߑ%)YRtZ@m^HwYmVaܶbN4RbXMΔ\uNnnb| mbީLE捴]$ⱱ7!3ilz.2Ob'z>уt!򸴏97 טC.k&) 7Lʬ k ͹!!KkK!#ܥm<Fk(4J@?mG/c endstream endobj 807 0 obj << /Length 267 /Filter /FlateDecode >> stream xڵ=n@Ǣ@f9Al%"C$SX+V*;eDIpJ zְ̊շy^O=JftॽEzKIzWQ+DXQ:]L@GjQPizV8Jy<_oSrJ^CoCK(vRਾB,|.WKuɡ`DuO6KN6_i JGT+ɭ KPJ~ s uy endstream endobj 808 0 obj << /Length 338 /Filter /FlateDecode >> stream x͓?N@gC6QڸHaRK vF8%^0 Z-;;3|qvrXЧhsJL6~Em*iS^o*\R[}OT@WdR;Ȉ,QG9Ci 7rXK0A@$s;:>GOÔ11PVGG { r(ܑ  J}1*7S($;SheIL>oC^fi0ӤIΧ C4qHGnJ谬cC +{7Z۶> ࿢*E!en/ endstream endobj 809 0 obj << /Length 228 /Filter /FlateDecode >> stream xڕ= t y G('v3#NI4:(IӾH~iՍE[LK;nc<`gq\$A95(8;H(beYc6,wh*.9)"1RH HP+whyś(/*P#qRDҥLSc_擽P[+^& I)Jt*Jl)sŪJSN2\U\ endstream endobj 810 0 obj << /Length 349 /Filter /FlateDecode >> stream xՓN0 ]uPU"D$02`nyMNIܻEJ8v?ϊ xc\=83,OݣZ*ƲR9UZ_Jt79f^! 5Dň6X;ЖuH@cN.|͎r.m@γۯF|=Mb ִ`]Üb{)$U2ئ' ÄcW|rƬ,e9sOx^cfu=z.{6S1;Ae&oVgۛ`_#7ğ)NG YmvM٭f !&\oVW ?! endstream endobj 811 0 obj << /Length 344 /Filter /FlateDecode >> stream xڕӱN@%$sT$Ha:--4Zã(<qH  wlwUܘ\۳8μS{{ͷ>V:}6^vTՃy:=d:F]jQہVpe `)v⨇v⺁IH6G9͑줅9͑KD:KD:̈1adP[=xW5-7|1ĴN'ڬk%E{^K_= Ї\;"=a7o;uSRJ?[ endstream endobj 812 0 obj << /Length 157 /Filter /FlateDecode >> stream x330T0P0bs #CB.3K I$r9yr+Yr{E=}JJS ]ry( 0!(c2~f0H`0fc0P<ƨ1C0;cC r 6n6 endstream endobj 813 0 obj << /Length 311 /Filter /FlateDecode >> stream xڍԱN0o#O \<'H3D'㤎H GBI%)+,`z aJOJ}o 9ƙ={MyqB<>@<1f#q8&t3x=%T]_'V1 S>8|bGx ~ه_(Jf2Lc# ן8~w[stJptU,r,]#c},=3ֳTc)frLiGvKA;+DE 1]*YB8k ~oL endstream endobj 814 0 obj << /Length 209 /Filter /FlateDecode >> stream xڳԳ0U0P0b c #CB.s I$r9yr+[p{E=}JJS ]  b<]8J,fn0ªc5CX@Y bGb}e1ce H,ln~ #BBP`pb~Y 0SFY䱠I'W T4# endstream endobj 815 0 obj << /Length 290 /Filter /FlateDecode >> stream xڵӱN `H&GJkNM3NIM{4"Rȍ%) ~ٜoK<+>Lcuz^aہxĦqkAtwb{%>X> stream xڳ431W0P0b 3 CCB. rAɹ\N\ \@Q.}O_T.}g E!P E?!u?3bSWbWbWa1gXu0V6V eG,eƒ'c1%r C< endstream endobj 817 0 obj << /Length 233 /Filter /FlateDecode >> stream x퓱 @ S:Y|]I(>BGLZD''|r7Ѧ;M CA> 0Ym՜՘eTфU8A5!hHpɾe PVr{y%رW Kp,+&uaJNEIM4y0犉%ޭ^ AlH4ȗ6eOE8`| endstream endobj 818 0 obj << /Length 347 /Filter /FlateDecode >> stream xڕұJ0 Y hw vyIݎkx7 /ׄH#MHYO =S}TDNC!e9qc}:/Or^F_eWQ3]|oAwZhp !j- G #gMr>6n3xf[22>Gޖ_t2r NɆݲaw{VdS"ؐ9rm"s22q D,xc'SoD̼18,0Ndo> c[o DeaXw ]Gom𺷂uzg|UNj yli[5J^ endstream endobj 819 0 obj << /Length 322 /Filter /FlateDecode >> stream xڍMJ@&G9ITbBЕJ]PtwG2} ł@/M;^2:?auږknݻ9[WUиjM_\ >'!|' f do~@k:$D j2,"Sp#>SQM98es )H)H)H)H)H)H)H)'S!?J|' hMM P"hDKM x*6`Txt*YMQdQyDM I]rZLRipw{rq% endstream endobj 820 0 obj << /Length 270 /Filter /FlateDecode >> stream xڕJ@'LsL 'BB> stream xݑ=N@FJisX[N"GTPR; 9BJGZ0; Jifw<~EqUQAg9T )fT3j4wTN\IM}MoOhf7s,hSv`ځ_ hv= {H 񞡱B [r%kT3. 0=;  ڿv>;bC _\Af #c,'4/+;hq1h?7p% endstream endobj 822 0 obj << /Length 243 /Filter /FlateDecode >> stream xڵN0/`?BdS` Heꀘh XI-#d`stgۿ~Iy)x 5_XQ&oG\7vWEF<z{O5 Tb!ȣO!2J`@;PP<;Gg3E9c̈*l09t / inm';)),bߘ^Jq݂zlgF endstream endobj 823 0 obj << /Length 253 /Filter /FlateDecode >> stream xҽN0T"GȽu~n! & 7+Q!ʟĄd嗋l4\jU<sMo4HQ {N^Kls/dKɮꑚgʱw_ s=$p8E . (sׅ42*ȱ| ]6&ܴLpڋ_IHGN!X>] 7#f".F?^Q 3ҙ b= endstream endobj 824 0 obj << /Length 244 /Filter /FlateDecode >> stream xڅJ1g"0M!`Dy[ZYZZ(ںy}<•aǙP1|?IO :1H=>cTPc;Ocw!^_[^ʙ;V8?dmgPj\Rq :dĄ* |Vbn;gE d1o( ؁ahDBc!D[o1En %in6N:\Z` æ]H_I<?y뭜 endstream endobj 825 0 obj << /Length 324 /Filter /FlateDecode >> stream xڥ?J@'X&G\@HBL!he!RK E֛L2ɮ9o[,Ƴw565>UU7v1.tqoYKtq ˣ|QђCDF"RcB|&;J e%wpU3B?O|G(^'f ]THد|X9/O8E.> stream x373P0P0bsC cCB.33 I$r9yr+q{E=}JJS ]  b<]0$0a aÐef0x:`P?H e00?C(v q'W l2 endstream endobj 827 0 obj << /Length 138 /Filter /FlateDecode >> stream x3635Q0Pacc CB.# I$r9yr+Yp{E=}JJS ]  b<]``0f+ɃԂ 0a@\\\٥; endstream endobj 828 0 obj << /Length 107 /Filter /FlateDecode >> stream x3635Q0Pac cCB.#K I$r9yr+Yr{E=}JJS ]  b<]0a\= endstream endobj 829 0 obj << /Length 232 /Filter /FlateDecode >> stream xҽjA W#>WZL+vrp!ET+ -vXqt;';됱j-->xsiNY-gOّy+#CYEI O$Rx%4DJʤn ׮UH@Y$߸Np⧤D@(Ax^ 9Eۄip xviC endstream endobj 830 0 obj << /Length 184 /Filter /FlateDecode >> stream xѱ@ & &]xHLtr0NUy{ጃ zw6d4JBGqlfiG{1+P)QEz@-ibc|!Pi ౮!`{.TV6ߡA_y48+po endstream endobj 831 0 obj << /Length 231 /Filter /FlateDecode >> stream xڵ0kHnЂ0 &2`A3<#02^KL%!_s{I!.qa@CT9 +@P% 7 v+@x0> stream xѽN02Dŏ{pBNJȀD02蜼7-[+U9.*S%;lD etu32<߱ȥPY7TT漏zϏ+-RjJ!70x bf ŭifP x f BdYq i`ur?3!X>1 }A}asc!C:9OD(fS g d endstream endobj 833 0 obj << /Length 169 /Filter /FlateDecode >> stream x;0 t#' VbTD$02`nQzT dj20XY陞c+4xRps?aq@iA W<ix=   E^6ɱC:_:Wѫ}O_ /h m Ij^ endstream endobj 834 0 obj << /Length 259 /Filter /FlateDecode >> stream x]1N@4;ۊB$\ Q%ڬ\vY)yTk.拊57 UIJ/Kn6O\k*ybx[~|nXp8HDF#々~7'QȔ^;LKZ+45qj@.dtv!"ieh֔j]dV絳Su ?hgcfKxhGZ endstream endobj 835 0 obj << /Length 186 /Filter /FlateDecode >> stream x3534S0P0R5T01Q07SH1*21 (Cds<L =\ %E\N @QhX.OON2bH$;&=A$3?8HAN7PJ`$H `( E` qzrr:p endstream endobj 836 0 obj << /Length 187 /Filter /FlateDecode >> stream x1 @   fl1[ZYZZ(Zkyt {O!(VhpZ0(j. 匴F91J3FNPf4W.dI K#ZX+ސ8 w6 .n N<sUv848n endstream endobj 837 0 obj << /Length 252 /Filter /FlateDecode >> stream xڅбJ@YR#d^@7l 'BB+RgvE8X>Y؟/Η%YJyN^RaaB> stream xڕ1j@7Xx6l6@RXR%)S$$fB.2Ni!7.V?u~f*U+uW9o(fKUn*< ݖIu>?_dRLjG/zV!C؃@p` 'h'đv3k"t{O<8 F evb883MmH Є̎io“z>Ba"0i5s?hb8T0c00c*Cٻ1 i<8^gvJpi\DXו!) endstream endobj 839 0 obj << /Length 310 /Filter /FlateDecode >> stream xڅ1N@б\XG\8M,  * D "To+l"0DQXO]yx:NbYٔOG8'M~ea חG/pl%ގqtg%Qm3 "Vϊ<X1f3j ԄMVl!ey o+ =̃Zy[coFG\{SZƛЦQ?䍉`߈=m;4M?l½};YTjĭjө IPZlklku釾2#}UJ.҆Rymaɽ endstream endobj 840 0 obj << /Length 137 /Filter /FlateDecode >> stream x3337W0P04  )\\&f  ,ɥ`bƥU()*Mw pV0wQ6T0tQ```c;0D0I~0Y"I ?&D(I"\=VI endstream endobj 841 0 obj << /Length 301 /Filter /FlateDecode >> stream x}MJ0)YؖG_]x>.]W҅h=Je? گiftߟ ChÞ6 s/\knCs%ux^ߟ\s>k o@B,D'DdZ"-,-B/63"x甙k p7q|$pF暿 dL@AvZHFӬYM5k|,ZdIeb4j`Mg!@Tt`[Bͻ.A8Ew̕bԊW'bt7}t endstream endobj 842 0 obj << /Length 305 /Filter /FlateDecode >> stream xڍN@LJlA gEr&ZY+h=> @IA烋 |gf.K xQz!eY^#[E{_o8_c#>UX>)EৣNGG#"qhfH8fEAEI=-Β%$#쵂H\Wfä hgcgݺi8iZG`s+,25\i`2[[E3)D/bZ1.8G IUuuR:X&oݴ]֯"Mߴo endstream endobj 843 0 obj << /Length 225 /Filter /FlateDecode >> stream xڽнj0 ['Pt!tP2;4qh~?G$C@Bw&,+]po1}R28^~в$IF~{͒/wu|'ܯ8&旘knLM@;&ED-tw>5 pU/jh:؊,PW+D5^ԝhma#:YVp=Dӊb~9ag/uwiS]]q endstream endobj 844 0 obj << /Length 285 /Filter /FlateDecode >> stream xڭѽJ@Y lGȼ&H +PN-`bu>r"X?L6']x\c[awO}͚L> stream xڍ=N0'’!sHRd E"T ()@ Qa-G#LyxcOx~ar Լ=>٦fqR57-ϱm__l<ږ[Od%2 9SQvTy2S T 2NXFvY _C!"%R/Q("!V$M x#$0"W ΈPr($7y?"^\%Id^EARiP7@t4F}ҷ CGɞ~\ endstream endobj 849 0 obj << /Length 382 /Filter /FlateDecode >> stream xڝ1N0D,yJȀb J(> U)",eUM~VJ^R, bm~|}gOvc;^|}~|p#$˷YU[LU7KeYF-1zVt qV9-Ti̬jcDG:U#F)R]"X )h[7(RfRd Vi%(E:8A}$](E7URhw.BL^dx')z TT2%AaΕ[Q/a`D a¢jBLx5 J%aQ4>TɨW;N˹IA 0!@Cn+~?]T endstream endobj 850 0 obj << /Length 200 /Filter /FlateDecode >> stream xڳ432Q0P0bKCK CB. 1s<,L=\ %E\N \. ц \. ᠁L$<Ɏ`2" Hz)ɏNɌHH3 @$+G0L0&D2\d 9iĄQ&$B3L.WO@.up endstream endobj 851 0 obj << /Length 410 /Filter /FlateDecode >> stream xݔJ0Sz!/ 4/mVº=z ԣEoBfQzahL2Il(43I2gKQsqR., ,ڰOlU^[,6?X^݈n/dZ3X{E;Isc!ߩF4A3wh(hm wUa7ҨSi4pu?!ʩM*P;RHW7so3)b4*r4)mjRbwyK endstream endobj 852 0 obj << /Length 107 /Filter /FlateDecode >> stream x3533V0P0acK CB.s I$r9yr+s{E=}JJS ]  b<]?\$ ( !.WO@.!8 endstream endobj 853 0 obj << /Length 308 /Filter /FlateDecode >> stream xڥ1N@gCA2 G`.@lI|&Rhea|x <Ć0̲ϼDmd`ggCګT״}Iz>\|ʼn|Ƣ=,VgGTaˊ+lvuLC! xr~`]T VIm o0/m+H-8٠HŴ̃%'b eA lR(~ FYtG%4xڂ~V *L ^TjCyĺ=LKg 9鏀-uO endstream endobj 854 0 obj << /Length 274 /Filter /FlateDecode >> stream xڽ1N0E"4>BHح,-D $(PR%>Z#l"WAg}{+nǚ^يXq{NiQy͖K9TꞺ=(te!LJBzpLa'=0s EsB5qgZoVVPJ}!J,D;'^Ezdg|F WѮ9!!9&g1#&$| 3fkj`GsA?M[ũt }gz endstream endobj 855 0 obj << /Length 275 /Filter /FlateDecode >> stream xڍj0 e2hCI PhS۱CCZJf endstream endobj 856 0 obj << /Length 191 /Filter /FlateDecode >> stream x313V0P0bS CCCB.SJrW05 s{*r;8+. ц \. @H2j1TH1P(y8gJ1R `JL1Нg|lG'W  endstream endobj 857 0 obj << /Length 369 /Filter /FlateDecode >> stream xڭN0/K~H*J#HHd@uFL x?GVn*Pb;]V-YsZx]XDsV4a]4ÍzxR-DQ nŰQhk$"THtPpA|ANmCb=\I*WEI?AFc.gTET{H~?d&>CKF (,@aR7C;aʀ a Gi11X"bW t>XV MNq2вI3 :f=>;3 s\raj.YI]l!fq5; „sp endstream endobj 858 0 obj << /Length 146 /Filter /FlateDecode >> stream x31V0P0bcKCCCB.cb%r9yr+p{=}JJS|hCX.O ?D PB1X/y`i؁A0za?J.WO@.3 endstream endobj 859 0 obj << /Length 286 /Filter /FlateDecode >> stream xAJP. :'{ U,]W҅b/xGR!d̼y$ L'Ci$%!, aJE:ۑ>NAO"j$Jj/XS:Q3j4~7N${%u,JXR7Աn()nͻy#_%\7 vP endstream endobj 860 0 obj << /Length 111 /Filter /FlateDecode >> stream x31V0P0aCCB.cSJrW06 s{*r;8+r(D*ry(0o`&A(1` r .s endstream endobj 861 0 obj << /Length 258 /Filter /FlateDecode >> stream xӿJ@+ }s8@88O0X`e,,ME}I @Xabfn?w^ͧ{]]"kvfř{~zlu~]+\kv2HɎY@КѩY`;zjeRZ58J$}¤A/yB$Uީ>?ï~_8zѝn7wEf7a9j=)BVM endstream endobj 862 0 obj << /Length 198 /Filter /FlateDecode >> stream xұ @ ДBE j;:9: * nS:vc!K.!K| %)E!֒639-ij)UT US*]@cfWl:%uW+~Ž> stream xڽN0utKʼnnJ+ &T9}>Jc(;۲,Ȑ|>.Uu(Gko+.h+u #4Ox?wh6tRdD gft: sQģ_zm>rU"Q-Ø whJ"5v[\nil4r?:XTG2oJI~E⁦$lt?,m/p{" endstream endobj 864 0 obj << /Length 285 /Filter /FlateDecode >> stream xҽN0`W"GȽrON" & ㊁GiŏCgmfȈb}E)^yEd^Mqz`V|IƮ,on>f>A@BN j]D;hH Q1Q󍊶e7F8XxiVWE} ?r^ ;jfԠӪUX{#[t屿-YպvZmc|y'˿ \p [a endstream endobj 865 0 obj << /Length 184 /Filter /FlateDecode >> stream xѽ 0-y'06 ftr'uTܚGQ;祝\݃~ +0.0xH:: eOPZPwA%ޮ#r5 )&;3D"Z*rLD^cj&Uؑˈ^t;;jUxa|t-?>W`na o? endstream endobj 866 0 obj << /Length 296 /Filter /FlateDecode >> stream x]1N0E"\)sHR4HE"TjA-G\0hŒO?h,5yK%k5k(2Uof7Էrm>?^M{zjy6Þ1 (+bv`柀UJ"~# N>t%%1!*0jQAzj:ޖ> stream x= @ )2(I#XQr)uv! jc_13{b-lHlH\J@2$]kH)F1!AtG "Ù`*Coz_kjSӵrgFOT&.Y<,I(d&t^Pkԏ-b0P0+f endstream endobj 868 0 obj << /Length 199 /Filter /FlateDecode >> stream x= @ ir &H~@` A+ RK Ex )SHY,{| iP2(mc)}"lǨR.ft:w9X._nY#4RFH}Uʨ|#yAmܚ[+wcw蟒/sk2WVr @T" endstream endobj 869 0 obj << /Length 370 /Filter /FlateDecode >> stream xڝұJ@YR#d_@E),J--˂/+_#֙l XowvYcc3?4V?ip97ٰwήLg縮¼<>lyybN͍5.O/B{7UD) R=8[Q+Vj3ZIFuv[H1ZV'呢Q jI X5kKHH0ʱ> stream xՓN0/`ɋ~TSR$2 Ā(#VGˣ2fzR1t 9[ϲsٚ^l>S*i`sO/j[JݸJT]=rg@{kG.L"D"Mk-Z"t!n >P;&M30*lZ`c}d9_g+G#q!Vގ?Q=F d  g8p"EJc(脒Ցb~9\r ;*9L.P4?p?N&LlaÍx|M3Bp&SEJuU;'J endstream endobj 874 0 obj << /Length 497 /Filter /FlateDecode >> stream xڽֽ0D."#$O@.pw\g8$@]Wv7#Gp5&xĤ 6?^nn:g>\t'~x?~|t=CWŧU0WB?HR $Lh}>1wOQ;:BKIh%}."/HP}!QCb$L 5o4!w%TЭU)ƄQ5JHpW#v "MU%$U/+Bc$LdzlPT8=l"\F(|f5&>'\ L'e,yH.4 l5(=2mŷY,!Ԙey l?ءvZCR$]l` %fw-b,of5&x6 FGRKIUl,vߞG} endstream endobj 875 0 obj << /Length 422 /Filter /FlateDecode >> stream xՖN0e%P?iڢJȀbFɣ(~\:sXUaR{ϹrvX/\wOZ쟗Ll! 7)D w"H[*ݕD?b+ɴo#@t@6&RÛJCkB`XƀRՀ\kLk@O3/j"htAwv> stream xn  `^ z)MR{1T͵U(<>X0 kƶcv x ի~뽾pZM t";y}ڛ}V?/> stream x=n0p#$/RJeNNMQr j$[(jA~!Y\ms-MNh~M`_|}ǻO ލ|}~tpC(N䙒{2G·BMѦ&FM(2nZ 4m`&&ן)Τ*( [*T-)D Ţ "QNAM8UZUε:ש7)IMAHA!HG7榓Aȗ: /HITωV,{}+OZ5." t_jwsF0;DǴ jtb0++!#F,Wjg 5Qb$ F1ӴH{ƢOߖR endstream endobj 878 0 obj << /Length 319 /Filter /FlateDecode >> stream xڽֽN02X%`?!`TD$02`r~6DvI!P@(!PX#H, " 7K*dǁX+9@6(QP cJ CrCOǂ1Q!|MttA\ӻE:`il6Xo<@6X Gp]{?1W5); endstream endobj 879 0 obj << /Length 237 /Filter /FlateDecode >> stream xս 0 [-P+AAAվPxR+^HK$FmOztSBuݧ|A$7ыeiɟaR9-k 8pJNh8NsΪIi1aNV <;̓XPe*'NΘ3e}> stream x3430W0PaC3#C#CB.CSX$ɥs{*r;8+r(D*ry(z(@10fY h| sr J$, endstream endobj 881 0 obj << /Length 116 /Filter /FlateDecode >> stream x330W0P0bsC#CB.3JrW03 s{*r;8+r(D*ry(1Q(cAW'W  endstream endobj 882 0 obj << /Length 202 /Filter /FlateDecode >> stream x1 P BѩP+A'qRGEz4 ƶvCϔ)C!!E! v@UPrĀc=.zfq:@ `RgnN8ye˖-gTb\ Vv* zVX2dAW#E_RIf. zJUIZ<|jd endstream endobj 883 0 obj << /Length 510 /Filter /FlateDecode >> stream x햱N0 @SP)K?(=+ H01 &`d~Z>>cSLT!`C>8vJ|*?iGz̏ZANó\oevZ.;̶WIfslrut/%'F'%pC^IڪLmbFZ h( Q:)A sKkؚ㠢>+>t.F).(+1-s&X(0MT8pnF![lS/ReJjfLjM$1%G0H#,zK~11?FJv$;,7~|;{i2 <ˬ&JjTcBvyP"TWQͧUc$a]hZV-0bD;UA 鞽Ңi\){Iǯi$2@ ,L,]fV>I"T7n&/F~& endstream endobj 884 0 obj << /Length 691 /Filter /FlateDecode >> stream x=0&G/og;WNa,%Hg ]xȜP& /J!e7s&sb2P`H,TH-cvi;2L bRUt? T mm%CIIh@$ -:ޖU[FLS$AH,m( D +=ȈĤETF 7#.#|_H '?l}ez\uQʶIzYEY54^G\UdUT}^ 9p*cӯgS S3l^G`gB9OMR12=oȸ"+M&ƍ!pb nRN p2ljq/e'ˈȗhL;;ۄɰ;XL>ÈʆN1D&N*V> stream x; @ 49B&k>Vb&GQru7݉),$"?|s}Cpr8}I^0wT9 O|r㊣p49cVEl!Ҡ`E  Ӡ%!pՁAF J@P  iTWB+USF, 07=1I  endstream endobj 886 0 obj << /Length 328 /Filter /FlateDecode >> stream xֱN0Ћ2DORWiSR$2 Ā:A XI?OȘq, Ȟg|>/KəsResěP e|f W_vbUlS"DZˏϭHW7Z>6XK;k"kp#8A^Ø'O> stream xڽ1O0wa ҏ@?vy&2`A3|4> : ᕿ+.ˋP{UKRSk޼`~c%'oW_?"?>ܨB'{I uY85߀zdFF懴kt̲O 6IK@fjAD&=D{L1L/ db2^veJIaqYR-i >۸3C l_h್k̿Nzi.u&̈|Li@EEElC4-ՓhJ4[6ԡ^m"9NТ]D2CZ5tZYO-˜vh&hL\$Q> wỬj $n+(~Uw endstream endobj 888 0 obj << /Length 419 /Filter /FlateDecode >> stream xڽN0[e%`$@%BR H01 &`d!y&xH,>9vh%jsw|E~_,UjPETz(ij(KJd7,EvaEV]חGNU!3u[NTgjfG ̏vNp ``,#9nj,d i|9swV\=PHm`jr 6.@3΁ 0)@p j.> 0 ;`ZBW Ջ,@măCal1Pyyun&V)YH  `t]@lbC0n @p:vd0y|XR x Xa%UTbk V|5]Kũ㦎Ȍ!{܅|c畸_z endstream endobj 889 0 obj << /Length 374 /Filter /FlateDecode >> stream x=N0pG*y @bZUbTD$SadJ,10r#x`~Nq&*LϖeG!;FR6[F+v3]ݓEE+jgH~&H^ӧ;/.N(#^3ZܐjIB5G1cIOx6ʨH1[ZZTjTɎE(Vo1K_ mm>h2Pn-ȟGXdH jWO߶51VYc9Vc r$Cĩ8s_PiU(Q/h_ExzmzOLx]#p[ܺց?̠5‹iE.y endstream endobj 890 0 obj << /Length 357 /Filter /FlateDecode >> stream xՓN@!L#/ӣ<)LXF[QxJ roX~,;ULJRD*tuJxMǥ}u ^- ?wӐ.!m7:rWc/ %bvR6PQ)T*R֍<4\m:bE^n@,Iie$Ψ  [6 }ߣ.`q Ǟo1r4p ?_mO~уU`3g;'sJhjXgd9cv؄G53X& {4$Vuk3|6(DStSX&ᬆ+x&8HF endstream endobj 891 0 obj << /Length 361 /Filter /FlateDecode >> stream x핱N0KHDzMd08Fgx4G`d {N[ !\'/6y+Kq"xBgz"7/|WQO;<݋')g^ @;?&yx|*tTT#cFGߚjK RFgIAc! 1 'tU1@IoIe3C qG`,Rh-Rdd.RBy 6Sisfo{OuZGu||{f~AHZ؁S`*p@eI+b`(#)&0?&Ϭ endstream endobj 892 0 obj << /Length 360 /Filter /FlateDecode >> stream xڽN@Ǘl6<aD<)LXFkx4G 3;;ǡ^q^;sG+N\q3b9:W9l7M:mZ]'nn.\fӭenuoShh %"0qhj9uT1''ad⪖ʷn|̇l@ Ç|s,Tx?ѷjk(l0 AL;Q78?`'%L~I0>`D{=c/G+y) BĮo"6tϼxu6ڤDAMj^_49Z9G4-dG5kKC揑H\^/@ endstream endobj 893 0 obj << /Length 227 /Filter /FlateDecode >> stream xԽ @ +ByEn`A'qRGEQ|1XQWG=hsthSL0㫟`6:javةlgx:w``Ǹ5c4"]*E.AbhaȸBԢ¸Rh#LJe@%VJn!9S{HNjHInb_Kďt})]9&9,sp endstream endobj 894 0 obj << /Length 530 /Filter /FlateDecode >> stream x͕?0&G/I`YfFZ)؊Q%Z&T\+RxFD! \??۟=]=}W]>&6{x-5vp{ܼ|;םo߸7GvS Sp!`<ğ{M%~ ԱlHRQ _F*JQ1Pb jd *bhPZZ@@P*LUNdw71kIm_NAK:mvPri<'gʒ/;~''2Tأ ^@|-d^eЯqBPiʁ;+|(q!q0"R 9fjiR` O5PJS>;$_H抭aq==d sO`=dΡ׬MヾJ ?^Zr(CqJZC8d\̭X녶%"ju{ww7t6 endstream endobj 895 0 obj << /Length 266 /Filter /FlateDecode >> stream xԽJA )2OhDxD,$IiNȉysXGG ɸ?IafabvTP^At=)H ~ ky3@9;B5xBE"vIG5kժT%)K7f̫څWjƫe.h]:2-cBRh v*(?Xٟ(U_m~?\0Aֽ endstream endobj 896 0 obj << /Length 174 /Filter /FlateDecode >> stream x333T0P0bSCCB.3JrW01 s{*r;8+r(DMtQ``o````H2$IpRHd &Cl⒡aX _#HQr8Փ+ W endstream endobj 897 0 obj << /Length 388 /Filter /FlateDecode >> stream xձN@`.$#O l;L0XXX><%ƅey\dgg680:GgfqzP&]Kiy{JJsVDW: AD% A#"Dz/̨T!0oqj@Q>+[@+ @TfHeF  E\!"bDF?5^J䳽"rP !m +"'屨vu$A1.wa?..qM0g$ p ɳnf -m1> stream x333T0P0bSSCcCB.b%r9yr+s{=}JJS ]&ry(000700DI2؃Iv$y%? JCrzrr! endstream endobj 899 0 obj << /Length 256 /Filter /FlateDecode >> stream xԽjA4>]C6 LeR%)SD.p,Haqrpqv%X$Mp`?~bҗMnsM+z2FD; F11Ij 1xHogT  e.D ͏rwTcyzMjgԴPg?Q(n!v5|WyeoP^jWrJK**(?Yٯ(=-%ůc-?[ endstream endobj 900 0 obj << /Length 347 /Filter /FlateDecode >> stream xՔ;N0&Gع$F,)@T@I:9#Laec;,+p|38N@`} O| 43r}s oϼ\ 'D 34!!ȄrԌ_ Q1V-E:u=GJil"eS>s?gvU\z*@ӝ8fX63.8wإ\D6'՞[Te>Uaȣ -sY1/g_gzO]ЧI> stream x핱N@P\ Š*L0X!|1><%aY@FoٽN;z5W{:TP]hy-u0y CX H+ҏݥJKδ eRB$Ja>  jɡؒK1k(p,y$BL"m#Q# XcEɨLlThLM$# eOC*: jC$(Ӕ~f/Q'N~Cрoԍ]P>m>*#r7}iwFHycNV4DUc@v\uRt<†P > stream xԽN0+5WGroZHx"80ͳ>Y+ix~fgx^秗{.N\^+Yj.\ 6vJD32'K)3ji@4.6 Rt IײB8ida fxTb2H蝤ć6 P_rJ b^IPRU@ʂSQuF?.]|rT?lT~##٦} aW>¸2fqj{Ǩߓ sB,(aP ]*< 2M lPjZ}RwO+~ɿ k endstream endobj 903 0 obj << /Length 228 /Filter /FlateDecode >> stream xj@sy7Q@ T= TOd endstream endobj 904 0 obj << /Length 394 /Filter /FlateDecode >> stream xuN@ etK!TJ;E*EL @0Ǐ$k Z*!zڿo:Xla,¼nVrj{Sۺ2ٔb]rgz4RȉdZ"!_ah u^ߺGX?JL 3 <@1dȐ*$  0ShTz 5Dbބ°40Drc-e\FUdh)SV1\\L d ))8 'A'0Bq݃nbz>q['e2~ှfIrFpa^7ex!d{eOs7wB}d endstream endobj 905 0 obj << /Length 243 /Filter /FlateDecode >> stream xӱ0H-y hVP?8(}b ZEL nmk [6 ߛ[b'5uPw ToG j32y+O@>FXA\GU C;s)+य़k,La8ŹIjK3 DF#behLB,VӨ?"?Ґ endstream endobj 906 0 obj << /Length 258 /Filter /FlateDecode >> stream xJ1,{e@4!P+AO'CE#8B"x9$|$O'j8#B3H0CX)pw(d\s/ϯOF7HxO'Ќ.LU/3G2(_ɄM$dʬvw*~rMmMUID'N-eUx?&\BJ(^y4l4pV_ ;kY]׊[6-e ,J endstream endobj 907 0 obj << /Length 369 /Filter /FlateDecode >> stream xڵ1N@!$p kɺ&RheaRK /Fb5,0cboHH_X)X$b!2'NG.#sl|n20x|ny]秗{//OJHy^1?Kf/ SԘ)ӺTQ j@)Ni‰QpԢ4QRN(D5T>*U AT0t"x©@A|>Rx5q n!PnwCR"EdVm?#lF2ۆu܏s$=rFLg8?SU?*|<#FwU)_/zcA endstream endobj 908 0 obj << /Length 499 /Filter /FlateDecode >> stream xڽձn0` p#/r)PکCѩ!AZ|3Q5b;R<&Ue2 O>N]w{uWwէw>yS-xuq{|:ު_[eegb{X^.WnH,R헡~%rQ!҄d.S'X>Rr/I"5)L&J\n@CA#/A#1w=)XAtJays@r%ٸiHS"_CF5&! |܍d |i 4&ZHA— H:S`?zJSM)_Gbl2"LLh9R_ 9JcWLS&#/P' IG@$hdJJc&7C9K{I3 $Wb,W7@]DҸ69#O-pJI#7Bx*Q"ۄ>$9MI ?_3^ endstream endobj 909 0 obj << /Length 492 /Filter /FlateDecode >> stream xڵԱ0qG"y#/S oċEb5ݚ1CcoE]Hm\T:gnԫꋖߤnWW{ysGeo#;ϯyZiYߪOZ5wx{B^!Q3 rpvU}˃ʉ4U] i@^+W+cʢV||> /&T5||9-q!B<-DPEGm L\=ާ{堑BxA{O@ k Ara!H}m r+es/=$zd eX6׌g$ m }JaN2*rV*+'TT]-00)a: cy@?OQnp*؇}n)Do ҝT *Oyɬd '!Y|&&rE0Pi&tHw8UQ~ؤQ endstream endobj 913 0 obj << /Length1 1381 /Length2 6029 /Length3 0 /Length 6979 /Filter /FlateDecode >> stream xڍx4\ڶ Zhчu{NDc0D{ !: G'JM=5k}_w{3ks (!mHZ$(i PD&0пD&Pw ;ؔh P<@"H\ Re'-xD@QDJHWw#S[7Pp `@v`*Bp!}#*%$%vA "dy^0#{BF]F$9P9 h/;1a( @AC -+X/?@+ ; ]\`CZho4?QHL< m1߭ 0f? 0W4JQW6 씐..PE?e;w?@z!^vưp2F<0ѿmP4@()&& @PoЯF>f ~HW=f h"C=4?\@; :DΎ1CZc b}uga7 *_NEE7O@X )@ 1( y?}G ]>ݲptB&#(tc,+#U8/>z1*Fbo)/jC`.@1jP@8`-'RyC`h_nKopD~=a0Q@0"8c"( 5 %6aQ1C9kJ¨!A `f #݉~,H d# 1vxc Bg0Wa5 ^#x+щ}Qhg~Zjn6v/ g͕GL3~9~ԝR[W<(~eC;gDS$3XZp\l*Dm?JNYq yOYWCo[dzi]a?ş)}YZZzߗ!rT[-"kpuR&RyZ"]K2[5z!Egdz7r iNv`W䨶:<0:egZ CEe'-d+]M.(9(4ptXV= ~{4cIA|j~>ydD=h֑f'IC= Vse͓0h֩&P^rn-DbHk+S\*\!hK9˅*wdBe$o(%׮~*PHJ3MDXn'EC|şƁ֔e}poP5nSx{\i CjRlaV~hc~VI3{;Ɠ 3{Vt\T)*nqͅK%2 T&&q<"<ro$ڀi.Z?iPs=<>9nEF_V֚bL<=ұZ˩fZW( ͨ{κ2?+geKzH'˴[xI p,X.F>M=BXͲ7qnYRH6P-aaBkkV<٬Fo$ثU_Vi; >]zXaF)e)P,z" ^d%ԎOSZ EMO=ă޸*G]S*HtC9P+>ZfWuhB66L6FBٖ'lLGrk(R<$ V8zg݉ g-bgu?uox1K:P4'J+ήRARaUK9jJrl!Хb/O#bqzطZ; vīܝTlUջ HVK5> r!v-pxK7ZcO cHy쪘-Nx2.B}FڊsnQZk6b:?-G -՚QRr9s1m0:wb@]g^}1+9r ՞KXV(gK(r^=:Va>O)S+1jeUpM{S*e|}jl~\#̴%]wzj#|>5Nj> oVO*Peߵ1EjdATUfԖ4vT(5][ -O(/r^|'(Kō~Wnߎ=ޖ*v1ʎ m0qXs+}4Dtt05ͶM(@7ǭI}7KLcO NNx#|W_{5rZqDȓ+xP=9ilxp, ȯEt?K Y8QϑXS7b )y' l4,ܺ6OG4Їe%LsZ3 $q]B\r6 _+8d߯}3_ !}x~`IWVNRo\%:9j73eIF^;YF>(W9a as5espĹGstCrnYDHkO%zWsrbXW5@e=ࠫ ǐ\;yH}:44v:c/}-Tz2m!=xjszuu-q5wh|' O^߰UVFz<yHS乺uhꗫ=,"7W}d]ʔN“%1<ٚ0EdR3AU i|V(&Ωd E_ie}d#x׃mp:[tk \}%i72jcpdاjҚ'☥I_|0LK>NAhP*` PvTmhrBf7+~7l;K1%'yA@QB:*⦪/cQ!/g}7ޤ*^;!}Ǟ_C8mIbcN"/cOssۉ] :Vc9j٧N\} `HNw~rli#}-BvH;)d[jP+wN0fC$nyߧm2J\T4_F_3c#ܔhҀcΠ7W3m۶@.>9Aђ(NY8PCu[J:gh; 'uVr(X+.lz\\Xށ=lV S M.u}W:ZH;E,y,q]h.4;jI>C <,X >ˣXBtS{=1ǎ3O?t<ŚF喝'=2ɵl9)1OcGğH+Z'薧|U%RhaoZ'ݹηŃyOĒz&$@@Z_Mv4(On{`pg3eLa綝J#|{hƞ(?u84B?Kd æaLRsOxcMȎ--vn#Ѻ+%.eMf]|Hny/Kǻ D<ts<'ox^l5/_ 痨lܰKfDžE3 lenvFm^$Uoo]^~Ы.=K?h+^gNh=)_ @wccV[fǗ!jVE8V/SLg 5&\ԓyKGp0~exՖ6[ϱ=d|#$}#ƊY#!ZM>v Zpk{Zeز`nlڪY8Y4gޒɚdzU臯so2jm'Կz-(i,3+(2dف3X-HVAյ&g4>QcLɫwf@iT1&Ǒ |>/gtC8 D̺5Kk#5;bOwE5 &=wNUYT#,5ƥIM,(E|A$6QA,iѪeU-ϳ橧aiի ӊUo> @\ـ%hz|MB[Эi2::sPӅ endstream endobj 280 0 obj << /Type /ObjStm /N 100 /First 931 /Length 6788 /Filter /FlateDecode >> stream x]oGrxF~?>{`]rw2Hp|_tu.)RLpjfgzQerB\ 3篛>dmRekc9Gx@Ͼlҡ ݴ:T48{ݻWg5#O]]xzv{}I^7/no< 8*2@ x\ܐf"0|dd#j=$q#&WOOv$_ú.y4m޿輪B}igf@%6ځXhOCGKH R@H"#M Bc~ !l D@A  D AA)U'u } A| Q Q $PLS@g @T @T @NWfrP#1 ZNAA9SPt *g)UJ wsf%ilVfhlVfhlVfu8ԤzjHFy7&л!Z4RU!`BjXԂq R f8| -\2AלA5Qh̫Q_8D}$A})hÎ קǀ}}(طӴc{w3OkL{W8QPا~?fxH,Oqf[ÀPA=0!JIxa*0!hw.Wp!Af|˓ pp墰AT` nyH /Q~A5> !@L ғ!%@ &bA1@>, A\ Aɵ\ A˵\ A˵d!%BJ +bP+ĨdWIɮ]h]hٕ](Ԥ`&V0t""g9we4R-BU(! ʇ(AdtaMcr R$tH,HY" EBgAdӑ{ ]v@IŎF5Q[F {r򡽐+S K([ >bb;k6h^4uWǼ65.M`19=]7wK~6i݆ꎱ@\^0PyL\ZݙyqwѹQ4QM8cǡh4FCh͉Cáo7 } ^/,ǎNqlbofYf{~w)S %`sgRQ%d$ƌ2-s[I/(tT}ph_ ^r,t`wab+&[ KǨt KǨt ž ne ' 64XEgtc=EFEA33HE/LS7ތzWJ;NǢ3Xt6%;x,:F5wE;1͹U`'N ^!j?To⏠P šzsA(wƋ savv0b )R`Npǭǯ*'f->}7?ZX~8~sPsb1OcqG+pyT?~:Y5}IXg_ܜV]e0 eKV?}wh8Xl梡-;I;@w2{Y4#P0sDqk^JIC _7msMA\S6N)6@4?[n43ða)Rð⎋lts.wQ&tDi7]uP6ےxf'R&z2}#T pn%G"OGk;I7ϥax]sX\<^RhWBwKy!t`c$A3݌Vx 8NαEOׅyanx2";r멪 .•{T.^,}&6cto,Ϲ+z<9PnLN:$h5N[>BF$`')c$ZM'Ҧ[^mCCCxCI]5CkIYy&?HQ*z [%C##HCAMIE}h:;: Mܤ044PP44GR>#E(#%AЁ(Pap!ElM6m;kdhl6&zPbtzq:[8^VТТТТТT Rv);킔E )GyAe_@EC9}ڕ,lI}ς\\@Eis>W;JmVZL %?n-&\B2j@k7N^'8ݹY֨ŨڪYuhq]jn=E;͢YtSvoPNrPN]ѣAqJ>fѣ k!, bJ!&nbBlxR S uJ!6N)Ć)X;;r;;rZPUZPU;;r;;r;;r;;r;;r;;rֵӉǹh)(!cM+^Ы(J(tPDra`Ѷmи,} > .3{O\wC&Xdסbp>یmȐRM %K&&hLj~"H@8A՛sY9@2w=p9I6Ʀ;y,[48{zl%Jf6@'S#.4uz@?z\i6~SWIs2;2㋣cЅ_湱jvi[3_-fdfKuca.Q]֏vMsX^q\Mw:ǜGu5k:kl{v׮=f?cL=9lP~Zn\n\n\n\n\r*s'e)L3DALd 63Qثa/>3Q[bU V^=liCqPԁ(hu p?QX@QD٬FIDA ^˅D\4X36cK;Y>gy3]]s1TA64Еg?P'z kS 2rK(|ҡlHW#\D 9FB26rGmQ,JcUxұC*e=JG^z-JCJcyj{oB?0}aQg4V?=ժY xdM {(b>!|iKzhPŭDi3}7XNJ׎mPnvvM@fӣ"zv s؋i \xo˷ݘkףךKߠv2Csa5&ШXcB5&^kLcb+K5&d 6uQl(_"kLDLE/Wf[f[fK]jn&`&`14UrUT5MUT5MUT5MUT5MUsz{@g/fޝf*~^SF> endobj 917 0 obj << /Type /ObjStm /N 43 /First 346 /Length 1427 /Filter /FlateDecode >> stream xڍX[o6~c[ x' @֬@ nVAq4O-˿9JX;!i*^yμe2Q8$0뙔Yͤrd2m83=Ӟ_4c3 S)$c/q䌋3a1!ٸRvO̸p3NAFǸU@D{h>(& `RO/ 6遀 es*R0%4$%4<@@t Gg үVu7]yu_W;ll6> Bi1p~R`(}wI99X Ts=4RHi)Og3i1IHGae62Դ>56~֔ [PaA`6cPd6Q`×#',MF`6Q`-e4MޤPNjőHh*ӟ+}&RgD_N#Y6QmiiȌ2-j5XRF$}X;W8iJ]:Mq&" b "AHN 2cq f4&OʼNyNL$24=ɜz3yZ[mм KK̐{64sV =.p=!|TeHx$΋Mid 2WtОHG@*H?pG{H=@X@,]d,jC#cruՌ<|kavNS%LKe3i\dK1~+~Yb.dP3ߟ0>+]^;C[W^ 9п_b9mՂUS֯ˮx Ƈ\ևom5:oFګ+x7Ou|W>T;?/<|Z^_H? <8DF9F010A5E043921775D044BAD1F711>] /Length 2671 /Filter /FlateDecode >> stream xyO9kg3111}}ߗ RHBH DE$IMHBI~Kuy>Ͻs99{}(n ʻ(E-ҿ{1G A>b%0"VPX"R*+a(J Ī0YFpk Ψ|Mb9Ό|H$IQBT E, "$&ƌbPXba)J, U%*k@Utb]%5$Fb5!@b!=El12ˆZĆ1ֆb#Ilu0sFprXsChnQq]] lKh v:@G tnz@O~@# C LpƄ) ema[[βL>cE.nbѠ찭Ȫ:aPaYT&+\RPByS>lj܇Aa% CS7 QjgPTO(iA2r'*s-J+NPԶ(m #=>Ϣ!V)Oܹ6P>Hu`b{jSԆ6< OmxjSE.2#ɞb-ju>EH= OmxjÇmQC:C,R8\7Łb*‰1?#8!ÉWТ[s"P *APwTFp8BL'9b61x 1K19T̼"$AE/\ӉʈuabpXl|^l(6WSbљv%)]VՁv^>)G@l Ɇd#Űb8w1S"Fich5-[LVtɃfwdĝ]LƩ^n5%0\6ibSX)(gdk Ϝ $f1҇Yhb˺?|}GuP )Ez9}tO$'qOe n0ˮ [Q'VUj .SH AUTHOR Francois Trahay (francois.trahay@telecom-sduparis.eu) eztrace-1.1-7/doc/man/PaxHeaders.7332/eztrace_create_plugin.10000644000000000000000000000013212544237152020574 xustar0030 mtime=1435582058.511899952 30 atime=1507797515.885987695 30 ctime=1508162372.158294241 eztrace-1.1-7/doc/man/eztrace_create_plugin.10000644000175000017500000000477112544237152021774 0ustar00trahaytrahay00000000000000.\" Manpage for eztrace_create_plugin. .\" Contact eztrace-devel@lists.gforge.inria.fr to correct errors or typos. .TH man 1 "05 September 2013" "1.0" "eztrace_create_plugin man page" .SH NAME eztrace_create_plugin \- creates an EZTrace plugin .SH SYNOPSIS eztrace_create [OPTION] FILE .SH DESCRIPTION Generate an EZTrace plugin .SH OPTIONS .TP -I > Add specific include directories for the compilation of the generated code. .TP -o > Select the output directory. .TP -h --help Print a brief help message and exits. .SH EXAMPLES eztrace_create_plugin generates the source code of an EZTrace plugin described by a template file. The template file has to be structure as follows: --- foo.tpl .br BEGIN_MODULE .br NAME example_lib .br DESC "module for the example library" .br LANGUAGE C .br ID 99 .br int foo(int n) .br BEGIN .br EVENT("Do function foo") .br END .br void bar(int n) .br BEGIN .br RECORD_STATE("running function bar") .br END .br END_MODULE .br --- end of foo.tpl Passing foo.tpl to eztrace_create_plugin will result in a directory (default: output) that contains the source code of an EZTrace plugin that intercepts the foo and bar functions. $ eztrace_create_plugin foo.tpl .br New Module .br Module name : 'example_lib' .br Module description : '"module for the example library"' .br Language : 'C' .br Module id : '99' .br Function 'foo' done .br Function 'bar' done .br End of Module example_lib Once the generated source code is compiled, the resulting plugin can be used with eztrace or eztrace.old: $ cd output .br $ make .br $ export EZTRACE_LIBRARY_PATH=$PWD .br $ eztrace_avail .br 3 stdio Module for stdio functions (read, write, select, poll, etc.) .br 2 pthread Module for PThread synchronization functions (mutex, semaphore, spinlock, etc.) .br 6 papi Module for PAPI Performance counters .br 1 omp Module for OpenMP parallel regions .br 4 mpi Module for MPI functions .br 5 memory Module for memory functions (malloc, free, etc.) .br 153 example_lib module for the example library .br $ eztrace -t example_lib my_application .br [...] .SH SEE ALSO eztrace_convert(1), eztrace_stats(1), eztrace.old(1), eztrace_cc(1), eztrace_avail(1), eztrace_loaded(1), eztrace_create_plugin(1) .SH REPORTING BUGS Report eztrace bugs to eztrace-devel@lists.gforge.inria.fr .br EZTrace home page: .SH AUTHOR Francois Trahay (francois.trahay@telecom-sduparis.eu) eztrace-1.1-7/doc/man/PaxHeaders.7332/eztrace.old.10000644000000000000000000000013212544237152016450 xustar0030 mtime=1435582058.511899952 30 atime=1507797515.885987695 30 ctime=1508162372.162294591 eztrace-1.1-7/doc/man/eztrace.old.10000644000175000017500000000250212544237152017636 0ustar00trahaytrahay00000000000000.\" Manpage for eztrace.old. .\" Contact eztrace-devel@lists.gforge.inria.fr to correct errors or typos. .TH man 1 "05 September 2013" "1.0" "eztrace.old man page" .SH NAME eztrace.old \- performance analysis tool .SH SYNOPSIS eztrace [OPTION] COMMAND_LINE .SH DESCRIPTION Run COMMAND_LINE and generate an execution trace. .SH OPTIONS .TP -d Run eztrace.old with gdb .TP -e Show environment .TP -p PadicoTM mode .TP -m MPI mode .TP 5 -t [plugin1 plugin2 ... pluginN] Select a list of plugins .TP -o DIRECTORY Select the output DIRECTORY .TP -l DIRECTORY Add DIRECTORY to the list of directories in which eztrace search for plugins .TP -f Enable EZTRACE_FLUSH .TP -? Display this help and exit .SH EXAMPLES $ eztrace.old -t "memory pthread" ./my_program param1 param2 For MPI programs: .br $ mpirun -np 2 `eztrace.old -m ./my_program` param1 param2 .SH SEE ALSO eztrace(1), eztrace_convert(1), eztrace_stats(1), eztrace_cc(1), eztrace_avail(1), eztrace_loaded(1), eztrace_create_plugin(1) .SH BUGS eztrace.old is a fallback launcher for eztrace. It relies on LD_PRELOAD for interception function calls. Thus, it only works for shared libraries. .SH REPORTING BUGS Report eztrace bugs to eztrace-devel@lists.gforge.inria.fr .br EZTrace home page: .SH AUTHOR Francois Trahay (francois.trahay@telecom-sduparis.eu) eztrace-1.1-7/doc/man/PaxHeaders.7332/eztrace_avail.10000644000000000000000000000013212544237152017047 xustar0030 mtime=1435582058.511899952 30 atime=1507797515.885987695 30 ctime=1508162372.142292839 eztrace-1.1-7/doc/man/eztrace_avail.10000644000175000017500000000225112544237152020236 0ustar00trahaytrahay00000000000000.\" Manpage for eztrace_avail. .\" Contact eztrace-devel@lists.gforge.inria.fr to correct errors or typos. .TH man 1 "05 September 2013" "1.0" "eztrace_avail man page" .SH NAME eztrace_avail \- print the list of available EZTrace modules .SH SYNOPSIS eztrace_avail [OPTIONS] .SH DESCRIPTION Print the list of available EZTrace modules .SH OPTIONS .TP -v Select the verbose mode .TP -h Display this help and exit .SH EXAMPLES $ eztrace_avail .br 3 stdio Module for stdio functions (read, write, select, poll, etc.) .br 2 pthread Module for PThread synchronization functions (mutex, semaphore, spinlock, etc.) .br 6 papi Module for PAPI Performance counters .br 1 omp Module for OpenMP parallel regions .br 4 mpi Module for MPI functions .br 5 memory Module for memory functions (malloc, free, etc.) .SH SEE ALSO eztrace_convert(1), eztrace_stats(1), eztrace.old(1), eztrace_cc(1), eztrace_avail(1), eztrace_loaded(1), eztrace_create_plugin(1) .SH REPORTING BUGS Report eztrace bugs to eztrace-devel@lists.gforge.inria.fr .br EZTrace home page: .SH AUTHOR Francois Trahay (francois.trahay@telecom-sduparis.eu) eztrace-1.1-7/doc/man/PaxHeaders.7332/eztrace_cc.10000644000000000000000000000013112544237152016337 xustar0030 mtime=1435582058.511899952 30 atime=1507797515.885987695 29 ctime=1508162372.15029354 eztrace-1.1-7/doc/man/eztrace_cc.10000644000175000017500000000135412544237152017532 0ustar00trahaytrahay00000000000000.\" Manpage for eztrace_cc. .\" Contact eztrace-devel@lists.gforge.inria.fr to correct errors or typos. .TH man 1 "05 September 2013" "1.0" "eztrace_cc man page" .SH NAME eztrace_cc \- Compile an OpenMP application for eztrace .SH SYNOPSIS eztrace_cc COMPILATION_COMMAND .SH DESCRIPTION Compile an OpenMP application for eztrace. .SH EXAMPLES $ eztrace_cc gcc -o openmp_program openmp_program.c -fopenm .SH SEE ALSO eztrace_convert(1), eztrace_stats(1), eztrace.old(1), eztrace_cc(1), eztrace_avail(1), eztrace_loaded(1), eztrace_create_plugin(1) .SH REPORTING BUGS Report eztrace bugs to eztrace-devel@lists.gforge.inria.fr .br EZTrace home page: .SH AUTHOR Francois Trahay (francois.trahay@telecom-sduparis.eu) eztrace-1.1-7/doc/man/PaxHeaders.7332/eztrace.10000644000000000000000000000013212544237152015673 xustar0030 mtime=1435582058.511899952 30 atime=1507797515.885987695 30 ctime=1508162372.142292839 eztrace-1.1-7/doc/man/eztrace.10000644000175000017500000000210612544237152017061 0ustar00trahaytrahay00000000000000.\" Manpage for eztrace. .\" Contact eztrace-devel@lists.gforge.inria.fr to correct errors or typos. .TH man 1 "05 September 2013" "1.0" "eztrace man page" .SH NAME eztrace \- performance analysis tool .SH SYNOPSIS eztrace [OPTION] COMMAND_LINE .SH DESCRIPTION Run COMMAND_LINE and generate an execution trace. .SH OPTIONS .TP 5 -t [plugin1 plugin2 ... pluginN] Select a list of plugins .TP -o DIRECTORY Select the output DIRECTORY .TP -l DIRECTORY Add DIRECTORY to the list of directories in which eztrace search for plugins .TP -f Enable EZTRACE_FLUSH .TP -d Debug mode .TP -?, -h Display this help and exit .SH EXAMPLES $ eztrace -t "memory pthread" ./my_program param1 param2 $ mpirun -np 2 eztrace -t "mpi pthread" ./my_program param1 param2 .SH SEE ALSO eztrace_convert(1), eztrace_stats(1), eztrace.old(1), eztrace_cc(1), eztrace_avail(1), eztrace_loaded(1), eztrace_create_plugin(1) .SH REPORTING BUGS Report eztrace bugs to eztrace-devel@lists.gforge.inria.fr .br EZTrace home page: .SH AUTHOR Francois Trahay (francois.trahay@telecom-sduparis.eu) eztrace-1.1-7/doc/man/PaxHeaders.7332/eztrace_convert.10000644000000000000000000000013112544237152017432 xustar0030 mtime=1435582058.511899952 30 atime=1507797515.885987695 29 ctime=1508162372.15029354 eztrace-1.1-7/doc/man/eztrace_convert.10000644000175000017500000000234612544237152020627 0ustar00trahaytrahay00000000000000.\" Manpage for eztrace_convert. .\" Contact eztrace-devel@lists.gforge.inria.fr to correct errors or typos. .TH man 1 "05 September 2013" "1.0" "eztrace_convert man page" .SH NAME eztrace_convert \- create PAJE/OTF traces .SH SYNOPSIS eztrace_convert [OPTIONS] INPUT_FILES .SH DESCRIPTION Browse the INPUT_FILES generated by the eztrace command (or eztrace.old) and create PAJE or OTF trace files. .SH OPTIONS .TP -v Enable verbose mode. .TP -t TRACE_FORMAT Select the output trace format. Available trace formats are PAJE, OTF (default: PAJE). .TP -z Enable trace compression. .TP -o OUTPUT_FILENAME Save the output trace as OUTPUT_FILENAME (default: eztrace_output.trace). .TP -h Display this help and exit .SH EXAMPLES $ eztrace -t pthread ./application .br Starting EZTrace... done .br [...] .br Stopping EZTrace... saving trace /tmp/user_eztrace_log_rank_1 .br $ eztrace_convert /tmp/user_eztrace_log_rank_1 .SH SEE ALSO eztrace(1), eztrace_stats(1), eztrace.old(1), eztrace_cc(1), eztrace_avail(1), eztrace_loaded(1), eztrace_create_plugin(1) .SH REPORTING BUGS Report eztrace bugs to eztrace-devel@lists.gforge.inria.fr .br EZTrace home page: .SH AUTHOR Francois Trahay (francois.trahay@telecom-sduparis.eu) eztrace-1.1-7/doc/man/PaxHeaders.7332/eztrace_loaded.10000644000000000000000000000013212544237152017203 xustar0030 mtime=1435582058.511899952 30 atime=1507797515.885987695 30 ctime=1508162372.162294591 eztrace-1.1-7/doc/man/eztrace_loaded.10000644000175000017500000000225412544237152020375 0ustar00trahaytrahay00000000000000.\" Manpage for eztrace_loaded. .\" Contact eztrace-devel@lists.gforge.inria.fr to correct errors or typos. .TH man 1 "05 September 2013" "1.0" "eztrace_loaded man page" .SH NAME eztrace_loaded \- print the list of selected EZTrace modules .SH SYNOPSIS eztrace_loaded [OPTIONS] .SH DESCRIPTION Print the list of selected EZTrace modules .SH OPTIONS .TP -v Select the verbose mode .TP -h Display this help and exit .SH EXAMPLES $ eztrace_loaded .br 3 stdio Module for stdio functions (read, write, select, poll, etc.) .br 2 pthread Module for PThread synchronization functions (mutex, semaphore, spinlock, etc.) .br 6 papi Module for PAPI Performance counters .br 1 omp Module for OpenMP parallel regions .br 4 mpi Module for MPI functions .br 5 memory Module for memory functions (malloc, free, etc.) .SH SEE ALSO eztrace_convert(1), eztrace_stats(1), eztrace.old(1), eztrace_cc(1), eztrace_avail(1), eztrace_loaded(1), eztrace_create_plugin(1) .SH REPORTING BUGS Report eztrace bugs to eztrace-devel@lists.gforge.inria.fr .br EZTrace home page: .SH AUTHOR Francois Trahay (francois.trahay@telecom-sduparis.eu) eztrace-1.1-7/doc/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212544237152015435 xustar0030 mtime=1435582058.511899952 30 atime=1508162219.641808369 30 ctime=1508162372.134292138 eztrace-1.1-7/doc/Makefile.am0000644000175000017500000000175512544237152016634 0ustar00trahaytrahay00000000000000if HAVE_LATEXMK doc_DATA = user_manual.pdf docfiles = user_manual.pdf MANNAME = user_manual MANTEXSRC = $(MANNAME).tex MANAUX = $(MANNAME).aux MANPDF = $(MANNAME).pdf CLEANFILES = $(MANPDF) $(MANNAME).log $(MANNAME).idx $(MANNAME).out \ $(MANNAME).toc $(MANAUX) $(MANNAME).auxlock $(MANNAME).bbl \ $(MANNAME).blg $(MANNAME).fdb_latexmk $(MANNAME).fls header.aux $(MANPDF): $(srcdir)/$(MANTEXSRC) BIBINPUTS=$(top_srcdir)/doc latexmk -pdf -pdflatex="pdflatex -interaction=nonstopmode" -bibtex $< dist_doc_DATA = $(docfiles) endif check_PROGRAMS = EXTRA_DIST = $(top_srcdir)/doc/references.bib user_manual.pdf $(MANTEXSRC) \ $(top_srcdir)/doc/man/eztrace.1 \ $(top_srcdir)/doc/man/eztrace_avail.1 \ $(top_srcdir)/doc/man/eztrace_cc.1 \ $(top_srcdir)/doc/man/eztrace_convert.1 \ $(top_srcdir)/doc/man/eztrace_create_plugin.1 \ $(top_srcdir)/doc/man/eztrace_loaded.1 \ $(top_srcdir)/doc/man/eztrace.old.1 \ $(top_srcdir)/doc/man/eztrace_stats.1 eztrace-1.1-7/doc/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135253015442 xustar0030 mtime=1508162219.657809544 30 atime=1508162286.935052988 30 ctime=1508162372.138292489 eztrace-1.1-7/doc/Makefile.in0000644000175000017500000004472413171135253016644 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ check_PROGRAMS = subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__dist_doc_DATA_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__dist_doc_DATA_DIST = user_manual.pdf am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(docdir)" "$(DESTDIR)$(docdir)" DATA = $(dist_doc_DATA) $(doc_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUDA_CFLAGS = @CUDA_CFLAGS@ CUDA_LDFLAGS = @CUDA_LDFLAGS@ CUDA_LIBS = @CUDA_LIBS@ CUDA_ROOT = @CUDA_ROOT@ CUPTI_CFLAGS = @CUPTI_CFLAGS@ CUPTI_LDFLAGS = @CUPTI_LDFLAGS@ CUPTI_LIBS = @CUPTI_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ DYNLIB_EXT = @DYNLIB_EXT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ GTGDIR = @GTGDIR@ GTG_CPPFLAGS = @GTG_CPPFLAGS@ GTG_DEPENDENCIES = @GTG_DEPENDENCIES@ GTG_EXT_CPPFLAGS = @GTG_EXT_CPPFLAGS@ GTG_EXT_LDFLAGS = @GTG_EXT_LDFLAGS@ GTG_EXT_LIB = @GTG_EXT_LIB@ GTG_LDFLAGS = @GTG_LDFLAGS@ GTG_LIB = @GTG_LIB@ GTG_OUT_OF_ORDER = @GTG_OUT_OF_ORDER@ HAVE_ENV = @HAVE_ENV@ HAVE_LIBBACKTRACE = @HAVE_LIBBACKTRACE@ HAVE_LIBOPCODE = @HAVE_LIBOPCODE@ HAVE_PRCTL_H = @HAVE_PRCTL_H@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LD_LIBRARY_PATH_NAME = @LD_LIBRARY_PATH_NAME@ LD_PRELOAD_NAME = @LD_PRELOAD_NAME@ LIBBACKTRACE_CPPFLAGS = @LIBBACKTRACE_CPPFLAGS@ LIBBACKTRACE_LDFLAGS = @LIBBACKTRACE_LDFLAGS@ LIBBACKTRACE_LIB = @LIBBACKTRACE_LIB@ LIBBACKTRACE_ROOT = @LIBBACKTRACE_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LITL_PRINT = @LITL_PRINT@ LITL_ROOT = @LITL_ROOT@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPI_CFLAGS = @MPI_CFLAGS@ MPI_EVENT_ID = @MPI_EVENT_ID@ MPI_INC = @MPI_INC@ MPI_LDFLAGS = @MPI_LDFLAGS@ MPI_MODULE_NAME = @MPI_MODULE_NAME@ MPI_ROOT = @MPI_ROOT@ NM = @NM@ NMEDIT = @NMEDIT@ NVCC = @NVCC@ NVCCFLAGS = @NVCCFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAPIDIR = @PAPIDIR@ PAPI_CPPFLAGS = @PAPI_CPPFLAGS@ PAPI_ENABLED = @PAPI_ENABLED@ PAPI_LDFLAGS = @PAPI_LDFLAGS@ PAPI_LIBDIR = @PAPI_LIBDIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PPTRACE_BINARY_TYPE = @PPTRACE_BINARY_TYPE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STARPU_CFLAGS = @STARPU_CFLAGS@ STARPU_CPPFLAGS = @STARPU_CPPFLAGS@ STARPU_LDFLAGS = @STARPU_LDFLAGS@ STARPU_LIBS = @STARPU_LIBS@ STARPU_ROOT = @STARPU_ROOT@ STRIP = @STRIP@ TARGET_BITS = @TARGET_BITS@ TL_CPPFLAGS = @TL_CPPFLAGS@ TL_EXT_CPPFLAGS = @TL_EXT_CPPFLAGS@ TL_EXT_LDFLAGS = @TL_EXT_LDFLAGS@ TL_EXT_LIB = @TL_EXT_LIB@ TL_LDFLAGS = @TL_LDFLAGS@ TL_LIB = @TL_LIB@ USE_BIN_INSTRUMENTATION = @USE_BIN_INSTRUMENTATION@ USE_CUDADIR_FROM_USER = @USE_CUDADIR_FROM_USER@ USE_GETTID = @USE_GETTID@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ USE_PAPIDIR_FROM_USER = @USE_PAPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @HAVE_LATEXMK_TRUE@doc_DATA = user_manual.pdf @HAVE_LATEXMK_TRUE@docfiles = user_manual.pdf @HAVE_LATEXMK_TRUE@MANNAME = user_manual @HAVE_LATEXMK_TRUE@MANTEXSRC = $(MANNAME).tex @HAVE_LATEXMK_TRUE@MANAUX = $(MANNAME).aux @HAVE_LATEXMK_TRUE@MANPDF = $(MANNAME).pdf @HAVE_LATEXMK_TRUE@CLEANFILES = $(MANPDF) $(MANNAME).log $(MANNAME).idx $(MANNAME).out \ @HAVE_LATEXMK_TRUE@ $(MANNAME).toc $(MANAUX) $(MANNAME).auxlock $(MANNAME).bbl \ @HAVE_LATEXMK_TRUE@ $(MANNAME).blg $(MANNAME).fdb_latexmk $(MANNAME).fls header.aux @HAVE_LATEXMK_TRUE@dist_doc_DATA = $(docfiles) EXTRA_DIST = $(top_srcdir)/doc/references.bib user_manual.pdf $(MANTEXSRC) \ $(top_srcdir)/doc/man/eztrace.1 \ $(top_srcdir)/doc/man/eztrace_avail.1 \ $(top_srcdir)/doc/man/eztrace_cc.1 \ $(top_srcdir)/doc/man/eztrace_convert.1 \ $(top_srcdir)/doc/man/eztrace_create_plugin.1 \ $(top_srcdir)/doc/man/eztrace_loaded.1 \ $(top_srcdir)/doc/man/eztrace.old.1 \ $(top_srcdir)/doc/man/eztrace_stats.1 all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_docDATA: $(dist_doc_DATA) @$(NORMAL_INSTALL) @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-dist_docDATA: @$(NORMAL_UNINSTALL) @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) install-docDATA: $(doc_DATA) @$(NORMAL_INSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-docDATA: @$(NORMAL_UNINSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(docdir)" "$(DESTDIR)$(docdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_docDATA install-docDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_docDATA uninstall-docDATA .MAKE: check-am install-am install-strip .PHONY: all all-am check check-am clean clean-checkPROGRAMS \ clean-generic clean-libtool cscopelist-am ctags-am distclean \ distclean-generic distclean-libtool distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dist_docDATA install-docDATA \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags-am uninstall uninstall-am uninstall-dist_docDATA \ uninstall-docDATA .PRECIOUS: Makefile @HAVE_LATEXMK_TRUE@$(MANPDF): $(srcdir)/$(MANTEXSRC) @HAVE_LATEXMK_TRUE@ BIBINPUTS=$(top_srcdir)/doc latexmk -pdf -pdflatex="pdflatex -interaction=nonstopmode" -bibtex $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/doc/PaxHeaders.7332/user_manual.tex0000644000000000000000000000013213012560437016432 xustar0030 mtime=1479205151.264726866 30 atime=1508162368.938012521 30 ctime=1508162372.138292489 eztrace-1.1-7/doc/user_manual.tex0000644000175000017500000006566513012560437017643 0ustar00trahaytrahay00000000000000%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % FOR PRINTING \documentclass[ 11pt, a4paper, openright, cleardoubleplain, appendixprefix, chapterprefix, numbers=noenddot, DIV11, BCOR15mm ]{report} \newcommand{\eztrace}{EZTrace} \newcommand{\reporttitle}{\eztrace} \newcommand{\reportsubtitle}{A Generic Framework for\\ Instrumenting Applications} \newcommand{\reportsubsubtitle}{User Manual} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{etex} \usepackage{savesym} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[small,bf]{caption} % for plotting \usepackage{tikz} \usepackage{pgfplots} \usepackage{subfigure} \usepackage{graphicx} \usepackage{color} \usepackage{xcolor} \definecolor{ListingsKeywordColor}{rgb}{0,0,0.4} \definecolor{ListingsIdentifierColor}{rgb}{0,0.5,0} \definecolor{ListingsCommentColor}{rgb}{0.4,0.4,0.4} \definecolor{ListingsStringColor}{rgb}{0.6000,0.3333,0.7333}%{0.8,0,0} \definecolor{ListingsRuleSepColor}{rgb}{0,0,0} \definecolor{ListingsEmphColor}{rgb}{0,0.6667,0.6667} \definecolor{ListingsBreakSymbolColor}{rgb}{0.780,0.082,0.522} \definecolor{LinkColor}{rgb}{0,0,0.5} \definecolor{UnitColor}{rgb}{0,0,0} \definecolor{MathsVectorColor}{rgb}{0,0,0} \definecolor{MathsMatrixColor}{rgb}{0,0,0} \definecolor{MyGreen}{HTML}{228B22} % \definecolor{TikzGreen}{HTML}{} \definecolor{MyBlue}{HTML}{0000FF} \colorlet{MatrixElementsLight}{gray!20!white} \colorlet{MatrixElementsDark}{gray!40} % for listing \usepackage{listings} \lstset{ basicstyle=\scriptsize\ttfamily, tabsize=3, showtabs=false, showspaces=false, showstringspaces=false, tab=\rightarrowfill, keywordstyle=\color{ListingsKeywordColor}, identifierstyle=\color{ListingsIdentifierColor}, commentstyle=\color{ListingsCommentColor}, stringstyle=\color{ListingsStringColor}, emphstyle=\color{ListingsEmphColor}\bfseries\underbar, frame=none, rulesepcolor=\color{ListingsRuleSepColor}, numbers=left, numberstyle=\tiny, numbersep=5pt, captionpos=top, frame=tb, firstnumber=1, stepnumber=1, % numberfirstline=false, breaklines=true, breakatwhitespace=true, % prebreak=\mbox{\,$\color{ListingsBreakSymbolColor}\mathbf{\hookleftarrow}$}, mathescape=true, morekeywords={}, } \usepackage{url} \usepackage[final]{hyperref} \hypersetup{ % Farben fuer die Links colorlinks=false, % Links erhalten Farben statt Kaeten urlcolor=LinkColor, % \href{...}{...} external (URL) filecolor=LinkColor, % \href{...} local file linkcolor=LinkColor, %\ref{...} and \pageref{...} menucolor=LinkColor, citecolor=LinkColor, % Links raiselinks=true, % calculate real height of the link breaklinks, % Links berstehen Zeilenumbruch %backref=page, % Backlinks im Literaturverzeichnis (section, slide, page, none) %pagebackref=true, % Backlinks im Literaturverzeichnis mit Seitenangabe verbose, hyperindex=true, % backlinkex index linktocpage=true, % Inhaltsverzeichnis verlinkt Seiten hyperfootnotes=false, % Keine Links auf Fussnoten % Bookmarks bookmarks=true, % Erzeugung von Bookmarks fuer PDF-Viewer bookmarksopenlevel=1, % Gliederungstiefe der Bookmarks bookmarksopen=false, % Expandierte Untermenues in Bookmarks bookmarksnumbered=true, % Nummerierung der Bookmarks bookmarkstype=toc, % Art der Verzeichnisses % Anchors plainpages=false, % Anchors even on plain pages ? pageanchor=true, % Pages are linkable % PDF Informationen pdftitle={\reporttitle: \reportsubtitle. \reportsubsubtitle}, % Titel pdfauthor={Roman Iakymchuk}, % Autor pdfcreator={LaTeX, hyperref, KOMA-Script}, pdfstartview=Fit, % Dokument wird Fit Height geaefnet pdffitwindow=true, pdfpagemode=UseOutlines, % Bookmarks im Viewer anzeigen pdfpagelabels=true, % set PDF page labels } \usepackage{cleveref} \Crefname{algorithm}{Alg.}{Algs.} \Crefname{figure}{Fig.}{Figs.} \Crefname{table}{Tab.}{Tabs.} \Crefname{equation}{Eq.}{Eqs.} \Crefname{eqnarray}{Eq.}{Eqs.} \usepackage{float} \newfloat{algorithm}{htb}{lob} \floatname{algorithm}{Algorithm} \newlength{\figlength} \setlength{\figlength}{7.6cm} %8.2cm \newlength{\subfiglength} \setlength{\subfiglength}{7.3cm}%7.8 \newcommand{\becomes}{:=} \newcommand{\bytes}{b} \newcommand{\kb}{Kb} \newcommand{\mb}{Mb} \newcommand{\ghz}{GHz} \newcommand{\flop}{Flop} \newcommand{\flops}{Flops} \newcommand{\gflops}{G\flops} \newcommand{\svn}{SVN} \newcommand{\fxt}{FxT} \newcommand{\gtg}{GTG} \newcommand{\mpi}{MPI} % Title Page \title{ {\Huge\bf \reporttitle{}}\\[6mm] {\LARGE\bf \reportsubtitle}\\[12mm] {\Large\bf \reportsubsubtitle}} % \author{Roman Iakymchuk} \begin{document} \maketitle \tableofcontents \chapter{License of \eztrace} \eztrace{} is a computer program whose purpose is to analyze the performance of parallel applications. \eztrace{} is governed by the CeCILL-B license under French law and abiding by the rules of distribution of free software. You can use, modify and/ or redistribute the software under the terms of the CeCILL-B license as circulated by CEA, CNRS and INRIA at the following URL "http://www.cecill.info". As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license, users are provided only with a limited warranty and the software's author, the holder of the economic rights, and the successive licensors have only limited liability. In this respect, the user's attention is drawn to the risks associated with loading, using, modifying and/or developing or reproducing the software by the user in light of its specific status of free software, that may mean that it is complicated to manipulate, and that also therefore means that it is reserved for developers and experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the software's suitability as regards their requirements in conditions enabling the security of their systems and/or data to be ensured and, more generally, to use and operate it in the same conditions as regards security. The fact that you are presently reading this means that you have had knowledge of the CeCILL-B license and that you accept its terms. \chapter{Overview of \eztrace{}} \eztrace{}~\cite{Aulagnon12EZTrace,TraRue11Ccgrid,Coulomb10periscope} is a tool that aims at generating automatically execution traces from High-Performance Computing (HPC) programs. It generates execution trace files that can be interpreted by visualization tools such as ViTE~\cite{vite}. \eztrace{} has been designed to provide a simple way to trace parallel applications. This framework relies on plugins in order to offer a generic way to analyze programs; depending on the application to analyze or on the point to focus on, several modules an be loaded. \eztrace{} provides pre-defined plugins that give the ability to the user to analyze applications that use \mpi{} libraries, OpenMP, or Pthreads. However, user-defined plugins can also be loaded in order to analyze application functions or custom libraries. \chapter{Installation} \section{Requirements} In order to run \eztrace{}, the following software needs to be installed: \begin{enumerate} \item autoconf of version 2.63; \item {[}Optional\,{]} Any \mpi{} implementation. Make sure your \mpi{} installation provides dynamic libraries. \end{enumerate} We use custom versions of the following software: \begin{enumerate} \item LiTL v.0.1 (\url{}); \item \fxt{} v.0.2.10 (\url{http://download.savannah.gnu.org/releases/fkt/}); \item \gtg{} v.0.2 (\url{http://gforge.inria.fr/projects/gtg/}). \end{enumerate} Those are already included in \eztrace{}, but you can also provide your own versions. \section{Getting \eztrace} \begin{enumerate} \item You can get the latest stable release from the \eztrace{} website, \url{http://eztrace.gforge.inria.fr/}; \item Current development version is available via \svn{}\\ \texttt{svn checkout svn+ssh://scm.gforge.inria.fr/svn/eztrace}. \end{enumerate} After getting the latest development version (from \svn{}), you need to run\\ \hspace*{0.9cm}\texttt{./bootstrap}\\ and only then build the tool. \section{Building \eztrace{}} At first, you need to configure \eztrace{} by invoking the configure script:\\ \hspace*{0.9cm}\texttt{./configure -\,-prefix=}\\ Options to configure. You can pass several options to the configure script for specifying where it should find the required libraries:\\ \begin{tabular}{@{\hskip .9cm}l} \texttt{-\,-with-fxt=\$FXT\_ROOT} -- specify where \fxt{} is installed;\\ \texttt{-\,-with-gtg=\$GTG\_ROOT} -- specify where \gtg{} is installed;\\ \texttt{-\,-with-mpi=\$MPI\_ROOT} -- specify where \mpi{} is installed. The \texttt{mpi.h}\\ \hspace*{0.4cm}file must be located in the \texttt{\$MPI\_ROOT/include/directory};\\ \texttt{-\,-with-mpi-include=} -- specify the directory that\\ \hspace*{0.4cm}contains the \texttt{mpi.h} file. \end{tabular} Once \eztrace{} is configured, just run\\ \hspace*{0.9cm}\texttt{make}\\ \hspace*{0.9cm}\texttt{make install} \chapter{How to Use \eztrace?} \section{Recording Events} \subsection{Selecting Functions to Instrument} First, you should select functions in your application that you want to instrument. For this, you can set the \texttt{EZTRACE\_TRACE} environment variable to the list of plugins that should be used. For instance, set\\ \hspace*{0.9cm}\texttt{export EZTRACE\_TRACE="pthread mpi"}\\ if you want to instrument the PThread and \mpi{} functions. You can get the list of available plugins using the \texttt{eztrace\_avail} command:\\ \hspace*{0.9cm}\texttt{eztrace\_avail}\\[1mm] \begin{tabular}{@{\hskip 1.3cm}lll} \tt 3 & \tt stdio & \tt Module for stdio functions (read, write,\\ & & \tt select, poll, etc.)\\ \tt 2 & \tt pthread & \tt Module for PThread synchronization functions\\ & & \tt (mutex, semaphore, spinlock, etc.)\\ \tt 6 & \tt papi & \tt Module for PAPI Performance counters\\ \tt 1 & \tt omp & \tt Module for OpenMP parallel regions\\ \tt 4 & \tt mpi & \tt Module for \mpi{} functions\\ \tt 5 & \tt memory & \tt Module for memory functions (malloc, free,\\ & & \tt etc.) \end{tabular} You can get the list of selected modules with the \texttt{eztrace\_loaded} command:\\ \hspace*{0.9cm}\texttt{export EZTRACE\_TRACE="pthread mpi"}\\ \hspace*{0.9cm}\texttt{eztrace\_loaded}\\[1mm] \begin{tabular}{@{\hskip 1.3cm}lll} \tt 2 & \tt pthread & \tt Module for PThread synchronization functions\\ & & \tt (mutex, semaphore, spinlock, etc.)\\ \tt 4 & \tt mpi & \tt Module for \mpi{} functions \end{tabular} \subsection{Generating Execution Traces} Once the list of plugins is selected, you can run your application with \eztrace{}. For example:\\ \hspace*{0.9cm}\texttt{eztrace ./my\_program my\_arg1 my\_arg2}\\ This command line executes your program and generates a trace file in the \texttt{/tmp} directory (usually the file is named as \texttt{/tmp/\_eztrace\_log\_\\rank\_}). \subsection{Using \eztrace{} for \mpi{} Applications} \eztrace{} needs to instrument each \mpi{} process. Thus, you can run the following command:\\ \hspace*{0.9cm}\texttt{mpirun -np nproc eztrace ./my\_program},\\ where {\tt npoc} is the number of \mpi{} processes. When your application ends. Each process writes a file named\\ \hspace*{0.9cm}\texttt{/tmp/\_eztrace\_log\_rank\_}. \subsection{Changing the Output Directory} \label{sec:changing_dir} By default, each process saves its trace in the local \texttt{/tmp} directory. You can change this by setting the \texttt{EZTRACE\_TRACE\_DIR} environment variable. \section{Post-Mortem Analysis} \subsection{Merging Execution Traces} Once the execution traces are recorded, you can merge and convert them into a file format that can be read by your visualization software:\\ \hspace*{0.9cm}\texttt{eztrace\_convert -o my\_paje.trace /tmp/\_eztrace\_}\\ \hspace*{1.3cm}\texttt{log\_rank\_0 /tmp/\_eztrace\_log\_rank\_1} This converts the trace files into the Paje format. If \gtg{} is installed with OTF support (this is enabled by default), you can choose to convert into the OTF file format with the \texttt{-t OTF} option:\\ \hspace*{0.9cm}\texttt{eztrace\_convert -t OTF /tmp/\_eztrace\_log\_rank\_0}\\ \hspace*{1.3cm}\texttt{/tmp/\_eztrace\_log\_rank\_1} \subsection{Filtering Events} You can select the plugins to use for the conversion phase by using the \texttt{EZTRACE\_TRACE} environment variable. For instance, if your traces contains \mpi{} and other events, then by setting \texttt{EZTRACE\_TRACE} to \texttt{mpi} and calling \texttt{eztrace\_convert} you will receive an output trace that contains only \mpi{} events. \subsection{Computing Statistics} Instead of creating a merged trace file, you can tell \eztrace{} to compute statistics on the recorded traces:\\ \hspace*{0.9cm}\texttt{eztrace\_stats /tmp/\_eztrace\_log\_rank\_0}\\ \hspace*{1.3cm}\texttt{/tmp/\_eztrace\_log\_rank\_1}\\[1mm] \begin{tabular}{@{\hskip 1.7cm}l} \tt [...]\\ \tt PThread:\\ \tt --------------\\ \tt 6 locks acquired\\ \\ \tt MPI:\\ \tt -----\\ \tt 27 messages sent\\ \tt MPI\_RECV: 10 calls\\ \tt MPI\_BARRIER: 11 calls\\ \tt 163 events handled \end{tabular} \section{User-defined Plugins} \subsection{Defining Custom Plugins} Since \eztrace{} works with plugins, you can create one and instrument the functions that you want. An example of a custom plugin is available in the \texttt{example} directory. Once your plugin is created, you should tell \eztrace{} where to find it. For this, just set the \texttt{EZTRACE\_LIBRARY\_PATH} variable to the appropriate directory(-ies):\\ \hspace*{0.9cm}\texttt{export EZTRACE\_LIBRARY\_PATH=plugin1:plugin2}\\ \hspace*{0.9cm}\texttt{eztrace\_avail}\\[1mm] \begin{tabular}{@{\hskip 1.3cm}lll} \tt 3 & \tt stdio & \tt Module for stdio functions (read, write,\\ & & \tt select, poll, etc.)\\ \tt 2 & \tt pthread & \tt Module for PThread synchronization func-\\ & & \tt tions (mutex, semaphore, spinlock, etc.)\\ \tt 6 & \tt papi & \tt Module for PAPI Performance counters\\ \tt 1 & \tt omp & \tt Module for OpenMP parallel regions\\ \tt 4 & \tt mpi & \tt Module for MPI functions\\ \tt 5 & \tt memory & \tt Module for memory functions (malloc, free,\\ & & \tt etc.)\\ \tt 99 & \tt plugin1 & \tt Example module for libplugin1\\ \tt 98 & \tt plugin2 & \tt Example module for the plugin2 library\\ \end{tabular} \subsection{Generating Custom Plugins} You can generate one plugin and instrument the functions you want. In order to generate your plugin, you need to create a file containing: \begin{enumerate} \item The name of the library you want to trace (\texttt{libNAME.so}); \item {[}Optional{]} A brief description of the library; \item An ID to identify the module. 0 is reserved for \eztrace{} internal use. Thus, you can use any between 10 and ff; \item The prototype of the functions you want to instrument. \end{enumerate} As a result, your file should look as follow \lstset{language=C, caption={\tt example.tpl}} \begin{lstlisting} BEGIN_MODULE NAME example_lib DESC "module for the example library" ID 99 int example_do_event(int n) double example_function1(double* array, int array_size) END_MODULE \end{lstlisting} Now use \texttt{eztrace\_create\_plugin} to generate the plugin source code:\\ \hspace*{0.9cm}\texttt{eztrace\_create\_plugin example.tpl}\\ \begin{tabular}{@{\hskip 1.3cm}l} \tt New Module\\ \tt Module name: 'example\_lib'\\ \tt Module description: '"module for the example library"'\\ \tt Module id: '99'\\ \tt \hspace*{0.8cm} emulate record\_state for 'example\_do\_event'\\ \tt Function 'example\_do\_event' done\\ \tt \hspace*{0.8cm} emulate record\_state for 'example\_function1'\\ \tt Function 'example\_function1' done\\ \tt End of Module example\_lib \end{tabular}\\ The source code is generated in the output directory. Just type:\\ \hspace*{0.9cm}\texttt{make}\\ Then, set the \texttt{EZTRACE\_LIBRARY\_PATH} to the appropriate directory. Now, your custom plugin is ready to be used. You can also determine (in the \texttt{example.tpl} file) the way a function is depicted in the output trace. For instance, \lstset{language=C, caption={}} \begin{lstlisting} int submit_job(int* array, int array_size) BEGIN ADD_VAR("job counter", 1) END \end{lstlisting} specifies that when the \texttt{submit\_job} function is called, the output trace should increment the "job counter" variable. You can now track the value of a variable. The \texttt{test/module\_generator} directory contains several scripts that demonstrate the various commands available. \section{Environment Variables} Here is a list of the environment variables that can be used for tuning \eztrace{}. \begin{itemize} \item General-purpose variables: \begin{itemize} \item \texttt{EZTRACE\_TRACE\_DIR} specifies the directory in which trace files are stored (by default it is \texttt{/tmp}); \item \texttt{EZTRACE\_LIBRARY\_PATH} specifies the directories in which \eztrace{} can find \eztrace{} modules (by default, it is none); \item \texttt{EZTRACE\_TRACE} specifies the list of \eztrace{} modules to load (by default, it is the list of all available modules); \item \texttt{EZTRACE\_BUFFER\_SIZE} specifies the size of the buffer in which \eztrace{} stores events (by default, the size is 32\,MB); \item \texttt{EZTRACE\_FLUSH} specifies the behavior of \eztrace{} when the event buffer is full. If it is set to one, the buffer is flushed. This permits to record traces that are larger than \texttt{EZTRACE\_BUFFER\_SIZE}, but this may impact the application performance. Otherwise, if it is set to zero, which is a default option, any additional event will be recorded. The trace is, thus, truncated and there is no impact on performance. \end{itemize} \item Error-handling variables: \begin{itemize} \item \texttt{EZTRACE\_NO\_SIGNAL\_HANDLER} disables \eztrace{} signal handling (by default, it is zero). \end{itemize} \item Hardware counters-related variables: \begin{itemize} \item \texttt{EZTRACE\_PAPI\_COUNTERS} selects hardware events to trace using the PAPI library, e.g. export \texttt{EZTRACE\_PAPI\_COUNTERS="PAPI\_L3\\\_TCM PAPI\_FP\_INS"}. Please note that the list of supported events as well as the number of events, which can be traced simultaneously, vary depending on the processor type. This information can be retrieved using \texttt{papi\_avail} and the processor documentation. \end{itemize} \item MPI-related variables: \begin{itemize} \item \texttt{EZTRACE\_MPI\_DUMP\_MESSAGES} tells \eztrace{} to dump the list of messages into a file. You can then compute your own statistics on MPI messages. \end{itemize} \end{itemize} \section{Known Limitations} \begin{itemize} \item If \eztrace{} is compiled with a particular \mpi{} implementation such as OpenMPI, it will not work if you run your application with another, e.g. MPICH2. So make sure your application uses the same \mpi{} implementation as \eztrace{}. \end{itemize} \chapter{\eztrace{} in Details} \eztrace{} uses a two-phases mechanism for analyzing performance. During the first phase that occurs while the application is executed, functions are intercepted and events are recorded. After the execution of the application, the post-mortem analysis phase is in charge of interpreting the recorded events. This two-phase mechanism permits the library to separate the recording of a function call from its interpretation. It thus allows the user to interpret a function call event in different ways depending on the point he/she wants to focus on. It also reduces the overhead of profiling a program; during the execution of the application, the analysis tool should avoid performing time-consuming tasks such as computing statistics or interpreting function calls. During the execution of the application, \eztrace{} intercepts calls to the functions specified by plugins and records events for each of them. Depending on the type of functions, \eztrace{} uses two different mechanisms for the interception. The functions defined in shared libraries can be overridden using \texttt{LD\_PRELOAD}: When the \eztrace{} library is loaded, it retrieves the addresses of the functions to instrument. When the application calls one of these functions, the version implemented in \eztrace{} is called. This function records events and calls the actual function. The \texttt{LD\_PRELOAD} mechanism cannot be used for functions defined in the application since there is no symbol resolution. In that case, \eztrace{} uses the DynInst~\cite{Buck00DynInst} tool for instrumenting the program on the fly. Using DynInst, \eztrace{} modifies the program to record events at the beginning and/or at the end of each function to instrument. \eztrace{} is structurally divided into two parts: the \eztrace{} core and the \eztrace{} modules. \section{\eztrace{} Core} The \eztrace{} core is composed of several libraries such as the Fast Kernel and User Trace (\fxt{})~\cite{Danjean05FxT} and the Generic Trace Generator (\gtg{})~\cite{Coulomb10periscope,gtg} libraries. \subsection{\fxt{}} For recording events, \eztrace{} relies on the \fxt{} library. Each process being instrumented by \eztrace{} generates a trace file using \fxt{}. In order to keep the trace size as compact as possible, \fxt{} records events in a binary format that contains only the minimum amount of information: a timestamp, an event code, and optional parameters. \subsection{\gtg{}} During the post-mortem analysis phase, \eztrace{} browses the recorded events and interprets them. It can then generate statistics -- such as the length of messages, the duration of critical sections, etc.-- or create a trace file for visualizing the application behavior. For generating trace files, \eztrace{} relies on the \gtg{} library. \gtg{} provides an abstract interface for recording traces. This permits the application to use a single interface for creating traces in multiple formats. Thus, an application can generate PAJ\'E traces or OTF files without any modification. Althought PAJ\'E and OTF are both traces format, they have some differences. Thus, adding a meaning to a raw \fxt{} event is the critical part and the event must be interpreted in a way that is conformed to the output format chosen by the user. Otherwise, the traces will not represent the data they should. \section{\eztrace{} Modules} Since \eztrace{} uses the two-phases mechanism, plugins are organized in two parts, accordingly: the description of the functions to instrument, and the interpretation of each function call. During the execution of the application, the first part of the plugin is in charge of recording calls to a set of functions. The second part of the plugin is in charge of adding semantic to the trace. \eztrace{} provides plugins for major parallel programming libraries (MPI, OpenMP, PThread, etc.), but also allows user-defined plugins designed for custom libraries or applications. For example, the PLASMA linear algebra library~\cite{Agullo09Plasma} is shipped with an EZTRACE plugin. \chapter{Frequently Asked Questions} \begin{itemize} \item[\bf Q.] When I run my \mpi{} application with \eztrace{}, all the processes generate the \texttt{/tmp/\_eztrace\_log\_rank\_1} file. What is going wrong? \item[\bf A.] This happens when \eztrace{} fails to intercept calls to \texttt{MPI\_Init} or \texttt{MPI\_Init\_thread}. There can be several reasons for that: \begin{itemize} \item The \eztrace{} \mpi{} module was not compiled. For intercepting calls to \mpi{} functions, you need the MPI module in your installation (look for the \texttt{EZTRACE\_ROOT/lib/libeztrace-autostart-\\mpi.so} file). If you do not see that file, it means that something went wrong during the configuration of \eztrace{}, so check for errors or warnings in the \texttt{config.log} file. \item You specified the list of modules to use and the \mpi{} module was not there. Check your \texttt{EZTRACE\_TRACE} variable or use \texttt{eztrace\_\\loaded}. \end{itemize} If you still experience problems, please contact the \eztrace{} development team and we will fix your problem.\\[1mm] \item[\bf Q.] What if I do not want to trace the whole application, but only a part of it? \item[\bf A.] Then, you can call \texttt{eztrace\_start()} and \texttt{eztrace\_stop()} specify in the code which part to trace. You will need to add \texttt{\#include } and to link with \texttt{libeztrace}. Afterwards, you can run your application as usual, i.e. \texttt{./my\_program my\_arg1}.\\[1mm] \item[\bf Q.] I need to trace my program while using GDB, how can I do that? \item[\bf A.] Just add the \texttt{-d} option to \eztrace{} to enable GDB:\\ \hspace*{0.9cm}\texttt{eztrace -d ./my\_program my\_arg1 my\_arg2}\\ Please note that this should be applied only when a bug occurs while using \eztrace{}.\\[1mm] \item[\bf Q.] I want my trace to be saved in a specific directory, how can I do that? \item[\bf A.] Please take a look in \Cref{sec:changing_dir}.\\[1mm] \item[\bf Q.] What if I do not care about OpenMP and I only want to see \mpi{} communication? \item[\bf A.] You can set \texttt{EZTRACE\_TRACE} to the list of modules you want to activate. By default, all the available modules are enabled, but you can tell \eztrace{} to trace only \mpi{}, OpenMP, or both \mpi{} and OpenMPI functions:\\[1mm] \begin{tabular}{@{\hskip 0.9cm}l} \tt export EZTRACE\_TRACE=mpi\\ \tt export EZTRACE\_TRACE=omp\\ \tt export EZTRACE\_TRACE="omp mpi" \end{tabular}\\[1mm] \item[\bf Q.] Can \eztrace{} generate an OTF trace file so that I can visualize it with Vampir? \item[\bf A.] Yes, since \eztrace{} relies on GTG for writing output traces, it can generate OTF trace files. When converting the trace with \texttt{eztrace\_con\\vert}, just add the \texttt{-t OTF} option:\\ \hspace*{0.9cm}\texttt{eztrace\_convert -t OTF /tmp/\_eztrace\_log\_\\} \hspace*{1.3cm}\texttt{rank\_0 /tmp/\_eztrace\_log\_rank\_1} \end{itemize} \section{Troubleshooting} In case you have not found an answer to your question in the FAQ section, you encounter a bug, or want some explanation about \eztrace{}, please contact and ask our development team: \begin{itemize} \item On the development mailing list\\ \url{https://gforge.inria.fr/mail/?group_id=2774} \item On our IRC channel: \begin{itemize} \item Server: \texttt{chat.freenode.net} \item Channel: \texttt{\#eztrace} \end{itemize} \end{itemize} \bibliographystyle{plain} \cleardoublepage \phantomsection \addcontentsline{toc}{chapter}{Bibliography} \small \bibliography{references} \normalsize \end{document} eztrace-1.1-7/PaxHeaders.7332/install-sh0000644000000000000000000000013213171135253014631 xustar0030 mtime=1508162219.601805434 30 atime=1508162219.601805434 30 ctime=1508162365.493711775 eztrace-1.1-7/install-sh0000755000175000017500000003546313171135253016036 0ustar00trahaytrahay00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2014-09-12.12; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) # $RANDOM is not portable (e.g. dash); use it when possible to # lower collision chance tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 # As "mkdir -p" follows symlinks and we work in /tmp possibly; so # create the $tmpdir first (and fail if unsuccessful) to make sure # that nobody tries to guess the $tmpdir name. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/PaxHeaders.7332/README.stats0000644000000000000000000000013213045655513014653 xustar0030 mtime=1486314315.890986433 30 atime=1507797515.889987823 30 ctime=1508162365.501712473 eztrace-1.1-7/README.stats0000644000175000017500000000527113045655513016047 0ustar00trahaytrahay00000000000000When running eztrace_stats on a set of traces of an MPI application, EZTrace prints various statistics on the MPI messages (average size of messages, time spent waiting for an incoming message, etc.) eztrace_stats also create a set of files that depict the behavior of the application. These files are stored in /tmp/eztrace_stats_USER by default (the output directory can be specified by passing the -o option to eztrace_stats) The following files are created: - communication_matrix.nb_messages.dat This file contains the communication matrix with the number of messages sent from an MPI process to the other processes. - communication_matrix.message_size.dat This file contains the communication matrix with the total size of messages sent from an MPI process to the other processes. - message_size.dat This file contains the distribution of message size - message_size.gp This GNUplot script exploits message_size.dat Additionnaly, you can ask eztrace_stats to create a file that contains the list of messages that were exchanged. This can be done by setting EZTRACE_MPI_DUMP_MESSAGES to 1. After running eztrace_stats, the file ${USER}_eztrace_message_dump is created. Here is an example of such file: -------- # src dest len tag Isend_tick SWait_tick Wait_done_tick Irecv_tick RWait_tick Wait_done_tick Sender_request Receiver_request 13 0 61440 1b58 115542014654 115542048379 115626670523 115541830089 115542030875 115848696986 0x296b540 0x36f4cc8 7 0 61440 1770 115542396436 115542398916 115625999773 115541829660 115542030702 115848696830 0x33d43e8 0x36f4ca0 -------- Each line correspond to a message that was exchanged. The columns correspond to: - src: the rank of the MPI process that sent the message - dest: the rank of the MPI process that received the message - len: the length (in byte) of the message - tag: the MPI tag (in hexadecimal) that was used - Isend_tick: the date (in nanosecond) when the sending process called MPI_Isend (or entered MPI_Send) - SWait_tick: the date (in nanosecond) when the sending process called MPI_Wait (or entered MPI_Send) - Wait_done_tick: the date (in nanosecond) when the sending process left MPI_Wait (or left MPI_Send) - Irecv_tick: the date (in nanosecond) when the receiving process called MPI_Irecv (or entered MPI_Recv) - Rwait_tick: the date (in nanosecond) when the receiving process called MPI_Wait (or entered MPI_Recv) - Wait_done_tick: the date (in nanosecond) when the receiving process left MPI_Wait (or left MPI_Recv) - Sender_request: the MPI_Request that was passed to MPI_Isend - Receiver_request: the MPI_Request that was passed to MPI_Irecveztrace-1.1-7/PaxHeaders.7332/README0000644000000000000000000000013213045655513013516 xustar0030 mtime=1486314315.890986433 30 atime=1507797541.730820836 30 ctime=1508162365.489711426 eztrace-1.1-7/README0000644000175000017500000003610713045655513014714 0ustar00trahaytrahay00000000000000 What is EZTrace? ============================================= EZTrace is a tool that aims at generating automatically execution traces from HPC (High Performance Computing) programs. It generates execution trace files that can be interpreted by visualization tools such as ViTE. Requirements ============================================= In order to run EZTrace, you need the following software: * autoconf 2.63; * libelf or libbfd. Otherwise, only eztrace.old would be installed and the functionality would be limited, see the FAQ section. On Debian, libelf can be installed from command line by the following command: apt-get install libelf-dev * [Optional] Any MPI implementation. Getting EZTrace ============================================= * You can get the latest stable release on EZTrace website: http://eztrace.gforge.inria.fr/ * Current development version is available via GIT git clone git://scm.gforge.inria.fr/eztrace/eztrace.git After getting the latest development version (from GIT), you need to run './bootstrap' and only then build the tool. Building EZTrace ============================================= At first, you need to configure EZTrace by invoking the configure script: $ ./configure --prefix= Options to configure. You can pass several options to the configure script for specifying where it should find the needed libraries: --with-litl=$LITL_ROOT or ARG(=no): specify where LiTL is installed --with-gtg=$GTG_ROOT: specify where GTG is installed. --with-mpi=$MPI_ROOT: specify where MPI is installed. The mpi.h file must be located in the $MPI_ROOT/include/ directory. --with-mpi-include=: specify the directory that contains the mpi.h file. --with-papi=$PAPI_ROOT: specify where PAPI is installed. The papi.h file must be located in the $PAPI_ROOT/include directory and libpapi should be in $PAPI_ROOT/lib Once EZTrace is configured, just type: $ make $ make install Using EZTrace ============================================= Choosing the functions to instrument ------------------------------------ First, you should select the functions you want to instrument in your application. For this, you can set the EZTRACE_TRACE environment variable to the list of plugins that should be used: $ export EZTRACE_TRACE="pthread mpi" You can get the list of available plugins with the eztrace_avail command: $ eztrace_avail 3 stdio Module for stdio functions (read, write, select, poll, etc.) 2 pthread Module for PThread synchronization functions (mutex, semaphore, spinlock, etc.) 6 papi Module for PAPI Performance counters 1 omp Module for OpenMP parallel regions 4 mpi Module for MPI functions 5 memory Module for memory functions (malloc, free, etc.) You can get the list of selected modules with the eztrace_loaded command: $ export EZTRACE_TRACE="pthread mpi" $ eztrace_loaded 2 pthread Module for PThread synchronization functions (mutex, semaphore, spinlock, etc.) 4 mpi Module for MPI functions NB: you can also select the modules to load when invoking eztrace using the -t option. For instance: $ eztrace -t "memory pthread" ./my_program Creating execution traces ------------------------- Once the list of plugins is selected, you can run your application with eztrace. For example: $ eztrace ./my_program my_arg1 my_arg2 This command line executes your program and generates a trace file in the /tmp directory (usually the file is named /tmp/_eztrace_log_rank_#rank). Using EZTrace with MPI ---------------------- EZTrace needs to instrument each MPI process. Thus, you can run the following command: $ mpirun -np 16 eztrace ./my_program When your application ends. Each process writes a file named /tmp/_eztrace_log_rank_. Changing The output directory ----------------------------- By default, each process saves its trace in the local /tmp directory. You can change this by setting EZTRACE_TRACE_DIR or by using the -o option in eztrace: $ export EZTRACE_TRACE_DIR=$HOME/traces or $ mpirun -np 16 eztrace -o $HOME/traces ./my_program Merging execution traces ------------------------ Once the execution traces are recorded, you can merge and convert them into a file format that can be read by your visualization software: $ eztrace_convert -o my_paje.trace /tmp/_eztrace_log_rank_0 /tmp/_eztrace_log_rank_1 This converts the trace files into the Paje format. If gtg is installed with OTF support (this is enabled by default), you can choose to convert into the OTF file format with the -t OTF option: $ eztrace_convert -t OTF /tmp/_eztrace_log_rank_0 /tmp/_eztrace_log_rank_1 Filtering events ---------------- You can select the plugins to use for the conversion phase by using the EZTRACE_TRACE variable: if your traces contains MPI and OpenMP events, setting EZTRACE_TRACE to mpi and calling eztrace_convert creates an output trace that only contains MPI events. Computing statistics -------------------- Instead of creating a merged trace file, you can tell EZTrace to compute statistics on the recorded traces: $ eztrace_stats /tmp/_eztrace_log_rank_0 /tmp/_eztrace_log_rank_1 [...] PThread: ------- 6 locks acquired MPI: --- 27 messages sent MPI_RECV:10 calls MPI_BARRIER:11 calls 163 events handled Defining custom plugins ------------------------ Since EZTrace works with plugins, you can create one and instrument the functions that you want. An example of plugin is available in the example directory. Once your plugin is created, you should tell EZTrace where to find it. For this, just set the EZTRACE_LIBRARY_PATH to the appropriate directory(-ies): $ export EZTRACE_LIBRARY_PATH=: $ eztrace_avail 3 stdio Module for stdio functions (read, write, select, poll, etc.) 2 pthread Module for PThread synchronization functions (mutex, semaphore, spinlock, etc.) 6 papi Module for PAPI Performance counters 1 omp Module for OpenMP parallel regions 4 mpi Module for MPI functions 5 memory Module for memory functions (malloc, free, etc.) 99 plugin1 Example module for libplugin1 98 plugin2 Example module for the plugin2 library You can also use the -l option when invoking eztrace: $ eztrace -l : ./my_program Generating custom plugins -------------------------- You can generate one plugin and instrument the functions you want to. In order to generate your plugin, you need to create a file containing: * The name of the library you want to trace (libNAME.so) * A brief description of the library (optional) * An ID to identify the module (0? is reserved for eztrace internal use. Thus, you can use any between 10 and ff) * The prototype of the functions you want to instrument Basically, the file should look like that: BEGIN_MODULE NAME example_lib DESC "module for the example library" ID 99 int example_do_event(int n) double example_function1(double* array, int array_size) END_MODULE Now use eztrace_create_plugin to generate the plugin source code: $ eztrace_create_plugin example.tpl New Module Module name: 'example_lib' Module description: '"module for the example library"' Module id: '99' emulate record_state for 'example_do_event' Function 'example_do_event' done emulate record_state for 'example_function1' Function 'example_function1' done End of Module example_lib The source code is generated in the output directory. Just type: $ make Now set the EZTRACE_LIBRARY_PATH to the appropriate directory and you are good to go. You can also specify (in the example.tpl file) the way a function is depicted in the output trace. For instance: int submit_job(int* array, int array_size) BEGIN ADD_VAR("job counter", 1) END Specifies that when the submit_job function is called, the output trace should increment the "job counter" variable. You can now track the value of a variable! The test/module_generator directory contains several scripts that demonstrate the various commands available. Environment variables ===================== Here is a list of the environment variables that you can use for tuning EZTrace. * General-purpose variables: - EZTRACE_TRACE_DIR: specifies the directory in which the traces are created (default: /tmp). You can also use the -o option in eztrace. - EZTRACE_LIBRARY_PATH: specifies the directories in which eztrace can find eztrace modules (default: none) You can also use the -l option in eztrace. - EZTRACE_TRACE: specifies the list of eztrace modules to load (default: the list of available modules) You can also use the -t option in eztrace. - EZTRACE_BUFFER_SIZE: specifies the size (in byte) of the buffer in which eztrace stores events (default: 16MB) - EZTRACE_FLUSH: specifies the behavior of eztrace when the event buffer is full. If set to 1, the buffer is flushed. This permits to record trace larger than EZTRACE_BUFFER_SIZE, but this may impact the application performance. If set to 0, additional event won't be recorded. The trace is thus truncated, but there is no impact on performance. (default: 0). You can also enable buffer flushing with the -f option in eztrace. - EZTRACE_SIGALARM: ask EZTrace to stop the application every x ms in order to collect information (such as hardware counters). (default: 0) * Error-handling variables - EZTRACE_NO_SIGNAL_HANDLER: disables eztrace signal handling (default: 0) * Hardware counters-related variables: - EZTRACE_PAPI_COUNTERS: selects hardware events to trace using the PAPI library, e.g. export EZTRACE_PAPI_COUNTERS="PAPI_L3_TCM PAPI_FP_INS". Please note that the list of supported events as well as the number of events, which can be traced simultaneously, vary depending on the processor type. This information can be retrieved using 'papi_avail' and the processor documentation. - EZTRACE_PAPI_SAMPLE_INTERVAL: select the minimum interval (in microseconds) between each check of the PAPI counters (default: 100) * MPI-related variables: - EZTRACE_MPI_DUMP_MESSAGES: tells EZTrace to dump the list of messages into a file. You can then compute your own statistics on MPI messages. * CUDA-related variables: - EZTRACE_CUDA_CUPTI_DISABLED: disable the use of CUPTI in EZTrace. This option disables the recording of events that happen on the GPU. * submodules variables: - EZTRACE_USE_GETCPU: enable/disable the getcpu module (default: disabled) - EZTRACE_GETCPU_INTERVAL: specify the interval (in microsecond) between each probe of the getcpu module (default: 10000) Known limitations ================= * The CUDA module has not been tested on multi-GPU architecture. It is likely to fail in such situation * If EZTrace is compiled with a particular MPI implementation (OpenMPI for instance) it won't work if you run your application with another (MPICH2 for instance). So make sure your application uses the same MPI implementation as EZTrace. Frequently Asked Questions ============================================= Q: What would happen if I do not install neither libelf nor libbfd before the installation of EZTrace? A: In that case, the configuration of EZTrace would succeed with a warning regarding the missing library. And, after the installation only eztrace.old would be available. The EZTrace launcher (eztrace) that uses pptrace would not work. Q: When I run my MPI application with EZTrace, all the processes generate /tmp/_eztrace_log_rank_1 files. What's going wrong? A: This happens when EZTrace fails to intercept calls to MPI_Init (or MPI_Init_thread). There may be several reasons for that: * EZTrace MPI module was not compiled. For intercepting calls to MPI functions, you need the MPI module in your installation (look for the $EZTRACE_ROOT/lib/libeztrace-autostart-mpi.so file). If you don't see that file, it means that something went wrong during the configuration of EZTrace, so check for errors or warnings in you config.log file. * You specified the list of modules to use and the MPI module wasn't in there. Check your EZTRACE_TRACE variable or use eztrace_loaded. If you still experience problems, please contact EZTrace development team so that we can fix your problem. Q: What if I don't want to trace my whole application, but only a small part of it? A: Then, you can call eztrace_start() and eztrace_stop() in your code to specify the part to be traced. You will need to #include and to link with libeztrace. Then, just run your application as usual (i.e. $ ./my_program my_arg1) Q: I need to trace my program while using gdb, how can I do that? A: Just add the -d option to eztrace to enable gdb: $ eztrace -d ./my_program my_arg1 my_arg2 Please note that this should be applied only when a bug occurs while using EZTrace. Q: I want my trace to be saved in a specific directory, how can I do that? A: By default, EZTrace saves the trace in the /tmp directory. You can change this by setting EZTRACE_TRACE_DIR or by providing the -o option to eztrace. Q: What if I don't care about OpenMP and I only want to see MPI communication? A: You can set EZTRACE_TRACE to the list of "modules" you want to activate. By default, all the available modules are enabled, but you can tell EZTrace to trace only MPI or OpenMP functions: $ export EZTRACE_TRACE=mpi $ export EZTRACE_TRACE=omp $ export EZTRACE_TRACE="omp mpi" Q: Can EZTrace generate an OTF trace file so that I can visualize it with Vampir? A: Yes, since EZTrace relies on GTG for writing output traces, it can generate OTF trace files. When converting the trace with eztrace_convert, just add the -t OTF option: $ eztrace_convert -t OTF /tmp/_eztrace_log_rank_0 /tmp/_eztrace_log_rank_1 Q: I don't have any error during installation, but I can't find the eztrace program. All I've got is an eztrace.preload file. What happened ? A: The eztrace program relies on libelf or libbfd for instrumenting applications. If neither of these libraries were found during configure, the program is not created. You can either fall back to using eztrace.old (in that case, only instrumentation through shared libraries is supported); or you can install either libelf (on Debian: install the libelf-dev package) or libbfd (on Debian: install the binutils-dev package). Q: I don't have libbfd on my system. Do I really need it ? A: The eztrace program relies on libbfd for instrumenting applications. If it is not available on your system, you can disable pptrace (the part that instruments application) by passing --enable-pptrace=no to configure. In that case, the eztrace program is not created, but you can use eztrace.preload instead. Troubleshooting ============================================= If you encounter a bug or want some explanation about EZTrace, feel free to ask to the developers: * On the developer mailing list * On our IRC channel: - server: chat.freenode.net - channel: #eztrace eztrace-1.1-7/PaxHeaders.7332/TODO0000644000000000000000000000013113045655527013332 xustar0029 mtime=1486314327.13123647 30 atime=1507797542.754854089 30 ctime=1508162365.489711426 eztrace-1.1-7/TODO0000644000175000017500000000272413045655527014527 0ustar00trahaytrahay00000000000000Bugs: ===== * ./configure --prefix=/usr && make -j1 && make DESTDIR=/quelque/part/ install Features ======== * add support for MPI-IO * Add OpenCL support ? * event filtering: allow for filtering events. For instance: * don't record event foo if its depth is > n * don't record event foo if it's called more than x times * don't record any event whose depth is > n * improve module generator: include statistics * improve statistics: compute the duration of functions * add a program that list the functions that are intercepted/ permits to select the functions to intercept eztrace_create_plugin: ===================== * Need to add the "#include " automatically when a function take a variable number of parameters (ie. void func(...) ) * add support for functions that a pointer to a function as a parameter (ie. void func( void (*func_name)(int*) ) ) OpenMP ====== * During a parallel section, we should modify the state of each thread by adding the "team id" (~ parallel section identifier) * Fix the memory leak in parallel_start() MPI === * when using configuring eztrace to use OpenMPI, calling "eztrace prog" may raise an 'undefined symbol' error if the program does not use OpenMPI. This is because some symbols are defined in OpenMPI's libmpi.so. When eztrace's libmpi.so is loaded, these symbols are needed. Misc. ==== * update the documentation. The creation of user-defined plugins should be well documented (at least on the web page) ! eztrace-1.1-7/PaxHeaders.7332/configure.ac0000644000000000000000000000013213171135203015111 xustar0030 mtime=1508162179.603010788 30 atime=1508162179.619011842 30 ctime=1508162365.453708285 eztrace-1.1-7/configure.ac0000644000175000017500000007203713171135203016311 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis # See COPYING in top-level directory. # # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.63]) AC_INIT([eztrace], [1.1-7], [eztrace-devel@lists.gforge.inria.fr]) AM_INIT_AUTOMAKE([1.10 tar-pax color-tests subdir-objects]) # Checks for programs. AC_PROG_CC AC_PROG_FC AC_PROG_CXX AC_LANG_CPLUSPLUS AC_PROG_INSTALL AC_PROG_MAKE_SET AC_PROG_LIBTOOL AM_PROG_CC_C_O AC_CONFIG_MACRO_DIR([m4]) F77=$FC FFLAGS=$FCFLAGS dnl Don't generate 'configure' if pkg.m4 is missing. m4_pattern_forbid([PKG_CHECK_MODULES]) AC_PATH_PROG([MPICC], [mpicc]) AC_PATH_PROG(PERL,perl) #AC_CHECK_PROG(PERL,perl,yes,missing -- the perl scripting language) # crappy hack: of the macros AC_PROG_{CC,CXX,F77,FC}, only the # first expanded one will check for object file extension etc, # and fail if that doesn't work. if test x$FC = x; then AC_MSG_ERROR(A Fortran compiler is required) fi cxx_enable=yes if test x$CXX = x; then cxx_enable=no fi # Correct install paths AS_IF([test x"$prefix" = x -o x"$prefix" = "xNONE"], [prefix="/usr/local"]) AS_IF([test x"$exec_prefix" = x -o x"$exec_prefix" = "xNONE"], [exec_prefix="\${prefix}"]) AS_IF([test "$docdir" = "\${datarootdir}/doc/\${PACKAGE_TARNAME}"],[docdir="\${datarootdir}/doc/eztrace"]) top_build_dir=`pwd` get_abs_dirname() { # $1 : relative filename cd $1 && \ pwd &&\ cd - > /dev/null } abs_srcdir=$(get_abs_dirname $srcdir) # Checks for libraries. AC_CHECK_LIB([dl], [dlsym]) AC_CHECK_LIB([m], [cos]) AC_CHECK_LIB([pthread], [pthread_create]) AC_CHECK_LIB([pthread], [pthread_spin_lock], have_full_pthread=yes, have_full_pthread=no) AC_CHECK_LIB([z], [deflate]) # Check the OS type os_type=`uname -s` if [ test "x$os_type" = "xLinux" ]; then # Linux AC_MSG_WARN([OS: Linux]) CFLAGS="$CFLAGS -DHAVE_LINUX -Wno-unused-parameter -Wno-unused-value" DYNLIB_EXT=".so" LD_PRELOAD_NAME="LD_PRELOAD" LD_LIBRARY_PATH_NAME="LD_LIBRARY_PATH" elif [ test "x$os_type" = "xDarwin" ]; then # Mac OS AC_MSG_WARN([OS: Mac OS]) CFLAGS="$CFLAGS -DHAVE_DARWIN" DYNLIB_EXT=".dylib" LD_PRELOAD_NAME="DYLD_INSERT_LIBRARIES" LD_LIBRARY_PATH_NAME="DYLD_LIBRARY_PATH" else # unknown OS, let's try Linux AC_MSG_WARN([unknown OS: falling back to Linux]) CFLAGS="$CFLAGS -DHAVE_LINUX" DYNLIB_EXT=".so" LD_PRELOAD_NAME="LD_PRELOAD" LD_LIBRARY_PATH_NAME="LD_LIBRARY_PATH" fi # Check the architecture type case "$host" in x86_64-*) dnl ---Test for x32 ABI in x86_64 AC_EGREP_CPP(x32_test, [#if defined(__x86_64__) && defined (__ILP32__) x32_test #endif ], SUBARCH='x32', SUBARCH='64') if test "$SUBARCH" = "64" ; then AC_MSG_WARN([ARCH: X86_64]) arch_str="X86_64" else AC_MSG_WARN([unsupported x86_64 architecture. Some features will be disabled]) fi ;; armv7|arm*-*gnueabihf) AC_MSG_WARN([ARCH: ARM]) arch_str="ARM" CFLAGS="$CFLAGS -marm" ;; *) AC_MSG_WARN([unknown architecture: falling back to x86_64]) ;; esac # Check for a library with a particular LDFLAGS # this LDFLAGS is not set in the 'final' LDFLAGS # This is usefull if only a small part of your program # needs this library # # example: #CHECK_LIB_LDFLAGS([gtg], # [setTraceType], # "$GTG_LDFLAGS", # , # AC_MSG_ERROR([cannot find libgtg])) AC_DEFUN([CHECK_LIB_LDFLAGS], [save_LDFLAGS="$LDFLAGS" save_LIBS="$LIBS" LDFLAGS="$LDFLAGS $3" AC_CHECK_LIB([$1], [$2], [$4], [$5]) LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ]) # Check for a library with a particular LDFLAGS # this LDFLAGS is not set in the 'final' LDFLAGS # This is usefull if only a small part of your program # needs this library # # example: #CHECK_LIB_TRYLINK("$GTG_LDFLAGS", # [#include "GTG.h"], # [gtg_container_t c;], # [enable_gtg=yes], # AC_MSG_ERROR([cannot find libgtg])) AC_DEFUN([CHECK_LIB_TRYLINK], [save_LDFLAGS="$LDFLAGS" save_LIBS="$LIBS" LDFLAGS="$LDFLAGS $1" AC_TRY_LINK([$2], [$3], [$4], [$5]) LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ]) # Check for a header with a particular CPPFLAGS # this CPPFLAGS is not set in the 'final' CPPFLAGS # This is usefull if only a small part of your program # needs this header # # example: # CHECK_HEADER_CPPFLAGS([GTGBasic1.h], # , # "$GTG_CPPFLAGS", # AC_MSG_ERROR([cannot find headers for gtg])) AC_DEFUN([CHECK_HEADER_CPPFLAGS], [save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $3" AC_CHECK_HEADERS([$1], [$2], [$4], [$5]) CPPFLAGS="$save_CPPFLAGS" ]) # Checks for programs AC_CHECK_PROG(HAVE_ENV, [env], yes, no) if test x$HAVE_ENV = xno ; then AC_MSG_ERROR([Cannot find env]) fi # Checks for header files. # this is needed because demangle.h and string.h have confliting versions of the basename function AC_CHECK_DECLS([basename], [], [], [[#include ]]) AC_CHECK_HEADERS([fcntl.h limits.h malloc.h stdint.h stdlib.h string.h sys/time.h unistd.h sys/syscall.h]) have_demangle=yes # demangle stuff use_demangle=yes AC_ARG_ENABLE([demangle], AC_HELP_STRING([--enable-demangle], [Enable demangle])) if test "x$enable_demangle" = xno; then AC_MSG_RESULT(Demangling explicitly disabled) use_demangle=no fi have_demangle=no if test x$use_demangle = xyes ; then AC_CHECK_LIB([iberty], [cplus_demangle]) AC_CHECK_LIB([bfd], [bfd_demangle]) AC_CHECK_HEADER([demangle.h], , have_demangle=no) #AC_CHECK_LIB([iberty], [cplus_demangle], , have_demangle=no) AC_CHECK_LIB([bfd], [bfd_release]) fi AM_CONDITIONAL([HAVE_DEMANGLE], [test "x$have_demangle" = xyes]) # Checks for typedefs, structures, and compiler characteristics. AC_TYPE_SIZE_T AC_TYPE_UINT64_T # Checks for library functions. AC_FUNC_MALLOC AC_CHECK_FUNCS([atexit]) build_doc=no AC_ARG_WITH(doc, [AS_HELP_STRING([--with-doc], [Generate documentation])], [if test x$withval != xno ; then build_doc=yes fi], [ build_doc=no ]) if test "x$build_doc" = "xyes" ; then AC_MSG_RESULT(Documentation will be generated) else AC_MSG_RESULT(Documentation will not be generated) fi # pptrace stuff use_pptrace=yes binary_instrumentation=no AC_ARG_ENABLE([pptrace], AC_HELP_STRING([--enable-pptrace], [Enable pptrace])) if test "x$enable_pptrace" = xno; then AC_MSG_RESULT(PPTrace explicitly disabled) use_pptrace=no fi if test "x$use_pptrace" = xyes; then pptrace_lib_found=yes#no pptrace_binary_type=1 have_libbfd=yes AC_CHECK_LIB(bfd, bfd_release, [pptrace_binary_type=1], have_libbfd=no) AC_CHECK_LIB([z], [deflate],[], have_libbfd) AC_CHECK_LIB([bfd], [bfd_get_section_by_name], have_libbfd=no) AC_CHECK_HEADER([bfd.h], , have_libbfd=no) # check if the arch/OS is supported by pptrace if [ test "x$arch_str" = "xX86_64" ] || [ test "x$arch_str" = "xARM" ] ; then if [ test "x$os_type" = "xLinux" ]; then use_pptrace=yes binary_instrumentation=yes else AC_MSG_WARN([The target OS is not supported by pptrace. The instrumentation will be limited to shared libraries]) binary_instrumentation=no fi else AC_MSG_WARN([The target architecture is not supported by pptrace. The instrumentation will be limited to shared libraries]) binary_instrumentation=no fi AM_CONDITIONAL([HAVE_LIBBFD], [test "$have_libbfd" = yes]) if test "x$use_pptrace" = xyes; then AC_MSG_RESULT(PPTrace enabled) else AC_MSG_RESULT(PPTrace cannot be installed) fi fi if test $binary_instrumentation = yes ; then # since binutils-2.29, the prototype of disassembler changed AC_TRY_COMPILE([#include ], [ disassembler(NULL);], disassembler_old_api=yes, disassembler_old_api=no) if test "$disassembler_old_api" = yes; then AC_DEFINE(HAVE_BINUTILS_2_28_OR_OLDER, 1, [define to 1 if disassembler takes only one parameter]) fi fi use_libbacktrace=yes AC_ARG_WITH(libbacktrace, [AS_HELP_STRING([--with-libbacktrace[=]], [Use libbacktrace])], [ if test x$withval != xno; then # use specified path libbacktracedir=$withval AC_MSG_RESULT(libbacktrace using $libbactracedir) AC_SUBST(LIBBACKTRACE_ROOT, $libbacktracedir) else use_libbacktrace=no fi ], [use_libbacktrace=no]) HAVE_LIBBACKTRACE=0 if test $use_libbacktrace = yes ; then LIBBACKTRACE_CPPFLAGS=-I${libbacktracedir}/include LIBBACKTRACE_LDFLAGS="-L${libbacktracedir}/lib -Wl,-rpath,${libbacktracedir}/lib" LIBBACKTRACE_LIB=-lbacktrace CHECK_HEADER_CPPFLAGS([libbacktrace/backtrace.h], [use_libbactrace=yes], "$LIBBACKTRACE_CPPFLAGS", AC_MSG_WARN([cannot find backtrace.h])) if test x$use_libbacktrace = xyes ; then CHECK_LIB_LDFLAGS([backtrace], backtrace_full, "$LIBBACKTRACE_LDFLAGS", [ HAVE_LIBBACKTRACE=1 libbacktrace_found=yes AC_MSG_RESULT(libbacktrace found.) ], [ AC_MSG_WARN([cannot find libbacktrace]) HAVE_LIBBACKTRACE=0 libbacktrace_found=no]) fi fi AC_SUBST(HAVE_LIBBACKTRACE) AC_CHECK_LIB([opcodes], disassembler, [ libopcode_found=yes AC_SUBST(HAVE_LIBOPCODE, 1) AC_MSG_RESULT(libopcode found.) ], [libopcode_found=no]) AM_CONDITIONAL([HAVE_LIBOPCODE], [test "$libopcode_found" = yes]) AM_CONDITIONAL([USE_PPTRACE], [test "$use_pptrace" = yes]) AC_SUBST(PPTRACE_BINARY_TYPE, 1) AM_CONDITIONAL([ENABLE_BIN_INSTRUMENTATION], [test "$binary_instrumentation" = yes]) if test "$binary_instrumentation" = yes; then AC_MSG_WARN([Binary instrumentation is ENABLED]) AC_SUBST(USE_BIN_INSTRUMENTATION, 1) else AC_MSG_WARN([Binary instrumentation is DISABLED]) AC_SUBST(USE_BIN_INSTRUMENTATION, 0) fi AC_CHECK_HEADER([sys/prctl.h], [ AC_CHECK_FUNC(prctl, [have_prctl_h=1], [have_prctl_h=0]) ], [have_prctl_h=0]) AC_SUBST(HAVE_PRCTL_H, [$have_prctl_h]) # -m32 & -m64 flags for tests AC_MSG_CHECKING([whether $CC supports -m32 and -m64]) _save_cflags="$CFLAGS" _save_ldflags="$LDFLAGS" CFLAGS="$CFLAGS -m32" LDFLAGS="$LDFLAGS -m32" AC_LINK_IFELSE([AC_LANG_SOURCE([#include int main(void) { printf("Hello, World!\n"); return 0;}])], [m32_flag=yes], [m32_flag=no]); CFLAGS="$_save_cflags -m64" LDFLAGS="$_save_ldflags -m64" AC_LINK_IFELSE([AC_LANG_SOURCE([#include int main(void) { printf("Hello, World!\n"); return 0;}])], [m64_flag=yes], [m64_flag=no]); CFLAGS="$_save_cflags" LDFLAGS="$_save_ldflags" if test "x$m64_flag" = "xyes"; then if test "x$m32_flag" = "xyes"; then available_target_bits="32 64" supported_mXX_flags="-m32 -m64" else available_target_bits="64" supported_mXX_flags="-m64" fi else if test "x$m32_flag" = "xyes"; then available_target_bits="32" supported_mXX_flags="-m32" else available_target_bits="" supported_mXX_flags="" fi fi AC_MSG_RESULT([supports $supported_mXX_flags]) AC_SUBST(TARGET_BITS, $available_target_bits) use_starpu=yes AC_ARG_WITH(starpu, [AS_HELP_STRING([--with-starpu[=]], [generate traces for StarPU])], [ if test x$withval != xno; then # use specified path starpudir=$withval AC_MSG_RESULT(starpu using $starpudir) AC_SUBST(STARPU_ROOT, $starpudir) PKG_CONFIG_PATH=${PKG_CONFIG_PATH}${PKG_CONFIG_PATH:+:}${starpudir}/lib/pkgconfig else use_starpu=no fi ], [use_starpu=no]) if test x$use_starpu = xyes ; then use_starpu=no for STARPU in starpu-1.3 starpu-1.2 starpu-1.1 do PKG_CHECK_MODULES([STARPU], [$STARPU], [starpu_found=yes], [starpu_found=no]) if test x$starpu_found = xyes then break; fi done STARPU_CPPFLAGS=$STARPU_CFLAGS STARPU_LDFLAGS=$STARPU_LIBS #check for starpu headers CHECK_HEADER_CPPFLAGS([starpu.h], [use_starpu=yes], "$STARPU_CPPFLAGS", AC_MSG_WARN([cannot find starpu.h])) if test x$use_starpu = xyes ; then CHECK_LIB_LDFLAGS($STARPU, [starpu_task_submit],"$STARPU_LDFLAGS", [use_starpu=yes] , [ AC_MSG_WARN([cannot find libstarpu]) use_starpu=no ]) AC_SUBST(STARPU_CPPFLAGS) AC_SUBST(STARPU_LDFLAGS) fi fi use_litl=yes use_extern_litl=no LITL_PRINT=${top_build_dir}/extlib/litl/utils/litl_print AC_ARG_WITH(litl, [AS_HELP_STRING([--with-litl[= or =]], [generate LiTL traces [ARG=yes]])], [ if test x$withval != xno; then use_litl=yes if test x$withval = xyes; then AC_MSG_RESULT(yes) else # use specified path use_extern_litl=yes litldir=$withval AC_MSG_RESULT(yes using $litldir) AC_SUBST(LITL_ROOT, $litldir) LITL_PRINT=$litldir/bin/litl_print fi else use_litl=no AC_MSG_ERROR("LiTL is required for eztrace") fi ]) # --> LiTL if test x$use_extern_litl = xyes; then # use an external installation of LiTL extern_litl_found=yes use_intern_litl=no use_extern_litl=yes TL_CPPFLAGS="${TL_CPPFLAGS} -I${litldir}/include" TL_LDFLAGS="${TL_LDFLAGS} -L${litldir}/lib -Wl,-rpath,${litldir}/lib" TL_LIB="-llitl" TL_EXT_CPPFLAGS="$TL_CPPFLAGS" TL_EXT_LDFLAGS="$TL_LDFLAGS" TL_EXT_LIB="$TL_LIB" else # use the LiTL version shipped with eztrace extern_litl_found=no use_intern_litl=yes use_extern_litl=no dnl configure litl from extlib litl_parent_dir=`pwd` litl_dir="extlib/litl" AC_MSG_NOTICE([configuring in litl_dir ($litl_parent_dir/$litl_dir)]) AS_IF([test "$srcdir" != "."], [ test -d "$litl_dir" || mkdir -p "$litl_dir" || AC_MSG_ERROR([cannot create $litl_dir]) ]) case $srcdir in .) litl_srcdir="$srcdir" ;; /*) litl_srcdir="$srcdir/$litl_dir" ;; *) litl_srcdir="../../$srcdir/$litl_dir" ;; esac litl_conf_cmd="$litl_srcdir/configure" litl_conf_args="$litl_conf_args --prefix=\"$prefix\" --exec-prefix=\"$exec_prefix\" --bindir=\"$bindir\" --libdir=\"$libdir\" --includedir=\"$includedir\" --docdir=\"$docdir/litl\" $TLFLAGS --cache-file=\"/dev/null\" --srcdir=\"$litl_srcdir\"" if test "x$build_doc" = "xyes" ; then litl_conf_args="$litl_conf_args --with-doc=\"$build_doc\"" fi AC_MSG_NOTICE([running $SHELL $litl_conf_cmd $litl_conf_args]) cd $litl_dir eval "$SHELL '$litl_conf_cmd' $litl_conf_args" AS_IF([test $? != "0"], [AC_MSG_ERROR([$litl_conf_cmd failed for $litl_dir])]) cd $litl_parent_dir AS_IF([test x"$TLLIB" = x], [TLLIB="-llitl"]) TL_CPPFLAGS="$TL_CPPFLAGS -I${abs_srcdir}/extlib/litl/src -I${top_build_dir}/extlib/litl/src" TL_LDFLAGS="${top_build_dir}/extlib/litl/src/liblitl.la" TL_LIB="" TL_EXT_CPPFLAGS="-I${prefix}/include/" TL_EXT_LDFLAGS="-L${prefix}/lib/" TL_EXT_LIB="-llitl" fi #TL_LIB="-llitl" if test x$extern_litl_found = xyes ; then CPPFLAGS="${CPPFLAGS} ${TL_CPPFLAGS}" LDFLAGS="${LDFLAGS} ${TL_LDFLAGS}" AC_CHECK_HEADER([litl_types.h],,AC_MSG_ERROR([cannot find headers for LiTL])) AC_CHECK_HEADER([litl_write.h],,AC_MSG_ERROR([cannot find headers for LiTL])) AC_CHECK_HEADER([litl_read.h],,AC_MSG_ERROR([cannot find headers for LiTL])) fi # <-- LiTL L_CPPFLAGS="${TL_CPPFLAGS} -DUSE_LITL -DRECORD_PACKED_EVENTS" L_EXT_CPPFLAGS="${TL_EXT_CPPFLAGS} -DUSE_LITL -DRECORD_PACKED_EVENTS" # by default tid recording is enabled LiTL TID_RECORDING_ENABLED=yes if test "x$TID_RECORDING_ENABLED" = xyes ; then CFLAGS="$CFLAGS -DTID_RECORDING_ENABLED" TL_CPPFLAGS="${TL_CPPFLAGS} -DTID_RECORDING_ENABLED" TL_EXT_CPPFLAGS="${TL_EXT_CPPFLAGS} -DTID_RECORDING_ENABLED" fi use_openmp=yes AC_ARG_ENABLE([openmp], AC_HELP_STRING([--enable-openmp], [Enable OpenMP])) if test "x$enable_openmp" = xno; then AC_MSG_RESULT(OpenMP explicitly disabled) use_openmp=no fi if test "x$use_openmp" = xyes; then # check for openmp CHECK_HEADER_CPPFLAGS([omp.h], [openmp_found=yes], "-fopenmp", AC_MSG_WARN([cannot find omp.h])) fi use_papi=yes AC_ARG_WITH(papi, [AS_HELP_STRING([--with-papi[=]], [PAPI])], [ if test x$withval != xno; then use_papi=yes if test x$withval = xyes; then AC_MSG_RESULT(yes) use_papi_from_system=yes else # use specified path use_papi_from_system=no papidir=$withval AC_MSG_RESULT(yes using $papidir) AC_SUBST(PAPIDIR, $papidir) fi else use_papi=no AC_MSG_RESULT(no) fi ]) AC_SUBST(USE_PAPIDIR_FROM_USER,$use_papi_from_system) if test x$use_papi_from_system = xno; then PAPI_LIBDIR=$papidir/lib PAPI_CPPFLAGS="-I$papidir/include/" PAPI_LDFLAGS="-L${PAPI_LIBDIR} -Xlinker -rpath=${PAPI_LIBDIR}" elif test x$use_papi = xyes ; then if test -d "/usr/include/papi" ; then PAPI_CPPFLAGS="-I/usr/include/papi/" fi if test -d "/usr/lib/PAPI" ; then PAPI_LIBDIR=/usr/lib/papi PAPI_LDFLAGS="-L/usr/lib/papi -Xlinker -rpath=/usr/lib/papi" fi fi enable_papi=no if test x$use_papi = xyes ; then save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $PAPI_CPPFLAGS" CHECK_LIB_TRYLINK([$PAPI_LDFLAGS -lpapi], [#include ], [PAPI_event_info_t plop;], [enable_papi=yes], AC_MSG_WARN([cannot find PAPI lib])) CPPFLAGS="$save_CPPFLAGS" if test x$enable_papi = xyes; then enable_papi=no CHECK_HEADER_CPPFLAGS([papi.h], [enable_papi=yes], "$PAPI_CPPFLAGS", AC_MSG_WARN([cannot find headers for PAPI])) fi if test x$enable_papi = xyes; then CFLAGS="$CFLAGS -DUSE_PAPI" fi fi # MPI stuff MPI_ROOT= MPI_INC= use_mpi=yes use_mpi3=no use_mpi_from_system=yes AC_ARG_WITH(mpi, [AS_HELP_STRING([--with-mpi[=]], [Use a specific MPI installation])], [ if test x$withval != xno; then if test x$withval = xyes; then AC_MSG_RESULT(yes) use_mpi_from_system=yes else # use specified path use_mpi_from_system=no mpidir=$withval AC_MSG_RESULT(Using MPI installation: $mpidir) MPI_ROOT=$mpidir AC_SUBST(MPI_ROOT, $mpidir) fi else # either --without-mpi or --with-mpi=no is set use_mpi=no fi ]) AC_ARG_WITH(mpi-include, [AS_HELP_STRING([--with-mpi-include[=]], [Use a specific MPI header])], [ if test x$withval != xno; then if test x$withval = xyes; then AC_MSG_RESULT(yes) use_mpi_from_system=yes else # use specified path use_mpi_from_system=no mpidir=$withval AC_MSG_RESULT(MPI include directory: $mpidir) MPI_INC=$mpidir AC_SUBST(MPI_INC, $mpidir) fi fi ]) if test x$MPI_INC != x; then # use the value supplied by --with-mpi-include MPI_CFLAGS="-I$MPI_INC/" CPPFLAGS="${CPPFLAGS} $MPI_CFLAGS" FCFLAGS="${FCFLAGS} $MPI_CFLAGS" elif test x$MPI_ROOT != x; then # use the value supplied by --with-mpi MPI_CFLAGS="-I$MPI_ROOT/include/" CPPFLAGS="${CPPFLAGS} $MPI_CFLAGS" FCFLAGS="${FCFLAGS} $MPI_CFLAGS" fi mpi_cflags= AC_ARG_WITH(mpi-cflags, [AS_HELP_STRING([--with-mpi-cflags[=]], [Use a specific CFLAGS when compiling MPI files])], [if test "x$withval" != "xno"; then # use specified path mpi_cflags=$withval MPI_CFLAGS="$mpi_ldflags" CPPFLAGS="${CPPFLAGS} $mpi_cflags" AC_MSG_RESULT(MPI CFLAGS: $mpi_cflags) AC_SUBST(MPI_CFLAGS, mpi_cflags) fi]) mpi_ldflags= AC_ARG_WITH(mpi-ldflags, [AS_HELP_STRING([--with-mpi-ldflags[=]], [Use a specific LDFLAGS when compiling MPI files])], [if test "x$withval" != "xno"; then # use specified path mpi_ldflags=$withval AC_MSG_RESULT(MPI LDFLAGS: $mpi_ldflags) AC_SUBST(MPI_LDFLAGS, mpi_ldflags) fi]) MPI_LDFLAGS="-lmpi" if test "x$mpi_ldflags" != "x"; then # use the value supplied by --with-mpi-include MPI_LDFLAGS="$mpi_ldflags" elif test x$MPI_ROOT != x; then # use the value supplied by --with-mpi MPI_LDFLAGS="-L$MPI_ROOT/lib -lmpi" fi if test $use_mpi = yes ; then AC_SUBST(USE_MPIDIR_FROM_USER,$use_mpi_from_system) # MPI header AC_CHECK_HEADER([mpi.h],[enable_mpi=yes],AC_MSG_WARN([cannot find headers for MPI])) if test $enable_mpi = yes ; then AC_CHECK_DECLS(MPI_Ibarrier, [use_mpi3=yes], [use_mpi3=no], [[#include ]]) fi else enable_mpi=no fi mpi_module_name=mpi AC_ARG_WITH(mpi-module-name, [AS_HELP_STRING([--with-mpi-module-name=], [Change the name of the MPI module])], [ if test x$withval != x; then mpi_module_name=$withval AC_MSG_RESULT([Changing the name of the MPI module to $mpi_module_name]) else # either --without-mpi or --with-mpi=no is set AC_MSG_RESULT([Please provide a name to the --with-mpi-module-name option]) fi ]) mpi_event_id=4 AC_ARG_WITH(mpi-event-id, [AS_HELP_STRING([--with-mpi-event-id=id>], [Change the ID of the MPI events])], [ if test x$withval != x; then mpi_event_id=$withval AC_MSG_RESULT([Changing the ID of MPI events $mpi_event_id]) else # either --without-mpi or --with-mpi=no is set AC_MSG_RESULT([Please provide an ID to the --with-mpi-event-id option]) fi ]) AC_SUBST(MPI_CFLAGS, $MPI_CFLAGS) AC_SUBST(MPI_LDFLAGS, $MPI_LDFLAGS) AC_SUBST(MPI_MODULE_NAME, $mpi_module_name) AC_SUBST(MPI_EVENT_ID, $mpi_event_id) # GTG stuff use_extern_gtg=no AC_ARG_WITH(gtg, [AS_HELP_STRING([--with-gtg[=]], [path to libgtg])], [ if test x$withval != xno; then if test x$withval = xyes; then AC_MSG_RESULT(yes) else # use specified path use_extern_gtg=yes gtgdir=$withval AC_MSG_RESULT(yes using $gtgdir) AC_SUBST(GTGDIR, $gtgdir) fi else AC_MSG_RESULT(no) AC_MSG_ERROR([Cannot find GTG]) fi ]) if test x$use_extern_gtg = xyes; then GTG_CPPFLAGS="${CPPFLAGS} -I$gtgdir/include/" GTG_LDFLAGS="${LDFLAGS} -L$gtgdir/lib/" GTG_DEPENDENCIES="" GTG_LIB="-lgtg" GTG_EXT_CPPFLAGS="${GTG_CPPFLAGS}" GTG_EXT_LDFLAGS="$GTGLDFLAGS" GTG_EXT_LIB="-lgtg" CHECK_LIB_LDFLAGS([gtg], [setTraceType],"$GTG_LDFLAGS", , AC_MSG_ERROR([cannot find libgtg])) CHECK_LIB_LDFLAGS([gtg], [gtg_record],"$GTG_LDFLAGS", GTG_OUT_OF_ORDER=1, GTG_OUT_OF_ORDER=0) CHECK_HEADER_CPPFLAGS([GTG.h],, "$GTG_CPPFLAGS", AC_MSG_ERROR([cannot find headers for gtg])) else GTG_OUT_OF_ORDER=1 dnl configure gtg from extlib gtg_parent_dir=`pwd` gtg_dir="extlib/gtg" AC_MSG_NOTICE([configuring in gtg_dir ($gtg_parent_dir/$gtg_dir)]) AS_IF([test "$srcdir" != "."], [ test -d "$gtg_dir" || mkdir -p "$gtg_dir" || AC_MSG_ERROR([cannot create $gtg_dir]) ]) case $srcdir in .) gtg_srcdir="$srcdir" ;; /*) gtg_srcdir="$srcdir/$gtg_dir" ;; *) gtg_srcdir="../../$srcdir/$gtg_dir" ;; esac gtg_conf_cmd="$gtg_srcdir/configure" gtg_conf_args="$gtg_conf_args --prefix=\"$prefix\" --exec-prefix=\"$exec_prefix\" --bindir=\"$bindir\" --libdir=\"$libdir\" --includedir=\"$includedir\" --docdir=\"$docdir/gtg\" $GTGFLAGS --cache-file=\"/dev/null\" --srcdir=\"$gtg_srcdir\" --with-mpi=no" FC=$FC F77=$F77 if test "x$build_doc" = "xyes" ; then gtg_conf_args="$gtg_conf_args --with-doc=\"$build_doc\"" fi AC_MSG_NOTICE([running $SHELL $gtg_conf_cmd $gtg_conf_args]) cd $gtg_dir eval "$SHELL '$gtg_conf_cmd' $gtg_conf_args" AS_IF([test $? != "0"], [AC_MSG_ERROR([$gtg_conf_cmd failed for $gtg_dir])]) cd $gtg_parent_dir GTG_CPPFLAGS="$GTG_CPPFLAGS -I${abs_srcdir}/${gtg_dir}/inc -I${top_build_dir}/${gtg_dir}/inc" GTG_LDFLAGS="${top_build_dir}/${gtg_dir}/src/libgtg.la" GTG_DEPENDENCIES="$GTG_LDFLAGS" GTG_LIB="" GTG_EXT_CPPFLAGS="-I${prefix}/include" GTG_EXT_LDFLAGS="-L${prefix}/lib" GTG_EXT_LIB="-lgtg" fi if [ test "$GTG_OUT_OF_ORDER" = "1" ] ; then GTG_CPPFLAGS="${GTG_CPPFLAGS} -DGTG_OUT_OF_ORDER" GTG_EXT_CPPFLAGS="${GTG_EXT_CPPFLAGS} -DGTG_OUT_OF_ORDER" fi # Check for presence of pdfLaTeX AC_CHECK_PROG(PDFLATEX, pdflatex, pdflatex) if test -z "$PDFLATEX"; then AC_MSG_WARN([Unable to create PDF version of the user manual -- pdflatex is missing!]) fi AM_CONDITIONAL([HAVE_PDFLATEX], test -n "$PDFLATEX") # Check for presence of latexmk AC_CHECK_PROG(LATEXMK, latexmk, latexmk) if test -z "$LATEXMK"; then AC_MSG_WARN([Unable to create PDF version of the user manual -- latemk is missing!]) fi AM_CONDITIONAL([HAVE_LATEXMK], test -n "$LATEXMK") # CUDA stuff CUDA_ROOT=/usr/local/cuda use_cuda=yes use_cuda_from_system=yes AC_ARG_WITH(cuda, [AS_HELP_STRING([--with-cuda[=]], [Use a specific CUDA installation])], [ if test x$withval != xno; then if test x$withval = xyes; then AC_MSG_RESULT(yes) use_cuda_from_system=yes else # use specified path use_cuda_from_system=no cudadir=$withval AC_MSG_RESULT(yes using $cudadir) CUDA_ROOT=$cudadir AC_SUBST(CUDA_ROOT, $cudadir) fi else # either --without-cuda or --with-cuda=no is set use_cuda=no fi ]) enable_cuda=yes if test $use_cuda = yes ; then CUDA_INC=${CUDA_ROOT}/include CUDA_CFLAGS="-I${CUDA_INC}" CUDA_LIBS="-lcudart" CUDA_LDFLAGS="-L${CUDA_ROOT}/lib -Wl,-rpath -Wl,${CUDA_ROOT}/lib" if test x$CUPTI_ROOT = x ; then CUPTI_ROOT="${CUDA_ROOT}/extras/CUPTI" fi CUPTI_INC=${CUPTI_ROOT}/include CUPTI_CFLAGS="-I${CUPTI_INC}" CUPTI_LIBS="-lcupti" CUPTI_LDFLAGS="-L${CUPTI_ROOT}/lib -Wl,-rpath -Wl,${CUPTI_ROOT}/lib" # 64-bits systems CUDA_LDFLAGS="${CUDA_LDFLAGS} -L${CUDA_ROOT}/lib64 -Wl,-rpath -Wl,${CUDA_ROOT}/lib64" CUPTI_LDFLAGS="${CUPTI_LDFLAGS} -L${CUPTI_ROOT}/lib64 -Wl,-rpath -Wl,${CUPTI_ROOT}/lib64 ${CUDA_LDFLAGS}" NVCC="${CUDA_ROOT}/bin/nvcc" AC_SUBST(USE_CUDADIR_FROM_USER,$use_cuda_from_system) # CUDA compiler AC_MSG_CHECKING([for CUDA compiler in $CUDA_ROOT/bin]) if test -x "${NVCC}" ; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([nvcc not found]) enable_cuda=no fi fi if test $enable_cuda = yes ; then # CUDA header AC_MSG_CHECKING([for CUDA header in $CUDA_INC]) if test -f "${CUDA_INC}/cuda.h" ; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([cuda.h not found]) enable_cuda=no fi fi if test $enable_cuda = yes ; then AC_MSG_CHECKING([for CUPTI header in $CUPTI_INC]) if test -f "${CUPTI_INC}/cupti.h" ; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([cupti.h not found]) enable_cuda=no fi fi if test $enable_cuda = yes ; then CHECK_LIB_LDFLAGS([cudart], [cudaMalloc], "$CUDA_LDFLAGS", , AC_MSG_ERROR([cannot find libcudart])) CHECK_LIB_LDFLAGS([cupti], [cuptiSubscribe], "$CUPTI_LDFLAGS", , AC_MSG_ERROR([cannot find libcupti])) else use_cuda=no enable_cuda=no fi if test x$enable_cuda != xyes ; then CUDA_INC= CUDA_CFLAGS= CUDA_LDFLAGS= CUDA_LIBS= CUPTI_INC= CUPTI_CFLAGS= CUPTI_LDFLAGS= CUPTI_LIBS= NVCC= NVCCFLAGS= fi AC_SUBST(CUDA_CFLAGS) AC_SUBST(CUDA_LDFLAGS) AC_SUBST(CUDA_LIBS) AC_SUBST(CUPTI_CFLAGS) AC_SUBST(CUPTI_LDFLAGS) AC_SUBST(CUPTI_LIBS) AC_SUBST(NVCC) AC_SUBST(NVCCFLAGS) AC_ARG_ENABLE([gettid], AC_HELP_STRING([--enable-gettid], [Use syscall(SYS_gettid) to get the thread ID instead of pthread_self(). This however costs a system call for each trace entry])) USE_GETTID=0 if test "x$enable_gettid" = xyes; then USE_GETTID=1 # AC_DEFINE([USE_GETTID], [1], [Use gettid]) fi AC_SUBST(USE_GETTID) AC_SUBST(libdir) AC_SUBST(exec_prefix) AC_SUBST(prefix) AC_SUBST(includedir) AC_SUBST(bindir) AC_SUBST(datadir) AC_SUBST(FCFLAGS) # cppflags for compiling eztrace AC_SUBST(TL_CPPFLAGS) AC_SUBST(TL_LDFLAGS) AC_SUBST(TL_LIB) # cppflags for compiling an application that uses eztrace AC_SUBST(TL_EXT_CPPFLAGS) AC_SUBST(TL_EXT_LDFLAGS) AC_SUBST(TL_EXT_LIB) # cppflags for compiling eztrace AC_SUBST(GTG_CPPFLAGS) AC_SUBST(GTG_LDFLAGS) AC_SUBST(GTG_LIB) AC_SUBST(GTG_DEPENDENCIES) # cppflags for compiling an application that uses eztrace AC_SUBST(GTG_EXT_CPPFLAGS) AC_SUBST(GTG_EXT_LDFLAGS) AC_SUBST(GTG_EXT_LIB) AC_SUBST(GTG_OUT_OF_ORDER) AM_CONDITIONAL([GTG_OUT_OF_ORDER], [test "$GTG_OUT_OF_ORDER" = "1"] ) AM_CONDITIONAL([OPENMP_FOUND], [test "x$openmp_found" = xyes]) AC_SUBST(LITL_PRINT) AC_SUBST(PAPI_CPPFLAGS) AC_SUBST(PAPI_LDFLAGS) AC_SUBST(PAPI_LIBDIR) AC_SUBST(LIBBACKTRACE_CPPFLAGS) AC_SUBST(LIBBACKTRACE_LDFLAGS) AC_SUBST(LIBBACKTRACE_LIB) PAPI_ENABLED="$enable_api" AC_SUBST(PAPI_ENABLED) AM_CONDITIONAL([USE_PAPI], [test "$enable_papi" = yes]) AC_SUBST(DYNLIB_EXT) AC_SUBST(LD_PRELOAD_NAME) AC_SUBST(LD_LIBRARY_PATH_NAME) AM_CONDITIONAL([USE_CUDA], [test "$enable_cuda" = yes]) AM_CONDITIONAL([USE_MPI], [test "$enable_mpi" = yes]) AM_CONDITIONAL([USE_MPI3], [test "$use_mpi3" = yes]) AM_CONDITIONAL([USE_PTHREAD], [test "$have_full_pthread" = yes]) AM_CONDITIONAL([USE_STARPU], [test "$use_starpu" = yes]) AM_CONDITIONAL([USE_LITL], [test "x$use_litl" = xyes]) AM_CONDITIONAL([AMEXTERNLITL], [test "x$use_extern_litl" = xyes]) AM_CONDITIONAL([AMEXTERNGTG], [test "x$use_extern_gtg" = xyes]) AM_CONDITIONAL([X86_64], [test "x$arch_str" = "xX86_64"]) AM_CONDITIONAL([ARM], [test "x$arch_str" = "xARM"]) AM_CONDITIONAL([WITHDOC], [test "$build_doc" = "yes"]) AC_CONFIG_SUBDIRS([extlib/opari2 extlib/litl]) AC_OUTPUT([Makefile eztrace.pc \ extlib/Makefile \ src/core/Makefile \ src/modules/omp/Makefile \ src/modules/mpi/Makefile \ src/modules/cuda/Makefile \ src/modules/pthread/Makefile \ src/modules/stdio/Makefile \ src/modules/memory/Makefile \ src/modules/papi/Makefile \ src/modules/starpu/Makefile \ src/core/eztrace_create_plugin \ src/core/eztrace_plugin_generator \ src/core/input/Makefile.template \ src/modules/omp/eztrace_cc \ test/mpi/Makefile \ test/openmp/Makefile \ src/core/eztrace.c \ src/core/eztrace.preload \ src/core/eztrace_config.h \ test/static/Makefile \ test/stdio/Makefile \ test/memory/Makefile \ test/pthread/Makefile \ test/automake/Makefile \ test/automake/testcommon.h \ test/pptrace/automatic/Makefile \ doc/Makefile\ src/modules/omp/pomp-lib-dummy/Makefile]) eztrace-1.1-7/PaxHeaders.7332/src0000644000000000000000000000013213171135477013352 xustar0030 mtime=1508162367.845917098 30 atime=1508162372.166294941 30 ctime=1508162367.845917098 eztrace-1.1-7/src/0000755000175000017500000000000013171135477014616 5ustar00trahaytrahay00000000000000eztrace-1.1-7/src/PaxHeaders.7332/modules0000644000000000000000000000013013171135500015003 xustar0029 mtime=1508162368.39396498 30 atime=1508162372.166294941 29 ctime=1508162368.39396498 eztrace-1.1-7/src/modules/0000755000175000017500000000000013171135500016251 5ustar00trahaytrahay00000000000000eztrace-1.1-7/src/modules/PaxHeaders.7332/cuda0000644000000000000000000000013213171135500015721 xustar0030 mtime=1508162368.457970573 30 atime=1508162372.166294941 30 ctime=1508162368.457970573 eztrace-1.1-7/src/modules/cuda/0000755000175000017500000000000013171135500017165 5ustar00trahaytrahay00000000000000eztrace-1.1-7/src/modules/cuda/PaxHeaders.7332/cuda_driver.cu0000644000000000000000000000013212544237152020627 xustar0030 mtime=1435582058.563899951 30 atime=1507797543.086864873 30 ctime=1508162368.453970224 eztrace-1.1-7/src/modules/cuda/cuda_driver.cu0000644000175000017500000005077412544237152022033 0ustar00trahaytrahay00000000000000#define _GNU_SOURCE 1 /* or _BSD_SOURCE or _SVID_SOURCE */ #define _REENTRANT #include #include #include #include #include "ezt_cuda.h" #include "cuda_ev_codes.h" #include "eztrace.h" extern "C" { static unsigned kernel_id = 0; /* Kernel management */ CUresult cuLaunchKernel(CUfunction f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, CUstream hStream, void **kernelParams, void **extra) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; unsigned current_id = kernel_id++; // TODO: distinguish between runtime and driver API CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CULAUNCHKERNEL_START, deviceId, current_id); res = libcuLaunchKernel(f, gridDimX, gridDimY, gridDimZ, blockDimX, blockDimY, blockDimZ, sharedMemBytes, hStream, kernelParams, extra); EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CULAUNCHKERNEL_STOP, deviceId, current_id); return res; } CUresult cuLaunch(CUfunction f) { // deprecated FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; unsigned current_id = kernel_id++; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CULAUNCHKERNEL_START, deviceId, current_id); res = libcuLaunch(f); EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CULAUNCHKERNEL_STOP, deviceId, current_id); return res; } CUresult cuLaunchGrid(CUfunction f, int grid_width, int grid_height) { // deprecated FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; unsigned current_id = kernel_id++; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CULAUNCHKERNEL_START, deviceId, current_id); res = libcuLaunchGrid(f, grid_width, grid_height); EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CULAUNCHKERNEL_STOP, deviceId, current_id); return res; } CUresult cuLaunchGridAsync(CUfunction f, int grid_width, int grid_height, CUstream hStream) { // deprecated FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; unsigned current_id = kernel_id++; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CULAUNCHKERNEL_START, deviceId, current_id); res = libcuLaunchGridAsync(f, grid_width, grid_height, hStream); EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CULAUNCHKERNEL_STOP, deviceId, current_id); return res; } /* Memory Management */ CUresult cuMemAlloc_v2(CUdeviceptr *dptr, size_t bytesize) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); ezt_cuda_size_t size = bytesize; EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CUMEMALLOC_START, deviceId, size); res = libcuMemAlloc_v2(dptr, bytesize); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMALLOC_STOP, deviceId, size, (app_ptr)*dptr); return res; } CUresult cuMemAllocPitch_v2(CUdeviceptr *dptr, size_t *pPitch, size_t WidthInBytes, size_t Height, unsigned int ElementSizeBytes) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; ezt_cuda_size_t size = Height * WidthInBytes; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CUMEMALLOC_START, deviceId, size); res = libcuMemAllocPitch_v2(dptr, pPitch, WidthInBytes, Height, ElementSizeBytes); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMALLOC_STOP, deviceId, size, *dptr); return res; } CUresult cuMemFree_v2(CUdeviceptr dptr) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CUDAFREE_START, deviceId, dptr); res = libcuMemFree_v2(dptr); EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CUDAFREE_STOP, deviceId, dptr); return res; } /* Memory Transfers */ CUresult cuMemcpy(CUdeviceptr dst, CUdeviceptr src, size_t ByteCount) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); ezt_cuda_size_t size = ByteCount; EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, 0); res = libcuMemcpy(dst, src, ByteCount); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, 0); return res; } CUresult cuMemcpyAsync(CUdeviceptr dst, CUdeviceptr src, size_t ByteCount, CUstream hStream) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); ezt_cuda_size_t size = ByteCount; EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, 0); res = libcuMemcpyAsync(dst, src, ByteCount, hStream); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, 0); return res; } CUresult cuMemcpyAtoA_v2(CUarray dstArray, size_t dstOffset, CUarray srcArray, size_t srcOffset, size_t ByteCount) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; enum ezt_cudaMemcpyKind kind = CUDA_MEMCPY_KIND_ATOA; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); ezt_cuda_size_t size = ByteCount; EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, kind); res = libcuMemcpyAtoA_v2(dstArray, dstOffset, srcArray, srcOffset, ByteCount); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, kind); return res; } CUresult cuMemcpyAtoD_v2(CUdeviceptr dstDevice, CUarray srcArray, size_t srcOffset, size_t ByteCount) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; enum ezt_cudaMemcpyKind kind = CUDA_MEMCPY_KIND_ATOD; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); ezt_cuda_size_t size = ByteCount; EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, kind); res = libcuMemcpyAtoD_v2(dstDevice, srcArray, srcOffset, ByteCount); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, kind); return res; } CUresult cuMemcpyAtoH_v2(void *dstHost, CUarray srcArray, size_t srcOffset, size_t ByteCount) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; enum ezt_cudaMemcpyKind kind = CUDA_MEMCPY_KIND_ATOH; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); ezt_cuda_size_t size = ByteCount; EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, kind); res = libcuMemcpyAtoH_v2(dstHost, srcArray, srcOffset, ByteCount); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, kind); return res; } CUresult cuMemcpyAtoHAsync_v2(void *dstHost, CUarray srcArray, size_t srcOffset, size_t ByteCount, CUstream hStream) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; enum ezt_cudaMemcpyKind kind = CUDA_MEMCPY_KIND_ATOH; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); ezt_cuda_size_t size = ByteCount; EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, kind); res = libcuMemcpyAtoHAsync_v2(dstHost, srcArray, srcOffset, ByteCount, hStream); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, kind); return res; } CUresult cuMemcpyDtoA_v2(CUarray dstArray, size_t dstOffset, CUdeviceptr srcDevice, size_t ByteCount) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; enum ezt_cudaMemcpyKind kind = CUDA_MEMCPY_KIND_DTOA; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); ezt_cuda_size_t size = ByteCount; EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, kind); res = libcuMemcpyDtoA_v2(dstArray, dstOffset, srcDevice, ByteCount); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, kind); return res; } CUresult cuMemcpyDtoD_v2(CUdeviceptr dstDevice, CUdeviceptr srcDevice, size_t ByteCount) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; enum ezt_cudaMemcpyKind kind = CUDA_MEMCPY_KIND_DTOD; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); ezt_cuda_size_t size = ByteCount; EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, kind); res = libcuMemcpyDtoD_v2( dstDevice, srcDevice, ByteCount); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, kind); return res; } CUresult cuMemcpyDtoDAsync_v2(CUdeviceptr dstDevice, CUdeviceptr srcDevice, size_t ByteCount, CUstream hStream) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; enum ezt_cudaMemcpyKind kind = CUDA_MEMCPY_KIND_DTOD; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); ezt_cuda_size_t size = ByteCount; EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, kind); res = libcuMemcpyDtoDAsync_v2( dstDevice, srcDevice, ByteCount, hStream); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, kind); return res; } CUresult cuMemcpyDtoH_v2(void *dstHost, CUdeviceptr srcDevice, size_t ByteCount) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; enum ezt_cudaMemcpyKind kind = CUDA_MEMCPY_KIND_DTOH; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); ezt_cuda_size_t size = ByteCount; EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, kind); res = libcuMemcpyDtoH_v2(dstHost, srcDevice, ByteCount); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, kind); return res; } CUresult cuMemcpyDtoHAsync_v2(void *dstHost, CUdeviceptr srcDevice, size_t ByteCount, CUstream hStream) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; enum ezt_cudaMemcpyKind kind = CUDA_MEMCPY_KIND_DTOH; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); ezt_cuda_size_t size = ByteCount; EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, kind); res = libcuMemcpyDtoHAsync_v2(dstHost, srcDevice, ByteCount, hStream); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, kind); return res; } CUresult cuMemcpyHtoA_v2(CUarray dstArray, size_t dstOffset, const void* srcHost, size_t ByteCount) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; enum ezt_cudaMemcpyKind kind = CUDA_MEMCPY_KIND_HTOA; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); ezt_cuda_size_t size = ByteCount; EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, kind); res = libcuMemcpyHtoA_v2( dstArray, dstOffset, srcHost, ByteCount); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, kind); return res; } CUresult cuMemcpyHtoAAsync_v2(CUarray dstArray, size_t dstOffset, const void *srcHost, size_t ByteCount, CUstream hStream) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; enum ezt_cudaMemcpyKind kind = CUDA_MEMCPY_KIND_HTOA; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); ezt_cuda_size_t size = ByteCount; EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, kind); res = libcuMemcpyHtoAAsync_v2( dstArray, dstOffset, srcHost, ByteCount, hStream); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, kind); return res; } CUresult cuMemcpyHtoD_v2(CUdeviceptr dstDevice, const void *srcHost, size_t ByteCount) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; enum ezt_cudaMemcpyKind kind = CUDA_MEMCPY_KIND_HTOD; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); ezt_cuda_size_t size = ByteCount; EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, kind); res = libcuMemcpyHtoD_v2( dstDevice, srcHost, ByteCount); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, kind); return res; } CUresult cuMemcpyHtoDAsync_v2(CUdeviceptr dstDevice, const void *srcHost, size_t ByteCount, CUstream hStream) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; enum ezt_cudaMemcpyKind kind = CUDA_MEMCPY_KIND_HTOD; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); ezt_cuda_size_t size = ByteCount; EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, kind); res = libcuMemcpyHtoDAsync_v2( dstDevice, srcHost, ByteCount, hStream); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, kind); return res; } CUresult cuMemcpy2D_v2(const CUDA_MEMCPY2D *pCopy) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; enum ezt_cudaMemcpyKind kind = memoryTypesToCpyKind(pCopy->srcMemoryType, pCopy->dstMemoryType); ezt_cuda_size_t size = pCopy->WidthInBytes * pCopy->Height; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, kind); res = libcuMemcpy2D_v2(pCopy); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, kind); return res; } CUresult cuMemcpy2DUnaligned_v2(const CUDA_MEMCPY2D *pCopy) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; enum ezt_cudaMemcpyKind kind = memoryTypesToCpyKind(pCopy->srcMemoryType, pCopy->dstMemoryType); ezt_cuda_size_t size = pCopy->WidthInBytes * pCopy->Height; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, kind); res = libcuMemcpy2DUnaligned_v2(pCopy); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, kind); return res; } CUresult cuMemcpy2DAsync_v2(const CUDA_MEMCPY2D *pCopy, CUstream hStream) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; enum ezt_cudaMemcpyKind kind = memoryTypesToCpyKind(pCopy->srcMemoryType, pCopy->dstMemoryType); ezt_cuda_size_t size = pCopy->WidthInBytes * pCopy->Height; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, kind); res = libcuMemcpy2DAsync_v2(pCopy, hStream); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, kind); return res; } CUresult cuMemcpy3D_v2(const CUDA_MEMCPY3D *pCopy) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; enum ezt_cudaMemcpyKind kind = memoryTypesToCpyKind(pCopy->srcMemoryType, pCopy->dstMemoryType); ezt_cuda_size_t size = pCopy->WidthInBytes * pCopy->Height * pCopy->Depth; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, kind); res = libcuMemcpy3D_v2(pCopy); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, kind); return res; } CUresult cuMemcpy3DAsync_v2(const CUDA_MEMCPY3D *pCopy, CUstream hStream) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; enum ezt_cudaMemcpyKind kind = memoryTypesToCpyKind(pCopy->srcMemoryType, pCopy->dstMemoryType); ezt_cuda_size_t size = pCopy->WidthInBytes * pCopy->Height * pCopy->Depth; CUdevice deviceId; CUresult res = cuCtxGetDevice(&deviceId); assert(res == CUDA_SUCCESS); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, kind); res = libcuMemcpy3DAsync_v2(pCopy, hStream); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, kind); return res; } // to be implemented CUresult cuMemGetInfo_v2(size_t *free, size_t *total) { return libcuMemGetInfo_v2(free, total); } CUresult cuMemAllocHost_v2(void **pp, size_t bytesize) { return libcuMemAllocHost_v2(pp, bytesize); } CUresult cuMemFreeHost(void *p) { return libcuMemFreeHost(p); } CUresult cuMemHostAlloc(void **pp, size_t bytesize, unsigned int Flags) { return libcuMemHostAlloc(pp, bytesize, Flags); } CUresult cuMemHostRegister(void *p, size_t bytesize, unsigned int Flags) { return libcuMemHostRegister(p, bytesize, Flags); } CUresult cuMemHostUnregister(void *p) { return libcuMemHostUnregister(p); } CUresult cuMemcpyPeer(CUdeviceptr dstDevice, CUcontext dstContext, CUdeviceptr srcDevice, CUcontext srcContext, size_t ByteCount) { return libcuMemcpyPeer(dstDevice, dstContext, srcDevice, srcContext, ByteCount); } CUresult cuMemcpyPeerAsync(CUdeviceptr dstDevice, CUcontext dstContext, CUdeviceptr srcDevice, CUcontext srcContext, size_t ByteCount, CUstream hStream) { return libcuMemcpyPeerAsync(dstDevice, dstContext, srcDevice, srcContext, ByteCount, hStream); } CUresult cuMemcpy3DPeer(const CUDA_MEMCPY3D_PEER *pCopy) { return libcuMemcpy3DPeer(pCopy); } CUresult cuMemcpy3DPeerAsync(const CUDA_MEMCPY3D_PEER *pCopy, CUstream hStream) { return libcuMemcpy3DPeerAsync(pCopy, hStream); } CUresult cuMemsetD8_v2(CUdeviceptr dstDevice, unsigned char uc, size_t N) { return libcuMemsetD8_v2(dstDevice, uc, N); } CUresult cuMemsetD16_v2(CUdeviceptr dstDevice, unsigned short us, size_t N) { return libcuMemsetD16_v2(dstDevice, us, N); } CUresult cuMemsetD32_v2(CUdeviceptr dstDevice, unsigned int ui, size_t N) { return libcuMemsetD32_v2(dstDevice, ui, N); } CUresult cuMemsetD2D8_v2(CUdeviceptr dstDevice, size_t dstPitch, unsigned char uc, size_t Width, size_t Height) { return libcuMemsetD2D8_v2(dstDevice, dstPitch, uc, Width, Height); } CUresult cuMemsetD2D16_v2(CUdeviceptr dstDevice, size_t dstPitch, unsigned short us, size_t Width, size_t Height) { return libcuMemsetD2D16_v2(dstDevice, dstPitch, us, Width, Height); } CUresult cuMemsetD2D32_v2(CUdeviceptr dstDevice, size_t dstPitch, unsigned int ui, size_t Width, size_t Height) { return libcuMemsetD2D32_v2(dstDevice, dstPitch, ui, Width, Height); } CUresult cuMemsetD8Async(CUdeviceptr dstDevice, unsigned char uc, size_t N, CUstream hStream) { return libcuMemsetD8Async(dstDevice, uc, N, hStream); } CUresult cuMemsetD16Async(CUdeviceptr dstDevice, unsigned short us, size_t N, CUstream hStream) { return libcuMemsetD16Async(dstDevice, us, N, hStream); } CUresult cuMemsetD32Async(CUdeviceptr dstDevice, unsigned int ui, size_t N, CUstream hStream) { return libcuMemsetD32Async(dstDevice, ui, N, hStream); } CUresult cuMemsetD2D8Async(CUdeviceptr dstDevice, size_t dstPitch, unsigned char uc, size_t Width, size_t Height, CUstream hStream) { return libcuMemsetD2D8Async(dstDevice, dstPitch, uc, Width, Height, hStream); } CUresult cuMemsetD2D16Async(CUdeviceptr dstDevice, size_t dstPitch, unsigned short us, size_t Width, size_t Height, CUstream hStream) { return libcuMemsetD2D16Async(dstDevice, dstPitch, us, Width, Height, hStream); } CUresult cuMemsetD2D32Async(CUdeviceptr dstDevice, size_t dstPitch, unsigned int ui, size_t Width, size_t Height, CUstream hStream) { return libcuMemsetD2D32Async(dstDevice, dstPitch, ui, Width, Height, hStream); } #if 0 /* is it useful ? */ CUresult cuArrayCreate(CUarray *pHandle, const CUDA_ARRAY_DESCRIPTOR *pAllocateArray) { return libcuArrayCreate(pHandle, pAllocateArray); } CUresult cuArrayGetDescriptor(CUDA_ARRAY_DESCRIPTOR *pArrayDescriptor, CUarray hArray) { return libcuArrayGetDescriptor(pArrayDescriptor, hArray); } CUresult cuArrayDestroy(CUarray hArray) { return libcuArrayDestroy(hArray); } CUresult cuArray3DCreate(CUarray *pHandle, const CUDA_ARRAY3D_DESCRIPTOR *pAllocateArray) { return libcuArray3DCreate(pHandle, pAllocateArray); } CUresult cuArray3DGetDescriptor(CUDA_ARRAY3D_DESCRIPTOR *pArrayDescriptor, CUarray hArray) { return libcuArray3DGetDescriptor(pArrayDescriptor, hArray); } CUresult cuMipmappedArrayCreate(CUmipmappedArray *pHandle, const CUDA_ARRAY3D_DESCRIPTOR *pMipmappedArrayDesc, unsigned int numMipmapLevels) { return libcuMipmappedArrayCreate(pHandle, pMipmappedArrayDesc, numMipmapLevels); } CUresult cuMipmappedArrayGetLevel(CUarray *pLevelArray, CUmipmappedArray hMipmappedArray, unsigned int level) { return libcuMipmappedArrayGetLevel(pLevelArray, hMipmappedArray, level); } CUresult cuMipmappedArrayDestroy(CUmipmappedArray hMipmappedArray) { return libcuMipmappedArrayDestroy(hMipmappedArray); } #endif } eztrace-1.1-7/src/modules/cuda/PaxHeaders.7332/cuda_runtime.cu0000644000000000000000000000013212544237152021017 xustar0030 mtime=1435582058.563899951 30 atime=1507797543.086864873 30 ctime=1508162368.445969525 eztrace-1.1-7/src/modules/cuda/cuda_runtime.cu0000644000175000017500000005622012544237152022213 0ustar00trahaytrahay00000000000000#define _GNU_SOURCE 1 /* or _BSD_SOURCE or _SVID_SOURCE */ #define _REENTRANT #include #include #include #include #include "ezt_cuda.h" #include "cuda_ev_codes.h" #include "eztrace.h" extern "C" { /**** CUDA runtime interface ****/ cudaError_t cudaThreadSynchronize(){ // note: deprecated FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_1(EZTRACE_CUDA_CUDATHREADSYNCHRONIZE_START, deviceId); ret = libcudaThreadSynchronize(); EZTRACE_EVENT_PACKED_1(EZTRACE_CUDA_CUDATHREADSYNCHRONIZE_STOP, deviceId); return ret; } cudaError_t cudaDeviceSynchronize(){ FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_1(EZTRACE_CUDA_CUDADEVICESYNCHRONIZE_START, deviceId); ret = libcudaDeviceSynchronize(); EZTRACE_EVENT_PACKED_1(EZTRACE_CUDA_CUDADEVICESYNCHRONIZE_STOP, deviceId); return ret; } /* Kernel management */ #if 0 // todo: just before cudaLaunch, nvcc puts a call to cudaConfigureCall . We could intercept this function and // record the gridDim, blockDim, etc. cudaError_t cudaConfigureCall ( dim3 gridDim, dim3 blockDim, size_t sharedMem, cudaStream_t stream) { fprintf(stderr, "cudaConfigureCall(gridDim(%d, %d, %d), blockDim(%d, %d, %d), sharedMem=%d, stream=%p)\n", gridDim.x, gridDim.y, gridDim.z, blockDim.x, blockDim.y, blockDim.z, sharedMem, stream); cudaError_t ret; ret = libcudaConfigureCall(gridDim, blockDim, sharedMem, stream); return ret; } #else cudaError_t cudaConfigureCall ( dim3 gridDim, dim3 blockDim, size_t sharedMem, cudaStream_t stream) { return libcudaConfigureCall(gridDim, blockDim, sharedMem, stream); } #endif cudaError_t cudaLaunch(const void *entry) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; static unsigned kernel_id = 0; unsigned current_id = kernel_id++; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CULAUNCHKERNEL_START, deviceId, current_id); ret = libcudaLaunch(entry); EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CULAUNCHKERNEL_STOP, deviceId, current_id); return ret; } /* Memory management */ cudaError_t cudaMalloc(void ** devPtr, size_t size) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); ezt_cuda_size_t ezt_size = size; // todo: use devptr ? EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CUMEMALLOC_START, deviceId, ezt_size); ret = libcudaMalloc(devPtr, size); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMALLOC_STOP, deviceId, ezt_size, *devPtr); return ret; } cudaError_t cudaMallocPitch(void **devPtr, size_t *pitch, size_t width, size_t height) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); ezt_cuda_size_t ezt_size = width*height; EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CUMEMALLOC_START, deviceId, ezt_size); ret = libcudaMallocPitch(devPtr, pitch, width, height); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMALLOC_STOP, deviceId, ezt_size, *devPtr); return ret; } cudaError_t cudaMallocArray(struct cudaArray **array, const struct cudaChannelFormatDesc *desc, size_t width, size_t height, unsigned int flags) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; ezt_cuda_size_t size = width*height; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CUMEMALLOC_START, deviceId, size); ret = libcudaMallocArray(array, desc, width, height, flags); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMALLOC_STOP, deviceId, size, *array); return ret; } cudaError_t cudaMalloc3D(struct cudaPitchedPtr* pitchedDevPtr, struct cudaExtent extent) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); ezt_cuda_size_t size = extent.width * extent.height * extent.depth; EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CUMEMALLOC_START, deviceId, size); ret = libcudaMalloc3D(pitchedDevPtr, extent); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMALLOC_STOP, deviceId, size, pitchedDevPtr); return ret; } cudaError_t cudaMalloc3DArray(cudaArray_t *array, const struct cudaChannelFormatDesc* desc, struct cudaExtent extent, unsigned int flags) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); ezt_cuda_size_t size = extent.width * extent.height * extent.depth; EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CUMEMALLOC_START, deviceId, size); ret = libcudaMalloc3DArray(array, desc, extent, flags); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMALLOC_STOP, deviceId, size, *array); return ret; } cudaError_t cudaMallocMipmappedArray(cudaMipmappedArray_t *mipmappedArray, const struct cudaChannelFormatDesc* desc, struct cudaExtent extent, unsigned int numLevels, unsigned int flags) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); ezt_cuda_size_t size = extent.width * extent.height * extent.depth; EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CUMEMALLOC_START, deviceId, size); ret = libcudaMallocMipmappedArray(mipmappedArray, desc, extent, numLevels, flags); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMALLOC_STOP, deviceId, size, mipmappedArray); return ret; } cudaError_t cudaFree(void *devPtr) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); if(devPtr) EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CUDAFREE_START, deviceId, devPtr); ret = libcudaFree(devPtr); if(devPtr) EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CUDAFREE_STOP, deviceId, devPtr); return ret; } cudaError_t cudaFreeArray(cudaArray_t array) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); if(array) EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CUDAFREE_START, deviceId, array); ret = libcudaFreeArray(array); if(array) EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CUDAFREE_STOP, deviceId, array); return ret; } cudaError_t cudaFreeMipmappedArray(cudaMipmappedArray_t mipmappedArray) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); if(mipmappedArray) EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CUDAFREE_START, deviceId, mipmappedArray); ret = libcudaFreeMipmappedArray(mipmappedArray); if(mipmappedArray) EZTRACE_EVENT_PACKED_2(EZTRACE_CUDA_CUDAFREE_STOP, deviceId, mipmappedArray); return ret; } /* Memory Transfers */ cudaError_t cudaMemcpy(void *dst, const void *src, size_t count, enum cudaMemcpyKind kind) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; // todo: use devptr ? enum ezt_cudaMemcpyKind ezt_kind = CUDA_MEMCPY_KIND_TO_EZT(kind); int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); ezt_cuda_size_t ezt_size = count; EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, ezt_size, ezt_kind); ret = libcudaMemcpy(dst, src, count, kind); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, ezt_size, ezt_kind); return ret; } cudaError_t cudaMemcpy3D(const struct cudaMemcpy3DParms *p) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; enum ezt_cudaMemcpyKind ezt_kind = CUDA_MEMCPY_KIND_TO_EZT(p->kind); ezt_cuda_size_t size = p->extent.width * p->extent.height *p->extent.depth; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, ezt_kind); ret = libcudaMemcpy3D(p); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, ezt_kind); return ret; } cudaError_t cudaMemcpy3DAsync(const struct cudaMemcpy3DParms *p, cudaStream_t stream ) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; enum ezt_cudaMemcpyKind ezt_kind = CUDA_MEMCPY_KIND_TO_EZT(p->kind); ezt_cuda_size_t size = p->extent.width * p->extent.height *p->extent.depth; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, ezt_kind); ret = libcudaMemcpy3DAsync(p, stream); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, ezt_kind); return ret; } cudaError_t cudaMemcpyToArray(cudaArray_t dst, size_t wOffset, size_t hOffset, const void *src, size_t count, enum cudaMemcpyKind kind) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; enum ezt_cudaMemcpyKind ezt_kind = CUDA_MEMCPY_KIND_TO_EZT(kind); ezt_cuda_size_t size = count; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, ezt_kind); ret = libcudaMemcpyToArray(dst, wOffset, hOffset, src, count, kind); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, ezt_kind); return ret; } cudaError_t cudaMemcpyFromArray(void *dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, enum cudaMemcpyKind kind) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; enum ezt_cudaMemcpyKind ezt_kind = CUDA_MEMCPY_KIND_TO_EZT(kind); ezt_cuda_size_t size = count; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, ezt_kind); ret = libcudaMemcpyFromArray(dst, src, wOffset, hOffset, count, kind); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, ezt_kind); return ret; } cudaError_t cudaMemcpyArrayToArray(cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t count, enum cudaMemcpyKind kind) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; enum ezt_cudaMemcpyKind ezt_kind = CUDA_MEMCPY_KIND_TO_EZT(kind); ezt_cuda_size_t size = count; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, ezt_kind); ret = libcudaMemcpyArrayToArray(dst, wOffsetDst, hOffsetDst, src, wOffsetSrc, hOffsetSrc, count, kind); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, ezt_kind); return ret; } cudaError_t cudaMemcpy2D(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; enum ezt_cudaMemcpyKind ezt_kind = CUDA_MEMCPY_KIND_TO_EZT(kind); ezt_cuda_size_t size = width*height; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, ezt_kind); ret = libcudaMemcpy2D(dst, dpitch, src, spitch, width, height, kind); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, ezt_kind); return ret; } cudaError_t cudaMemcpy2DToArray(cudaArray_t dst, size_t wOffset, size_t hOffset, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; enum ezt_cudaMemcpyKind ezt_kind = CUDA_MEMCPY_KIND_TO_EZT(kind); ezt_cuda_size_t size = width*height; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, ezt_kind); ret = libcudaMemcpy2DToArray(dst, wOffset, hOffset, src, spitch, width, height, kind); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, ezt_kind); return ret; } cudaError_t cudaMemcpy2DFromArray(void *dst, size_t dpitch, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, enum cudaMemcpyKind kind) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; enum ezt_cudaMemcpyKind ezt_kind = CUDA_MEMCPY_KIND_TO_EZT(kind); ezt_cuda_size_t size = width*height; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, ezt_kind); ret = libcudaMemcpy2DFromArray(dst, dpitch, src, wOffset, hOffset, width, height, kind) ; EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, ezt_kind); return ret; } cudaError_t cudaMemcpy2DArrayToArray(cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t width, size_t height, enum cudaMemcpyKind kind) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; enum ezt_cudaMemcpyKind ezt_kind = CUDA_MEMCPY_KIND_TO_EZT(kind); ezt_cuda_size_t size = width*height; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, ezt_kind); ret = libcudaMemcpy2DArrayToArray(dst, wOffsetDst, hOffsetDst, src, wOffsetSrc, hOffsetSrc, width, height, kind); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, ezt_kind); return ret; } cudaError_t cudaMemcpyToSymbol(const void *symbol, const void *src, size_t count, size_t offset , enum cudaMemcpyKind kind) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; enum ezt_cudaMemcpyKind ezt_kind = CUDA_MEMCPY_KIND_TO_EZT(kind); ezt_cuda_size_t size = count; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, ezt_kind); ret = libcudaMemcpyToSymbol(symbol, src, count, offset , kind); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, ezt_kind); return ret; } cudaError_t cudaMemcpyFromSymbol(void *dst, const void *symbol, size_t count, size_t offset , enum cudaMemcpyKind kind) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; enum ezt_cudaMemcpyKind ezt_kind = CUDA_MEMCPY_KIND_TO_EZT(kind); ezt_cuda_size_t size = count; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, ezt_kind); ret = libcudaMemcpyFromSymbol(dst, symbol, count, offset , kind); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, ezt_kind); return ret; } cudaError_t cudaMemcpyAsync(void *dst, const void *src, size_t count, enum cudaMemcpyKind kind, cudaStream_t stream ) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; enum ezt_cudaMemcpyKind ezt_kind = CUDA_MEMCPY_KIND_TO_EZT(kind); ezt_cuda_size_t size = count; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, ezt_kind); ret = libcudaMemcpyAsync(dst, src, count, kind, stream ); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, ezt_kind); return ret; } cudaError_t cudaMemcpyToArrayAsync(cudaArray_t dst, size_t wOffset, size_t hOffset, const void *src, size_t count, enum cudaMemcpyKind kind, cudaStream_t stream ) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; enum ezt_cudaMemcpyKind ezt_kind = CUDA_MEMCPY_KIND_TO_EZT(kind); ezt_cuda_size_t size = count; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, ezt_kind); ret = libcudaMemcpyToArrayAsync(dst, wOffset, hOffset, src, count, kind, stream); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, ezt_kind); return ret; } cudaError_t cudaMemcpyFromArrayAsync(void *dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, enum cudaMemcpyKind kind, cudaStream_t stream ) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; enum ezt_cudaMemcpyKind ezt_kind = CUDA_MEMCPY_KIND_TO_EZT(kind); ezt_cuda_size_t size = count; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, ezt_kind); ret = libcudaMemcpyFromArrayAsync(dst, src, wOffset, hOffset, count, kind, stream); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, ezt_kind); return ret; } cudaError_t cudaMemcpy2DAsync(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind, cudaStream_t stream ) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; enum ezt_cudaMemcpyKind ezt_kind = CUDA_MEMCPY_KIND_TO_EZT(kind); ezt_cuda_size_t size = width * height; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, ezt_kind); ret = libcudaMemcpy2DAsync(dst, dpitch, src, spitch, width, height, kind, stream ); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, ezt_kind); return ret; } cudaError_t cudaMemcpy2DToArrayAsync(cudaArray_t dst, size_t wOffset, size_t hOffset, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind, cudaStream_t stream) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; enum ezt_cudaMemcpyKind ezt_kind = CUDA_MEMCPY_KIND_TO_EZT(kind); ezt_cuda_size_t size = width * height; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, ezt_kind); ret = libcudaMemcpy2DToArrayAsync(dst, wOffset, hOffset, src, spitch, width, height, kind, stream ); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, ezt_kind); return ret; } cudaError_t cudaMemcpy2DFromArrayAsync(void *dst, size_t dpitch, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, enum cudaMemcpyKind kind, cudaStream_t stream ) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; enum ezt_cudaMemcpyKind ezt_kind = CUDA_MEMCPY_KIND_TO_EZT(kind); ezt_cuda_size_t size = width * height; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, ezt_kind); ret = libcudaMemcpy2DFromArrayAsync(dst, dpitch, src, wOffset, hOffset, width, height, kind, stream); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, ezt_kind); return ret; } cudaError_t cudaMemcpyToSymbolAsync(const void *symbol, const void *src, size_t count, size_t offset, enum cudaMemcpyKind kind, cudaStream_t stream ) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; enum ezt_cudaMemcpyKind ezt_kind = CUDA_MEMCPY_KIND_TO_EZT(kind); ezt_cuda_size_t size = count; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, ezt_kind); ret = libcudaMemcpyToSymbolAsync(symbol, src, count, offset, kind, stream ); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, ezt_kind); return ret; } cudaError_t cudaMemcpyFromSymbolAsync(void *dst, const void *symbol, size_t count, size_t offset, enum cudaMemcpyKind kind, cudaStream_t stream ) { FUNCTION_ENTRY; EZT_CUDA_INITIALIZE; cudaError_t ret; enum ezt_cudaMemcpyKind ezt_kind = CUDA_MEMCPY_KIND_TO_EZT(kind); ezt_cuda_size_t size = count; int deviceId; ret = cudaGetDevice(&deviceId); assert(ret == cudaSuccess); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_START, deviceId, size, ezt_kind); ret = libcudaMemcpyFromSymbolAsync(dst, symbol, count, offset, kind, stream); EZTRACE_EVENT_PACKED_3(EZTRACE_CUDA_CUMEMCPY_STOP, deviceId, size, ezt_kind); return ret; } /**** functions to implement ****/ cudaError_t cudaMemset(void *devPtr, int value, size_t count) { return libcudaMemset(devPtr, value, count); } cudaError_t cudaMemset2D(void *devPtr, size_t pitch, int value, size_t width, size_t height) { return libcudaMemset2D(devPtr, pitch, value, width, height); } cudaError_t cudaMemset3D(struct cudaPitchedPtr pitchedDevPtr, int value, struct cudaExtent extent) { return libcudaMemset3D(pitchedDevPtr, value, extent); } cudaError_t cudaMemsetAsync(void *devPtr, int value, size_t count, cudaStream_t stream ) { return libcudaMemsetAsync(devPtr, value, count, stream ); } cudaError_t cudaMemset2DAsync(void *devPtr, size_t pitch, int value, size_t width, size_t height, cudaStream_t stream ) { return libcudaMemset2DAsync(devPtr, pitch, value, width, height, stream ); } cudaError_t cudaMemset3DAsync(struct cudaPitchedPtr pitchedDevPtr, int value, struct cudaExtent extent, cudaStream_t stream ) { return libcudaMemset3DAsync(pitchedDevPtr, value, extent, stream ); } cudaError_t cudaMemcpy3DPeer(const struct cudaMemcpy3DPeerParms *p) { fprintf(stderr, "[EZTRACE] Warning: the instrumentation of function %s is not implemented!\n", __FUNCTION__); return libcudaMemcpy3DPeer(p); } cudaError_t cudaMemcpy3DPeerAsync(const struct cudaMemcpy3DPeerParms *p, cudaStream_t stream ) { fprintf(stderr, "[EZTRACE] Warning: the instrumentation of function %s is not implemented!\n", __FUNCTION__); return libcudaMemcpy3DPeerAsync(p, stream); } cudaError_t cudaMemcpyPeer(void *dst, int dstDevice, const void *src, int srcDevice, size_t count) { fprintf(stderr, "[EZTRACE] Warning: the instrumentation of function %s is not implemented!\n", __FUNCTION__); return libcudaMemcpyPeer(dst, dstDevice, src, srcDevice, count); } cudaError_t cudaMemcpyPeerAsync(void *dst, int dstDevice, const void *src, int srcDevice, size_t count, cudaStream_t stream ) { fprintf(stderr, "[EZTRACE] Warning: the instrumentation of function %s is not implemented!\n", __FUNCTION__); return libcudaMemcpyPeerAsync(dst, dstDevice, src, srcDevice, count, stream ); } } cudaError_t cudaMallocHost(void **ptr, size_t size) { // todo: record something or remove this function return libcudaMallocHost(ptr, size); } cudaError_t cudaFreeHost(void *ptr) { return libcudaFreeHost(ptr); } #if 0 cudaError_t cudaHostAlloc(void **pHost, size_t size, unsigned int flags); cudaError_t cudaHostRegister(void *ptr, size_t size, unsigned int flags); cudaError_t cudaHostUnregister(void *ptr); #endif eztrace-1.1-7/src/modules/cuda/PaxHeaders.7332/cuda.mk0000644000000000000000000000013213012560437017250 xustar0030 mtime=1479205151.280727163 30 atime=1508162219.769817765 30 ctime=1508162368.437968825 eztrace-1.1-7/src/modules/cuda/cuda.mk0000644000175000017500000000044713012560437020444 0ustar00trahaytrahay00000000000000.cu.o: $(NVCC) -o $@ -c $< $(AM_CPPFLAGS) $(AM_CFLAGS) $(TLCFLAGS) $(CUPTI_CFLAGS) .cu.lo: python $(top_srcdir)/src/modules/cuda/cudalt.py $@ $(NVCC) --compiler-options=\" $(CFLAGS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(AM_CFLAGS) $(CPPFLAGS) \" $(TLCFLAGS) -c $< $(CUPTI_CFLAGS) eztrace-1.1-7/src/modules/cuda/PaxHeaders.7332/ezt_cuda.h0000644000000000000000000000013212544237152017756 xustar0030 mtime=1435582058.563899951 30 atime=1507797543.086864873 30 ctime=1508162368.457970573 eztrace-1.1-7/src/modules/cuda/ezt_cuda.h0000644000175000017500000003450612544237152021155 0ustar00trahaytrahay00000000000000#ifndef EZT_CUDA_H #define EZT_CUDA_H extern "C" { #include #include "cuda_ev_codes.h" #include "eztrace.h" /**** CUDA runtime interface ****/ extern cudaError_t (*libcudaDeviceSynchronize)(); extern cudaError_t (*libcudaThreadSynchronize)(); // note: deprecated /* Kernel management */ extern cudaError_t (*libcudaLaunch)(const void *func); extern cudaError_t (*libcudaConfigureCall) ( dim3 gridDim, dim3 blockDim, size_t sharedMem, cudaStream_t stream ); /* Memory management */ extern cudaError_t (*libcudaMalloc)(void **devPtr, size_t size); extern cudaError_t (*libcudaMallocHost)(void **ptr, size_t size); extern cudaError_t (*libcudaMallocPitch)(void **devPtr, size_t *pitch, size_t width, size_t height); extern cudaError_t (*libcudaMallocArray)(struct cudaArray **array, const struct cudaChannelFormatDesc *desc, size_t width, size_t height, unsigned int flags); extern cudaError_t (*libcudaMalloc3D)(struct cudaPitchedPtr* pitchedDevPtr, struct cudaExtent extent); extern cudaError_t (*libcudaMalloc3DArray)(cudaArray_t *array, const struct cudaChannelFormatDesc* desc, struct cudaExtent extent, unsigned int flags); extern cudaError_t (*libcudaMallocMipmappedArray)(cudaMipmappedArray_t *mipmappedArray, const struct cudaChannelFormatDesc* desc, struct cudaExtent extent, unsigned int numLevels, unsigned int flags); extern cudaError_t (*libcudaFree)(void *devPtr); extern cudaError_t (*libcudaFreeHost)(void *ptr); extern cudaError_t (*libcudaFreeArray)(cudaArray_t array); extern cudaError_t (*libcudaFreeMipmappedArray)(cudaMipmappedArray_t mipmappedArray); extern cudaError_t (*libcudaHostAlloc)(void **pHost, size_t size, unsigned int flags); extern cudaError_t (*libcudaHostRegister)(void *ptr, size_t size, unsigned int flags); extern cudaError_t (*libcudaHostUnregister)(void *ptr); /* Memory Transfers */ extern cudaError_t (*libcudaMemcpy3D)(const struct cudaMemcpy3DParms *p); extern cudaError_t (*libcudaMemcpy3DPeer)(const struct cudaMemcpy3DPeerParms *p); extern cudaError_t (*libcudaMemcpy3DAsync)(const struct cudaMemcpy3DParms *p, cudaStream_t stream ); extern cudaError_t (*libcudaMemcpy3DPeerAsync)(const struct cudaMemcpy3DPeerParms *p, cudaStream_t stream ); extern cudaError_t (*libcudaMemcpy)(void *dst, const void *src, size_t count, enum cudaMemcpyKind kind); extern cudaError_t (*libcudaMemcpyPeer)(void *dst, int dstDevice, const void *src, int srcDevice, size_t count); extern cudaError_t (*libcudaMemcpyToArray)(cudaArray_t dst, size_t wOffset, size_t hOffset, const void *src, size_t count, enum cudaMemcpyKind kind); extern cudaError_t (*libcudaMemcpyFromArray)(void *dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, enum cudaMemcpyKind kind); extern cudaError_t (*libcudaMemcpyArrayToArray)(cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t count, enum cudaMemcpyKind kind); extern cudaError_t (*libcudaMemcpy2D)(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind); extern cudaError_t (*libcudaMemcpy2DToArray)(cudaArray_t dst, size_t wOffset, size_t hOffset, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind); extern cudaError_t (*libcudaMemcpy2DFromArray)(void *dst, size_t dpitch, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, enum cudaMemcpyKind kind); extern cudaError_t (*libcudaMemcpy2DArrayToArray)(cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t width, size_t height, enum cudaMemcpyKind kind); extern cudaError_t (*libcudaMemcpyToSymbol)(const void *symbol, const void *src, size_t count, size_t offset , enum cudaMemcpyKind kind); extern cudaError_t (*libcudaMemcpyFromSymbol)(void *dst, const void *symbol, size_t count, size_t offset , enum cudaMemcpyKind kind); extern cudaError_t (*libcudaMemcpyAsync)(void *dst, const void *src, size_t count, enum cudaMemcpyKind kind, cudaStream_t stream ); extern cudaError_t (*libcudaMemcpyPeerAsync)(void *dst, int dstDevice, const void *src, int srcDevice, size_t count, cudaStream_t stream ); extern cudaError_t (*libcudaMemcpyToArrayAsync)(cudaArray_t dst, size_t wOffset, size_t hOffset, const void *src, size_t count, enum cudaMemcpyKind kind, cudaStream_t stream ); extern cudaError_t (*libcudaMemcpyFromArrayAsync)(void *dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, enum cudaMemcpyKind kind, cudaStream_t stream ); extern cudaError_t (*libcudaMemcpy2DAsync)(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind, cudaStream_t stream ); extern cudaError_t (*libcudaMemcpy2DToArrayAsync)(cudaArray_t dst, size_t wOffset, size_t hOffset, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind, cudaStream_t stream ); extern cudaError_t (*libcudaMemcpy2DFromArrayAsync)(void *dst, size_t dpitch, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, enum cudaMemcpyKind kind, cudaStream_t stream ); extern cudaError_t (*libcudaMemcpyToSymbolAsync)(const void *symbol, const void *src, size_t count, size_t offset, enum cudaMemcpyKind kind, cudaStream_t stream ); extern cudaError_t (*libcudaMemcpyFromSymbolAsync)(void *dst, const void *symbol, size_t count, size_t offset, enum cudaMemcpyKind kind, cudaStream_t stream ); extern cudaError_t (*libcudaMemset)(void *devPtr, int value, size_t count); extern cudaError_t (*libcudaMemset2D)(void *devPtr, size_t pitch, int value, size_t width, size_t height); extern cudaError_t (*libcudaMemset3D)(struct cudaPitchedPtr pitchedDevPtr, int value, struct cudaExtent extent); extern cudaError_t (*libcudaMemsetAsync)(void *devPtr, int value, size_t count, cudaStream_t stream ); extern cudaError_t (*libcudaMemset2DAsync)(void *devPtr, size_t pitch, int value, size_t width, size_t height, cudaStream_t stream ); extern cudaError_t (*libcudaMemset3DAsync)(struct cudaPitchedPtr pitchedDevPtr, int value, struct cudaExtent extent, cudaStream_t stream ); /**** CUDA driver interface ****/ #if 0 extern CUresult (*libcuMemcpyAtoA_v2)(CUarray dstArray, size_t dstOffset, CUarray srcArray, size_t srcOffset, size_t ByteCount); extern CUresult (*libcuMemcpyAtoD_v2)(CUdeviceptr dstDevice, CUarray srcArray, size_t srcOffset, size_t ByteCount); extern CUresult (*libcuMemcpyAtoH_v2)(void *dstHost, CUarray srcArray, size_t srcOffset, size_t ByteCount); extern CUresult (*libcuMemcpyDtoA_v2)(CUarray dstArray, size_t dstOffset, CUdeviceptr srcDevice, size_t ByteCount); extern CUresult (*libcuMemcpyDtoD_v2)(CUdeviceptr dstDevice, CUdeviceptr srcDevice, size_t ByteCount); extern CUresult (*libcuMemcpyDtoH_v2)(void *dstHost, CUdeviceptr srcDevice, size_t ByteCount); extern CUresult (*libcuMemcpyHtoA_v2)(CUarray dstArray, size_t dstOffset, const void* srcHost, size_t ByteCount); extern CUresult (*libcuMemcpyHtoD_v2)(CUdeviceptr dstDevice, const void *srcHost, size_t ByteCount); extern CUresult (*libcuMemFree_v2)(CUdeviceptr dptr); extern CUresult (*libcuMemAlloc_v2)(CUdeviceptr *dptr, size_t bytesize); extern CUresult (*libcuMemcpy) (CUdeviceptr dst, CUdeviceptr src, size_t ByteCount); extern CUresult (*libcuLaunchKernel)(CUfunction f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, CUstream hStream, void ** kernelParams, void ** extra); #endif /* Kernel management */ extern CUresult (*libcuLaunchKernel)(CUfunction f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, CUstream hStream, void **kernelParams, void **extra); extern CUresult (*libcuLaunch)(CUfunction f); extern CUresult (*libcuLaunchGrid)(CUfunction f, int grid_width, int grid_height); extern CUresult (*libcuLaunchGridAsync)(CUfunction f, int grid_width, int grid_height, CUstream hStream); /* Memory Management */ extern CUresult (*libcuMemGetInfo_v2)(size_t *free, size_t *total); extern CUresult (*libcuMemAlloc_v2)(CUdeviceptr *dptr, size_t bytesize); extern CUresult (*libcuMemAllocPitch_v2)(CUdeviceptr *dptr, size_t *pPitch, size_t WidthInBytes, size_t Height, unsigned int ElementSizeBytes); extern CUresult (*libcuMemFree_v2)(CUdeviceptr dptr); extern CUresult (*libcuMemAllocHost_v2)(void **pp, size_t bytesize); extern CUresult (*libcuMemFreeHost)(void *p); extern CUresult (*libcuMemHostAlloc)(void **pp, size_t bytesize, unsigned int Flags); extern CUresult (*libcuMemHostRegister)(void *p, size_t bytesize, unsigned int Flags); extern CUresult (*libcuMemHostUnregister)(void *p); /* Memory Transfers */ extern CUresult (*libcuMemcpy)(CUdeviceptr dst, CUdeviceptr src, size_t ByteCount); extern CUresult (*libcuMemcpyPeer)(CUdeviceptr dstDevice, CUcontext dstContext, CUdeviceptr srcDevice, CUcontext srcContext, size_t ByteCount); extern CUresult (*libcuMemcpyHtoD_v2)(CUdeviceptr dstDevice, const void *srcHost, size_t ByteCount); extern CUresult (*libcuMemcpyDtoH_v2)(void *dstHost, CUdeviceptr srcDevice, size_t ByteCount); extern CUresult (*libcuMemcpyDtoD_v2)(CUdeviceptr dstDevice, CUdeviceptr srcDevice, size_t ByteCount); extern CUresult (*libcuMemcpyDtoA_v2)(CUarray dstArray, size_t dstOffset, CUdeviceptr srcDevice, size_t ByteCount); extern CUresult (*libcuMemcpyAtoD_v2)(CUdeviceptr dstDevice, CUarray srcArray, size_t srcOffset, size_t ByteCount); extern CUresult (*libcuMemcpyHtoA_v2)(CUarray dstArray, size_t dstOffset, const void *srcHost, size_t ByteCount); extern CUresult (*libcuMemcpyAtoH_v2)(void *dstHost, CUarray srcArray, size_t srcOffset, size_t ByteCount); extern CUresult (*libcuMemcpyAtoA_v2)(CUarray dstArray, size_t dstOffset, CUarray srcArray, size_t srcOffset, size_t ByteCount); extern CUresult (*libcuMemcpy2D_v2)(const CUDA_MEMCPY2D *pCopy); extern CUresult (*libcuMemcpy2DUnaligned_v2)(const CUDA_MEMCPY2D *pCopy); extern CUresult (*libcuMemcpy3D_v2)(const CUDA_MEMCPY3D *pCopy); extern CUresult (*libcuMemcpy3DPeer)(const CUDA_MEMCPY3D_PEER *pCopy); extern CUresult (*libcuMemcpyAsync)(CUdeviceptr dst, CUdeviceptr src, size_t ByteCount, CUstream hStream); extern CUresult (*libcuMemcpyPeerAsync)(CUdeviceptr dstDevice, CUcontext dstContext, CUdeviceptr srcDevice, CUcontext srcContext, size_t ByteCount, CUstream hStream); extern CUresult (*libcuMemcpyHtoDAsync_v2)(CUdeviceptr dstDevice, const void *srcHost, size_t ByteCount, CUstream hStream); extern CUresult (*libcuMemcpyDtoHAsync_v2)(void *dstHost, CUdeviceptr srcDevice, size_t ByteCount, CUstream hStream); extern CUresult (*libcuMemcpyDtoDAsync_v2)(CUdeviceptr dstDevice, CUdeviceptr srcDevice, size_t ByteCount, CUstream hStream); extern CUresult (*libcuMemcpyHtoAAsync_v2)(CUarray dstArray, size_t dstOffset, const void *srcHost, size_t ByteCount, CUstream hStream); extern CUresult (*libcuMemcpyAtoHAsync_v2)(void *dstHost, CUarray srcArray, size_t srcOffset, size_t ByteCount, CUstream hStream); extern CUresult (*libcuMemcpy2DAsync_v2)(const CUDA_MEMCPY2D *pCopy, CUstream hStream); extern CUresult (*libcuMemcpy3DAsync_v2)(const CUDA_MEMCPY3D *pCopy, CUstream hStream); extern CUresult (*libcuMemcpy3DPeerAsync)(const CUDA_MEMCPY3D_PEER *pCopy, CUstream hStream); extern CUresult (*libcuMemsetD8_v2)(CUdeviceptr dstDevice, unsigned char uc, size_t N); extern CUresult (*libcuMemsetD16_v2)(CUdeviceptr dstDevice, unsigned short us, size_t N); extern CUresult (*libcuMemsetD32_v2)(CUdeviceptr dstDevice, unsigned int ui, size_t N); extern CUresult (*libcuMemsetD2D8_v2)(CUdeviceptr dstDevice, size_t dstPitch, unsigned char uc, size_t Width, size_t Height); extern CUresult (*libcuMemsetD2D16_v2)(CUdeviceptr dstDevice, size_t dstPitch, unsigned short us, size_t Width, size_t Height); extern CUresult (*libcuMemsetD2D32_v2)(CUdeviceptr dstDevice, size_t dstPitch, unsigned int ui, size_t Width, size_t Height); extern CUresult (*libcuMemsetD8Async)(CUdeviceptr dstDevice, unsigned char uc, size_t N, CUstream hStream); extern CUresult (*libcuMemsetD16Async)(CUdeviceptr dstDevice, unsigned short us, size_t N, CUstream hStream); extern CUresult (*libcuMemsetD32Async)(CUdeviceptr dstDevice, unsigned int ui, size_t N, CUstream hStream); extern CUresult (*libcuMemsetD2D8Async)(CUdeviceptr dstDevice, size_t dstPitch, unsigned char uc, size_t Width, size_t Height, CUstream hStream); extern CUresult (*libcuMemsetD2D16Async)(CUdeviceptr dstDevice, size_t dstPitch, unsigned short us, size_t Width, size_t Height, CUstream hStream); extern CUresult (*libcuMemsetD2D32Async)(CUdeviceptr dstDevice, size_t dstPitch, unsigned int ui, size_t Width, size_t Height, CUstream hStream); #if 0 /* is it useful ? */ extern CUresult (*libcuArrayCreate)(CUarray *pHandle, const CUDA_ARRAY_DESCRIPTOR *pAllocateArray); extern CUresult (*libcuArrayGetDescriptor)(CUDA_ARRAY_DESCRIPTOR *pArrayDescriptor, CUarray hArray); extern CUresult (*libcuArrayDestroy)(CUarray hArray); extern CUresult (*libcuArray3DCreate)(CUarray *pHandle, const CUDA_ARRAY3D_DESCRIPTOR *pAllocateArray); extern CUresult (*libcuArray3DGetDescriptor)(CUDA_ARRAY3D_DESCRIPTOR *pArrayDescriptor, CUarray hArray); extern CUresult (*libcuMipmappedArrayCreate)(CUmipmappedArray *pHandle, const CUDA_ARRAY3D_DESCRIPTOR *pMipmappedArrayDesc, unsigned int numMipmapLevels); extern CUresult (*libcuMipmappedArrayGetLevel)(CUarray *pLevelArray, CUmipmappedArray hMipmappedArray, unsigned int level); extern CUresult (*libcuMipmappedArrayDestroy)(CUmipmappedArray hMipmappedArray); #endif //extern CUresult (*libcuCtxSynchronize)(void); //extern CUresult (*libcuDeviceTotalMem)(unsigned int *bytes, CUdevice dev); } #endif /* EZT_CUDA_H */ eztrace-1.1-7/src/modules/cuda/PaxHeaders.7332/cudalt.py0000644000000000000000000000013213012560437017631 xustar0030 mtime=1479205151.280727163 30 atime=1507797543.086864873 30 ctime=1508162368.437968825 eztrace-1.1-7/src/modules/cuda/cudalt.py0000755000175000017500000000364013012560437021026 0ustar00trahaytrahay00000000000000#!/usr/bin/python # libtoolish hack: compile a .cu file like libtool does import sys import os lo_filepath = sys.argv[1] o_filepath = lo_filepath.replace(".lo", ".o") try: i = o_filepath.rindex("/") lo_dir = o_filepath[0:i+1] o_filename = o_filepath[i+1:] except ValueError: lo_dir = "" o_filename = o_filepath local_pic_dir = ".libs/" local_npic_dir = "" pic_dir = lo_dir + local_pic_dir npic_dir = lo_dir + local_npic_dir pic_filepath = pic_dir + o_filename npic_filepath = npic_dir + o_filename local_pic_filepath = local_pic_dir + o_filename local_npic_filepath = local_npic_dir + o_filename # Make lib dir try: os.mkdir(pic_dir) except OSError: pass # generate the command to compile the .cu for shared library args = sys.argv[2:] args.extend(["-Xcompiler","-fPIC"]) # position indep code args.append("-o") args.append(pic_filepath) command = " ".join(args) print command # compile the .cu rv = os.system(command) if rv != 0: sys.exit(1) # generate the command to compile the .cu for static library args = sys.argv[2:] args.append("-o") args.append(npic_filepath) command = " ".join(args) print command # compile the .cu rv = os.system(command) if rv != 0: sys.exit(1) # get libtool version fd = os.popen("../../../libtool --version") libtool_version = fd.readline() # this loop supresses the broken pipe errors # you get by not reading all the data for dog in fd.readlines(): noop = 1; fd.close() # generate the .lo file f = open(lo_filepath, "w") f.write("# " + lo_filepath + " - a libtool object file\n") f.write("# Generated by " + libtool_version + "\n") f.write("#\n") f.write("# Please DO NOT delete this file!\n") f.write("# It is necessary for linking the library.\n\n") f.write("# Name of the PIC object.\n") f.write("pic_object='" + local_pic_filepath + "'\n\n") f.write("# Name of the non-PIC object.\n") f.write("non_pic_object='" + local_npic_filepath + "'\n") f.close() sys.exit(0) eztrace-1.1-7/src/modules/cuda/PaxHeaders.7332/Makefile.am0000644000000000000000000000013213012560437020037 xustar0030 mtime=1479205151.280727163 30 atime=1508162219.765817471 30 ctime=1508162368.429968126 eztrace-1.1-7/src/modules/cuda/Makefile.am0000644000175000017500000000372113012560437021231 0ustar00trahaytrahay00000000000000# Copyright © CNRS, INRIA, Université Bordeaux 1 # See COPYING in top-level directory. if USE_CUDA TLCFLAGS=$(TL_CPPFLAGS) TLLDFLAGS=$(TL_LDFLAGS) TLLIBADD=$(TL_LIB) GTGCFLAGS=$(GTG_CPPFLAGS) GTGLDFLAGS=$(GTG_LDFLAGS) GTGDEPENDENCIES = $(GTG_DEPENDENCIES) GTGLIBADD = $(GTG_LIB) LINK = $(LIBTOOL) --mode=link $(CC) -o $@ $(CUDA_LDFLAGS) $(CUDA_LIBS) lib_LTLIBRARIES = libeztrace-convert-cuda.la \ libeztrace-cuda.la \ libeztrace-autostart-cuda.la # todo: do not hard-code these dir names AM_CFLAGS = -W -Wall -Wextra -I$(srcdir)/../../core/ -I$(top_builddir)/src/core \ -I$(top_srcdir)/src/pptrace $(CUPTI_CFLAGS) NVCCFLAGS += $(TLCFLAGS) -I$(srcdir)/../../core/ $(CUPTI_CFLAGS) NVCC_LDFLAGS = $(CUPTI_LDFLAGS) $(CUPTI_LIBS) include cuda.mk libeztrace_convert_cuda_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(GTGCFLAGS) libeztrace_convert_cuda_la_LIBADD = $(GTGLIBADD) $(TLLIBADD) libeztrace_convert_cuda_la_LDFLAGS = $(GTGLDFLAGS) $(TLLDFLAGS) libeztrace_convert_cuda_la_DEPENDENCIES = $(GTGDEPENDENCIES) libeztrace_convert_cuda_la_SOURCES = eztrace_convert_cuda.c libeztrace_cuda_la_SOURCES = cuda.cu cuda_runtime.cu cuda_driver.cu ezt_cuda.h libeztrace_cuda_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) libeztrace_cuda_la_LIBADD = $(CUDA_LIBS) -lcupti $(TLLIBADD) libeztrace_cuda_la_LDFLAGS = --no-undefined $(TLLDFLAGS) \ $(CUDA_LDFLAGS) $(NVCC_LDFLAGS) -lcupti libeztrace_autostart_cuda_la_SOURCES = cuda.cu cuda_runtime.cu cuda_driver.cu \ ezt_cuda.h libeztrace_autostart_cuda_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) libeztrace_autostart_cuda_la_LIBADD = $(CUDA_LIBS) -lcupti $(TLLIBADD) libeztrace_autostart_cuda_la_LDFLAGS = --no-undefined $(TLLDFLAGS) \ $(CUDA_LDFLAGS) $(NVCC_LDFLAGS) -lcupti libeztrace_autostart_cuda_la_CFLAGS = $(AM_CFLAGS) -W -Wall -Wextra -DEZTRACE_AUTOSTART noinst_HEADERS = cuda_ev_codes.h \ cudalt.py endif #USE_CUDA eztrace-1.1-7/src/modules/cuda/PaxHeaders.7332/cuda_ev_codes.h0000644000000000000000000000013212544237152020743 xustar0030 mtime=1435582058.563899951 30 atime=1507797543.086864873 30 ctime=1508162368.433968476 eztrace-1.1-7/src/modules/cuda/cuda_ev_codes.h0000644000175000017500000001303612544237152022135 0ustar00trahaytrahay00000000000000#ifndef __CUDA_EV_CODES_H__ #define __CUDA_EV_CODES_H__ #include #include "ev_codes.h" #define EZTRACE_CUDA_EVENTS_ID 0x07 #define EZTRACE_CUDA_PREFIX (EZTRACE_CUDA_EVENTS_ID << NB_BITS_EVENTS) #define EZTRACE_CUDA_CUMEMALLOC_START (EZTRACE_CUDA_PREFIX | 0X0110) #define EZTRACE_CUDA_CUMEMALLOC_STOP (EZTRACE_CUDA_PREFIX | 0X0111) #define EZTRACE_CUDA_CUDAFREE_START (EZTRACE_CUDA_PREFIX | 0X0112) #define EZTRACE_CUDA_CUDAFREE_STOP (EZTRACE_CUDA_PREFIX | 0X0113) #define EZTRACE_CUDA_CULAUNCHKERNEL_START (EZTRACE_CUDA_PREFIX | 0X0120) #define EZTRACE_CUDA_CULAUNCHKERNEL_STOP (EZTRACE_CUDA_PREFIX | 0X0121) #define EZTRACE_CUDA_CUDATHREADSYNCHRONIZE_START (EZTRACE_CUDA_PREFIX | 0X0130) #define EZTRACE_CUDA_CUDATHREADSYNCHRONIZE_STOP (EZTRACE_CUDA_PREFIX | 0X0131) #define EZTRACE_CUDA_CUINIT (EZTRACE_CUDA_PREFIX | 0X0140) #define EZTRACE_CUDA_SETNBDEVICES (EZTRACE_CUDA_PREFIX | 0X0141) #define EZTRACE_CUDA_CUMEMCPY_START (EZTRACE_CUDA_PREFIX | 0X0150) #define EZTRACE_CUDA_CUMEMCPY_STOP (EZTRACE_CUDA_PREFIX | 0X0151) #define EZTRACE_CUDA_CUDADEVICESYNCHRONIZE_START (EZTRACE_CUDA_PREFIX | 0X0160) #define EZTRACE_CUDA_CUDADEVICESYNCHRONIZE_STOP (EZTRACE_CUDA_PREFIX | 0X0161) #define EZTRACE_CUDA_GPU_KERNEL_TIMESTAMPS (EZTRACE_CUDA_PREFIX | 0X0210) #define EZTRACE_CUDA_GPU_MEMCPY_TIMESTAMPS (EZTRACE_CUDA_PREFIX | 0X0211) #define EZTRACE_CUDA_REGISTER_KERNEL (EZTRACE_CUDA_PREFIX | 0X1001) #define EZTRACE_CUDA_KERNEL_NAME (EZTRACE_CUDA_PREFIX | 0X1002) typedef uint32_t kernel_id_t; typedef uint64_t ezt_cuda_size_t; enum ezt_cudaMemcpyKind { CUDA_MEMCPY_KIND_HTOD = 1, CUDA_MEMCPY_KIND_DTOH = 2, CUDA_MEMCPY_KIND_HTOA = 3, CUDA_MEMCPY_KIND_ATOH = 4, CUDA_MEMCPY_KIND_ATOA = 5, CUDA_MEMCPY_KIND_ATOD = 6, CUDA_MEMCPY_KIND_DTOA = 7, CUDA_MEMCPY_KIND_DTOD = 8, CUDA_MEMCPY_KIND_HTOH = 9, CUDA_MEMCPY_KIND_UNKNOWN = -1 }; #define memoryTypesToCpyKind(srcType, destType) \ (((srcType)== CU_MEMORYTYPE_HOST && (destType)== CU_MEMORYTYPE_HOST)? CUDA_MEMCPY_KIND_HTOH : \ ((srcType)== CU_MEMORYTYPE_HOST && (destType)== CU_MEMORYTYPE_DEVICE)? CUDA_MEMCPY_KIND_HTOD : \ ((srcType)== CU_MEMORYTYPE_HOST && (destType)== CU_MEMORYTYPE_ARRAY)? CUDA_MEMCPY_KIND_HTOA : \ ((srcType)== CU_MEMORYTYPE_DEVICE && (destType)== CU_MEMORYTYPE_HOST)? CUDA_MEMCPY_KIND_DTOH : \ ((srcType)== CU_MEMORYTYPE_DEVICE && (destType)== CU_MEMORYTYPE_DEVICE)? CUDA_MEMCPY_KIND_DTOD : \ ((srcType)== CU_MEMORYTYPE_DEVICE && (destType)== CU_MEMORYTYPE_ARRAY)? CUDA_MEMCPY_KIND_DTOA : \ ((srcType)== CU_MEMORYTYPE_ARRAY && (destType)== CU_MEMORYTYPE_HOST)? CUDA_MEMCPY_KIND_ATOH : \ ((srcType)== CU_MEMORYTYPE_ARRAY && (destType)== CU_MEMORYTYPE_DEVICE)? CUDA_MEMCPY_KIND_ATOD : \ ((srcType)== CU_MEMORYTYPE_ARRAY && (destType)== CU_MEMORYTYPE_ARRAY)? CUDA_MEMCPY_KIND_ATOA : \ CUDA_MEMCPY_KIND_UNKNOWN) #define CUDA_MEMCPY_KIND_TO_EZT(kind) \ ((kind)==cudaMemcpyHostToHost?CUDA_MEMCPY_KIND_HTOH: \ ((kind)==cudaMemcpyHostToDevice?CUDA_MEMCPY_KIND_HTOD: \ ((kind)==cudaMemcpyDeviceToDevice?CUDA_MEMCPY_KIND_DTOD: \ ((kind)==cudaMemcpyDeviceToHost?CUDA_MEMCPY_KIND_DTOH: \ CUDA_MEMCPY_KIND_UNKNOWN)))) #define CUPTI_ACTIVITY_MEMCPY_KIND_TO_EZT(kind) \ ((kind) == CUPTI_ACTIVITY_MEMCPY_KIND_HTOD ? CUDA_MEMCPY_KIND_HTOD: \ ((kind) == CUPTI_ACTIVITY_MEMCPY_KIND_DTOH ? CUDA_MEMCPY_KIND_DTOH: \ ((kind) == CUPTI_ACTIVITY_MEMCPY_KIND_HTOA ? CUDA_MEMCPY_KIND_HTOA: \ ((kind) == CUPTI_ACTIVITY_MEMCPY_KIND_ATOH ? CUDA_MEMCPY_KIND_ATOH: \ ((kind) == CUPTI_ACTIVITY_MEMCPY_KIND_ATOA ? CUDA_MEMCPY_KIND_ATOA: \ ((kind) == CUPTI_ACTIVITY_MEMCPY_KIND_ATOD ? CUDA_MEMCPY_KIND_ATOD: \ ((kind) == CUPTI_ACTIVITY_MEMCPY_KIND_DTOA ? CUDA_MEMCPY_KIND_DTOA: \ ((kind) == CUPTI_ACTIVITY_MEMCPY_KIND_DTOD ? CUDA_MEMCPY_KIND_DTOD: \ ((kind) == CUPTI_ACTIVITY_MEMCPY_KIND_HTOH ? CUDA_MEMCPY_KIND_HTOH: \ CUDA_MEMCPY_KIND_UNKNOWN))))))))) /* return true if the transfer starts from the CPU */ #define IS_FROM_CPU(kind) \ (((kind) == CUDA_MEMCPY_KIND_HTOD) || \ ((kind) == CUDA_MEMCPY_KIND_HTOA) || \ ((kind) == CUDA_MEMCPY_KIND_HTOH)) /* return true if the transfer starts from the GPU */ #define IS_FROM_GPU(kind) \ (((kind) == CUDA_MEMCPY_KIND_DTOH) || \ ((kind) == CUDA_MEMCPY_KIND_ATOH) || \ ((kind) == CUDA_MEMCPY_KIND_ATOA) || \ ((kind) == CUDA_MEMCPY_KIND_ATOD) || \ ((kind) == CUDA_MEMCPY_KIND_DTOA) || \ ((kind) == CUDA_MEMCPY_KIND_DTOD)) /* return true if the transfer ends to the CPU */ #define IS_TO_CPU(kind) \ (((kind) == CUDA_MEMCPY_KIND_DTOH) || \ ((kind) == CUDA_MEMCPY_KIND_ATOH) || \ ((kind) == CUDA_MEMCPY_KIND_HTOH)) /* return true if the transfer ends to the GPU */ #define IS_TO_GPU(kind) \ (((kind) == CUDA_MEMCPY_KIND_HTOD) || \ ((kind) == CUDA_MEMCPY_KIND_HTOA) || \ ((kind) == CUDA_MEMCPY_KIND_ATOD) || \ ((kind) == CUDA_MEMCPY_KIND_ATOA) || \ ((kind) == CUDA_MEMCPY_KIND_DTOA) || \ ((kind) == CUDA_MEMCPY_KIND_DTOD)) #define MEMCPY_TYPE_STR(kind) \ ((IS_FROM_CPU(kind) && IS_TO_CPU(kind))? "HToH_memcpy": \ (IS_FROM_CPU(kind) && IS_TO_GPU(kind))? "HToD_memcpy": \ (IS_FROM_GPU(kind) && IS_TO_CPU(kind))? "DToH_memcpy": \ (IS_FROM_GPU(kind) && IS_TO_GPU(kind))? "DToD_memcpy": "Unknown") extern int __ezt_cuda_initialized; void __ezt_cuda_initialize(); #define EZT_CUDA_INITIALIZE do { if(!__ezt_cuda_initialized) { __ezt_cuda_initialize(); } } while(0) #endif eztrace-1.1-7/src/modules/cuda/PaxHeaders.7332/eztrace_convert_cuda.c0000644000000000000000000000013213012560437022340 xustar0030 mtime=1479205151.280727163 30 atime=1507797543.086864873 30 ctime=1508162368.461970922 eztrace-1.1-7/src/modules/cuda/eztrace_convert_cuda.c0000644000175000017500000007176213012560437023544 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © CNRS, INRIA, Université Bordeaux 1 * See COPYING in top-level directory. */ #define _GNU_SOURCE #include #include #include #include "ezt_demangle.h" #include "eztrace_convert.h" #include "cuda_ev_codes.h" #include "eztrace_list.h" static int recording_stats = 0; struct cuda_memcpy_stat_t { unsigned nb_memcpy; ezt_cuda_size_t total_size; /* total size memcpied */ ezt_cuda_size_t min_size; /* minimum size of memcpy */ ezt_cuda_size_t max_size; /* maximum size of memcpy */ }; struct cuda_malloc_stat_t { unsigned nb_malloc; ezt_cuda_size_t total_size; /* total size allocated */ ezt_cuda_size_t peak_mem; /* peak memory consumption */ ezt_cuda_size_t cur_mem; /* current memory consumption */ }; struct cuda_device_info_t { struct ezt_list_token_t token; struct cuda_process_info_t *p_process; uint32_t device_id; char* gpu_id; char* gpu_name; int link_start, link_end; float start_time; int added; /* set to 1 once the container is created in GTG */ struct ezt_list_t pending_kernels; struct ezt_list_t finished_kernels; struct ezt_list_t pending_memcpy; struct ezt_list_t finished_memcpy; struct ezt_list_t pending_malloc; /* buffers that are currently in use (ie. not freed) */ struct ezt_list_t finished_malloc; /* buffers that have been freed */ struct ezt_list_t kernel_stats; struct cuda_memcpy_stat_t memcpy_stats; struct cuda_malloc_stat_t malloc_stats; }; struct cuda_process_info_t { struct process_info_t *p_process; float start_time; struct ezt_list_t kernel_names; struct ezt_list_t device_list; }; struct cuda_kernel_name_t { kernel_id_t id; struct ezt_list_token_t token; char state_id[80]; char state_desc[80]; char name[80]; }; struct cuda_kernel_stat_t { struct cuda_kernel_name_t *p_kernel; struct cuda_device_info_t *p_device; unsigned nb_calls; double min_duration; double max_duration; double kernel_duration; /* total duration of the kernel */ struct ezt_list_token_t token; }; struct cuda_kernel_info_t { /* time in seconds */ float gpu_start_time; float gpu_stop_time; float cpu_start_time; float cpu_stop_time; unsigned kernel_id; struct cuda_kernel_name_t *name; char link_str[80]; /* todo: store the parameters, etc. */ struct ezt_list_token_t token; }; struct cuda_memcpy_info_t { /* time in seconds */ float gpu_start_time; float gpu_stop_time; float cpu_start_time; float cpu_stop_time; unsigned id; char link_str[80]; char* src; char* dest; ezt_cuda_size_t size; enum ezt_cudaMemcpyKind kind; struct ezt_list_token_t token; }; struct cuda_malloc_info_t { float cpu_start_time; /* timestamp when cudaMalloc started */ float cpu_stop_time; /* timestamp when cudaMalloc stoped */ ezt_cuda_size_t size; /* size of the allocated buffer */ app_ptr devPtr; /* address of the buffer */ struct ezt_list_token_t token; }; static struct cuda_process_info_t *__register_process_hook(struct process_info_t *p_process) { struct cuda_process_info_t *p_cuda = (struct cuda_process_info_t*) malloc(sizeof(struct cuda_process_info_t)); p_cuda->p_process = p_process; ezt_hook_list_add(&p_cuda->p_process->hooks, p_cuda, (uint8_t)EZTRACE_CUDA_EVENTS_ID); p_cuda->start_time = 0; ezt_list_new(&p_cuda->kernel_names); ezt_list_new(&p_cuda->device_list); return p_cuda; } #define INIT_CUDA_PROCESS_INFO(p_process, var) \ struct cuda_process_info_t *var = (struct cuda_process_info_t*) \ ezt_hook_list_retrieve_data(&p_process->hooks, (uint8_t)EZTRACE_CUDA_EVENTS_ID); \ if(!(var)) { \ var = __register_process_hook(p_process); \ } #define CUDA_CHANGE() if(!recording_stats) CHANGE() #define TOSTRING(x) #x #define GENERATE_HANDLER(fname) \ void handle_cuda_##fname (int start) \ { \ FUNC_NAME; \ DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); \ if(start) { \ CUDA_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, TOSTRING(cuda_##fname)); \ }else{ \ CUDA_CHANGE() popState(CURRENT, "ST_Thread", thread_id); \ } \ } /* creates the GPU in the output GTG trace */ static void __create_device_container(struct cuda_device_info_t* p_cuda); GENERATE_HANDLER(cudaThreadSynchronize) /* a GPU timestamp is expressed in nanoseconds */ #define GPU_TIMESTAMP_TO_CPU(timestamp) ((timestamp)/1e6) /* find the cuda_kernel_info_t that matches kernel_id * return NULL if not found */ struct cuda_kernel_stat_t* __cuda_find_kernel_stats(struct cuda_device_info_t *p_device, struct cuda_kernel_name_t *p_kernel) { struct ezt_list_token_t *t = NULL; struct cuda_kernel_stat_t *p_stat; ezt_list_foreach(&p_device->kernel_stats, t){ p_stat = (struct cuda_kernel_stat_t *) t->data; if(p_stat->p_kernel == p_kernel) return p_stat; } /* stat not found. Probably because it's the first time this kernel is called */ p_stat = malloc(sizeof(struct cuda_kernel_stat_t)); p_stat->p_kernel = p_kernel; p_stat->p_device = p_device; p_stat->nb_calls = 0; p_stat->min_duration = DBL_MAX; p_stat->max_duration = 0; p_stat->kernel_duration = 0; p_stat->token.data = p_stat; ezt_list_add(&p_device->kernel_stats, &p_stat->token); return p_stat; } /* find the cuda_kernel_info_t that matches kernel_id * return NULL if not found */ struct cuda_kernel_name_t* __cuda_find_kernel_name(struct ezt_list_t*list, kernel_id_t kernel_id) { struct ezt_list_token_t *t = NULL; struct cuda_kernel_name_t *p_name; ezt_list_foreach(list, t){ p_name = (struct cuda_kernel_name_t *) t->data; if(p_name->id == kernel_id) return p_name; } return NULL; } /* create a struct cuda_kernel_info_t for kernel #kernel_id and add it to the list of pending kernels */ struct cuda_kernel_info_t* __cuda_new_kernel(unsigned kernel_id, struct cuda_device_info_t*p_device) { struct cuda_kernel_info_t* p_kernel = malloc(sizeof(struct cuda_kernel_info_t)); p_kernel->kernel_id = kernel_id; p_kernel->gpu_start_time = -1; p_kernel->gpu_stop_time = -1; p_kernel->cpu_start_time = -1; p_kernel->cpu_stop_time = -1; p_kernel->name = NULL; snprintf(p_kernel->link_str, 80, "%s_cuda_%x", p_device->p_process->p_process->container->id, kernel_id); p_kernel->token.data = p_kernel; ezt_list_add(&p_device->pending_kernels, &p_kernel->token); return p_kernel; } /* find the cuda_kernel_info_t that matches kernel_id * return NULL if not found */ struct cuda_kernel_info_t* __cuda_find_kernel(struct ezt_list_t*list, unsigned kernel_id) { struct ezt_list_token_t *t = NULL; struct cuda_kernel_info_t *p_kernel; ezt_list_foreach(list, t){ p_kernel = (struct cuda_kernel_info_t *) t->data; if(p_kernel->kernel_id == kernel_id) return p_kernel; } return NULL; } static struct cuda_device_info_t* __get_device_info(struct cuda_process_info_t *p_cuda, uint32_t device_id) { struct ezt_list_token_t *t = NULL; struct cuda_device_info_t* p_device = NULL; ezt_list_foreach(&p_cuda->device_list, t){ p_device = (struct cuda_device_info_t *) t->data; if(p_device->device_id == device_id) return p_device; } return NULL; } static void __ezt_cuda_init_memcpy_stats(struct cuda_memcpy_stat_t*p_stats) { p_stats->nb_memcpy = 0; p_stats->total_size = 0; p_stats->min_size = 0; p_stats->max_size = 0; } static void __ezt_cuda_init_malloc_stats(struct cuda_malloc_stat_t*p_malloc) { p_malloc->nb_malloc = 0; p_malloc->total_size = 0; p_malloc->peak_mem = 0; p_malloc->cur_mem = 0; } static struct cuda_device_info_t * __new_device(struct cuda_process_info_t* p_process, uint32_t device_id) { struct cuda_device_info_t *p_device = malloc(sizeof(struct cuda_device_info_t)); p_device->p_process = p_process; p_device->start_time = 0; p_device->device_id = device_id; if(p_process->start_time > 0) p_device->start_time = p_process->start_time; asprintf(&p_device->gpu_id, "%s_GPU_%d", p_process->p_process->container->id, device_id); asprintf(&p_device->gpu_name, "%s_GPU_%d", p_process->p_process->container->name, device_id); p_device->added = 0; p_device->link_start = -1; p_device->link_end = -1; /* add the hook in the thread info structure */ ezt_list_new(&p_device->pending_kernels); ezt_list_new(&p_device->finished_kernels); ezt_list_new(&p_device->pending_memcpy); ezt_list_new(&p_device->finished_memcpy); ezt_list_new(&p_device->pending_malloc); ezt_list_new(&p_device->finished_malloc); ezt_list_new(&p_device->kernel_stats); __ezt_cuda_init_memcpy_stats(&p_device->memcpy_stats); __ezt_cuda_init_malloc_stats(&p_device->malloc_stats); p_device->token.data = p_device; ezt_list_add(&p_process->device_list, &p_device->token); return p_device; } /* create a struct cuda_memcpy_info_t and add it to the list of pending memcpy */ struct cuda_memcpy_info_t* __cuda_new_memcpy(enum ezt_cudaMemcpyKind kind, ezt_cuda_size_t size, struct cuda_device_info_t*p_device) { static unsigned memcpy_id = 0; struct cuda_memcpy_info_t* p_memcpy = malloc(sizeof(struct cuda_memcpy_info_t)); p_memcpy->gpu_start_time = -1; p_memcpy->gpu_stop_time = -1; p_memcpy->cpu_start_time = -1; p_memcpy->cpu_stop_time = -1; p_memcpy->id = memcpy_id++; p_memcpy->size = size; p_memcpy->kind = kind; p_memcpy->src = NULL; p_memcpy->dest = NULL; snprintf(p_memcpy->link_str, 80, "%s_memcpy_%x", p_device->p_process->p_process->container->id, p_memcpy->id); p_memcpy->token.data = p_memcpy; ezt_list_add(&p_device->pending_memcpy, &p_memcpy->token); return p_memcpy; } /* find the cuda_memcpy_info_t * return NULL if not found */ struct cuda_memcpy_info_t* __cuda_find_memcpy(struct ezt_list_t*list, enum ezt_cudaMemcpyKind kind, ezt_cuda_size_t size) { struct ezt_list_token_t *t = NULL; struct cuda_memcpy_info_t *p_memcpy; ezt_list_foreach(list, t){ p_memcpy = (struct cuda_memcpy_info_t *) t->data; if((p_memcpy->kind == kind) && (p_memcpy->size == size)) return p_memcpy; } return NULL; } /* create a struct cuda_malloc_info_t for buffer #devPtr_id and add it to the list of pending buffers */ struct cuda_malloc_info_t* __cuda_new_malloc(app_ptr devPtr, struct cuda_device_info_t*p_device) { struct cuda_malloc_info_t* p_malloc = malloc(sizeof(struct cuda_malloc_info_t)); p_malloc->cpu_start_time = -1; p_malloc->cpu_stop_time = -1; p_malloc->token.data = p_malloc; p_malloc->devPtr = devPtr; ezt_list_add(&p_device->pending_malloc, &p_malloc->token); return p_malloc; } /* find the cuda_malloc_info_t that matches devPtr * return NULL if not found */ struct cuda_malloc_info_t* __cuda_find_malloc(struct ezt_list_t*list, app_ptr devPtr) { struct ezt_list_token_t *t = NULL; struct cuda_malloc_info_t *p_malloc; ezt_list_foreach(list, t){ p_malloc = (struct cuda_malloc_info_t *) t->data; if(p_malloc->devPtr == devPtr) return p_malloc; } return NULL; } void handle_cuda_cuLaunchKernel (int start) { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); INIT_CUDA_PROCESS_INFO(p_process, p_cuda); uint32_t device_id; kernel_id_t kernel_id; GET_PARAM_PACKED_2(CUR_EV, device_id, kernel_id); struct cuda_device_info_t* p_device = __get_device_info(p_cuda, device_id); if(start) { struct cuda_kernel_info_t *p_kernel = __cuda_new_kernel(kernel_id, p_device); p_kernel->cpu_start_time = CURRENT; CUDA_CHANGE() { __create_device_container(p_device); pushState(CURRENT, "ST_Thread", thread_id, "cuda_cuLaunchKernel"); if(p_device->start_time) { startLink (CURRENT, "hToD_kernel", CUR_ID, thread_id, p_device->gpu_id, p_kernel->link_str, p_kernel->link_str); } } }else{ struct cuda_kernel_info_t *p_kernel = __cuda_find_kernel(&p_device->pending_kernels, kernel_id); p_kernel->cpu_stop_time = CURRENT; CUDA_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } } static void __ezt_cuda_update_memcpy_stats(struct cuda_device_info_t *p_device, ezt_cuda_size_t size) { p_device->memcpy_stats.nb_memcpy ++; p_device->memcpy_stats.total_size += size; if(size < p_device->memcpy_stats.min_size || p_device->memcpy_stats.nb_memcpy == 1) { p_device->memcpy_stats.min_size = size; } if(size > p_device->memcpy_stats.max_size || p_device->memcpy_stats.nb_memcpy == 1) { p_device->memcpy_stats.max_size = size; } } void handle_cuda_cuMemcpy (int start) { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); INIT_CUDA_PROCESS_INFO(p_process, p_cuda); int device_id; ezt_cuda_size_t size; enum ezt_cudaMemcpyKind kind; GET_PARAM_PACKED_3(CUR_EV, device_id, size, kind); /* TODO: for now the memcpy record is stored in the list of device #0 * in order to support multi-GPU, we should store it in the srcDevice list (since it is where * handle_cuda_gpu_memcpy_timestamps() searches for it) */ struct cuda_device_info_t* p_device = __get_device_info(p_cuda, device_id); /* todo: add an event that displays the size of the data transfer */ if(start) { struct cuda_memcpy_info_t *p_memcpy = __cuda_new_memcpy(kind, size, p_device); p_memcpy->cpu_start_time = CURRENT; __create_device_container(p_device); CUDA_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, TOSTRING(cuda_cuMemcpy)); if(IS_FROM_CPU(p_memcpy->kind)) p_memcpy->src = thread_id; else p_memcpy->src = p_device->gpu_id; if(IS_TO_CPU(p_memcpy->kind)) p_memcpy->dest = thread_id; else p_memcpy->dest = p_device->gpu_id; CUDA_CHANGE() { if(p_device->start_time && (IS_FROM_CPU(p_memcpy->kind))) { startLink (CURRENT, MEMCPY_TYPE_STR(p_memcpy->kind), CUR_ID, p_memcpy->src, p_memcpy->dest, p_memcpy->link_str, p_memcpy->link_str); } } }else{ struct cuda_memcpy_info_t *p_memcpy = __cuda_find_memcpy(&p_device->pending_memcpy, kind, size); p_memcpy->cpu_stop_time = CURRENT; __ezt_cuda_update_memcpy_stats(p_device, size); CUDA_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } } void handle_cuda_cuMemAlloc (int start) { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); INIT_CUDA_PROCESS_INFO(p_process, p_cuda); int device_id; ezt_cuda_size_t size; app_ptr devPtr; if(start) { GET_PARAM_PACKED_2(CUR_EV, device_id, size); } else { GET_PARAM_PACKED_3(CUR_EV, device_id, size, devPtr); } struct cuda_device_info_t* p_device = __get_device_info(p_cuda, device_id); assert(p_device); if(start) { __create_device_container(p_device); /* create a new malloc_info for this buffer. * For now, we don't know the address of the buffer, so let's say NULL */ struct cuda_malloc_info_t * p_malloc = __cuda_new_malloc((app_ptr)NULL, p_device); p_malloc->size = size; CUDA_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "cuda_cuMemAlloc"); CUDA_CHANGE() addVar(CURRENT, "V_GPU_Mem", p_device->gpu_id, size); }else{ /* Get the malloc_info that was created at the entry of cudaMalloc. * We can now assign devPtr. * WARNING: This is not reentrant, so we may have a problem if several threads call cudaMalloc simultaneously */ struct cuda_malloc_info_t * p_malloc = __cuda_find_malloc(&p_device->pending_malloc, (app_ptr)NULL); assert(p_malloc->size == size); p_malloc->devPtr = devPtr; /* update statistics */ p_device->malloc_stats.nb_malloc ++; p_device->malloc_stats.total_size += size; p_device->malloc_stats.cur_mem += size; if(p_device->malloc_stats.cur_mem > p_device->malloc_stats.peak_mem) { p_device->malloc_stats.peak_mem = p_device->malloc_stats.cur_mem; } CUDA_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } } void handle_cuda_cudaFree(int start) { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); INIT_CUDA_PROCESS_INFO(p_process, p_cuda); uint32_t device_id; app_ptr devPtr; GET_PARAM_PACKED_2(CUR_EV, device_id, devPtr); struct cuda_device_info_t* p_device = __get_device_info(p_cuda, device_id); assert(p_device); /* Get the malloc_info that was created in cudaMalloc. * This permits to know the buffer size. */ struct cuda_malloc_info_t * p_malloc = __cuda_find_malloc(&p_device->pending_malloc, devPtr); if(start) { __create_device_container(p_device); CUDA_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "cuda_cudaFree"); CUDA_CHANGE() subVar(CURRENT, "V_GPU_Mem", p_device->gpu_id, p_malloc->size); }else{ CUDA_CHANGE() popState(CURRENT, "ST_Thread", thread_id); ezt_list_remove(&p_malloc->token); ezt_list_add(&p_device->finished_malloc, &p_malloc->token); } } void handle_cuda_gpu_kernel_timestamps() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); INIT_CUDA_PROCESS_INFO(p_process, p_cuda); unsigned kernel_type; float start_time; float stop_time; kernel_id_t kernel_id; uint32_t device_id; GET_PARAM_PACKED_5(CUR_EV, kernel_type, start_time, stop_time, kernel_id, device_id); struct cuda_device_info_t* p_device = __get_device_info(p_cuda, device_id); struct cuda_kernel_info_t *p_kernel = __cuda_find_kernel(&p_device->pending_kernels, kernel_type); p_kernel->name = __cuda_find_kernel_name(&p_cuda->kernel_names, kernel_id); p_kernel->gpu_start_time = p_device->start_time + GPU_TIMESTAMP_TO_CPU(start_time); p_kernel->gpu_stop_time = p_device->start_time + GPU_TIMESTAMP_TO_CPU(stop_time); CUDA_CHANGE() pushState(p_kernel->gpu_start_time, "ST_GPU", p_device->gpu_id, p_kernel->name->state_id); /* todo: use the kernel id to identify the link */ CUDA_CHANGE() { if(p_device->start_time) { endLink(p_kernel->gpu_start_time, "hToD_kernel", CUR_ID, thread_id, p_device->gpu_id, p_kernel->link_str, p_kernel->link_str); } popState(p_kernel->gpu_stop_time, "ST_GPU", p_device->gpu_id); } /* update the kernel statistics */ struct cuda_kernel_stat_t*p_stats = __cuda_find_kernel_stats(p_device, p_kernel->name); p_stats->nb_calls++; double kernel_runtime = p_kernel->gpu_stop_time-p_kernel->gpu_start_time; p_stats->kernel_duration += kernel_runtime; if(kernel_runtime < p_stats->min_duration) { p_stats->min_duration = kernel_runtime; } if(kernel_runtime > p_stats->max_duration) { p_stats->max_duration = kernel_runtime; } /* remove the kernel from the list of pending kernels and add it to the list of finished kernels */ ezt_list_remove(&p_kernel->token); ezt_list_add(&p_device->finished_kernels, &p_kernel->token); } void handle_cuda_gpu_memcpy_timestamps() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); INIT_CUDA_PROCESS_INFO(p_process, p_cuda); float start_time; float stop_time; ezt_cuda_size_t size; enum ezt_cudaMemcpyKind kind; int srcDeviceId; int destDeviceId; GET_PARAM_PACKED_6(CUR_EV, start_time, stop_time, size, kind, srcDeviceId, destDeviceId); struct cuda_device_info_t* p_srcDevice = __get_device_info(p_cuda, srcDeviceId); assert(p_srcDevice); struct cuda_device_info_t* p_destDevice = __get_device_info(p_cuda, destDeviceId); assert(p_destDevice); struct cuda_memcpy_info_t *p_memcpy = __cuda_find_memcpy(&p_srcDevice->pending_memcpy, kind, size); assert(p_memcpy); p_memcpy->gpu_start_time = p_srcDevice->start_time + GPU_TIMESTAMP_TO_CPU(start_time); p_memcpy->gpu_stop_time = p_srcDevice->start_time + GPU_TIMESTAMP_TO_CPU(stop_time); CUDA_CHANGE() { pushState(p_memcpy->gpu_start_time, "ST_GPU", p_srcDevice->gpu_id, "cuda_gpu_memcpy"); if(p_srcDevice->start_time) { if(IS_FROM_GPU(p_memcpy->kind)) { startLink (p_memcpy->gpu_start_time, MEMCPY_TYPE_STR(p_memcpy->kind), CUR_ID, p_memcpy->src, p_memcpy->dest, p_memcpy->link_str, p_memcpy->link_str); } endLink(p_memcpy->gpu_stop_time, MEMCPY_TYPE_STR(p_memcpy->kind), CUR_ID, p_memcpy->src, p_memcpy->dest, p_memcpy->link_str, p_memcpy->link_str); } popState(p_memcpy->gpu_stop_time, "ST_GPU", p_srcDevice->gpu_id); } /* remove the memcpy from the list of pending memcpy and add it to the list of finished memcpy */ ezt_list_remove(&p_memcpy->token); ezt_list_add(&p_srcDevice->finished_memcpy, &p_memcpy->token); } int eztrace_convert_cuda_init() { if(get_mode() == EZTRACE_CONVERT) { addContType("CT_GPU", "0", "GPU"); addStateType("ST_GPU", "CT_GPU", "GPU"); addLinkType("hToD_kernel", "kernel", "CT_Process", "CT_Thread", "CT_GPU"); addLinkType("HToD_memcpy", "memcpy", "CT_Process", "CT_Thread", "CT_GPU"); addLinkType("DToH_memcpy", "memcpy", "CT_Process", "CT_GPU", "CT_Thread"); addLinkType("HToH_memcpy", "memcpy", "CT_Process", "CT_Thread", "CT_Thread"); addLinkType("DToD_memcpy", "memcpy", "CT_Process", "CT_GPU", "CT_GPU"); addEntityValue("cuda_cuMemAlloc", "ST_Thread", "cuda_cuMemAlloc", GTG_YELLOW); addEntityValue("cuda_cuLaunchKernel", "ST_Thread", "cuda_cuLaunchKernel", GTG_GREEN); addEntityValue("cuda_cudaThreadSynchronize", "ST_Thread", "cuda_cudaThreadSynchronize", GTG_RED); addEntityValue("cuda_cuMemcpy", "ST_Thread", "cuda_cuMemcpy", GTG_BLACK); addEntityValue("cuda_gpu_kernel", "ST_GPU", "cuda_gpu_kernel", GTG_GREEN); addEntityValue("cuda_gpu_memcpy", "ST_GPU", "cuda_gpu_memcpy", GTG_BLACK); addEntityValue("cuda_gpu_idle", "ST_GPU", "cuda_gpu_idle", GTG_RED); addVarType ("V_GPU_Mem", "Memory used", "CT_GPU"); } return 0; } static void __create_device_container(struct cuda_device_info_t* p_device) { CUDA_CHANGE() { if(! p_device->added) { addContainer(CURRENT, p_device->gpu_id, "CT_GPU", p_device->p_process->p_process->container->id, p_device->gpu_name, "0"); pushState(CURRENT, "ST_GPU", p_device->gpu_id, "cuda_gpu_idle"); setVar(CURRENT, "V_GPU_Mem", p_device->gpu_id, 0); p_device->added = 1; } } } void handle_cuda_register_kernel() { FUNC_NAME; DECLARE_CUR_PROCESS(p_process); INIT_CUDA_PROCESS_INFO(p_process, p_cuda); kernel_id_t kernel_id; GET_PARAM_PACKED_1(CUR_EV, kernel_id); wait_for_an_event(CUR_INDEX, EZTRACE_CUDA_KERNEL_NAME); struct cuda_kernel_name_t* p_kernel = malloc(sizeof(struct cuda_kernel_name_t)); p_kernel->id = kernel_id; assert(LITL_READ_GET_TYPE(CUR_EV) == LITL_TYPE_RAW); const char* mangled_name = (char*)LITL_READ_RAW(CUR_EV)->data; const char* demangled_name = ezt_demangle(mangled_name); strncpy(p_kernel->name, demangled_name, 80); p_kernel->token.data = p_kernel; sprintf(p_kernel->state_id, "cuda_kernel_%x", p_kernel->id); sprintf(p_kernel->state_desc, "kernel %s", p_kernel->name); CUDA_CHANGE() addEntityValue(p_kernel->state_id, "ST_GPU", p_kernel->state_desc, GTG_GREEN); ezt_list_add(&p_cuda->kernel_names, &p_kernel->token); } void handle_cuda_cuInit() { DECLARE_CUR_PROCESS(p_process); INIT_CUDA_PROCESS_INFO(p_process, p_cuda); FUNC_NAME; p_cuda->start_time = (CURRENT); } void handle_cuda_setnbdevices() { FUNC_NAME; DECLARE_CUR_PROCESS(p_process); INIT_CUDA_PROCESS_INFO(p_process, p_cuda); int num_gpus; GET_PARAM_PACKED_1(CUR_EV, num_gpus); int i; for(i=0; istart_time = (CURRENT); __create_device_container(p_device); } } /* return 1 if the event was handled */ int handle_cuda_events(eztrace_event_t *ev) { if(!STARTED) return 0; switch (LITL_READ_GET_CODE(ev)) { case EZTRACE_CUDA_CUMEMALLOC_START: handle_cuda_cuMemAlloc(1); break; case EZTRACE_CUDA_CUMEMALLOC_STOP: handle_cuda_cuMemAlloc(0); break; case EZTRACE_CUDA_CUDAFREE_START: handle_cuda_cudaFree(1); break; case EZTRACE_CUDA_CUDAFREE_STOP: handle_cuda_cudaFree(0); break; case EZTRACE_CUDA_CULAUNCHKERNEL_START: handle_cuda_cuLaunchKernel(1); break; case EZTRACE_CUDA_CULAUNCHKERNEL_STOP: handle_cuda_cuLaunchKernel(0); break; case EZTRACE_CUDA_CUMEMCPY_START: handle_cuda_cuMemcpy(1); break; case EZTRACE_CUDA_CUMEMCPY_STOP: handle_cuda_cuMemcpy(0); break; case EZTRACE_CUDA_CUDATHREADSYNCHRONIZE_START: handle_cuda_cudaThreadSynchronize(1); break; case EZTRACE_CUDA_CUDATHREADSYNCHRONIZE_STOP: handle_cuda_cudaThreadSynchronize(0); break; case EZTRACE_CUDA_CUDADEVICESYNCHRONIZE_START: handle_cuda_cudaThreadSynchronize(1); break; case EZTRACE_CUDA_CUDADEVICESYNCHRONIZE_STOP: handle_cuda_cudaThreadSynchronize(0); break; case EZTRACE_CUDA_CUINIT: handle_cuda_cuInit(); break; case EZTRACE_CUDA_SETNBDEVICES: handle_cuda_setnbdevices(); break; case EZTRACE_CUDA_REGISTER_KERNEL: handle_cuda_register_kernel(); break; case EZTRACE_CUDA_GPU_KERNEL_TIMESTAMPS: handle_cuda_gpu_kernel_timestamps(); break; case EZTRACE_CUDA_GPU_MEMCPY_TIMESTAMPS: handle_cuda_gpu_memcpy_timestamps(); break; default: /* this is not a cuda event */ return 0; } return 1; } int handle_cuda_stats(eztrace_event_t *ev) { recording_stats = 1; return handle_cuda_events(ev); } #define FORMAT_BYTES(nb_bytes) \ ((uint64_t)nb_bytes<1024?"B": \ ((uint64_t)nb_bytes<1024*1024?"KB": \ ((uint64_t)nb_bytes<1024*1024*1024?"MB": \ ((uint64_t)nb_bytes<(uint64_t)1024*1024*1024*1024?"GB": \ ((uint64_t)nb_bytes<(uint64_t)1024*1024*1024*1024*1024?"TB": \ "PB"))))) static float VALUE_BYTES(uint64_t nb_bytes) { int i; uint64_t div=1; for(i=0; i<6; i++) { if((nb_bytes/div)<1024) return (nb_bytes/(double)div); div*=1024; } return (float)nb_bytes; } void __ezt_print_device_stats(struct cuda_device_info_t *p_device) { /* For each device: total allocated memory */ printf("%s\n", p_device->gpu_name); struct cuda_kernel_stat_t *p_stat; struct ezt_list_token_t *t = NULL; /* print the list of executed kernels */ ezt_list_foreach(&p_device->kernel_stats, t) { p_stat = (struct cuda_kernel_stat_t *) t->data; if(p_stat->nb_calls) { double avg_runtime = p_stat->kernel_duration/p_stat->nb_calls; printf("\tkernel %s was called %d times. Total run time: %lf ns, min: %lf ns, max: %lf ns, avg: %lf ns\n", p_stat->p_kernel->name, p_stat->nb_calls, p_stat->kernel_duration, p_stat->min_duration, p_stat->max_duration, avg_runtime); } } /* print the list of executed memcpy */ struct cuda_memcpy_stat_t *p_memcpy = &p_device->memcpy_stats; if(p_memcpy->nb_memcpy>0) { printf("\tNumber of calls to cudaMemcpy: %d. Total size copied: %f %s (min: %f %s, max: %f %s, avg: %f %s)\n", p_memcpy->nb_memcpy, VALUE_BYTES(p_memcpy->total_size), FORMAT_BYTES(p_memcpy->total_size), VALUE_BYTES(p_memcpy->min_size), FORMAT_BYTES(p_memcpy->min_size), VALUE_BYTES(p_memcpy->max_size), FORMAT_BYTES(p_memcpy->max_size), VALUE_BYTES(p_memcpy->total_size/p_memcpy->nb_memcpy), FORMAT_BYTES(p_memcpy->total_size/p_memcpy->nb_memcpy)); } /* print the memory information */ struct cuda_malloc_stat_t *p_malloc = &p_device->malloc_stats; if(p_malloc->nb_malloc>0) { printf("\tNumber of calls to cudaMalloc: %d. Total size allocated: %f %s (peak: %f %s)\n", p_malloc->nb_malloc, VALUE_BYTES(p_malloc->total_size), FORMAT_BYTES(p_malloc->total_size), VALUE_BYTES(p_malloc->peak_mem), FORMAT_BYTES(p_malloc->peak_mem)); } } void print_cuda_stats() { printf("\nCUDA:\n"); printf("----------\n"); /* browse the processes finished_section_list and extract statistics */ int i; for (i = 0; i < NB_TRACES; i++) { struct process_info_t *p_process = GET_PROCESS_INFO(i); struct cuda_process_info_t *p_info = (struct cuda_process_info_t*) ezt_hook_list_retrieve_data( &p_process->hooks, (uint8_t) EZTRACE_CUDA_EVENTS_ID); if (!p_info) continue; /* No cuda process info attached, skip this process */ struct ezt_list_token_t *token; ezt_list_foreach(&p_info->device_list, token) { struct cuda_device_info_t * p_device = (struct cuda_device_info_t *) token->data; assert(p_device); __ezt_print_device_stats(p_device); } } } struct eztrace_convert_module cuda_module; void libinit(void) __attribute__ ((constructor)); void libinit(void) { cuda_module.api_version = EZTRACE_API_VERSION; cuda_module.init = eztrace_convert_cuda_init; cuda_module.handle = handle_cuda_events; cuda_module.handle_stats = handle_cuda_stats; cuda_module.print_stats = print_cuda_stats; cuda_module.module_prefix = EZTRACE_CUDA_EVENTS_ID; asprintf(&cuda_module.name, "cuda"); asprintf(&cuda_module.description, "Module for cuda functions (cuMemAlloc, cuMemcopy, etc.)"); cuda_module.token.data = &cuda_module; eztrace_convert_register_module(&cuda_module); } void libfinalize(void) __attribute__ ((destructor)); void libfinalize(void) { } eztrace-1.1-7/src/modules/cuda/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135253020050 xustar0030 mtime=1508162219.797819819 30 atime=1508162286.619027172 30 ctime=1508162368.437968825 eztrace-1.1-7/src/modules/cuda/Makefile.in0000644000175000017500000007143413171135253021250 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright © CNRS, INRIA, Université Bordeaux 1 # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ @USE_CUDA_TRUE@am__append_1 = $(TLCFLAGS) -I$(srcdir)/../../core/ $(CUPTI_CFLAGS) subdir = src/modules/cuda ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__noinst_HEADERS_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = @USE_CUDA_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) @USE_CUDA_TRUE@libeztrace_autostart_cuda_la_DEPENDENCIES = \ @USE_CUDA_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) am__libeztrace_autostart_cuda_la_SOURCES_DIST = cuda.cu \ cuda_runtime.cu cuda_driver.cu ezt_cuda.h @USE_CUDA_TRUE@am_libeztrace_autostart_cuda_la_OBJECTS = cuda.lo \ @USE_CUDA_TRUE@ cuda_runtime.lo cuda_driver.lo libeztrace_autostart_cuda_la_OBJECTS = \ $(am_libeztrace_autostart_cuda_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libeztrace_autostart_cuda_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(libeztrace_autostart_cuda_la_CFLAGS) $(CFLAGS) \ $(libeztrace_autostart_cuda_la_LDFLAGS) $(LDFLAGS) -o $@ @USE_CUDA_TRUE@am_libeztrace_autostart_cuda_la_rpath = -rpath \ @USE_CUDA_TRUE@ $(libdir) am__libeztrace_convert_cuda_la_SOURCES_DIST = eztrace_convert_cuda.c @USE_CUDA_TRUE@am_libeztrace_convert_cuda_la_OBJECTS = libeztrace_convert_cuda_la-eztrace_convert_cuda.lo libeztrace_convert_cuda_la_OBJECTS = \ $(am_libeztrace_convert_cuda_la_OBJECTS) libeztrace_convert_cuda_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libeztrace_convert_cuda_la_LDFLAGS) \ $(LDFLAGS) -o $@ @USE_CUDA_TRUE@am_libeztrace_convert_cuda_la_rpath = -rpath $(libdir) @USE_CUDA_TRUE@libeztrace_cuda_la_DEPENDENCIES = \ @USE_CUDA_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) am__libeztrace_cuda_la_SOURCES_DIST = cuda.cu cuda_runtime.cu \ cuda_driver.cu ezt_cuda.h @USE_CUDA_TRUE@am_libeztrace_cuda_la_OBJECTS = cuda.lo cuda_runtime.lo \ @USE_CUDA_TRUE@ cuda_driver.lo libeztrace_cuda_la_OBJECTS = $(am_libeztrace_cuda_la_OBJECTS) libeztrace_cuda_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libeztrace_cuda_la_LDFLAGS) \ $(LDFLAGS) -o $@ @USE_CUDA_TRUE@am_libeztrace_cuda_la_rpath = -rpath $(libdir) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libeztrace_autostart_cuda_la_SOURCES) \ $(libeztrace_convert_cuda_la_SOURCES) \ $(libeztrace_cuda_la_SOURCES) DIST_SOURCES = $(am__libeztrace_autostart_cuda_la_SOURCES_DIST) \ $(am__libeztrace_convert_cuda_la_SOURCES_DIST) \ $(am__libeztrace_cuda_la_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__noinst_HEADERS_DIST = cuda_ev_codes.h cudalt.py HEADERS = $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/cuda.mk \ $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUDA_CFLAGS = @CUDA_CFLAGS@ CUDA_LDFLAGS = @CUDA_LDFLAGS@ CUDA_LIBS = @CUDA_LIBS@ CUDA_ROOT = @CUDA_ROOT@ CUPTI_CFLAGS = @CUPTI_CFLAGS@ CUPTI_LDFLAGS = @CUPTI_LDFLAGS@ CUPTI_LIBS = @CUPTI_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ DYNLIB_EXT = @DYNLIB_EXT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ GTGDIR = @GTGDIR@ GTG_CPPFLAGS = @GTG_CPPFLAGS@ GTG_DEPENDENCIES = @GTG_DEPENDENCIES@ GTG_EXT_CPPFLAGS = @GTG_EXT_CPPFLAGS@ GTG_EXT_LDFLAGS = @GTG_EXT_LDFLAGS@ GTG_EXT_LIB = @GTG_EXT_LIB@ GTG_LDFLAGS = @GTG_LDFLAGS@ GTG_LIB = @GTG_LIB@ GTG_OUT_OF_ORDER = @GTG_OUT_OF_ORDER@ HAVE_ENV = @HAVE_ENV@ HAVE_LIBBACKTRACE = @HAVE_LIBBACKTRACE@ HAVE_LIBOPCODE = @HAVE_LIBOPCODE@ HAVE_PRCTL_H = @HAVE_PRCTL_H@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LD_LIBRARY_PATH_NAME = @LD_LIBRARY_PATH_NAME@ LD_PRELOAD_NAME = @LD_PRELOAD_NAME@ LIBBACKTRACE_CPPFLAGS = @LIBBACKTRACE_CPPFLAGS@ LIBBACKTRACE_LDFLAGS = @LIBBACKTRACE_LDFLAGS@ LIBBACKTRACE_LIB = @LIBBACKTRACE_LIB@ LIBBACKTRACE_ROOT = @LIBBACKTRACE_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LITL_PRINT = @LITL_PRINT@ LITL_ROOT = @LITL_ROOT@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPI_CFLAGS = @MPI_CFLAGS@ MPI_EVENT_ID = @MPI_EVENT_ID@ MPI_INC = @MPI_INC@ MPI_LDFLAGS = @MPI_LDFLAGS@ MPI_MODULE_NAME = @MPI_MODULE_NAME@ MPI_ROOT = @MPI_ROOT@ NM = @NM@ NMEDIT = @NMEDIT@ NVCC = @NVCC@ NVCCFLAGS = @NVCCFLAGS@ $(am__append_1) OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAPIDIR = @PAPIDIR@ PAPI_CPPFLAGS = @PAPI_CPPFLAGS@ PAPI_ENABLED = @PAPI_ENABLED@ PAPI_LDFLAGS = @PAPI_LDFLAGS@ PAPI_LIBDIR = @PAPI_LIBDIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PPTRACE_BINARY_TYPE = @PPTRACE_BINARY_TYPE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STARPU_CFLAGS = @STARPU_CFLAGS@ STARPU_CPPFLAGS = @STARPU_CPPFLAGS@ STARPU_LDFLAGS = @STARPU_LDFLAGS@ STARPU_LIBS = @STARPU_LIBS@ STARPU_ROOT = @STARPU_ROOT@ STRIP = @STRIP@ TARGET_BITS = @TARGET_BITS@ TL_CPPFLAGS = @TL_CPPFLAGS@ TL_EXT_CPPFLAGS = @TL_EXT_CPPFLAGS@ TL_EXT_LDFLAGS = @TL_EXT_LDFLAGS@ TL_EXT_LIB = @TL_EXT_LIB@ TL_LDFLAGS = @TL_LDFLAGS@ TL_LIB = @TL_LIB@ USE_BIN_INSTRUMENTATION = @USE_BIN_INSTRUMENTATION@ USE_CUDADIR_FROM_USER = @USE_CUDADIR_FROM_USER@ USE_GETTID = @USE_GETTID@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ USE_PAPIDIR_FROM_USER = @USE_PAPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @USE_CUDA_TRUE@TLCFLAGS = $(TL_CPPFLAGS) @USE_CUDA_TRUE@TLLDFLAGS = $(TL_LDFLAGS) @USE_CUDA_TRUE@TLLIBADD = $(TL_LIB) @USE_CUDA_TRUE@GTGCFLAGS = $(GTG_CPPFLAGS) @USE_CUDA_TRUE@GTGLDFLAGS = $(GTG_LDFLAGS) @USE_CUDA_TRUE@GTGDEPENDENCIES = $(GTG_DEPENDENCIES) @USE_CUDA_TRUE@GTGLIBADD = $(GTG_LIB) @USE_CUDA_TRUE@LINK = $(LIBTOOL) --mode=link $(CC) -o $@ $(CUDA_LDFLAGS) $(CUDA_LIBS) @USE_CUDA_TRUE@lib_LTLIBRARIES = libeztrace-convert-cuda.la \ @USE_CUDA_TRUE@ libeztrace-cuda.la \ @USE_CUDA_TRUE@ libeztrace-autostart-cuda.la # todo: do not hard-code these dir names @USE_CUDA_TRUE@AM_CFLAGS = -W -Wall -Wextra -I$(srcdir)/../../core/ -I$(top_builddir)/src/core \ @USE_CUDA_TRUE@ -I$(top_srcdir)/src/pptrace $(CUPTI_CFLAGS) @USE_CUDA_TRUE@NVCC_LDFLAGS = $(CUPTI_LDFLAGS) $(CUPTI_LIBS) @USE_CUDA_TRUE@libeztrace_convert_cuda_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(GTGCFLAGS) @USE_CUDA_TRUE@libeztrace_convert_cuda_la_LIBADD = $(GTGLIBADD) $(TLLIBADD) @USE_CUDA_TRUE@libeztrace_convert_cuda_la_LDFLAGS = $(GTGLDFLAGS) $(TLLDFLAGS) @USE_CUDA_TRUE@libeztrace_convert_cuda_la_DEPENDENCIES = $(GTGDEPENDENCIES) @USE_CUDA_TRUE@libeztrace_convert_cuda_la_SOURCES = eztrace_convert_cuda.c @USE_CUDA_TRUE@libeztrace_cuda_la_SOURCES = cuda.cu cuda_runtime.cu cuda_driver.cu ezt_cuda.h @USE_CUDA_TRUE@libeztrace_cuda_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) @USE_CUDA_TRUE@libeztrace_cuda_la_LIBADD = $(CUDA_LIBS) -lcupti $(TLLIBADD) @USE_CUDA_TRUE@libeztrace_cuda_la_LDFLAGS = --no-undefined $(TLLDFLAGS) \ @USE_CUDA_TRUE@ $(CUDA_LDFLAGS) $(NVCC_LDFLAGS) -lcupti @USE_CUDA_TRUE@libeztrace_autostart_cuda_la_SOURCES = cuda.cu cuda_runtime.cu cuda_driver.cu \ @USE_CUDA_TRUE@ ezt_cuda.h @USE_CUDA_TRUE@libeztrace_autostart_cuda_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) @USE_CUDA_TRUE@libeztrace_autostart_cuda_la_LIBADD = $(CUDA_LIBS) -lcupti $(TLLIBADD) @USE_CUDA_TRUE@libeztrace_autostart_cuda_la_LDFLAGS = --no-undefined $(TLLDFLAGS) \ @USE_CUDA_TRUE@ $(CUDA_LDFLAGS) $(NVCC_LDFLAGS) -lcupti @USE_CUDA_TRUE@libeztrace_autostart_cuda_la_CFLAGS = $(AM_CFLAGS) -W -Wall -Wextra -DEZTRACE_AUTOSTART @USE_CUDA_TRUE@noinst_HEADERS = cuda_ev_codes.h \ @USE_CUDA_TRUE@ cudalt.py all: all-am .SUFFIXES: .SUFFIXES: .c .cu .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/cuda.mk $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/modules/cuda/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/modules/cuda/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(srcdir)/cuda.mk $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libeztrace-autostart-cuda.la: $(libeztrace_autostart_cuda_la_OBJECTS) $(libeztrace_autostart_cuda_la_DEPENDENCIES) $(EXTRA_libeztrace_autostart_cuda_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_autostart_cuda_la_LINK) $(am_libeztrace_autostart_cuda_la_rpath) $(libeztrace_autostart_cuda_la_OBJECTS) $(libeztrace_autostart_cuda_la_LIBADD) $(LIBS) libeztrace-convert-cuda.la: $(libeztrace_convert_cuda_la_OBJECTS) $(libeztrace_convert_cuda_la_DEPENDENCIES) $(EXTRA_libeztrace_convert_cuda_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_convert_cuda_la_LINK) $(am_libeztrace_convert_cuda_la_rpath) $(libeztrace_convert_cuda_la_OBJECTS) $(libeztrace_convert_cuda_la_LIBADD) $(LIBS) libeztrace-cuda.la: $(libeztrace_cuda_la_OBJECTS) $(libeztrace_cuda_la_DEPENDENCIES) $(EXTRA_libeztrace_cuda_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_cuda_la_LINK) $(am_libeztrace_cuda_la_rpath) $(libeztrace_cuda_la_OBJECTS) $(libeztrace_cuda_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_convert_cuda_la-eztrace_convert_cuda.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libeztrace_convert_cuda_la-eztrace_convert_cuda.lo: eztrace_convert_cuda.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_cuda_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_convert_cuda_la-eztrace_convert_cuda.lo -MD -MP -MF $(DEPDIR)/libeztrace_convert_cuda_la-eztrace_convert_cuda.Tpo -c -o libeztrace_convert_cuda_la-eztrace_convert_cuda.lo `test -f 'eztrace_convert_cuda.c' || echo '$(srcdir)/'`eztrace_convert_cuda.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_convert_cuda_la-eztrace_convert_cuda.Tpo $(DEPDIR)/libeztrace_convert_cuda_la-eztrace_convert_cuda.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_convert_cuda.c' object='libeztrace_convert_cuda_la-eztrace_convert_cuda.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_cuda_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_convert_cuda_la-eztrace_convert_cuda.lo `test -f 'eztrace_convert_cuda.c' || echo '$(srcdir)/'`eztrace_convert_cuda.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libLTLIBRARIES install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES .PRECIOUS: Makefile @USE_CUDA_TRUE@.cu.o: @USE_CUDA_TRUE@ $(NVCC) -o $@ -c $< $(AM_CPPFLAGS) $(AM_CFLAGS) $(TLCFLAGS) $(CUPTI_CFLAGS) @USE_CUDA_TRUE@.cu.lo: @USE_CUDA_TRUE@ python $(top_srcdir)/src/modules/cuda/cudalt.py $@ $(NVCC) --compiler-options=\" $(CFLAGS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(AM_CFLAGS) $(CPPFLAGS) \" $(TLCFLAGS) -c $< $(CUPTI_CFLAGS) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/src/modules/cuda/PaxHeaders.7332/cuda.cu0000644000000000000000000000013213012560437017250 xustar0030 mtime=1479205151.280727163 30 atime=1507797543.086864873 30 ctime=1508162368.441969175 eztrace-1.1-7/src/modules/cuda/cuda.cu0000644000175000017500000007412613012560437020451 0ustar00trahaytrahay00000000000000#define _GNU_SOURCE 1 /* or _BSD_SOURCE or _SVID_SOURCE */ #define _REENTRANT #include #include #include #include #include #include #include "ezt_cuda.h" #include "cuda_ev_codes.h" #include "eztrace.h" extern "C" { // This CUDA module uses 2 different mechanisms for recording events: // - CPU events are recorded using wrappers (usual mechanism in EZTrace) // - GPU events are recording using the CUPTI activity mechanism. // // For the CUPTI mechanism, we ask CUDA to record events in a buffer. When we reach a synchronization point, // eztrace reads the buffer and record the corresponding events. #define DEFAULT_BUF_SIZE (2 * 1024 * 1024) static size_t __cuda_buf_size = DEFAULT_BUF_SIZE; static int __cupti_enabled = 0; #define ALIGN_SIZE (8) #define ALIGN_BUFFER(buffer, align) \ (((uintptr_t) (buffer) &((align)-1)) ? ((buffer)+(align) - ((uintptr_t)(buffer)&((align)-1))) : (buffer)) #define CUDA_CHECK_RETVAL(__func__, __expected_retval__) \ do { \ if(__func__ != __expected_retval__) { \ fprintf(stderr, "EZTrace: CUDA returned an error\n"); \ abort(); \ } \ } while(0) /**** * CUPTI-based functions ****/ /** * Allocate a new BUF_SIZE buffer for CUPTI */ static void bufferRequested(uint8_t **buffer, size_t *size, size_t *maxNumRecords) { uint8_t *bfr = (uint8_t *) malloc(__cuda_buf_size + ALIGN_SIZE); if (bfr == NULL) { fprintf(stderr, "Error: out of memory\n"); exit(-1); } *size = __cuda_buf_size; *buffer = ALIGN_BUFFER(bfr, ALIGN_SIZE); *maxNumRecords = 0; } // todo: create one timestamp per GPU static uint64_t startTimestamp = 0; int __ezt_cuda_initialized = 0; void __ezt_cuda_initialize() { if(!__ezt_cuda_initialized) { __ezt_cuda_initialized = 1; if(!__cupti_enabled) { fprintf(stderr, "[EZTrace-CUDA] Only CPU events will be recorded. To enable the recording of GPU-events, set the EZTRACE_CUDA_CUPTI_ENABLED environment variable\n"); } int num_gpus = 0; cudaGetDeviceCount(&num_gpus); CUDA_CHECK_RETVAL(cuptiGetTimestamp(&startTimestamp), CUPTI_SUCCESS); EZTRACE_EVENT_PACKED_0(EZTRACE_CUDA_CUINIT); EZTRACE_EVENT_PACKED_1(EZTRACE_CUDA_SETNBDEVICES, num_gpus); } } /* set to 1 when all the hooks are set.... * This is usefull in order to avoid recursive calls */ static int __cuda_initialized = 0; static const char * getMemcpyKindString(CUpti_ActivityMemcpyKind kind) { switch (kind) { case CUPTI_ACTIVITY_MEMCPY_KIND_HTOD: return "HtoD"; case CUPTI_ACTIVITY_MEMCPY_KIND_DTOH: return "DtoH"; case CUPTI_ACTIVITY_MEMCPY_KIND_HTOA: return "HtoA"; case CUPTI_ACTIVITY_MEMCPY_KIND_ATOH: return "AtoH"; case CUPTI_ACTIVITY_MEMCPY_KIND_ATOA: return "AtoA"; case CUPTI_ACTIVITY_MEMCPY_KIND_ATOD: return "AtoD"; case CUPTI_ACTIVITY_MEMCPY_KIND_DTOA: return "DtoA"; case CUPTI_ACTIVITY_MEMCPY_KIND_DTOD: return "DtoD"; case CUPTI_ACTIVITY_MEMCPY_KIND_HTOH: return "HtoH"; default: break; } return ""; } static void __process_memcpy_record(CUpti_ActivityMemcpy2 *memcpy_info) { float start_date = memcpy_info->start - startTimestamp; float stop_date = memcpy_info->end - startTimestamp; ezt_cuda_size_t cpy_size = memcpy_info->bytes; enum ezt_cudaMemcpyKind type = CUPTI_ACTIVITY_MEMCPY_KIND_TO_EZT((CUpti_ActivityMemcpyKind)memcpy_info->copyKind); int srcDeviceId = memcpy_info->deviceId; int destDeviceId = memcpy_info->dstDeviceId; EZTRACE_EVENT_PACKED_6(EZTRACE_CUDA_GPU_MEMCPY_TIMESTAMPS, start_date, stop_date, cpy_size, type, srcDeviceId, destDeviceId); } struct kernel_info_t{ const char* name; }; static uint32_t nb_kernels = 0; static uint32_t nb_allocated_kernels = 0; static struct kernel_info_t *kernels; static kernel_id_t __register_kernel(const char* kernel_name) { uint32_t i; for(i=0; i nb_allocated_kernels) { // not enough space in the array. expand the array nb_allocated_kernels *= 2; struct kernel_info_t *ptr = (struct kernel_info_t *)realloc(kernels, nb_allocated_kernels*sizeof(struct kernel_info_t)); if(!ptr) { fprintf(stderr, "[EZTrace] Cannot allocate memory. Aborting\n"); abort(); } kernels = ptr; } // register the kernel kernels[nb_kernels-1].name = kernel_name; EZTRACE_EVENT_PACKED_1(EZTRACE_CUDA_REGISTER_KERNEL, nb_kernels-1); litl_write_probe_raw(__ezt_trace.litl_trace, EZTRACE_CUDA_KERNEL_NAME, strlen(kernels[nb_kernels-1].name), (litl_data_t*)kernels[nb_kernels-1].name); return nb_kernels-1; } //#define HAVE_CUPTI_ACTIVITY_KERNEL3 1 #if CUPTI_API_VERSION >= 7 /* as of cupti 6.5, CUpti_ActivityKernel2 is deprecated, and CUpti_ActivityKernel3 should be used */ typedef CUpti_ActivityKernel3 __CUpti_ActivityKernel ; #else typedef CUpti_ActivityKernel2 __CUpti_ActivityKernel; #endif static void __process_kernel_record(__CUpti_ActivityKernel *kernel) { static unsigned next_kernel_id = 0; // todo: use the correlationId or something similar to identify the kernels unsigned current_id = next_kernel_id++; kernel_id_t kernel_id = __register_kernel(kernel->name); EZTRACE_EVENT_PACKED_5(EZTRACE_CUDA_GPU_KERNEL_TIMESTAMPS, current_id, (float)(kernel->start - startTimestamp), (float)(kernel->end - startTimestamp), kernel_id, (uint32_t)kernel->deviceId); } static sem_t __flush_sem; void CUPTIAPI bufferCompleted(CUcontext ctx, uint32_t streamId, uint8_t *buffer, size_t size, size_t validSize) { CUptiResult status; CUpti_Activity *record = NULL; if (validSize > 0) { __ezt_cuda_initialize(); if(sem_wait(&__flush_sem) != 0) { abort(); } do { status = cuptiActivityGetNextRecord(buffer, validSize, &record); if(status == CUPTI_SUCCESS) { switch(record->kind) { case CUPTI_ACTIVITY_KIND_MEMCPY: { __process_memcpy_record((CUpti_ActivityMemcpy2 *)record); break; } case CUPTI_ACTIVITY_KIND_KERNEL: case CUPTI_ACTIVITY_KIND_CONCURRENT_KERNEL: { __process_kernel_record((__CUpti_ActivityKernel *)record); break; } default: printf(" \n", record->kind); break; } } else if (status == CUPTI_ERROR_MAX_LIMIT_REACHED) { break; } else { CUDA_CHECK_RETVAL(status, CUPTI_SUCCESS); } } while (1); if(sem_post(&__flush_sem) != 0) { abort(); } // report any records dropped from the queue size_t dropped; CUDA_CHECK_RETVAL(cuptiActivityGetNumDroppedRecords(ctx, streamId, &dropped), CUPTI_SUCCESS); if (dropped != 0) { fprintf(stderr, "[EZTrace-CUDA] %u events were dropped because the buffer dedicated to CUDA events is too small (%u bytes)\n", (unsigned int)dropped, __cuda_buf_size); fprintf(stderr, "[EZTrace-CUDA]\tYou can change this buffer size by setting EZTRACE_CUDA_BUFFER_SIZE\n"); } } free(buffer); } /**** CUDA runtime interface ****/ cudaError_t (*libcudaDeviceSynchronize)(); cudaError_t (*libcudaThreadSynchronize)(); // note: deprecated /* Kernel management */ cudaError_t (*libcudaLaunch)(const void *func); cudaError_t (*libcudaConfigureCall) ( dim3 gridDim, dim3 blockDim, size_t sharedMem, cudaStream_t stream ); /* Memory management */ cudaError_t (*libcudaMalloc)(void **devPtr, size_t size); cudaError_t (*libcudaMallocHost)(void **ptr, size_t size); cudaError_t (*libcudaMallocPitch)(void **devPtr, size_t *pitch, size_t width, size_t height); cudaError_t (*libcudaMallocArray)(struct cudaArray **array, const struct cudaChannelFormatDesc *desc, size_t width, size_t height, unsigned int flags); cudaError_t (*libcudaMalloc3D)(struct cudaPitchedPtr* pitchedDevPtr, struct cudaExtent extent); cudaError_t (*libcudaMalloc3DArray)(cudaArray_t *array, const struct cudaChannelFormatDesc* desc, struct cudaExtent extent, unsigned int flags); cudaError_t (*libcudaMallocMipmappedArray)(cudaMipmappedArray_t *mipmappedArray, const struct cudaChannelFormatDesc* desc, struct cudaExtent extent, unsigned int numLevels, unsigned int flags); cudaError_t (*libcudaFree)(void *devPtr); cudaError_t (*libcudaFreeHost)(void *ptr); cudaError_t (*libcudaFreeArray)(cudaArray_t array); cudaError_t (*libcudaFreeMipmappedArray)(cudaMipmappedArray_t mipmappedArray); cudaError_t (*libcudaHostAlloc)(void **pHost, size_t size, unsigned int flags); cudaError_t (*libcudaHostRegister)(void *ptr, size_t size, unsigned int flags); cudaError_t (*libcudaHostUnregister)(void *ptr); /* Memory Transfers */ cudaError_t (*libcudaMemcpy3D)(const struct cudaMemcpy3DParms *p); cudaError_t (*libcudaMemcpy3DPeer)(const struct cudaMemcpy3DPeerParms *p); cudaError_t (*libcudaMemcpy3DAsync)(const struct cudaMemcpy3DParms *p, cudaStream_t stream ); cudaError_t (*libcudaMemcpy3DPeerAsync)(const struct cudaMemcpy3DPeerParms *p, cudaStream_t stream ); cudaError_t (*libcudaMemcpy)(void *dst, const void *src, size_t count, enum cudaMemcpyKind kind); cudaError_t (*libcudaMemcpyPeer)(void *dst, int dstDevice, const void *src, int srcDevice, size_t count); cudaError_t (*libcudaMemcpyToArray)(cudaArray_t dst, size_t wOffset, size_t hOffset, const void *src, size_t count, enum cudaMemcpyKind kind); cudaError_t (*libcudaMemcpyFromArray)(void *dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, enum cudaMemcpyKind kind); cudaError_t (*libcudaMemcpyArrayToArray)(cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t count, enum cudaMemcpyKind kind); cudaError_t (*libcudaMemcpy2D)(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind); cudaError_t (*libcudaMemcpy2DToArray)(cudaArray_t dst, size_t wOffset, size_t hOffset, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind); cudaError_t (*libcudaMemcpy2DFromArray)(void *dst, size_t dpitch, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, enum cudaMemcpyKind kind); cudaError_t (*libcudaMemcpy2DArrayToArray)(cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t width, size_t height, enum cudaMemcpyKind kind); cudaError_t (*libcudaMemcpyToSymbol)(const void *symbol, const void *src, size_t count, size_t offset , enum cudaMemcpyKind kind); cudaError_t (*libcudaMemcpyFromSymbol)(void *dst, const void *symbol, size_t count, size_t offset , enum cudaMemcpyKind kind); cudaError_t (*libcudaMemcpyAsync)(void *dst, const void *src, size_t count, enum cudaMemcpyKind kind, cudaStream_t stream ); cudaError_t (*libcudaMemcpyPeerAsync)(void *dst, int dstDevice, const void *src, int srcDevice, size_t count, cudaStream_t stream ); cudaError_t (*libcudaMemcpyToArrayAsync)(cudaArray_t dst, size_t wOffset, size_t hOffset, const void *src, size_t count, enum cudaMemcpyKind kind, cudaStream_t stream ); cudaError_t (*libcudaMemcpyFromArrayAsync)(void *dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, enum cudaMemcpyKind kind, cudaStream_t stream ); cudaError_t (*libcudaMemcpy2DAsync)(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind, cudaStream_t stream ); cudaError_t (*libcudaMemcpy2DToArrayAsync)(cudaArray_t dst, size_t wOffset, size_t hOffset, const void *src, size_t spitch, size_t width, size_t height, enum cudaMemcpyKind kind, cudaStream_t stream ); cudaError_t (*libcudaMemcpy2DFromArrayAsync)(void *dst, size_t dpitch, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, enum cudaMemcpyKind kind, cudaStream_t stream ); cudaError_t (*libcudaMemcpyToSymbolAsync)(const void *symbol, const void *src, size_t count, size_t offset, enum cudaMemcpyKind kind, cudaStream_t stream ); cudaError_t (*libcudaMemcpyFromSymbolAsync)(void *dst, const void *symbol, size_t count, size_t offset, enum cudaMemcpyKind kind, cudaStream_t stream ); cudaError_t (*libcudaMemset)(void *devPtr, int value, size_t count); cudaError_t (*libcudaMemset2D)(void *devPtr, size_t pitch, int value, size_t width, size_t height); cudaError_t (*libcudaMemset3D)(struct cudaPitchedPtr pitchedDevPtr, int value, struct cudaExtent extent); cudaError_t (*libcudaMemsetAsync)(void *devPtr, int value, size_t count, cudaStream_t stream ); cudaError_t (*libcudaMemset2DAsync)(void *devPtr, size_t pitch, int value, size_t width, size_t height, cudaStream_t stream ); cudaError_t (*libcudaMemset3DAsync)(struct cudaPitchedPtr pitchedDevPtr, int value, struct cudaExtent extent, cudaStream_t stream ); /**** CUDA driver interface ****/ #if 0 CUresult (*libcuMemcpyAtoA_v2)(CUarray dstArray, size_t dstOffset, CUarray srcArray, size_t srcOffset, size_t ByteCount); CUresult (*libcuMemcpyAtoD_v2)(CUdeviceptr dstDevice, CUarray srcArray, size_t srcOffset, size_t ByteCount); CUresult (*libcuMemcpyAtoH_v2)(void *dstHost, CUarray srcArray, size_t srcOffset, size_t ByteCount); CUresult (*libcuMemcpyDtoA_v2)(CUarray dstArray, size_t dstOffset, CUdeviceptr srcDevice, size_t ByteCount); CUresult (*libcuMemcpyDtoD_v2)(CUdeviceptr dstDevice, CUdeviceptr srcDevice, size_t ByteCount); CUresult (*libcuMemcpyDtoH_v2)(void *dstHost, CUdeviceptr srcDevice, size_t ByteCount); CUresult (*libcuMemcpyHtoA_v2)(CUarray dstArray, size_t dstOffset, const void* srcHost, size_t ByteCount); CUresult (*libcuMemcpyHtoD_v2)(CUdeviceptr dstDevice, const void *srcHost, size_t ByteCount); CUresult (*libcuMemFree_v2)(CUdeviceptr dptr); CUresult (*libcuMemAlloc_v2)(CUdeviceptr *dptr, size_t bytesize); CUresult (*libcuMemcpy) (CUdeviceptr dst, CUdeviceptr src, size_t ByteCount); CUresult (*libcuLaunchKernel)(CUfunction f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, CUstream hStream, void ** kernelParams, void ** extra); #endif /* Kernel management */ CUresult (*libcuLaunchKernel)(CUfunction f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, CUstream hStream, void **kernelParams, void **extra); CUresult (*libcuLaunch)(CUfunction f); CUresult (*libcuLaunchGrid)(CUfunction f, int grid_width, int grid_height); CUresult (*libcuLaunchGridAsync)(CUfunction f, int grid_width, int grid_height, CUstream hStream); /* Memory Management */ CUresult (*libcuMemGetInfo_v2)(size_t *free, size_t *total); CUresult (*libcuMemAlloc_v2)(CUdeviceptr *dptr, size_t bytesize); CUresult (*libcuMemAllocPitch_v2)(CUdeviceptr *dptr, size_t *pPitch, size_t WidthInBytes, size_t Height, unsigned int ElementSizeBytes); CUresult (*libcuMemFree_v2)(CUdeviceptr dptr); CUresult (*libcuMemAllocHost_v2)(void **pp, size_t bytesize); CUresult (*libcuMemFreeHost)(void *p); CUresult (*libcuMemHostAlloc)(void **pp, size_t bytesize, unsigned int Flags); CUresult (*libcuMemHostRegister)(void *p, size_t bytesize, unsigned int Flags); CUresult (*libcuMemHostUnregister)(void *p); /* Memory Transfers */ CUresult (*libcuMemcpy)(CUdeviceptr dst, CUdeviceptr src, size_t ByteCount); CUresult (*libcuMemcpyPeer)(CUdeviceptr dstDevice, CUcontext dstContext, CUdeviceptr srcDevice, CUcontext srcContext, size_t ByteCount); CUresult (*libcuMemcpyHtoD_v2)(CUdeviceptr dstDevice, const void *srcHost, size_t ByteCount); CUresult (*libcuMemcpyDtoH_v2)(void *dstHost, CUdeviceptr srcDevice, size_t ByteCount); CUresult (*libcuMemcpyDtoD_v2)(CUdeviceptr dstDevice, CUdeviceptr srcDevice, size_t ByteCount); CUresult (*libcuMemcpyDtoA_v2)(CUarray dstArray, size_t dstOffset, CUdeviceptr srcDevice, size_t ByteCount); CUresult (*libcuMemcpyAtoD_v2)(CUdeviceptr dstDevice, CUarray srcArray, size_t srcOffset, size_t ByteCount); CUresult (*libcuMemcpyHtoA_v2)(CUarray dstArray, size_t dstOffset, const void *srcHost, size_t ByteCount); CUresult (*libcuMemcpyAtoH_v2)(void *dstHost, CUarray srcArray, size_t srcOffset, size_t ByteCount); CUresult (*libcuMemcpyAtoA_v2)(CUarray dstArray, size_t dstOffset, CUarray srcArray, size_t srcOffset, size_t ByteCount); CUresult (*libcuMemcpy2D_v2)(const CUDA_MEMCPY2D *pCopy); CUresult (*libcuMemcpy2DUnaligned_v2)(const CUDA_MEMCPY2D *pCopy); CUresult (*libcuMemcpy3D_v2)(const CUDA_MEMCPY3D *pCopy); CUresult (*libcuMemcpy3DPeer)(const CUDA_MEMCPY3D_PEER *pCopy); CUresult (*libcuMemcpyAsync)(CUdeviceptr dst, CUdeviceptr src, size_t ByteCount, CUstream hStream); CUresult (*libcuMemcpyPeerAsync)(CUdeviceptr dstDevice, CUcontext dstContext, CUdeviceptr srcDevice, CUcontext srcContext, size_t ByteCount, CUstream hStream); CUresult (*libcuMemcpyHtoDAsync_v2)(CUdeviceptr dstDevice, const void *srcHost, size_t ByteCount, CUstream hStream); CUresult (*libcuMemcpyDtoHAsync_v2)(void *dstHost, CUdeviceptr srcDevice, size_t ByteCount, CUstream hStream); CUresult (*libcuMemcpyDtoDAsync_v2)(CUdeviceptr dstDevice, CUdeviceptr srcDevice, size_t ByteCount, CUstream hStream); CUresult (*libcuMemcpyHtoAAsync_v2)(CUarray dstArray, size_t dstOffset, const void *srcHost, size_t ByteCount, CUstream hStream); CUresult (*libcuMemcpyAtoHAsync_v2)(void *dstHost, CUarray srcArray, size_t srcOffset, size_t ByteCount, CUstream hStream); CUresult (*libcuMemcpy2DAsync_v2)(const CUDA_MEMCPY2D *pCopy, CUstream hStream); CUresult (*libcuMemcpy3DAsync_v2)(const CUDA_MEMCPY3D *pCopy, CUstream hStream); CUresult (*libcuMemcpy3DPeerAsync)(const CUDA_MEMCPY3D_PEER *pCopy, CUstream hStream); CUresult (*libcuMemsetD8_v2)(CUdeviceptr dstDevice, unsigned char uc, size_t N); CUresult (*libcuMemsetD16_v2)(CUdeviceptr dstDevice, unsigned short us, size_t N); CUresult (*libcuMemsetD32_v2)(CUdeviceptr dstDevice, unsigned int ui, size_t N); CUresult (*libcuMemsetD2D8_v2)(CUdeviceptr dstDevice, size_t dstPitch, unsigned char uc, size_t Width, size_t Height); CUresult (*libcuMemsetD2D16_v2)(CUdeviceptr dstDevice, size_t dstPitch, unsigned short us, size_t Width, size_t Height); CUresult (*libcuMemsetD2D32_v2)(CUdeviceptr dstDevice, size_t dstPitch, unsigned int ui, size_t Width, size_t Height); CUresult (*libcuMemsetD8Async)(CUdeviceptr dstDevice, unsigned char uc, size_t N, CUstream hStream); CUresult (*libcuMemsetD16Async)(CUdeviceptr dstDevice, unsigned short us, size_t N, CUstream hStream); CUresult (*libcuMemsetD32Async)(CUdeviceptr dstDevice, unsigned int ui, size_t N, CUstream hStream); CUresult (*libcuMemsetD2D8Async)(CUdeviceptr dstDevice, size_t dstPitch, unsigned char uc, size_t Width, size_t Height, CUstream hStream); CUresult (*libcuMemsetD2D16Async)(CUdeviceptr dstDevice, size_t dstPitch, unsigned short us, size_t Width, size_t Height, CUstream hStream); CUresult (*libcuMemsetD2D32Async)(CUdeviceptr dstDevice, size_t dstPitch, unsigned int ui, size_t Width, size_t Height, CUstream hStream); #if 0 /* is it useful ? */ CUresult (*libcuArrayCreate)(CUarray *pHandle, const CUDA_ARRAY_DESCRIPTOR *pAllocateArray); CUresult (*libcuArrayGetDescriptor)(CUDA_ARRAY_DESCRIPTOR *pArrayDescriptor, CUarray hArray); CUresult (*libcuArrayDestroy)(CUarray hArray); CUresult (*libcuArray3DCreate)(CUarray *pHandle, const CUDA_ARRAY3D_DESCRIPTOR *pAllocateArray); CUresult (*libcuArray3DGetDescriptor)(CUDA_ARRAY3D_DESCRIPTOR *pArrayDescriptor, CUarray hArray); CUresult (*libcuMipmappedArrayCreate)(CUmipmappedArray *pHandle, const CUDA_ARRAY3D_DESCRIPTOR *pMipmappedArrayDesc, unsigned int numMipmapLevels); CUresult (*libcuMipmappedArrayGetLevel)(CUarray *pLevelArray, CUmipmappedArray hMipmappedArray, unsigned int level); CUresult (*libcuMipmappedArrayDestroy)(CUmipmappedArray hMipmappedArray); #endif // CUresult (*libcuCtxSynchronize)(void); // CUresult (*libcuDeviceTotalMem)(unsigned int *bytes, CUdevice dev); #if 0 START_INTERCEPT INTERCEPT2("cudaLaunch", libcudaLaunch) INTERCEPT2("cudaMalloc", libcudaMalloc) INTERCEPT2("cudaFree", libcudaFree) INTERCEPT2("cudaConfigureCall", libcudaConfigureCall) INTERCEPT2("cudaMemcpy", libcudaMemcpy) INTERCEPT2("cudaMemcpyAsync", libcudaMemcpyAsync) INTERCEPT2("cudaDeviceSynchronize", libcudaDeviceSynchronize) INTERCEPT2("cudaThreadSynchronize", libcudaThreadSynchronize) INTERCEPT2("cuLaunchKernel", libcuLaunchKernel) INTERCEPT2("cuMemcpy", libcuMemcpy) INTERCEPT2("cuMemcpyAtoA_v2", libcuMemcpyAtoA_v2) INTERCEPT2("cuMemcpyAtoD_v2", libcuMemcpyAtoD_v2) INTERCEPT2("cuMemcpyAtoH_v2", libcuMemcpyAtoH_v2) INTERCEPT2("cuMemcpyDtoA_v2", libcuMemcpyDtoA_v2) INTERCEPT2("cuMemcpyDtoD_v2", libcuMemcpyDtoD_v2) INTERCEPT2("cuMemcpyDtoH_v2", libcuMemcpyDtoH_v2) INTERCEPT2("cuMemcpyHtoA_v2", libcuMemcpyHtoA_v2) INTERCEPT2("cuMemcpyHtoD_v2", libcuMemcpyHtoD_v2) INTERCEPT2("cuMemFree_v2",libcuMemFree_v2) INTERCEPT2("cuMemAlloc_v2", libcuMemAlloc_v2) END_INTERCEPT; #endif START_INTERCEPT_MODULE(cuda) INTERCEPT2("cudaDeviceSynchronize", libcudaDeviceSynchronize) INTERCEPT2("cudaThreadSynchronize", libcudaThreadSynchronize) INTERCEPT2("cudaLaunch", libcudaLaunch) INTERCEPT2("cudaConfigureCall", libcudaConfigureCall) INTERCEPT2("cudaMalloc", libcudaMalloc) INTERCEPT2("cudaMallocHost", libcudaMallocHost) INTERCEPT2("cudaMallocPitch", libcudaMallocPitch) INTERCEPT2("cudaMallocArray", libcudaMallocArray) INTERCEPT2("cudaMalloc3D", libcudaMalloc3D) INTERCEPT2("cudaMalloc3DArray", libcudaMalloc3DArray) INTERCEPT2("cudaMallocMipmappedArray", libcudaMallocMipmappedArray) INTERCEPT2("cudaFree", libcudaFree) INTERCEPT2("cudaFreeHost", libcudaFreeHost) INTERCEPT2("cudaFreeArray", libcudaFreeArray) INTERCEPT2("cudaFreeMipmappedArray", libcudaFreeMipmappedArray) INTERCEPT2("cudaHostAlloc", libcudaHostAlloc) INTERCEPT2("cudaHostRegister", libcudaHostRegister) INTERCEPT2("cudaHostUnregister", libcudaHostUnregister) INTERCEPT2("cudaMemcpy3D", libcudaMemcpy3D) INTERCEPT2("cudaMemcpy3DPeer", libcudaMemcpy3DPeer) INTERCEPT2("cudaMemcpy3DAsync", libcudaMemcpy3DAsync) INTERCEPT2("cudaMemcpy3DPeerAsync", libcudaMemcpy3DPeerAsync) INTERCEPT2("cudaMemcpy", libcudaMemcpy) INTERCEPT2("cudaMemcpyPeer", libcudaMemcpyPeer) INTERCEPT2("cudaMemcpyToArray", libcudaMemcpyToArray) INTERCEPT2("cudaMemcpyFromArray", libcudaMemcpyFromArray) INTERCEPT2("cudaMemcpyArrayToArray", libcudaMemcpyArrayToArray) INTERCEPT2("cudaMemcpy2D", libcudaMemcpy2D) INTERCEPT2("cudaMemcpy2DToArray", libcudaMemcpy2DToArray) INTERCEPT2("cudaMemcpy2DFromArray", libcudaMemcpy2DFromArray) INTERCEPT2("cudaMemcpy2DArrayToArray", libcudaMemcpy2DArrayToArray) INTERCEPT2("cudaMemcpyToSymbol", libcudaMemcpyToSymbol) INTERCEPT2("cudaMemcpyFromSymbol", libcudaMemcpyFromSymbol) INTERCEPT2("cudaMemcpyAsync", libcudaMemcpyAsync) INTERCEPT2("cudaMemcpyPeerAsync", libcudaMemcpyPeerAsync) INTERCEPT2("cudaMemcpyToArrayAsync", libcudaMemcpyToArrayAsync) INTERCEPT2("cudaMemcpyFromArrayAsync", libcudaMemcpyFromArrayAsync) INTERCEPT2("cudaMemcpy2DAsync", libcudaMemcpy2DAsync) INTERCEPT2("cudaMemcpy2DToArrayAsync", libcudaMemcpy2DToArrayAsync) INTERCEPT2("cudaMemcpy2DFromArrayAsync", libcudaMemcpy2DFromArrayAsync) INTERCEPT2("cudaMemcpyToSymbolAsync", libcudaMemcpyToSymbolAsync) INTERCEPT2("cudaMemcpyFromSymbolAsync", libcudaMemcpyFromSymbolAsync) INTERCEPT2("cudaMemset", libcudaMemset) INTERCEPT2("cudaMemset2D", libcudaMemset2D) INTERCEPT2("cudaMemset3D", libcudaMemset3D) INTERCEPT2("cudaMemsetAsync", libcudaMemsetAsync) INTERCEPT2("cudaMemset2DAsync", libcudaMemset2DAsync) INTERCEPT2("cudaMemset3DAsync", libcudaMemset3DAsync) INTERCEPT2("cuMemcpyAtoA_v2", libcuMemcpyAtoA_v2) INTERCEPT2("cuMemcpyAtoD_v2", libcuMemcpyAtoD_v2) INTERCEPT2("cuMemcpyAtoH_v2", libcuMemcpyAtoH_v2) INTERCEPT2("cuMemcpyDtoA_v2", libcuMemcpyDtoA_v2) INTERCEPT2("cuMemcpyDtoD_v2", libcuMemcpyDtoD_v2) INTERCEPT2("cuMemcpyDtoH_v2", libcuMemcpyDtoH_v2) INTERCEPT2("cuMemcpyHtoA_v2", libcuMemcpyHtoA_v2) INTERCEPT2("cuMemcpyHtoD_v2", libcuMemcpyHtoD_v2) INTERCEPT2("cuMemFree_v2", libcuMemFree_v2) INTERCEPT2("cuMemAlloc_v2", libcuMemAlloc_v2) INTERCEPT2("cuMemcpy", libcuMemcpy) INTERCEPT2("cuLaunchKernel", libcuLaunchKernel) INTERCEPT2("cuLaunchKernel", libcuLaunchKernel) INTERCEPT2("cuLaunch", libcuLaunch) INTERCEPT2("cuLaunchGrid", libcuLaunchGrid) INTERCEPT2("cuLaunchGridAsync", libcuLaunchGridAsync) INTERCEPT2("cuMemGetInfo_v2", libcuMemGetInfo_v2) INTERCEPT2("cuMemAlloc_v2", libcuMemAlloc_v2) INTERCEPT2("cuMemAllocPitch_v2", libcuMemAllocPitch_v2) INTERCEPT2("cuMemFree_v2", libcuMemFree_v2) INTERCEPT2("cuMemAllocHost_v2", libcuMemAllocHost_v2) INTERCEPT2("cuMemFreeHost", libcuMemFreeHost) INTERCEPT2("cuMemHostAlloc", libcuMemHostAlloc) INTERCEPT2("cuMemHostRegister", libcuMemHostRegister) INTERCEPT2("cuMemHostUnregister", libcuMemHostUnregister) INTERCEPT2("cuMemcpy", libcuMemcpy) INTERCEPT2("cuMemcpyPeer", libcuMemcpyPeer) INTERCEPT2("cuMemcpyHtoD_v2", libcuMemcpyHtoD_v2) INTERCEPT2("cuMemcpyDtoH_v2", libcuMemcpyDtoH_v2) INTERCEPT2("cuMemcpyDtoD_v2", libcuMemcpyDtoD_v2) INTERCEPT2("cuMemcpyDtoA_v2", libcuMemcpyDtoA_v2) INTERCEPT2("cuMemcpyAtoD_v2", libcuMemcpyAtoD_v2) INTERCEPT2("cuMemcpyHtoA_v2", libcuMemcpyHtoA_v2) INTERCEPT2("cuMemcpyAtoH_v2", libcuMemcpyAtoH_v2) INTERCEPT2("cuMemcpyAtoA_v2", libcuMemcpyAtoA_v2) INTERCEPT2("cuMemcpy2D_v2", libcuMemcpy2D_v2) INTERCEPT2("cuMemcpy2DUnaligned_v2", libcuMemcpy2DUnaligned_v2) INTERCEPT2("cuMemcpy3D_v2", libcuMemcpy3D_v2) INTERCEPT2("cuMemcpy3DPeer", libcuMemcpy3DPeer) INTERCEPT2("cuMemcpyAsync", libcuMemcpyAsync) INTERCEPT2("cuMemcpyPeerAsync", libcuMemcpyPeerAsync) INTERCEPT2("cuMemcpyHtoDAsync_v2", libcuMemcpyHtoDAsync_v2) INTERCEPT2("cuMemcpyDtoHAsync_v2", libcuMemcpyDtoHAsync_v2) INTERCEPT2("cuMemcpyDtoDAsync_v2", libcuMemcpyDtoDAsync_v2) INTERCEPT2("cuMemcpyHtoAAsync_v2", libcuMemcpyHtoAAsync_v2) INTERCEPT2("cuMemcpyAtoHAsync_v2", libcuMemcpyAtoHAsync_v2) INTERCEPT2("cuMemcpy2DAsync_v2", libcuMemcpy2DAsync_v2) INTERCEPT2("cuMemcpy3DAsync_v2", libcuMemcpy3DAsync_v2) INTERCEPT2("cuMemcpy3DPeerAsync", libcuMemcpy3DPeerAsync) INTERCEPT2("cuMemsetD8_v2", libcuMemsetD8_v2) INTERCEPT2("cuMemsetD16_v2", libcuMemsetD16_v2) INTERCEPT2("cuMemsetD32_v2", libcuMemsetD32_v2) INTERCEPT2("cuMemsetD2D8_v2", libcuMemsetD2D8_v2) INTERCEPT2("cuMemsetD2D16_v2", libcuMemsetD2D16_v2) INTERCEPT2("cuMemsetD2D32_v2", libcuMemsetD2D32_v2) INTERCEPT2("cuMemsetD8Async", libcuMemsetD8Async) INTERCEPT2("cuMemsetD16Async", libcuMemsetD16Async) INTERCEPT2("cuMemsetD32Async", libcuMemsetD32Async) INTERCEPT2("cuMemsetD2D8Async", libcuMemsetD2D8Async) INTERCEPT2("cuMemsetD2D16Async", libcuMemsetD2D16Async) INTERCEPT2("cuMemsetD2D32Async", libcuMemsetD2D32Async) END_INTERCEPT_MODULE(cuda); #if 0 INTERCEPT2("cuArrayCreate", libcuArrayCreate) INTERCEPT2("cuArrayGetDescriptor", libcuArrayGetDescriptor) INTERCEPT2("cuArrayDestroy", libcuArrayDestroy) INTERCEPT2("cuArray3DCreate", libcuArray3DCreate) INTERCEPT2("cuArray3DGetDescriptor", libcuArray3DGetDescriptor) INTERCEPT2("cuMipmappedArrayCreate", libcuMipmappedArrayCreate) INTERCEPT2("cuMipmappedArrayGetLevel", libcuMipmappedArrayGetLevel) INTERCEPT2("cuMipmappedArrayDestroy", libcuMipmappedArrayDestroy) INTERCEPT2("libcuCtxSynchronize", libcuCtxSynchronize) INTERCEPT2("libcuDeviceTotalMem", libcuDeviceTotalMem) #endif CUpti_SubscriberHandle subscriber; static void __init_buffer_size() { char* str = getenv("EZTRACE_CUDA_BUFFER_SIZE"); if(str) { __cuda_buf_size = atoi(str); fprintf(stderr, "Setting CUDA buffer size to %d bytes\n", __cuda_buf_size); } } static void __init_cupti() { char* str = getenv("EZTRACE_CUDA_CUPTI_DISABLED"); if(str) { __cupti_enabled = 0; } else { __cupti_enabled = 1; } if(__cupti_enabled) { fprintf(stderr, "[EZTrace][CUDA] CUPTI is enabled\n"); __cupti_enabled = 1; kernels = (struct kernel_info_t*) malloc(sizeof(struct kernel_info_t)*1024); nb_allocated_kernels = 1024; // device activity record is created when CUDA initializes, so we // want to enable it before cuInit() or any CUDA runtime call CUDA_CHECK_RETVAL(cuptiActivityEnable(CUPTI_ACTIVITY_KIND_KERNEL), CUPTI_SUCCESS); CUDA_CHECK_RETVAL(cuptiActivityEnable(CUPTI_ACTIVITY_KIND_MEMCPY), CUPTI_SUCCESS); CUDA_CHECK_RETVAL(cuptiActivityEnable(CUPTI_ACTIVITY_KIND_MEMSET), CUPTI_SUCCESS); // Register callbacks for buffer requests and for buffers completed by CUPTI. CUDA_CHECK_RETVAL(cuptiActivityRegisterCallbacks(bufferRequested, bufferCompleted), CUPTI_SUCCESS); if(sem_init(&__flush_sem, 0, 1) != 0 ){ abort(); } } } // flush all pending buffers static void __ezt_cuda_flush(void*param) { if(__cupti_enabled) { CUDA_CHECK_RETVAL(cuptiActivityFlushAll(CUPTI_ACTIVITY_FLAG_FORCE_INT), CUPTI_SUCCESS); // make sure there isn't another thread that is flushing the cuda buffer if(sem_wait(&__flush_sem) != 0) { abort(); } } } static void __cuda_init (void) __attribute__ ((constructor)); static void __cuda_init (void) { DYNAMIC_INTERCEPT_ALL_MODULE(cuda); __init_buffer_size(); __init_cupti(); // we need to flush all the pending buffers before closing the trace so that we don't lose // any event from the GPU eztrace_atexit(__ezt_cuda_flush, NULL); #ifdef EZTRACE_AUTOSTART eztrace_start(); #endif __cuda_initialized = 1; } static void __cuda_conclude (void) __attribute__ ((destructor)); static void __cuda_conclude (void) { __cuda_initialized = 0; if(__cupti_enabled) { cuptiUnsubscribe(subscriber); } eztrace_stop(); } } eztrace-1.1-7/src/modules/PaxHeaders.7332/memory0000644000000000000000000000013213171135500016315 xustar0030 mtime=1508162368.333959737 30 atime=1508162372.166294941 30 ctime=1508162368.333959737 eztrace-1.1-7/src/modules/memory/0000755000175000017500000000000013171135500017561 5ustar00trahaytrahay00000000000000eztrace-1.1-7/src/modules/memory/PaxHeaders.7332/eztrace_convert_memory.c0000644000000000000000000000013213143047722023332 xustar0030 mtime=1502367698.660456018 30 atime=1508138916.336928403 30 ctime=1508162368.333959737 eztrace-1.1-7/src/modules/memory/eztrace_convert_memory.c0000644000175000017500000001526113143047722024526 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE #include #include #include "eztrace_convert.h" #include "eztrace_convert_macros.h" #include "memory_ev_codes.h" #include "eztrace_list.h" static int recording_stats = 0; #define MEMORY_CHANGE() if(!recording_stats) CHANGE() struct memory_process_info_t { struct process_info_t *p_process; uint64_t memory_use; uint32_t nb_malloc; uint32_t nb_free; uint64_t total_malloced; uint64_t total_freed; uint64_t max_mem_used; }; static struct memory_process_info_t *__register_process_hook( struct process_info_t *p_process) { struct memory_process_info_t *p_mem = (struct memory_process_info_t*) malloc( sizeof(struct memory_process_info_t)); p_mem->p_process = p_process; p_mem->memory_use = 0; p_mem->nb_malloc = 0; p_mem->nb_free = 0; p_mem->total_malloced = 0; p_mem->total_freed = 0; p_mem->max_mem_used = 0; /* add the hook in the thread info structure */ ezt_hook_list_add(&p_mem->p_process->hooks, p_mem, (uint8_t) EZTRACE_MEMORY_EVENTS_ID); return p_mem; } #define INIT_MEMORY_PROCESS_INFO(p_process, var) \ struct memory_process_info_t *var = (struct memory_process_info_t*) \ ezt_hook_list_retrieve_data(&p_process->hooks, (uint8_t)EZTRACE_MEMORY_EVENTS_ID); \ if(!(var)) { \ var = __register_process_hook(p_process); \ } void handle_memory_malloc() { FUNC_NAME; /* warning: this function may be called before the trace is started (eg. before MPI_Init is detected) * so proc_id may be undefined. * In this case, proc_id is used only after MPI_Init, so there's no real problem. */ DECLARE_PROCESS_ID_STR(proc_id, CUR_INDEX); size_t block_size; app_ptr ptr; GET_PARAM_PACKED_2(CUR_EV, block_size, ptr); DECLARE_CUR_PROCESS(p_process); INIT_MEMORY_PROCESS_INFO(p_process, p_mem); p_mem->nb_malloc++; p_mem->memory_use += block_size; p_mem->total_malloced += block_size; if (p_mem->memory_use > p_mem->max_mem_used) p_mem->max_mem_used = p_mem->memory_use; MEMORY_CHANGE() setVar(CURRENT, "V_Mem", proc_id, p_mem->memory_use); } void handle_memory_realloc() { FUNC_NAME; /* warning: this function may be called before the trace is started (eg. before MPI_Init is detected) * so proc_id may be undefined. * In this case, proc_id is used only after MPI_Init, so there's no real problem. */ DECLARE_PROCESS_ID_STR(proc_id, CUR_INDEX); size_t old_size; size_t new_size; app_ptr ptr; GET_PARAM_PACKED_3(CUR_EV, old_size, new_size, ptr); DECLARE_CUR_PROCESS(p_process); INIT_MEMORY_PROCESS_INFO(p_process, p_mem); p_mem->nb_malloc++; p_mem->nb_free++; p_mem->memory_use += new_size - old_size; p_mem->total_malloced += new_size - old_size; if (p_mem->memory_use > p_mem->max_mem_used) p_mem->max_mem_used = p_mem->memory_use; MEMORY_CHANGE() setVar(CURRENT, "V_Mem", proc_id, p_mem->memory_use); } void handle_memory_free() { FUNC_NAME; /* warning: this function may be called before the trace is started (eg. before MPI_Init is detected) * so proc_id may be undefined. * In this case, proc_id is used only after MPI_Init, so there's no real problem. */ DECLARE_PROCESS_ID_STR(proc_id, CUR_INDEX); size_t block_size; app_ptr ptr; GET_PARAM_PACKED_2(CUR_EV, block_size, ptr); DECLARE_CUR_PROCESS(p_process); INIT_MEMORY_PROCESS_INFO(p_process, p_mem); p_mem->nb_free++; if (p_mem->memory_use >= block_size) p_mem->memory_use -= block_size; else { fprintf( stderr, "t=%lf\tWarning: %s frees %ld bytes, but only %ld are currently allocated\n", CURRENT, CUR_ID, block_size, p_mem->memory_use); p_mem->memory_use = 0; } p_mem->total_freed += block_size; MEMORY_CHANGE() setVar(CURRENT, "V_Mem", proc_id, p_mem->memory_use); } int eztrace_convert_memory_init() { if (get_mode() == EZTRACE_CONVERT) { addVarType("V_Mem", "Memory used", "CT_Process"); } return 0; } /* return 1 if the event was handled */ int handle_memory_events(eztrace_event_t *ev) { switch (LITL_READ_GET_CODE(ev)) { case EZTRACE_MEMORY_MALLOC: handle_memory_malloc(); break; case EZTRACE_MEMORY_FREE: handle_memory_free(); break; case EZTRACE_MEMORY_REALLOC: handle_memory_realloc(); break; default: return 0; } return 1; } int handle_memory_stats(eztrace_event_t *ev) { recording_stats = 1; return handle_memory_events(ev); } void print_memory_stats() { printf("\nMEMORY:\n"); printf("-------\n"); int i; uint32_t nb_malloc = 0; uint32_t nb_free = 0; uint64_t total_malloced = 0; uint64_t total_freed = 0; uint64_t max_mem_used = 0; for (i = 0; i < NB_TRACES; i++) { struct process_info_t *p_process = GET_PROCESS_INFO(i); struct memory_process_info_t *p_info = (struct memory_process_info_t*) ezt_hook_list_retrieve_data( &p_process->hooks, (uint8_t) EZTRACE_MEMORY_EVENTS_ID); if (!p_info) { printf("No p_info for %s\n", p_process->container->name); continue; /* No memory process info attached, skip this process */ } nb_malloc += p_info->nb_malloc; nb_free += p_info->nb_free; total_malloced += p_info->total_malloced; total_freed += p_info->total_freed; if (p_info->max_mem_used > max_mem_used) max_mem_used = p_info->max_mem_used; printf("\t%s:\t", p_process->container->name); printf("%u malloc (total: %lu bytes)\t", p_info->nb_malloc, p_info->total_malloced); printf("%u free (total: %lu bytes)\t", p_info->nb_free, p_info->total_freed); printf("maximum memory used: %"PRTIu64" bytes\n", p_info->max_mem_used); } printf("Total:\t"); printf("%u malloc (total: %"PRTIu64" bytes)\t", nb_malloc, total_malloced); printf("%u free (total: %"PRTIu64" bytes)\t", nb_free, total_freed); printf("maximum memory used: %"PRTIu64" bytes\n", max_mem_used); } struct eztrace_convert_module memory_module; void libinit(void) __attribute__ ((constructor)); void libinit(void) { memory_module.api_version = EZTRACE_API_VERSION; memory_module.init = eztrace_convert_memory_init; memory_module.handle = handle_memory_events; memory_module.handle_stats = handle_memory_stats; memory_module.print_stats = print_memory_stats; memory_module.module_prefix = EZTRACE_MEMORY_EVENTS_ID; int res __attribute__ ((__unused__)); res = asprintf(&memory_module.name, "memory"); res = asprintf(&memory_module.description, "Module for memory functions (malloc, free, etc.)"); memory_module.token.data = &memory_module; eztrace_convert_register_module(&memory_module); } void libfinalize(void) __attribute__ ((destructor)); void libfinalize(void) { } eztrace-1.1-7/src/modules/memory/PaxHeaders.7332/memory.c0000644000000000000000000000013213143047722020055 xustar0030 mtime=1502367698.660456018 30 atime=1508138916.300927504 30 ctime=1508162368.333959737 eztrace-1.1-7/src/modules/memory/memory.c0000644000175000017500000002253213143047722021250 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 /* or _BSD_SOURCE or _SVID_SOURCE */ #define _REENTRANT #include #include #include #include #include #include "memory_ev_codes.h" #include "eztrace.h" #include "eztrace_litl_packed.h" #include "pptrace.h" /* set to 1 when all the hooks are set. * This is useful in order to avoid recursive calls */ static int __memory_initialized = 0; #define MAGIC_PATTERN 0xdeadbeef /* when a buffer is allocated with eztrace, it has the following pattern: * PADDING BLOCK_INFO USER_BLOCK * block_info has to be right-aligned because of calloc. * the address should be a multiple of 8 bytes in order to avoid bugs * (if not aligned, some weird bugs may happen when using -O3) */ enum __memory_type { MEM_TYPE_MALLOC, MEM_TYPE_CUSTOM_MALLOC }; /* todo: we could add information like: * - date of malloc * - thread id that allocated the block * - NUMA node ? */ struct mem_block_info { void* u_ptr; /* address of the user block */ void* p_ptr; /* address of the padding */ enum __memory_type mem_type; size_t total_size; /* size allocated (including this structure) */ size_t size; /* size of the buffer (not including this structure) */ /* WARNING: this must be the last field of the structure */ uint32_t canary; /* this is used for checking that we malloc'ed the buffer */ }__attribute__((__packed__)); /* size of the padding + mem_info structure */ #define GET_HEADER_SIZE() (sizeof(struct mem_block_info)) #define CANARY_OK(u_ptr) ((*(uint32_t*)((u_ptr) - sizeof(uint32_t))) == MAGIC_PATTERN) /* converts a pointer to a user_block into a pointer to the block info */ #define USER_PTR_TO_BLOCK_INFO(u_ptr, b_ptr) \ do { \ if(! CANARY_OK(u_ptr)) { \ /* we didn't malloc this buffer */ \ (b_ptr) = NULL; \ break; \ } \ b_ptr = (void*)(ptr - (void*)sizeof(struct mem_block_info)); \ }while(0) /* converts a pointer to a user_block into a pointer to the padding */ #define USER_PTR_TO_PADDING(u_ptr, p_ptr) \ do { \ struct mem_block_info *b_ptr; \ USER_PTR_TO_BLOCK_INFO(u_ptr, b_ptr); \ if(!b_ptr) { \ (p_ptr) = NULL; \ break; \ } \ (p_ptr) = b_ptr->p_ptr; \ } while(0) /* fill a mem_info structure * @param p_mem the mem_info* structure to fill * @param ptr the address returned by (m,c,re)alloc * @param nmemb the number of elements * @param block_size the size of 1 element */ #define INIT_MEM_INFO(p_mem, ptr, nmemb, block_size) \ do { \ unsigned int nb_memb_header = GET_HEADER_SIZE() / block_size; \ if(block_size*nb_memb_header < GET_HEADER_SIZE()) \ nb_memb_header++; \ void* u_ptr = ptr + (block_size*nb_memb_header); \ p_mem = u_ptr - sizeof(struct mem_block_info); \ p_mem->p_ptr = ptr; \ p_mem->total_size = (nmemb + nb_memb_header) * block_size; \ p_mem->size = nmemb * block_size; \ p_mem->u_ptr = u_ptr; \ p_mem->canary = MAGIC_PATTERN; \ } while(0) /* todo: also implement mmap and munmap ? */ void* (*libcalloc)(size_t nmemb, size_t size) = NULL; void* (*libmalloc)(size_t size) = NULL; void (*libfree)(void *ptr) = NULL; void* (*librealloc)(void *ptr, size_t size) = NULL; static int malloc_protect_on = 0; /* Custom malloc function. It is used when libmalloc=NULL (e.g. during startup) * This function is not thread-safe and is very likely to be bogus, so use with * caution */ static void* hand_made_malloc(size_t size) { /* allocate a 1MB buffer */ #define POOL_SIZE (1024 * 1024) static char mem[POOL_SIZE] = {'\0'}; /* since this function is only used before we found libmalloc, there's no * fancy memory management mechanism (block reuse, etc.) */ static char* next_slot = &mem[0]; static int total_alloc = 0; if (libmalloc) /* let's use the real malloc */ return malloc(size); struct mem_block_info *p_block = NULL; INIT_MEM_INFO(p_block, next_slot, size, 1); p_block->mem_type = MEM_TYPE_CUSTOM_MALLOC; total_alloc += size; next_slot = next_slot + p_block->total_size; return p_block->u_ptr; } void* malloc(size_t size) { /* if memory_init hasn't been called yet, we need to get libc's malloc * address */ if (!libmalloc) { if (malloc_protect_on) /* protection flag says that malloc is already trying to retrieve the * address of malloc. * If we call dlsym now, there will be an infinite recursion, so let's * allocate memory 'by hand' */ return hand_made_malloc(size); /* set the protection flag and retrieve the address of malloc. * If dlsym calls malloc, memory will be allocated 'by hand' */ malloc_protect_on = 1; libmalloc = dlsym(RTLD_NEXT, "malloc"); char* error; if ((error = dlerror()) != NULL) { fputs(error, stderr); exit(1); } /* it is now safe to call libmalloc */ malloc_protect_on = 0; } FUNCTION_ENTRY; EZTRACE_PROTECT { void* pptr = libmalloc(size + GET_HEADER_SIZE()); struct mem_block_info *p_block = NULL; INIT_MEM_INFO(p_block, pptr, size, 1); p_block->mem_type = MEM_TYPE_MALLOC; EZTRACE_EVENT_PACKED_2(EZTRACE_MEMORY_MALLOC, p_block->size, (app_ptr)p_block->u_ptr); #if 0 /* for debugging purpose only */ uint32_t* canary = p_block->u_ptr-sizeof(uint32_t); if(*canary != MAGIC_PATTERN) { fprintf(stderr, "warning: canary = %x instead of %x\n", *canary, MAGIC_PATTERN); } #endif return p_block->u_ptr; } return libmalloc(size); } void* realloc(void *ptr, size_t size) { /* if ptr is NULL, realloc behaves like malloc */ if (!ptr) return malloc(size); /* if size=0 and ptr isn't NULL, realloc behaves like free */ if (!size && ptr) { free(ptr); return NULL; } FUNCTION_ENTRY; if (!librealloc) { librealloc = dlsym(RTLD_NEXT, "realloc"); char* error; if ((error = dlerror()) != NULL) { fputs(error, stderr); exit(1); } } if (!CANARY_OK(ptr)) { /* we didn't malloc'ed this buffer */ return librealloc(ptr, size); } EZTRACE_PROTECT { struct mem_block_info *p_block; USER_PTR_TO_BLOCK_INFO(ptr, p_block); size_t old_size = p_block->size; size_t header_size = p_block->total_size - p_block->size; if (p_block->mem_type != MEM_TYPE_MALLOC) { fprintf( stderr, "Warning: realloc a ptr that was allocated by hand_made_malloc\n"); } void *pptr = librealloc(p_block->p_ptr, size + header_size); if (!p_block) { return NULL; } INIT_MEM_INFO(p_block, pptr, size + header_size, 1); p_block->mem_type = MEM_TYPE_MALLOC; EZTRACE_EVENT_PACKED_3(EZTRACE_MEMORY_REALLOC, old_size, p_block->size, (app_ptr)p_block->u_ptr); return p_block->u_ptr; } return librealloc(ptr, size); } void* calloc(size_t nmemb, size_t size) { if (!libcalloc) { void* ret = hand_made_malloc(nmemb * size); if (ret) { memset(ret, 0, nmemb * size); } return ret; } FUNCTION_ENTRY; EZTRACE_PROTECT { /* compute the number of blocks for header */ int nb_memb_header = sizeof(struct mem_block_info) / size; if (size * nb_memb_header < sizeof(struct mem_block_info)) nb_memb_header++; /* allocate buffer + header */ void* p_ptr = libcalloc(nmemb + nb_memb_header, size); struct mem_block_info *p_block = NULL; INIT_MEM_INFO(p_block, p_ptr, nmemb, size); p_block->mem_type = MEM_TYPE_MALLOC; EZTRACE_EVENT_PACKED_2(EZTRACE_MEMORY_MALLOC, p_block->size, (app_ptr)p_block->u_ptr); #if 0 /* for debugging purpose only */ uint32_t* canary = p_block->u_ptr-sizeof(uint32_t); if(*canary != MAGIC_PATTERN) { fprintf(stderr, "warning: canary = %x instead of %x\n", *canary, MAGIC_PATTERN); } #endif return p_block->u_ptr; } return libcalloc(nmemb, size); } void free(void* ptr) { if (!libfree) { libfree = dlsym(RTLD_NEXT, "free"); char* error; if ((error = dlerror()) != NULL) { fputs(error, stderr); exit(1); } } FUNCTION_ENTRY; if (!ptr) { libfree(ptr); return; } /* first, check wether we malloc'ed the buffer */ if (!CANARY_OK(ptr)) { /* we didn't malloc this buffer */ libfree(ptr); return; } /* retrieve the block information and free it */ EZTRACE_PROTECT { struct mem_block_info *p_block; USER_PTR_TO_BLOCK_INFO(ptr, p_block); if (p_block->mem_type == MEM_TYPE_MALLOC) { EZTRACE_EVENT_PACKED_2(EZTRACE_MEMORY_FREE, p_block->size, (app_ptr)p_block->u_ptr); libfree(p_block->p_ptr); } else { /* the buffer was allocated by hand_made_malloc, there's nothing to free */ } } } START_INTERCEPT_MODULE(memory) INTERCEPT2("malloc", libmalloc) INTERCEPT2("calloc", libcalloc) INTERCEPT2("realloc", librealloc) INTERCEPT2("free", libfree) END_INTERCEPT_MODULE(memory) static void __memory_init(void) __attribute__ ((constructor)); static void __memory_init(void) { malloc_protect_on = 1; DYNAMIC_INTERCEPT_ALL_MODULE(memory); #ifdef EZTRACE_AUTOSTART eztrace_start (); #endif malloc_protect_on = 0; __memory_initialized = 1; } static void __memory_conclude(void) __attribute__ ((destructor)); static void __memory_conclude(void) { __memory_initialized = 0; eztrace_stop(); } eztrace-1.1-7/src/modules/memory/PaxHeaders.7332/memory_ev_codes.h0000644000000000000000000000013213143047722021731 xustar0030 mtime=1502367698.660456018 30 atime=1508138916.316927904 30 ctime=1508162368.329959387 eztrace-1.1-7/src/modules/memory/memory_ev_codes.h0000644000175000017500000000125113143047722023117 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef __MEMORY_EV_CODES_H__ #define __MEMORY_EV_CODES_H__ #include "ev_codes.h" #define EZTRACE_MEMORY_EVENTS_ID SYSTEM_MODULE_ID(0x05) #define EZTRACE_MEMORY_PREFIX GENERATE_SYSTEM_MODULE_PREFIX(EZTRACE_MEMORY_EVENTS_ID) #define EZTRACE_MEMORY_MALLOC (EZTRACE_MEMORY_PREFIX | 0X0001) #define EZTRACE_MEMORY_CALLOC (EZTRACE_MEMORY_PREFIX | 0X0002) #define EZTRACE_MEMORY_REALLOC (EZTRACE_MEMORY_PREFIX | 0X0003) #define EZTRACE_MEMORY_FREE (EZTRACE_MEMORY_PREFIX | 0X0010) #endif /* __MEMORY_EV_CODES_H__ */ eztrace-1.1-7/src/modules/memory/PaxHeaders.7332/Makefile.am0000644000000000000000000000013213012560437020433 xustar0030 mtime=1479205151.280727163 30 atime=1508162219.805820408 30 ctime=1508162368.329959387 eztrace-1.1-7/src/modules/memory/Makefile.am0000644000175000017500000000267713012560437021636 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis # See COPYING in top-level directory. TLCFLAGS=$(TL_CPPFLAGS) TLLDFLAGS=$(TL_LDFLAGS) TLLIBADD=$(TL_LIB) GTGCFLAGS=$(GTG_CPPFLAGS) GTGLDFLAGS=$(GTG_LDFLAGS) GTGDEPENDENCIES = $(GTG_DEPENDENCIES) GTGLIBADD=$(GTG_LIB) lib_LTLIBRARIES = libeztrace-convert-memory.la \ libeztrace-memory.la \ libeztrace-autostart-memory.la AM_CFLAGS = -W -Wall -Wextra -I$(srcdir)/../../core/ -I$(top_builddir)/src/core \ -I$(top_srcdir)/src/pptrace libeztrace_convert_memory_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(GTGCFLAGS) libeztrace_convert_memory_la_LIBADD = $(TLLIBADD) $(GTGLIBADD) libeztrace_convert_memory_la_LDFLAGS = $(GTGLDFLAGS) $(TLLDFLAGS) libeztrace_convert_memory_la_SOURCES = eztrace_convert_memory.c libeztrace_convert_memory_la_DEPENDENCIES = $(GTGDEPENDENCIES) libeztrace_memory_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) libeztrace_memory_la_LIBADD = $(TLLIBADD) libeztrace_memory_la_LDFLAGS = --no-undefined $(TLLDFLAGS) libeztrace_memory_la_SOURCES = memory.c libeztrace_autostart_memory_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) libeztrace_autostart_memory_la_LIBADD = $(TLLIBADD) libeztrace_autostart_memory_la_LDFLAGS = --no-undefined $(TLLDFLAGS) libeztrace_autostart_memory_la_CFLAGS = $(AM_CFLAGS) -W -Wall -Wextra \ -DEZTRACE_AUTOSTART libeztrace_autostart_memory_la_SOURCES = memory.c noinst_HEADERS = memory_ev_codes.h eztrace-1.1-7/src/modules/memory/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135253020444 xustar0030 mtime=1508162219.833822463 30 atime=1508162286.663030766 30 ctime=1508162368.329959387 eztrace-1.1-7/src/modules/memory/Makefile.in0000644000175000017500000007235113171135253021643 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src/modules/memory ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) libeztrace_autostart_memory_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_libeztrace_autostart_memory_la_OBJECTS = \ libeztrace_autostart_memory_la-memory.lo libeztrace_autostart_memory_la_OBJECTS = \ $(am_libeztrace_autostart_memory_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libeztrace_autostart_memory_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(libeztrace_autostart_memory_la_CFLAGS) $(CFLAGS) \ $(libeztrace_autostart_memory_la_LDFLAGS) $(LDFLAGS) -o $@ am_libeztrace_convert_memory_la_OBJECTS = \ libeztrace_convert_memory_la-eztrace_convert_memory.lo libeztrace_convert_memory_la_OBJECTS = \ $(am_libeztrace_convert_memory_la_OBJECTS) libeztrace_convert_memory_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libeztrace_convert_memory_la_LDFLAGS) \ $(LDFLAGS) -o $@ libeztrace_memory_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_libeztrace_memory_la_OBJECTS = libeztrace_memory_la-memory.lo libeztrace_memory_la_OBJECTS = $(am_libeztrace_memory_la_OBJECTS) libeztrace_memory_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libeztrace_memory_la_LDFLAGS) \ $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libeztrace_autostart_memory_la_SOURCES) \ $(libeztrace_convert_memory_la_SOURCES) \ $(libeztrace_memory_la_SOURCES) DIST_SOURCES = $(libeztrace_autostart_memory_la_SOURCES) \ $(libeztrace_convert_memory_la_SOURCES) \ $(libeztrace_memory_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUDA_CFLAGS = @CUDA_CFLAGS@ CUDA_LDFLAGS = @CUDA_LDFLAGS@ CUDA_LIBS = @CUDA_LIBS@ CUDA_ROOT = @CUDA_ROOT@ CUPTI_CFLAGS = @CUPTI_CFLAGS@ CUPTI_LDFLAGS = @CUPTI_LDFLAGS@ CUPTI_LIBS = @CUPTI_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ DYNLIB_EXT = @DYNLIB_EXT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ GTGDIR = @GTGDIR@ GTG_CPPFLAGS = @GTG_CPPFLAGS@ GTG_DEPENDENCIES = @GTG_DEPENDENCIES@ GTG_EXT_CPPFLAGS = @GTG_EXT_CPPFLAGS@ GTG_EXT_LDFLAGS = @GTG_EXT_LDFLAGS@ GTG_EXT_LIB = @GTG_EXT_LIB@ GTG_LDFLAGS = @GTG_LDFLAGS@ GTG_LIB = @GTG_LIB@ GTG_OUT_OF_ORDER = @GTG_OUT_OF_ORDER@ HAVE_ENV = @HAVE_ENV@ HAVE_LIBBACKTRACE = @HAVE_LIBBACKTRACE@ HAVE_LIBOPCODE = @HAVE_LIBOPCODE@ HAVE_PRCTL_H = @HAVE_PRCTL_H@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LD_LIBRARY_PATH_NAME = @LD_LIBRARY_PATH_NAME@ LD_PRELOAD_NAME = @LD_PRELOAD_NAME@ LIBBACKTRACE_CPPFLAGS = @LIBBACKTRACE_CPPFLAGS@ LIBBACKTRACE_LDFLAGS = @LIBBACKTRACE_LDFLAGS@ LIBBACKTRACE_LIB = @LIBBACKTRACE_LIB@ LIBBACKTRACE_ROOT = @LIBBACKTRACE_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LITL_PRINT = @LITL_PRINT@ LITL_ROOT = @LITL_ROOT@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPI_CFLAGS = @MPI_CFLAGS@ MPI_EVENT_ID = @MPI_EVENT_ID@ MPI_INC = @MPI_INC@ MPI_LDFLAGS = @MPI_LDFLAGS@ MPI_MODULE_NAME = @MPI_MODULE_NAME@ MPI_ROOT = @MPI_ROOT@ NM = @NM@ NMEDIT = @NMEDIT@ NVCC = @NVCC@ NVCCFLAGS = @NVCCFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAPIDIR = @PAPIDIR@ PAPI_CPPFLAGS = @PAPI_CPPFLAGS@ PAPI_ENABLED = @PAPI_ENABLED@ PAPI_LDFLAGS = @PAPI_LDFLAGS@ PAPI_LIBDIR = @PAPI_LIBDIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PPTRACE_BINARY_TYPE = @PPTRACE_BINARY_TYPE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STARPU_CFLAGS = @STARPU_CFLAGS@ STARPU_CPPFLAGS = @STARPU_CPPFLAGS@ STARPU_LDFLAGS = @STARPU_LDFLAGS@ STARPU_LIBS = @STARPU_LIBS@ STARPU_ROOT = @STARPU_ROOT@ STRIP = @STRIP@ TARGET_BITS = @TARGET_BITS@ TL_CPPFLAGS = @TL_CPPFLAGS@ TL_EXT_CPPFLAGS = @TL_EXT_CPPFLAGS@ TL_EXT_LDFLAGS = @TL_EXT_LDFLAGS@ TL_EXT_LIB = @TL_EXT_LIB@ TL_LDFLAGS = @TL_LDFLAGS@ TL_LIB = @TL_LIB@ USE_BIN_INSTRUMENTATION = @USE_BIN_INSTRUMENTATION@ USE_CUDADIR_FROM_USER = @USE_CUDADIR_FROM_USER@ USE_GETTID = @USE_GETTID@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ USE_PAPIDIR_FROM_USER = @USE_PAPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ TLCFLAGS = $(TL_CPPFLAGS) TLLDFLAGS = $(TL_LDFLAGS) TLLIBADD = $(TL_LIB) GTGCFLAGS = $(GTG_CPPFLAGS) GTGLDFLAGS = $(GTG_LDFLAGS) GTGDEPENDENCIES = $(GTG_DEPENDENCIES) GTGLIBADD = $(GTG_LIB) lib_LTLIBRARIES = libeztrace-convert-memory.la \ libeztrace-memory.la \ libeztrace-autostart-memory.la AM_CFLAGS = -W -Wall -Wextra -I$(srcdir)/../../core/ -I$(top_builddir)/src/core \ -I$(top_srcdir)/src/pptrace libeztrace_convert_memory_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(GTGCFLAGS) libeztrace_convert_memory_la_LIBADD = $(TLLIBADD) $(GTGLIBADD) libeztrace_convert_memory_la_LDFLAGS = $(GTGLDFLAGS) $(TLLDFLAGS) libeztrace_convert_memory_la_SOURCES = eztrace_convert_memory.c libeztrace_convert_memory_la_DEPENDENCIES = $(GTGDEPENDENCIES) libeztrace_memory_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) libeztrace_memory_la_LIBADD = $(TLLIBADD) libeztrace_memory_la_LDFLAGS = --no-undefined $(TLLDFLAGS) libeztrace_memory_la_SOURCES = memory.c libeztrace_autostart_memory_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) libeztrace_autostart_memory_la_LIBADD = $(TLLIBADD) libeztrace_autostart_memory_la_LDFLAGS = --no-undefined $(TLLDFLAGS) libeztrace_autostart_memory_la_CFLAGS = $(AM_CFLAGS) -W -Wall -Wextra \ -DEZTRACE_AUTOSTART libeztrace_autostart_memory_la_SOURCES = memory.c noinst_HEADERS = memory_ev_codes.h all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/modules/memory/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/modules/memory/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libeztrace-autostart-memory.la: $(libeztrace_autostart_memory_la_OBJECTS) $(libeztrace_autostart_memory_la_DEPENDENCIES) $(EXTRA_libeztrace_autostart_memory_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_autostart_memory_la_LINK) -rpath $(libdir) $(libeztrace_autostart_memory_la_OBJECTS) $(libeztrace_autostart_memory_la_LIBADD) $(LIBS) libeztrace-convert-memory.la: $(libeztrace_convert_memory_la_OBJECTS) $(libeztrace_convert_memory_la_DEPENDENCIES) $(EXTRA_libeztrace_convert_memory_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_convert_memory_la_LINK) -rpath $(libdir) $(libeztrace_convert_memory_la_OBJECTS) $(libeztrace_convert_memory_la_LIBADD) $(LIBS) libeztrace-memory.la: $(libeztrace_memory_la_OBJECTS) $(libeztrace_memory_la_DEPENDENCIES) $(EXTRA_libeztrace_memory_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_memory_la_LINK) -rpath $(libdir) $(libeztrace_memory_la_OBJECTS) $(libeztrace_memory_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_autostart_memory_la-memory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_convert_memory_la-eztrace_convert_memory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_memory_la-memory.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libeztrace_autostart_memory_la-memory.lo: memory.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_memory_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_memory_la_CFLAGS) $(CFLAGS) -MT libeztrace_autostart_memory_la-memory.lo -MD -MP -MF $(DEPDIR)/libeztrace_autostart_memory_la-memory.Tpo -c -o libeztrace_autostart_memory_la-memory.lo `test -f 'memory.c' || echo '$(srcdir)/'`memory.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_autostart_memory_la-memory.Tpo $(DEPDIR)/libeztrace_autostart_memory_la-memory.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='memory.c' object='libeztrace_autostart_memory_la-memory.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_memory_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_memory_la_CFLAGS) $(CFLAGS) -c -o libeztrace_autostart_memory_la-memory.lo `test -f 'memory.c' || echo '$(srcdir)/'`memory.c libeztrace_convert_memory_la-eztrace_convert_memory.lo: eztrace_convert_memory.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_memory_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_convert_memory_la-eztrace_convert_memory.lo -MD -MP -MF $(DEPDIR)/libeztrace_convert_memory_la-eztrace_convert_memory.Tpo -c -o libeztrace_convert_memory_la-eztrace_convert_memory.lo `test -f 'eztrace_convert_memory.c' || echo '$(srcdir)/'`eztrace_convert_memory.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_convert_memory_la-eztrace_convert_memory.Tpo $(DEPDIR)/libeztrace_convert_memory_la-eztrace_convert_memory.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_convert_memory.c' object='libeztrace_convert_memory_la-eztrace_convert_memory.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_memory_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_convert_memory_la-eztrace_convert_memory.lo `test -f 'eztrace_convert_memory.c' || echo '$(srcdir)/'`eztrace_convert_memory.c libeztrace_memory_la-memory.lo: memory.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_memory_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_memory_la-memory.lo -MD -MP -MF $(DEPDIR)/libeztrace_memory_la-memory.Tpo -c -o libeztrace_memory_la-memory.lo `test -f 'memory.c' || echo '$(srcdir)/'`memory.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_memory_la-memory.Tpo $(DEPDIR)/libeztrace_memory_la-memory.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='memory.c' object='libeztrace_memory_la-memory.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_memory_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_memory_la-memory.lo `test -f 'memory.c' || echo '$(srcdir)/'`memory.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libLTLIBRARIES install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/src/modules/PaxHeaders.7332/omp0000644000000000000000000000013213171135477015615 xustar0030 mtime=1508162367.905922338 30 atime=1508162372.166294941 30 ctime=1508162367.905922338 eztrace-1.1-7/src/modules/omp/0000755000175000017500000000000013171135477017061 5ustar00trahaytrahay00000000000000eztrace-1.1-7/src/modules/omp/PaxHeaders.7332/gomp_ev_codes.h0000644000000000000000000000013113143047722020645 xustar0030 mtime=1502367698.672456313 30 atime=1508138886.904193345 29 ctime=1508162367.89392129 eztrace-1.1-7/src/modules/omp/gomp_ev_codes.h0000644000175000017500000001075013143047722022040 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef __GOMP_EV_CODES_H__ #define __GOMP_EV_CODES_H__ #include "ev_codes.h" #define EZTRACE_GOMP_EVENTS_ID SYSTEM_MODULE_ID(0x01) #define EZTRACE_GOMP_PREFIX GENERATE_SYSTEM_MODULE_PREFIX(EZTRACE_GOMP_EVENTS_ID) #define EZTRACE_GOMP_PARALLEL_START (EZTRACE_GOMP_PREFIX | 0x0001) #define EZTRACE_GOMP_NEW_FORK (EZTRACE_GOMP_PREFIX | 0x0002) #define EZTRACE_GOMP_NEW_JOIN (EZTRACE_GOMP_PREFIX | 0x0003) #define EZTRACE_GOMP_JOIN_DONE (EZTRACE_GOMP_PREFIX | 0x0004) #define EZTRACE_GOMP_CRITICAL_START (EZTRACE_GOMP_PREFIX | 0x0005) #define EZTRACE_GOMP_CRITICAL_START_DONE (EZTRACE_GOMP_PREFIX | 0x0006) #define EZTRACE_GOMP_CRITICAL_STOP (EZTRACE_GOMP_PREFIX | 0x0007) #define EZTRACE_POMP2_FINALIZE (EZTRACE_GOMP_PREFIX | 0xffff) #define EZTRACE_POMP2_ATOMIC_ENTER (EZTRACE_GOMP_PREFIX | 0x0010) #define EZTRACE_POMP2_ATOMIC_EXIT (EZTRACE_GOMP_PREFIX | 0x0011) #define EZTRACE_POMP2_BARRIER_ENTER (EZTRACE_GOMP_PREFIX | 0x0020) #define EZTRACE_POMP2_BARRIER_EXIT (EZTRACE_GOMP_PREFIX | 0x0021) #define EZTRACE_POMP2_IMPLICIT_BARRIER_ENTER (EZTRACE_GOMP_PREFIX | 0x0022) #define EZTRACE_POMP2_IMPLICIT_BARRIER_EXIT (EZTRACE_GOMP_PREFIX | 0x0023) #define EZTRACE_POMP2_FLUSH_ENTER (EZTRACE_GOMP_PREFIX | 0x0030) #define EZTRACE_POMP2_FLUSH_EXIT (EZTRACE_GOMP_PREFIX | 0x0031) #define EZTRACE_POMP2_CRITICAL_ENTER (EZTRACE_GOMP_PREFIX | 0x0040) #define EZTRACE_POMP2_CRITICAL_EXIT (EZTRACE_GOMP_PREFIX | 0x0041) #define EZTRACE_POMP2_CRITICAL_BEGIN (EZTRACE_GOMP_PREFIX | 0x0042) #define EZTRACE_POMP2_CRITICAL_END (EZTRACE_GOMP_PREFIX | 0x0043) #define EZTRACE_POMP2_FOR_ENTER (EZTRACE_GOMP_PREFIX | 0x0050) #define EZTRACE_POMP2_FOR_EXIT (EZTRACE_GOMP_PREFIX | 0x0051) #define EZTRACE_POMP2_FOR_ENTER_EXTRA (EZTRACE_GOMP_PREFIX | 0x0052) #define EZTRACE_POMP2_MASTER_BEGIN (EZTRACE_GOMP_PREFIX | 0x0060) #define EZTRACE_POMP2_MASTER_END (EZTRACE_GOMP_PREFIX | 0x0061) #define EZTRACE_POMP2_PARALLEL_BEGIN (EZTRACE_GOMP_PREFIX | 0x0070) #define EZTRACE_POMP2_PARALLEL_END (EZTRACE_GOMP_PREFIX | 0x0071) #define EZTRACE_POMP2_PARALLEL_FORK (EZTRACE_GOMP_PREFIX | 0x0072) #define EZTRACE_POMP2_PARALLEL_JOIN (EZTRACE_GOMP_PREFIX | 0x0073) #define EZTRACE_POMP2_SECTIONS_ENTER (EZTRACE_GOMP_PREFIX | 0x0080) #define EZTRACE_POMP2_SECTIONS_EXIT (EZTRACE_GOMP_PREFIX | 0x0081) #define EZTRACE_POMP2_SECTION_BEGIN (EZTRACE_GOMP_PREFIX | 0x0082) #define EZTRACE_POMP2_SECTION_END (EZTRACE_GOMP_PREFIX | 0x0083) #define EZTRACE_POMP2_SINGLE_ENTER (EZTRACE_GOMP_PREFIX | 0x0090) #define EZTRACE_POMP2_SINGLE_EXIT (EZTRACE_GOMP_PREFIX | 0x0091) #define EZTRACE_POMP2_SINGLE_BEGIN (EZTRACE_GOMP_PREFIX | 0x0092) #define EZTRACE_POMP2_SINGLE_END (EZTRACE_GOMP_PREFIX | 0x0093) #define EZTRACE_POMP2_WORKSHARE_ENTER (EZTRACE_GOMP_PREFIX | 0x00a0) #define EZTRACE_POMP2_WORKSHARE_EXIT (EZTRACE_GOMP_PREFIX | 0x00a1) #define EZTRACE_POMP2_TASK_BEGIN (EZTRACE_GOMP_PREFIX | 0x00b0) #define EZTRACE_POMP2_TASK_END (EZTRACE_GOMP_PREFIX | 0x00b1) #define EZTRACE_POMP2_TASK_CREATE_BEGIN (EZTRACE_GOMP_PREFIX | 0x00b2) #define EZTRACE_POMP2_TASK_CREATE_END (EZTRACE_GOMP_PREFIX | 0x00b3) #define EZTRACE_POMP2_UNTIED_TASK_BEGIN (EZTRACE_GOMP_PREFIX | 0x00b4) #define EZTRACE_POMP2_UNTIED_TASK_END (EZTRACE_GOMP_PREFIX | 0x00b5) #define EZTRACE_POMP2_UNTIED_TASK_CREATE_BEGIN (EZTRACE_GOMP_PREFIX | 0x00b6) #define EZTRACE_POMP2_UNTIED_TASK_CREATE_END (EZTRACE_GOMP_PREFIX | 0x00b7) #define EZTRACE_POMP2_TASKWAIT_BEGIN (EZTRACE_GOMP_PREFIX | 0x00b8) #define EZTRACE_POMP2_TASKWAIT_END (EZTRACE_GOMP_PREFIX | 0x00b9) #define EZTRACE_POMP2_TASK_INFO (EZTRACE_GOMP_PREFIX | 0x00ba) #ifdef OPENMP_FOUND #define EZTRACE_POMP2_SET_LOCK_ENTRY (EZTRACE_GOMP_PREFIX | 0x0101) #define EZTRACE_POMP2_SET_LOCK_EXIT (EZTRACE_GOMP_PREFIX | 0x0102) #define EZTRACE_POMP2_TEST_LOCK_SUCCESS (EZTRACE_GOMP_PREFIX | 0x0103) #define EZTRACE_POMP2_UNSET_LOCK (EZTRACE_GOMP_PREFIX | 0x0104) #define EZTRACE_POMP2_SET_NEST_LOCK_ENTRY (EZTRACE_GOMP_PREFIX | 0x0111) #define EZTRACE_POMP2_SET_NEST_LOCK_EXIT (EZTRACE_GOMP_PREFIX | 0x0112) #define EZTRACE_POMP2_TEST_NEST_LOCK_SUCCESS (EZTRACE_GOMP_PREFIX | 0x0113) #define EZTRACE_POMP2_UNSET_NEST_LOCK (EZTRACE_GOMP_PREFIX | 0x0114) #endif /* OPENMP_FOUND */ #endif /* __GOMP_EV_CODES_H__ */ eztrace-1.1-7/src/modules/omp/PaxHeaders.7332/gomp.c0000644000000000000000000000013113143047722016771 xustar0030 mtime=1502367698.672456313 30 atime=1508138886.920193744 29 ctime=1508162367.89792164 eztrace-1.1-7/src/modules/omp/gomp.c0000644000175000017500000006051413143047722020167 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "pomp-lib-dummy/pomp2_lib.h" #include "gomp_ev_codes.h" #include "eztrace.h" #include "pptrace.h" static int record_callsite = 0; static int pomp2_found = 0; #define GOMP_RECORD if(!pomp2_found) // todo: add hooks for // OMP_Barrier // OMP_critical ? /* each thread has its own counter */ static __thread POMP2_Region_handle _next_section_id = -1; static POMP2_Region_handle __get_next_section_id() { /* make sure that the counters of each thread do not collide */ if(_next_section_id < 0) { /* POMP2_Region_handle is an int, this will work for: * - ~ 2^11 threads * - ~ 2^20 parallel region created by a thread */ _next_section_id = omp_get_thread_num() << 20; } return _next_section_id++; } void (*libGOMP_parallel_loop_static_start)(void (*)(void *), void *, unsigned, long, long, long, long); void (*libGOMP_parallel_loop_runtime_start)(void (*)(void *), void *, unsigned, long, long, long, long); void (*libGOMP_parallel_loop_dynamic_start)(void (*)(void *), void *, unsigned, long, long, long, long); void (*libGOMP_parallel_loop_guided_start)(void (*)(void *), void *, unsigned, long, long, long, long); void (*libGOMP_parallel_start)(void (*fn)(void *), void *data, unsigned num_threads); void (*libGOMP_parallel_end)(); void (*libGOMP_critical_start)(void); void (*libGOMP_critical_end)(void); /* these function are only available in GOMP 4 */ void (*libGOMP_parallel_loop_static) (void (*)(void *), void *, unsigned, long, long, long, long, unsigned); void (*libGOMP_parallel_loop_dynamic) (void (*)(void *), void *, unsigned, long, long, long, long, unsigned); void (*libGOMP_parallel_loop_guided) (void (*)(void *), void *, unsigned, long, long, long, long, unsigned); void (*libGOMP_parallel_loop_runtime) (void (*)(void *), void *, unsigned, long, long, long, unsigned); static int use_pomp = 1; struct gomp_arg_t { void (*func)(void *); void *data; POMP2_Region_handle id; }; /* Function called by GOMP_parallel_start for each thread */ void gomp_new_thread(void *arg) { FUNCTION_ENTRY; struct gomp_arg_t *_arg = (struct gomp_arg_t*) arg; void (*func)(void *) = _arg->func; void *data = _arg->data; POMP2_Region_handle section_id = _arg->id; int nb_threads = omp_get_num_threads(); int my_id = omp_get_thread_num(); /* Since the runtime functions provide more information, let's use it instead of the compiler functions */ GOMP_RECORD { EZTRACE_EVENT_PACKED_3(EZTRACE_GOMP_NEW_FORK, section_id, my_id, nb_threads); } func(data); GOMP_RECORD { EZTRACE_EVENT_PACKED_1(EZTRACE_GOMP_NEW_JOIN, my_id); } return; } /* generic implementation of parallel loop */ #define GOMP_PARALLEL_LOOP_GENERIC(fn, data, varname, gomp_func, section_id) \ { \ EZTRACE_PROTECT_ON(); \ /* Since the runtime functions provide more information, let's use it instead of the compiler functions */ \ /* call unprotected function 'cause the block is protected */ \ EZTRACE_EVENT1_PACKED_UNPROTECTED(EZTRACE_GOMP_PARALLEL_START, section_id); \ struct gomp_arg_t *varname = (struct gomp_arg_t*) malloc (sizeof (struct gomp_arg_t)); \ varname->func = fn; \ varname->data = data; \ varname->id = section_id; \ EZTRACE_PROTECT_OFF(); \ gomp_func; \ } #define GOMP4_PARALLEL_LOOP_GENERIC(fn, data, varname, gomp_func) \ { \ FUNCTION_ENTRY; \ POMP2_Region_handle section_id = __get_next_section_id(); \ GOMP_PARALLEL_LOOP_GENERIC(fn, data, varname, gomp_func, section_id); \ } /* generic implementation of parallel loop */ #define GOMP3_PARALLEL_LOOP_GENERIC(fn, data, varname, gomp_func) \ { \ FUNCTION_ENTRY; \ POMP2_Region_handle section_id = __get_next_section_id(); \ GOMP_PARALLEL_LOOP_GENERIC(fn, data, varname, gomp_func, section_id); \ int nb_threads = omp_get_num_threads(); \ int my_id = omp_get_thread_num(); \ GOMP_RECORD { \ EZTRACE_EVENT_PACKED_3 (EZTRACE_GOMP_NEW_FORK, section_id, my_id, nb_threads); \ } \ return; \ } /* should be called when reaching #pragma omp parallel for schedule(static) * However, this function doesn't seem to be called. Let's implement it just in case. */ void GOMP_parallel_loop_static_start(void (*fn)(void *), void * data, unsigned num_threads, long a1, long a2, long a3, long a4) { GOMP3_PARALLEL_LOOP_GENERIC(fn, data, arg, libGOMP_parallel_loop_static_start(gomp_new_thread, arg, num_threads, a1, a2, a3, a4)); } /* Function called when reaching #pragma omp parallel for schedule(runtime) */ void GOMP_parallel_loop_runtime_start(void (*fn)(void *), void * data, unsigned num_threads, long a1, long a2, long a3, long a4) { GOMP3_PARALLEL_LOOP_GENERIC(fn, data, arg, libGOMP_parallel_loop_runtime_start(gomp_new_thread, arg, num_threads, a1, a2, a3, a4)); } /* Function called when reaching #pragma omp parallel for schedule(dynamic) */ void GOMP_parallel_loop_dynamic_start(void (*fn)(void *), void * data, unsigned num_threads, long a1, long a2, long a3, long a4) { GOMP3_PARALLEL_LOOP_GENERIC(fn, data, arg, libGOMP_parallel_loop_dynamic_start(gomp_new_thread, arg, num_threads, a1, a2, a3, a4)); } /* Function called when reaching #pragma omp parallel for schedule(guided) */ void GOMP_parallel_loop_guided_start(void (*fn)(void *), void * data, unsigned num_threads, long a1, long a2, long a3, long a4) { GOMP3_PARALLEL_LOOP_GENERIC(fn, data, arg, libGOMP_parallel_loop_guided_start(gomp_new_thread, arg, num_threads, a1, a2, a3, a4)); } void GOMP_parallel_loop_static (void (*fn)(void *), void *data, unsigned num_threads, long start, long end, long incr, long chunk_size, unsigned flags) { GOMP4_PARALLEL_LOOP_GENERIC(fn, data, arg, libGOMP_parallel_loop_static(gomp_new_thread, arg, num_threads, start, end, incr, chunk_size, flags)); } void GOMP_parallel_loop_dynamic (void (*fn) (void *), void *data, unsigned num_threads, long start, long end, long incr, long chunk_size, unsigned flags) { GOMP4_PARALLEL_LOOP_GENERIC(fn, data, arg, libGOMP_parallel_loop_dynamic(gomp_new_thread, arg, num_threads, start, end, incr, chunk_size, flags)); } void GOMP_parallel_loop_guided (void (*fn) (void *), void *data, unsigned num_threads, long start, long end, long incr, long chunk_size, unsigned flags) { GOMP4_PARALLEL_LOOP_GENERIC(fn, data, arg, libGOMP_parallel_loop_guided(gomp_new_thread, arg, num_threads, start, end, incr, chunk_size, flags)); } void GOMP_parallel_loop_runtime (void (*fn) (void *), void *data, unsigned num_threads, long start, long end, long incr, unsigned flags) { GOMP4_PARALLEL_LOOP_GENERIC(fn, data, arg, libGOMP_parallel_loop_runtime(gomp_new_thread, arg, num_threads, start, end, incr, flags)); } // Called by the main thread (ie. only once) during #pragma omp parallel // (fork) void GOMP_parallel_start(void (*fn)(void *), void *data, unsigned num_threads) { GOMP4_PARALLEL_LOOP_GENERIC(fn, data, arg, libGOMP_parallel_start(gomp_new_thread, arg, num_threads)); } // Called at the end of a parallel section (~ join) void GOMP_parallel_end() { FUNCTION_ENTRY; /* Since the runtime functions provide more information, let's use it instead of the compiler functions */ int my_id = omp_get_thread_num(); GOMP_RECORD { EZTRACE_EVENT_PACKED_1(EZTRACE_GOMP_NEW_JOIN, my_id); } libGOMP_parallel_end(); } void GOMP_critical_start() { FUNCTION_ENTRY; GOMP_RECORD EZTRACE_EVENT_PACKED_0(EZTRACE_GOMP_CRITICAL_START); libGOMP_critical_start(); GOMP_RECORD EZTRACE_EVENT_PACKED_0(EZTRACE_GOMP_CRITICAL_START_DONE); } void GOMP_critical_end() { FUNCTION_ENTRY; GOMP_RECORD EZTRACE_EVENT_PACKED_0(EZTRACE_GOMP_CRITICAL_STOP); libGOMP_critical_end(); } /* beginning of pomp2 internals */ void POMP2_Finalize() { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_FINALIZE); } void POMP2_Init() { /* todo: initialize stuff ? */ } void POMP2_Off() { /* todo: stop recording events ? */ } void POMP2_On() { /* todo: initialize stuff ? */ } void POMP2_Begin(POMP2_Region_handle* pomp2_handle __attribute__((unused))) { /** Called at the begin of a user defined POMP2 region. @param pomp2_handle The handle of the started region. */ } void POMP2_End(POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_Assign_handle( POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { /** Registers a POMP2 region and returns a region handle. @param pomp2_handle Returns the handle for the newly registered region. @param ctc_string A string containing the region data. */ } /* end of pomp2 internals */ void POMP2_Atomic_enter( POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { /** Called before an atomic statement. @param pomp2_handle The handle of the started region. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ FUNCTION_ENTRY; /* todo: record the initialization string ? */ EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_ATOMIC_ENTER); } void POMP2_Atomic_exit( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_ATOMIC_EXIT); } void POMP2_Implicit_barrier_enter( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle* pomp2_old_task __attribute__((unused))) { /** Called before an implicit barrier. \e OpenMP \e 3.0: Barriers can be used as scheduling points for tasks. When entering a barrier the task id of the currently executing task (\e pomp2_current_task) is saved in \e pomp2_old_task, which is defined inside the instrumented user code. @param pomp2_handle The handle of the started region. @param pomp2_old_task Pointer to a "taskprivate" variable where the current task id is stored. */ FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_IMPLICIT_BARRIER_ENTER); /* todo: implement */ } extern void POMP2_Implicit_barrier_exit( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle pomp2_old_task __attribute__((unused))) { /* todo: implement */ FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_IMPLICIT_BARRIER_EXIT); } void POMP2_Barrier_enter( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle* pomp2_old_task __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_BARRIER_ENTER); } void POMP2_Barrier_exit( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle pomp2_old_task __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_BARRIER_EXIT); } void POMP2_Flush_enter( POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_FLUSH_ENTER); } void POMP2_Flush_exit(POMP2_Region_handle* pomp2_handle __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_FLUSH_EXIT); } void POMP2_Critical_begin( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_CRITICAL_BEGIN); } void POMP2_Critical_end( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_CRITICAL_END); } void POMP2_Critical_enter( POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_CRITICAL_ENTER); } void POMP2_Critical_exit( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_CRITICAL_EXIT); } void POMP2_Master_begin( POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_MASTER_BEGIN); } void POMP2_Master_end(POMP2_Region_handle* pomp2_handle __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_MASTER_END); } void POMP2_Parallel_fork( POMP2_Region_handle* pomp2_handle __attribute__((unused)), int if_clause __attribute__((unused)), int num_threads __attribute__((unused)), POMP2_Task_handle* pomp2_old_task __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { FUNCTION_ENTRY; *pomp2_handle = __get_next_section_id(); POMP2_Region_handle section_id = *pomp2_handle; EZTRACE_EVENT_PACKED_1(EZTRACE_GOMP_PARALLEL_START, section_id); } void POMP2_Parallel_join( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle pomp2_old_task __attribute__((unused))) { /* the runtime function GOMP_parallel end already records an event at the end * of a join. We don't need to do anuthing here. */ /* todo: what about non-GNU OpenMP ? */ } void POMP2_For_enter(POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { FUNCTION_ENTRY; if(record_callsite) { char buffer[1024]; eztrace_get_stack_frame(2, buffer, 1024); EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_FOR_ENTER_EXTRA); litl_write_probe_raw(__ezt_trace.litl_trace, EZTRACE_CALLING_FUNCTION, strlen(buffer)+1, buffer); } else { EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_FOR_ENTER); } } void POMP2_For_exit(POMP2_Region_handle* pomp2_handle __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_FOR_EXIT); } void POMP2_Parallel_begin( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { FUNCTION_ENTRY; int nb_threads = omp_get_num_threads(); int my_id = omp_get_thread_num(); POMP2_Region_handle section_id = *pomp2_handle; EZTRACE_EVENT_PACKED_3(EZTRACE_GOMP_NEW_FORK, section_id, my_id, nb_threads); } void POMP2_Parallel_end( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { FUNCTION_ENTRY; int my_id = omp_get_thread_num(); EZTRACE_EVENT_PACKED_1(EZTRACE_GOMP_NEW_JOIN, my_id); } void POMP2_Section_begin( POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_SECTION_BEGIN); } void POMP2_Section_end( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_SECTION_END); } void POMP2_Sections_enter( POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_SECTIONS_ENTER); } void POMP2_Sections_exit( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_SECTIONS_EXIT); } void POMP2_Single_begin( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_SINGLE_BEGIN); } void POMP2_Single_end(POMP2_Region_handle* pomp2_handle __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_SINGLE_END); } void POMP2_Single_enter( POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_SINGLE_ENTER); } void POMP2_Single_exit( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_SINGLE_EXIT); } void POMP2_Workshare_enter( POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_WORKSHARE_ENTER); } void POMP2_Workshare_exit( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_WORKSHARE_EXIT); } void POMP2_Ordered_begin( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { /** Called at the start of an ordered region. @param pomp2_handle The handle of the region. */ FUNCTION_ENTRY; // todo : EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_ORDERED_BEGIN); } void POMP2_Ordered_end( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { /* todo: implement that */ } void POMP2_Ordered_enter( POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { /* todo: implement that */ } void POMP2_Ordered_exit( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { /* todo: implement that */ } /** \e OpenMP \e 3.0: When a task encounters a task construct it creates a new task. The task may be scheduled for later execution or executed immediately. In both cases the pomp-adapter assigns the id of the currently active task to \e pomp2_old_task which is defined in the instrumented user code. @param pomp2_handle The handle of the region. @param pomp2_old_task Pointer to the task id in the instrumented user code @param pomp2_if If an if clause is present on the task directive this variable holds the evaluated result of the argument of the if clause. Else it is 1. @param ctc_string The initialization string. */ void POMP2_Task_create_begin( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle* pomp2_new_task __attribute__((unused)), POMP2_Task_handle* pomp2_old_task __attribute__((unused)), int pomp2_if __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { FUNCTION_ENTRY; /* we could use pomp2_new_task to store the task id, but this would require a mutex * (or at least an atomic increment primitive) that would kill the performance. * In order to keep the overhead as low as possible, let's only record the event. */ EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_TASK_CREATE_BEGIN); } void POMP2_Task_create_end( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle pomp2_old_task __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_TASK_CREATE_END); } void POMP2_Task_begin(POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle pomp2_task __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_TASK_BEGIN); } void POMP2_Task_end(POMP2_Region_handle* pomp2_handle __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_TASK_END); } void POMP2_Untied_task_create_begin( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle* pomp2_new_task __attribute__((unused)), POMP2_Task_handle* pomp2_old_task __attribute__((unused)), int pomp2_if __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { FUNCTION_ENTRY; /* we could use pomp2_new_task to store the task id, but this would require a mutex * (or at least an atomic increment primitive) that would kill the performance. * In order to keep the overhead as low as possible, let's only record the event. */ EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_UNTIED_TASK_CREATE_BEGIN); } void POMP2_Untied_task_create_end( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle pomp2_old_task __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_UNTIED_TASK_CREATE_END); } void POMP2_Untied_task_begin( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle pomp2_parent_task __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_UNTIED_TASK_BEGIN); } void POMP2_Untied_task_end( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_UNTIED_TASK_END); } void POMP2_Taskwait_begin( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle* pomp2_old_task __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_TASKWAIT_BEGIN); } void POMP2_Taskwait_end( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle pomp2_old_task __attribute__((unused))) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_POMP2_TASKWAIT_END); } #ifdef OPENMP_FOUND void POMP2_Init_lock( omp_lock_t* s ) { omp_init_lock(s); } void POMP2_Destroy_lock( omp_lock_t* s ) { omp_destroy_lock(s); } void POMP2_Set_lock( omp_lock_t* s ) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_1(EZTRACE_POMP2_SET_LOCK_ENTRY, s); omp_set_lock(s); EZTRACE_EVENT_PACKED_1(EZTRACE_POMP2_SET_LOCK_EXIT, s); } void POMP2_Unset_lock( omp_lock_t* s ) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_1(EZTRACE_POMP2_UNSET_LOCK, s); omp_unset_lock(s); } int POMP2_Test_lock( omp_lock_t* s ) { int ret = omp_test_lock(s); if(ret) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_1(EZTRACE_POMP2_TEST_LOCK_SUCCESS, s); } return ret; } void POMP2_Init_nest_lock( omp_nest_lock_t* s ) { omp_init_nest_lock(s); } void POMP2_Destroy_nest_lock( omp_nest_lock_t* s ) { omp_destroy_nest_lock(s); } void POMP2_Set_nest_lock( omp_nest_lock_t* s ) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_1(EZTRACE_POMP2_SET_NEST_LOCK_ENTRY, s); omp_set_nest_lock(s); EZTRACE_EVENT_PACKED_1(EZTRACE_POMP2_SET_NEST_LOCK_EXIT, s); } void POMP2_Unset_nest_lock( omp_nest_lock_t* s ) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_1(EZTRACE_POMP2_UNSET_NEST_LOCK, s); omp_unset_nest_lock(s); } int POMP2_Test_nest_lock( omp_nest_lock_t* s ) { int ret = omp_test_nest_lock(s); if(ret) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_1(EZTRACE_POMP2_TEST_NEST_LOCK_SUCCESS, s); } return ret; } #endif /* OPENMP_FOUND */ void (*libPOMP2_Finalize)(); START_INTERCEPT_MODULE(omp) INTERCEPT2("GOMP_parallel_start", libGOMP_parallel_start) INTERCEPT2("GOMP_parallel_end", libGOMP_parallel_end) INTERCEPT2("GOMP_parallel_loop_static_start", libGOMP_parallel_loop_static_start) INTERCEPT2("GOMP_parallel_loop_runtime_start", libGOMP_parallel_loop_runtime_start) INTERCEPT2("GOMP_parallel_loop_dynamic_start", libGOMP_parallel_loop_dynamic_start) INTERCEPT2("GOMP_parallel_loop_guided_start", libGOMP_parallel_loop_guided_start) INTERCEPT2("GOMP_critical_start", libGOMP_critical_start) INTERCEPT2("GOMP_critical_end", libGOMP_critical_end) INTERCEPT2("GOMP_parallel_loop_static", libGOMP_parallel_loop_static) INTERCEPT2("GOMP_parallel_loop_dynamic",libGOMP_parallel_loop_dynamic) INTERCEPT2("GOMP_parallel_loop_guided", libGOMP_parallel_loop_guided) INTERCEPT2("GOMP_parallel_loop_runtime",libGOMP_parallel_loop_runtime) END_INTERCEPT_MODULE(omp) void __gomp_init(void) __attribute__ ((constructor)); void __gomp_init(void) { DYNAMIC_INTERCEPT_ALL_MODULE(omp); /* This symbol is only available if the program was compiled with eztrace_cc. * Use this information as a test and print a warning message. */ INTERCEPT("POMP2_Finalize", libPOMP2_Finalize); if (libGOMP_critical_end && !libPOMP2_Finalize) { printf( "Only GNU OpenMP runtime functions will be intercepted. For a more precise trace, please instrument your program with eztrace_cc.\n"); use_pomp = 0; } if (libPOMP2_Finalize) pomp2_found = 1; else pomp2_found = 0; char* str = getenv("OMP_RECORD_CALLSITE"); if(str && strcmp(str, "0")!=0) { printf("EZTrace OpenMP: callsite recording enabled\n"); record_callsite = 1; } #ifdef EZTRACE_AUTOSTART eztrace_start (); #endif } void __gomp_conclude(void) __attribute__ ((destructor)); void __gomp_conclude(void) { eztrace_stop(); } eztrace-1.1-7/src/modules/omp/PaxHeaders.7332/eztrace_cc.in0000644000000000000000000000013113171123440020306 xustar0030 mtime=1508157216.895370115 30 atime=1508157216.915370617 29 ctime=1508162367.89792164 eztrace-1.1-7/src/modules/omp/eztrace_cc.in0000644000175000017500000000426013171123440021500 0ustar00trahaytrahay00000000000000#!/bin/sh # Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis # See COPYING in top-level directory. # usage: eztrace_cc gcc -o foo foo.c -I/usr/include/bar -L/lib/bar -lbar cc_cmd=$* prefix=@prefix@ exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include bindir=${exec_prefix}/bin OPARI=${bindir}/opari2 CFLAGS=-I${includedir} LDFLAGS="-lpomp2 -L${libdir} -Wl,-rpath=${libdir}" tmpdir=`mktemp -d` instrumentFile() { param=$1 new_file_name=$2 # copy the file to tmpdir and instrument it param_base=`basename $param` param_dir=`dirname $param` ${OPARI} --nosrc --untied=keep --untied=no-warn ${param} $new_file_name res_grep=`echo "$cc_cmd" |grep -- "-c" ` if [ "x$res_grep" != "x" ]; then res_grep=`echo "$cc_cmd" |grep -- "-o" ` if [ "x$res_grep" = "x" ]; then # there is no -o in the compilation line # we need to add -o param.o # otherwise the generated file would be tmp.xxxx.o instead of param.o doto_file=`echo "$param_base" |sed 's/\.[c|f|F]$/\.o/' |sed 's/\.f90$/\.o/'` cc_cmd="$cc_cmd -o $doto_file" fi fi cc_cmd=`echo $cc_cmd -I$param_dir | sed "s@$param\s@$new_file_name @"` } cleanup_cmd="rm -rf opari.rc $tmpdir" for param in $@ ; do case $param in *.c ) #new_file_name=`mktemp --suffix=.c --tmpdir=$tmpdir 2>/dev/null` new_file_name=$tmpdir/$(basename $param) # if [ $? -ne 0 ]; then # new_file_name=`mktemp -p $tmpdir`.c # fi instrumentFile $param $new_file_name ;; *.f ) new_file_name=`mktemp --suffix=.f --tmpdir=$tmpdir 2>/dev/null` if [ $? -ne 0 ]; then new_file_name=`mktemp -p $tmpdir`.f fi instrumentFile $param $new_file_name ;; *.F ) new_file_name=`mktemp --suffix=.F --tmpdir=$tmpdir 2>/dev/null` if [ $? -ne 0 ]; then new_file_name=`mktemp -p $tmpdir`.F fi instrumentFile $param $new_file_name ;; *.f90 ) new_file_name=`mktemp --suffix=.f90 --tmpdir=$PWD 2>/dev/null` if [ $? -ne 0 ]; then new_file_name=`mktemp -p $tmpdir`.f90 fi instrumentFile $param $new_file_name ;; esac done cc_cmd="$cc_cmd $CFLAGS $LDFLAGS" echo "Running: $cc_cmd" $cc_cmd $cleanup_cmd eztrace-1.1-7/src/modules/omp/PaxHeaders.7332/eztrace_convert_gomp.c0000644000000000000000000000013113143047722022246 xustar0030 mtime=1502367698.672456313 30 atime=1508138886.888192945 29 ctime=1508162367.90192199 eztrace-1.1-7/src/modules/omp/eztrace_convert_gomp.c0000644000175000017500000010324613143047722023444 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE #include #include #include #include "gomp_ev_codes.h" #include "eztrace_list.h" #include "eztrace_stack.h" #include "eztrace_convert.h" #include "pomp-lib-dummy/pomp2_lib.h" static struct ezt_list_t section_list; static int recording_stats = 0; static int nb_parallel_region = 0; /* maximum number of level for nested tasks */ #define MAX_NESTED_TASKS 128 #define GOMP_CHANGE() if(!recording_stats) CHANGE() #if 0 # define OMP_PRINTF printf x #else # define OMP_PRINTF(...) #endif /* contains all the information of a parallel section */ struct gomp_section_t { void (*func)(void *); app_ptr data; POMP2_Region_handle id; int nb_threads; struct eztrace_container_t * main_thread; struct eztrace_container_t ** working_threads; char** link_value_start; char** link_id_start; char** link_value_end; char** link_id_end; float start_time; /* time at which the parallel_start occurs */ float* fork_time; /* time at which the fork happens for each thread */ float* join_time; /* time at which the thread reach join */ float join_done_time; /* time at which the join ends */ int nb_joined; /* number of threads that finished end_loop */ ezt_stack_token_t token; }; /* pointer to a parallel section. This structure is used in the * section_stack field of the gomp_thread_info_t structure */ struct gomp_thread_section_t { struct gomp_section_t *process_section; ezt_stack_token_t token; }; /* contains the list of parallel sections that a thread is currently processing */ struct gomp_thread_info_t { ezt_stack_t section_stack; /* timestamp of the last start_task_create event */ double start_create_task[MAX_NESTED_TASKS]; int nb_nested_task_creation; /* timestamp of the last start_task_exec event */ double start_exec_task[MAX_NESTED_TASKS]; int nb_nested_tasks; /* total time spent creating tasks */ double create_task_duration; /* number of created tasks */ unsigned nb_create_task; /* total time spent executing tasks */ double exec_task_duration; /* number of executed tasks */ unsigned nb_exec_task; /* TODO: also count the parallel loops ? */ struct thread_info_t *p_thread; }; /* contains the list of parallel sections that a process is currently processing */ struct gomp_process_info_t { struct ezt_list_t section_list; struct process_info_t *p_process; struct ezt_list_t finished_section_list; /* total time spent creating tasks */ double create_task_duration; /* number of created tasks */ unsigned nb_create_task; /* total time spent executing tasks */ double exec_task_duration; /* number of executed tasks */ unsigned nb_exec_task; }; /* add a hook in the process structure in order to store information * about pending parallel sections */ static struct gomp_process_info_t *__register_process_hook( struct process_info_t *p_process) { struct gomp_process_info_t *g_info = (struct gomp_process_info_t*) malloc( sizeof(struct gomp_process_info_t)); g_info->p_process = p_process; ezt_list_new(&g_info->section_list); ezt_list_new(&g_info->finished_section_list); g_info->create_task_duration=0; g_info->nb_create_task=0; g_info->exec_task_duration=0; g_info->nb_exec_task=0; /* add the hook in the thread info structure */ ezt_hook_list_add(&g_info->p_process->hooks, g_info, (uint8_t) EZTRACE_GOMP_EVENTS_ID); return g_info; } /* add a hook in the thread structure in order to store information * about pending parallel sections */ struct gomp_thread_info_t *__register_thread_hook(int tid) { DECLARE_CUR_PROCESS(p_process); struct gomp_thread_info_t *g_info = (struct gomp_thread_info_t*) malloc( sizeof(struct gomp_thread_info_t)); g_info->p_thread = GET_THREAD_INFO(CUR_INDEX, tid); ezt_stack_new(&g_info->section_stack); int i; for(i=0; istart_exec_task[i] = -1; g_info->start_create_task[i] = -1; } g_info->nb_nested_tasks = 0; g_info->nb_nested_task_creation = 0; g_info->nb_create_task = 0; g_info->nb_exec_task = 0; g_info->create_task_duration = 0; g_info->exec_task_duration = 0; /* add the hook in the thread info structure */ ezt_hook_list_add(&g_info->p_thread->hooks, g_info, (uint8_t) EZTRACE_GOMP_EVENTS_ID); return g_info; } /* declare a var variable that points to the process_info structure */ #define INIT_GOMP_PROCESS_INFO(p_process, var) \ struct gomp_process_info_t *var = (struct gomp_process_info_t*) \ ezt_hook_list_retrieve_data(&p_process->hooks, (uint8_t)EZTRACE_GOMP_EVENTS_ID); \ if(!(var)) { \ var = __register_process_hook(p_process); \ } /* declare a var variable that points to the thread_info structure */ #define INIT_GOMP_THREAD_INFO(p_thread_info, var) \ struct gomp_thread_info_t *var = (struct gomp_thread_info_t*) \ ezt_hook_list_retrieve_data(&p_thread_info->hooks, (uint8_t)EZTRACE_GOMP_EVENTS_ID); \ if(!(var)) { \ var = __register_thread_hook(CUR_THREAD_ID); \ } /* retrieve the gomp_section structure that corresponds to a section id */ struct ezt_list_token_t *__find_matching_section( struct process_info_t*p_process, POMP2_Region_handle id) { INIT_GOMP_PROCESS_INFO(p_process, process_info) struct ezt_list_token_t *token = NULL; ezt_list_foreach(&process_info->section_list, token) { struct gomp_section_t * section = (struct gomp_section_t *) token->data; if (section->id == id) return token; } return NULL; } void handle_gomp_new_fork() { /* This event occurs when a parallel section begins. * This event is generated by the new thread (ie. not by the main thread * that called #omp parallel) */ FUNC_NAME; /* We have to: * - retrieve the gomp_section structur that was created by the main thread * - add this section to the thread's stack * - create the links between the main thread and the current thread * - set the state of the current thread to 'working' */ DECLARE_CUR_PROCESS(p_process); DECLARE_CUR_THREAD(p_thread); INIT_GOMP_THREAD_INFO(p_thread, g_info); POMP2_Region_handle section_id; int my_id; int nb_threads; GET_PARAM_PACKED_3(CUR_EV, section_id, my_id, nb_threads); DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); /* retrieve the gomp_section structure that was created by the main thread */ OMP_PRINTF("[%x] %s %d (%d threads)\n", CUR_THREAD_ID, __FUNCTION__, section_id, nb_threads); struct ezt_list_token_t *token = __find_matching_section(p_process, section_id); assert(token); struct gomp_section_t * section = (struct gomp_section_t *) token->data; assert(section->main_thread); char* main_thread_str = section->main_thread->id; if (section->nb_threads) { assert(section->nb_threads == nb_threads); } if (!section->nb_threads) { /* We are the first thread that reach the section, allocate everything */ section->id = section_id; section->nb_threads = nb_threads; section->nb_joined = 0; section->working_threads = malloc( sizeof(struct eztrace_container_t*) * section->nb_threads); section->link_value_start = malloc(sizeof(char*) * section->nb_threads); section->link_id_start = malloc(sizeof(char*) * section->nb_threads); section->link_value_end = malloc(sizeof(char*) * section->nb_threads); section->link_id_end = malloc(sizeof(char*) * section->nb_threads); section->fork_time = malloc(sizeof(float) * section->nb_threads); section->join_time = malloc(sizeof(float) * section->nb_threads); } assert(section->id == section_id); section->working_threads[my_id] = GET_THREAD_CONTAINER(CUR_INDEX, CUR_THREAD_ID); section->fork_time[my_id] = CURRENT; /* create the links between the main thread and the current thread */ int res __attribute__ ((__unused__)); res = asprintf(§ion->link_id_start[my_id], "%d_%d_%d", CUR_RANK, section->id, my_id); res = asprintf(§ion->link_value_start[my_id], "p#%d_section#%d_thread#%d", CUR_RANK, section->id, my_id); /* add this section to the thread's stack */ struct gomp_thread_section_t *p_th_section = (struct gomp_thread_section_t*) malloc( sizeof(struct gomp_thread_section_t)); p_th_section->process_section = section; p_th_section->token.data = p_th_section; ezt_stack_push(&g_info->section_stack, &p_th_section->token); GOMP_CHANGE() startLink(section->start_time, "GOMP_Section_Link", "C_Prog", main_thread_str, thread_id, section->link_value_start[my_id], section->link_id_start[my_id]); GOMP_CHANGE() endLink(CURRENT, "GOMP_Section_Link", "C_Prog", main_thread_str, thread_id, section->link_value_start[my_id], section->link_id_start[my_id]); /* set the state of the current thread to 'working' */ GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "GOMP_Section_State"); } void handle_gomp_new_join() { /* This event occurs when a parallel section ends. * This event is generated by the new thread (ie. not by the main thread * that called #omp parallel) */ FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); /* We have to: * - retrieve and remove the gomp_section structure that was stacked * - create the links between the main thread and the current thread * - set the state of the current thread to 'blocked' */ DECLARE_CUR_THREAD(p_thread); INIT_GOMP_THREAD_INFO(p_thread, g_info); DECLARE_CUR_PROCESS(p_process); INIT_GOMP_PROCESS_INFO(p_process, process_info); int my_id; GET_PARAM_PACKED_1(CUR_EV, my_id); /* retrieve and remove the gomp_section structure that was stacked */ ezt_stack_token_t *token = ezt_stack_get_top(&g_info->section_stack); if(g_info->section_stack.nb_item) { assert(token); struct gomp_thread_section_t *thread_section = (struct gomp_thread_section_t *) token->data; struct gomp_section_t *section = thread_section->process_section; OMP_PRINTF("[%x] %s %d\n", CUR_THREAD_ID, __FUNCTION__, section->id); section->join_time[my_id] = CURRENT; /* create the links between the main thread and the current thread */ int res __attribute__ ((__unused__)); res = asprintf(§ion->link_id_end[my_id], "%d_%d_%d_end", CUR_RANK, section->id, my_id); res = asprintf(§ion->link_value_end[my_id], "p#%d_section#%d_thread#%d", CUR_RANK, section->id, my_id); GOMP_CHANGE() startLink(CURRENT, "GOMP_Section_Link", "C_Prog", thread_id, section->main_thread->id, section->link_value_end[my_id], section->link_id_end[my_id]); section->nb_joined++; if(section->nb_joined == section->nb_threads) { /* This is the last thread to finish end_loop */ section->join_done_time = CURRENT; /* end all the links that were started by the new_join event */ int i; for (i = 0; i < section->nb_threads; i++) { GOMP_CHANGE() endLink(CURRENT, "GOMP_Section_Link", "C_Prog", section->working_threads[i]->id, section->main_thread->id, section->link_value_end[i], section->link_id_end[i]); } /* free the section structure and set the current state to working */ struct ezt_list_token_t *process_section_token = __find_matching_section(p_process, section->id); assert(process_section_token); ezt_list_remove(process_section_token); ezt_list_add(&process_info->finished_section_list, §ion->token); } GOMP_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } } void handle_gomp_parallel_start() { /* This event occurs when a parallel section begins. * This event is generated by the main thread */ FUNC_NAME; struct gomp_section_t * section = (struct gomp_section_t*) malloc( sizeof(struct gomp_section_t)); nb_parallel_region++; /* Initialize the section strcuture */ GET_PARAM_PACKED_1(CUR_EV, section->id); section->nb_threads = 0; section->main_thread = GET_THREAD_CONTAINER(CUR_INDEX, CUR_THREAD_ID); section->working_threads = NULL; section->start_time = CURRENT; section->token.data = section; DECLARE_CUR_PROCESS(p_process); INIT_GOMP_PROCESS_INFO(p_process, g_info); OMP_PRINTF("[%x] %s %d\n", CUR_THREAD_ID, __FUNCTION__, section->id); /* add the section structure to the list of pending sections */ ezt_list_add(&g_info->section_list, §ion->token); } void handle_gomp_critical_start() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_Blocked"); } void handle_gomp_critical_start_done() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() popState(CURRENT, "ST_Thread", thread_id); GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "GOMP_Critical"); } void handle_gomp_critical_stop() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_pomp2_finalize() { } void handle_pomp2_atomic_enter() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "GOMP_Atomic"); } void handle_pomp2_atomic_exit() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_pomp2_critical_enter() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_Blocked"); } void handle_pomp2_critical_begin() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() popState(CURRENT, "ST_Thread", thread_id); GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "GOMP_Critical"); } void handle_pomp2_critical_end() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_pomp2_critical_exit() { } void handle_pomp2_barrier_enter() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "GOMP_Barrier"); } void handle_pomp2_barrier_exit() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_pomp2_implicit_barrier_enter() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "GOMP_Implicit_Barrier"); } void handle_pomp2_implicit_barrier_exit() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_pomp2_flush_enter() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "GOMP_Flush"); } void handle_pomp2_flush_exit() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_pomp2_task_create_begin() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_THREAD(p_thread); INIT_GOMP_THREAD_INFO(p_thread, g_info); assert(g_info->start_create_task[g_info->nb_nested_task_creation] < 0); assert(g_info->nb_nested_task_creation < MAX_NESTED_TASKS); g_info->start_create_task[g_info->nb_nested_task_creation] = CURRENT; g_info->nb_nested_task_creation++; GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "GOMP_Task_Create"); } void handle_pomp2_task_create_end() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_THREAD(p_thread); INIT_GOMP_THREAD_INFO(p_thread, g_info); assert(g_info->start_create_task[g_info->nb_nested_task_creation-1] > 0); g_info->create_task_duration += CURRENT-g_info->start_create_task[g_info->nb_nested_task_creation-1]; g_info->start_create_task[g_info->nb_nested_task_creation-1] = -1; g_info->nb_nested_task_creation--; g_info->nb_create_task++; GOMP_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_pomp2_untied_task_create_begin() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_THREAD(p_thread); INIT_GOMP_THREAD_INFO(p_thread, g_info); assert(g_info->start_create_task[g_info->nb_nested_task_creation] < 0); assert(g_info->nb_nested_task_creation < MAX_NESTED_TASKS); g_info->start_create_task[g_info->nb_nested_task_creation] = CURRENT; g_info->nb_nested_task_creation++; GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "GOMP_Untied_Task_Create"); } void handle_pomp2_untied_task_create_end() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_THREAD(p_thread); INIT_GOMP_THREAD_INFO(p_thread, g_info); assert(g_info->start_create_task[g_info->nb_nested_task_creation-1] > 0); g_info->create_task_duration += CURRENT-g_info->start_create_task[g_info->nb_nested_task_creation-1]; g_info->start_create_task[g_info->nb_nested_task_creation-1] = -1; g_info->nb_nested_task_creation--; g_info->nb_create_task++; GOMP_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_pomp2_task_begin() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_THREAD(p_thread); INIT_GOMP_THREAD_INFO(p_thread, g_info); assert(g_info->start_exec_task[g_info->nb_nested_tasks] < 0); assert(g_info->nb_nested_tasksstart_exec_task[g_info->nb_nested_tasks] = CURRENT; g_info->nb_nested_tasks++; GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "GOMP_Task"); } void handle_pomp2_task_end() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_THREAD(p_thread); INIT_GOMP_THREAD_INFO(p_thread, g_info); assert(g_info->start_exec_task[g_info->nb_nested_tasks-1] > 0); g_info->exec_task_duration += CURRENT-g_info->start_exec_task[g_info->nb_nested_tasks-1]; g_info->start_exec_task[g_info->nb_nested_tasks-1] = -1; g_info->nb_nested_tasks--; g_info->nb_exec_task++; GOMP_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_pomp2_untied_task_begin() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_THREAD(p_thread); INIT_GOMP_THREAD_INFO(p_thread, g_info); assert(g_info->start_exec_task[g_info->nb_nested_tasks] < 0); assert(g_info->nb_nested_tasksstart_exec_task[g_info->nb_nested_tasks] = CURRENT; g_info->nb_nested_tasks++; GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "GOMP_Untied_Task"); } void handle_pomp2_untied_task_end() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_THREAD(p_thread); INIT_GOMP_THREAD_INFO(p_thread, g_info); assert(g_info->start_exec_task[g_info->nb_nested_tasks-1] > 0); g_info->exec_task_duration += CURRENT-g_info->start_exec_task[g_info->nb_nested_tasks-1]; g_info->start_exec_task[g_info->nb_nested_tasks-1] = -1; g_info->nb_nested_tasks--; g_info->nb_exec_task++; GOMP_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_pomp2_taskwait_begin() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "GOMP_TaskWait"); } void handle_pomp2_taskwait_end() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_pomp2_for_enter() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "GOMP_For"); } void handle_pomp2_for_enter_extra() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); wait_for_an_event_in_cur_thread(EZTRACE_CALLING_FUNCTION); GOMP_CHANGE() { char *callsite = malloc(1024*sizeof(char)); snprintf(callsite, 1024, "%s", LITL_READ_RAW(CUR_EV)->data); FUNC_NAME; pushStateExtra(CURRENT, "ST_Thread", thread_id, "GOMP_For", callsite); } } void handle_pomp2_for_exit() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_pomp2_master_begin() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "GOMP_Master"); } void handle_pomp2_master_end() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_pomp2_parallel_begin() { /* Since the runtime functions provide more information, let's forget these compiler functions */ FUNC_NAME; } void handle_pomp2_parallel_end() { /* Since the runtime functions provide more information, let's forget these compiler functions */ FUNC_NAME; } void handle_pomp2_parallel_fork() { /* Since the runtime functions provide more information, let's forget these compiler functions */ FUNC_NAME; } void handle_pomp2_parallel_join() { /* Since the runtime functions provide more information, let's forget these compiler functions */ FUNC_NAME; } void handle_pomp2_sections_enter() { /* todo */ } void handle_pomp2_sections_exit() { /* todo */ } void handle_pomp2_section_begin() { /* todo */ } void handle_pomp2_section_end() { /* todo */ } void handle_pomp2_single_enter() { /* todo */ } void handle_pomp2_single_exit() { /* todo */ } void handle_pomp2_single_begin() { /* todo */ } void handle_pomp2_single_end() { /* todo */ } void handle_pomp2_workshare_enter() { /* todo */ } void handle_pomp2_workshare_exit() { /* todo */ } #ifdef OPENMP_FOUND void handle_pomp2_set_lock_entry() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_GOMP_Lock"); } void handle_pomp2_set_lock_exit() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() popState(CURRENT, "ST_Thread", thread_id); GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_GOMP_Locked"); } void handle_pomp2_test_lock_success() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_GOMP_Locked"); } void handle_pomp2_unset_lock() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_pomp2_set_nest_lock_entry() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_GOMP_NLock"); } void handle_pomp2_set_nest_lock_exit() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() popState(CURRENT, "ST_Thread", thread_id); GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_GOMP_NLocked"); } void handle_pomp2_test_nest_lock_success() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_GOMP_NLocked"); } void handle_pomp2_unset_nest_lock() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); GOMP_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } #endif /* OPENMP_FOUND */ int eztrace_convert_gomp_init() { if (get_mode() == EZTRACE_CONVERT) { addLinkType("GOMP_Section_Link", "OpenMP Parallel Section", "CT_Program", "CT_Thread", "CT_Thread"); addEntityValue("GOMP_Section_State", "ST_Thread", "GOMP_Section_State", GTG_PINK); addEntityValue("GOMP_Critical", "ST_Thread", "GOMP_Critical", GTG_GREEN); addEntityValue("GOMP_Atomic", "ST_Thread", "GOMP_Atomic", GTG_GREEN); addEntityValue("GOMP_Barrier", "ST_Thread", "GOMP_Barrier", GTG_ORANGE); addEntityValue("GOMP_Implicit_Barrier", "ST_Thread", "GOMP_Implicit_Barrier", GTG_RED); addEntityValue("GOMP_For", "ST_Thread", "GOMP_For", GTG_LIGHTGREY); addEntityValue("GOMP_Master", "ST_Thread", "GOMP_Master", GTG_WHITE); #ifdef OPENMP_FOUND addEntityValue("STV_GOMP_Lock", "ST_Thread", "Blocked on an OpenMP lock", GTG_RED); addEntityValue("STV_GOMP_Locked", "ST_Thread", "Holding an OpenMP lock", GTG_GREEN); addEntityValue("STV_GOMP_NLock", "ST_Thread", "Blocked on an OpenMP nested lock", GTG_RED); addEntityValue("STV_GOMP_NLocked", "ST_Thread", "Holding an OpenMP nested lock", GTG_GREEN); #endif /* OPENMP_FOUND */ addEntityValue("GOMP_TaskWait", "ST_Thread", "GOMP_TaskWait", GTG_ORANGE); addEntityValue("GOMP_Task", "ST_Thread", "GOMP_Task", GTG_WHITE); addEntityValue("GOMP_Untied_Task", "ST_Thread", "GOMP_Untied_Task", GTG_TEAL); addEntityValue("GOMP_Task_Create", "ST_Thread", "Creating an OpenMP Task", GTG_KAKI); addEntityValue("GOMP_Untied_Task_Create", "ST_Thread", "Creating an OpenMP Task", GTG_SEABLUE); } ezt_list_new(§ion_list); return 0; } /* return 1 if the event was handled */ int handle_gomp_events(eztrace_event_t *ev) { if (!STARTED) return 0; switch (LITL_READ_GET_CODE(ev)) { /* OpenMP */ case EZTRACE_GOMP_NEW_FORK: handle_gomp_new_fork(); break; case EZTRACE_GOMP_NEW_JOIN: handle_gomp_new_join(); break; case EZTRACE_GOMP_PARALLEL_START: handle_gomp_parallel_start(); break; case EZTRACE_GOMP_CRITICAL_START: handle_gomp_critical_start(); break; case EZTRACE_GOMP_CRITICAL_START_DONE: handle_gomp_critical_start_done(); break; case EZTRACE_GOMP_CRITICAL_STOP: handle_gomp_critical_stop(); break; case EZTRACE_POMP2_FINALIZE: handle_pomp2_finalize(); break; case EZTRACE_POMP2_ATOMIC_ENTER: handle_pomp2_atomic_enter(); break; case EZTRACE_POMP2_ATOMIC_EXIT: handle_pomp2_atomic_exit(); break; case EZTRACE_POMP2_BARRIER_ENTER: handle_pomp2_barrier_enter(); break; case EZTRACE_POMP2_BARRIER_EXIT: handle_pomp2_barrier_exit(); break; case EZTRACE_POMP2_IMPLICIT_BARRIER_ENTER: handle_pomp2_implicit_barrier_enter(); break; case EZTRACE_POMP2_IMPLICIT_BARRIER_EXIT: handle_pomp2_implicit_barrier_exit(); break; case EZTRACE_POMP2_FLUSH_ENTER: handle_pomp2_flush_enter(); break; case EZTRACE_POMP2_FLUSH_EXIT: handle_pomp2_flush_exit(); break; case EZTRACE_POMP2_CRITICAL_ENTER: handle_pomp2_critical_enter(); break; case EZTRACE_POMP2_CRITICAL_EXIT: handle_pomp2_critical_exit(); break; case EZTRACE_POMP2_CRITICAL_BEGIN: handle_pomp2_critical_begin(); break; case EZTRACE_POMP2_CRITICAL_END: handle_pomp2_critical_end(); break; case EZTRACE_POMP2_FOR_ENTER: handle_pomp2_for_enter(); break; case EZTRACE_POMP2_FOR_ENTER_EXTRA: handle_pomp2_for_enter_extra(); break; case EZTRACE_POMP2_FOR_EXIT: handle_pomp2_for_exit(); break; case EZTRACE_POMP2_MASTER_BEGIN: handle_pomp2_master_begin(); break; case EZTRACE_POMP2_MASTER_END: handle_pomp2_master_end(); break; case EZTRACE_POMP2_PARALLEL_BEGIN: handle_pomp2_parallel_begin(); break; case EZTRACE_POMP2_PARALLEL_END: handle_pomp2_parallel_end(); break; case EZTRACE_POMP2_PARALLEL_FORK: handle_pomp2_parallel_fork(); break; case EZTRACE_POMP2_PARALLEL_JOIN: handle_pomp2_parallel_join(); break; case EZTRACE_POMP2_SECTIONS_ENTER: handle_pomp2_sections_enter(); break; case EZTRACE_POMP2_SECTIONS_EXIT: handle_pomp2_sections_exit(); break; case EZTRACE_POMP2_SECTION_BEGIN: handle_pomp2_section_begin(); break; case EZTRACE_POMP2_SECTION_END: handle_pomp2_section_end(); break; case EZTRACE_POMP2_SINGLE_ENTER: handle_pomp2_single_enter(); break; case EZTRACE_POMP2_SINGLE_EXIT: handle_pomp2_single_exit(); break; case EZTRACE_POMP2_SINGLE_BEGIN: handle_pomp2_single_begin(); break; case EZTRACE_POMP2_SINGLE_END: handle_pomp2_single_end(); break; case EZTRACE_POMP2_WORKSHARE_ENTER: handle_pomp2_workshare_enter(); break; case EZTRACE_POMP2_WORKSHARE_EXIT: handle_pomp2_workshare_exit(); break; case EZTRACE_POMP2_TASK_CREATE_BEGIN: handle_pomp2_task_create_begin(); break; case EZTRACE_POMP2_TASK_CREATE_END: handle_pomp2_task_create_end(); break; case EZTRACE_POMP2_TASK_BEGIN: handle_pomp2_task_begin(); break; case EZTRACE_POMP2_TASK_END: handle_pomp2_task_end(); break; case EZTRACE_POMP2_UNTIED_TASK_CREATE_BEGIN: handle_pomp2_untied_task_create_begin(); break; case EZTRACE_POMP2_UNTIED_TASK_CREATE_END: handle_pomp2_untied_task_create_end(); break; case EZTRACE_POMP2_UNTIED_TASK_BEGIN: handle_pomp2_untied_task_begin(); break; case EZTRACE_POMP2_UNTIED_TASK_END: handle_pomp2_untied_task_end(); break; case EZTRACE_POMP2_TASKWAIT_BEGIN: handle_pomp2_taskwait_begin(); break; case EZTRACE_POMP2_TASKWAIT_END: handle_pomp2_taskwait_end(); break; #ifdef OPENMP_FOUND case EZTRACE_POMP2_SET_LOCK_ENTRY: handle_pomp2_set_lock_entry(); break; case EZTRACE_POMP2_SET_LOCK_EXIT: handle_pomp2_set_lock_exit(); break; case EZTRACE_POMP2_TEST_LOCK_SUCCESS: handle_pomp2_test_lock_success(); break; case EZTRACE_POMP2_UNSET_LOCK: handle_pomp2_unset_lock(); break; case EZTRACE_POMP2_SET_NEST_LOCK_ENTRY: handle_pomp2_set_nest_lock_entry(); break; case EZTRACE_POMP2_SET_NEST_LOCK_EXIT: handle_pomp2_set_nest_lock_exit(); break; case EZTRACE_POMP2_TEST_NEST_LOCK_SUCCESS: handle_pomp2_test_nest_lock_success(); break; case EZTRACE_POMP2_UNSET_NEST_LOCK: handle_pomp2_unset_nest_lock(); break; #endif /* OPENMP_FOUND */ default: return 0; } return 1; } /* return 1 if the event was handled */ int handle_gomp_stats(eztrace_event_t *ev) { recording_stats = 1; return handle_gomp_events(ev); } void print_gomp_stats() { printf("\nOpenMP:\n"); printf("----------\n"); printf("%d parallel regions\n", nb_parallel_region); /* todo: * add: * - min/max/average duration of parallel regions * - maximum depth (nested) */ /* browse the processes finished_section_list and extract statistics */ int i; for (i = 0; i < NB_TRACES; i++) { struct process_info_t *p_process = GET_PROCESS_INFO(i); struct gomp_process_info_t *p_info = (struct gomp_process_info_t*) ezt_hook_list_retrieve_data( &p_process->hooks, (uint8_t) EZTRACE_GOMP_EVENTS_ID); if (!p_info) continue; /* No gomp process info attached, skip this process */ /* print the time spent by each thread creating/executing tasks */ struct eztrace_container_t *process_cont = GET_PROCESS_CONTAINER(i); unsigned thread_id; for(thread_id = 0; thread_idnb_children; thread_id++) { struct eztrace_container_t *p_thread = process_cont->children[thread_id]; struct thread_info_t* thread_info = (struct thread_info_t*) (p_thread->container_info); INIT_GOMP_THREAD_INFO(thread_info, g_info); double thread_duration = p_thread->end_timestamp - p_thread->start_timestamp; p_info->create_task_duration += g_info->create_task_duration; p_info->nb_create_task += g_info->nb_create_task; p_info->exec_task_duration += g_info->exec_task_duration; p_info->nb_exec_task += g_info->nb_exec_task; printf("%s: (%lf ms)\n", p_thread->name, thread_duration); printf("\t%d tasks created (%lf ms, %lf ms per task, %lf%% of the thread run time)\t %d tasks executed (%lf ms, %lf ms per task, %lf%% of the thread run time)\n", g_info->nb_create_task, g_info->create_task_duration, (g_info->nb_create_task?(g_info->create_task_duration/g_info->nb_create_task):0), 100*g_info->create_task_duration/thread_duration, g_info->nb_exec_task, g_info->exec_task_duration, (g_info->nb_exec_task?(g_info->exec_task_duration/g_info->nb_exec_task):0), 100*g_info->exec_task_duration/thread_duration); } /* print the summary for the process */ printf("%s: %d tasks created (%lf ms, %lf ms per task)\t %d tasks executed (%lf ms, %lf ms per task)\n", process_cont->name, p_info->nb_create_task, p_info->create_task_duration, (p_info->nb_create_task?(p_info->create_task_duration/p_info->nb_create_task):0), p_info->nb_exec_task, p_info->exec_task_duration, (p_info->nb_exec_task?(p_info->exec_task_duration/p_info->nb_exec_task):0)); /* todo: implement other statistics (min/max duration, depth, etc.) */ unsigned nb_sections = 0; float total_duration = 0; ezt_stack_token_t *token; ezt_list_foreach(&p_info->finished_section_list, token) { struct gomp_section_t * section = (struct gomp_section_t *) token->data; total_duration += section->join_done_time - section->start_time; nb_sections++; } printf("%s: \t %d parallel regions (average duration: %f ms)\n", p_process->container->name, nb_sections, total_duration / nb_sections); } } struct eztrace_convert_module gomp_module; void libinit(void) __attribute__ ((constructor)); void libinit(void) { gomp_module.api_version = EZTRACE_API_VERSION; gomp_module.init = eztrace_convert_gomp_init; gomp_module.handle = handle_gomp_events; gomp_module.handle_stats = handle_gomp_stats; gomp_module.print_stats = print_gomp_stats; gomp_module.module_prefix = EZTRACE_GOMP_EVENTS_ID; int res __attribute__ ((__unused__)); res = asprintf(&gomp_module.name, "omp"); res = asprintf(&gomp_module.description, "Module for OpenMP parallel regions"); gomp_module.token.data = &gomp_module; eztrace_convert_register_module(&gomp_module); } void libfinalize(void) __attribute__ ((destructor)); void libfinalize(void) { } eztrace-1.1-7/src/modules/omp/PaxHeaders.7332/Makefile.am0000644000000000000000000000013013053046645017721 xustar0029 mtime=1487687077.29549415 30 atime=1508162220.025836559 29 ctime=1508162367.89392129 eztrace-1.1-7/src/modules/omp/Makefile.am0000644000175000017500000000323513053046645021115 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis # See COPYING in top-level directory. if OPENMP_FOUND TLCFLAGS=$(TL_CPPFLAGS) TLLDFLAGS=$(TL_LDFLAGS) TLLIBADD=$(TL_LIB) GTGCFLAGS=$(GTG_CPPFLAGS) GTGLDFLAGS=$(GTG_LDFLAGS) GTGDEPENDENCIES = $(GTG_DEPENDENCIES) GTGLIBADD=$(GTG_LIB) bin_SCRIPTS = eztrace_cc AM_CFLAGS = -W -Wall -Wextra AM_CFLAGS+=-DOPENMP_FOUND lib_LTLIBRARIES = libeztrace-convert-omp.la \ libeztrace-omp.la \ libeztrace-autostart-omp.la AM_CFLAGS += -I$(srcdir)/../../core/ -I$(top_builddir)/src/core \ -I$(top_srcdir)/src/pptrace libeztrace_convert_omp_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(GTGCFLAGS) libeztrace_convert_omp_la_CFLAGS = $(AM_CFLAGS) libeztrace_convert_omp_la_LIBADD = $(TLLIBADD) $(GTGLIBADD) libeztrace_convert_omp_la_LDFLAGS = --no-undefined $(GTGLDFLAGS) $(TLLDFLAGS) libeztrace_convert_omp_la_DEPENDENCIES = $(GTGDEPENDENCIES) libeztrace_convert_omp_la_SOURCES = eztrace_convert_gomp.c libeztrace_omp_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) libeztrace_omp_la_CFLAGS = $(AM_CFLAGS) libeztrace_omp_la_LIBADD = -lm -lpthread $(TLLIBADD) libeztrace_omp_la_LDFLAGS = --no-undefined $(TLLDFLAGS) libeztrace_omp_la_SOURCES = gomp.c libeztrace_autostart_omp_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) libeztrace_autostart_omp_la_CFLAGS = -W -Wall -Wextra -DEZTRACE_AUTOSTART $(AM_CFLAGS) libeztrace_autostart_omp_la_LIBADD = -lm -lpthread $(TLLIB) libeztrace_autostart_omp_la_LDFLAGS = -rdynamic --no-undefined $(TLLDFLAGS) libeztrace_autostart_omp_la_SOURCES = gomp.c noinst_HEADERS = gomp_ev_codes.h #pomp2_lib.h EXTRA_DIST = eztrace_cc.in SUBDIRS = pomp-lib-dummy endif # OPENMP_FOUND eztrace-1.1-7/src/modules/omp/PaxHeaders.7332/Makefile.in0000644000000000000000000000013113171135254017727 xustar0030 mtime=1508162220.053838619 30 atime=1508162286.583024231 29 ctime=1508162367.89792164 eztrace-1.1-7/src/modules/omp/Makefile.in0000644000175000017500000011062513171135254021124 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src/modules/omp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__noinst_HEADERS_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = eztrace_cc CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" LTLIBRARIES = $(lib_LTLIBRARIES) libeztrace_autostart_omp_la_DEPENDENCIES = am__libeztrace_autostart_omp_la_SOURCES_DIST = gomp.c @OPENMP_FOUND_TRUE@am_libeztrace_autostart_omp_la_OBJECTS = \ @OPENMP_FOUND_TRUE@ libeztrace_autostart_omp_la-gomp.lo libeztrace_autostart_omp_la_OBJECTS = \ $(am_libeztrace_autostart_omp_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libeztrace_autostart_omp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(libeztrace_autostart_omp_la_CFLAGS) $(CFLAGS) \ $(libeztrace_autostart_omp_la_LDFLAGS) $(LDFLAGS) -o $@ @OPENMP_FOUND_TRUE@am_libeztrace_autostart_omp_la_rpath = -rpath \ @OPENMP_FOUND_TRUE@ $(libdir) am__DEPENDENCIES_1 = @OPENMP_FOUND_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) am__libeztrace_convert_omp_la_SOURCES_DIST = eztrace_convert_gomp.c @OPENMP_FOUND_TRUE@am_libeztrace_convert_omp_la_OBJECTS = libeztrace_convert_omp_la-eztrace_convert_gomp.lo libeztrace_convert_omp_la_OBJECTS = \ $(am_libeztrace_convert_omp_la_OBJECTS) libeztrace_convert_omp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(libeztrace_convert_omp_la_CFLAGS) $(CFLAGS) \ $(libeztrace_convert_omp_la_LDFLAGS) $(LDFLAGS) -o $@ @OPENMP_FOUND_TRUE@am_libeztrace_convert_omp_la_rpath = -rpath \ @OPENMP_FOUND_TRUE@ $(libdir) @OPENMP_FOUND_TRUE@libeztrace_omp_la_DEPENDENCIES = \ @OPENMP_FOUND_TRUE@ $(am__DEPENDENCIES_2) am__libeztrace_omp_la_SOURCES_DIST = gomp.c @OPENMP_FOUND_TRUE@am_libeztrace_omp_la_OBJECTS = \ @OPENMP_FOUND_TRUE@ libeztrace_omp_la-gomp.lo libeztrace_omp_la_OBJECTS = $(am_libeztrace_omp_la_OBJECTS) libeztrace_omp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(libeztrace_omp_la_CFLAGS) $(CFLAGS) \ $(libeztrace_omp_la_LDFLAGS) $(LDFLAGS) -o $@ @OPENMP_FOUND_TRUE@am_libeztrace_omp_la_rpath = -rpath $(libdir) SCRIPTS = $(bin_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libeztrace_autostart_omp_la_SOURCES) \ $(libeztrace_convert_omp_la_SOURCES) \ $(libeztrace_omp_la_SOURCES) DIST_SOURCES = $(am__libeztrace_autostart_omp_la_SOURCES_DIST) \ $(am__libeztrace_convert_omp_la_SOURCES_DIST) \ $(am__libeztrace_omp_la_SOURCES_DIST) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__noinst_HEADERS_DIST = gomp_ev_codes.h HEADERS = $(noinst_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = pomp-lib-dummy am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/eztrace_cc.in \ $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUDA_CFLAGS = @CUDA_CFLAGS@ CUDA_LDFLAGS = @CUDA_LDFLAGS@ CUDA_LIBS = @CUDA_LIBS@ CUDA_ROOT = @CUDA_ROOT@ CUPTI_CFLAGS = @CUPTI_CFLAGS@ CUPTI_LDFLAGS = @CUPTI_LDFLAGS@ CUPTI_LIBS = @CUPTI_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ DYNLIB_EXT = @DYNLIB_EXT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ GTGDIR = @GTGDIR@ GTG_CPPFLAGS = @GTG_CPPFLAGS@ GTG_DEPENDENCIES = @GTG_DEPENDENCIES@ GTG_EXT_CPPFLAGS = @GTG_EXT_CPPFLAGS@ GTG_EXT_LDFLAGS = @GTG_EXT_LDFLAGS@ GTG_EXT_LIB = @GTG_EXT_LIB@ GTG_LDFLAGS = @GTG_LDFLAGS@ GTG_LIB = @GTG_LIB@ GTG_OUT_OF_ORDER = @GTG_OUT_OF_ORDER@ HAVE_ENV = @HAVE_ENV@ HAVE_LIBBACKTRACE = @HAVE_LIBBACKTRACE@ HAVE_LIBOPCODE = @HAVE_LIBOPCODE@ HAVE_PRCTL_H = @HAVE_PRCTL_H@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LD_LIBRARY_PATH_NAME = @LD_LIBRARY_PATH_NAME@ LD_PRELOAD_NAME = @LD_PRELOAD_NAME@ LIBBACKTRACE_CPPFLAGS = @LIBBACKTRACE_CPPFLAGS@ LIBBACKTRACE_LDFLAGS = @LIBBACKTRACE_LDFLAGS@ LIBBACKTRACE_LIB = @LIBBACKTRACE_LIB@ LIBBACKTRACE_ROOT = @LIBBACKTRACE_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LITL_PRINT = @LITL_PRINT@ LITL_ROOT = @LITL_ROOT@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPI_CFLAGS = @MPI_CFLAGS@ MPI_EVENT_ID = @MPI_EVENT_ID@ MPI_INC = @MPI_INC@ MPI_LDFLAGS = @MPI_LDFLAGS@ MPI_MODULE_NAME = @MPI_MODULE_NAME@ MPI_ROOT = @MPI_ROOT@ NM = @NM@ NMEDIT = @NMEDIT@ NVCC = @NVCC@ NVCCFLAGS = @NVCCFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAPIDIR = @PAPIDIR@ PAPI_CPPFLAGS = @PAPI_CPPFLAGS@ PAPI_ENABLED = @PAPI_ENABLED@ PAPI_LDFLAGS = @PAPI_LDFLAGS@ PAPI_LIBDIR = @PAPI_LIBDIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PPTRACE_BINARY_TYPE = @PPTRACE_BINARY_TYPE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STARPU_CFLAGS = @STARPU_CFLAGS@ STARPU_CPPFLAGS = @STARPU_CPPFLAGS@ STARPU_LDFLAGS = @STARPU_LDFLAGS@ STARPU_LIBS = @STARPU_LIBS@ STARPU_ROOT = @STARPU_ROOT@ STRIP = @STRIP@ TARGET_BITS = @TARGET_BITS@ TL_CPPFLAGS = @TL_CPPFLAGS@ TL_EXT_CPPFLAGS = @TL_EXT_CPPFLAGS@ TL_EXT_LDFLAGS = @TL_EXT_LDFLAGS@ TL_EXT_LIB = @TL_EXT_LIB@ TL_LDFLAGS = @TL_LDFLAGS@ TL_LIB = @TL_LIB@ USE_BIN_INSTRUMENTATION = @USE_BIN_INSTRUMENTATION@ USE_CUDADIR_FROM_USER = @USE_CUDADIR_FROM_USER@ USE_GETTID = @USE_GETTID@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ USE_PAPIDIR_FROM_USER = @USE_PAPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @OPENMP_FOUND_TRUE@TLCFLAGS = $(TL_CPPFLAGS) @OPENMP_FOUND_TRUE@TLLDFLAGS = $(TL_LDFLAGS) @OPENMP_FOUND_TRUE@TLLIBADD = $(TL_LIB) @OPENMP_FOUND_TRUE@GTGCFLAGS = $(GTG_CPPFLAGS) @OPENMP_FOUND_TRUE@GTGLDFLAGS = $(GTG_LDFLAGS) @OPENMP_FOUND_TRUE@GTGDEPENDENCIES = $(GTG_DEPENDENCIES) @OPENMP_FOUND_TRUE@GTGLIBADD = $(GTG_LIB) @OPENMP_FOUND_TRUE@bin_SCRIPTS = eztrace_cc @OPENMP_FOUND_TRUE@AM_CFLAGS = -W -Wall -Wextra -DOPENMP_FOUND \ @OPENMP_FOUND_TRUE@ -I$(srcdir)/../../core/ \ @OPENMP_FOUND_TRUE@ -I$(top_builddir)/src/core \ @OPENMP_FOUND_TRUE@ -I$(top_srcdir)/src/pptrace @OPENMP_FOUND_TRUE@lib_LTLIBRARIES = libeztrace-convert-omp.la \ @OPENMP_FOUND_TRUE@ libeztrace-omp.la \ @OPENMP_FOUND_TRUE@ libeztrace-autostart-omp.la @OPENMP_FOUND_TRUE@libeztrace_convert_omp_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(GTGCFLAGS) @OPENMP_FOUND_TRUE@libeztrace_convert_omp_la_CFLAGS = $(AM_CFLAGS) @OPENMP_FOUND_TRUE@libeztrace_convert_omp_la_LIBADD = $(TLLIBADD) $(GTGLIBADD) @OPENMP_FOUND_TRUE@libeztrace_convert_omp_la_LDFLAGS = --no-undefined $(GTGLDFLAGS) $(TLLDFLAGS) @OPENMP_FOUND_TRUE@libeztrace_convert_omp_la_DEPENDENCIES = $(GTGDEPENDENCIES) @OPENMP_FOUND_TRUE@libeztrace_convert_omp_la_SOURCES = eztrace_convert_gomp.c @OPENMP_FOUND_TRUE@libeztrace_omp_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) @OPENMP_FOUND_TRUE@libeztrace_omp_la_CFLAGS = $(AM_CFLAGS) @OPENMP_FOUND_TRUE@libeztrace_omp_la_LIBADD = -lm -lpthread $(TLLIBADD) @OPENMP_FOUND_TRUE@libeztrace_omp_la_LDFLAGS = --no-undefined $(TLLDFLAGS) @OPENMP_FOUND_TRUE@libeztrace_omp_la_SOURCES = gomp.c @OPENMP_FOUND_TRUE@libeztrace_autostart_omp_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) @OPENMP_FOUND_TRUE@libeztrace_autostart_omp_la_CFLAGS = -W -Wall -Wextra -DEZTRACE_AUTOSTART $(AM_CFLAGS) @OPENMP_FOUND_TRUE@libeztrace_autostart_omp_la_LIBADD = -lm -lpthread $(TLLIB) @OPENMP_FOUND_TRUE@libeztrace_autostart_omp_la_LDFLAGS = -rdynamic --no-undefined $(TLLDFLAGS) @OPENMP_FOUND_TRUE@libeztrace_autostart_omp_la_SOURCES = gomp.c @OPENMP_FOUND_TRUE@noinst_HEADERS = gomp_ev_codes.h #pomp2_lib.h @OPENMP_FOUND_TRUE@EXTRA_DIST = eztrace_cc.in @OPENMP_FOUND_TRUE@SUBDIRS = pomp-lib-dummy all: all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/modules/omp/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/modules/omp/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): eztrace_cc: $(top_builddir)/config.status $(srcdir)/eztrace_cc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libeztrace-autostart-omp.la: $(libeztrace_autostart_omp_la_OBJECTS) $(libeztrace_autostart_omp_la_DEPENDENCIES) $(EXTRA_libeztrace_autostart_omp_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_autostart_omp_la_LINK) $(am_libeztrace_autostart_omp_la_rpath) $(libeztrace_autostart_omp_la_OBJECTS) $(libeztrace_autostart_omp_la_LIBADD) $(LIBS) libeztrace-convert-omp.la: $(libeztrace_convert_omp_la_OBJECTS) $(libeztrace_convert_omp_la_DEPENDENCIES) $(EXTRA_libeztrace_convert_omp_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_convert_omp_la_LINK) $(am_libeztrace_convert_omp_la_rpath) $(libeztrace_convert_omp_la_OBJECTS) $(libeztrace_convert_omp_la_LIBADD) $(LIBS) libeztrace-omp.la: $(libeztrace_omp_la_OBJECTS) $(libeztrace_omp_la_DEPENDENCIES) $(EXTRA_libeztrace_omp_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_omp_la_LINK) $(am_libeztrace_omp_la_rpath) $(libeztrace_omp_la_OBJECTS) $(libeztrace_omp_la_LIBADD) $(LIBS) install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_autostart_omp_la-gomp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_convert_omp_la-eztrace_convert_gomp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_omp_la-gomp.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libeztrace_autostart_omp_la-gomp.lo: gomp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_omp_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_omp_la_CFLAGS) $(CFLAGS) -MT libeztrace_autostart_omp_la-gomp.lo -MD -MP -MF $(DEPDIR)/libeztrace_autostart_omp_la-gomp.Tpo -c -o libeztrace_autostart_omp_la-gomp.lo `test -f 'gomp.c' || echo '$(srcdir)/'`gomp.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_autostart_omp_la-gomp.Tpo $(DEPDIR)/libeztrace_autostart_omp_la-gomp.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gomp.c' object='libeztrace_autostart_omp_la-gomp.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_omp_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_omp_la_CFLAGS) $(CFLAGS) -c -o libeztrace_autostart_omp_la-gomp.lo `test -f 'gomp.c' || echo '$(srcdir)/'`gomp.c libeztrace_convert_omp_la-eztrace_convert_gomp.lo: eztrace_convert_gomp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_omp_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_convert_omp_la_CFLAGS) $(CFLAGS) -MT libeztrace_convert_omp_la-eztrace_convert_gomp.lo -MD -MP -MF $(DEPDIR)/libeztrace_convert_omp_la-eztrace_convert_gomp.Tpo -c -o libeztrace_convert_omp_la-eztrace_convert_gomp.lo `test -f 'eztrace_convert_gomp.c' || echo '$(srcdir)/'`eztrace_convert_gomp.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_convert_omp_la-eztrace_convert_gomp.Tpo $(DEPDIR)/libeztrace_convert_omp_la-eztrace_convert_gomp.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_convert_gomp.c' object='libeztrace_convert_omp_la-eztrace_convert_gomp.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_omp_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_convert_omp_la_CFLAGS) $(CFLAGS) -c -o libeztrace_convert_omp_la-eztrace_convert_gomp.lo `test -f 'eztrace_convert_gomp.c' || echo '$(srcdir)/'`eztrace_convert_gomp.c libeztrace_omp_la-gomp.lo: gomp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_omp_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_omp_la_CFLAGS) $(CFLAGS) -MT libeztrace_omp_la-gomp.lo -MD -MP -MF $(DEPDIR)/libeztrace_omp_la-gomp.Tpo -c -o libeztrace_omp_la-gomp.lo `test -f 'gomp.c' || echo '$(srcdir)/'`gomp.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_omp_la-gomp.Tpo $(DEPDIR)/libeztrace_omp_la-gomp.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gomp.c' object='libeztrace_omp_la-gomp.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_omp_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_omp_la_CFLAGS) $(CFLAGS) -c -o libeztrace_omp_la-gomp.lo `test -f 'gomp.c' || echo '$(srcdir)/'`gomp.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) $(SCRIPTS) $(HEADERS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binSCRIPTS install-libLTLIBRARIES install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binSCRIPTS uninstall-libLTLIBRARIES .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libLTLIBRARIES \ clean-libtool cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-binSCRIPTS install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libLTLIBRARIES install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-binSCRIPTS uninstall-libLTLIBRARIES .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/src/modules/omp/PaxHeaders.7332/pomp-lib-dummy0000644000000000000000000000013213171135477020465 xustar0030 mtime=1508162367.941925482 30 atime=1508162372.166294941 30 ctime=1508162367.941925482 eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/0000755000175000017500000000000013171135477021731 5ustar00trahaytrahay00000000000000eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/PaxHeaders.7332/pomp2_lib.h0000644000000000000000000000013213012560437022566 xustar0030 mtime=1479205151.296727461 30 atime=1508138886.144174364 30 ctime=1508162367.929924435 eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/pomp2_lib.h0000644000175000017500000005333513012560437023766 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ #ifndef POMP2_LIB_H #define POMP2_LIB_H #ifdef OPENMP_FOUND /* todo: check that in autoconf */ #include #endif /* OPENMP_FOUND */ #include #include #ifdef __cplusplus extern "C" { #endif /** @file pomp2_lib.h * @status alpha * * @authors Daniel Lorenz * Dirk Schmidl * Peter Philippen * * @brief This file contains the declarations of all * POMP2 functions. * */ /** Handles to identify OpenMP regions. */ typedef int POMP2_Region_handle; typedef int64_t POMP2_Task_handle; /** @name Functions generated by the instrumenter */ /*@{*/ /** * Returns the number of instrumented regions.@n * The instrumenter scans all opari-created include files with nm and greps * the POMP2_INIT_uuid_numRegions() function calls. Here we return the sum of * all numRegions. * @return number of instrumented regions */ extern size_t POMP2_Get_num_regions(); /** * Init all opari-created regions.@n * The instrumentor scans all opari-created include files with nm and greps * the POMP2_INIT_uuid_numRegions() function calls. The instrumentor then * defines these functions by calling all grepped functions. */ extern void POMP2_Init_regions(); /** * Returns the opari version. * @return version string */ extern const char* POMP2_Get_opari2_version(); /*@}*/ /** Function that returns a new task handle. * @return new task handle */ extern POMP2_Task_handle POMP2_Get_new_task_handle(); /** Finalizes the POMP2 adapter. It is inserted at the #%pragma pomp inst end. */ extern void POMP2_Finalize(); /** Initializes the POMP2 adapter. It is inserted at the #%pragma pomp inst begin. */ extern void POMP2_Init(); /** Disables the POMP2 adapter. */ extern void POMP2_Off(); /** Enables the POMP2 adapter. */ extern void POMP2_On(); /** Called at the begin of a user defined POMP2 region. @param pomp2_handle The handle of the started region. */ extern void POMP2_Begin(POMP2_Region_handle* pomp2_handle); /** Called at the begin of a user defined POMP2 region. @param pomp2_handle The handle of the started region. */ extern void POMP2_End(POMP2_Region_handle* pomp2_handle); /** Registers a POMP2 region and returns a region handle. @param pomp2_handle Returns the handle for the newly registered region. @param ctc_string A string containing the region data. */ extern void POMP2_Assign_handle(POMP2_Region_handle* pomp2_handle, const char ctc_string[]); /** Called before an atomic statement. @param pomp2_handle The handle of the started region. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Atomic_enter(POMP2_Region_handle* pomp2_handle, const char ctc_string[]); /** Called after an atomic statement. @param pomp2_handle The handle of the ended region. */ extern void POMP2_Atomic_exit(POMP2_Region_handle* pomp2_handle); /** Called before a barrier. \n \e OpenMP \e 3.0: Barriers can be used as scheduling points for tasks. When entering a barrier the task id of the currently executing task (\e pomp2_current_task) is saved in \e pomp2_old_task, which is defined inside the instrumented user code. @param pomp2_handle The handle of the started region. @param pomp2_old_task Pointer to a "taskprivate" variable where the current task id is stored. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Barrier_enter(POMP2_Region_handle* pomp2_handle, POMP2_Task_handle* pomp2_old_task, const char ctc_string[]); /** Called after a barrier. \n \e OpenMP \e 3.0: When a task exits a barrier the variable \e pomp2_old_task (defined in the instrumented user code) holds the id of the task that entered the barrier. The value is stored in the adapter (in \e pomp2_current_task) to be made available for the measurement system for the following regions. @param pomp2_handle The handle of the ended region. @param pomp2_old_task "Taskprivate" variable storing the id of the task the barrier is located in. */ extern void POMP2_Barrier_exit(POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_old_task); /** Called before an implicit barrier. \e OpenMP \e 3.0: Barriers can be used as scheduling points for tasks. When entering a barrier the task id of the currently executing task (\e pomp2_current_task) is saved in \e pomp2_old_task, which is defined inside the instrumented user code. @param pomp2_handle The handle of the started region. @param pomp2_old_task Pointer to a "taskprivate" variable where the current task id is stored. */ extern void POMP2_Implicit_barrier_enter(POMP2_Region_handle* pomp2_handle, POMP2_Task_handle* pomp2_old_task); /** Called after an implicit barrier. \e OpenMP \e 3.0: When a task exits a barrier the variable \e pomp2_old_task (defined in the instrumented user code) holds the id of the task that entered the barrier. The value is stored in the adapter (in \e pomp2_current_task) to be made available for the measurement system for the following regions. @param pomp2_handle The handle of the started region. @param pomp2_old_task "Taskprivate" variable storing the id the task the implicit barrier is used in. */ extern void POMP2_Implicit_barrier_exit(POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_old_task); /** Called before an flush. @param pomp2_handle The handle of the started region. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Flush_enter(POMP2_Region_handle* pomp2_handle, const char ctc_string[]); /** Called after an flush. @param pomp2_handle The handle of the ended region. */ extern void POMP2_Flush_exit(POMP2_Region_handle* pomp2_handle); /** Called at the start of a critical region. @param pomp2_handle The handle of the started region. */ extern void POMP2_Critical_begin(POMP2_Region_handle* pomp2_handle); /** Called at the end of a critical region. @param pomp2_handle The handle of the ended region. */ extern void POMP2_Critical_end(POMP2_Region_handle* pomp2_handle); /** Called before a critical region. @param pomp2_handle The handle of the started region. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Critical_enter(POMP2_Region_handle* pomp2_handle, const char ctc_string[]); /** Called after a critical region. @param pomp2_handle The handle of the region. */ extern void POMP2_Critical_exit(POMP2_Region_handle* pomp2_handle); /** Called before a for loop. @param pomp2_handle The handle of the region. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_For_enter(POMP2_Region_handle* pomp2_handle, const char ctc_string[]); /** Called after a for loop. @param pomp2_handle The handle of the region. */ extern void POMP2_For_exit(POMP2_Region_handle* pomp2_handle); /** Called at the start of a master region. @param pomp2_handle The handle of the region. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Master_begin(POMP2_Region_handle* pomp2_handle, const char ctc_string[]); /** Called at the end of a master region. @param pomp2_handle The handle of the ended region. */ extern void POMP2_Master_end(POMP2_Region_handle* pomp2_handle); /** Called at the start of a parallel region. \e OpenMP \e 3.0: When a new parallel region is entered, each thread taking part in that region is executed as a task. These tasks are assigned a new unique task id which is stored in \e pomp2_current_task. @param pomp2_handle The handle of the region. */ extern void POMP2_Parallel_begin(POMP2_Region_handle* pomp2_handle); /** Called at the end of a parallel region. @param pomp2_handle The handle of the region. */ extern void POMP2_Parallel_end(POMP2_Region_handle* pomp2_handle); /** Called before a parallel region. \e OpenMP \e 3.0: The task id of the currently executing task (\e pomp2_current_task) is saved in \e pomp2_old_task, which is defined inside the instrumented user code. In each of the threads taking part in the following parallel region a newly defined unique task id is assigned (see \ref POMP2_Parallel_begin) @param pomp2_handle The handle of the region. @param if_clause Value of the argument of an if clause (if present). @param num_threads Upper bound for number of child threads. @param pomp2_old_task The task id of the region from which the parallel region was started. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Parallel_fork(POMP2_Region_handle* pomp2_handle, int if_clause, int num_threads, POMP2_Task_handle* pomp2_old_task, const char ctc_string[]); /** Called after a parallel region. \e OpenMP \e 3.0: When a task exits a parallel region the variable \e pomp2_old_task (defined in the instrumented user code) holds the id of the task that entered the region. The value is stored in the adapter (in \e pomp2_current_task) to be made available for the measurement system for the following regions. @param pomp2_handle The handle of the region. @param pomp2_old_task The task id of the region inside of which the parallel region was executed. */ extern void POMP2_Parallel_join(POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_old_task); /** Called at the start of a section. @param pomp2_handle The handle of the region. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Section_begin(POMP2_Region_handle* pomp2_handle, const char ctc_string[]); /** Called at the end of a section. @param pomp2_handle The handle of the region. */ extern void POMP2_Section_end(POMP2_Region_handle* pomp2_handle); /** Called before a set of sections. @param pomp2_handle The handle of the region. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Sections_enter(POMP2_Region_handle* pomp2_handle, const char ctc_string[]); /** Called after a set of sections. @param pomp2_handle The handle of the region. */ extern void POMP2_Sections_exit(POMP2_Region_handle* pomp2_handle); /** Called at the start of a single region. @param pomp2_handle The handle of the region. */ extern void POMP2_Single_begin(POMP2_Region_handle* pomp2_handle); /** Called at the end of a single region. @param pomp2_handle The handle of the region. */ extern void POMP2_Single_end(POMP2_Region_handle* pomp2_handle); /** Called before a single region. @param pomp2_handle The handle of the region. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Single_enter(POMP2_Region_handle* pomp2_handle, const char ctc_string[]); /** Called after a single region. @param pomp2_handle The handle of the region. */ extern void POMP2_Single_exit(POMP2_Region_handle* pomp2_handle); /** Called before a workshare region. @param pomp2_handle The handle of the region. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Workshare_enter(POMP2_Region_handle* pomp2_handle, const char ctc_string[]); /** Called after a workshare region. @param pomp2_handle The handle of the region. */ extern void POMP2_Workshare_exit(POMP2_Region_handle* pomp2_handle); /** Called at the start of an ordered region. @param pomp2_handle The handle of the region. */ extern void POMP2_Ordered_begin(POMP2_Region_handle* pomp2_handle); /** Called at the end of an ordered region. @param pomp2_handle The handle of the region. */ extern void POMP2_Ordered_end(POMP2_Region_handle* pomp2_handle); /** Called before an ordered region. @param pomp2_handle The handle of the region. @param ctc_string Initialization string. Ignored. */ extern void POMP2_Ordered_enter(POMP2_Region_handle* pomp2_handle, const char ctc_string[]); /** Called after an ordered region. @param pomp2_handle The handle of the region. */ extern void POMP2_Ordered_exit(POMP2_Region_handle* pomp2_handle); /** \e OpenMP \e 3.0: When a task encounters a task construct it creates a new task. The task may be scheduled for later execution or executed immediately. In both cases the pomp-adapter assigns the id of the currently active task to \e pomp2_old_task which is defined in the instrumented user code. @param pomp2_handle The handle of the region. @param pomp2_old_task Pointer to the task id in the instrumented user code @param pomp2_if If an if clause is present on the task directive this variable holds the evaluated result of the argument of the if clause. Else it is 1. @param ctc_string The initialization string. */ extern void POMP2_Task_create_begin(POMP2_Region_handle* pomp2_handle, POMP2_Task_handle* pomp2_new_task, POMP2_Task_handle* pomp2_old_task, int pomp2_if, const char ctc_string[]); /** \e OpenMP \e 3.0: After the code region which is executed as a separate task, the task id of the creating task is restored from \e pomp2_old_task (defined in the instrumented user code) and stored in \e pomp2_current_task inside the adapter. @param pomp2_handle The region handle. @param pomp2_old_task The task id of the task inside of which the task was created. This is stored inside the instrumented user code. */ extern void POMP2_Task_create_end(POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_old_task); /** \e OpenMP \e 3.0: Marks the beginning of the execution of a task. @param pomp2_handle The region handle. @param pomp2_task handle of task. */ extern void POMP2_Task_begin(POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_task); /** \e OpenMP \e 3.0: Marks the end of the execution of a task. @param pomp2_handle The region handle. */ extern void POMP2_Task_end(POMP2_Region_handle* pomp2_handle); /** \e OpenMP \e 3.0: When a task encounters a task construct it creates a new task. If the untied clause is specified the task is executed as an untied task. The task may be scheduled for later execution or executed immediately. In both cases the pomp-adapter assigns the id of the currently active task to \e pomp2_old_task which is defined in the instrumented user code. @param pomp2_handle The handle of the region. @param pomp2_old_task Pointer to the task id in the instrumented user code. @param pomp2_if If an if clause is present on the task directive this variable holds the evaluated result of the argument of the if clause. Else it is 1. @param ctc_string The initialization string. */ extern void POMP2_Untied_task_create_begin(POMP2_Region_handle* pomp2_handle, POMP2_Task_handle* pomp2_new_task, POMP2_Task_handle* pomp2_old_task, int pomp2_if, const char ctc_string[]); /** \e OpenMP \e 3.0: After the code region which is executed as a separate untied task, the task id of the creating task is restored from \e pomp2_old_task (defined in the instrumented user code) and stored in \e pomp2_current_task inside the adapter. @param pomp2_handle The region handle. @param pomp2_old_task The id of the task from which the untied task was created. This is stored in the instrumented user code. */ extern void POMP2_Untied_task_create_end(POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_old_task); /** \e OpenMp \e 3.0: Marks the beginning of the execution of an untied task. @param pomp2_handle The region handle. @param pomp2_task Handle of this task. */ void POMP2_Untied_task_begin(POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_task); /** \e OpenMP \e 3.0: Marks the end of the execution of a task. @param pomp2_handle The region handle. */ extern void POMP2_Untied_task_end(POMP2_Region_handle* pomp2_handle); /** Called before a taskwait. \n \e OpenMP \e 3.0: Taskwait directives can be used as scheduling points for tasks. When entering a taskwait region the task id of the currently executing task (\e pomp2_current_task) is saved in \e pomp2_old_task, which is defined inside the instrumented user code. @param pomp2_handle The handle of the started region. @param pomp2_old_task Pointer to a "taskprivate" variable where the current task id is stored. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Taskwait_begin(POMP2_Region_handle* pomp2_handle, POMP2_Task_handle* pomp2_old_task, const char ctc_string[]); /** Called after a barrier. \n \e OpenMP \e 3.0: When a task exits a taskwait region the variable \e pomp2_old_task (defined in the instrumented user code) holds the id of the task that entered the taskwait. The value is stored in the adapter (in \e pomp2_current_task) to be made available for the measurement system for the following regions. @param pomp2_handle The handle of the ended region. @param pomp2_old_task "Taskprivate" variable storing the id of the task the barrier is located in. */ extern void POMP2_Taskwait_end(POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_old_task); /** Wraps the omp_get_max_threads function. * * Needed for the instrumentation of parallel regions * where the num_threads clause is used with the return * value of the omp_get_max_threads function. This can't * be used directly because the user may have declared * it himself. Double declarations are not allowed. */ extern int POMP2_Lib_get_max_threads(); #ifdef OPENMP_FOUND /** Wraps the omp_init_lock function. * @param s The OpenMP lock to initialize.*/ extern void POMP2_Init_lock( omp_lock_t* s ); /** Wraps the omp_destroy_lock function. * @param s The OpenMP lock to destroy. */ extern void POMP2_Destroy_lock( omp_lock_t* s ); /** Wraps the omp_set_lock function. * @param s The OpenMP lock to set. */ extern void POMP2_Set_lock( omp_lock_t* s ); /** Wraps the omp_unset_lock function. * @param s the OpenMP lock to unset. */ extern void POMP2_Unset_lock( omp_lock_t* s ); /** Wraps the omp_test_lock function * @param s the OpenMP lock to test for. * @return result of omp_test_lock*/ extern int POMP2_Test_lock( omp_lock_t* s ); /** Wraps the omp_init_nest_lock function. * @param s The nested OpenMP lock to initialize. */ extern void POMP2_Init_nest_lock( omp_nest_lock_t* s ); /** Wraps the omp_destroy_nest_lock function. * @param s The nested OpenMP lock to destroy. */ extern void POMP2_Destroy_nest_lock( omp_nest_lock_t* s ); /** Wraps the omp_set_nest_lock function * @param s The nested OpenMP lock to set.*/ extern void POMP2_Set_nest_lock( omp_nest_lock_t* s ); /** Wraps the omp_unset_nest_lock function * @param s The nested OpenMP lock to unset.*/ extern void POMP2_Unset_nest_lock( omp_nest_lock_t* s ); /** Wraps the omp_test_nest_lock function * @param s The nested OpenMP lock to test for. * @return result of omp_test_nest_lock*/ extern int POMP2_Test_nest_lock( omp_nest_lock_t* s ); #endif /* OPENMP_FOUND */ #ifdef __cplusplus } #endif #endif eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/PaxHeaders.7332/pomp2_parse_init_regions.awk.in0000644000000000000000000000013213012560437026643 xustar0030 mtime=1479205151.296727461 30 atime=1507797543.094865134 30 ctime=1508162367.945925832 eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/pomp2_parse_init_regions.awk.in0000644000175000017500000001064413012560437030037 0ustar00trahaytrahay00000000000000#!@OPARI2_AWK@ -f ## ## This file is part of the Score-P software (http://www.score-p.org) ## ## Copyright (c) 2009-2011, ## RWTH Aachen University, Germany ## ## Copyright (c) 2009-2011, ## Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ## ## Copyright (c) 2009-2011, ## Technische Universitaet Dresden, Germany ## ## Copyright (c) 2009-2011, ## University of Oregon, Eugene, USA ## ## Copyright (c) 2009-2011, 2013 ## Forschungszentrum Juelich GmbH, Germany ## ## Copyright (c) 2009-2011, ## German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ## ## Copyright (c) 2009-2011, ## Technische Universitaet Muenchen, Germany ## ## This software may be modified and distributed under the terms of ## a BSD-style license. See the COPYING file in the package base ## directory for details. ## # # pomp2_parse_init_regions.awk # # Expects the output of # $(NM) $ALL_OBJS_AND_LIBS as input. See # for a working example. # # The output is C-code that needs to be linked to your application. It # provides several functions: # # void POMP2_Init_regions(): need to be called from your POMP2 library to # initialize all instrumented POMP2 region by calling the instrumented # functions POMP2_Init_reg_*. # # size_t POMP2_Get_num_regions() returns the number of POMP2 regions found # in $ALL_OBJS_AND_LIBS. # # const char* POMP2_Get_opari2_version() returns a version string. # # Three functions returning int and specifying the library interface version: # int POMP2_Get_required_pomp2_library_version_(current|revision|age)() # # Author: Christian Roessel # / [_]*[Pp][Oo][Mm][Pp]2_[Ii][Nn][Ii][Tt]_[Rr][Ee][Gg]_[0-9a-zA-Z][0-9a-zA-Z]*_[1-9][0-9]*/ { if ($0 ~ / [TDA] /) { for (i = 1; i <= NF; i++) { if (index($i,"POMP2_Init_reg") != 0) { separator = "POMP2_Init_reg"; } else if (index($i,"pomp2_init_reg") != 0) { separator = "pomp2_init_reg"; } else if (index($i,"POMP2_INIT_REG") != 0) { separator = "POMP2_INIT_REG"; } else { continue; } # $i looks like "POMP2_Init_reg_uniqueId_nRegions" or # like "pomp2_init_reg_uniqueId_nRegions" or # like "POMP2_INIT_REG_uniqueId_nRegions" split ($i,splitResult,separator); _uniqueId_nRegions = splitResult[2]; if (!(_uniqueId_nRegions in regions)) { regions[_uniqueId_nRegions] = $i; split(_uniqueId_nRegions, tokens, "_"); nRegions += tokens[3]; } } } } END{ print tmp "\n" print "#ifdef __cplusplus" print "extern \"C\"" print "{" print "#endif" print "#include \n" # cut away leading full-stops for (i in regions) { sub(/^\./, "", regions[i]); } # declare POMP2_Init_reg_* functions extern for (i in regions) { print "extern void " regions[i] "();"; } # define POMP2_Init_regions() and call all POMP2_Init_reg_* functions print "\nvoid POMP2_Init_regions()" print "{" for (i in regions) { print " " regions[i] "();"; } print "}\n" # define function POMP2_Get_num_regions() print "size_t POMP2_Get_num_regions()" print "{" if (nRegions != 0) { print " return " nRegions ";" } else { print " return 0;" } print "}\n" # define function POMP2_Get_opari2_version() print "const char* POMP2_Get_opari2_version()" print "{" print " return \"@PACKAGE_VERSION@\";" print "}\n" print "/* " print " * The following functions define the POMP2 library interface version" print " * the instrumented code conforms with. The library interface version" print " * is modeled after" print " * https://www.gnu.org/software/libtool/manual/libtool.html#Versioning" print " */\n" # define function POMP2_Get_required_pomp2_library_version_current() print "int POMP2_Get_required_pomp2_library_version_current()" print "{" print " return @LIBRARY_CURRENT@;" print "}\n" # define function POMP2_Get_required_pomp2_library_version_revision() print "int POMP2_Get_required_pomp2_library_version_revision()" print "{" print " return @LIBRARY_REVISION@;" print "}\n" # define function POMP2_Get_required_pomp2_library_version_age() print "int POMP2_Get_required_pomp2_library_version_age()" print "{" print " return @LIBRARY_AGE@;" print "}\n" print "#ifdef __cplusplus" print "}" print "#endif" } eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/PaxHeaders.7332/pomp2_region_info.h0000644000000000000000000000013213012560437024316 xustar0030 mtime=1479205151.296727461 30 atime=1508138886.188175463 30 ctime=1508162367.937925133 eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/pomp2_region_info.h0000644000175000017500000001655713012560437025523 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * * Copyright (c) 2009-2011, * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * * Copyright (c) 2009-2011, * Technische Universitaet Dresden, Germany * * Copyright (c) 2009-2011, * University of Oregon, Eugene, USA * * Copyright (c) 2009-2011, 2013 * Forschungszentrum Juelich GmbH, Germany * * Copyright (c) 2009-2011, * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * * Copyright (c) 2009-2011, * Technische Universitaet Muenchen, Germany * * This software may be modified and distributed under the terms of * a BSD-style license. See the COPYING file in the package base * directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ #ifndef POMP2_REGION_INFO_H #define POMP2_REGION_INFO_H /** * @file pomp2_region_info.h * @date Started Fri Mar 20 16:30:45 2009 * * @brief This file contains function declarations and structs * which handle informations on OpenMP regions. POMP2_Region_info * is used to store these informations. It can be filled with a * ctcString by ctcString2RegionInfo(). * */ #include /** * POMP2_Region_type * */ typedef enum /* POMP2_Region_type */ { POMP2_No_type, POMP2_Atomic, POMP2_Barrier, POMP2_Critical, POMP2_Do, POMP2_Flush, POMP2_For, POMP2_Master, POMP2_Ordered, POMP2_Parallel, POMP2_Parallel_do, POMP2_Parallel_for, POMP2_Parallel_sections, POMP2_Parallel_workshare, POMP2_Sections, POMP2_Single, POMP2_Task, POMP2_Taskuntied, POMP2_Taskwait, POMP2_User_region, POMP2_Workshare } POMP2_Region_type; /** converts regionType into a string * @param regionType The regionType to be converted. * @return string representation of the region type*/ const char* pomp2RegionType2String( POMP2_Region_type regionType ); /** * type to store the scheduling type of a for worksharing constuct * */ typedef enum { POMP2_No_schedule, POMP2_Static, /* needs chunk size */ POMP2_Dynamic, /* needs chunk size */ POMP2_Guided, /* needs chunk size */ POMP2_Runtime, POMP2_Auto } POMP2_Schedule_type; /** converts scheduleType into a string * @param scheduleType The scheduleType to be converted. * @return string representation of the scheduleType*/ const char* pomp2ScheduleType2String( POMP2_Schedule_type scheduleType ); /** * @brief This struct stores all information on an OpenMP region, like the * region type or corresponding source lines. The function * ctcString2RegionInfo() can be used to fill this struct with data * from a ctcString. */ typedef struct { /** @name Required attributes */ /*@{*/ /** type of the OpenMP region*/ POMP2_Region_type mRegionType; /** name of the corresponding source file from the opening pragma */ char* mStartFileName; /** line number of the first line from the opening pragma */ unsigned mStartLine1; /** line number of the last line from the opening pragma */ unsigned mStartLine2; /** name of the corresponding source file from the closing pragma */ char* mEndFileName; /** line number of the first line from the closing pragma */ unsigned mEndLine1; /** line number of the last line from the closing pragma */ unsigned mEndLine2; /*@}*/ /** @name Currently not provided by opari */ /*@{*/ /**true if a copyin clause is present*/ bool mHasCopyIn; /**true if a copyprivate clause is present*/ bool mHasCopyPrivate; /**true if an if clause is present*/ bool mHasIf; /**true if a firstprivate clause is present*/ bool mHasFirstPrivate; /**true if a lastprivate clause is present*/ bool mHasLastPrivate; /**true if a nowait clause is present*/ bool mHasNoWait; /**true if a numThreads clause is present*/ bool mHasNumThreads; /**true if an ordered clause is present*/ bool mHasOrdered; /**true if a reduction clause is present*/ bool mHasReduction; /**true if a collapse clause is present*/ bool mHasCollapse; /**true if a untied clause was present, even if the task was changed to tied during instrumentation.*/ bool mHasUntied; /** schedule type in the schedule clause*/ POMP2_Schedule_type mScheduleType; /** user group name*/ char* mUserGroupName; /*@}*/ /** @name Attributes for specific region types */ /*@{*/ /** number of sections*/ unsigned mNumSections; /** name of a named critical region*/ char* mCriticalName; /** name of a user defined region*/ char* mUserRegionName; /*@}*/ } POMP2_Region_info; /** * ctcString2RegionInfo() fills the POMP2_Region_info object with data read * from the ctcString. If the ctcString does not comply with the * specification, the program aborts with exit code 1. @n Rationale: * ctcString2RegionInfo() is used during initialization of the measurement * system. If an error occurs, it is better to abort than to struggle with * undefined behaviour or @e guessing the meaning of the broken string. * * @note Can be called from multiple threads concurrently, assuming malloc is * thread-safe. * * @note ctcString2RegionInfo() will assign memory to the members of @e * regionInfo. You are supposed to to release this memory by calling * freePOMP2RegionInfoMembers(). * * @param ctcString A string in the format * "length*key=value*[key=value]*". The length field is parsed but not used by * this implementation. Possible values for key are listed in * ctcTokenMap. The string must at least contain values for the keys @c * regionType, @c sscl and @c escl. Possible values for the key @c regionType * are listed in regionTypesMap. The format for @c sscl resp. @c escl values * is @c "filename:lineNo1:lineNo2". * * @param regionInfo must be a valid object * * @post At least the required attributes (see POMP2_Region_info) are set. @n * All other members of @e regionInfo are set to 0 resp. false * resp. POMP2_No_schedule. @n If @c regionType=sections than * POMP2_Region_info::mNumSections has a value > 0. @n If @c regionType=region * than POMP2_Region_info::mUserRegionName has a value != 0. @n If @c * regionType=critical than POMP2_Region_info::mCriticalName may have a value * != 0. * */ void ctcString2RegionInfo( const char ctcString[], POMP2_Region_info* regionInfo ); /** * Free the memory of the regionInfo members. * @param regionInfo The regioninfo to be freed. */ void freePOMP2RegionInfoMembers( POMP2_Region_info* regionInfo ); #endif /* POMP2_REGION_INFO_H */ eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/PaxHeaders.7332/pomp2_fwrapper_base.c0000644000000000000000000000013213012560437024633 xustar0030 mtime=1479205151.296727461 30 atime=1508138886.140174263 30 ctime=1508162367.937925133 eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/pomp2_fwrapper_base.c0000644000175000017500000000711013012560437026021 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2013, * RWTH Aachen University, Germany * * Copyright (c) 2009-2013, * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * * Copyright (c) 2009-2013, * Technische Universitaet Dresden, Germany * * Copyright (c) 2009-2013, * University of Oregon, Eugene, USA * * Copyright (c) 2009-2013, * Forschungszentrum Juelich GmbH, Germany * * Copyright (c) 2009-2013, * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * * Copyright (c) 2009-2013, * Technische Universitaet Muenchen, Germany * * This software may be modified and distributed under the terms of * a BSD-style license. See the COPYING file in the package base * directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ /** @internal * * @file pomp2_fwrapper_base.c * * * @brief Basic fortan wrappers calling the C versions.*/ #include #include #include "pomp2_fwrapper_base.h" #include "pomp2_lib.h" #include "pomp2_fwrapper_def.h" static int pomp2_tracing=1; /* *INDENT-OFF* */ void FSUB(POMP2_Finalize)() { POMP2_Finalize(); } void FSUB(POMP2_Init)() { POMP2_Init(); } void FSUB(POMP2_Off)() { pomp2_tracing = 0; } void FSUB(POMP2_On)() { pomp2_tracing = 1; } #if 0 void FSUB(POMP2_Begin)(POMP2_Region_handle* regionHandle, char* ctc_string) { POMP2_Begin(regionHandle, ctc_string); } #else void FSUB(POMP2_Begin)(POMP2_Region_handle* regionHandle, char* ctc_string __attribute__((unused))) { POMP2_Begin(regionHandle); } #endif void FSUB(POMP2_End)(POMP2_Region_handle* regionHandle) { POMP2_End(regionHandle); } /* *INDENT-OFF* */ /* *---------------------------------------------------------------- * Fortran Wrapper for OpenMP API ******---------------------------------------------------------------- */ /* *INDENT-OFF* */ #if defined(__ICC) || defined(__ECC) || defined(_SX) #define CALLFSUB(a) a #else #define CALLFSUB(a) FSUB(a) #endif void FSUB(POMP2_Init_lock)(omp_lock_t *s) { CALLFSUB(omp_init_lock)(s); } void FSUB(POMP2_Destroy_lock)(omp_lock_t *s) { CALLFSUB(omp_destroy_lock)(s); } void FSUB(POMP2_Set_lock)(omp_lock_t *s) { CALLFSUB(omp_set_lock)(s); } void FSUB(POMP2_Unset_lock)(omp_lock_t *s) { CALLFSUB(omp_unset_lock)(s); } int FSUB(POMP2_Test_lock)(omp_lock_t *s) { return CALLFSUB(omp_test_lock)(s); } #ifndef __osf__ void FSUB(POMP2_Init_nest_lock)(omp_nest_lock_t *s) { CALLFSUB(omp_init_nest_lock)(s); } void FSUB(POMP2_Destroy_nest_lock)(omp_nest_lock_t *s) { CALLFSUB(omp_destroy_nest_lock)(s); } void FSUB(POMP2_Set_nest_lock)(omp_nest_lock_t *s) { CALLFSUB(omp_set_nest_lock)(s); } void FSUB(POMP2_Unset_nest_lock)(omp_nest_lock_t *s) { CALLFSUB(omp_unset_nest_lock)(s); } int FSUB(POMP2_Test_nest_lock)(omp_nest_lock_t *s) { return CALLFSUB(omp_test_nest_lock)(s); } #endif eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/PaxHeaders.7332/pomp2_lib.c0000644000000000000000000000013213012560437022561 xustar0030 mtime=1479205151.296727461 30 atime=1508138886.140174263 30 ctime=1508162367.933924784 eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/pomp2_lib.c0000644000175000017500000002176513012560437023763 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ /** @internal * * @file pomp2_lib.c * @status alpha * * @maintainer Dirk Schmidl * * @authors Dirk Schmidl * Peter Philippen * * @brief Dummy implementation of all POMP2 Functions. These functions * only print out messages and do not measure anything.*/ #include /* * C pomp2 function library */ void POMP2_Finalize() { } void POMP2_Init() { } void POMP2_Off() { } void POMP2_On() { } void POMP2_Begin(POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_End(POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_Assign_handle( POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { } void POMP2_Atomic_enter( POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { } void POMP2_Atomic_exit( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_Implicit_barrier_enter( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle* pomp2_old_task __attribute__((unused))) { } extern void POMP2_Implicit_barrier_exit( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle pomp2_old_task __attribute__((unused))) { } void POMP2_Barrier_enter( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle* pomp2_old_task __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { } void POMP2_Barrier_exit( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle pomp2_old_task __attribute__((unused))) { } void POMP2_Flush_enter( POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { } void POMP2_Flush_exit(POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_Critical_begin( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_Critical_end( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_Critical_enter( POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { } void POMP2_Critical_exit( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_For_enter(POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { } void POMP2_For_exit(POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_Master_begin( POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { } void POMP2_Master_end(POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_Parallel_begin( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_Parallel_end( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_Parallel_fork( POMP2_Region_handle* pomp2_handle __attribute__((unused)), int if_clause __attribute__((unused)), int num_threads __attribute__((unused)), POMP2_Task_handle* pomp2_old_task __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { } void POMP2_Parallel_join( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle pomp2_old_task __attribute__((unused))) { } void POMP2_Section_begin( POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { } void POMP2_Section_end( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_Sections_enter( POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { } void POMP2_Sections_exit( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_Single_begin( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_Single_end(POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_Single_enter( POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { } void POMP2_Single_exit( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_Workshare_enter( POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { } void POMP2_Workshare_exit( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_Ordered_begin( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_Ordered_end( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_Ordered_enter( POMP2_Region_handle* pomp2_handle __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { } void POMP2_Ordered_exit( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_Task_create_begin( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle* pomp2_new_task __attribute__((unused)), POMP2_Task_handle* pomp2_old_task __attribute__((unused)), int pomp2_if __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { } void POMP2_Task_create_end( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle pomp2_old_task __attribute__((unused))) { } void POMP2_Task_begin(POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle pomp2_task __attribute__((unused))) { } void POMP2_Task_end(POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_Untied_task_create_begin( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle* pomp2_new_task __attribute__((unused)), POMP2_Task_handle* pomp2_old_task __attribute__((unused)), int pomp2_if __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { } void POMP2_Untied_task_create_end( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle pomp2_old_task __attribute__((unused))) { } void POMP2_Untied_task_begin( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle pomp2_parent_task __attribute__((unused))) { } void POMP2_Untied_task_end( POMP2_Region_handle* pomp2_handle __attribute__((unused))) { } void POMP2_Taskwait_begin( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle* pomp2_old_task __attribute__((unused)), const char ctc_string[] __attribute__((unused))) { } void POMP2_Taskwait_end( POMP2_Region_handle* pomp2_handle __attribute__((unused)), POMP2_Task_handle pomp2_old_task __attribute__((unused))) { } /* *---------------------------------------------------------------- * C Wrapper for OpenMP API ******---------------------------------------------------------------- */ #ifdef OPENMP_FOUND void POMP2_Init_lock( omp_lock_t* s __attribute__((unused))) { } void POMP2_Destroy_lock( omp_lock_t* s __attribute__((unused))) { } void POMP2_Set_lock( omp_lock_t* s __attribute__((unused))) { } void POMP2_Unset_lock( omp_lock_t* s __attribute__((unused))) { } int POMP2_Test_lock( omp_lock_t* s __attribute__((unused))) { return -1; } void POMP2_Init_nest_lock( omp_nest_lock_t* s __attribute__((unused))) { } void POMP2_Destroy_nest_lock( omp_nest_lock_t* s __attribute__((unused))) { } void POMP2_Set_nest_lock( omp_nest_lock_t* s __attribute__((unused))) { } void POMP2_Unset_nest_lock( omp_nest_lock_t* s __attribute__((unused))) { } int POMP2_Test_nest_lock( omp_nest_lock_t* s __attribute__((unused))) { return -1; } #endif /* OPENMP_FOUND */ eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/PaxHeaders.7332/getfname.f0000644000000000000000000000013213012560437022467 xustar0030 mtime=1479205151.296727461 30 atime=1508162328.350510305 30 ctime=1508162367.941925482 eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/getfname.f0000644000175000017500000000221313012560437023654 0ustar00trahaytrahay00000000000000!> !> This file is part of the Score-P software (http://www.score-p.org) !> !> Copyright (c) 2009-2011, !> RWTH Aachen University, Germany !> !> Copyright (c) 2009-2011, !> Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany !> !> Copyright (c) 2009-2011, !> Technische Universitaet Dresden, Germany !> !> Copyright (c) 2009-2011, !> University of Oregon, Eugene, USA !> !> Copyright (c) 2009-2011, 2013 !> Forschungszentrum Juelich GmbH, Germany !> !> Copyright (c) 2009-2011, !> German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany !> !> Copyright (c) 2009-2011, !> Technische Universitaet Muenchen, Germany !> !> This software may be modified and distributed under the terms of !> a BSD-style license. See the COPYING file in the package base !> directory for details. !> @internal !> !> @file getname.f !> !> @brief This file is needed to check the Fortran name mangling of !> the used compiler. foo_foo is called and depending on ! the mangling, this is linked against a c function ! foo_foo_, _foo_foo, ... #include #include #include #include #include /*----------------------------------------------------------------------------*/ /** @brief CTCData */ typedef struct { /** structured region information */ POMP2_Region_info* mRegionInfo; /** CTC String representation*/ char* mCTCStringToParse; /** memory string*/ char* mCTCStringMemory; /** error string*/ char* mCTCStringForErrorMsg; } CTCData; /** @brief errors the user is responsibel for, i.e. just errors in * the passed string */ typedef enum /* CTC_ERROR_Type */ { CTC_ERROR_Ended_unexpectedly, CTC_ERROR_No_region_type, CTC_ERROR_No_separator_after_length_field, CTC_ERROR_Num_sections_invalid, CTC_ERROR_SCL_broken, CTC_ERROR_SCL_line_number_error, CTC_ERROR_Unknown_token, CTC_ERROR_Unsigned_expected, CTC_ERROR_User_region_name_missing, CTC_ERROR_Wrong_clause_value, CTC_ERROR_Unknown_region_type, CTC_ERROR_No_key, CTC_ERROR_No_value, CTC_ERROR_Zero_length_key, CTC_ERROR_Zero_length_value, CTC_ERROR_Unknown_schedule_type, CTC_ERROR_SCL_error, CTC_ERROR_Inconsistent_line_numbers } CTC_ERROR_Type; static void freeCTCData( CTCData* obj ); /** @brief print error information*/ void ctcError( CTCData* obj, CTC_ERROR_Type errorType, const char* info1 ) { bool abort = true; printf( "Error parsing ctc string:\n\"%s\"\n", obj->mCTCStringForErrorMsg ); switch ( errorType ) { case CTC_ERROR_Ended_unexpectedly: printf( "ctc string ended unexpectedly.\n" ); break; case CTC_ERROR_No_region_type: printf( "ctc string has no region type field or value is empty.\n" ); break; case CTC_ERROR_No_separator_after_length_field: printf( "The separator \"*\" is missing after the length field.\n" ); break; case CTC_ERROR_Num_sections_invalid: printf( "The value of numSections must be > 0.\n" ); break; case CTC_ERROR_SCL_broken: printf( "The required attributes sscl and/or escl contain invalid data " "or are missing.\n" ); break; case CTC_ERROR_SCL_line_number_error: printf( "sscl or escl field has invalid line number arguments (%s).\n", info1 ); break; case CTC_ERROR_Unknown_token: printf( "Token \"%s\" not known.\n", info1 ); abort = false; break; case CTC_ERROR_Unsigned_expected: printf( "A value >= 0 is expected, \"%s\" is not allowed.\n", info1 ); break; case CTC_ERROR_User_region_name_missing: printf( "The field or value \"userRegionName\" is missing.\n" ); break; case CTC_ERROR_Wrong_clause_value: printf( "Clause field value must be \"0\" or \"1\", " "\"%s\" is not allowed.\n", info1 ); break; case CTC_ERROR_Unknown_region_type: printf( "Region type \"%s\" not known.\n", info1 ); break; case CTC_ERROR_No_key: printf( "Could not detect key in \"%s\", \"=\" or \"*\" missing.\n", info1 ); break; case CTC_ERROR_No_value: printf( "Could not detect value in \"%s\", \"*\" missing.\n", info1 ); break; case CTC_ERROR_Zero_length_key: printf( "The character sequence \"*=\" is not allowed.\n" ); break; case CTC_ERROR_Zero_length_value: printf( "The character sequence \"=*\" is not allowed.\n" ); break; case CTC_ERROR_Unknown_schedule_type: printf( "Schedule type \"%s\" not known.\n", info1 ); break; case CTC_ERROR_Inconsistent_line_numbers: printf( "Line numbers not valid. Expected startLineNo1 <= startLineNo2 <= endLineNo1 <= endLineNo2 \n" ); case CTC_ERROR_SCL_error: printf( "Error parsing source code location, " "expecting \"filename:lineNo1:lineNo2\".\n" ); break; default: puts( "ctc internal error: unknown error type." ); } if ( abort ) { freeCTCData( obj ); puts( "Aborting" ); exit( 1 ); } } /*----------------------------------------------------------------------------*/ static void parseCTCStringAndAssignRegionInfoValues( CTCData* obj ); static void checkConsistency( CTCData* obj ); static void initCTCData( CTCData* obj, const char string[], POMP2_Region_info* regionInfo ); void ctcString2RegionInfo( const char string[], POMP2_Region_info* regionInfo ) { assert( regionInfo ); CTCData ctcData; initCTCData( &ctcData, string, regionInfo ); parseCTCStringAndAssignRegionInfoValues( &ctcData ); checkConsistency( &ctcData ); freeCTCData( &ctcData ); } static void initRegionInfo( CTCData* obj ); static void copyCTCStringToInternalMemory( CTCData* obj, const char* source ); static void initCTCData( CTCData* obj, const char string[], POMP2_Region_info* regionInfo ) { obj->mRegionInfo = regionInfo; initRegionInfo( obj ); obj->mCTCStringToParse = 0; obj->mCTCStringMemory = 0; obj->mCTCStringForErrorMsg = 0; copyCTCStringToInternalMemory( obj, string ); } static void initRegionInfo( CTCData* obj ) { obj->mRegionInfo->mRegionType = POMP2_No_type; obj->mRegionInfo->mStartFileName = 0; obj->mRegionInfo->mStartLine1 = 0; obj->mRegionInfo->mStartLine2 = 0; obj->mRegionInfo->mEndFileName = 0; obj->mRegionInfo->mEndLine1 = 0; obj->mRegionInfo->mEndLine2 = 0; obj->mRegionInfo->mHasCollapse = false; obj->mRegionInfo->mHasCopyIn = false; obj->mRegionInfo->mHasCopyPrivate = false; obj->mRegionInfo->mHasFirstPrivate = false; obj->mRegionInfo->mHasIf = false; obj->mRegionInfo->mHasLastPrivate = false; obj->mRegionInfo->mHasNoWait = false; obj->mRegionInfo->mHasNumThreads = false; obj->mRegionInfo->mHasOrdered = false; obj->mRegionInfo->mHasReduction = false; obj->mRegionInfo->mHasUntied = false; obj->mRegionInfo->mScheduleType = POMP2_No_schedule; obj->mRegionInfo->mNumSections = 0; obj->mRegionInfo->mCriticalName = 0; obj->mRegionInfo->mUserRegionName = 0; obj->mRegionInfo->mUserGroupName = 0; } static void copyCTCStringToInternalMemory( CTCData* obj, const char* source ) { assert( obj->mCTCStringToParse == 0 ); assert( obj->mCTCStringMemory == 0 ); assert( obj->mCTCStringForErrorMsg == 0 ); const size_t nBytes = strlen( source ) * sizeof( char ) + 1; obj->mCTCStringMemory = malloc( nBytes ); obj->mCTCStringForErrorMsg = malloc( nBytes ); strcpy( obj->mCTCStringMemory, source ); strcpy( obj->mCTCStringForErrorMsg, source ); obj->mCTCStringToParse = obj->mCTCStringMemory; } static void freeAndReset( char** freeMe ); static void freeCTCData( CTCData* obj ) { freeAndReset( &( obj->mCTCStringMemory ) ); freeAndReset( &( obj->mCTCStringForErrorMsg ) ); obj->mCTCStringToParse = 0; } static void freeAndReset( char** freeMe ) { if ( *freeMe ) { free( *freeMe ); *freeMe = 0; } } /** CTC Tokens */ typedef enum { CTC_Region_type, CTC_Start_source_code_location, CTC_End_source_code_location, CTC_Has_copy_in, CTC_Has_copy_private, CTC_Has_first_private, CTC_Has_last_private, CTC_Has_no_wait, CTC_Has_ordered, CTC_Has_reduction, CTC_Schedule_type, CTC_Num_sections, CTC_Critical_name, CTC_User_region_name, CTC_User_group_name, CTC_Has_if, CTC_Has_collapse, CTC_Has_num_threads, CTC_Has_untied, CTC_No_token } CTCToken; static void ignoreLengthField( CTCData* obj ); static bool getKeyValuePair( CTCData* obj, char** key, char** value ); static CTCToken getCTCTokenFromString( char* token ); static void assignRegionType( CTCData* obj, const char* value ); static void assignSourceCodeLocation( CTCData* obj, char** fileName, unsigned* line1, unsigned* line2, char* value ); static void assignHasClause( CTCData* obj, bool* hasClause, const char* value ); static void assignScheduleType( CTCData* obj, char* __restrict__ value ); static void assignUnsigned( CTCData* obj, unsigned* anUnsigned, const char* value ); static void assignString( char** aString, const char* value ); static void parseCTCStringAndAssignRegionInfoValues( CTCData* obj ) { char* key; char* value; ignoreLengthField( obj ); while ( getKeyValuePair( obj, &key, &value ) ) { switch ( getCTCTokenFromString( key ) ) { case CTC_Region_type: assignRegionType( obj, value ); break; case CTC_Start_source_code_location: assignSourceCodeLocation( obj, &obj->mRegionInfo->mStartFileName, &obj->mRegionInfo->mStartLine1, &obj->mRegionInfo->mStartLine2, value ); break; case CTC_End_source_code_location: assignSourceCodeLocation( obj, &obj->mRegionInfo->mEndFileName, &obj->mRegionInfo->mEndLine1, &obj->mRegionInfo->mEndLine2, value ); break; case CTC_Has_copy_in: assignHasClause( obj, &obj->mRegionInfo->mHasCopyIn, value ); break; case CTC_Has_copy_private: assignHasClause( obj, &obj->mRegionInfo->mHasCopyPrivate, value ); break; case CTC_Has_first_private: assignHasClause( obj, &obj->mRegionInfo->mHasFirstPrivate, value ); break; case CTC_Has_if: assignHasClause( obj, &obj->mRegionInfo->mHasIf, value ); break; case CTC_Has_last_private: assignHasClause( obj, &obj->mRegionInfo->mHasLastPrivate, value ); break; case CTC_Has_no_wait: assignHasClause( obj, &obj->mRegionInfo->mHasNoWait, value ); break; case CTC_Has_num_threads: assignHasClause( obj, &obj->mRegionInfo->mHasNumThreads, value ); break; case CTC_Has_ordered: assignHasClause( obj, &obj->mRegionInfo->mHasOrdered, value ); break; case CTC_Has_reduction: assignHasClause( obj, &obj->mRegionInfo->mHasReduction, value ); break; case CTC_Has_collapse: assignHasClause( obj, &obj->mRegionInfo->mHasCollapse, value ); break; case CTC_Has_untied: assignHasClause( obj, &obj->mRegionInfo->mHasUntied, value ); break; case CTC_Schedule_type: assignScheduleType( obj, value ); break; case CTC_Num_sections: assignUnsigned( obj, &obj->mRegionInfo->mNumSections, value ); break; case CTC_Critical_name: assignString( &obj->mRegionInfo->mCriticalName, value ); break; case CTC_User_region_name: assignString( &obj->mRegionInfo->mUserRegionName, value ); break; case CTC_User_group_name: assignString( &obj->mRegionInfo->mUserGroupName, value ); break; default: ctcError( obj, CTC_ERROR_Unknown_token, key ); } } } static void ignoreLengthField( CTCData* obj ) { /* We expect ctcString to look like "42*key=value*...**" * The length field is redundant and we don't use it in our parsing * implementation. */ while ( obj->mCTCStringToParse && isdigit( *obj->mCTCStringToParse ) ) { ++( obj->mCTCStringToParse ); } if ( !obj->mCTCStringToParse ) { ctcError( obj, CTC_ERROR_Ended_unexpectedly, 0 ); } if ( *obj->mCTCStringToParse != '*' ) { ctcError( obj, CTC_ERROR_No_separator_after_length_field, 0 ); } ++( obj->mCTCStringToParse ); if ( !obj->mCTCStringToParse ) { ctcError( obj, CTC_ERROR_Ended_unexpectedly, 0 ); } } static bool extractNextToken( char** string, const char tokenDelimiter ); static bool getKeyValuePair( CTCData* obj, char** key, char** value ) { /* We expect ctcString to look like "key=value*...**" or "*". */ if ( *( obj->mCTCStringToParse ) == '*' ) { return false; /* end of ctc string */ } if ( *( obj->mCTCStringToParse ) == '\0' ) { return false; /* also end of ctc string. we don't force the second "*" */ } *key = obj->mCTCStringToParse; if ( !extractNextToken( &obj->mCTCStringToParse, '=' ) ) { ctcError( obj, CTC_ERROR_No_key, *key ); } if ( strlen( *key ) == 0 ) { ctcError( obj, CTC_ERROR_Zero_length_key, 0 ); } *value = obj->mCTCStringToParse; if ( !extractNextToken( &obj->mCTCStringToParse, '*' ) ) { ctcError( obj, CTC_ERROR_No_value, *value ); } if ( strlen( *value ) == 0 ) { ctcError( obj, CTC_ERROR_Zero_length_value, 0 ); } return true; } static bool extractNextToken( char** string, const char tokenDelimiter ) { *string = strchr( *string, tokenDelimiter ); if ( !( *string && **string == tokenDelimiter ) ) { return false; } **string = '\0'; /* extraction */ ++( *string ); return true; } /** @brief matching between string description and CTC token*/ typedef struct { /** string representation*/ char* mTokenString; /** matching CTCToken*/ CTCToken mToken; } CTCTokenMapValueType; /** @brief map with CTC tokens*/ static const CTCTokenMapValueType ctcTokenMap[] = { /* Entries must be sorted to be used in binary search. */ /* If you add/remove items update ctcTokenMapSize */ { "criticalName", CTC_Critical_name }, { "escl", CTC_End_source_code_location }, { "hasCollapse", CTC_Has_collapse }, { "hasCopyIn", CTC_Has_copy_in }, { "hasCopyPrivate", CTC_Has_copy_private }, { "hasFirstPrivate", CTC_Has_first_private }, { "hasIf", CTC_Has_if }, { "hasLastPrivate", CTC_Has_last_private }, { "hasNoWait", CTC_Has_no_wait }, { "hasNumThreads", CTC_Has_num_threads }, { "hasOrdered", CTC_Has_ordered }, { "hasReduction", CTC_Has_reduction }, { "hasUntied", CTC_Has_untied }, { "numSections", CTC_Num_sections }, { "regionType", CTC_Region_type }, { "scheduleType", CTC_Schedule_type }, { "sscl", CTC_Start_source_code_location }, { "userGroupName", CTC_User_group_name }, { "userRegionName", CTC_User_region_name } }; /** @brief number of entries in ctcTokenMap*/ const size_t ctcTokenMapSize = sizeof( ctcTokenMap ) / sizeof( CTCTokenMapValueType ); static int ctcTokenMapCompare( const void* searchToken, const void* mapElem ); static CTCToken getCTCTokenFromString( char* token ) { CTCTokenMapValueType* mapElem = ( CTCTokenMapValueType* )bsearch( token, &ctcTokenMap, ctcTokenMapSize, sizeof( CTCTokenMapValueType ), ctcTokenMapCompare ); if ( mapElem ) { return mapElem->mToken; } else { return CTC_No_token; } } static int ctcTokenMapCompare( const void* searchToken, const void* mapElem ) { const char* const token = ( const char* )searchToken; CTCTokenMapValueType* elem = ( CTCTokenMapValueType* )mapElem; return strcmp( token, elem->mTokenString ); } /** @brief maching between region string and region type */ typedef struct { /** string representation*/ char* mRegionTypeString; /** matching region type*/ POMP2_Region_type mRegionType; } RegionTypesMapValueType; /** @brief map with region types*/ static const RegionTypesMapValueType regionTypesMap[] = { /* Entries must be sorted to be used in binary search. */ /* If you add/remove items, regionTypesMap_size */ { "atomic", POMP2_Atomic }, { "barrier", POMP2_Barrier }, { "critical", POMP2_Critical }, { "do", POMP2_Do }, { "flush", POMP2_Flush }, { "for", POMP2_For }, { "master", POMP2_Master }, { "ordered", POMP2_Ordered }, { "parallel", POMP2_Parallel }, { "paralleldo", POMP2_Parallel_do }, { "parallelfor", POMP2_Parallel_for }, { "parallelsections", POMP2_Parallel_sections }, { "parallelworkshare", POMP2_Parallel_workshare }, { "region", POMP2_User_region }, { "sections", POMP2_Sections }, { "single", POMP2_Single }, { "task", POMP2_Task }, { "taskuntied", POMP2_Taskuntied }, { "taskwait", POMP2_Taskwait }, { "workshare", POMP2_Workshare } }; /** @brief number of entries in regionTypesMap*/ const size_t regionTypesMapSize = sizeof( regionTypesMap ) / sizeof( RegionTypesMapValueType ); static POMP2_Region_type getRegionTypeFromString( const char* regionTypeString ); static void assignRegionType( CTCData* obj, const char* value ) { obj->mRegionInfo->mRegionType = getRegionTypeFromString( value ); if ( obj->mRegionInfo->mRegionType == POMP2_No_type ) { ctcError( obj, CTC_ERROR_Unknown_region_type, value ); } } static int regionTypesMapCompare( const void* searchKey, const void* mapElem ); static POMP2_Region_type getRegionTypeFromString( const char* regionTypeString ) { RegionTypesMapValueType* mapElem = ( RegionTypesMapValueType* )bsearch( regionTypeString, ®ionTypesMap, regionTypesMapSize, sizeof( RegionTypesMapValueType ), regionTypesMapCompare ); if ( mapElem ) { return mapElem->mRegionType; } else { return POMP2_No_type; } } static int regionTypesMapCompare( const void* searchKey, const void* mapElem ) { const char* const key = ( const char* )searchKey; RegionTypesMapValueType* elem = ( RegionTypesMapValueType* )mapElem; return strcmp( key, elem->mRegionTypeString ); } static void assignSourceCodeLocation( CTCData* obj, char** filename, unsigned* line1, unsigned* line2, char* value ) { /* We assume that value looks like "foo.c:42:43" */ char* token = value; int line1Tmp = -1; int line2Tmp = -1; bool continueExtraction; assert( *filename == 0 ); if ( ( continueExtraction = extractNextToken( &value, ':' ) ) ) { *filename = malloc( strlen( token ) * sizeof( char ) + 1 ); strcpy( *filename, token ); } token = value; if ( continueExtraction && ( continueExtraction = extractNextToken( &value, ':' ) ) ) { line1Tmp = atoi( token ); } token = value; if ( continueExtraction && extractNextToken( &value, '\0' ) ) { line2Tmp = atoi( token ); } if ( *filename != 0 && line1Tmp > -1 && line2Tmp > -1 ) { *line1 = line1Tmp; *line2 = line2Tmp; if ( *line1 > *line2 ) { ctcError( obj, CTC_ERROR_SCL_line_number_error, "line1 > line2" ); } } else { ctcError( obj, CTC_ERROR_SCL_error, 0 ); } } static void assignHasClause( CTCData* obj, bool* hasClause, const char* value ) { if ( !isdigit( *value ) ) { ctcError( obj, CTC_ERROR_Wrong_clause_value, value ); } int tmp = atoi( value ); if ( tmp != 0 && tmp != 1 ) { ctcError( obj, CTC_ERROR_Wrong_clause_value, value ); } *hasClause = tmp; } static POMP2_Schedule_type getScheduleTypeFromString( const char* key ); static void assignScheduleType( CTCData* obj, char* __restrict__ value ) { char* token = NULL; token = strtok( value, "," ); if ( token ) { obj->mRegionInfo->mScheduleType = getScheduleTypeFromString( token ); } else { obj->mRegionInfo->mScheduleType = getScheduleTypeFromString( value ); } if ( obj->mRegionInfo->mScheduleType == POMP2_No_schedule ) { ctcError( obj, CTC_ERROR_Unknown_schedule_type, value ); } } static void assignUnsigned( CTCData* obj, unsigned* anUnsigned, const char* value ) { int tmp = atoi( value ); if ( tmp < 0 ) { ctcError( obj, CTC_ERROR_Unsigned_expected, value ); } *anUnsigned = tmp; } static void assignString( char** aString, const char* value ) { *aString = malloc( strlen( value ) * sizeof( char ) + 1 ); strcpy( *aString, value ); } static void checkConsistency( CTCData* obj ) { bool requiredAttributesFound; if ( obj->mRegionInfo->mRegionType == POMP2_No_type ) { ctcError( obj, CTC_ERROR_No_region_type, 0 ); return; } requiredAttributesFound = ( obj->mRegionInfo->mStartFileName && obj->mRegionInfo->mEndFileName ); if ( !requiredAttributesFound ) { ctcError( obj, CTC_ERROR_SCL_broken, 0 ); return; } if ( obj->mRegionInfo->mRegionType == POMP2_Sections && obj->mRegionInfo->mNumSections <= 0 ) { ctcError( obj, CTC_ERROR_Num_sections_invalid, 0 ); return; } if ( obj->mRegionInfo->mRegionType == POMP2_User_region && obj->mRegionInfo->mUserRegionName == 0 ) { ctcError( obj, CTC_ERROR_User_region_name_missing, 0 ); return; } if ( obj->mRegionInfo->mStartLine1 > obj->mRegionInfo->mStartLine2 ) { ctcError( obj, CTC_ERROR_Inconsistent_line_numbers, 0 ); return; } if ( obj->mRegionInfo->mEndLine1 > obj->mRegionInfo->mEndLine2 ) { ctcError( obj, CTC_ERROR_Inconsistent_line_numbers, 0 ); return; } /* A barrier, taskwait and flush does not have an end line number, since it * is not associated to a region.*/ if ( obj->mRegionInfo->mStartLine2 > obj->mRegionInfo->mEndLine1 && obj->mRegionInfo->mRegionType != POMP2_Barrier && obj->mRegionInfo->mRegionType != POMP2_Taskwait && obj->mRegionInfo->mRegionType != POMP2_Flush ) { ctcError( obj, CTC_ERROR_Inconsistent_line_numbers, 0 ); return; } } /*----------------------------------------------------------------------------*/ void freePOMP2RegionInfoMembers( POMP2_Region_info* regionInfo ) { freeAndReset( ®ionInfo->mStartFileName ); freeAndReset( ®ionInfo->mEndFileName ); freeAndReset( ®ionInfo->mCriticalName ); freeAndReset( ®ionInfo->mUserRegionName ); freeAndReset( ®ionInfo->mUserGroupName ); } /*----------------------------------------------------------------------------*/ /** @brief returns a region string*/ const char* pomp2RegionType2String( POMP2_Region_type regionType ) { unsigned int i; for ( i = 0; i < regionTypesMapSize; ++i ) { if ( regionType == regionTypesMap[ i ].mRegionType ) { return regionTypesMap[ i ].mRegionTypeString; } } return "no valid region type"; } /*----------------------------------------------------------------------------*/ /** @brief matching between schedule string description and schedule type*/ typedef struct { /** string representation */ char* mScheduleTypeString; /** matching schedule type*/ POMP2_Schedule_type mScheduleType; } ScheduleTypesMapValueType; /** @brief map with schedule types*/ static const ScheduleTypesMapValueType scheduleTypesMap[] = { /* Entries must be sorted to be used in binary search. */ /* If you add/remove items, scheduleTypesMapSize */ { "auto", POMP2_Auto }, { "dynamic", POMP2_Dynamic }, { "guided", POMP2_Guided }, { "runtime", POMP2_Runtime }, { "static", POMP2_Static } }; /** @brief number of entries in scheduleTypesMap*/ const size_t scheduleTypesMapSize = sizeof( scheduleTypesMap ) / sizeof( ScheduleTypesMapValueType ); static int scheduleTypesMapCompare( const void* searchKey, const void* mapElem ); /* @brief Assigns a schedule type according to an entry in the ctc string */ static POMP2_Schedule_type getScheduleTypeFromString( const char* key ) { ScheduleTypesMapValueType* mapElem = ( ScheduleTypesMapValueType* )bsearch( key, &scheduleTypesMap, scheduleTypesMapSize, sizeof( ScheduleTypesMapValueType ), scheduleTypesMapCompare ); if ( mapElem ) { return mapElem->mScheduleType; } else { return POMP2_No_schedule; } } static int scheduleTypesMapCompare( const void* searchKey, const void* mapElem ) { const char* const key = ( const char* )searchKey; ScheduleTypesMapValueType* elem = ( ScheduleTypesMapValueType* )mapElem; return strcmp( key, elem->mScheduleTypeString ); } /** @brief returns a string of the schedule type*/ const char* pomp2ScheduleType2String( POMP2_Schedule_type scheduleType ) { unsigned int i; for ( i = 0; i < scheduleTypesMapSize; ++i ) { if ( scheduleType == scheduleTypesMap[ i ].mScheduleType ) { return scheduleTypesMap[ i ].mScheduleTypeString; } } return "no valid schedule type"; } eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/PaxHeaders.7332/Makefile.am0000644000000000000000000000013213012560437022566 xustar0030 mtime=1479205151.296727461 30 atime=1508162220.061839207 30 ctime=1508162367.929924435 eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/Makefile.am0000644000175000017500000000172513012560437023762 0ustar00trahaytrahay00000000000000# -*- mode: makefile -*- F77=$(FC) lib_LTLIBRARIES = libpomp2.la libpomp2_la_SOURCES = \ pomp2_lib.c \ pomp2_lib.h \ pomp2_region_info.c \ pomp2_region_info.h # Currently, the fortran wrappers get a int* parameter whereas the new # POMP_Region_handle is of type void*. Ask a fortran guru if this may cause # problems. # CFLAGS are sufficient here, CPPFLAGS would cause duplication libpomp2_la_CFLAGS = $(AM_CFLAGS) libpomp2_la_CPPFLAGS = $(AM_CPPFLAGS) if OPENMP_FOUND libpomp2_la_CFLAGS+=-DOPENMP_FOUND endif # OPENMP_FOUND libpomp2_la_SOURCES += \ pomp2_fwrapper.c \ pomp2_fwrapper_base.c \ pomp2_fwrapper_base.h BUILT_SOURCES = pomp2_fwrapper_def.h CLEANFILES = pomp2_fwrapper_def.h pomp2_fwrapper_def.h: Makefile getfname$(EXEEXT) ./getfname noinst_PROGRAMS = getfname getfname_SOURCES = \ foos.c \ getfname.f EXTRA_DIST = pomp2_parse_init_regions.awk.in noinst_HEADERS = pomp2_lib.h eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/PaxHeaders.7332/pomp2_fwrapper.c0000644000000000000000000000013213012560437023641 xustar0030 mtime=1479205151.296727461 30 atime=1508138886.156174663 30 ctime=1508162367.937925133 eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/pomp2_fwrapper.c0000644000175000017500000002237113012560437025035 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * * Copyright (c) 2009-2011, * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * * Copyright (c) 2009-2011, * Technische Universitaet Dresden, Germany * * Copyright (c) 2009-2011, * University of Oregon, Eugene, USA * * Copyright (c) 2009-2011, 2013 * Forschungszentrum Juelich GmbH, Germany * * Copyright (c) 2009-2011, * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * * Copyright (c) 2009-2011, * Technische Universitaet Muenchen, Germany * * This software may be modified and distributed under the terms of * a BSD-style license. See the COPYING file in the package base * directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ /** @internal * * @file pomp2_fwrapper.c * * @brief This file contains fortran wrapper functions.*/ #include #include #include #include #include "pomp2_lib.h" #include "pomp2_fwrapper_def.h" /* * Fortran wrappers calling the C versions */ /* *INDENT-OFF* */ void FSUB(POMP2_Atomic_enter)(POMP2_Region_handle* regionHandle, char* ctc_string) { POMP2_Atomic_enter(regionHandle, ctc_string); } void FSUB(POMP2_Atomic_exit)(POMP2_Region_handle* regionHandle ) { POMP2_Atomic_exit(regionHandle ); } void FSUB(POMP2_Implicit_barrier_enter)( POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_old_task) { POMP2_Implicit_barrier_enter( regionHandle, pomp2_old_task ); } void FSUB(POMP2_Implicit_barrier_exit)( POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_old_task) { POMP2_Implicit_barrier_exit( regionHandle, *pomp2_old_task ); } void FSUB(POMP2_Barrier_enter)( POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_old_task, char* ctc_string) { POMP2_Barrier_enter( regionHandle, pomp2_old_task, ctc_string); } void FSUB(POMP2_Barrier_exit)( POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_old_task ) { POMP2_Barrier_exit( regionHandle, *pomp2_old_task ); } void FSUB(POMP2_Flush_enter)(POMP2_Region_handle* regionHandle, char* ctc_string ) { POMP2_Flush_enter(regionHandle, ctc_string ); } void FSUB(POMP2_Flush_exit)(POMP2_Region_handle* regionHandle ) { POMP2_Flush_exit(regionHandle ); } void FSUB(POMP2_Critical_begin)(POMP2_Region_handle* regionHandle ) { POMP2_Critical_begin(regionHandle ); } void FSUB(POMP2_Critical_end)(POMP2_Region_handle* regionHandle ) { POMP2_Critical_end(regionHandle ); } void FSUB(POMP2_Critical_enter)(POMP2_Region_handle* regionHandle, char* ctc_string) { POMP2_Critical_enter(regionHandle, ctc_string); } void FSUB(POMP2_Critical_exit)(POMP2_Region_handle* regionHandle ) { POMP2_Critical_exit(regionHandle ); } void FSUB(POMP2_Do_enter)(POMP2_Region_handle* regionHandle, char* ctc_string) { POMP2_For_enter(regionHandle, ctc_string); } void FSUB(POMP2_Do_exit)(POMP2_Region_handle* regionHandle ) { POMP2_For_exit(regionHandle ); } void FSUB(POMP2_Parallel_begin)( POMP2_Region_handle* regionHandle, POMP2_Task_handle* newTask __attribute__((unused)), char* ctc_string __attribute__((unused))){ POMP2_Parallel_begin(regionHandle); } void FSUB(POMP2_Parallel_end)(POMP2_Region_handle* regionHandle) { POMP2_Parallel_end(regionHandle); } void FSUB(POMP2_Master_begin)(POMP2_Region_handle* regionHandle, char* ctc_string ) { POMP2_Master_begin(regionHandle, ctc_string ); } void FSUB(POMP2_Master_end)(POMP2_Region_handle* regionHandle ) { POMP2_Master_end(regionHandle ); } void FSUB(POMP2_Parallel_fork)(POMP2_Region_handle* regionHandle, int* if_clause, int* num_threads, POMP2_Task_handle* pomp2_old_task, char* ctc_string __attribute__((unused))) { POMP2_Parallel_fork(regionHandle, *if_clause, *num_threads, pomp2_old_task, "dummy"); } void FSUB(POMP2_Parallel_join)(POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_old_task ) { POMP2_Parallel_join(regionHandle, *pomp2_old_task ); } void FSUB(POMP2_Section_begin)(POMP2_Region_handle* regionHandle, char* ctc_string ) { POMP2_Section_begin(regionHandle, ctc_string ); } void FSUB(POMP2_Section_end)(POMP2_Region_handle* regionHandle ) { POMP2_Section_end(regionHandle ); } void FSUB(POMP2_Sections_enter)(POMP2_Region_handle* regionHandle, char* ctc_string) { POMP2_Sections_enter(regionHandle, ctc_string); } void FSUB(POMP2_Sections_exit)(POMP2_Region_handle* regionHandle ) { POMP2_Sections_exit(regionHandle ); } void FSUB(POMP2_Single_begin)(POMP2_Region_handle* regionHandle ) { POMP2_Single_begin(regionHandle ); } void FSUB(POMP2_Single_end)(POMP2_Region_handle* regionHandle ) { POMP2_Single_end(regionHandle ); } void FSUB(POMP2_Single_enter)(POMP2_Region_handle* regionHandle, char* ctc_string) { POMP2_Single_enter(regionHandle, ctc_string); } void FSUB(POMP2_Ordered_exit)(POMP2_Region_handle* regionHandle ) { POMP2_Ordered_exit(regionHandle ); } void FSUB(POMP2_Ordered_begin)(POMP2_Region_handle* regionHandle ) { POMP2_Ordered_begin(regionHandle ); } void FSUB(POMP2_Ordered_end)(POMP2_Region_handle* regionHandle ) { POMP2_Ordered_end(regionHandle ); } void FSUB(POMP2_Ordered_enter)(POMP2_Region_handle* regionHandle, char* ctc_string) { POMP2_Ordered_enter(regionHandle, ctc_string); } void FSUB(POMP2_Single_exit)(POMP2_Region_handle* regionHandle ) { POMP2_Single_exit(regionHandle ); } void FSUB(POMP2_Task_create_begin)(POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_new_task, POMP2_Task_handle* pomp2_old_task, int* pomp2_if, char* ctc_string){ POMP2_Task_create_begin(regionHandle, pomp2_new_task, pomp2_old_task, *pomp2_if, ctc_string); } void FSUB(POMP2_Task_create_end)(POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_old_task ){ POMP2_Task_create_end(regionHandle, *pomp2_old_task); } void FSUB(POMP2_Task_begin)( POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_new_task ){ POMP2_Task_begin(regionHandle, *pomp2_new_task); } void FSUB(POMP2_Task_end)(POMP2_Region_handle* regionHandle){ POMP2_Task_end(regionHandle); } void FSUB(POMP2_Untied_task_create_begin)(POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_new_task, POMP2_Task_handle* pomp2_old_task, int* pomp2_if, char* ctc_string){ POMP2_Task_create_begin(regionHandle, pomp2_new_task, pomp2_old_task, *pomp2_if, ctc_string); } void FSUB(POMP2_Untied_task_create_end)(POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_old_task ){ POMP2_Task_create_end(regionHandle, *pomp2_old_task); } void FSUB(POMP2_Untied_task_begin)( POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_new_task ){ POMP2_Task_begin(regionHandle, *pomp2_new_task); } void FSUB(POMP2_Untied_task_end)(POMP2_Region_handle* regionHandle){ POMP2_Task_end(regionHandle); } void FSUB(POMP2_Taskwait_begin)(POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_old_task, char* ctc_string ){ POMP2_Taskwait_begin(regionHandle, pomp2_old_task, ctc_string ); } void FSUB(POMP2_Taskwait_end)(POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_old_task ){ POMP2_Taskwait_end(regionHandle, *pomp2_old_task); } void FSUB(POMP2_Workshare_enter)(POMP2_Region_handle* regionHandle, char* ctc_string) { POMP2_Workshare_enter(regionHandle, ctc_string); } void FSUB(POMP2_Workshare_exit)(POMP2_Region_handle* regionHandle ) { POMP2_Workshare_exit(regionHandle ); } void FSUB(POMP2_Assign_handle)(POMP2_Region_handle* regionHandle, char* ctc_string, int ctc_string_len) { char *str; str=(char*) malloc((ctc_string_len+1)*sizeof(char)); strncpy(str,ctc_string,ctc_string_len); str[ctc_string_len]='\0'; POMP2_Assign_handle(regionHandle,str); free(str); } /* *---------------------------------------------------------------- * Wrapper for omp_get_max_threads used in instrumentation * * In Fortran a wrapper function * pomp2_get_max_threads() is used, since it is not possible to * ensure, that omp_get_max_threads is not used in the user * program. We would need to parse much more of the Fortran * Syntax to detect these cases. The Wrapper function avoids * double definition of this function and avoids errors. * ******---------------------------------------------------------------- */ int FSUB(POMP2_Lib_get_max_threads)(void) { return omp_get_max_threads(); } eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135254022600 xustar0030 mtime=1508162220.089841266 30 atime=1508162286.951054296 30 ctime=1508162367.929924435 eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/Makefile.in0000644000175000017500000007301613171135254023776 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- mode: makefile -*- VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @OPENMP_FOUND_TRUE@am__append_1 = -DOPENMP_FOUND noinst_PROGRAMS = getfname$(EXEEXT) subdir = src/modules/omp/pomp-lib-dummy ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) libpomp2_la_LIBADD = am_libpomp2_la_OBJECTS = libpomp2_la-pomp2_lib.lo \ libpomp2_la-pomp2_region_info.lo libpomp2_la-pomp2_fwrapper.lo \ libpomp2_la-pomp2_fwrapper_base.lo libpomp2_la_OBJECTS = $(am_libpomp2_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libpomp2_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libpomp2_la_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ PROGRAMS = $(noinst_PROGRAMS) am_getfname_OBJECTS = foos.$(OBJEXT) getfname.$(OBJEXT) getfname_OBJECTS = $(am_getfname_OBJECTS) getfname_LDADD = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS) LTF77COMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(F77) $(AM_FFLAGS) $(FFLAGS) AM_V_F77 = $(am__v_F77_@AM_V@) am__v_F77_ = $(am__v_F77_@AM_DEFAULT_V@) am__v_F77_0 = @echo " F77 " $@; am__v_F77_1 = F77LD = $(F77) F77LINK = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ AM_V_F77LD = $(am__v_F77LD_@AM_V@) am__v_F77LD_ = $(am__v_F77LD_@AM_DEFAULT_V@) am__v_F77LD_0 = @echo " F77LD " $@; am__v_F77LD_1 = SOURCES = $(libpomp2_la_SOURCES) $(getfname_SOURCES) DIST_SOURCES = $(libpomp2_la_SOURCES) $(getfname_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUDA_CFLAGS = @CUDA_CFLAGS@ CUDA_LDFLAGS = @CUDA_LDFLAGS@ CUDA_LIBS = @CUDA_LIBS@ CUDA_ROOT = @CUDA_ROOT@ CUPTI_CFLAGS = @CUPTI_CFLAGS@ CUPTI_LDFLAGS = @CUPTI_LDFLAGS@ CUPTI_LIBS = @CUPTI_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ DYNLIB_EXT = @DYNLIB_EXT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ GTGDIR = @GTGDIR@ GTG_CPPFLAGS = @GTG_CPPFLAGS@ GTG_DEPENDENCIES = @GTG_DEPENDENCIES@ GTG_EXT_CPPFLAGS = @GTG_EXT_CPPFLAGS@ GTG_EXT_LDFLAGS = @GTG_EXT_LDFLAGS@ GTG_EXT_LIB = @GTG_EXT_LIB@ GTG_LDFLAGS = @GTG_LDFLAGS@ GTG_LIB = @GTG_LIB@ GTG_OUT_OF_ORDER = @GTG_OUT_OF_ORDER@ HAVE_ENV = @HAVE_ENV@ HAVE_LIBBACKTRACE = @HAVE_LIBBACKTRACE@ HAVE_LIBOPCODE = @HAVE_LIBOPCODE@ HAVE_PRCTL_H = @HAVE_PRCTL_H@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LD_LIBRARY_PATH_NAME = @LD_LIBRARY_PATH_NAME@ LD_PRELOAD_NAME = @LD_PRELOAD_NAME@ LIBBACKTRACE_CPPFLAGS = @LIBBACKTRACE_CPPFLAGS@ LIBBACKTRACE_LDFLAGS = @LIBBACKTRACE_LDFLAGS@ LIBBACKTRACE_LIB = @LIBBACKTRACE_LIB@ LIBBACKTRACE_ROOT = @LIBBACKTRACE_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LITL_PRINT = @LITL_PRINT@ LITL_ROOT = @LITL_ROOT@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPI_CFLAGS = @MPI_CFLAGS@ MPI_EVENT_ID = @MPI_EVENT_ID@ MPI_INC = @MPI_INC@ MPI_LDFLAGS = @MPI_LDFLAGS@ MPI_MODULE_NAME = @MPI_MODULE_NAME@ MPI_ROOT = @MPI_ROOT@ NM = @NM@ NMEDIT = @NMEDIT@ NVCC = @NVCC@ NVCCFLAGS = @NVCCFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAPIDIR = @PAPIDIR@ PAPI_CPPFLAGS = @PAPI_CPPFLAGS@ PAPI_ENABLED = @PAPI_ENABLED@ PAPI_LDFLAGS = @PAPI_LDFLAGS@ PAPI_LIBDIR = @PAPI_LIBDIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PPTRACE_BINARY_TYPE = @PPTRACE_BINARY_TYPE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STARPU_CFLAGS = @STARPU_CFLAGS@ STARPU_CPPFLAGS = @STARPU_CPPFLAGS@ STARPU_LDFLAGS = @STARPU_LDFLAGS@ STARPU_LIBS = @STARPU_LIBS@ STARPU_ROOT = @STARPU_ROOT@ STRIP = @STRIP@ TARGET_BITS = @TARGET_BITS@ TL_CPPFLAGS = @TL_CPPFLAGS@ TL_EXT_CPPFLAGS = @TL_EXT_CPPFLAGS@ TL_EXT_LDFLAGS = @TL_EXT_LDFLAGS@ TL_EXT_LIB = @TL_EXT_LIB@ TL_LDFLAGS = @TL_LDFLAGS@ TL_LIB = @TL_LIB@ USE_BIN_INSTRUMENTATION = @USE_BIN_INSTRUMENTATION@ USE_CUDADIR_FROM_USER = @USE_CUDADIR_FROM_USER@ USE_GETTID = @USE_GETTID@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ USE_PAPIDIR_FROM_USER = @USE_PAPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ F77 = $(FC) lib_LTLIBRARIES = libpomp2.la libpomp2_la_SOURCES = pomp2_lib.c pomp2_lib.h pomp2_region_info.c \ pomp2_region_info.h pomp2_fwrapper.c pomp2_fwrapper_base.c \ pomp2_fwrapper_base.h # Currently, the fortran wrappers get a int* parameter whereas the new # POMP_Region_handle is of type void*. Ask a fortran guru if this may cause # problems. # CFLAGS are sufficient here, CPPFLAGS would cause duplication libpomp2_la_CFLAGS = $(AM_CFLAGS) $(am__append_1) libpomp2_la_CPPFLAGS = $(AM_CPPFLAGS) BUILT_SOURCES = pomp2_fwrapper_def.h CLEANFILES = pomp2_fwrapper_def.h getfname_SOURCES = \ foos.c \ getfname.f EXTRA_DIST = pomp2_parse_init_regions.awk.in noinst_HEADERS = pomp2_lib.h all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .f .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/modules/omp/pomp-lib-dummy/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/modules/omp/pomp-lib-dummy/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libpomp2.la: $(libpomp2_la_OBJECTS) $(libpomp2_la_DEPENDENCIES) $(EXTRA_libpomp2_la_DEPENDENCIES) $(AM_V_CCLD)$(libpomp2_la_LINK) -rpath $(libdir) $(libpomp2_la_OBJECTS) $(libpomp2_la_LIBADD) $(LIBS) clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list getfname$(EXEEXT): $(getfname_OBJECTS) $(getfname_DEPENDENCIES) $(EXTRA_getfname_DEPENDENCIES) @rm -f getfname$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(getfname_OBJECTS) $(getfname_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/foos.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpomp2_la-pomp2_fwrapper.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpomp2_la-pomp2_fwrapper_base.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpomp2_la-pomp2_lib.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpomp2_la-pomp2_region_info.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libpomp2_la-pomp2_lib.lo: pomp2_lib.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpomp2_la_CPPFLAGS) $(CPPFLAGS) $(libpomp2_la_CFLAGS) $(CFLAGS) -MT libpomp2_la-pomp2_lib.lo -MD -MP -MF $(DEPDIR)/libpomp2_la-pomp2_lib.Tpo -c -o libpomp2_la-pomp2_lib.lo `test -f 'pomp2_lib.c' || echo '$(srcdir)/'`pomp2_lib.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpomp2_la-pomp2_lib.Tpo $(DEPDIR)/libpomp2_la-pomp2_lib.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pomp2_lib.c' object='libpomp2_la-pomp2_lib.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpomp2_la_CPPFLAGS) $(CPPFLAGS) $(libpomp2_la_CFLAGS) $(CFLAGS) -c -o libpomp2_la-pomp2_lib.lo `test -f 'pomp2_lib.c' || echo '$(srcdir)/'`pomp2_lib.c libpomp2_la-pomp2_region_info.lo: pomp2_region_info.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpomp2_la_CPPFLAGS) $(CPPFLAGS) $(libpomp2_la_CFLAGS) $(CFLAGS) -MT libpomp2_la-pomp2_region_info.lo -MD -MP -MF $(DEPDIR)/libpomp2_la-pomp2_region_info.Tpo -c -o libpomp2_la-pomp2_region_info.lo `test -f 'pomp2_region_info.c' || echo '$(srcdir)/'`pomp2_region_info.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpomp2_la-pomp2_region_info.Tpo $(DEPDIR)/libpomp2_la-pomp2_region_info.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pomp2_region_info.c' object='libpomp2_la-pomp2_region_info.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpomp2_la_CPPFLAGS) $(CPPFLAGS) $(libpomp2_la_CFLAGS) $(CFLAGS) -c -o libpomp2_la-pomp2_region_info.lo `test -f 'pomp2_region_info.c' || echo '$(srcdir)/'`pomp2_region_info.c libpomp2_la-pomp2_fwrapper.lo: pomp2_fwrapper.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpomp2_la_CPPFLAGS) $(CPPFLAGS) $(libpomp2_la_CFLAGS) $(CFLAGS) -MT libpomp2_la-pomp2_fwrapper.lo -MD -MP -MF $(DEPDIR)/libpomp2_la-pomp2_fwrapper.Tpo -c -o libpomp2_la-pomp2_fwrapper.lo `test -f 'pomp2_fwrapper.c' || echo '$(srcdir)/'`pomp2_fwrapper.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpomp2_la-pomp2_fwrapper.Tpo $(DEPDIR)/libpomp2_la-pomp2_fwrapper.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pomp2_fwrapper.c' object='libpomp2_la-pomp2_fwrapper.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpomp2_la_CPPFLAGS) $(CPPFLAGS) $(libpomp2_la_CFLAGS) $(CFLAGS) -c -o libpomp2_la-pomp2_fwrapper.lo `test -f 'pomp2_fwrapper.c' || echo '$(srcdir)/'`pomp2_fwrapper.c libpomp2_la-pomp2_fwrapper_base.lo: pomp2_fwrapper_base.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpomp2_la_CPPFLAGS) $(CPPFLAGS) $(libpomp2_la_CFLAGS) $(CFLAGS) -MT libpomp2_la-pomp2_fwrapper_base.lo -MD -MP -MF $(DEPDIR)/libpomp2_la-pomp2_fwrapper_base.Tpo -c -o libpomp2_la-pomp2_fwrapper_base.lo `test -f 'pomp2_fwrapper_base.c' || echo '$(srcdir)/'`pomp2_fwrapper_base.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpomp2_la-pomp2_fwrapper_base.Tpo $(DEPDIR)/libpomp2_la-pomp2_fwrapper_base.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pomp2_fwrapper_base.c' object='libpomp2_la-pomp2_fwrapper_base.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpomp2_la_CPPFLAGS) $(CPPFLAGS) $(libpomp2_la_CFLAGS) $(CFLAGS) -c -o libpomp2_la-pomp2_fwrapper_base.lo `test -f 'pomp2_fwrapper_base.c' || echo '$(srcdir)/'`pomp2_fwrapper_base.c .f.o: $(AM_V_F77)$(F77COMPILE) -c -o $@ $< .f.obj: $(AM_V_F77)$(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f.lo: $(AM_V_F77)$(LTF77COMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: all check install install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS \ cscopelist-am ctags ctags-am distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-libLTLIBRARIES \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-libLTLIBRARIES .PRECIOUS: Makefile pomp2_fwrapper_def.h: Makefile getfname$(EXEEXT) ./getfname # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/PaxHeaders.7332/pomp2_fwrapper_base.h0000644000000000000000000000013213012560437024640 xustar0030 mtime=1479205151.296727461 30 atime=1508138886.156174663 30 ctime=1508162367.937925133 eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/pomp2_fwrapper_base.h0000644000175000017500000000274213012560437026034 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * * Copyright (c) 2009-2011, * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * * Copyright (c) 2009-2011, * Technische Universitaet Dresden, Germany * * Copyright (c) 2009-2011, * University of Oregon, Eugene, USA * * Copyright (c) 2009-2011, 2013 * Forschungszentrum Juelich GmbH, Germany * * Copyright (c) 2009-2011, * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * * Copyright (c) 2009-2011, * Technische Universitaet Muenchen, Germany * * This software may be modified and distributed under the terms of * a BSD-style license. See the COPYING file in the package base * directory for details. */ #include #include "pomp2_fwrapper_def.h" #ifndef POMP2_FWRAPPER_BASE_H #define POMP2_FWRAPPER_BASE_H extern void FSUB( omp_init_lock )( omp_lock_t* s ); extern void FSUB( omp_destroy_lock )( omp_lock_t* s ); extern void FSUB( omp_set_lock )( omp_lock_t* s ); extern void FSUB( omp_unset_lock )( omp_lock_t* s ); extern int FSUB( omp_test_lock )( omp_lock_t* s ); extern void FSUB( omp_init_nest_lock )( omp_nest_lock_t* s ); extern void FSUB( omp_destroy_nest_lock )( omp_nest_lock_t* s ); extern void FSUB( omp_set_nest_lock )( omp_nest_lock_t* s ); extern void FSUB( omp_unset_nest_lock )( omp_nest_lock_t* s ); extern int FSUB( omp_test_nest_lock )( omp_nest_lock_t* s ); #endif eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/PaxHeaders.7332/foos.c0000644000000000000000000000013213012560437021644 xustar0030 mtime=1479205151.296727461 30 atime=1508138885.560159779 30 ctime=1508162367.941925482 eztrace-1.1-7/src/modules/omp/pomp-lib-dummy/foos.c0000644000175000017500000003054513012560437023042 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * * Copyright (c) 2009-2011, * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * * Copyright (c) 2009-2011, * Technische Universitaet Dresden, Germany * * Copyright (c) 2009-2011, * University of Oregon, Eugene, USA * * Copyright (c) 2009-2011, 2013 * Forschungszentrum Juelich GmbH, Germany * * Copyright (c) 2009-2011, * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * * Copyright (c) 2009-2011, * Technische Universitaet Muenchen, Germany * * This software may be modified and distributed under the terms of * a BSD-style license. See the COPYING file in the package base * directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ /** @internal * * @file foos.c * * @brief This file is used to check the Fotran mangling of the * used compiler. In getfname.f a Function foo_foo is * called. Here functions with mangled names exist * foo_foo, foo_foo_, _foo_foo_, ... , depending on the * function called a file pomp2_fwrapper_def.h is written * with a macro to mangle function names to fortran * function names.*/ #include #include static char* header = "/*\n" " * Fortan subroutine external name setup\n" " */\n" "\n" "#define POMP2_Finalize_U POMP2_FINALIZE\n" "#define POMP2_Init_U POMP2_INIT\n" "#define POMP2_Off_U POMP2_OFF\n" "#define POMP2_On_U POMP2_ON\n" "#define POMP2_Atomic_enter_U POMP2_ATOMIC_ENTER\n" "#define POMP2_Atomic_exit_U POMP2_ATOMIC_EXIT\n" "#define POMP2_Implicit_barrier_enter_U POMP2_IMPLICIT_BARRIER_ENTER\n" "#define POMP2_Implicit_barrier_exit_U POMP2_IMPLICIT_BARRIER_EXIT\n" "#define POMP2_Barrier_enter_U POMP2_BARRIER_ENTER\n" "#define POMP2_Barrier_exit_U POMP2_BARRIER_EXIT\n" "#define POMP2_Flush_enter_U POMP2_FLUSH_ENTER\n" "#define POMP2_Flush_exit_U POMP2_FLUSH_EXIT\n" "#define POMP2_Critical_begin_U POMP2_CRITICAL_BEGIN\n" "#define POMP2_Critical_end_U POMP2_CRITICAL_END\n" "#define POMP2_Critical_enter_U POMP2_CRITICAL_ENTER\n" "#define POMP2_Critical_exit_U POMP2_CRITICAL_EXIT\n" "#define POMP2_Do_enter_U POMP2_DO_ENTER\n" "#define POMP2_Do_exit_U POMP2_DO_EXIT\n" "#define POMP2_Master_begin_U POMP2_MASTER_BEGIN\n" "#define POMP2_Master_end_U POMP2_MASTER_END\n" "#define POMP2_Parallel_begin_U POMP2_PARALLEL_BEGIN\n" "#define POMP2_Parallel_end_U POMP2_PARALLEL_END\n" "#define POMP2_Parallel_enter_U POMP2_PARALLEL_ENTER\n" "#define POMP2_Parallel_exit_U POMP2_PARALLEL_EXIT\n" "#define POMP2_Parallel_fork_U POMP2_PARALLEL_FORK\n" "#define POMP2_Parallel_join_U POMP2_PARALLEL_JOIN\n" "#define POMP2_Section_begin_U POMP2_SECTION_BEGIN\n" "#define POMP2_Section_end_U POMP2_SECTION_END\n" "#define POMP2_Section_enter_U POMP2_SECTION_ENTER\n" "#define POMP2_Section_exit_U POMP2_SECTION_EXIT\n" "#define POMP2_Sections_enter_U POMP2_SECTIONS_ENTER\n" "#define POMP2_Sections_exit_U POMP2_SECTIONS_EXIT\n" "#define POMP2_Single_begin_U POMP2_SINGLE_BEGIN\n" "#define POMP2_Single_end_U POMP2_SINGLE_END\n" "#define POMP2_Single_enter_U POMP2_SINGLE_ENTER\n" "#define POMP2_Single_exit_U POMP2_SINGLE_EXIT\n" "#define POMP2_Ordered_begin_U POMP2_ORDERED_BEGIN\n" "#define POMP2_Ordered_end_U POMP2_ORDERED_END\n" "#define POMP2_Ordered_enter_U POMP2_ORDERED_ENTER\n" "#define POMP2_Ordered_exit_U POMP2_ORDERED_EXIT\n" "#define POMP2_Task_begin_U POMP2_TASK_BEGIN\n" "#define POMP2_Task_end_U POMP2_TASK_END\n" "#define POMP2_Task_create_begin_U POMP2_TASK_CREATE_BEGIN\n" "#define POMP2_Task_create_end_U POMP2_TASK_CREATE_END\n" "#define POMP2_Untied_task_begin_U POMP2_UNTIED_TASK_BEGIN\n" "#define POMP2_Untied_task_end_U POMP2_UNTIED_TASK_END\n" "#define POMP2_Untied_task_create_begin_U POMP2_UNTIED_TASK_CREATE_BEGIN\n" "#define POMP2_Untied_task_create_end_U POMP2_UNTIED_TASK_CREATE_END\n" "#define POMP2_Taskwait_begin_U POMP2_TASKWAIT_BEGIN\n" "#define POMP2_Taskwait_end_U POMP2_TASKWAIT_END\n" "#define POMP2_Workshare_enter_U POMP2_WORKSHARE_ENTER\n" "#define POMP2_Workshare_exit_U POMP2_WORKSHARE_EXIT\n" "#define POMP2_Begin_U POMP2_BEGIN\n" "#define POMP2_End_U POMP2_END\n" "#define POMP2_Lib_get_max_threads_U POMP2_LIB_GET_MAX_THREADS\n" "#define POMP2_Init_lock_U POMP2_INIT_LOCK\n" "#define POMP2_Destroy_lock_U POMP2_DESTROY_LOCK\n" "#define POMP2_Set_lock_U POMP2_SET_LOCK\n" "#define POMP2_Unset_lock_U POMP2_UNSET_LOCK\n" "#define POMP2_Test_lock_U POMP2_TEST_LOCK\n" "#define POMP2_Init_nest_lock_U POMP2_INIT_NEST_LOCK\n" "#define POMP2_Destroy_nest_lock_U POMP2_DESTROY_NEST_LOCK\n" "#define POMP2_Set_nest_lock_U POMP2_SET_NEST_LOCK\n" "#define POMP2_Unset_nest_lock_U POMP2_UNSET_NEST_LOCK\n" "#define POMP2_Test_nest_lock_U POMP2_TEST_NEST_LOCK\n" "#define POMP2_Assign_handle_U POMP2_ASSIGN_HANDLE\n" "#define omp_init_lock_U OMP_INIT_LOCK\n" "#define omp_destroy_lock_U OMP_DESTROY_LOCK\n" "#define omp_set_lock_U OMP_SET_LOCK\n" "#define omp_unset_lock_U OMP_UNSET_LOCK\n" "#define omp_test_lock_U OMP_TEST_LOCK\n" "#define omp_init_nest_lock_U OMP_INIT_NEST_LOCK\n" "#define omp_destroy_nest_lock_U OMP_DESTROY_NEST_LOCK\n" "#define omp_set_nest_lock_U OMP_SET_NEST_LOCK\n" "#define omp_unset_nest_lock_U OMP_UNSET_NEST_LOCK\n" "#define omp_test_nest_lock_U OMP_TEST_NEST_LOCK\n" "\n" "#define POMP2_Finalize_L pomp2_finalize\n" "#define POMP2_Init_L pomp2_init\n" "#define POMP2_Off_L pomp2_off\n" "#define POMP2_On_L pomp2_on\n" "#define POMP2_Atomic_enter_L pomp2_atomic_enter\n" "#define POMP2_Atomic_exit_L pomp2_atomic_exit\n" "#define POMP2_Implicit_barrier_enter_L pomp2_implicit_barrier_enter\n" "#define POMP2_Implicit_barrier_exit_L pomp2_implicit_barrier_exit\n" "#define POMP2_Barrier_enter_L pomp2_barrier_enter\n" "#define POMP2_Barrier_exit_L pomp2_barrier_exit\n" "#define POMP2_Flush_enter_L pomp2_flush_enter\n" "#define POMP2_Flush_exit_L pomp2_flush_exit\n" "#define POMP2_Critical_begin_L pomp2_critical_begin\n" "#define POMP2_Critical_end_L pomp2_critical_end\n" "#define POMP2_Critical_enter_L pomp2_critical_enter\n" "#define POMP2_Critical_exit_L pomp2_critical_exit\n" "#define POMP2_Do_enter_L pomp2_do_enter\n" "#define POMP2_Do_exit_L pomp2_do_exit\n" "#define POMP2_Master_begin_L pomp2_master_begin\n" "#define POMP2_Master_end_L pomp2_master_end\n" "#define POMP2_Parallel_begin_L pomp2_parallel_begin\n" "#define POMP2_Parallel_end_L pomp2_parallel_end\n" "#define POMP2_Parallel_enter_L pomp2_parallel_enter\n" "#define POMP2_Parallel_exit_L pomp2_parallel_exit\n" "#define POMP2_Parallel_fork_L pomp2_parallel_fork\n" "#define POMP2_Parallel_join_L pomp2_parallel_join\n" "#define POMP2_Section_begin_L pomp2_section_begin\n" "#define POMP2_Section_end_L pomp2_section_end\n" "#define POMP2_Section_enter_L pomp2_section_enter\n" "#define POMP2_Section_exit_L pomp2_section_exit\n" "#define POMP2_Sections_enter_L pomp2_sections_enter\n" "#define POMP2_Sections_exit_L pomp2_sections_exit\n" "#define POMP2_Single_begin_L pomp2_single_begin\n" "#define POMP2_Single_end_L pomp2_single_end\n" "#define POMP2_Single_enter_L pomp2_single_enter\n" "#define POMP2_Single_exit_L pomp2_single_exit\n" "#define POMP2_Ordered_begin_L pomp2_ordered_begin\n" "#define POMP2_Ordered_end_L pomp2_ordered_end\n" "#define POMP2_Ordered_enter_L pomp2_ordered_enter\n" "#define POMP2_Ordered_exit_L pomp2_ordered_exit\n" "#define POMP2_Task_begin_L pomp2_task_begin\n" "#define POMP2_Task_end_L pomp2_task_end\n" "#define POMP2_Task_create_begin_L pomp2_task_create_begin\n" "#define POMP2_Task_create_end_L pomp2_task_create_end\n" "#define POMP2_Untied_task_begin_L pomp2_untied_task_begin\n" "#define POMP2_Untied_task_end_L pomp2_untied_task_end\n" "#define POMP2_Untied_task_create_begin_L pomp2_untied_task_create_begin\n" "#define POMP2_Untied_task_create_end_L pomp2_untied_task_create_end\n" "#define POMP2_Taskwait_begin_L pomp2_taskwait_begin\n" "#define POMP2_Taskwait_end_L pomp2_taskwait_end\n" "#define POMP2_Workshare_enter_L pomp2_workshare_enter\n" "#define POMP2_Workshare_exit_L pomp2_workshare_exit\n" "#define POMP2_Begin_L pomp2_begin\n" "#define POMP2_End_L pomp2_end\n" "#define POMP2_Lib_get_max_threads_L pomp2_lib_get_max_threads\n" "#define POMP2_Init_lock_L pomp2_init_lock\n" "#define POMP2_Destroy_lock_L pomp2_destroy_lock\n" "#define POMP2_Set_lock_L pomp2_set_lock\n" "#define POMP2_Unset_lock_L pomp2_unset_lock\n" "#define POMP2_Test_lock_L pomp2_test_lock\n" "#define POMP2_Init_nest_lock_L pomp2_init_nest_lock\n" "#define POMP2_Destroy_nest_lock_L pomp2_destroy_nest_lock\n" "#define POMP2_Set_nest_lock_L pomp2_set_nest_lock\n" "#define POMP2_Unset_nest_lock_L pomp2_unset_nest_lock\n" "#define POMP2_Test_nest_lock_L pomp2_test_nest_lock\n" "#define POMP2_Assign_handle_L pomp2_assign_handle\n" "#define omp_init_lock_L omp_init_lock\n" "#define omp_destroy_lock_L omp_destroy_lock\n" "#define omp_set_lock_L omp_set_lock\n" "#define omp_unset_lock_L omp_unset_lock\n" "#define omp_test_lock_L omp_test_lock\n" "#define omp_init_nest_lock_L omp_init_nest_lock\n" "#define omp_destroy_nest_lock_L omp_destroy_nest_lock\n" "#define omp_set_nest_lock_L omp_set_nest_lock\n" "#define omp_unset_nest_lock_L omp_unset_nest_lock\n" "#define omp_test_nest_lock_L omp_test_nest_lock\n" "\n" "#define XSUFFIX(name) name##_\n" "#define XSUFFIX2(name) name##__\n" "#define XPREFIX(name) _##name\n" "#define XPREFIX2(name) __##name\n" "\n" "#define SUFFIX(name) XSUFFIX(name)\n" "#define SUFFIX2(name) XSUFFIX2(name)\n" "#define PREFIX(name) XPREFIX(name)\n" "#define PREFIX2(name) XPREFIX2(name)\n" "\n" "#define UPCASE(name) name##_U\n" "#define LOWCASE(name) name##_L\n" "\n"; static void generate( char* str ) { FILE* f = fopen( "pomp2_fwrapper_def.h", "w" ); if ( f == NULL ) { perror( "pomp2_fwrapper_def.h" ); exit( 1 ); } fputs( header, f ); fputs( str, f ); fputs( "\n", f ); fclose( f ); } void foo_foo() { generate( "#define FSUB(name) LOWCASE(name)" ); } void foo_foo_() { generate( "#define FSUB(name) SUFFIX(LOWCASE(name))" ); } void foo_foo__() { generate( "#define FSUB(name) SUFFIX2(LOWCASE(name))" ); } void _foo_foo() { generate( "#define FSUB(name) PREFIX(LOWCASE(name))" ); } void __foo_foo() { generate( "#define FSUB(name) PREFIX2(LOWCASE(name))" ); } void _foo_foo_() { generate( "#define FSUB(name) PREFIX(SUFFIX(LOWCASE(name)))" ); } void FOO_FOO() { generate( "#define FSUB(name) UPCASE(name)" ); } void FOO_FOO_() { generate( "#define FSUB(name) SUFFIX(UPCASE(name))" ); } void FOO_FOO__() { generate( "#define FSUB(name) SUFFIX2(UPCASE(name))" ); } void _FOO_FOO() { generate( "#define FSUB(name) PREFIX(UPCASE(name))" ); } void __FOO_FOO() { generate( "#define FSUB(name) PREFIX2(UPCASE(name))" ); } void _FOO_FOO_() { generate( "#define FSUB(name) PREFIX(SUFFIX(UPCASE(name)))" ); } eztrace-1.1-7/src/modules/PaxHeaders.7332/pthread0000644000000000000000000000013213171135500016434 xustar0030 mtime=1508162368.229950648 30 atime=1508162372.166294941 30 ctime=1508162368.229950648 eztrace-1.1-7/src/modules/pthread/0000755000175000017500000000000013171135500017700 5ustar00trahaytrahay00000000000000eztrace-1.1-7/src/modules/pthread/PaxHeaders.7332/pthread_ev_codes.h0000644000000000000000000000013213143047722022167 xustar0030 mtime=1502367698.672456313 30 atime=1508138914.296877455 30 ctime=1508162368.221949949 eztrace-1.1-7/src/modules/pthread/pthread_ev_codes.h0000644000175000017500000000412313143047722023356 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef __PTHREAD_EV_CODES_H__ #define __PTHREAD_EV_CODES_H__ #include "ev_codes.h" #define EZTRACE_PTHREAD_EVENTS_ID SYSTEM_MODULE_ID(0x02) #define EZTRACE_PTHREAD_PREFIX GENERATE_SYSTEM_MODULE_PREFIX(EZTRACE_PTHREAD_EVENTS_ID) /* semaphores */ #define EZTRACE_SEM_POST (EZTRACE_PTHREAD_PREFIX | 0x0010) #define EZTRACE_SEM_START_WAIT (EZTRACE_PTHREAD_PREFIX | 0x0011) #define EZTRACE_SEM_STOP_WAIT (EZTRACE_PTHREAD_PREFIX | 0x0012) /* spinlocks */ #define EZTRACE_SPIN_LOCK_START (EZTRACE_PTHREAD_PREFIX | 0x0020 ) #define EZTRACE_SPIN_LOCK_STOP (EZTRACE_PTHREAD_PREFIX | 0x0021 ) #define EZTRACE_SPIN_UNLOCK (EZTRACE_PTHREAD_PREFIX | 0x0022 ) #define EZTRACE_SPIN_TRYLOCK (EZTRACE_PTHREAD_PREFIX | 0x0023 ) /* mutexes */ #define EZTRACE_MUTEX_TRYLOCK_SUCCESS (EZTRACE_PTHREAD_PREFIX | 0x0030) #define EZTRACE_MUTEX_TRYLOCK_FAIL (EZTRACE_PTHREAD_PREFIX | 0x0031) #define EZTRACE_MUTEX_LOCK_START (EZTRACE_PTHREAD_PREFIX | 0x0033) #define EZTRACE_MUTEX_LOCK_STOP (EZTRACE_PTHREAD_PREFIX | 0x0034) #define EZTRACE_MUTEX_UNLOCK (EZTRACE_PTHREAD_PREFIX | 0x0035) /* conditions */ #define EZTRACE_COND_SIGNAL (EZTRACE_PTHREAD_PREFIX | 0x0040) #define EZTRACE_COND_BROADCAST (EZTRACE_PTHREAD_PREFIX | 0x0041) #define EZTRACE_COND_START_WAIT (EZTRACE_PTHREAD_PREFIX | 0x0042) #define EZTRACE_COND_STOP_WAIT (EZTRACE_PTHREAD_PREFIX | 0x0043) /* rwlocks */ #define EZTRACE_RWLOCK_RDLOCK_START (EZTRACE_PTHREAD_PREFIX | 0x0050) #define EZTRACE_RWLOCK_RDLOCK_STOP (EZTRACE_PTHREAD_PREFIX | 0x0051) #define EZTRACE_RWLOCK_WRLOCK_START (EZTRACE_PTHREAD_PREFIX | 0x0052) #define EZTRACE_RWLOCK_WRLOCK_STOP (EZTRACE_PTHREAD_PREFIX | 0x0053) #define EZTRACE_RWLOCK_UNLOCK (EZTRACE_PTHREAD_PREFIX | 0x0054) /* barriers */ #define EZTRACE_BARRIER_START (EZTRACE_PTHREAD_PREFIX | 0x0060) #define EZTRACE_BARRIER_STOP (EZTRACE_PTHREAD_PREFIX | 0x0061) #endif /* __PTHREAD_EV_CODES_H__ */ eztrace-1.1-7/src/modules/pthread/PaxHeaders.7332/eztrace_convert_pthread.h0000644000000000000000000000013213045072516023575 xustar0030 mtime=1486124366.623518669 30 atime=1508138914.296877455 30 ctime=1508162368.225950299 eztrace-1.1-7/src/modules/pthread/eztrace_convert_pthread.h0000644000175000017500000001774213045072516024777 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include "eztrace_convert.h" #include static int recording_stats = 0; #define PTHREAD_CHANGE() if(!recording_stats) CHANGE() /* structure attached to each process */ struct pthread_process_info_t { struct process_info_t *p_process; /* pointer to the corresponding process */ struct ezt_list_t lock_list; /* list of struct pthread_lock_info_t */ }; enum lock_type_t { MUTEX=0, SPINLOCK=1, RWLOCK=2, SEMAPHORE=3, BARRIER=4, CONDITION=5, NB_LOCK_TYPES=6 }; /* structure that contains information on a lock(mutex, spinloc, etc.) */ struct pthread_lock_info_t { struct ezt_list_token_t token; /* token used for inserting this structure in the lock_list */ enum lock_type_t lock; /* type of lock */ app_ptr ptr; /* address of the lock in the application */ char* info; /* name of the lock */ /* statistics: */ uint32_t nb_acquire; /* number of lock_stop */ int last_owner_tid; /* tid of the last thread that acquired the lock */ float time_acquire; /* last time the lock was acquired */ float time_release; /* last time the lock was released */ double duration_critical_section; /* time spent in critical section */ double duration_acquire; /* time spent in waiting for a lock */ /* todo: improve statistics: * - compute min/max/average critical section duration * - record the time spent waiting for the lock */ }; struct pthread_thread_info_t { float start_acquire[NB_LOCK_TYPES]; /* date of the last start_lock event */ float duration_acquire[NB_LOCK_TYPES]; /* time spent in waiting for a lock */ float duration_critical_section[NB_LOCK_TYPES]; /* time spent in a critical section */ struct thread_info_t *p_thread; }; static void __lock_type_to_str(char *str, enum lock_type_t l) { switch (l) { case MUTEX: strcpy(str, "mutex"); break; case SPINLOCK: strcpy(str, "spinlock"); break; case RWLOCK: strcpy(str, "rwlock"); break; case SEMAPHORE: strcpy(str, "semaphore"); break; case BARRIER: strcpy(str, "barrier"); break; case CONDITION: strcpy(str, "condition"); break; default: strcpy(str, "<>"); }; } /* print a message that warns about a dangerous behavior. Thread 1 locked, but thread2 unlocked. * return 1 if this behavior is detected or 0 otherwise */ static int __check_lock_mismatch(struct pthread_lock_info_t *p_info, struct pthread_thread_info_t *p_thread) { int cur_tid = p_thread->p_thread->tid; if (p_info->last_owner_tid == cur_tid) return 0; char lock_type_str [80]; __lock_type_to_str(lock_type_str, p_info->lock); printf("Warning: t=%f - thread %d locked ", CURRENT, p_info->last_owner_tid); printf("%s %p, but thread %d unlocks it!\n", lock_type_str, (void*)p_info->ptr, cur_tid); return 1; } /* add a hook in the process structure in order to store information * about locks used by the process */ static struct pthread_process_info_t *__register_process_hook( struct process_info_t *p_process) { struct pthread_process_info_t *p_info = (struct pthread_process_info_t*) malloc( sizeof(struct pthread_process_info_t)); p_info->p_process = p_process; ezt_list_new(&p_info->lock_list); /* add the hook in the process info structure */ ezt_hook_list_add(&p_info->p_process->hooks, p_info, (uint8_t) EZTRACE_PTHREAD_EVENTS_ID); return p_info; } /* declare a pthread_process_info_t that corresponds to p_process */ #define INIT_PTHREAD_PROCESS_INFO(p_process, var) \ struct pthread_process_info_t *var = (struct pthread_process_info_t*) \ ezt_hook_list_retrieve_data(&p_process->hooks, (uint8_t)EZTRACE_PTHREAD_EVENTS_ID); \ if(!(var)) { \ var = __register_process_hook(p_process); \ } /* get the pthread_lock_info_t* lock_info that corresponds to lock_ptr * This initialize lock_info->info */ #define GET_LOCK_INFO(lock_info, p_process, lock_ptr, lock_type) \ do { \ INIT_PTHREAD_PROCESS_INFO(p_process, p_info); \ lock_info = __find_lock_info(&p_info->lock_list, lock_ptr); \ if(!lock_info) { \ lock_info = __new_lock_info(p_info, lock_ptr, lock_type); \ } \ }while(0) /* add the current duration of critical section (time_release-time_acquire) to the * sum of critical sections */ #define update_duration_critical_section(p_lock, p_info) \ do { \ p_lock->duration_critical_section += p_lock->time_release - p_lock->time_acquire; \ p_info->duration_critical_section[p_lock->lock] += p_lock->time_release - p_lock->time_acquire; \ } while(0) #define update_duration_acquire(p_lock, p_info) \ do{ \ p_lock->duration_acquire += p_lock->time_acquire - p_info->start_acquire[p_lock->lock]; \ p_info->duration_acquire[p_lock->lock] += p_lock->time_acquire - p_info->start_acquire[p_lock->lock]; \ } while(0) /* record informations on a lock start acquire event (for statistics) */ #define record_lock_start_acquire(p_lock, p_info) \ do { \ p_info->start_acquire[p_lock->lock] = CURRENT; \ } while(0) /* record informations on a lock acquire event (for statistics) */ #define record_lock_acquired(p_lock, p_info) \ do { \ p_lock->time_acquire = CURRENT; \ update_duration_acquire(p_lock, p_info); \ p_lock->nb_acquire++; \ p_lock->last_owner_tid = p_info->p_thread->tid; \ } while(0) /* record informations on a lock release event (for statistics) */ #define record_lock_release(p_lock, p_info) \ do { \ p_lock->time_release = CURRENT; \ update_duration_critical_section(p_lock, p_info); \ __check_lock_mismatch(p_lock, p_info); \ }while(0) /* Free the lock_info_list attached to a process * Since this also frees the locks info strings, this should not be called before * the trace is written to disk. */ static void __free_lock_info_list(struct pthread_process_info_t* p_info) { while (!ezt_list_empty(&p_info->lock_list)) { struct ezt_list_token_t *t = ezt_list_get_head(&(p_info->lock_list)); struct pthread_lock_info_t *p = (struct pthread_lock_info_t *) t->data; ezt_list_remove(t); if (p) { free(p->info); free(p); } } } /* create a new lock_info structure */ static struct pthread_lock_info_t* __new_lock_info(struct pthread_process_info_t* p_info, app_ptr ptr, enum lock_type_t lock_type) { struct pthread_lock_info_t* res = malloc(sizeof(struct pthread_lock_info_t)); int ret __attribute__ ((__unused__)); /* initialize the structure */ res->lock = lock_type; res->ptr = ptr; switch (lock_type) { case MUTEX: ret = asprintf(&res->info, "Mutex %p.", (void*)ptr); break; case SPINLOCK: ret = asprintf(&res->info, "Spinlock %p.", (void*)ptr); break; case RWLOCK: ret = asprintf(&res->info, "RWLock %p.", (void*)ptr); break; case SEMAPHORE: ret = asprintf(&res->info, "Semaphore %p.", (void*)ptr); break; case BARRIER: ret = asprintf(&res->info, "Barrier %p.", (void*)ptr); break; default: fprintf(stderr, "unknown lock type: %d\n", lock_type); } ret = asprintf(&res->info, "%s_ptr_%p", p_info->p_process->container->id, (void*) ptr); /* initialize statistics */ res->nb_acquire = 0; res->last_owner_tid = -1; res->duration_critical_section = 0; res->duration_acquire = 0; res->token.data = res; /* add the lock to the list of locks */ ezt_list_add(&p_info->lock_list, &res->token); return res; } /* find the lock_info that corresponds to ptr. * return NULL if not found */ static struct pthread_lock_info_t*__find_lock_info(struct ezt_list_t *lock_list, app_ptr ptr) { struct ezt_list_token_t *t = NULL; struct pthread_lock_info_t *p; ezt_list_foreach(lock_list, t) { p = (struct pthread_lock_info_t *) t->data; if (p->ptr == ptr) return p; } return NULL; } eztrace-1.1-7/src/modules/pthread/PaxHeaders.7332/Makefile.am0000644000000000000000000000013213012560437020552 xustar0030 mtime=1479205151.296727461 30 atime=1508162220.137844797 30 ctime=1508162368.221949949 eztrace-1.1-7/src/modules/pthread/Makefile.am0000644000175000017500000000310213012560437021735 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis # See COPYING in top-level directory. TLCFLAGS=$(TL_CPPFLAGS) TLLDFLAGS=$(TL_LDFLAGS) TLLIBADD=$(TL_LIB) GTGCFLAGS=$(GTG_CPPFLAGS) GTGLDFLAGS=$(GTG_LDFLAGS) GTGDEPENDENCIES = $(GTG_DEPENDENCIES) GTGLIBADD=$(GTG_LIB) lib_LTLIBRARIES = AM_CFLAGS = -I$(srcdir)/../../core/ -I$(top_builddir)/src/core \ -I$(top_srcdir)/src/pptrace if USE_PTHREAD lib_LTLIBRARIES += libeztrace-convert-pthread.la \ libeztrace-pthread.la \ libeztrace-autostart-pthread.la AM_CFLAGS += -W -Wall -Wextra endif # USE_PTHREAD libeztrace_convert_pthread_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(GTGCFLAGS) libeztrace_convert_pthread_la_LIBADD = $(TLLIBADD) $(GTGLIBADD) libeztrace_convert_pthread_la_LDFLAGS = $(GTGLDFLAGS) $(TLLDFLAGS) libeztrace_convert_pthread_la_DEPENDENCIES = $(GTGDEPENDENCIES) libeztrace_convert_pthread_la_SOURCES = eztrace_convert_pthread.c libeztrace_pthread_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) libeztrace_pthread_la_LIBADD = -lm -lpthread $(TLLIBADD) libeztrace_pthread_la_LDFLAGS = --no-undefined $(TLLDFLAGS) libeztrace_pthread_la_SOURCES = pthread.c libeztrace_autostart_pthread_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) libeztrace_autostart_pthread_la_LIBADD = -lm -lpthread $(TLLIBADD) libeztrace_autostart_pthread_la_LDFLAGS = --no-undefined $(TLLDFLAGS) libeztrace_autostart_pthread_la_CFLAGS = $(AM_CFLAGS) -W -Wall -Wextra -DEZTRACE_AUTOSTART libeztrace_autostart_pthread_la_SOURCES = pthread.c noinst_HEADERS = pthread_ev_codes.h eztrace_convert_pthread.h eztrace-1.1-7/src/modules/pthread/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135254020564 xustar0030 mtime=1508162220.165846857 30 atime=1508162286.635028479 30 ctime=1508162368.225950299 eztrace-1.1-7/src/modules/pthread/Makefile.in0000644000175000017500000007356413171135254021772 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @USE_PTHREAD_TRUE@am__append_1 = libeztrace-convert-pthread.la \ @USE_PTHREAD_TRUE@ libeztrace-pthread.la \ @USE_PTHREAD_TRUE@ libeztrace-autostart-pthread.la @USE_PTHREAD_TRUE@am__append_2 = -W -Wall -Wextra subdir = src/modules/pthread ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) libeztrace_autostart_pthread_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_libeztrace_autostart_pthread_la_OBJECTS = \ libeztrace_autostart_pthread_la-pthread.lo libeztrace_autostart_pthread_la_OBJECTS = \ $(am_libeztrace_autostart_pthread_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libeztrace_autostart_pthread_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(libeztrace_autostart_pthread_la_CFLAGS) $(CFLAGS) \ $(libeztrace_autostart_pthread_la_LDFLAGS) $(LDFLAGS) -o $@ @USE_PTHREAD_TRUE@am_libeztrace_autostart_pthread_la_rpath = -rpath \ @USE_PTHREAD_TRUE@ $(libdir) am_libeztrace_convert_pthread_la_OBJECTS = \ libeztrace_convert_pthread_la-eztrace_convert_pthread.lo libeztrace_convert_pthread_la_OBJECTS = \ $(am_libeztrace_convert_pthread_la_OBJECTS) libeztrace_convert_pthread_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) \ $(libeztrace_convert_pthread_la_LDFLAGS) $(LDFLAGS) -o $@ @USE_PTHREAD_TRUE@am_libeztrace_convert_pthread_la_rpath = -rpath \ @USE_PTHREAD_TRUE@ $(libdir) libeztrace_pthread_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_libeztrace_pthread_la_OBJECTS = libeztrace_pthread_la-pthread.lo libeztrace_pthread_la_OBJECTS = $(am_libeztrace_pthread_la_OBJECTS) libeztrace_pthread_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libeztrace_pthread_la_LDFLAGS) \ $(LDFLAGS) -o $@ @USE_PTHREAD_TRUE@am_libeztrace_pthread_la_rpath = -rpath $(libdir) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libeztrace_autostart_pthread_la_SOURCES) \ $(libeztrace_convert_pthread_la_SOURCES) \ $(libeztrace_pthread_la_SOURCES) DIST_SOURCES = $(libeztrace_autostart_pthread_la_SOURCES) \ $(libeztrace_convert_pthread_la_SOURCES) \ $(libeztrace_pthread_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUDA_CFLAGS = @CUDA_CFLAGS@ CUDA_LDFLAGS = @CUDA_LDFLAGS@ CUDA_LIBS = @CUDA_LIBS@ CUDA_ROOT = @CUDA_ROOT@ CUPTI_CFLAGS = @CUPTI_CFLAGS@ CUPTI_LDFLAGS = @CUPTI_LDFLAGS@ CUPTI_LIBS = @CUPTI_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ DYNLIB_EXT = @DYNLIB_EXT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ GTGDIR = @GTGDIR@ GTG_CPPFLAGS = @GTG_CPPFLAGS@ GTG_DEPENDENCIES = @GTG_DEPENDENCIES@ GTG_EXT_CPPFLAGS = @GTG_EXT_CPPFLAGS@ GTG_EXT_LDFLAGS = @GTG_EXT_LDFLAGS@ GTG_EXT_LIB = @GTG_EXT_LIB@ GTG_LDFLAGS = @GTG_LDFLAGS@ GTG_LIB = @GTG_LIB@ GTG_OUT_OF_ORDER = @GTG_OUT_OF_ORDER@ HAVE_ENV = @HAVE_ENV@ HAVE_LIBBACKTRACE = @HAVE_LIBBACKTRACE@ HAVE_LIBOPCODE = @HAVE_LIBOPCODE@ HAVE_PRCTL_H = @HAVE_PRCTL_H@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LD_LIBRARY_PATH_NAME = @LD_LIBRARY_PATH_NAME@ LD_PRELOAD_NAME = @LD_PRELOAD_NAME@ LIBBACKTRACE_CPPFLAGS = @LIBBACKTRACE_CPPFLAGS@ LIBBACKTRACE_LDFLAGS = @LIBBACKTRACE_LDFLAGS@ LIBBACKTRACE_LIB = @LIBBACKTRACE_LIB@ LIBBACKTRACE_ROOT = @LIBBACKTRACE_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LITL_PRINT = @LITL_PRINT@ LITL_ROOT = @LITL_ROOT@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPI_CFLAGS = @MPI_CFLAGS@ MPI_EVENT_ID = @MPI_EVENT_ID@ MPI_INC = @MPI_INC@ MPI_LDFLAGS = @MPI_LDFLAGS@ MPI_MODULE_NAME = @MPI_MODULE_NAME@ MPI_ROOT = @MPI_ROOT@ NM = @NM@ NMEDIT = @NMEDIT@ NVCC = @NVCC@ NVCCFLAGS = @NVCCFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAPIDIR = @PAPIDIR@ PAPI_CPPFLAGS = @PAPI_CPPFLAGS@ PAPI_ENABLED = @PAPI_ENABLED@ PAPI_LDFLAGS = @PAPI_LDFLAGS@ PAPI_LIBDIR = @PAPI_LIBDIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PPTRACE_BINARY_TYPE = @PPTRACE_BINARY_TYPE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STARPU_CFLAGS = @STARPU_CFLAGS@ STARPU_CPPFLAGS = @STARPU_CPPFLAGS@ STARPU_LDFLAGS = @STARPU_LDFLAGS@ STARPU_LIBS = @STARPU_LIBS@ STARPU_ROOT = @STARPU_ROOT@ STRIP = @STRIP@ TARGET_BITS = @TARGET_BITS@ TL_CPPFLAGS = @TL_CPPFLAGS@ TL_EXT_CPPFLAGS = @TL_EXT_CPPFLAGS@ TL_EXT_LDFLAGS = @TL_EXT_LDFLAGS@ TL_EXT_LIB = @TL_EXT_LIB@ TL_LDFLAGS = @TL_LDFLAGS@ TL_LIB = @TL_LIB@ USE_BIN_INSTRUMENTATION = @USE_BIN_INSTRUMENTATION@ USE_CUDADIR_FROM_USER = @USE_CUDADIR_FROM_USER@ USE_GETTID = @USE_GETTID@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ USE_PAPIDIR_FROM_USER = @USE_PAPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ TLCFLAGS = $(TL_CPPFLAGS) TLLDFLAGS = $(TL_LDFLAGS) TLLIBADD = $(TL_LIB) GTGCFLAGS = $(GTG_CPPFLAGS) GTGLDFLAGS = $(GTG_LDFLAGS) GTGDEPENDENCIES = $(GTG_DEPENDENCIES) GTGLIBADD = $(GTG_LIB) lib_LTLIBRARIES = $(am__append_1) AM_CFLAGS = -I$(srcdir)/../../core/ -I$(top_builddir)/src/core \ -I$(top_srcdir)/src/pptrace $(am__append_2) libeztrace_convert_pthread_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(GTGCFLAGS) libeztrace_convert_pthread_la_LIBADD = $(TLLIBADD) $(GTGLIBADD) libeztrace_convert_pthread_la_LDFLAGS = $(GTGLDFLAGS) $(TLLDFLAGS) libeztrace_convert_pthread_la_DEPENDENCIES = $(GTGDEPENDENCIES) libeztrace_convert_pthread_la_SOURCES = eztrace_convert_pthread.c libeztrace_pthread_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) libeztrace_pthread_la_LIBADD = -lm -lpthread $(TLLIBADD) libeztrace_pthread_la_LDFLAGS = --no-undefined $(TLLDFLAGS) libeztrace_pthread_la_SOURCES = pthread.c libeztrace_autostart_pthread_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) libeztrace_autostart_pthread_la_LIBADD = -lm -lpthread $(TLLIBADD) libeztrace_autostart_pthread_la_LDFLAGS = --no-undefined $(TLLDFLAGS) libeztrace_autostart_pthread_la_CFLAGS = $(AM_CFLAGS) -W -Wall -Wextra -DEZTRACE_AUTOSTART libeztrace_autostart_pthread_la_SOURCES = pthread.c noinst_HEADERS = pthread_ev_codes.h eztrace_convert_pthread.h all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/modules/pthread/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/modules/pthread/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libeztrace-autostart-pthread.la: $(libeztrace_autostart_pthread_la_OBJECTS) $(libeztrace_autostart_pthread_la_DEPENDENCIES) $(EXTRA_libeztrace_autostart_pthread_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_autostart_pthread_la_LINK) $(am_libeztrace_autostart_pthread_la_rpath) $(libeztrace_autostart_pthread_la_OBJECTS) $(libeztrace_autostart_pthread_la_LIBADD) $(LIBS) libeztrace-convert-pthread.la: $(libeztrace_convert_pthread_la_OBJECTS) $(libeztrace_convert_pthread_la_DEPENDENCIES) $(EXTRA_libeztrace_convert_pthread_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_convert_pthread_la_LINK) $(am_libeztrace_convert_pthread_la_rpath) $(libeztrace_convert_pthread_la_OBJECTS) $(libeztrace_convert_pthread_la_LIBADD) $(LIBS) libeztrace-pthread.la: $(libeztrace_pthread_la_OBJECTS) $(libeztrace_pthread_la_DEPENDENCIES) $(EXTRA_libeztrace_pthread_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_pthread_la_LINK) $(am_libeztrace_pthread_la_rpath) $(libeztrace_pthread_la_OBJECTS) $(libeztrace_pthread_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_autostart_pthread_la-pthread.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_convert_pthread_la-eztrace_convert_pthread.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_pthread_la-pthread.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libeztrace_autostart_pthread_la-pthread.lo: pthread.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_pthread_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_pthread_la_CFLAGS) $(CFLAGS) -MT libeztrace_autostart_pthread_la-pthread.lo -MD -MP -MF $(DEPDIR)/libeztrace_autostart_pthread_la-pthread.Tpo -c -o libeztrace_autostart_pthread_la-pthread.lo `test -f 'pthread.c' || echo '$(srcdir)/'`pthread.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_autostart_pthread_la-pthread.Tpo $(DEPDIR)/libeztrace_autostart_pthread_la-pthread.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pthread.c' object='libeztrace_autostart_pthread_la-pthread.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_pthread_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_pthread_la_CFLAGS) $(CFLAGS) -c -o libeztrace_autostart_pthread_la-pthread.lo `test -f 'pthread.c' || echo '$(srcdir)/'`pthread.c libeztrace_convert_pthread_la-eztrace_convert_pthread.lo: eztrace_convert_pthread.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_pthread_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_convert_pthread_la-eztrace_convert_pthread.lo -MD -MP -MF $(DEPDIR)/libeztrace_convert_pthread_la-eztrace_convert_pthread.Tpo -c -o libeztrace_convert_pthread_la-eztrace_convert_pthread.lo `test -f 'eztrace_convert_pthread.c' || echo '$(srcdir)/'`eztrace_convert_pthread.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_convert_pthread_la-eztrace_convert_pthread.Tpo $(DEPDIR)/libeztrace_convert_pthread_la-eztrace_convert_pthread.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_convert_pthread.c' object='libeztrace_convert_pthread_la-eztrace_convert_pthread.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_pthread_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_convert_pthread_la-eztrace_convert_pthread.lo `test -f 'eztrace_convert_pthread.c' || echo '$(srcdir)/'`eztrace_convert_pthread.c libeztrace_pthread_la-pthread.lo: pthread.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_pthread_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_pthread_la-pthread.lo -MD -MP -MF $(DEPDIR)/libeztrace_pthread_la-pthread.Tpo -c -o libeztrace_pthread_la-pthread.lo `test -f 'pthread.c' || echo '$(srcdir)/'`pthread.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_pthread_la-pthread.Tpo $(DEPDIR)/libeztrace_pthread_la-pthread.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pthread.c' object='libeztrace_pthread_la-pthread.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_pthread_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_pthread_la-pthread.lo `test -f 'pthread.c' || echo '$(srcdir)/'`pthread.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libLTLIBRARIES install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/src/modules/pthread/PaxHeaders.7332/pthread.c0000644000000000000000000000013213143047722020313 xustar0030 mtime=1502367698.672456313 30 atime=1508138914.280877055 30 ctime=1508162368.229950648 eztrace-1.1-7/src/modules/pthread/pthread.c0000644000175000017500000002361613143047722021512 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 /* or _BSD_SOURCE or _SVID_SOURCE */ #define _REENTRANT #include #include #include #include #include #include "pthread_ev_codes.h" #include "eztrace.h" #include "pptrace.h" /* set to 1 when all the hooks are set. * This is usefull in order to avoid recursive calls to mutex_lock for example */ static volatile int __pthread_initialized = 0; /* pointers to actual pthread functions */ int (*libpthread_mutex_lock)(pthread_mutex_t * mutex) = NULL; int (*libpthread_mutex_trylock)(pthread_mutex_t * mutex); int (*libpthread_mutex_unlock)(pthread_mutex_t * mutex); int (*libpthread_spin_lock)(pthread_spinlock_t * lock); int (*libpthread_spin_unlock)(pthread_spinlock_t * lock); int (*libpthread_spin_trylock)(pthread_spinlock_t * lock); int (*libpthread_barrier_wait)(pthread_barrier_t * barrier); int (*libpthread_sem_wait)(sem_t * sem); int (*libpthread_sem_post)(sem_t * sem); int (*libpthread_cond_init)(pthread_cond_t *__restrict __cond, __const pthread_condattr_t *__restrict __cond_attr); int (*libpthread_cond_wait)(pthread_cond_t * __restrict cond, pthread_mutex_t * __restrict mutex); int (*libpthread_cond_broadcast)(pthread_cond_t * cond); int (*libpthread_cond_signal)(pthread_cond_t * cond); int (*libpthread_cond_destroy)(pthread_cond_t *__cond); int (*libpthread_cond_timedwait)(pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex, __const struct timespec *__restrict __abstime); int (*libpthread_rwlock_rdlock)(pthread_rwlock_t * rwlock); int (*libpthread_rwlock_wrlock)(pthread_rwlock_t * rwlock); int (*libpthread_rwlock_unlock)(pthread_rwlock_t * rwlock); /* Mutex-related callbacks */ int pthread_mutex_lock(pthread_mutex_t * mutex) { FUNCTION_ENTRY; /* If the current file's constructor has not been called yet, this means that the application is being initialized and that there's only one thread. Thus, we do not to call mutex_lock for real. If you try to call mutex_lock in that case, you'll get a SIGSEVG since dlsym was not called yet for mutex_lock */ if (__pthread_initialized) { EZTRACE_EVENT_PACKED_1(EZTRACE_MUTEX_LOCK_START, (app_ptr)mutex); int ret = libpthread_mutex_lock(mutex); EZTRACE_EVENT_PACKED_2(EZTRACE_MUTEX_LOCK_STOP, (app_ptr)mutex, ret); return ret; } /* __pthread_initialized is set to 0. The application is initializing, so don't do anything */ return 0; } int pthread_mutex_trylock(pthread_mutex_t * mutex) { FUNCTION_ENTRY; if (__pthread_initialized) { int ret = libpthread_mutex_trylock(mutex); /* change #if 0 into #if 1 if you want to record each call to mutex_trylock (ie. not only successful calls) */ #if 0 EZTRACE_EVENT_PACKED_1(ret==1 ? EZTRACE_MUTEX_TRYLOCK_FAIL : EZTRACE_MUTEX_TRYLOCK_SUCCESS, (app_ptr)mutex); #else /* 0 */ if (!ret) { EZTRACE_EVENT_PACKED_1(EZTRACE_MUTEX_TRYLOCK_SUCCESS, (app_ptr)mutex); } #endif /* 0 */ return ret; } return 0; } int pthread_mutex_unlock(pthread_mutex_t * mutex) { FUNCTION_ENTRY; if (__pthread_initialized) { EZTRACE_EVENT_PACKED_1(EZTRACE_MUTEX_UNLOCK, (app_ptr)mutex); int ret = libpthread_mutex_unlock(mutex); return ret; } return 0; } /* Spinlock-related callbacks */ int pthread_spin_lock(pthread_spinlock_t * lock) { FUNCTION_ENTRY; if(!libpthread_spin_lock){ INTERCEPT("pthread_spin_lock", libpthread_spin_lock); } EZTRACE_EVENT_PACKED_1(EZTRACE_SPIN_LOCK_START, (app_ptr)lock); int ret = libpthread_spin_lock(lock); EZTRACE_EVENT_PACKED_2(EZTRACE_SPIN_LOCK_STOP, (app_ptr)lock, ret); return ret; } int pthread_spin_unlock(pthread_spinlock_t * lock) { FUNCTION_ENTRY; if(!libpthread_spin_unlock){ INTERCEPT("pthread_spin_unlock", libpthread_spin_unlock); } EZTRACE_EVENT_PACKED_1(EZTRACE_SPIN_UNLOCK, (app_ptr)lock); return libpthread_spin_unlock(lock); } int pthread_spin_trylock(pthread_spinlock_t * lock) { FUNCTION_ENTRY; if(!libpthread_spin_trylock){ INTERCEPT("pthread_spin_trylock", libpthread_spin_trylock); } int ret = libpthread_spin_trylock(lock); EZTRACE_EVENT_PACKED_2(EZTRACE_SPIN_TRYLOCK, (app_ptr)lock, ret); return ret; } /* Barrier-related callbacks */ int pthread_barrier_wait(pthread_barrier_t * barrier) { FUNCTION_ENTRY; if(!libpthread_barrier_wait){ INTERCEPT("pthread_barrier_wait", libpthread_barrier_wait); } EZTRACE_EVENT_PACKED_1(EZTRACE_BARRIER_START, barrier); int ret = libpthread_barrier_wait(barrier); EZTRACE_EVENT_PACKED_1(EZTRACE_BARRIER_STOP, barrier); return ret; } /* Semaphore-related callbacks */ int sem_wait(sem_t * sem) { FUNCTION_ENTRY; if(!libpthread_sem_wait){ INTERCEPT("sem_wait", libpthread_sem_wait); } EZTRACE_EVENT_PACKED_1(EZTRACE_SEM_START_WAIT, (app_ptr)sem); int ret = libpthread_sem_wait(sem); EZTRACE_EVENT_PACKED_2(EZTRACE_SEM_STOP_WAIT, (app_ptr)sem, ret); return ret; } int sem_post(sem_t * sem) { FUNCTION_ENTRY; if(!libpthread_sem_post){ INTERCEPT("sem_post", libpthread_sem_post); } EZTRACE_EVENT_PACKED_1(EZTRACE_SEM_POST, (app_ptr)sem); return libpthread_sem_post(sem); } /* Condition-related callbacks */ /* We don't actually need these (init, destroy) functions, but if we don't * catch these functions, it will lead to using somehow different implementations * (ie. cond_init from one implementation and cond_wait from another) that are * not compatible, resulting in data corruption :( */ int pthread_cond_init(pthread_cond_t *__restrict __cond, __const pthread_condattr_t *__restrict __cond_attr) { if (!libpthread_cond_init) { INTERCEPT("pthread_cond_init", libpthread_cond_init); } return libpthread_cond_init(__cond, __cond_attr); } int pthread_cond_destroy(pthread_cond_t *__cond) { if (!libpthread_cond_destroy) { INTERCEPT("pthread_cond_destroy", libpthread_cond_destroy); } return libpthread_cond_destroy(__cond); } int pthread_cond_wait(pthread_cond_t * __restrict cond, pthread_mutex_t * __restrict mutex) { if (!libpthread_cond_wait) { INTERCEPT("pthread_cond_wait", libpthread_cond_wait); } FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_1(EZTRACE_COND_START_WAIT, (app_ptr) cond); int ret = libpthread_cond_wait(cond, mutex); EZTRACE_EVENT_PACKED_1(EZTRACE_COND_STOP_WAIT, (app_ptr) cond); return ret; } int pthread_cond_timedwait(pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex, __const struct timespec *__restrict __abstime) { if (!libpthread_cond_timedwait) { INTERCEPT("pthread_cond_timedwait", libpthread_cond_timedwait); } FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_COND_START_WAIT); int ret = libpthread_cond_timedwait(__cond, __mutex, __abstime); /* todo: what if the timer expires ? */ EZTRACE_EVENT_PACKED_1(EZTRACE_COND_STOP_WAIT, (app_ptr) __cond); return ret; } int pthread_cond_broadcast(pthread_cond_t * cond) { if (!libpthread_cond_broadcast) { INTERCEPT("pthread_cond_broadcast", libpthread_cond_broadcast); } FUNCTION_ENTRY; return libpthread_cond_broadcast(cond); } int pthread_cond_signal(pthread_cond_t * cond) { if (!libpthread_cond_signal) { INTERCEPT("pthread_cond_signal", libpthread_cond_signal); } FUNCTION_ENTRY; return libpthread_cond_signal(cond); } /* RWLock-related callbacks */ int pthread_rwlock_rdlock(pthread_rwlock_t * rwlock) { if (!libpthread_rwlock_rdlock) { INTERCEPT("pthread_rwlock_rdlock", libpthread_rwlock_rdlock); } FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_1(EZTRACE_RWLOCK_RDLOCK_START, (app_ptr)rwlock); int ret = libpthread_rwlock_rdlock(rwlock); EZTRACE_EVENT_PACKED_1(EZTRACE_RWLOCK_RDLOCK_STOP, (app_ptr)rwlock); return ret; } int pthread_rwlock_wrlock(pthread_rwlock_t * rwlock) { if (!libpthread_rwlock_wrlock) { INTERCEPT("pthread_rwlock_wrlock", libpthread_rwlock_wrlock); } FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_1(EZTRACE_RWLOCK_WRLOCK_START, (app_ptr)rwlock); int ret = libpthread_rwlock_wrlock(rwlock); EZTRACE_EVENT_PACKED_1(EZTRACE_RWLOCK_WRLOCK_STOP, (app_ptr)rwlock); return ret; } int pthread_rwlock_unlock(pthread_rwlock_t * rwlock) { if (!libpthread_rwlock_unlock) { INTERCEPT("pthread_rwlock_unlock", libpthread_rwlock_unlock); } FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_1(EZTRACE_RWLOCK_UNLOCK, (app_ptr)rwlock); int ret = libpthread_rwlock_unlock(rwlock); return ret; } START_INTERCEPT_MODULE(pthread) INTERCEPT2("pthread_mutex_lock", libpthread_mutex_lock) INTERCEPT2("pthread_mutex_trylock", libpthread_mutex_trylock) INTERCEPT2("pthread_mutex_unlock", libpthread_mutex_unlock) INTERCEPT2("pthread_spin_lock", libpthread_spin_lock) INTERCEPT2("pthread_spin_unlock", libpthread_spin_unlock) INTERCEPT2("pthread_spin_trylock", libpthread_spin_trylock) INTERCEPT2("pthread_barrier_wait", libpthread_barrier_wait) INTERCEPT2("sem_wait", libpthread_sem_wait) INTERCEPT2("sem_post", libpthread_sem_post) INTERCEPT2("pthread_cond_wait", libpthread_cond_wait) INTERCEPT2("pthread_cond_timedwait", libpthread_cond_timedwait) INTERCEPT2("pthread_cond_broadcast", libpthread_cond_broadcast) INTERCEPT2("pthread_cond_signal", libpthread_cond_signal) INTERCEPT2("pthread_cond_init", libpthread_cond_init) INTERCEPT2("pthread_cond_destroy", libpthread_cond_destroy) INTERCEPT2("pthread_rwlock_rdlock", libpthread_rwlock_rdlock) INTERCEPT2("pthread_rwlock_wrlock", libpthread_rwlock_wrlock) INTERCEPT2("pthread_rwlock_unlock", libpthread_rwlock_unlock) END_INTERCEPT_MODULE(pthread) static void __pthread_init(void) __attribute__ ((constructor)); static void __pthread_init(void) { DYNAMIC_INTERCEPT_ALL_MODULE(pthread); #ifdef EZTRACE_AUTOSTART eztrace_start (); #endif __pthread_initialized = 1; } static void __pthread_conclude(void) __attribute__ ((destructor)); static void __pthread_conclude(void) { __pthread_initialized = 0; eztrace_stop(); } eztrace-1.1-7/src/modules/pthread/PaxHeaders.7332/eztrace_convert_pthread.c0000644000000000000000000000013213143047722023570 xustar0030 mtime=1502367698.672456313 30 atime=1508138914.264876656 30 ctime=1508162368.229950648 eztrace-1.1-7/src/modules/pthread/eztrace_convert_pthread.c0000644000175000017500000005130413143047722024762 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE #include #include #include #include "eztrace_convert.h" #include "eztrace_convert_core.h" #include "pthread_ev_codes.h" #include "eztrace_list.h" #include "eztrace_stack.h" #include "eztrace_convert_pthread.h" /* add a hook in the thread structure in order to store information * about pending parallel sections */ struct pthread_thread_info_t *__register_thread_hook(int tid) { DECLARE_CUR_PROCESS(p_process); struct pthread_thread_info_t *p_info = (struct pthread_thread_info_t*) malloc(sizeof(struct pthread_thread_info_t)); p_info->p_thread = GET_THREAD_INFO(CUR_INDEX, tid); int i; for(i=0; iduration_acquire[i] = 0; p_info->start_acquire[i] = 0; p_info->duration_critical_section[i] = 0; } /* add the hook in the thread info structure */ ezt_hook_list_add(&p_info->p_thread->hooks, p_info, (uint8_t)EZTRACE_PTHREAD_EVENTS_ID); return p_info; } /* declare a var variable that points to the thread_info structure */ #define INIT_PTHREAD_THREAD_INFO(p_thread_info, var) \ struct pthread_thread_info_t *var = (struct pthread_thread_info_t*) \ ezt_hook_list_retrieve_data(&p_thread_info->hooks, (uint8_t)EZTRACE_PTHREAD_EVENTS_ID); \ if(!(var)) { \ var = __register_thread_hook(CUR_THREAD_ID); \ } /* Semaphore processing */ void handle_sem_post(void) { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); app_ptr lock_ptr; GET_PARAM_PACKED_1(CUR_EV, lock_ptr); struct pthread_lock_info_t *lock_info = NULL; GET_LOCK_INFO(lock_info, p_process, lock_ptr, SEMAPHORE); PTHREAD_CHANGE() addEvent(CURRENT, "E_LockStart", thread_id, lock_info->info); } void handle_start_sem_wait(void) { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_THREAD_INFO(p_thread, p_info); app_ptr lock_ptr; GET_PARAM_PACKED_1(CUR_EV, lock_ptr); struct pthread_lock_info_t *lock_info = NULL; GET_LOCK_INFO(lock_info, p_process, lock_ptr, SEMAPHORE); record_lock_start_acquire(lock_info, p_info); PTHREAD_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_Blocked_sem"); } void handle_stop_sem_wait(void) { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_THREAD_INFO(p_thread, p_info); app_ptr lock_ptr; int retval; GET_PARAM_PACKED_2(CUR_EV, lock_ptr, retval); struct pthread_lock_info_t *lock_info = NULL; GET_LOCK_INFO(lock_info, p_process, lock_ptr, SEMAPHORE); record_lock_acquired(lock_info, p_info); PTHREAD_CHANGE() popState(CURRENT, "ST_Thread", thread_id); PTHREAD_CHANGE() addEvent(CURRENT, "E_SemWait_Done", thread_id, lock_info->info); } /* Spinlock processing */ void handle_spin_lock_start() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_THREAD_INFO(p_thread, p_info); app_ptr lock_ptr; GET_PARAM_PACKED_1(CUR_EV, lock_ptr); struct pthread_lock_info_t *lock_info = NULL; GET_LOCK_INFO(lock_info, p_process, lock_ptr, SPINLOCK); record_lock_start_acquire(lock_info, p_info); PTHREAD_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_Blocked_spin"); } void handle_spin_lock_stop() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_THREAD_INFO(p_thread, p_info); app_ptr lock_ptr; int retval; GET_PARAM_PACKED_2(CUR_EV, lock_ptr, retval); struct pthread_lock_info_t *lock_info = NULL; GET_LOCK_INFO(lock_info, p_process, lock_ptr, SPINLOCK); record_lock_acquired(lock_info, p_info); PTHREAD_CHANGE() popState(CURRENT, "ST_Thread", thread_id); PTHREAD_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_Critical_spin"); } void handle_spin_trylock() { FUNC_NAME; DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_THREAD_INFO(p_thread, p_info); app_ptr lock_ptr; int result; GET_PARAM_PACKED_2(CUR_EV, lock_ptr, result); if (result) { DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); struct pthread_lock_info_t *lock_info = NULL; GET_LOCK_INFO(lock_info, p_process, lock_ptr, SPINLOCK); record_lock_start_acquire(lock_info, p_info); record_lock_acquired(lock_info, p_info); PTHREAD_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_Critical_spin"); } } void handle_spin_unlock() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_THREAD_INFO(p_thread, p_info); app_ptr lock_ptr; GET_PARAM_PACKED_1(CUR_EV, lock_ptr); struct pthread_lock_info_t *lock_info = NULL; GET_LOCK_INFO(lock_info, p_process, lock_ptr, SPINLOCK); record_lock_release(lock_info, p_info); // __check_lock_mismatch(lock_info, p_process, CUR_THREAD_ID); PTHREAD_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } /* Mutex processing */ void handle_mutex_trylock(int result) { FUNC_NAME; if (!result) return; app_ptr lock_ptr; GET_PARAM_PACKED_1(CUR_EV, lock_ptr); DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_THREAD_INFO(p_thread, p_info); struct pthread_lock_info_t *lock_info = NULL; GET_LOCK_INFO(lock_info, p_process, lock_ptr, MUTEX); record_lock_acquired(lock_info, p_info); PTHREAD_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_Critical_mutex"); } void handle_mutex_lock_start() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_THREAD_INFO(p_thread, p_info); app_ptr lock_ptr; GET_PARAM_PACKED_1(CUR_EV, lock_ptr); struct pthread_lock_info_t *lock_info = NULL; GET_LOCK_INFO(lock_info, p_process, lock_ptr, MUTEX); record_lock_start_acquire(lock_info, p_info); PTHREAD_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_Blocked_mutex"); } void handle_mutex_lock_stop() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_THREAD_INFO(p_thread, p_info); app_ptr lock_ptr; int retval; GET_PARAM_PACKED_2(CUR_EV, lock_ptr, retval); struct pthread_lock_info_t *lock_info = NULL; GET_LOCK_INFO(lock_info, p_process, lock_ptr, MUTEX); record_lock_acquired(lock_info, p_info); PTHREAD_CHANGE() popState(CURRENT, "ST_Thread", thread_id); PTHREAD_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_Critical_mutex"); } void handle_mutex_unlock() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_THREAD_INFO(p_thread, p_info); app_ptr lock_ptr; GET_PARAM_PACKED_1(CUR_EV, lock_ptr); struct pthread_lock_info_t *lock_info = NULL; GET_LOCK_INFO(lock_info, p_process, lock_ptr, MUTEX); record_lock_release(lock_info, p_info); // __check_lock_mismatch(lock_info, p_process, CUR_THREAD_ID); PTHREAD_CHANGE() addEvent(CURRENT, "E_Mutex_Unlock", thread_id, lock_info->info); PTHREAD_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } /* Condition processing */ void handle_cond_signal() { FUNC_NAME; } void handle_cond_broadcast() { FUNC_NAME; } void handle_cond_start_wait() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_THREAD_INFO(p_thread, p_info); app_ptr lock_ptr; GET_PARAM_PACKED_1(CUR_EV, lock_ptr); struct pthread_lock_info_t *lock_info = NULL; GET_LOCK_INFO(lock_info, p_process, lock_ptr, CONDITION); record_lock_start_acquire(lock_info, p_info); PTHREAD_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_Blocked_cond"); } void handle_cond_stop_wait() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_THREAD_INFO(p_thread, p_info); app_ptr lock_ptr; GET_PARAM_PACKED_1(CUR_EV, lock_ptr); struct pthread_lock_info_t *lock_info = NULL; GET_LOCK_INFO(lock_info, p_process, lock_ptr, CONDITION); record_lock_acquired(lock_info, p_info); PTHREAD_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } /* RWLock processing */ void handle_rwlock_rdlock_start() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_THREAD_INFO(p_thread, p_info); app_ptr lock_ptr; GET_PARAM_PACKED_1(CUR_EV, lock_ptr); struct pthread_lock_info_t *lock_info = NULL; GET_LOCK_INFO(lock_info, p_process, lock_ptr, RWLOCK); record_lock_start_acquire(lock_info, p_info); PTHREAD_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_Blocked_rwlock"); } void handle_rwlock_rdlock_stop() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_THREAD_INFO(p_thread, p_info); app_ptr lock_ptr; GET_PARAM_PACKED_1(CUR_EV, lock_ptr); struct pthread_lock_info_t *lock_info = NULL; GET_LOCK_INFO(lock_info, p_process, lock_ptr, RWLOCK); record_lock_acquired(lock_info, p_info); PTHREAD_CHANGE() popState(CURRENT, "ST_Thread", thread_id); PTHREAD_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_Critical_rwlock"); } void handle_rwlock_wrlock_start() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_THREAD_INFO(p_thread, p_info); app_ptr lock_ptr; GET_PARAM_PACKED_1(CUR_EV, lock_ptr); struct pthread_lock_info_t *lock_info = NULL; GET_LOCK_INFO(lock_info, p_process, lock_ptr, RWLOCK); record_lock_start_acquire(lock_info, p_info); PTHREAD_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_Blocked_rwlock"); } void handle_rwlock_wrlock_stop() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_THREAD_INFO(p_thread, p_info); app_ptr lock_ptr; GET_PARAM_PACKED_1(CUR_EV, lock_ptr); struct pthread_lock_info_t *lock_info = NULL; GET_LOCK_INFO(lock_info, p_process, lock_ptr, RWLOCK); record_lock_acquired(lock_info, p_info); PTHREAD_CHANGE() popState(CURRENT, "ST_Thread", thread_id); PTHREAD_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_Critical_rwlock"); } void handle_rwlock_unlock() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_THREAD_INFO(p_thread, p_info); app_ptr lock_ptr; GET_PARAM_PACKED_1(CUR_EV, lock_ptr); struct pthread_lock_info_t *lock_info = NULL; GET_LOCK_INFO(lock_info, p_process, lock_ptr, RWLOCK); record_lock_release(lock_info, p_info); // __check_lock_mismatch(lock_info, p_process, CUR_THREAD_ID); PTHREAD_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_barrier_start() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_THREAD_INFO(p_thread, p_info); app_ptr lock_ptr; GET_PARAM_PACKED_1(CUR_EV, lock_ptr); struct pthread_lock_info_t *lock_info = NULL; GET_LOCK_INFO(lock_info, p_process, lock_ptr, BARRIER); record_lock_start_acquire(lock_info, p_info); PTHREAD_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_Blocked_barrier"); } void handle_barrier_stop() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_PROCESS(p_process); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_THREAD_INFO(p_thread, p_info); app_ptr lock_ptr; GET_PARAM_PACKED_1(CUR_EV, lock_ptr); struct pthread_lock_info_t *lock_info = NULL; GET_LOCK_INFO(lock_info, p_process, lock_ptr, BARRIER); record_lock_acquired(lock_info, p_info); record_lock_release(lock_info, p_info); PTHREAD_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } int eztrace_convert_pthread_init() { if (get_mode() == EZTRACE_CONVERT) { addEventType("E_SemPost", "CT_Thread", "SemPost"); addEventType("E_SemWait_Done", "CT_Thread", "SemWait done"); addEventType("E_Mutex_Lock", "CT_Thread", "Mutex Lock"); addEventType("E_Mutex_Unlock", "CT_Thread", "Mutex Unlock"); addEventType("E_CondSignal", "CT_Thread", "Cond Signal"); addEventType("E_LockStart", "CT_Thread", "Waiting for a lock"); addEventType("E_LockStop", "CT_Thread", "Lock acquired"); addEntityValue("STV_Blocked_sem", "ST_Thread", "Blocked on a semaphore", GTG_RED); addEntityValue("STV_Blocked_spin", "ST_Thread", "Blocked on a spinlock", GTG_RED); addEntityValue("STV_Blocked_mutex", "ST_Thread", "Blocked on a mutex", GTG_RED); addEntityValue("STV_Blocked_condition", "ST_Thread", "Blocked on a condition", GTG_RED); addEntityValue("STV_Blocked_rwlock", "ST_Thread", "Blocked on a rwlock", GTG_RED); addEntityValue("STV_Blocked_barrier", "ST_Thread", "Blocked on a barrier", GTG_RED); addEntityValue("STV_Critical_sem", "ST_Thread", "Critical Section (semaphore)", GTG_GREEN); addEntityValue("STV_Critical_spin", "ST_Thread", "Critical Section (spinlock)", GTG_GREEN); addEntityValue("STV_Critical_mutex", "ST_Thread", "Critical Section (mutex)", GTG_GREEN); addEntityValue("STV_Critical_condition", "ST_Thread", "Critical Section (condition)", GTG_GREEN); addEntityValue("STV_Critical_rwlock", "ST_Thread", "Critical Section (rwlock)", GTG_GREEN); } return 0; } /* return 1 if the event was handled */ int handle_pthread_events(eztrace_event_t *ev) { if (!STARTED) return 0; switch (LITL_READ_GET_CODE(ev)) { /* PThread creation/destruction */ /* Semaphore */ case EZTRACE_SEM_POST: handle_sem_post(); break; case EZTRACE_SEM_START_WAIT: handle_start_sem_wait(); break; case EZTRACE_SEM_STOP_WAIT: handle_stop_sem_wait(); break; /* Spinlock */ case EZTRACE_SPIN_LOCK_START: handle_spin_lock_start(); break; case EZTRACE_SPIN_LOCK_STOP: handle_spin_lock_stop(); break; case EZTRACE_SPIN_TRYLOCK: handle_spin_trylock(); break; case EZTRACE_SPIN_UNLOCK: handle_spin_unlock(); break; /* Mutex */ case EZTRACE_MUTEX_TRYLOCK_SUCCESS: handle_mutex_trylock(1); break; case EZTRACE_MUTEX_TRYLOCK_FAIL: handle_mutex_trylock(0); break; case EZTRACE_MUTEX_LOCK_START: handle_mutex_lock_start(); break; case EZTRACE_MUTEX_LOCK_STOP: handle_mutex_lock_stop(); break; case EZTRACE_MUTEX_UNLOCK: handle_mutex_unlock(); break; /* Condition */ case EZTRACE_COND_SIGNAL: handle_cond_signal(); break; case EZTRACE_COND_BROADCAST: handle_cond_broadcast(); break; case EZTRACE_COND_START_WAIT: handle_cond_start_wait(); break; case EZTRACE_COND_STOP_WAIT: handle_cond_stop_wait(); break; /* RWLock */ case EZTRACE_RWLOCK_RDLOCK_START: handle_rwlock_rdlock_start(); break; case EZTRACE_RWLOCK_RDLOCK_STOP: handle_rwlock_rdlock_stop(); break; case EZTRACE_RWLOCK_WRLOCK_START: handle_rwlock_wrlock_start(); break; case EZTRACE_RWLOCK_WRLOCK_STOP: handle_rwlock_wrlock_stop(); break; case EZTRACE_RWLOCK_UNLOCK: handle_rwlock_unlock(); break; case EZTRACE_BARRIER_START: handle_barrier_start(); break; case EZTRACE_BARRIER_STOP: handle_barrier_stop(); break; default: return 0; } return 1; } int handle_pthread_stats(eztrace_event_t *ev) { recording_stats = 1; return handle_pthread_events(ev); } void print_pthread_stats() { printf("\nPThread:\n"); printf("-------\n"); /* todo: * add: * - min/max/average duration of critical sections * - min/max/average delay to get a lock */ int i; for (i = 0; i < NB_TRACES; i++) { struct process_info_t *p_process = GET_PROCESS_INFO(i); struct pthread_process_info_t *p_info = (struct pthread_process_info_t*) ezt_hook_list_retrieve_data( &p_process->hooks, (uint8_t) EZTRACE_PTHREAD_EVENTS_ID); if (!p_info) continue; uint32_t nb_acquire = 0; uint32_t nb_locks = 0; printf("%s:\n", p_process->container->name); ezt_stack_token_t *token; ezt_list_foreach(&p_info->lock_list, token) { struct pthread_lock_info_t * lock = (struct pthread_lock_info_t *) token->data; nb_acquire += lock->nb_acquire; nb_locks++; char lock_type[80]; __lock_type_to_str(lock_type, lock->lock); printf("\t%s 0x%p was acquired %d times.", lock_type, (void*)lock->ptr, lock->nb_acquire); if (lock->duration_critical_section) printf(" total duration of critical_sections: %lf ms.", lock->duration_critical_section); if (lock->duration_acquire) printf(" total time spent waiting: %lf ms.", lock->duration_acquire); printf("\n"); } printf("Total: %d locks acquired %d times\n", nb_locks, nb_acquire); __free_lock_info_list(p_info); } double total_duration_acquire[NB_LOCK_TYPES]; /* time spent in waiting for a lock */ double total_duration_critical_section[NB_LOCK_TYPES]; /* time spent in a critical section */ int l; for(l=0; lnb_children; j++) { struct eztrace_container_t* p_thread = p_cont->children[j]; struct thread_info_t *ptr = (struct thread_info_t*)(p_thread->container_info); struct pthread_thread_info_t *t_info = (struct pthread_thread_info_t*) ezt_hook_list_retrieve_data(&ptr->hooks, (uint8_t)EZTRACE_PTHREAD_EVENTS_ID); if(!t_info) continue; int l; int should_skip=1; for(l=0; lduration_acquire[l] || t_info->duration_critical_section[l]) { should_skip=0; } } if(should_skip) { continue; } printf("\nThread %s\n", p_thread->name); for(l=0; lduration_acquire[l]) { char lock_type[80]; __lock_type_to_str(lock_type, l); printf("\ttime spent waiting on a %s: %lf ms\n", lock_type, t_info->duration_acquire[l]); total_duration_acquire[l] += t_info->duration_acquire[l]; } if(t_info->duration_critical_section[l]) { char lock_type[80]; __lock_type_to_str(lock_type, l); printf("\ttime spent in a %s critical: %lf ms\n", lock_type, t_info->duration_critical_section[l]); total_duration_critical_section[l] += t_info->duration_critical_section[l]; } } } printf("\nTotal for %s\n", p_cont->name); int l; for(l=0; l #include "mpi_ev_codes.h" #include "eztrace_list.h" #include "eztrace_convert.h" #include "eztrace_convert_mpi.h" #include "eztrace_convert_mpi_p2p.h" #include "eztrace_hierarchical_array.h" /* compute point to point messages statistics and print them */ void print_p2p_stats(); /* initialize MPI statistics module */ void init_mpi_stats(); /* dump to disk the list of messages */ void mpi_stats_dump(); void mpi_stats_plot_message_size(); #endif /* EZTRACE_STATS_MPI_H */ eztrace-1.1-7/src/modules/mpi/PaxHeaders.7332/eztrace_convert_mpi_coll.h0000644000000000000000000000013113143047722023101 xustar0030 mtime=1502367698.660456018 29 atime=1508138890.28427776 30 ctime=1508162368.089938414 eztrace-1.1-7/src/modules/mpi/eztrace_convert_mpi_coll.h0000644000175000017500000000316113143047722024272 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef EZTRACE_CONVERT_MPI_COLL_H #define EZTRACE_CONVERT_MPI_COLL_H #include #include "mpi_ev_codes.h" #include "eztrace_convert.h" #include "eztrace_convert_mpi.h" #include "eztrace_hierarchical_array.h" struct mpi_pending_coll_comm { struct ezt_list_token_t token; struct mpi_coll_msg_t *msg; }; struct coll_msg_event { uint64_t time; int my_rank; struct mpi_coll_msg_t *msg; }; #define EZTRACE_MPI_COLL_ID (EZTRACE_MPI_PREFIX | 0x1001) #define EZTRACE_MPI_COLL_ENTER_ID (EZTRACE_MPI_PREFIX | 0x1010) #define EZTRACE_MPI_COLL_LEAVE_ID (EZTRACE_MPI_PREFIX | 0x1011) #define EZTRACE_MPI_STATS_COLL_ID (EZTRACE_MPI_PREFIX | 0x1100) #define EZTRACE_MPI_STATS_COLL_MSG_ID (EZTRACE_MPI_PREFIX | 0x1101) void init_mpi_coll_messages(); void print_coll_stats(); void __print_coll_message(FILE*stream, struct mpi_coll_msg_t *msg); void __print_coll_messages_recurse(FILE*stream, unsigned depth, p_eztrace_container p_cont); void __print_coll_messages(FILE*stream); void ezt_mpi_dump_coll_messages(); struct mpi_coll_msg_t* __enter_coll(uint64_t time, enum coll_type_t type, struct ezt_mpi_comm *comm, int my_rank, int data_size, struct mpi_request *req, char* thread_id); struct mpi_coll_msg_t* __leave_coll(uint64_t time, enum coll_type_t type, struct ezt_mpi_comm *comm, int my_rank, struct mpi_request *req, char* thread_id); #endif /* EZTRACE_CONVERT_MPI_COLL_H */ eztrace-1.1-7/src/modules/mpi/PaxHeaders.7332/mpi_eztrace.h0000644000000000000000000000013212544237152020333 xustar0030 mtime=1435582058.563899951 30 atime=1508138890.044271766 30 ctime=1508162368.025932821 eztrace-1.1-7/src/modules/mpi/mpi_eztrace.h0000644000175000017500000003575412544237152021540 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef MPI_EZTRACE_H #define MPI_EZTRACE_H #include #include #include "mpi.h" #if MPI_VERSION >= 3 /* Use MPI 3 */ /* In MPI3, the prototype of some MPI functions have change. * For instance, in MPI2.X, the prototype of MPI_Send was: * int MPI_Send(void* buffer, [...]); * In MPI3, MPI_Send is defined as: * int MPI_Send(const void* buffer, [...]); * In order to fix this prototype issue, let's define a CONST macro */ #define CONST const #ifndef USE_MPI3 #define USE_MPI3 #endif #else /* This is MPI 2.X */ #define CONST #ifdef USE_MPI3 #undef USE_MPI3 #endif #endif /* maximum number of items to be allocated statically * if the application need more than this, a dynamic array * is allocated using malloc() */ #define MAX_REQS 128 /* allocate a number of elements using a static array if possible * if not possible (ie. count>MAX_REQS) use a dynamic array (ie. malloc) */ #define ALLOCATE_ITEMS(type, count, static_var, dyn_var) \ type static_var[MAX_REQS]; \ type *dyn_var = static_var; \ if((count) > MAX_REQS) \ dyn_var = (type*) malloc(sizeof(type)*(count)) /* Free an array created by ALLOCATE_ITEMS */ #define FREE_ITEMS(count, dyn_var) \ if((count) > MAX_REQS) \ free(dyn_var) /* convert a C request (ie. a pointer to a MPI_Request structure) * to an integer */ //#define EZTRACE_REQ(r) MPI_Request_c2f(*(r)) /* pointers to actual MPI functions (C version) */ extern int (*libMPI_Init)(int *, char ***); extern int (*libMPI_Init_thread)(int *, char ***, int, int*); extern int (*libMPI_Comm_size)(MPI_Comm, int *); extern int (*libMPI_Comm_rank)(MPI_Comm, int *); extern int (*libMPI_Finalize)(void); extern int (*libMPI_Initialized)(int *); extern int (*libMPI_Abort)(MPI_Comm, int); extern int (*libMPI_Cancel)( MPI_Request*); extern int (*libMPI_Send)(CONST void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm); extern int (*libMPI_Recv)(void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status); extern int (*libMPI_Bsend)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm); extern int (*libMPI_Ssend)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm); extern int (*libMPI_Rsend)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm); extern int (*libMPI_Isend)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); extern int (*libMPI_Ibsend)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); extern int (*libMPI_Issend)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); extern int (*libMPI_Irsend)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); extern int (*libMPI_Irecv)(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); extern int (*libMPI_Sendrecv)(CONST void *, int, MPI_Datatype, int, int, void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *); extern int (*libMPI_Sendrecv_replace)(void*, int, MPI_Datatype, int, int, int, int, MPI_Comm, MPI_Status *); extern int (*libMPI_Send_init)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); extern int (*libMPI_Bsend_init)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); extern int (*libMPI_Ssend_init)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); extern int (*libMPI_Rsend_init)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); extern int (*libMPI_Recv_init)(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); extern int (*libMPI_Start)(MPI_Request *); extern int (*libMPI_Startall)(int, MPI_Request *); extern int (*libMPI_Wait)(MPI_Request *, MPI_Status *); extern int (*libMPI_Test)(MPI_Request *, int *, MPI_Status *); extern int (*libMPI_Waitany)(int, MPI_Request *, int *, MPI_Status *); extern int (*libMPI_Testany)(int, MPI_Request *, int *, int *, MPI_Status *); extern int (*libMPI_Waitall)(int, MPI_Request *, MPI_Status *); extern int (*libMPI_Testall)(int, MPI_Request *, int *, MPI_Status *); extern int (*libMPI_Waitsome)(int, MPI_Request *, int *, int *, MPI_Status *); extern int (*libMPI_Testsome)(int, MPI_Request *, int *, int *, MPI_Status *); extern int (*libMPI_Probe)(int source, int tag, MPI_Comm comm, MPI_Status *status); extern int (*libMPI_Iprobe)(int source, int tag, MPI_Comm comm, int *flag, MPI_Status *status); extern int (*libMPI_Barrier)(MPI_Comm); extern int (*libMPI_Bcast)(void*, int, MPI_Datatype, int, MPI_Comm); extern int (*libMPI_Gather)(CONST void*, int, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm); extern int (*libMPI_Gatherv)(CONST void*, int, MPI_Datatype, void*, CONST int *, CONST int *, MPI_Datatype, int, MPI_Comm); extern int (*libMPI_Scatter)(CONST void*, int, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm); extern int (*libMPI_Scatterv)(CONST void*, CONST int *, CONST int *, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm); extern int (*libMPI_Allgather)(CONST void*, int, MPI_Datatype, void*, int, MPI_Datatype, MPI_Comm); extern int (*libMPI_Allgatherv)(CONST void*, int, MPI_Datatype, void*, CONST int *, CONST int *, MPI_Datatype, MPI_Comm); extern int (*libMPI_Alltoall)(CONST void*, int, MPI_Datatype, void*, int, MPI_Datatype, MPI_Comm); extern int (*libMPI_Alltoallv)(CONST void*, CONST int *, CONST int *, MPI_Datatype, void*, CONST int *, CONST int *, MPI_Datatype, MPI_Comm); extern int (*libMPI_Reduce)(CONST void*, void*, int, MPI_Datatype, MPI_Op, int, MPI_Comm); extern int (*libMPI_Allreduce)(CONST void*, void*, int, MPI_Datatype, MPI_Op, MPI_Comm); extern int (*libMPI_Reduce_scatter)(CONST void*, void*, CONST int *, MPI_Datatype, MPI_Op, MPI_Comm); extern int (*libMPI_Scan)(CONST void*, void*, int, MPI_Datatype, MPI_Op, MPI_Comm); #ifdef USE_MPI3 extern int ( *libMPI_Ibarrier)(MPI_Comm, MPI_Request*); extern int ( *libMPI_Ibcast)(void*, int, MPI_Datatype, int, MPI_Comm, MPI_Request*); extern int ( *libMPI_Igather) (const void*, int, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm, MPI_Request*); extern int ( *libMPI_Igatherv) (const void*, int, MPI_Datatype, void*, const int *, const int *, MPI_Datatype, int, MPI_Comm, MPI_Request*); extern int ( *libMPI_Iscatter) (const void*, int, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm, MPI_Request*); extern int ( *libMPI_Iscatterv) (const void*, const int *, const int *, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm, MPI_Request*); extern int ( *libMPI_Iallgather) (const void*, int, MPI_Datatype, void*, int, MPI_Datatype, MPI_Comm, MPI_Request*); extern int ( *libMPI_Iallgatherv) (const void*, int, MPI_Datatype, void*, const int *, const int *, MPI_Datatype, MPI_Comm, MPI_Request*); extern int ( *libMPI_Ialltoall) (const void*, int, MPI_Datatype, void*, int, MPI_Datatype, MPI_Comm, MPI_Request*); extern int ( *libMPI_Ialltoallv) (const void*, const int *, const int *, MPI_Datatype, void*, const int *, const int *, MPI_Datatype, MPI_Comm, MPI_Request*); extern int ( *libMPI_Ireduce) (const void* , void*, int, MPI_Datatype, MPI_Op, int, MPI_Comm, MPI_Request*); extern int ( *libMPI_Iallreduce) (const void*, void*, int, MPI_Datatype, MPI_Op, MPI_Comm, MPI_Request*); extern int ( *libMPI_Ireduce_scatter) (const void*, void*, const int *, MPI_Datatype, MPI_Op, MPI_Comm, MPI_Request*); extern int ( *libMPI_Iscan) (const void*, void*, int, MPI_Datatype, MPI_Op, MPI_Comm, MPI_Request*); #endif extern int (*libMPI_Get)(void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype, MPI_Win); extern int (*libMPI_Put)(CONST void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype, MPI_Win); extern int (*libMPI_Comm_spawn)(CONST char *command, char *argv[], int maxprocs, MPI_Info info, int root, MPI_Comm comm, MPI_Comm *intercomm, int array_of_errcodes[]); /* fortran bindings */ extern void (*libmpi_init_)(int*e); extern void (*libmpi_init_thread_)(int*, int*, int*); extern void (*libmpi_finalize_)(int*); extern void (*libmpi_barrier_)(MPI_Comm*, int*); extern void (*libmpi_comm_size_)(MPI_Comm*, int*, int*); extern void (*libmpi_comm_rank_)(MPI_Comm*, int*, int*); extern void (*libmpi_cancel_)(MPI_Request*, int*); extern void (*libmpi_send_)(void*, int*, MPI_Datatype*, int*, int*, int*); extern void (*libmpi_recv_)(void*, int*, MPI_Datatype*, int*, int *, MPI_Status *, int*); extern void (*libmpi_sendrecv_)(void *, int, MPI_Datatype, int, int, void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *, int*); extern void (*libmpi_sendrecv_replace_)(void*, int, MPI_Datatype, int, int, int, int, MPI_Comm, MPI_Status *, int*); extern void (*libmpi_bsend_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, int*); extern void (*libmpi_ssend_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, int*); extern void (*libmpi_rsend_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, int*); extern void (*libmpi_isend_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, MPI_Request*, int*); extern void (*libmpi_ibsend_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, MPI_Request*, int*); extern void (*libmpi_issend_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, MPI_Request *, int*); extern void (*libmpi_irsend_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, MPI_Request *, int*); extern void (*libmpi_irecv_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, MPI_Request *, int*); extern void (*libmpi_wait_)(MPI_Request*, MPI_Status*, int*); extern void (*libmpi_test_)(MPI_Request*, int*, MPI_Status*, int*); extern void (*libmpi_waitany_)(int*, MPI_Request *, int *, MPI_Status *, int*); extern void (*libmpi_testany_)(int*, MPI_Request *, int *, int *, MPI_Status *, int*); extern void (*libmpi_waitall_)(int*, MPI_Request *, MPI_Status *, int*); extern void (*libmpi_testall_)(int*, MPI_Request *, int *, MPI_Status *, int*); extern void (*libmpi_waitsome_)(int*, MPI_Request *, int *, int *, MPI_Status *, int*); extern void (*libmpi_testsome_)(int*, MPI_Request *, int *, int *, MPI_Status *, int*); extern void (*libmpi_probe_)(int* source, int* tag, MPI_Comm* comm, MPI_Status *status, int* err); extern void (*libmpi_iprobe_)(int* source, int* tag, MPI_Comm* comm, int *flag, MPI_Status *status, int* err); extern void (*libmpi_get_)(void *, int*, MPI_Datatype*, int*, MPI_Aint*, int*, MPI_Datatype*, MPI_Win*, int*); extern void (*libmpi_put_)(void *, int*, MPI_Datatype*, int*, MPI_Aint*, int*, MPI_Datatype*, MPI_Win*, int*); extern void (*libmpi_bcast_)(void*, int*, MPI_Datatype*, int*, MPI_Comm*, int*); extern void (*libmpi_gather_)(void*, int*, MPI_Datatype*, void*, int*, MPI_Datatype*, int*, MPI_Comm*, int*); extern void (*libmpi_gatherv_)(void*, int*, MPI_Datatype*, void*, int*, int*, MPI_Datatype*, int*, MPI_Comm*); extern void (*libmpi_scatter_)(void*, int*, MPI_Datatype*, void*, int*, MPI_Datatype*, int*, MPI_Comm*, int*); extern void (*libmpi_scatterv_)(void*, int*, int*, MPI_Datatype*, void*, int*, MPI_Datatype*, int*, MPI_Comm*, int*); extern void (*libmpi_allgather_)(void*, int*, MPI_Datatype*, void*, int*, MPI_Datatype*, MPI_Comm*, int*); extern void (*libmpi_allgatherv_)(void*, int*, MPI_Datatype*, void*, int*, int*, MPI_Datatype*, MPI_Comm*); extern void (*libmpi_alltoall_)(void*, int*, MPI_Datatype*, void*, int*, MPI_Datatype*, MPI_Comm*, int*); extern void (*libmpi_alltoallv_)(void*, int*, int*, MPI_Datatype*, void*, int*, int*, MPI_Datatype*, MPI_Comm*, int*); extern void (*libmpi_reduce_)(void*, void*, int*, MPI_Datatype*, MPI_Op*, int*, MPI_Comm*, int*); extern void (*libmpi_allreduce_)(void*, void*, int*, MPI_Datatype*, MPI_Op*, MPI_Comm*, int*); extern void (*libmpi_reduce_scatter_)(void*, void*, int*, MPI_Datatype*, MPI_Op*, MPI_Comm*, int*); extern void (*libmpi_scan_)(void*, void*, int*, MPI_Datatype*, MPI_Op*, MPI_Comm*, int*); extern void (*libmpi_comm_spawn_)(char *command, char **argv, int *maxprocs, MPI_Info *info, int *root, MPI_Comm *comm, MPI_Comm *intercomm, int *array_of_errcodes, int*error); extern void (*libmpi_send_init_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, MPI_Request *, int*); extern void (*libmpi_bsend_init_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, MPI_Request *, int*); extern void (*libmpi_ssend_init_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, MPI_Request *, int*); extern void (*libmpi_rsend_init_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, MPI_Request *, int*); extern void (*libmpi_recv_init_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, MPI_Request *, int*); extern void (*libmpi_start_)(MPI_Request *, int*); extern void (*libmpi_startall_)(int*, MPI_Request *, int*); /* return 1 if buf corresponds to the Fotran MPI_IN_PLACE * return 0 otherwise */ int ezt_mpi_is_in_place_(void* buf ); /* check the value of a Fortran pointer and return MPI_IN_PLACE or p */ #define CHECK_MPI_IN_PLACE(p) (ezt_mpi_is_in_place_(p)?MPI_IN_PLACE:(p)) #endif /* MPI_EZTRACE_H */ eztrace-1.1-7/src/modules/mpi/PaxHeaders.7332/eztrace_stats_mpi.c0000644000000000000000000000013213143047722021542 xustar0030 mtime=1502367698.664456116 30 atime=1508138890.168274863 30 ctime=1508162368.093938763 eztrace-1.1-7/src/modules/mpi/eztrace_stats_mpi.c0000644000175000017500000005675413143047722022752 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE #include #include #include #include #include "eztrace_stats_core.h" #include "eztrace_stats_mpi.h" #include "mpi_ev_codes.h" #include "eztrace_list.h" #include "eztrace_convert.h" #include "eztrace_convert_mpi.h" #include "eztrace_convert_mpi_p2p.h" #include "eztrace_convert_mpi_coll.h" #include "eztrace_hierarchical_array.h" #include "eztrace_array.h" struct mpi_p2p_stat_t { int nb_messages; /* size of sent messages */ struct stat_uint64_t_counter_t size; /* time spent sending messages */ struct stat_double_counter_t scomm_duration; /* time spent computing while sending messages */ struct stat_double_counter_t soverlap_duration; /* time spent in MPI_Send or waiting for a Isend to complete */ struct stat_double_counter_t swait_duration; /* time spent receiving messages */ struct stat_double_counter_t rcomm_duration; /* time spending computing while waiting for an incoming message */ struct stat_double_counter_t roverlap_duration; /* time spent in MPI_Recv or waiting for a Irecv to complete */ struct stat_double_counter_t rwait_duration; }; struct mpi_coll_stat_t { int nb_messages; /* size of sent messages */ struct stat_uint64_t_counter_t size; /* time spent computing while sending/receiving messages */ /* TODO: add the overlapped time */ // struct stat_double_counter_t overlap_duration; /* time spent blocked in the collective */ struct stat_double_counter_t wait_duration; }; struct __mpi_stats_matrix_item { uint64_t total_len; int nb_messages; }; struct __mpi_stats_freq_item { int len; int nb_occur; }; struct eztrace_array_t __mpi_stats_freq; struct __mpi_stats_matrix_item **__mpi_stats_comm_matrix = NULL; struct __mpi_stats_matrix_item **__mpi_stats_comm_matrix_coll = NULL; /* find a len in the frequency table */ static struct __mpi_stats_freq_item* __find_freq_item(int len) { struct __mpi_stats_freq_item* ret = NULL; unsigned i; for (i = 0; i < __mpi_stats_freq.nb_items; i++) { ret = ITH_VALUE(i, &__mpi_stats_freq); if (ret->len == len) return ret; } /* can't find the specified len, allocate a new item */ ret = eztrace_array_new_value(&__mpi_stats_freq); ret->len = len; ret->nb_occur = 0; return ret; } /* update the communication matrix and the frequency table for p2p messages */ static void __update_p2p_message_stats(int src, int dest, int len, int __attribute__((unused)) tag) { __mpi_stats_comm_matrix[src][dest].nb_messages++; __mpi_stats_comm_matrix[src][dest].total_len += len; struct __mpi_stats_freq_item* freq_item = __find_freq_item(len); assert(freq_item->len == len); freq_item->nb_occur++; } /* update the communication matrix for collective messages */ static void __update_coll_message_stats(int src, int dest, int len, enum coll_type_t type) { __mpi_stats_comm_matrix_coll[src][dest].nb_messages++; __mpi_stats_comm_matrix_coll[src][dest].total_len += len; } static void __print_stat_double_counter(struct stat_double_counter_t *counter, int count) { printf("\tmin: %lf", counter->min); printf("\tmax: %lf", counter->max); printf("\taverage: %lf", counter->sum / count); printf("\ttotal: %lf", counter->sum); } static void __print_stat_int_counter(struct stat_uint64_t_counter_t *counter, int count) { printf("\tmin: %lu", counter->min); printf("\tmax: %lu", counter->max); printf("\taverage: %lu", counter->sum / count); printf("\ttotal: %lu", counter->sum); } static void __init_mpi_p2p_stat_t(struct mpi_p2p_stat_t* counter) { counter->nb_messages = 0; __init_stat_counter(uint64_t, &counter->size); __init_stat_counter(double, &counter->scomm_duration); __init_stat_counter(double, &counter->soverlap_duration); __init_stat_counter(double, &counter->swait_duration); __init_stat_counter(double, &counter->rcomm_duration); __init_stat_counter(double, &counter->roverlap_duration); __init_stat_counter(double, &counter->rwait_duration); } static void __init_mpi_coll_stat_t(struct mpi_coll_stat_t* counter) { counter->nb_messages = 0; __init_stat_counter(uint64_t, &counter->size); // __init_stat_counter(double, &counter->overlap_duration); __init_stat_counter(double, &counter->wait_duration); } static void __p2p_stats_reduce_recurse(unsigned depth, int rank, p_eztrace_container p_cont) { assert(p_cont); struct mpi_p2p_stat_t* counter = hierarchical_array_new_item( p_cont, EZTRACE_MPI_STATS_P2P_ID); assert(counter); __init_mpi_p2p_stat_t(counter); unsigned i; /* compute the children stats */ for (i = 0; i < p_cont->nb_children; i++) { /* call recursively the function */ __p2p_stats_reduce_recurse(depth + 1, rank, p_cont->children[i]); struct hierarchical_array* child_array = hierarchical_array_find( EZTRACE_MPI_STATS_P2P_ID, p_cont->children[i]); assert(child_array); assert(child_array->nb_items); /* add the children stats to the container stats */ struct mpi_p2p_stat_t*child_counter = ITH_ITEM(0, child_array); counter->nb_messages += child_counter->nb_messages; __reduce_stat_counter(uint64_t, &counter->size, &child_counter->size); __reduce_stat_counter(double, &counter->scomm_duration, &child_counter->scomm_duration); __reduce_stat_counter(double, &counter->soverlap_duration, &child_counter->soverlap_duration); __reduce_stat_counter(double, &counter->swait_duration, &child_counter->swait_duration); __reduce_stat_counter(double, &counter->rcomm_duration, &child_counter->rcomm_duration); __reduce_stat_counter(double, &counter->roverlap_duration, &child_counter->roverlap_duration); __reduce_stat_counter(double, &counter->rwait_duration, &child_counter->rwait_duration); } /* compute statistics for the current container */ unsigned index; /* sent messages */ struct hierarchical_array* array = hierarchical_array_find( EZTRACE_MPI_P2P_ISEND_ID, p_cont); assert(array); for (index = 0; index < array->nb_items; index++) { struct p2p_msg_event *msg = NULL; msg = ITH_ITEM(index, array); assert(msg); counter->nb_messages++; __update_stat_counter(uint64_t, &counter->size, (uint64_t )msg->msg->len); __update_p2p_message_stats(msg->msg->src, msg->msg->dest, msg->msg->len, msg->msg->tag); /* compute communication durations */ __update_stat_counter( double, &counter->scomm_duration, (double ) (msg->msg->times[stop_send] - msg->msg->times[start_isend]) / 1000000); __update_stat_counter( double, &counter->soverlap_duration, (double ) (msg->msg->times[start_swait] - msg->msg->times[stop_isend]) / 1000000); __update_stat_counter( double, &counter->swait_duration, (double ) (msg->msg->times[stop_send] - msg->msg->times[start_swait]) / 1000000); } /* received messages */ array = hierarchical_array_find(EZTRACE_MPI_P2P_IRECV_ID, p_cont); assert(array); for (index = 0; index < array->nb_items; index++) { struct p2p_msg_event *msg = NULL; msg = ITH_ITEM(index, array); assert(msg); /* compute communication durations */ __update_stat_counter( double, &counter->rcomm_duration, (double ) (msg->msg->times[stop_recv] - msg->msg->times[start_irecv]) / 1000000); __update_stat_counter( double, &counter->roverlap_duration, (double ) (msg->msg->times[start_rwait] - msg->msg->times[stop_irecv]) / 1000000); __update_stat_counter( double, &counter->rwait_duration, (double ) (msg->msg->times[stop_recv] - msg->msg->times[start_rwait]) / 1000000); } } static void __p2p_stats_print_recurse(unsigned depth, p_eztrace_container p_cont) { assert(p_cont); struct hierarchical_array* array = hierarchical_array_find( EZTRACE_MPI_STATS_P2P_ID, p_cont); assert(array); struct mpi_p2p_stat_t* counter = ITH_ITEM(0, array); assert(counter); unsigned i; if (counter->nb_messages) { double mpi_time = 0; /* time spent in MPI */ /* Print the current container stats */ printf("\n"); for (i = 0; i < depth; i++) printf(" "); printf("%s -- \t%d messages sent\n", p_cont->name, counter->nb_messages); for (i = 0; i < depth; i++) printf(" "); printf("\tSize of messages (byte):"); __print_stat_int_counter(&counter->size, counter->nb_messages); printf("\n"); /* sent messages */ for (i = 0; i < depth; i++) printf(" "); printf("\tTime spent sending messages (ms):"); __print_stat_double_counter(&counter->scomm_duration, counter->nb_messages); printf("\n"); for (i = 0; i < depth; i++) printf(" "); printf("\tTime spent computing while sending messages (ms):"); __print_stat_double_counter(&counter->soverlap_duration, counter->nb_messages); printf("\n"); for (i = 0; i < depth; i++) printf(" "); printf("\tTime spent in MPI_Send or waiting for a Isend to complete (ms):"); mpi_time += counter->swait_duration.sum; __print_stat_double_counter(&counter->swait_duration, counter->nb_messages); printf("\n"); /* received messages */ for (i = 0; i < depth; i++) printf(" "); printf("\tTime spent receiving messages (ms):"); __print_stat_double_counter(&counter->rcomm_duration, counter->nb_messages); printf("\n"); for (i = 0; i < depth; i++) printf(" "); printf("\tTime spent computing while receiving messages (ms):"); __print_stat_double_counter(&counter->roverlap_duration, counter->nb_messages); printf("\n"); for (i = 0; i < depth; i++) printf(" "); printf("\tTime spent in MPI_Recv or waiting for a Irecv to complete (ms):"); mpi_time += counter->rwait_duration.sum; __print_stat_double_counter(&counter->rwait_duration, counter->nb_messages); printf("\n"); /* call the container children so that they print their values */ for (i = 0; i < p_cont->nb_children; i++) { __p2p_stats_print_recurse(depth + 1, p_cont->children[i]); } } } /* print point to point messages statistics */ static void __p2p_stats_print() { int rank; for (rank = 0; rank < NB_TRACES; rank++) { p_eztrace_container p_cont = GET_PROCESS_CONTAINER(rank); __p2p_stats_print_recurse(0, p_cont); } } int dump_comm_matrix_nb_msg = 0; int dump_comm_matrix_msg_size = 0; static void __create_comm_matrix_gnuplot(const char* data_prefix) { char* path; asprintf(&path, "%s.gp", data_prefix); FILE *out = fopen(path, "w+"); fprintf(out, "set terminal png\n"); fprintf(out, "set output \"%s.png\"\n", data_prefix); fprintf(out, "set xtics 1\n"); fprintf(out, "set ytics 1\n"); fprintf(out, "set xrange [ -0.5 : %d.5]\n", NB_TRACES-1); fprintf(out, "set yrange [ -0.5 : %d.5]\n", NB_TRACES-1); fprintf(out, "plot \"%s.dat\" matrix with image\n", data_prefix); fclose(out); free(path); } static void __p2p_print_communication_matrix_nb_messages() { int src, dest; if (dump_comm_matrix_nb_msg) { char* prefix; asprintf(&prefix, "%s/communication_matrix_p2p.nb_messages", eztrace_stats_get_output_dir()); char* path; asprintf(&path, "%s.dat", prefix); FILE *out = fopen(path, "w+"); for (src = 0; src < NB_TRACES; src++) { for (dest = 0; dest < NB_TRACES; dest++) { fprintf(out, "%d ", __mpi_stats_comm_matrix[src][dest].nb_messages); } fprintf(out, "\n"); } fclose(out); printf("\tThe communication matrix (number of message) has been dumped in %s\n", path); __create_comm_matrix_gnuplot(prefix); free(prefix); free(path); } } static void __p2p_print_communication_matrix_message_size() { int src, dest; if (dump_comm_matrix_msg_size) { char* prefix; asprintf(&prefix, "%s/communication_matrix_p2p.message_size", eztrace_stats_get_output_dir()); char* path; asprintf(&path, "%s.dat", prefix); FILE *out = fopen(path, "w+"); for (src = 0; src < NB_TRACES; src++) { for (dest = 0; dest < NB_TRACES; dest++) { fprintf(out, "%ld ", __mpi_stats_comm_matrix[src][dest].total_len); } fprintf(out, "\n"); } fclose(out); printf("\tThe communication matrix (message size) has been dumped in %s\n", path); __create_comm_matrix_gnuplot(prefix); free(path); free(prefix); } } static void __all_print_communication_matrix_nb_messages() { int src, dest; if (dump_comm_matrix_nb_msg) { char* prefix; asprintf(&prefix, "%s/communication_matrix_all.nb_messages", eztrace_stats_get_output_dir()); char* path; asprintf(&path, "%s.dat", prefix); FILE *out = fopen(path, "w+"); for (src = 0; src < NB_TRACES; src++) { for (dest = 0; dest < NB_TRACES; dest++) { fprintf(out, "%d ", __mpi_stats_comm_matrix[src][dest].nb_messages + __mpi_stats_comm_matrix_coll[src][dest].nb_messages); } fprintf(out, "\n"); } fclose(out); printf("\tThe communication matrix (number of message) has been dumped in %s\n", path); __create_comm_matrix_gnuplot(prefix); free(prefix); free(path); } } static void __all_print_communication_matrix_message_size() { int src, dest; if (dump_comm_matrix_msg_size) { char* prefix; asprintf(&prefix, "%s/communication_matrix_all.message_size", eztrace_stats_get_output_dir()); char* path; asprintf(&path, "%s.dat", prefix); FILE *out = fopen(path, "w+"); for (src = 0; src < NB_TRACES; src++) { for (dest = 0; dest < NB_TRACES; dest++) { fprintf(out, "%ld ", __mpi_stats_comm_matrix[src][dest].total_len + __mpi_stats_comm_matrix_coll[src][dest].total_len); } fprintf(out, "\n"); } fclose(out); printf("\tThe communication matrix (message size) has been dumped in %s\n", path); __create_comm_matrix_gnuplot(prefix); free(path); free(prefix); } } static void __coll_print_communication_matrix_nb_messages() { int src, dest; if (dump_comm_matrix_nb_msg) { char* prefix; asprintf(&prefix, "%s/communication_matrix_collective.nb_messages", eztrace_stats_get_output_dir()); char* path; asprintf(&path, "%s.dat", prefix); FILE *out = fopen(path, "w+"); for (src = 0; src < NB_TRACES; src++) { for (dest = 0; dest < NB_TRACES; dest++) { fprintf(out, "%d ", __mpi_stats_comm_matrix_coll[src][dest].nb_messages); } fprintf(out, "\n"); } fclose(out); printf("\tThe communication matrix (number of collective messages) has been dumped in %s\n", path); __create_comm_matrix_gnuplot(prefix); free(prefix); free(path); } } static void __coll_print_communication_matrix_message_size() { int src, dest; if (dump_comm_matrix_msg_size) { char* prefix; asprintf(&prefix, "%s/communication_matrix_collective.message_size", eztrace_stats_get_output_dir()); char* path; asprintf(&path, "%s.dat", prefix); FILE *out = fopen(path, "w+"); for (src = 0; src < NB_TRACES; src++) { for (dest = 0; dest < NB_TRACES; dest++) { fprintf(out, "%ld ", __mpi_stats_comm_matrix_coll[src][dest].total_len); } fprintf(out, "\n"); } fclose(out); printf("\tThe communication matrix (collective messages size) has been dumped in %s\n", path); __create_comm_matrix_gnuplot(prefix); free(path); free(prefix); } } static void __coll_stats_reduce_recurse(unsigned depth, int rank, p_eztrace_container p_cont) { assert(p_cont); struct mpi_coll_stat_t* counter = hierarchical_array_new_item(p_cont, EZTRACE_MPI_STATS_COLL_ID); assert(counter); __init_mpi_coll_stat_t(counter); unsigned i; /* compute the children stats */ for (i = 0; i < p_cont->nb_children; i++) { /* call recursively the function */ __coll_stats_reduce_recurse(depth + 1, rank, p_cont->children[i]); struct hierarchical_array* child_array = hierarchical_array_find( EZTRACE_MPI_STATS_COLL_ID, p_cont->children[i]); assert(child_array); assert(child_array->nb_items); /* add the children stats to the container stats */ struct mpi_coll_stat_t*child_counter = ITH_ITEM(0, child_array); counter->nb_messages += child_counter->nb_messages; __reduce_stat_counter(uint64_t, &counter->size, &child_counter->size); // __reduce_stat_counter(double, &counter->overlap_duration, // &child_counter->overlap_duration); __reduce_stat_counter(double, &counter->wait_duration, &child_counter->wait_duration); } /* compute statistics for the current container */ unsigned index; struct hierarchical_array* array = hierarchical_array_find(EZTRACE_MPI_STATS_COLL_MSG_ID, p_cont); assert(array); for (index = 0; index < array->nb_items; index++) { /* for each completed collective... */ struct coll_msg_event *msg = NULL; msg = ITH_ITEM(index, array); assert(msg); counter->nb_messages++; __update_stat_counter(uint64_t, &counter->size, (uint64_t )msg->msg->data_size); for(i=0; imsg->comm_size; i++) { __update_coll_message_stats(msg->my_rank, ezt_get_global_rank(msg->msg->comm[msg->my_rank], i), msg->msg->data_size, msg->msg->type); } /* compute communication durations */ __update_stat_counter( double, &counter->wait_duration, NS_TO_MS(msg->msg->times[msg->my_rank][stop_coll] - msg->msg->times[msg->my_rank][start_coll])); } } static void __coll_stats_print_recurse(unsigned depth, p_eztrace_container p_cont) { assert(p_cont); struct hierarchical_array* array = hierarchical_array_find( EZTRACE_MPI_STATS_COLL_ID, p_cont); assert(array); struct mpi_coll_stat_t* counter = ITH_ITEM(0, array); assert(counter); unsigned i; if (counter->nb_messages) { double mpi_time = 0; /* time spent in MPI */ /* Print the current container stats */ printf("\n"); for (i = 0; i < depth; i++) printf(" "); printf("%s -- \t%d collective messages\n", p_cont->name, counter->nb_messages); #if 0 /* TODO: add statistics on the size of messages */ for (i = 0; i < depth; i++) printf(" "); printf("\tSize of messages (byte):"); __print_stat_int_counter(&counter->size, counter->nb_messages); printf("\n"); #endif for (i = 0; i < depth; i++) printf(" "); printf("\tTime past in a collective operation (ms):"); __print_stat_double_counter(&counter->wait_duration, counter->nb_messages); printf("\n"); /* call the container children so that they print their values */ for (i = 0; i < p_cont->nb_children; i++) { __coll_stats_print_recurse(depth + 1, p_cont->children[i]); } } } /* print collective messages statistics */ static void __coll_stats_print() { int rank; for (rank = 0; rank < NB_TRACES; rank++) { p_eztrace_container p_cont = GET_PROCESS_CONTAINER(rank); __coll_stats_print_recurse(0, p_cont); } } /* compute collective messages statistics and print them */ void print_coll_stats() { __coll_stats_print(); __coll_print_communication_matrix_message_size(); __coll_print_communication_matrix_nb_messages(); } /* compute point to point messages statistics and print them */ void print_p2p_stats() { __p2p_stats_print(); dump_comm_matrix_nb_msg = 1; dump_comm_matrix_msg_size = 1; mpi_stats_dump(); printf("\n"); __p2p_print_communication_matrix_message_size(); __p2p_print_communication_matrix_nb_messages(); } /* compute point to point messages statistics */ static void __stats_reduce() { int rank; eztrace_array_create(&__mpi_stats_freq, sizeof(struct __mpi_stats_freq_item), 32); __mpi_stats_comm_matrix = malloc(sizeof(struct __mpi_stats_matrix_item*) * NB_TRACES); __mpi_stats_comm_matrix_coll = malloc(sizeof(struct __mpi_stats_matrix_item*) * NB_TRACES); for (rank = 0; rank < NB_TRACES; rank++) { __mpi_stats_comm_matrix[rank] = malloc(sizeof(struct __mpi_stats_matrix_item) * NB_TRACES); __mpi_stats_comm_matrix_coll[rank] = malloc(sizeof(struct __mpi_stats_matrix_item) * NB_TRACES); int i; for (i = 0; i < NB_TRACES; i++) { __mpi_stats_comm_matrix[rank][i].total_len = 0; __mpi_stats_comm_matrix[rank][i].nb_messages = 0; __mpi_stats_comm_matrix_coll[rank][i].total_len = 0; __mpi_stats_comm_matrix_coll[rank][i].nb_messages = 0; } } for (rank = 0; rank < NB_TRACES; rank++) { p_eztrace_container p_cont = GET_PROCESS_CONTAINER(rank); __p2p_stats_reduce_recurse(0, rank, p_cont); __coll_stats_reduce_recurse(0, rank, p_cont); } } /* initialize MPI statistics module */ void init_mpi_stats() { hierarchical_array_attach(EZTRACE_MPI_STATS_P2P_ID, sizeof(struct mpi_p2p_stat_t)); hierarchical_array_attach(EZTRACE_MPI_STATS_COLL_ID, sizeof(struct mpi_coll_stat_t)); /* todo: do the same for collective */ } /* dump to disk the list of messages */ void mpi_stats_dump() { char* env_str = getenv("EZTRACE_MPI_DUMP_MESSAGES"); if (env_str) { char* path; int res __attribute__ ((__unused__)); res = asprintf(&path, "%s/%s_eztrace_message_dump", eztrace_stats_get_output_dir(), getenv("USER")); FILE *f = fopen(path, "w"); if (!f) perror("Error while dumping messages"); __print_p2p_messages(f); int ret = fclose(f); if (ret) perror("Error while dumping messages (fclose)"); printf("\n\tMPI messages dumped in %s\n", path); free(path); ezt_mpi_dump_coll_messages(); } } void mpi_stats_plot_message_size() { char* data_path; char* gp_path; int res __attribute__ ((__unused__)); res = asprintf(&data_path, "%s/message_size.dat", eztrace_stats_get_output_dir()); FILE *out = fopen(data_path, "w+"); struct __mpi_stats_freq_item* ret = NULL; unsigned i; fprintf(out, "#Message_length #Number_of_messages\n"); for (i = 0; i < __mpi_stats_freq.nb_items; i++) { ret = ITH_VALUE(i, &__mpi_stats_freq); fprintf(out, "%d\t%d\n", ret->len, ret->nb_occur); } fclose(out); res = asprintf(&data_path, "%s/message_size.dat", eztrace_stats_get_output_dir()); res = asprintf(&gp_path, "%s/message_size.gp", eztrace_stats_get_output_dir()); out = fopen(gp_path, "w+"); fprintf(out, "set terminal png\n"); fprintf(out, "set output \"%s/message_size.png\"\n", eztrace_stats_get_output_dir()); fprintf(out, "set xlabel \"message size (B)\"\n"); fprintf(out, "set ylabel \"number of messages\"\n"); fprintf(out, "plot \"%s\" with linespoints\n", data_path); fclose(out); printf("\tThe distribution of message sizes has been dumped in %s\n", data_path); free(data_path); free(gp_path); } void print_mpi_msg_stats() { __stats_reduce(); print_p2p_stats(); printf("\n"); print_coll_stats(); printf("\n"); mpi_stats_plot_message_size(); printf("\n"); __all_print_communication_matrix_message_size(); __all_print_communication_matrix_nb_messages(); } eztrace-1.1-7/src/modules/mpi/PaxHeaders.7332/fortran_utils.f900000644000000000000000000000013212544237152021073 xustar0030 mtime=1435582058.563899951 30 atime=1508162330.670707814 30 ctime=1508162368.021932471 eztrace-1.1-7/src/modules/mpi/fortran_utils.f900000644000175000017500000000047512544237152022270 0ustar00trahaytrahay00000000000000! Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis ! See COPYING in top-level directory. integer function ezt_mpi_is_in_place( i ) include 'mpif.h' integer i ezt_mpi_is_in_place = 0 if( loc(i) .eq. loc(mpi_in_place) ) ezt_mpi_is_in_place = 1 return end function ezt_mpi_is_in_place eztrace-1.1-7/src/modules/mpi/PaxHeaders.7332/eztrace_convert_mpi_pers.c0000644000000000000000000000013212544237152023117 xustar0030 mtime=1435582058.563899951 30 atime=1508138890.120273663 30 ctime=1508162368.089938414 eztrace-1.1-7/src/modules/mpi/eztrace_convert_mpi_pers.c0000644000175000017500000000551712544237152024316 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telcom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE #include #include #include "mpi_ev_codes.h" #include "eztrace_convert.h" #include "eztrace_convert_mpi.h" #include "eztrace_hierarchical_array.h" #include "eztrace_convert_mpi_p2p.h" #include "eztrace_convert_mpi_pers.h" void init_mpi_pers_messages() { hierarchical_array_attach(MPI_PERS_ID, sizeof(struct mpi_coll_msg_t)); } void print_pers_stats(); void __print_pers_req(FILE __attribute__((unused)) *stream, struct mpi_pers_req_t __attribute__((unused)) *msg) { } void __print_pers_req_recurse(FILE*stream, unsigned depth, p_eztrace_container p_cont); void __print_all_pers_req(FILE*stream) { struct hierarchical_array* array = hierarchical_array_find(MPI_PERS_ID, NULL); struct mpi_pers_req_t* msg = NULL; unsigned index; for (index = 0; index < (array->nb_items); index++) { msg = ITH_ITEM(index, array); __print_pers_req(stream, msg); } } struct mpi_pers_req_t* __new_pers_req(enum mpi_request_type type, app_ptr buffer, int src, int dest, int len, int tag, app_ptr mpi_req) { struct mpi_pers_req_t* req = NULL; if (type == mpi_req_recv) { req = hierarchical_array_new_item(GET_PROCESS_CONTAINER(dest), MPI_PERS_ID); req->mpi_req = __mpi_new_mpi_request(dest, mpi_req, type); } else { req = hierarchical_array_new_item(GET_PROCESS_CONTAINER(src), MPI_PERS_ID); req->mpi_req = __mpi_new_mpi_request(src, mpi_req, type); } req->type = type; req->buffer = buffer; req->len = len; req->src = src; req->dest = dest; req->tag = tag; return req; } struct mpi_pers_req_t* __pers_init(uint64_t __attribute__((unused)) time, enum mpi_request_type type, app_ptr buffer, int src, int dest, int len, int tag, app_ptr mpi_req) { return __new_pers_req(type, buffer, src, dest, len, tag, mpi_req); } struct mpi_pers_req_t* __mpi_find_pers_req(p_eztrace_container p_cont, struct mpi_request* mpi_req) { struct hierarchical_array* array = hierarchical_array_find(MPI_PERS_ID, p_cont); struct mpi_pers_req_t* msg = NULL; int index; for (index = (array->nb_items) - 1; index >= 0; index--) { msg = ITH_ITEM(index, array); if (msg->mpi_req == mpi_req) { return msg; } } return NULL; } struct mpi_pers_req_t* __pers_start(uint64_t __attribute__((unused)) time, int rank, app_ptr mpi_req) { /* todo: record something ? (->number of messages sent with a pers_req ?) */ struct mpi_request* req = __mpi_find_mpi_req(rank, mpi_req, mpi_req_none); return __mpi_find_pers_req(GET_PROCESS_CONTAINER(rank), req); } eztrace-1.1-7/src/modules/mpi/PaxHeaders.7332/eztrace_convert_mpi_coll.c0000644000000000000000000000013213144773107023101 xustar0030 mtime=1502869063.853144974 30 atime=1508138890.052271966 30 ctime=1508162368.089938414 eztrace-1.1-7/src/modules/mpi/eztrace_convert_mpi_coll.c0000644000175000017500000003004213144773107024267 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE /* See feature_test_macros(7) */ #include #include #include "mpi_ev_codes.h" #include "eztrace_convert.h" #include "eztrace_convert_mpi.h" #include "eztrace_hierarchical_array.h" #include "eztrace_convert_mpi_coll.h" static struct ezt_list_t finished_collectives[mpi_coll_type_max]; void init_mpi_coll_messages() { hierarchical_array_attach(EZTRACE_MPI_STATS_COLL_MSG_ID, sizeof(struct coll_msg_event)); for(int i=0; itype), msg->root_process); int i; for (i = 0; i < msg->comm_size; i++) { fprintf(stream, "[%s %lu %lu] ", msg->thread_ids[i], msg->times[i][start_coll], msg->times[i][stop_coll]); } fprintf(stream, "\n"); } void __print_coll_messages_recurse(FILE*stream, unsigned depth, p_eztrace_container p_cont); void __print_coll_messages(FILE*stream) { int trace_index; struct ezt_list_token_t *token; for(trace_index=0; trace_indexpending_comm[comm_type_collective], token) { struct mpi_pending_coll_comm* p_comm = (struct mpi_pending_coll_comm*) token->data; struct mpi_coll_msg_t* msg = p_comm->msg; __print_coll_message(stream, msg); } } } void ezt_mpi_dump_coll_messages(FILE* stream) { for(int i=0; inb_item > 0) { char* path; int ret = asprintf(&path, "%s/mpi_collective_message_dump_%s", eztrace_stats_get_output_dir(), COLL_TYPE_STR(i)); FILE *f = fopen(path, "w"); if (!f) { perror("Error while dumping collective messages"); } __print_coll_message_header(f); ezt_list_foreach(l, token) { struct mpi_pending_coll_comm* p_comm = (struct mpi_pending_coll_comm*) token->data; struct mpi_coll_msg_t* msg = p_comm->msg; __print_coll_message(f, msg); } ret = fclose(f); if (ret) { perror("Error while dumping collective messages (fclose)"); } printf("\tMPI collective messages dumped in '%s'\n", path); free(path); } } } /* create a new collective message */ static struct mpi_coll_msg_t* __new_coll_message(enum coll_type_t type, struct ezt_mpi_comm *comm, int data_size) { struct mpi_coll_msg_t *msg = malloc(sizeof(struct mpi_coll_msg_t)); int comm_size = comm->comm_size; msg->type = type; msg->comm_size = comm_size; msg->comm = malloc(sizeof(struct ezt_mpi_comm*) * comm_size); int i; msg->data_size = data_size; msg->times = malloc(sizeof(uint64_t*) * comm_size); msg->thread_ids = malloc(sizeof(char*) * comm_size); msg->link_value = malloc(sizeof(char**) * comm_size); msg->link_id = malloc(sizeof(char**) * comm_size); msg->requests = malloc(sizeof(struct mpi_request *) * comm_size); msg->nb_started = 0; msg->root_process = -1; for (i = 0; i < comm_size; i++) { int j; msg->comm[i] = NULL; msg->thread_ids[i] = NULL; msg->link_value[i] = malloc(sizeof(char*) * comm_size); msg->link_id[i] = malloc(sizeof(char*) * comm_size); msg->requests[i] = NULL; for (j = 0; j < comm_size; j++) { CREATE_COLL_LINK_VALUE(msg, i, j); CREATE_COLL_MSG_ID(msg, i, j); } msg->times[i] = malloc(sizeof(uint64_t) * COLL_NB_TIMES); for (j = 0; j < COLL_NB_TIMES; j++) msg->times[i][j] = TIME_INIT; } return msg; } /* add a new pending collective communicaton */ static struct mpi_pending_coll_comm* __create_new_pending_collective_comm(int trace_index, struct mpi_coll_msg_t* msg) { INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(trace_index), process_info); struct mpi_pending_coll_comm* p_comm = malloc(sizeof(struct mpi_pending_coll_comm)); p_comm->msg = msg; p_comm->token.data = p_comm; ezt_list_add(&process_info->pending_comm[comm_type_collective], &p_comm->token); return p_comm; } /* check if a message matches a collective communication * return 1 if the message matches or 0 otherwise */ static int __mpi_coll_msg_match(struct mpi_coll_msg_t* msg, enum coll_type_t type, struct ezt_mpi_comm *comm, struct mpi_request *req, int time_id) { int my_rank = comm->my_rank; if ((msg->type == type) && (msg->comm_size == comm->comm_size) && ((!msg->requests[my_rank]) || (msg->requests[my_rank] == req)) && (time_id < 0 || !IS_TIME_SET(msg->times[my_rank][time_id]))) { /* It looks like this message matches. * We need to check wether the communicator for this message is comm or * if it matches comm */ int not_this_one = 0; int i; for (i = 0; i < msg->comm_size; i++) { if (msg->comm[i]) { /* the ith communicator is not empty */ if(! __ezt_mpi_communicator_are_equal(msg->comm[i], comm)) { /* the communicator doesn't match. we need to find anothe rmessahe */ not_this_one = 1; } else { /* the communicator matches */ return 1; } } } if (!not_this_one) { /* all the processes in this collective belong to comm */ return 1; } } return 0; } /* search for a message in the list of pending collective messages */ static __attribute__ ((unused)) struct mpi_pending_coll_comm * __mpi_find_pending_coll_message(struct mpi_process_info_t*p_info, enum coll_type_t type, struct ezt_mpi_comm *comm, struct mpi_request *req, int time_id) { struct ezt_list_token_t *token; ezt_list_foreach(&p_info->pending_comm[comm_type_collective], token) { struct mpi_pending_coll_comm* p_comm = (struct mpi_pending_coll_comm*) token->data; struct mpi_coll_msg_t* msg = p_comm->msg; if( __mpi_coll_msg_match(msg, type, comm, req, time_id)) { return p_comm; } } return NULL; } /* search for a message in the list of pending collective messages * the returned message has already been matched by the current thread */ static struct mpi_pending_coll_comm * __mpi_find_matched_coll_message(struct mpi_process_info_t*p_info, enum coll_type_t type, struct ezt_mpi_comm *comm, struct mpi_request *req, int time_id) { struct ezt_list_token_t *token; ezt_list_foreach(&p_info->pending_comm[comm_type_collective], token) { struct mpi_pending_coll_comm* p_comm = (struct mpi_pending_coll_comm*) token->data; struct mpi_coll_msg_t* msg = p_comm->msg; if( __mpi_coll_msg_match(msg, type, comm, req, time_id)) { if(msg->comm[comm->my_rank] == comm) { return p_comm; } } } return NULL; } /* search for a collective communication message message that matches */ struct mpi_coll_msg_t * __mpi_find_coll_message(enum coll_type_t type, struct ezt_mpi_comm *comm, struct mpi_request *req, int time_id) { int rank; struct ezt_list_token_t *token; for(rank=0; rank comm_size; rank++) { /* search for a matching collective message in the processes that belong to * the communicator */ INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(comm->ranks[rank]), p_info); ezt_list_foreach(&p_info->pending_comm[comm_type_collective], token) { struct mpi_pending_coll_comm* p_comm = (struct mpi_pending_coll_comm*) token->data; struct mpi_coll_msg_t* msg = p_comm->msg; /* browse the list of pending collective communications in this process */ if( __mpi_coll_msg_match(msg, type, comm, req, time_id)) { return msg; } } } /* cannot find a matching collective */ return NULL; } static int __get_local_rank(int global_rank, struct mpi_coll_msg_t *msg) { int i; for(i=0; icomm_size; i++) { struct ezt_mpi_comm*comm = msg->comm[i]; if(is_comm_mine(global_rank, comm)) return comm->my_rank; } return -1; } struct mpi_coll_msg_t* __mpi_find_coll_message_by_mpi_req(int rank, struct mpi_request *mpi_req) { struct ezt_list_token_t *token; INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(rank), p_info); ezt_list_foreach(&p_info->pending_comm[comm_type_collective], token) { struct mpi_pending_coll_comm* p_comm = (struct mpi_pending_coll_comm*) token->data; struct mpi_coll_msg_t* msg = p_comm->msg; /* browse the list of pending collective communications in this process */ int local_rank = __get_local_rank(rank, msg); if(mpi_req == msg->requests[local_rank]) return msg; } return NULL; } struct mpi_coll_msg_t* __enter_coll(uint64_t time, enum coll_type_t type, struct ezt_mpi_comm *comm, int __attribute__((unused)) my_rank, int data_size, struct mpi_request* req, char* thread_id) { struct mpi_coll_msg_t* msg = __mpi_find_coll_message(type, comm, NULL, start_coll); if ( !msg) { /* We are the first process to arrive in this collective communication. * create a new collective message structure */ msg = __new_coll_message(type, comm, data_size); } /* add this message in the list of the process pending communications */ __create_new_pending_collective_comm(comm->ranks[my_rank], msg); assert(msg->comm[comm->my_rank] == NULL); /* todo: record_event(time, type, msg) */ msg->nb_started++; msg->comm[comm->my_rank] = comm; assert(msg->comm[comm->my_rank] == comm); msg->times[comm->my_rank][start_coll] = time; msg->thread_ids[comm->my_rank] = thread_id; if (req) { msg->requests[comm->my_rank] = req; req->coll_msg = msg; req->status = mpi_req_status_pending; } return msg; } static void __store_finished_collective(p_eztrace_container p_cont, uint64_t time, int my_rank, struct mpi_coll_msg_t* p_msg) { struct coll_msg_event* msg = hierarchical_array_new_item(p_cont, EZTRACE_MPI_STATS_COLL_MSG_ID); msg->time = time; msg->my_rank = my_rank; msg->msg = p_msg; } struct mpi_coll_msg_t* __leave_coll(uint64_t time, enum coll_type_t type, struct ezt_mpi_comm *comm, int __attribute__((unused)) my_rank, struct mpi_request* req, char* thread_id) { INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(comm->ranks[comm->my_rank]), p_info); struct mpi_pending_coll_comm *pending_comm = __mpi_find_matched_coll_message(p_info, type, comm, req, stop_coll); assert(pending_comm); struct mpi_coll_msg_t* msg = pending_comm->msg; assert(msg->comm[comm->my_rank] == comm); /* todo: record_event(time, type, msg) */ msg->times[comm->my_rank][stop_coll] = time; assert(msg); assert(msg->thread_ids[comm->my_rank] == thread_id); assert(msg->requests[comm->my_rank] == req); assert(msg->comm[comm->my_rank] == comm); if(msg->nb_started != comm->comm_size) { msg->times[comm->my_rank][stop_coll] = TIME_INIT; /* some process did not reach the start of the collective. We need to wait * for them */ return NULL; } /* remove the collective from the list of pending collectives */ ezt_list_remove(&pending_comm->token); int nb_completed=0; for(int i=0; icomm_size; i++) { if(msg->times[i][stop_coll] != TIME_INIT) nb_completed++; } if(nb_completed == comm->comm_size) { free(pending_comm); struct mpi_pending_coll_comm *finished_comm = malloc(sizeof(struct mpi_pending_coll_comm)); finished_comm->msg = msg; finished_comm->token.data = finished_comm; ezt_list_add(&finished_collectives[type], &finished_comm->token); } else { free(pending_comm); } __store_finished_collective(GET_PROCESS_CONTAINER(comm->ranks[comm->my_rank]), time, comm->my_rank, msg); return msg; } eztrace-1.1-7/src/modules/mpi/PaxHeaders.7332/mpi_fortran.c0000644000000000000000000000013213143047722020342 xustar0030 mtime=1502367698.664456116 30 atime=1508138890.304278259 30 ctime=1508162368.021932471 eztrace-1.1-7/src/modules/mpi/mpi_fortran.c0000644000175000017500000001472413143047722021541 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" #include "mpi_eztrace.h" /* For MPI_Init and MPI_Init_thread, we *have* to call the Fortran version * of the function. Once it is done, we can call the __mpi_init_generic function */ void __mpi_init_generic(); void mpif_init_(void *error) { libmpi_init_((int*) error); __mpi_init_generic(); } void mpif_init_thread_(int *r, int *p, int *error) { libmpi_init_thread_(r, p, error); __mpi_init_generic(); } /* For all the remaining Fortran functions, we can just call the C version */ void mpif_finalize_(int *error) { *error = MPI_Finalize(); } void mpif_comm_size_(MPI_Fint *c, int *s, int * error) { MPI_Comm c_comm = MPI_Comm_f2c(*c); *error = MPI_Comm_size(c_comm, s); } void mpif_comm_rank_(MPI_Fint *c, int *r, int *error) { MPI_Comm c_comm = MPI_Comm_f2c(*c); *error = MPI_Comm_rank(c_comm, r); } void mpif_comm_spawn_(char *command, char **argv, int *maxprocs, MPI_Fint *info, int *root, MPI_Fint *comm, MPI_Fint *intercomm, int *array_of_errcodes, int*error) { MPI_Comm c_comm = MPI_Comm_f2c(*comm); MPI_Info c_info = MPI_Info_f2c(*info); ALLOCATE_ITEMS(MPI_Comm, *maxprocs, c_intercomm, p_intercomm); int i; for (i = 0; i < *maxprocs; i++) p_intercomm[i] = MPI_Comm_f2c(intercomm[i]); *error = MPI_Comm_spawn(command, argv, *maxprocs, c_info, *root, c_comm, p_intercomm, array_of_errcodes); for (i = 0; i < *maxprocs; i++) intercomm[i] = MPI_Comm_c2f(p_intercomm[i]); FREE_ITEMS(*maxprocs, p_intercomm); } void mpif_comm_create_(MPI_Fint *comm, MPI_Fint *group, MPI_Fint *newcomm, int *error) { MPI_Comm comm_c = MPI_Comm_f2c(*comm); MPI_Comm newcomm_c; MPI_Group group_c = MPI_Group_f2c(*group); *error = MPI_Comm_create(comm_c, group_c, &newcomm_c); *newcomm = MPI_Comm_c2f(newcomm_c); } void mpif_comm_create_group_(MPI_Fint *comm, MPI_Fint *group, MPI_Fint *tag, MPI_Fint *newcomm, int *error) { MPI_Comm comm_c = MPI_Comm_f2c(*comm); MPI_Comm newcomm_c; MPI_Group group_c = MPI_Group_f2c(*group); *error = MPI_Comm_create_group(comm_c, group_c, *tag, &newcomm_c); *newcomm = MPI_Comm_c2f(newcomm_c); } void mpif_comm_split_(MPI_Fint *comm, int *color, int *key, MPI_Fint *newcomm, int *error) { MPI_Comm comm_c = MPI_Comm_f2c(*comm); MPI_Comm newcomm_c; *error = MPI_Comm_split(comm_c, *color, *key, &newcomm_c); *newcomm = MPI_Comm_c2f(newcomm_c); } void mpif_comm_dup_(MPI_Fint *comm, MPI_Fint *newcomm, int *error) { MPI_Comm comm_c = MPI_Comm_f2c(*comm); MPI_Comm newcomm_c; *error = MPI_Comm_dup(comm_c, &newcomm_c); *newcomm = MPI_Comm_c2f(newcomm_c); } void mpif_comm_dup_with_info_(MPI_Fint *comm, MPI_Fint *info, MPI_Fint *newcomm, int *error) { MPI_Comm comm_c = MPI_Comm_f2c(*comm); MPI_Comm newcomm_c; *error = MPI_Comm_dup_with_info(comm_c, *info, &newcomm_c); *newcomm = MPI_Comm_c2f(newcomm_c); } void mpif_comm_split_type_(MPI_Fint* comm, int* split_type, int* key, int* info, MPI_Fint *newcomm, int*error) { MPI_Comm comm_c = MPI_Comm_f2c(*comm); MPI_Comm newcomm_c; *error = MPI_Comm_split_type(comm_c, *split_type, *key, *info, &newcomm_c); *newcomm = MPI_Comm_c2f(newcomm_c); } void mpif_intercomm_create_(MPI_Fint *local_comm, int *local_leader, MPI_Fint *peer_comm, int *remote_leader, int *tag, MPI_Fint *newintercomm, int *error) { MPI_Comm local_comm_c = MPI_Comm_f2c(*local_comm); MPI_Comm peer_comm_c = MPI_Comm_f2c(*peer_comm); MPI_Comm newintercomm_c; *error = MPI_Intercomm_create(local_comm_c, *local_leader, peer_comm_c, *remote_leader, *tag, &newintercomm_c); *newintercomm = MPI_Comm_c2f(newintercomm_c); } void mpif_intercomm_merge_(MPI_Fint *intercomm, int *high, MPI_Fint *newintracomm, int *error) { MPI_Comm intercomm_c = MPI_Comm_f2c(*intercomm); MPI_Comm newintracomm_c; *error = MPI_Intercomm_merge(intercomm_c, *high, &newintracomm_c); *newintracomm = MPI_Comm_c2f(newintracomm_c); } void mpif_cart_sub_(MPI_Fint *old_comm, int *belongs, MPI_Fint *new_comm, int *error) { MPI_Comm old_comm_c = MPI_Comm_f2c(*old_comm); MPI_Comm new_comm_c; *error = MPI_Cart_sub(old_comm_c, belongs, &new_comm_c); *new_comm = MPI_Comm_c2f(new_comm_c); } void mpif_cart_create_(MPI_Fint *comm_old, int *ndims, int *dims, int *periods, int *reorder, MPI_Fint *comm_cart, int *error) { MPI_Comm comm_old_c = MPI_Comm_f2c(*comm_old); MPI_Comm comm_cart_c; *error = MPI_Cart_create(comm_old_c, *ndims, dims, periods, *reorder, &comm_cart_c); *comm_cart = MPI_Comm_c2f(comm_cart_c); } void mpif_graph_create_(MPI_Fint *comm_old, int *nnodes, int *index, int *edges, int *reorder, MPI_Fint *comm_graph, int *error) { MPI_Comm comm_old_c = MPI_Comm_f2c(*comm_old); MPI_Comm comm_graph_c; *error = MPI_Graph_create(comm_old_c, *nnodes, index, edges, *reorder, &comm_graph_c); *comm_graph = MPI_Comm_c2f(comm_graph_c); } void mpif_dist_graph_create_(MPI_Fint* comm_old, int*n, int *sources, int* degrees, int* destinations, int* weights, int* info, int* reorder, MPI_Fint* comm_dist_graph, int* error) { MPI_Comm comm_old_c = MPI_Comm_f2c(*comm_old); MPI_Comm comm_dist_graph_c; *error = MPI_Dist_graph_create(comm_old_c, *n, sources, degrees, destinations, weights, *info, *reorder, &comm_dist_graph_c); *comm_dist_graph = MPI_Comm_c2f(comm_dist_graph_c); } void mpif_dist_graph_create_adjacent_(MPI_Fint* comm_old, int* indegree, int* sources, int* sourceweights, int* outdegree, int* destinations, int* destweights,int* info, int *reorder, MPI_Fint* comm_dist_graph, int* error) { MPI_Comm comm_old_c = MPI_Comm_f2c(*comm_old); MPI_Comm comm_dist_graph_c; *error = MPI_Dist_graph_create_adjacent(comm_old_c, *indegree, sources, sourceweights, *outdegree, destinations, destweights, *info, *reorder, &comm_dist_graph_c); *comm_dist_graph = MPI_Comm_c2f(comm_dist_graph_c); } void mpif_type_size_(int* datatype, int*size, MPI_Fint *error) { *error = MPI_Type_size(*datatype, size); } eztrace-1.1-7/src/modules/mpi/PaxHeaders.7332/eztrace_convert_mpi_pers.h0000644000000000000000000000013212544237152023124 xustar0030 mtime=1435582058.563899951 30 atime=1508138890.296278059 30 ctime=1508162368.093938763 eztrace-1.1-7/src/modules/mpi/eztrace_convert_mpi_pers.h0000644000175000017500000000246112544237152024316 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef EZTRACE_CONVERT_MPI_PERS_H #define EZTRACE_CONVERT_MPI_PERS_H #include #include "mpi_ev_codes.h" #include "eztrace_convert.h" #include "eztrace_convert_mpi.h" #include "eztrace_hierarchical_array.h" struct pers_msg_event { uint64_t time; struct mpi_coll_msg_t *msg; }; #define MPI_PERS_ID (EZTRACE_MPI_PREFIX | 0x2001) #define MPI_STATS_PERS_ID (EZTRACE_MPI_PREFIX | 0x2100) void init_mpi_pers_messages(); void print_pers_stats(); void __print_pers_req(FILE*stream, struct mpi_pers_req_t *req); void __print_pers_req_recurse(FILE*stream, unsigned depth, p_eztrace_container p_cont); void __print_all_pers_req(FILE*stream); struct mpi_pers_req_t* __new_pers_req(enum mpi_request_type type, app_ptr buffer, int src, int dest, int len, int tag, app_ptr mpi_req); struct mpi_pers_req_t* __pers_init(uint64_t time, enum mpi_request_type type, app_ptr buffer, int src, int dest, int len, int tag, app_ptr mpi_req); struct mpi_pers_req_t* __pers_start(uint64_t time, int rank, app_ptr mpi_req); #endif /* EZTRACE_CONVERT_MPI_PERS_H */ eztrace-1.1-7/src/modules/mpi/PaxHeaders.7332/mpi_funcs0000644000000000000000000000013213171135500017555 xustar0030 mtime=1508162368.081937715 30 atime=1508162372.166294941 30 ctime=1508162368.081937715 eztrace-1.1-7/src/modules/mpi/mpi_funcs/0000755000175000017500000000000013171135500021021 5ustar00trahaytrahay00000000000000eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_recv_init.c0000644000000000000000000000013213143047722022634 xustar0030 mtime=1502367698.672456313 30 atime=1508138893.992370366 30 ctime=1508162368.045934568 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_recv_init.c0000644000175000017500000000352513143047722024030 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static int MPI_Recv_init_core(void* buffer, int count, MPI_Datatype type, int src, int tag, MPI_Comm comm, MPI_Request *req) { return libMPI_Recv_init(buffer, count, type, src, tag, comm, req); } static void MPI_Recv_init_epilog(void* buffer, int count, MPI_Datatype type, int src, int tag, MPI_Comm comm, MPI_Fint *req) { int size; MPI_Type_size(type, &size); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_RECV_INIT, (app_ptr)buffer, count*size, src); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_Info, tag, (app_ptr)comm, (app_ptr)req); } int MPI_Recv_init(void* buffer, int count, MPI_Datatype type, int src, int tag, MPI_Comm comm, MPI_Request *req) { FUNCTION_ENTRY; int ret = MPI_Recv_init_core(buffer, count, type, src, tag, comm, req); MPI_Recv_init_epilog(buffer, count, type, src, tag, comm, (MPI_Fint*) req); return ret; } void mpif_recv_init_(void*buffer, int*count, MPI_Fint*type, int*src, int*tag, MPI_Fint*comm, MPI_Fint *req, int*error) { FUNCTION_ENTRY; MPI_Datatype c_type = MPI_Type_f2c(*type); MPI_Comm c_comm = MPI_Comm_f2c(*comm); MPI_Request c_req = MPI_Request_f2c(*req); *error = MPI_Recv_init_core(buffer, *count, c_type, *src, *tag, c_comm, &c_req); *req = MPI_Request_c2f(c_req); MPI_Recv_init_epilog(buffer, *count, c_type, *src, *tag, c_comm, req); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_iallgather.c0000644000000000000000000000013213143047722022766 xustar0030 mtime=1502367698.664456116 30 atime=1508138899.744514021 30 ctime=1508162368.073937016 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_iallgather.c0000644000175000017500000000573013143047722024162 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © CNRS, INRIA, Université Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" #ifdef USE_MPI3 static void MPI_Iallgather_prolog(CONST void __attribute__((unused)) *sendbuf, int sendcount, MPI_Datatype sendtype, void __attribute__((unused)) *recvbuf, int __attribute__((unused)) recvcount, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *r) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int dsize; /* retrieve the size of the datatype so that we can compute the message length */ MPI_Type_size(sendtype, &dsize); int data_size = sendcount * dsize; EZTRACE_EVENT_PACKED_5(EZTRACE_MPI_IALLGATHER, (app_ptr)comm, size, rank, (app_ptr)r, data_size); } static int MPI_Iallgather_core(CONST void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *r) { return libMPI_Iallgather(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm, r); } static void MPI_Iallgather_epilog(CONST void __attribute__((unused)) *sendbuf, int sendcount __attribute__((unused)), MPI_Datatype sendtype __attribute__((unused)), void *recvbuf __attribute__((unused)), int recvcount __attribute__((unused)), MPI_Datatype recvtype __attribute__((unused)), MPI_Comm comm __attribute__((unused)), MPI_Request *r) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_STOP_IALLGATHER, (app_ptr)r); } int MPI_Iallgather(CONST void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *r) { FUNCTION_ENTRY; MPI_Iallgather_prolog(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm, r); int ret = MPI_Iallgather_core(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm, r); MPI_Iallgather_epilog(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm, r); return ret; } void mpif_iallgather_(void *sbuf, int *scount, MPI_Fint *sd, void *rbuf, int *rcount, MPI_Fint *rd, MPI_Fint *c, MPI_Fint *r,int *error) { FUNCTION_ENTRY; MPI_Datatype c_stype = MPI_Type_f2c(*sd); MPI_Datatype c_rtype = MPI_Type_f2c(*rd); MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Request c_req = MPI_Request_f2c(*r); MPI_Iallgather_prolog(sbuf, *scount, c_stype, rbuf, *rcount, c_rtype, c_comm, r); *error = MPI_Iallgather_core(sbuf, *scount, c_stype, rbuf, *rcount, c_rtype, c_comm, &c_req); *r= MPI_Request_c2f(c_req); MPI_Iallgather_epilog(sbuf, *scount, c_stype, rbuf, *rcount, c_rtype, c_comm, r); } #endif eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_bsend_init.c0000644000000000000000000000013013143047722022766 xustar0030 mtime=1502367698.664456116 29 atime=1508138890.27627756 29 ctime=1508162368.03393352 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_bsend_init.c0000644000175000017500000000347213143047722024165 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static int MPI_Bsend_init_core(CONST void* buffer, int count, MPI_Datatype type, int dest, int tag, MPI_Comm comm, MPI_Request *req) { return libMPI_Bsend_init(buffer, count, type, dest, tag, comm, req); } static void MPI_Bsend_init_epilog(CONST void* buffer, int count, MPI_Datatype type, int dest, int tag, MPI_Comm comm, MPI_Request *req) { int size; MPI_Type_size(type, &size); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_BSEND_INIT, (app_ptr)buffer, count*size, dest); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_Info, tag, (app_ptr)comm, (app_ptr)req); } int MPI_Bsend_init(CONST void* buffer, int count, MPI_Datatype type, int dest, int tag, MPI_Comm comm, MPI_Request *req) { FUNCTION_ENTRY; int ret = MPI_Bsend_init_core(buffer, count, type, dest, tag, comm, req); MPI_Bsend_init_epilog(buffer, count, type, dest, tag, comm, (void*) req); return ret; } void mpif_bsend_init_(void*buffer, int*count, MPI_Fint*type, int*dest, int*tag, MPI_Fint*comm, MPI_Fint *req, int*error) { FUNCTION_ENTRY; MPI_Datatype c_type = MPI_Type_f2c(*type); MPI_Comm c_comm = MPI_Comm_f2c(*comm); MPI_Request c_req = MPI_Request_f2c(*req); *error = MPI_Bsend_init_core(buffer, *count, c_type, *dest, *tag, c_comm, &c_req); *req = MPI_Request_c2f(c_req); MPI_Bsend_init_epilog(buffer, *count, c_type, *dest, *tag, c_comm, (MPI_Request *)req); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_ialltoall.c0000644000000000000000000000013213143047722022627 xustar0030 mtime=1502367698.668456214 30 atime=1508138900.088522613 30 ctime=1508162368.073937016 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_ialltoall.c0000644000175000017500000000571213143047722024023 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © CNRS, INRIA, Université Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" #ifdef USE_MPI3 static void MPI_Ialltoall_prolog (CONST void *sendbuf __attribute__((unused)), int sendcount __attribute__((unused)), MPI_Datatype sendtype, void *recvbuf __attribute__((unused)), int recvcnt __attribute__((unused)), MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *r) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize, rsize; MPI_Type_size(sendtype, &ssize); MPI_Type_size(recvtype, &rsize); int data_size = sendcount * ssize; EZTRACE_EVENT_PACKED_5(EZTRACE_MPI_IALLTOALL, (app_ptr)comm, size, rank, (app_ptr)r, data_size); } static int MPI_Ialltoall_core (CONST void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcnt, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *r) { return libMPI_Ialltoall (sendbuf, sendcount, sendtype, recvbuf, recvcnt, recvtype, comm, r); } static void MPI_Ialltoall_epilog (CONST void *sendbuf __attribute__((unused)), int sendcount __attribute__((unused)), MPI_Datatype sendtype __attribute__((unused)), void *recvbuf __attribute__((unused)), int recvcnt __attribute__((unused)), MPI_Datatype recvtype __attribute__((unused)), MPI_Comm comm __attribute__((unused)), MPI_Request *r) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_STOP_IALLTOALL, (app_ptr)r); } int MPI_Ialltoall (CONST void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcnt, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *r) { FUNCTION_ENTRY; MPI_Ialltoall_prolog (sendbuf, sendcount, sendtype, recvbuf, recvcnt, recvtype, comm, r); int ret = MPI_Ialltoall_core (sendbuf, sendcount, sendtype, recvbuf, recvcnt, recvtype, comm, r); MPI_Ialltoall_epilog (sendbuf, sendcount, sendtype, recvbuf, recvcnt, recvtype, comm, r); return ret; } void mpif_ialltoall_(void *sbuf, int *scount, MPI_Fint *sd, void *rbuf, int *rcount, MPI_Fint *rd, MPI_Fint *c, MPI_Fint *r, int *error) { FUNCTION_ENTRY; MPI_Datatype c_stype = MPI_Type_f2c(*sd); MPI_Datatype c_rtype = MPI_Type_f2c(*rd); MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Request c_req = MPI_Request_f2c(*r); MPI_Ialltoall_prolog(sbuf, *scount, c_stype, rbuf, *rcount, c_rtype, c_comm, r); *error = MPI_Ialltoall_core(sbuf, *scount, c_stype, rbuf, *rcount, c_rtype, c_comm, &c_req); *r = MPI_Request_c2f(c_req); MPI_Ialltoall_epilog(sbuf, *scount, c_stype, rbuf, *rcount, c_rtype, c_comm, r); } #endif eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_iscan.c0000644000000000000000000000013213143047722021747 xustar0030 mtime=1502367698.668456214 30 atime=1508138902.384579955 30 ctime=1508162368.081937715 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_iscan.c0000644000175000017500000000505413143047722023142 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © CNRS, INRIA, Université Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" #ifdef USE_MPI3 static void MPI_Iscan_prolog (CONST void *sendbuf __attribute__((unused)), void *recvbuf __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype, MPI_Op op __attribute__((unused)), MPI_Comm comm, MPI_Request *r) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize; MPI_Type_size(datatype, &ssize); int data_size = ssize * count; EZTRACE_EVENT_PACKED_5(EZTRACE_MPI_ISCAN, (app_ptr)comm, size, rank, (app_ptr)r, data_size); } static int MPI_Iscan_core (CONST void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *r) { return libMPI_Iscan (sendbuf, recvbuf, count, datatype,op, comm, r); } static void MPI_Iscan_epilog (CONST void *sendbuf __attribute__((unused)), void *recvbuf __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype __attribute__((unused)), MPI_Op op __attribute__((unused)), MPI_Comm comm __attribute__((unused)), MPI_Request *r) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_STOP_ISCAN, (app_ptr)r); } int MPI_Iscan (CONST void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *r) { FUNCTION_ENTRY; MPI_Iscan_prolog (sendbuf, recvbuf, count, datatype,op, comm, r); int ret = MPI_Iscan_core (sendbuf, recvbuf, count, datatype,op, comm, r); MPI_Iscan_epilog (sendbuf, recvbuf, count, datatype,op, comm, r); return ret; } void mpif_iscan_(void *sbuf, void *rbuf, int *count, MPI_Fint *d, MPI_Fint *op, MPI_Fint *c, MPI_Fint *r, int *error) { FUNCTION_ENTRY; MPI_Datatype c_type = MPI_Type_f2c(*d); MPI_Op c_op = MPI_Op_f2c(*op); MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Request c_req = MPI_Request_f2c(*r); MPI_Iscan_prolog(sbuf, rbuf, *count, c_type, c_op, c_comm, r); *error = MPI_Iscan_core(sbuf, rbuf, *count, c_type, c_op, c_comm, &c_req); *r = MPI_Request_c2f(c_req); MPI_Iscan_epilog(sbuf, rbuf, *count, c_type, c_op, c_comm, r); } #endif eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_scatter.c0000644000000000000000000000013213143047722022317 xustar0030 mtime=1502367698.672456313 30 atime=1508138896.300428008 30 ctime=1508162368.049934917 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_scatter.c0000644000175000017500000000651313143047722023513 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Scatter_prolog(CONST void *sendbuf __attribute__((unused)), int sendcnt, MPI_Datatype sendtype, void *recvbuf __attribute__((unused)), int recvcnt __attribute__((unused)), MPI_Datatype recvtype, int root, MPI_Comm comm ) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize; MPI_Type_size(sendtype, &ssize); int data_size = ssize * sendcnt; EZTRACE_EVENT_PACKED_5(EZTRACE_MPI_START_Scatter, (app_ptr)comm, size, rank, data_size, root); } static int MPI_Scatter_core(CONST void *sendbuf, int sendcnt, MPI_Datatype sendtype, void *recvbuf, int recvcnt, MPI_Datatype recvtype, int root, MPI_Comm comm) { return libMPI_Scatter(sendbuf, sendcnt, sendtype, recvbuf, recvcnt, recvtype, root, comm); } static void MPI_Scatter_epilog(CONST void *sendbuf __attribute__((unused)), int sendcnt __attribute__((unused)), MPI_Datatype sendtype __attribute__((unused)), void *recvbuf __attribute__((unused)), int recvcnt __attribute__((unused)), MPI_Datatype recvtype __attribute__((unused)), int root __attribute__((unused)), MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_STOP_Scatter, (app_ptr)comm, size, rank); } int MPI_Scatter(CONST void *sendbuf, int sendcnt, MPI_Datatype sendtype, void *recvbuf, int recvcnt, MPI_Datatype recvtype, int root, MPI_Comm comm) { FUNCTION_ENTRY; MPI_Scatter_prolog(sendbuf, sendcnt, sendtype, recvbuf, recvcnt, recvtype, root, comm); int ret = MPI_Scatter_core(sendbuf, sendcnt, sendtype, recvbuf, recvcnt, recvtype, root, comm); MPI_Scatter_epilog(sendbuf, sendcnt, sendtype, recvbuf, recvcnt, recvtype, root, comm); return ret; } void mpif_scatter_(void *sbuf, int *scount, MPI_Fint *sd, void *rbuf, int *rcount, MPI_Fint *rd, int *root, MPI_Fint *c, int *error) { FUNCTION_ENTRY; MPI_Datatype c_stype = MPI_Type_f2c(*sd); MPI_Datatype c_rtype = MPI_Type_f2c(*rd); MPI_Comm c_comm = MPI_Comm_f2c(*c); void *c_sbuf = CHECK_MPI_IN_PLACE(sbuf); void *c_rbuf = CHECK_MPI_IN_PLACE(rbuf); MPI_Scatter_prolog(c_sbuf, *scount, c_stype, c_rbuf, *rcount, c_rtype, *root, c_comm); *error = MPI_Scatter_core(c_sbuf, *scount, c_stype, c_rbuf, *rcount, c_rtype, *root, c_comm); MPI_Scatter_epilog(c_sbuf, *scount, c_stype, c_rbuf, *rcount, c_rtype, *root, c_comm); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_test.c0000644000000000000000000000013213143047722021631 xustar0030 mtime=1502367698.672456313 30 atime=1508138897.104448088 30 ctime=1508162368.057935617 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_test.c0000644000175000017500000000233713143047722023025 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static int MPI_Test_core(MPI_Request *req, int *a, MPI_Status *s) { return libMPI_Test(req, a, s); } static void MPI_Test_epilog(MPI_Fint *req, int *a, MPI_Status *s __attribute__((unused))) { if (*a) EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_TEST_SUCCESS, (app_ptr)req); } int MPI_Test(MPI_Request *req, int *a, MPI_Status *s) { FUNCTION_ENTRY; int res = MPI_Test_core(req, a, s); MPI_Test_epilog((MPI_Fint*) req, a, s); return res; } void mpif_test_(MPI_Fint *r, int *f, MPI_Fint *s, int *error) { FUNCTION_ENTRY; MPI_Request c_req = MPI_Request_f2c(*r); MPI_Status c_status; *error = MPI_Test_core(&c_req, f, &c_status); *r = MPI_Request_c2f(c_req); if (*f) { MPI_Status_c2f(&c_status, s); } MPI_Test_epilog(r, f, &c_status); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_scan.c0000644000000000000000000000013213143047722021576 xustar0030 mtime=1502367698.672456313 30 atime=1508138896.436431405 30 ctime=1508162368.049934917 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_scan.c0000644000175000017500000000470213143047722022770 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Scan_prolog (CONST void *sendbuf __attribute__((unused)), void *recvbuf __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype, MPI_Op op __attribute__((unused)), MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize; MPI_Type_size(datatype, &ssize); int data_size = ssize * count; EZTRACE_EVENT_PACKED_4(EZTRACE_MPI_START_Scan, (app_ptr)comm, size, rank, data_size); } static int MPI_Scan_core(CONST void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) { return libMPI_Scan(sendbuf, recvbuf, count, datatype, op, comm); } static void MPI_Scan_epilog (CONST void *sendbuf __attribute__((unused)), void *recvbuf __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype, MPI_Op op __attribute__((unused)), MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int len; MPI_Type_size(datatype, &len); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_STOP_Scan, (app_ptr)comm, size, rank); } int MPI_Scan(CONST void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) { FUNCTION_ENTRY; MPI_Scan_prolog(sendbuf, recvbuf, count, datatype, op, comm); int ret = MPI_Scan_core(sendbuf, recvbuf, count, datatype, op, comm); MPI_Scan_epilog(sendbuf, recvbuf, count, datatype, op, comm); return ret; } void mpif_scan_(void *sbuf, void *rbuf, int *count, MPI_Fint *d, MPI_Fint *op, MPI_Fint *c, int *error) { FUNCTION_ENTRY; MPI_Datatype c_type = MPI_Type_f2c(*d); MPI_Op c_op = MPI_Op_f2c(*op); MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Scan_prolog(sbuf, rbuf, *count, c_type, c_op, c_comm); *error = MPI_Scan_core(sbuf, rbuf, *count, c_type, c_op, c_comm); MPI_Scan_epilog(sbuf, rbuf, *count, c_type, c_op, c_comm); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_alltoall.c0000644000000000000000000000013113143047722022455 xustar0030 mtime=1502367698.664456116 30 atime=1508138890.224276261 29 ctime=1508162368.02993317 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_alltoall.c0000644000175000017500000000642713143047722023656 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Alltoall_prolog (CONST void *sendbuf __attribute__((unused)), int sendcount __attribute__((unused)), MPI_Datatype sendtype, void *recvbuf __attribute__((unused)), int recvcnt __attribute__((unused)), MPI_Datatype recvtype, MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize=0; int rsize =0; if(sendtype != MPI_DATATYPE_NULL) MPI_Type_size(sendtype, &ssize); if(recvtype != MPI_DATATYPE_NULL) MPI_Type_size(recvtype, &rsize); int data_size = sendcount * ssize; EZTRACE_EVENT_PACKED_4(EZTRACE_MPI_START_Alltoall, (app_ptr)comm, size, rank, data_size); } static int MPI_Alltoall_core(CONST void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcnt, MPI_Datatype recvtype, MPI_Comm comm) { return libMPI_Alltoall(sendbuf, sendcount, sendtype, recvbuf, recvcnt, recvtype, comm); } static void MPI_Alltoall_epilog (CONST void *sendbuf __attribute__((unused)), int sendcount __attribute__((unused)), MPI_Datatype sendtype, void *recvbuf __attribute__((unused)), int recvcnt __attribute__((unused)), MPI_Datatype recvtype, MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize=0; int rsize =0; if(sendtype != MPI_DATATYPE_NULL) MPI_Type_size(sendtype, &ssize); if(recvtype != MPI_DATATYPE_NULL) MPI_Type_size(recvtype, &rsize); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_STOP_Alltoall, (app_ptr)comm, size, rank); } int MPI_Alltoall(CONST void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcnt, MPI_Datatype recvtype, MPI_Comm comm) { FUNCTION_ENTRY; MPI_Alltoall_prolog(sendbuf, sendcount, sendtype, recvbuf, recvcnt, recvtype, comm); int ret = MPI_Alltoall_core(sendbuf, sendcount, sendtype, recvbuf, recvcnt, recvtype, comm); MPI_Alltoall_epilog(sendbuf, sendcount, sendtype, recvbuf, recvcnt, recvtype, comm); return ret; } void mpif_alltoall_(void *sbuf, int *scount, MPI_Fint *sd, void *rbuf, int *rcount, MPI_Fint *rd, MPI_Fint *c, int *error) { FUNCTION_ENTRY; MPI_Datatype c_stype = MPI_Type_f2c(*sd); MPI_Datatype c_rtype = MPI_Type_f2c(*rd); MPI_Comm c_comm = MPI_Comm_f2c(*c); void *c_sbuf = CHECK_MPI_IN_PLACE(sbuf); void *c_rbuf = CHECK_MPI_IN_PLACE(rbuf); MPI_Alltoall_prolog(c_sbuf, *scount, c_stype, c_rbuf, *rcount, c_rtype, c_comm); *error = MPI_Alltoall_core(c_sbuf, *scount, c_stype, c_rbuf, *rcount, c_rtype, c_comm); MPI_Alltoall_epilog(c_sbuf, *scount, c_stype, c_rbuf, *rcount, c_rtype, c_comm); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_rsend_init.c0000644000000000000000000000013212544237152023012 xustar0030 mtime=1435582058.563899951 30 atime=1508138896.324428608 30 ctime=1508162368.049934917 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_rsend_init.c0000644000175000017500000000370312544237152024204 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static int MPI_Rsend_init_core(CONST void* buffer, int count, MPI_Datatype type, int dest, int tag, MPI_Comm comm, MPI_Request *req) { return libMPI_Rsend_init(buffer, count, type, dest, tag, comm, req); } static void MPI_Rsend_init_epilog(CONST void* buffer, int count, MPI_Datatype type, int dest, int tag, MPI_Comm comm, MPI_Fint *req) { int size; MPI_Type_size(type, &size); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_RSEND_INIT, (app_ptr)buffer, count*size, dest); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_Info, tag, (app_ptr)comm, (app_ptr)req); } int MPI_Rsend_init(CONST void* buffer, int count, MPI_Datatype type, int dest, int tag, MPI_Comm comm, MPI_Request *req) { FUNCTION_ENTRY; int ret = MPI_Rsend_init_core(buffer, count, type, dest, tag, comm, req); MPI_Rsend_init_epilog(buffer, count, type, dest, tag, comm, (MPI_Fint*) req); return ret; } void mpif_rsend_init_(void*buffer, int*count, MPI_Fint*type, int*dest, int*tag, MPI_Fint*comm, MPI_Fint *req, int*error) { FUNCTION_ENTRY; MPI_Datatype c_type = MPI_Type_f2c(*type); MPI_Comm c_comm = MPI_Comm_f2c(*comm); MPI_Request c_req = MPI_Request_f2c(*req); *error = MPI_Rsend_init_core(buffer, *count, c_type, *dest, *tag, c_comm, &c_req); *req = MPI_Request_c2f(c_req); MPI_Rsend_init_epilog(buffer, *count, c_type, *dest, *tag, c_comm, req); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_ibcast.c0000644000000000000000000000013113143047722022116 xustar0030 mtime=1502367698.668456214 29 atime=1508138899.39650533 30 ctime=1508162368.065936316 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_ibcast.c0000644000175000017500000000446113143047722023313 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © CNRS, INRIA, Université Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" #ifdef USE_MPI3 static void MPI_Ibcast_prolog(void *buffer __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype, int root, MPI_Comm comm, MPI_Request *r) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize=0; if(datatype != MPI_DATATYPE_NULL) MPI_Type_size(datatype, &ssize); int data_size = count * ssize; EZTRACE_EVENT_PACKED_6(EZTRACE_MPI_IBCAST, (app_ptr)comm, size, rank, (app_ptr)r, data_size, root); } static int MPI_Ibcast_core(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm, MPI_Request *r) { return libMPI_Ibcast(buffer, count, datatype, root, comm, r); } static void MPI_Ibcast_epilog(void *buffer __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype __attribute__((unused)), int root __attribute__((unused)), MPI_Comm comm __attribute__((unused)), MPI_Request *r) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_STOP_IBCAST, (app_ptr)r); } int MPI_Ibcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm, MPI_Request *r) { FUNCTION_ENTRY; MPI_Ibcast_prolog(buffer, count, datatype, root, comm, r); int ret = MPI_Ibcast_core(buffer, count, datatype, root, comm, r); MPI_Ibcast_epilog(buffer, count, datatype, root, comm, r); return ret; } void mpif_ibcast_(void *buf, int *count, MPI_Fint *d, int *root, MPI_Fint *c, MPI_Fint*r, int *error) { FUNCTION_ENTRY; MPI_Datatype c_type = MPI_Type_f2c(*d); MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Request c_req = MPI_Request_f2c(*r); MPI_Ibcast_prolog(buf, *count, c_type, *root, c_comm, r); *error = MPI_Ibcast_core(buf, *count, c_type, *root, c_comm, &c_req); *r= MPI_Request_c2f(c_req); MPI_Ibcast_epilog(buf, *count, c_type, *root, c_comm, r); } #endif eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_get.c0000644000000000000000000000013113143047722021430 xustar0030 mtime=1502367698.664456116 30 atime=1508138893.272352384 29 ctime=1508162368.03393352 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_get.c0000644000175000017500000000674013143047722022627 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Get_prolog(void *origin_addr __attribute__((unused)), int origin_count __attribute__((unused)), MPI_Datatype origin_datatype __attribute__((unused)), int target_rank __attribute__((unused)), MPI_Aint target_disp __attribute__((unused)), int target_count __attribute__((unused)), MPI_Datatype target_datatype __attribute__((unused)), MPI_Win win __attribute__((unused))) { EZTRACE_EVENT_PACKED_0(EZTRACE_MPI_START_GET); } static int MPI_Get_core(void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win) { return libMPI_Get(origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, target_datatype, win); } static void MPI_Get_epilog(void *origin_addr __attribute__((unused)), int origin_count __attribute__((unused)), MPI_Datatype origin_datatype __attribute__((unused)), int target_rank, MPI_Aint target_disp __attribute__((unused)), int target_count, MPI_Datatype target_datatype, MPI_Win win __attribute__((unused))) { int tsize; MPI_Type_size(target_datatype, &tsize); /* FIXME: this is interpreted as a mpi_recv, but it should not ! */ EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_STOP_GET, target_count*tsize, target_rank, 0); } int MPI_Get(void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win) { FUNCTION_ENTRY; MPI_Get_prolog(origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, target_datatype, win); int ret = MPI_Get_core(origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, target_datatype, win); MPI_Get_epilog(origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, target_datatype, win); return ret; } void mpif_get_(void *o_addr, int *o_count, MPI_Fint *o_d, int *t_rank, MPI_Aint *t_disp, int *t_count, MPI_Fint *t_d, MPI_Fint *win, int *error) { FUNCTION_ENTRY; MPI_Datatype c_otype = MPI_Type_f2c(*o_d); MPI_Datatype c_ttype = MPI_Type_f2c(*t_d); MPI_Win c_win = MPI_Win_f2c(*win); MPI_Get_prolog(o_addr, *o_count, c_otype, *t_rank, *t_disp, *t_count, c_ttype, c_win); *error = MPI_Get_core(o_addr, *o_count, c_otype, *t_rank, *t_disp, *t_count, c_ttype, c_win); MPI_Get_epilog(o_addr, *o_count, c_otype, *t_rank, *t_disp, *t_count, c_ttype, c_win); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_irecv.c0000644000000000000000000000013113143047722021761 xustar0030 mtime=1502367698.668456214 30 atime=1508138893.704363173 29 ctime=1508162368.03793387 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_irecv.c0000644000175000017500000000443513143047722023157 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Irecv_prolog(void* buf __attribute__((unused)), int count, MPI_Datatype datatype, int src, int tag, MPI_Comm comm, MPI_Fint *req) { int size; MPI_Type_size(datatype, &size); EZTRACE_EVENT_PACKED_5(EZTRACE_MPI_IRECV, count*size, src, tag, (app_ptr)req, (app_ptr)comm); } static int MPI_Irecv_core(void* buf, int count, MPI_Datatype datatype, int src, int tag, MPI_Comm comm, MPI_Request *req) { return libMPI_Irecv(buf, count, datatype, src, tag, comm, req); } static void MPI_Irecv_epilog(void* buf __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype __attribute__((unused)), int src __attribute__((unused)), int tag __attribute__((unused)), MPI_Comm comm __attribute__((unused)), MPI_Fint *req) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_STOP_IRECV, (app_ptr)req); } int MPI_Irecv(void* buf, int count, MPI_Datatype datatype, int src, int tag, MPI_Comm comm, MPI_Request *req) { FUNCTION_ENTRY; MPI_Irecv_prolog(buf, count, datatype, src, tag, comm, (MPI_Fint*) req); int ret = MPI_Irecv_core(buf, count, datatype, src, tag, comm, req); MPI_Irecv_epilog(buf, count, datatype, src, tag, comm, (MPI_Fint*) req); return ret; } void mpif_irecv_(void *buf, int *count, MPI_Fint *d, int *src, int *tag, MPI_Fint *c, MPI_Fint *r, int *error) { FUNCTION_ENTRY; MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Datatype c_type = MPI_Type_f2c(*d); MPI_Request c_req = MPI_Request_f2c(*r); MPI_Irecv_prolog(buf, *count, c_type, *src, *tag, c_comm, r); *error = MPI_Irecv_core(buf, *count, c_type, *src, *tag, c_comm, &c_req); *r= MPI_Request_c2f(c_req); MPI_Irecv_epilog(buf, *count, c_type, *src, *tag, c_comm, r); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_isend.c0000644000000000000000000000013113143047722021753 xustar0030 mtime=1502367698.672456313 30 atime=1508138893.584360177 29 ctime=1508162368.03793387 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_isend.c0000644000175000017500000000443613143047722023152 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Isend_prolog (CONST void* buf __attribute__((unused)), int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Fint *req) { int size; MPI_Type_size(datatype, &size); EZTRACE_EVENT_PACKED_5(EZTRACE_MPI_ISEND, count * size, dest, tag, (app_ptr)req, (app_ptr)comm); } static int MPI_Isend_core(CONST void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *req) { return libMPI_Isend(buf, count, datatype, dest, tag, comm, req); } static void MPI_Isend_epilog (CONST void* buf __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype __attribute__((unused)), int dest __attribute__((unused)), int tag __attribute__((unused)), MPI_Comm comm __attribute__((unused)), MPI_Fint *req) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_STOP_ISEND, (app_ptr)req); } int MPI_Isend(CONST void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *req) { FUNCTION_ENTRY; MPI_Isend_prolog(buf, count, datatype, dest, tag, comm, (MPI_Fint*) req); int ret = MPI_Isend_core(buf, count, datatype, dest, tag, comm, req); MPI_Isend_epilog(buf, count, datatype, dest, tag, comm, (MPI_Fint*) req); return ret; } void mpif_isend_(void *buf, int *count, MPI_Fint *d, int *dest, int *tag, MPI_Fint *c, MPI_Fint *r, int *error) { FUNCTION_ENTRY; MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Datatype c_type = MPI_Type_f2c(*d); MPI_Request c_req = MPI_Request_f2c(*r); MPI_Isend_prolog(buf, *count, c_type, *dest, *tag, c_comm, r); *error = MPI_Isend_core(buf, *count, c_type, *dest, *tag, c_comm, &c_req); *r = MPI_Request_c2f(c_req); MPI_Isend_epilog(buf, *count, c_type, *dest, *tag, c_comm, r); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_scatterv.c0000644000000000000000000000013213143047722022505 xustar0030 mtime=1502367698.672456313 30 atime=1508138896.392430306 30 ctime=1508162368.049934917 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_scatterv.c0000644000175000017500000000663713143047722023710 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Scatterv_prolog(CONST void *sendbuf __attribute__((unused)), CONST int *sendcnts __attribute__((unused)), CONST int *displs __attribute__((unused)), MPI_Datatype sendtype __attribute__((unused)), void *recvbuf __attribute__((unused)), int recvcnt, MPI_Datatype recvtype, int root, MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize; MPI_Type_size(sendtype, &ssize); int data_size = ssize * sendcnts[0]; EZTRACE_EVENT_PACKED_5(EZTRACE_MPI_START_Scatterv, (app_ptr)comm, size, rank, data_size, root); } static int MPI_Scatterv_core(CONST void *sendbuf, CONST int *sendcnts, CONST int *displs, MPI_Datatype sendtype, void *recvbuf, int recvcnt, MPI_Datatype recvtype, int root, MPI_Comm comm) { return libMPI_Scatterv(sendbuf, sendcnts, displs, sendtype, recvbuf, recvcnt, recvtype, root, comm); } static void MPI_Scatterv_epilog(CONST void *sendbuf __attribute__((unused)), CONST int *sendcnts __attribute__((unused)), CONST int *displs __attribute__((unused)), MPI_Datatype sendtype __attribute__((unused)), void *recvbuf __attribute__((unused)), int recvcnt __attribute__((unused)), MPI_Datatype recvtype __attribute__((unused)), int root __attribute__((unused)), MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_STOP_Scatterv, (app_ptr)comm, size, rank); } int MPI_Scatterv(CONST void *sendbuf, CONST int *sendcnts, CONST int *displs, MPI_Datatype sendtype, void *recvbuf, int recvcnt, MPI_Datatype recvtype, int root, MPI_Comm comm) { FUNCTION_ENTRY; MPI_Scatterv_prolog(sendbuf, sendcnts, displs, sendtype, recvbuf, recvcnt, recvtype, root, comm); int ret = MPI_Scatterv_core(sendbuf, sendcnts, displs, sendtype, recvbuf, recvcnt, recvtype, root, comm); MPI_Scatterv_epilog(sendbuf, sendcnts, displs, sendtype, recvbuf, recvcnt, recvtype, root, comm); return ret; } void mpif_scatterv_(void *sbuf, int *scount, int *displs, MPI_Fint *sd, void *rbuf, int *rcount, MPI_Fint *rd, int *root, MPI_Fint *c, int *error) { FUNCTION_ENTRY; MPI_Datatype c_stype = MPI_Type_f2c(*sd); MPI_Datatype c_rtype = MPI_Type_f2c(*rd); MPI_Comm c_comm = MPI_Comm_f2c(*c); void *c_sbuf = CHECK_MPI_IN_PLACE(sbuf); void *c_rbuf = CHECK_MPI_IN_PLACE(rbuf); MPI_Scatterv_prolog(c_sbuf, scount, displs, c_stype, c_rbuf, *rcount, c_rtype, *root, c_comm); *error = MPI_Scatterv_core(c_sbuf, scount, displs, c_stype, c_rbuf, *rcount, c_rtype, *root, c_comm); MPI_Scatterv_epilog(c_sbuf, scount, displs, c_stype, c_rbuf, *rcount, c_rtype, *root, c_comm); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_waitsome.c0000644000000000000000000000013213143047722022502 xustar0030 mtime=1502367698.672456313 30 atime=1508138899.468507128 30 ctime=1508162368.065936316 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_waitsome.c0000644000175000017500000000625213143047722023676 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" /* todo: implement this function ! */ static void MPI_Waitsome_prolog( int incount, void *reqs, int *outcount __attribute__((unused)), int *array_of_indices __attribute__((unused)), MPI_Status *array_of_statuses __attribute__((unused)), size_t size) { int i; for (i = 0; i < incount; i++) { /* we can't use &reqs[i] here since req may be an array of MPI_Request or MPI_Fint * (which may have different size) */ EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_START_WAIT, (app_ptr)((void*)reqs + (i*size))); } } static int MPI_Waitsome_core(int incount, MPI_Request *reqs, int *outcount, int *array_of_indices, MPI_Status *array_of_statuses) { return libMPI_Waitsome(incount, reqs, outcount, array_of_indices, array_of_statuses); } static void MPI_Waitsome_epilog( int incount __attribute__((unused)), void *reqs, int *outcount, int *array_of_indices, MPI_Status *array_of_statuses __attribute__((unused)), size_t size) { int i, j = 0; /* create a MPI_STOP_WAIT event for all successfull requests */ for (i=0; i #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Send_prolog(CONST void *buf __attribute__((unused)), int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) { int size; /* retrieve the size of the datatype so that we can compute the message length */ MPI_Type_size(datatype, &size); EZTRACE_EVENT_PACKED_4(EZTRACE_MPI_START_SEND, count*size, dest, tag, (app_ptr)comm); } static int MPI_Send_core(CONST void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) { return libMPI_Send(buf, count, datatype, dest, tag, comm); } static void MPI_Send_epilog(CONST void *buf __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype __attribute__((unused)), int dest, int tag, MPI_Comm comm) { EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_STOP_SEND, dest, tag, (app_ptr)comm); } /* C function */ int MPI_Send(CONST void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) { FUNCTION_ENTRY; MPI_Send_prolog(buf, count, datatype, dest, tag, comm); int ret = MPI_Send_core(buf, count, datatype, dest, tag, comm); MPI_Send_epilog(buf, count, datatype, dest, tag, comm); return ret; } /* fortran function */ void mpif_send_(void* buf, int *count, MPI_Fint *d, int *dest, int *tag, MPI_Fint *c, int *error) { FUNCTION_ENTRY; MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Datatype c_type = MPI_Type_f2c(*d); MPI_Send_prolog(buf, *count, c_type, *dest, *tag, c_comm); *error = MPI_Send_core(buf, *count, c_type, *dest, *tag, c_comm); MPI_Send_epilog(buf, *count, c_type, *dest, *tag, c_comm); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_iscatter.c0000644000000000000000000000013213143047722022470 xustar0030 mtime=1502367698.668456214 30 atime=1508138899.660511924 30 ctime=1508162368.069936665 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_iscatter.c0000644000175000017500000000602613143047722023663 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © CNRS, INRIA, Université Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" #ifdef USE_MPI3 static void MPI_Iscatter_prolog(CONST void *sendbuf __attribute__((unused)), int sendcnt __attribute__((unused)), MPI_Datatype sendtype __attribute__((unused)), void *recvbuf __attribute__((unused)), int recvcnt __attribute__((unused)), MPI_Datatype recvtype __attribute__((unused)), int root, MPI_Comm comm, MPI_Request *r ) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize; MPI_Type_size(sendtype, &ssize); int data_size = ssize * sendcnt; EZTRACE_EVENT_PACKED_6(EZTRACE_MPI_ISCATTER, (app_ptr)comm, size, rank, (app_ptr)r, data_size, root); } static int MPI_Iscatter_core(CONST void *sendbuf, int sendcnt, MPI_Datatype sendtype, void *recvbuf, int recvcnt, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *r) { return libMPI_Iscatter(sendbuf, sendcnt, sendtype, recvbuf, recvcnt, recvtype, root, comm, r); } static void MPI_Iscatter_epilog(CONST void *sendbuf __attribute__((unused)), int sendcnt __attribute__((unused)), MPI_Datatype sendtype __attribute__((unused)), void *recvbuf __attribute__((unused)), int recvcnt __attribute__((unused)), MPI_Datatype recvtype __attribute__((unused)), int root __attribute__((unused)), MPI_Comm comm __attribute__((unused)), MPI_Request *r ) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_STOP_ISCATTER, (app_ptr)r); } int MPI_Iscatter(CONST void *sendbuf, int sendcnt, MPI_Datatype sendtype, void *recvbuf, int recvcnt, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *r) { FUNCTION_ENTRY; MPI_Iscatter_prolog(sendbuf, sendcnt, sendtype, recvbuf, recvcnt, recvtype, root, comm, r); int ret = MPI_Iscatter_core(sendbuf, sendcnt, sendtype, recvbuf, recvcnt, recvtype, root, comm, r); MPI_Iscatter_epilog(sendbuf, sendcnt, sendtype, recvbuf, recvcnt, recvtype, root, comm, r); return ret; } void mpif_iscatter_(void *sbuf, int *scount, MPI_Fint *sd, void *rbuf, int *rcount, MPI_Fint *rd, int *root, MPI_Fint *c, MPI_Fint *r, int *error) { FUNCTION_ENTRY; MPI_Datatype c_stype = MPI_Type_f2c(*sd); MPI_Datatype c_rtype = MPI_Type_f2c(*rd); MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Request c_req = MPI_Request_f2c(*r); MPI_Iscatter_prolog(sbuf, *scount, c_stype, rbuf, *rcount, c_rtype, *root, c_comm, r); *error = MPI_Iscatter_core(sbuf, *scount, c_stype, rbuf, *rcount, c_rtype, *root, c_comm, &c_req); *r= MPI_Request_c2f(c_req); MPI_Iscatter_epilog(sbuf, *scount, c_stype, rbuf, *rcount, c_rtype, *root, c_comm, r); } #endif eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_ialltoallv.c0000644000000000000000000000013213143047722023015 xustar0030 mtime=1502367698.668456214 30 atime=1508138900.276527308 30 ctime=1508162368.077937365 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_ialltoallv.c0000644000175000017500000000665613143047722024221 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © CNRS, INRIA, Université Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" #ifdef USE_MPI3 static void MPI_Ialltoallv_prolog (CONST void *sendbuf __attribute__((unused)), CONST int *sendcnts __attribute__((unused)), CONST int *sdispls __attribute__((unused)), MPI_Datatype sendtype, void *recvbuf __attribute__((unused)), CONST int *recvcnts __attribute__((unused)), CONST int *rdispls __attribute__((unused)), MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *r) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize, rsize; MPI_Type_size(sendtype, &ssize); MPI_Type_size(recvtype, &rsize); int data_size = sendcnts[0] * ssize; EZTRACE_EVENT_PACKED_5(EZTRACE_MPI_IALLTOALLV, (app_ptr)comm, size, rank, (app_ptr)r, data_size); } static int MPI_Ialltoallv_core (CONST void *sendbuf, CONST int *sendcnts, CONST int *sdispls, MPI_Datatype sendtype, void *recvbuf, CONST int *recvcnts, CONST int *rdispls, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *r) { return libMPI_Ialltoallv (sendbuf, sendcnts, sdispls, sendtype, recvbuf, recvcnts, rdispls, recvtype, comm, r); } static void MPI_Ialltoallv_epilog (CONST void *sendbuf __attribute__((unused)), CONST int *sendcnts __attribute__((unused)), CONST int *sdispls __attribute__((unused)), MPI_Datatype sendtype __attribute__((unused)), void *recvbuf __attribute__((unused)), CONST int *recvcnts __attribute__((unused)), CONST int *rdispls __attribute__((unused)), MPI_Datatype recvtype __attribute__((unused)), MPI_Comm comm __attribute__((unused)), MPI_Request *r) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_STOP_IALLTOALLV, (app_ptr)r); } int MPI_Ialltoallv (CONST void *sendbuf, CONST int *sendcnts, CONST int *sdispls, MPI_Datatype sendtype, void *recvbuf, CONST int *recvcnts, CONST int *rdispls, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *r) { FUNCTION_ENTRY; MPI_Ialltoallv_prolog (sendbuf, sendcnts, sdispls, sendtype, recvbuf, recvcnts, rdispls, recvtype, comm, r); int ret = MPI_Ialltoallv_core (sendbuf, sendcnts, sdispls, sendtype, recvbuf, recvcnts, rdispls, recvtype, comm, r); MPI_Ialltoallv_epilog (sendbuf, sendcnts, sdispls, sendtype, recvbuf, recvcnts, rdispls, recvtype, comm, r); return ret; } void mpif_ialltoallv_(void *sbuf, int *scount, int *sdispls, MPI_Fint *sd, void *rbuf, int *rcount, int *rdispls, MPI_Fint *rd, MPI_Fint *c, MPI_Fint *r, int *error) { FUNCTION_ENTRY; MPI_Datatype c_stype = MPI_Type_f2c(*sd); MPI_Datatype c_rtype = MPI_Type_f2c(*rd); MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Request c_req = MPI_Request_f2c(*r); MPI_Ialltoallv_prolog(sbuf, scount, sdispls, c_stype, rbuf, rcount, rdispls, c_rtype, c_comm, r); *error = MPI_Ialltoallv_core(sbuf, scount, sdispls, c_stype, rbuf, rcount, rdispls, c_rtype, c_comm, &c_req); *r = MPI_Request_c2f(c_req); MPI_Ialltoallv_epilog(sbuf, scount, sdispls, c_stype, rbuf, rcount, rdispls, c_rtype, c_comm, r); } #endif eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_iallgatherv.c0000644000000000000000000000013213143047722023154 xustar0030 mtime=1502367698.668456214 30 atime=1508138899.876517318 30 ctime=1508162368.073937016 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_iallgatherv.c0000644000175000017500000000672713143047722024357 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © CNRS, INRIA, Université Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" #ifdef USE_MPI3 static void MPI_Iallgatherv_prolog (CONST void *sendbuf __attribute__((unused)), int sendcount __attribute__((unused)), MPI_Datatype sendtype __attribute__((unused)), void *recvbuf __attribute__((unused)), CONST int *recvcounts __attribute__((unused)), CONST int *displs __attribute__((unused)), MPI_Datatype recvtype __attribute__((unused)), MPI_Comm comm __attribute__((unused)), MPI_Request *r) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int dsize; /* retrieve the size of the datatype so that we can compute the message length */ MPI_Type_size(sendtype, &dsize); int data_size = sendcount * dsize; EZTRACE_EVENT_PACKED_5(EZTRACE_MPI_IALLGATHERV, (app_ptr)comm, size, rank, (app_ptr)r, data_size); } static int MPI_Iallgatherv_core (CONST void *sendbuf __attribute__((unused)), int sendcount, MPI_Datatype sendtype, void *recvbuf __attribute__((unused)), CONST int *recvcounts __attribute__((unused)), CONST int *displs __attribute__((unused)), MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *r) { return libMPI_Iallgatherv (sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm, r); } static void MPI_Iallgatherv_epilog (CONST void *sendbuf __attribute__((unused)), int sendcount __attribute__((unused)), MPI_Datatype sendtype __attribute__((unused)), void *recvbuf __attribute__((unused)), CONST int *recvcounts __attribute__((unused)), CONST int *displs __attribute__((unused)), MPI_Datatype recvtype __attribute__((unused)), MPI_Comm comm __attribute__((unused)), MPI_Request *r) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_STOP_IALLGATHERV, (app_ptr)r); } int MPI_Iallgatherv (CONST void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, CONST int *recvcounts, CONST int *displs, MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *r) { FUNCTION_ENTRY; MPI_Iallgatherv_prolog (sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm, r); int ret = MPI_Iallgatherv_core (sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm, r); MPI_Iallgatherv_epilog (sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm, r); return ret; } void mpif_iallgatherv_(void *sbuf, int *scount, MPI_Fint *sd, void *rbuf, int *rcount, int *displs, MPI_Fint *rd, MPI_Fint *c, MPI_Fint *r, int *error) { FUNCTION_ENTRY; MPI_Datatype c_stype = MPI_Type_f2c(*sd); MPI_Datatype c_rtype = MPI_Type_f2c(*rd); MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Request c_req = MPI_Request_f2c(*r); MPI_Iallgatherv_prolog(sbuf, *scount, c_stype, rbuf, rcount, displs, c_rtype, c_comm, r); *error = MPI_Iallgatherv_core(sbuf, *scount, c_stype, rbuf, rcount, displs, c_rtype, c_comm, &c_req); *r = MPI_Request_c2f(c_req); MPI_Iallgatherv_epilog(sbuf, *scount, c_stype, rbuf, rcount, displs, c_rtype, c_comm, r); } #endif eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_startall.c0000644000000000000000000000013212544237152022502 xustar0030 mtime=1435582058.563899951 30 atime=1508138897.196450386 30 ctime=1508162368.057935617 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_startall.c0000644000175000017500000000271212544237152023673 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Startall_prolog(int count, void*req, size_t size) { int i; for (i = 0; i < count; i++) /* we can't use &req[i] here since req may be an array of MPI_Request or MPI_Fint * (which may have different size) */ EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_START, (app_ptr)((void*)req + (i*size))); } static int MPI_Startall_core(int count, MPI_Request *req) { return libMPI_Startall(count, req); } int MPI_Startall(int count, MPI_Request *req) { FUNCTION_ENTRY; MPI_Startall_prolog(count, req, sizeof(MPI_Request)); int ret = MPI_Startall_core(count, req); return ret; } void mpif_startall_(int*count, MPI_Fint *reqs, int*error) { FUNCTION_ENTRY; int i; ALLOCATE_ITEMS(MPI_Request, *count, c_req, p_req); for (i = 0; i < *count; i++) p_req[i] = MPI_Request_f2c(reqs[i]); MPI_Startall_prolog(*count, reqs, sizeof(MPI_Fint)); *error = MPI_Startall_core(*count, p_req); for (i = 0; i < *count; i++) reqs[i] = MPI_Request_c2f(p_req[i]); FREE_ITEMS(*count, p_req); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_testsome.c0000644000000000000000000000013212544237152022517 xustar0030 mtime=1435582058.563899951 30 atime=1508138899.088497638 30 ctime=1508162368.061935967 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_testsome.c0000644000175000017500000000367612544237152023722 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static int MPI_Testsome_core(int incount, MPI_Request *reqs, int *outcount, int *indexes, MPI_Status *statuses) { return libMPI_Testsome(incount, reqs, outcount, indexes, statuses); } static void MPI_Testsome_epilog(int incount __attribute__((unused)), void *reqs, int *outcount, int *indexes __attribute__((unused)), MPI_Status *statuses __attribute__((unused)), size_t size) { if (*outcount) { int i; for (i = 0; i < *outcount; i++) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_TEST_SUCCESS, (app_ptr) ((void*)reqs + (i*size))); } } } int MPI_Testsome(int incount, MPI_Request *reqs, int *outcount, int *indexes, MPI_Status *statuses) { FUNCTION_ENTRY; int res = MPI_Testsome_core(incount, reqs, outcount, indexes, statuses); MPI_Testsome_epilog(incount, reqs, outcount, indexes, statuses, sizeof(MPI_Request)); return res; } void mpif_testsome_(int *ic, MPI_Fint *r, int* oc, int* indexes, MPI_Status *s, int *error) { FUNCTION_ENTRY; int i; ALLOCATE_ITEMS(MPI_Request, *ic, c_req, p_req); for (i = 0; i < *ic; i++) p_req[i] = MPI_Request_f2c(r[i]); *error = MPI_Testsome_core(*ic, p_req, oc, indexes, s); for (i = 0; i < *ic; i++) r[i] = MPI_Request_c2f(p_req[i]); MPI_Testsome_epilog(*ic, r, oc, indexes, s, sizeof(MPI_Fint)); FREE_ITEMS(*ic, p_req); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_iprobe.c0000644000000000000000000000013113143047722022131 xustar0030 mtime=1502367698.668456214 30 atime=1508138893.412355881 29 ctime=1508162368.03793387 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_iprobe.c0000644000175000017500000000354413143047722023327 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static int MPI_Iprobe_core(int source, int tag, MPI_Comm comm, int *flag, MPI_Status *status) { return libMPI_Iprobe(source, tag, comm, flag, status); } static void MPI_Iprobe_epilog(int source __attribute__((unused)), int tag __attribute__((unused)), MPI_Comm comm __attribute__((unused)), int *flag, MPI_Status *status) { if (*flag) { int length = -1; MPI_Get_count(status, MPI_BYTE, &length); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_IPROBE_SUCCESS, status->MPI_SOURCE, status->MPI_TAG, length); } #if 0 /* comment out in order to avoid spamming the output trace * when the application perform a busy waiting like this: * do { iprobe(); } while(!success); */ else { EZTRACE_EVENT_PACKED_2(EZTRACE_MPI_IPROBE_FAILED, source, tag); } #endif } int MPI_Iprobe(int source, int tag, MPI_Comm comm, int *flag, MPI_Status *status) { FUNCTION_ENTRY; int ret = MPI_Iprobe_core(source, tag, comm, flag, status); MPI_Iprobe_epilog(source, tag, comm, flag, status); return ret; } void mpif_iprobe_(int* source, int* tag, MPI_Fint* comm, int *flag, MPI_Status *status, int* err) { FUNCTION_ENTRY; MPI_Comm c_comm = MPI_Comm_f2c(*comm); *err = MPI_Iprobe_core(*source, *tag, c_comm, flag, status); MPI_Iprobe_epilog(*source, *tag, c_comm, flag, status); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_put.c0000644000000000000000000000013213143047722021462 xustar0030 mtime=1502367698.672456313 30 atime=1508138893.532358878 30 ctime=1508162368.041934219 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_put.c0000644000175000017500000000641313143047722022655 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Put_prolog(CONST void *origin_addr __attribute__((unused)), int origin_count __attribute__((unused)), MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp __attribute__((unused)), int target_count, MPI_Datatype target_datatype, MPI_Win win __attribute__((unused))) { int osize; MPI_Type_size(origin_datatype, &osize); int tsize; MPI_Type_size(target_datatype, &tsize); /* FIXME: this is interpreted as a mpi_send, but it should not ! */ EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_START_PUT, target_count*tsize, target_rank, 0); } static int MPI_Put_core(CONST void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win) { return libMPI_Put(origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, target_datatype, win); } static void MPI_Put_epilog(CONST void *origin_addr __attribute__((unused)), int origin_count __attribute__((unused)), MPI_Datatype origin_datatype __attribute__((unused)), int target_rank __attribute__((unused)), MPI_Aint target_disp __attribute__((unused)), int target_count __attribute__((unused)), MPI_Datatype target_datatype __attribute__((unused)), MPI_Win win __attribute__((unused))) { EZTRACE_EVENT_PACKED_0(EZTRACE_MPI_STOP_PUT); } int MPI_Put(CONST void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win) { FUNCTION_ENTRY; MPI_Put_prolog(origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, target_datatype, win); int ret = MPI_Put_core(origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, target_datatype, win); MPI_Put_epilog(origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, target_datatype, win); return ret; } void mpif_put_(void *o_addr, int *o_count, MPI_Fint *o_d, int *t_rank, MPI_Aint *t_disp, int *t_count, MPI_Fint *t_d, MPI_Fint *win, int *error) { FUNCTION_ENTRY; MPI_Datatype c_otype = MPI_Type_f2c(*o_d); MPI_Datatype c_ttype = MPI_Type_f2c(*t_d); MPI_Win c_win = MPI_Win_f2c(*win); MPI_Put_prolog(o_addr, *o_count, c_otype, *t_rank, *t_disp, *t_count, c_ttype, c_win); *error = MPI_Put_core(o_addr, *o_count, c_otype, *t_rank, *t_disp, *t_count, c_ttype, c_win); MPI_Put_epilog(o_addr, *o_count, c_otype, *t_rank, *t_disp, *t_count, c_ttype, c_win); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_gatherv.c0000644000000000000000000000013113143047722022311 xustar0030 mtime=1502367698.664456116 30 atime=1508138893.360354582 29 ctime=1508162368.03393352 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_gatherv.c0000644000175000017500000000663213143047722023510 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Gatherv_prolog(CONST void *sendbuf __attribute__((unused)), int sendcnt, MPI_Datatype sendtype, void *recvbuf __attribute__((unused)), CONST int *recvcnts __attribute__((unused)), CONST int *displs __attribute__((unused)), MPI_Datatype recvtype, int root, MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize; MPI_Type_size(sendtype, &ssize); int data_size = ssize * sendcnt; EZTRACE_EVENT_PACKED_5(EZTRACE_MPI_START_Gatherv, (app_ptr)comm, size, rank, data_size, root); } static int MPI_Gatherv_core(CONST void *sendbuf, int sendcnt, MPI_Datatype sendtype, void *recvbuf, CONST int *recvcnts, CONST int *displs, MPI_Datatype recvtype, int root, MPI_Comm comm) { return libMPI_Gatherv(sendbuf, sendcnt, sendtype, recvbuf, recvcnts, displs, recvtype, root, comm); } static void MPI_Gatherv_epilog(CONST void *sendbuf __attribute__((unused)), int sendcnt __attribute__((unused)), MPI_Datatype sendtype, void *recvbuf __attribute__((unused)), CONST int *recvcnts __attribute__((unused)), CONST int *displs __attribute__((unused)), MPI_Datatype recvtype, int root __attribute__((unused)), MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_STOP_Gatherv, (app_ptr)comm, size, rank); } int MPI_Gatherv(CONST void *sendbuf, int sendcnt, MPI_Datatype sendtype, void *recvbuf, CONST int *recvcnts, CONST int *displs, MPI_Datatype recvtype, int root, MPI_Comm comm) { FUNCTION_ENTRY; MPI_Gatherv_prolog(sendbuf, sendcnt, sendtype, recvbuf, recvcnts, displs, recvtype, root, comm); int ret = MPI_Gatherv_core(sendbuf, sendcnt, sendtype, recvbuf, recvcnts, displs, recvtype, root, comm); MPI_Gatherv_epilog(sendbuf, sendcnt, sendtype, recvbuf, recvcnts, displs, recvtype, root, comm); return ret; } void mpif_gatherv_(void *sbuf, int *scount, MPI_Fint *sd, void *rbuf, int *rcount, int *displs, MPI_Fint *rd, int *root, MPI_Fint *c, int *error) { FUNCTION_ENTRY; MPI_Datatype c_stype = MPI_Type_f2c(*sd); MPI_Datatype c_rtype = MPI_Type_f2c(*rd); MPI_Comm c_comm = MPI_Comm_f2c(*c); void *c_sbuf = CHECK_MPI_IN_PLACE(sbuf); void *c_rbuf = CHECK_MPI_IN_PLACE(rbuf); MPI_Gatherv_prolog(c_sbuf, *scount, c_stype, c_rbuf, rcount, displs, c_rtype, *root, c_comm); *error = MPI_Gatherv_core(c_sbuf, *scount, c_stype, c_rbuf, rcount, displs, c_rtype, *root, c_comm); MPI_Gatherv_epilog(c_sbuf, *scount, c_stype, c_rbuf, rcount, displs, c_rtype, *root, c_comm); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_allgatherv.c0000644000000000000000000000013113143047722023002 xustar0030 mtime=1502367698.664456116 29 atime=1508138890.27627756 30 ctime=1508162368.025932821 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_allgatherv.c0000644000175000017500000000670313143047722024200 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Allgatherv_prolog (CONST void *sendbuf __attribute__((unused)), int sendcount, MPI_Datatype sendtype, void *recvbuf __attribute__((unused)), CONST int *recvcounts __attribute__((unused)), CONST int *displs __attribute__((unused)), MPI_Datatype recvtype, MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int dsize; /* retrieve the size of the datatype so that we can compute the message length */ MPI_Type_size(sendtype, &dsize); int data_size = sendcount * dsize; EZTRACE_EVENT_PACKED_4(EZTRACE_MPI_START_Allgatherv, (app_ptr)comm, size, rank, data_size); } static int MPI_Allgatherv_core (CONST void *sendbuf __attribute__((unused)), int sendcount, MPI_Datatype sendtype, void *recvbuf __attribute__((unused)), CONST int *recvcounts __attribute__((unused)), CONST int *displs __attribute__((unused)), MPI_Datatype recvtype, MPI_Comm comm) { return libMPI_Allgatherv(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm); } static void MPI_Allgatherv_epilog (CONST void __attribute__((unused)) *sendbuf, int sendcount, MPI_Datatype sendtype, void __attribute__((unused)) *recvbuf, CONST int __attribute__((unused)) *recvcounts, CONST int __attribute__((unused)) *displs, MPI_Datatype recvtype, MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_STOP_Allgatherv, (app_ptr)comm, size, rank); } int MPI_Allgatherv (CONST void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, CONST int *recvcounts, CONST int *displs, MPI_Datatype recvtype, MPI_Comm comm) { FUNCTION_ENTRY; MPI_Allgatherv_prolog(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm); int ret = MPI_Allgatherv_core(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm); MPI_Allgatherv_epilog(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm); return ret; } void mpif_allgatherv_(void *sbuf, int *scount, MPI_Fint *sd, void *rbuf, int *rcount, int *displs, MPI_Fint *rd, MPI_Fint *c, int *error) { FUNCTION_ENTRY; MPI_Datatype c_stype = MPI_Type_f2c(*sd); MPI_Datatype c_rtype = MPI_Type_f2c(*rd); MPI_Comm c_comm = MPI_Comm_f2c(*c); void *c_sbuf = CHECK_MPI_IN_PLACE(sbuf); void *c_rbuf = CHECK_MPI_IN_PLACE(rbuf); MPI_Allgatherv_prolog(c_sbuf, *scount, c_stype, c_rbuf, rcount, displs, c_rtype, c_comm); *error = MPI_Allgatherv_core(c_sbuf, *scount, c_stype, c_rbuf, rcount, displs, c_rtype, c_comm); MPI_Allgatherv_epilog(c_sbuf, *scount, c_stype, c_rbuf, rcount, displs, c_rtype, c_comm); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_ssend_init.c0000644000000000000000000000013212544237152023013 xustar0030 mtime=1435582058.563899951 30 atime=1508138896.556434401 30 ctime=1508162368.057935617 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_ssend_init.c0000644000175000017500000000367212544237152024212 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static int MPI_Ssend_init_core(CONST void* buffer, int count, MPI_Datatype type, int dest, int tag, MPI_Comm comm, MPI_Request *req) { return libMPI_Ssend_init(buffer, count, type, dest, tag, comm, req); } static void MPI_Ssend_init_epilog(CONST void* buffer, int count, MPI_Datatype type, int dest, int tag, MPI_Comm comm, MPI_Fint *req) { int size; MPI_Type_size(type, &size); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_SSEND_INIT, buffer, count*size, dest); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_Info, tag, (app_ptr)comm, (app_ptr)req); } int MPI_Ssend_init(CONST void* buffer, int count, MPI_Datatype type, int dest, int tag, MPI_Comm comm, MPI_Request *req) { FUNCTION_ENTRY; int ret = MPI_Ssend_init_core(buffer, count, type, dest, tag, comm, req); MPI_Ssend_init_epilog(buffer, count, type, dest, tag, comm, (MPI_Fint*) req); return ret; } void mpif_ssend_init_(void*buffer, int*count, MPI_Fint*type, int*dest, int*tag, MPI_Fint*comm, MPI_Fint *req, int*error) { FUNCTION_ENTRY; MPI_Datatype c_type = MPI_Type_f2c(*type); MPI_Comm c_comm = MPI_Comm_f2c(*comm); MPI_Request c_req = MPI_Request_f2c(*req); *error = MPI_Ssend_init_core(buffer, *count, c_type, *dest, *tag, c_comm, &c_req); *req = MPI_Request_c2f(c_req); MPI_Ssend_init_epilog(buffer, *count, c_type, *dest, *tag, c_comm, req); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_bsend.c0000644000000000000000000000013113143047722021744 xustar0030 mtime=1502367698.664456116 30 atime=1508138890.108273364 29 ctime=1508162368.02993317 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_bsend.c0000644000175000017500000000401113143047722023130 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Bsend_prolog (CONST void* buf __attribute__((unused)), int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) { int size; MPI_Type_size(datatype, &size); EZTRACE_EVENT_PACKED_4(EZTRACE_MPI_START_BSEND, count*size, dest, tag, (app_ptr)comm); } static int MPI_Bsend_core(CONST void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) { return libMPI_Bsend(buf, count, datatype, dest, tag, comm); } static void MPI_Bsend_epilog (CONST void* buf __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) { int size; MPI_Type_size(datatype, &size); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_STOP_BSEND, dest, tag, (app_ptr)comm); } int MPI_Bsend(CONST void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) { FUNCTION_ENTRY; MPI_Bsend_prolog(buf, count, datatype, dest, tag, comm); int ret = MPI_Bsend_core(buf, count, datatype, dest, tag, comm); MPI_Bsend_epilog(buf, count, datatype, dest, tag, comm); return ret; } void mpif_bsend_(void *buf, int *count, MPI_Fint *d, int *dest, int *tag, MPI_Fint *c, int *error) { FUNCTION_ENTRY; MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Datatype c_type = MPI_Type_f2c(*d); MPI_Bsend_prolog(buf, *count, c_type, *dest, *tag, c_comm); *error = MPI_Bsend_core(buf, *count, c_type, *dest, *tag, c_comm); MPI_Bsend_epilog(buf, *count, c_type, *dest, *tag, c_comm); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_rsend.c0000644000000000000000000000013213143047722021765 xustar0030 mtime=1502367698.672456313 30 atime=1508138896.184425111 30 ctime=1508162368.045934568 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_rsend.c0000644000175000017500000000376513143047722023167 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Rsend_prolog (CONST void* buf __attribute__((unused)), int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) { int size; MPI_Type_size(datatype, &size); EZTRACE_EVENT_PACKED_4(EZTRACE_MPI_START_RSEND, count*size, dest, tag, (app_ptr)comm); } static int MPI_Rsend_core(CONST void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) { return libMPI_Rsend(buf, count, datatype, dest, tag, comm); } static void MPI_Rsend_epilog (CONST void* buf __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype __attribute__((unused)), int dest, int tag, MPI_Comm comm) { EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_STOP_RSEND, dest, tag, (app_ptr)comm); } int MPI_Rsend(CONST void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) { FUNCTION_ENTRY; MPI_Rsend_prolog(buf, count, datatype, dest, tag, comm); int ret = MPI_Rsend_core(buf, count, datatype, dest, tag, comm); MPI_Rsend_epilog(buf, count, datatype, dest, tag, comm); return ret; } void mpif_rsend_(void *buf, int *count, MPI_Fint *d, int *dest, int *tag, MPI_Fint *c, int *error) { FUNCTION_ENTRY; MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Datatype c_type = MPI_Type_f2c(*d); MPI_Rsend_prolog(buf, *count, c_type, *dest, *tag, c_comm); *error = MPI_Rsend_core(buf, *count, c_type, *dest, *tag, c_comm); MPI_Rsend_epilog(buf, *count, c_type, *dest, *tag, c_comm); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_ireduce_scatter.c0000644000000000000000000000013213143047722024017 xustar0030 mtime=1502367698.668456214 30 atime=1508138902.388580055 30 ctime=1508162368.081937715 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_ireduce_scatter.c0000644000175000017500000000532113143047722025207 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © CNRS, INRIA, Université Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" #ifdef USE_MPI3 static void MPI_Ireduce_scatter_prolog (CONST void *sendbuf __attribute__((unused)), void *recvbuf __attribute__((unused)), CONST int *recvcnts __attribute__((unused)), MPI_Datatype datatype, MPI_Op op __attribute__((unused)), MPI_Comm comm, MPI_Request *r) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize; MPI_Type_size(datatype, &ssize); int data_size = ssize * recvcnts[0]; EZTRACE_EVENT_PACKED_5(EZTRACE_MPI_IREDUCE_SCATTER, (app_ptr)comm, size, rank, (app_ptr)r, data_size); } static int MPI_Ireduce_scatter_core (CONST void *sendbuf, void *recvbuf, CONST int *recvcnts, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *r) { return libMPI_Ireduce_scatter (sendbuf, recvbuf, recvcnts, datatype, op, comm, r); } static void MPI_Ireduce_scatter_epilog (CONST void *sendbuf __attribute__((unused)), void *recvbuf __attribute__((unused)), CONST int *recvcnts __attribute__((unused)), MPI_Datatype datatype __attribute__((unused)), MPI_Op op __attribute__((unused)), MPI_Comm comm __attribute__((unused)), MPI_Request *r) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_STOP_IREDUCE_SCATTER, (app_ptr)r); } int MPI_Ireduce_scatter (CONST void *sendbuf, void *recvbuf, CONST int *recvcnts, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *r) { FUNCTION_ENTRY; MPI_Ireduce_scatter_prolog (sendbuf, recvbuf, recvcnts, datatype, op, comm, r); int ret = MPI_Ireduce_scatter_core (sendbuf, recvbuf, recvcnts, datatype, op, comm, r); MPI_Ireduce_scatter_epilog (sendbuf, recvbuf, recvcnts, datatype, op, comm, r); return ret; } void mpif_ireduce_scatter_(void *sbuf, void *rbuf, int *rcount, MPI_Fint *d, MPI_Fint *op, MPI_Fint *c, MPI_Fint *r, int *error) { FUNCTION_ENTRY; MPI_Datatype c_type = MPI_Type_f2c(*d); MPI_Op c_op = MPI_Op_f2c(*op); MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Request c_req = MPI_Request_f2c(*r); MPI_Ireduce_scatter_prolog(sbuf, rbuf, rcount, c_type, c_op, c_comm, r); *error = MPI_Ireduce_scatter_core(sbuf, rbuf, rcount, c_type, c_op, c_comm, &c_req); *r = MPI_Request_c2f(c_req); MPI_Ireduce_scatter_epilog(sbuf, rbuf, rcount, c_type, c_op, c_comm, r); } #endif eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_start.c0000644000000000000000000000013213122455275022012 xustar0030 mtime=1498045117.555728387 30 atime=1508138896.472432304 30 ctime=1508162368.057935617 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_start.c0000644000175000017500000000172413122455275023205 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Start_prolog(MPI_Fint *req) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_START, (app_ptr)req); } static int MPI_Start_core(MPI_Request *req) { return libMPI_Start(req); } int MPI_Start(MPI_Request *req) { FUNCTION_ENTRY; MPI_Start_prolog((MPI_Fint*) req); int ret = MPI_Start_core(req); return ret; } void mpif_start_(MPI_Fint *req, int*error) { FUNCTION_ENTRY; MPI_Request c_req = MPI_Request_f2c(*req); MPI_Start_prolog(req); *error = MPI_Start_core(&c_req); *req = MPI_Request_c2f(c_req); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_testall.c0000644000000000000000000000013213143047722022322 xustar0030 mtime=1502367698.672456313 30 atime=1508138896.932443792 30 ctime=1508162368.057935617 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_testall.c0000644000175000017500000000306113143047722023511 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static int MPI_Testall_core(int count, MPI_Request *reqs, int *flag, MPI_Status *s) { return libMPI_Testall(count, reqs, flag, s); } static void MPI_Testall_epilog(int count, MPI_Fint *reqs, int *flag, MPI_Status *s __attribute__((unused)), size_t size) { if (*flag) { int i; for (i = 0; i < count; i++) EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_TEST_SUCCESS, (app_ptr)((void*)reqs + (i*size))); } } int MPI_Testall(int count, MPI_Request *reqs, int *flag, MPI_Status *s) { FUNCTION_ENTRY; int ret = MPI_Testall_core(count, reqs, flag, s); MPI_Testall_epilog(count, (void*)reqs, flag, s, sizeof(MPI_Request)); return ret; } void mpif_testall_(int *count, MPI_Fint *r, int *index, MPI_Status *s, int *error) { FUNCTION_ENTRY; int i; ALLOCATE_ITEMS(MPI_Request, *count, c_req, p_req); for (i = 0; i < *count; i++) p_req[i] = MPI_Request_f2c(r[i]); *error = MPI_Testall_core(*count, p_req, index, s); for (i = 0; i < *count; i++) r[i] = MPI_Request_c2f(p_req[i]); MPI_Testall_epilog(*count, r, index, s, sizeof(MPI_Fint)); FREE_ITEMS(*count, p_req); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_bcast.c0000644000000000000000000000013113143047722021745 xustar0030 mtime=1502367698.664456116 30 atime=1508138890.124273764 29 ctime=1508162368.02993317 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_bcast.c0000644000175000017500000000423413143047722023140 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Bcast_prolog(void *buffer __attribute__((unused)), int count, MPI_Datatype datatype, int root, MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize=0; if(datatype != MPI_DATATYPE_NULL) MPI_Type_size(datatype, &ssize); int data_size = count * ssize; EZTRACE_EVENT_PACKED_5(EZTRACE_MPI_START_BCast, (app_ptr)comm, size, rank, root, data_size); } static int MPI_Bcast_core(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm) { return libMPI_Bcast(buffer, count, datatype, root, comm); } static void MPI_Bcast_epilog(void *buffer __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype, int __attribute__((unused)) root, MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_STOP_BCast, (app_ptr)comm, size, rank); } int MPI_Bcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm) { FUNCTION_ENTRY; MPI_Bcast_prolog(buffer, count, datatype, root, comm); int ret = MPI_Bcast_core(buffer, count, datatype, root, comm); MPI_Bcast_epilog(buffer, count, datatype, root, comm); return ret; } void mpif_bcast_(void *buf, int *count, MPI_Fint *d, int *root, MPI_Fint *c, int *error) { FUNCTION_ENTRY; MPI_Datatype c_type = MPI_Type_f2c(*d); MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Bcast_prolog(buf, *count, c_type, *root, c_comm); *error = MPI_Bcast_core(buf, *count, c_type, *root, c_comm); MPI_Bcast_epilog(buf, *count, c_type, *root, c_comm); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_allreduce.c0000644000000000000000000000013213143047722022612 xustar0030 mtime=1502367698.664456116 30 atime=1508138890.208275861 30 ctime=1508162368.025932821 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_allreduce.c0000644000175000017500000000514013143047722024001 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Allreduce_prolog (CONST void *sendbuf __attribute__((unused)), void *recvbuf __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype, MPI_Op op __attribute__((unused)), MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int len; MPI_Type_size(datatype, &len); int data_size = count * len; EZTRACE_EVENT_PACKED_4(EZTRACE_MPI_START_Allreduce, (app_ptr)comm, size, rank, data_size); } static int MPI_Allreduce_core(CONST void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) { return libMPI_Allreduce(sendbuf, recvbuf, count, datatype, op, comm); } static void MPI_Allreduce_epilog (CONST void *sendbuf __attribute__((unused)), void *recvbuf __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype, MPI_Op op __attribute__((unused)), MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int len; MPI_Type_size(datatype, &len); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_STOP_Allreduce, (app_ptr)comm, size, rank); } int MPI_Allreduce (CONST void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) { FUNCTION_ENTRY; MPI_Allreduce_prolog(sendbuf, recvbuf, count, datatype, op, comm); int ret = MPI_Allreduce_core(sendbuf, recvbuf, count, datatype, op, comm); MPI_Allreduce_epilog(sendbuf, recvbuf, count, datatype, op, comm); return ret; } void mpif_allreduce_(void *sbuf, void *rbuf, int *count, MPI_Fint *d, MPI_Fint *op, MPI_Fint *c, int *error) { FUNCTION_ENTRY; MPI_Datatype c_type = MPI_Type_f2c(*d); MPI_Op c_op = MPI_Op_f2c(*op); MPI_Comm c_comm = MPI_Comm_f2c(*c); void *c_sbuf = CHECK_MPI_IN_PLACE(sbuf); void *c_rbuf = CHECK_MPI_IN_PLACE(rbuf); MPI_Allreduce_prolog(c_sbuf, c_rbuf, *count, c_type, c_op, c_comm); *error = MPI_Allreduce_core(c_sbuf, c_rbuf, *count, c_type, c_op, c_comm); MPI_Allreduce_epilog(c_sbuf, c_rbuf, *count, c_type, c_op, c_comm); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_issend.c0000644000000000000000000000013213143047722022137 xustar0030 mtime=1502367698.672456313 30 atime=1508138893.540359078 30 ctime=1508162368.041934219 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_issend.c0000644000175000017500000000447113143047722023334 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Issend_prolog (CONST void* buf __attribute__((unused)), int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Fint *req) { int size; MPI_Type_size(datatype, &size); EZTRACE_EVENT_PACKED_5(EZTRACE_MPI_ISSEND, count*size, dest, tag, (app_ptr)req, (app_ptr)comm); } static int MPI_Issend_core(CONST void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *req) { return libMPI_Issend(buf, count, datatype, dest, tag, comm, req); } static void MPI_Issend_epilog (CONST void* buf __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype __attribute__((unused)), int dest __attribute__((unused)), int tag __attribute__((unused)), MPI_Comm comm __attribute__((unused)), MPI_Fint *req) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_STOP_ISSEND, (app_ptr)req); } int MPI_Issend(CONST void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *req) { FUNCTION_ENTRY; MPI_Issend_prolog(buf, count, datatype, dest, tag, comm, (MPI_Fint*) req); int ret = MPI_Issend_core(buf, count, datatype, dest, tag, comm, req); MPI_Issend_epilog(buf, count, datatype, dest, tag, comm, (MPI_Fint*) req); return ret; } void mpif_issend_(void *buf, int *count, MPI_Fint *d, int *dest, int *tag, MPI_Fint *c, MPI_Fint *r, int *error) { FUNCTION_ENTRY; MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Datatype c_type = MPI_Type_f2c(*d); MPI_Request c_req = MPI_Request_f2c(*r); MPI_Issend_prolog(buf, *count, c_type, *dest, *tag, c_comm, r); *error = MPI_Issend_core(buf, *count, c_type, *dest, *tag, c_comm, &c_req); *r = MPI_Request_c2f(c_req); MPI_Issend_epilog(buf, *count, c_type, *dest, *tag, c_comm, r); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_testany.c0000644000000000000000000000013212544237152022343 xustar0030 mtime=1435582058.563899951 30 atime=1508138897.192450285 30 ctime=1508162368.061935967 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_testany.c0000644000175000017500000000336712544237152023543 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static int MPI_Testany_core(int count, MPI_Request *reqs, int *index, int *flag, MPI_Status *status) { return libMPI_Testany(count, reqs, index, flag, status); } static void MPI_Testany_epilog(int count __attribute__((unused)), void *reqs, int *index, int *flag, MPI_Status *status __attribute__((unused)), size_t size) { if (*flag) EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_TEST_SUCCESS, (app_ptr)((void*)reqs + ((*index)*size))); } int MPI_Testany(int count, MPI_Request *reqs, int *index, int *flag, MPI_Status *status) { FUNCTION_ENTRY; int ret = MPI_Testany_core(count, reqs, index, flag, status); MPI_Testany_epilog(count, reqs, index, flag, status, sizeof(MPI_Request)); return ret; } void mpif_testany_(int *count, MPI_Fint *r, int *index, int *flag, MPI_Status *s, int *error) { FUNCTION_ENTRY; int i; ALLOCATE_ITEMS(MPI_Request, *count, c_req, p_req); for (i = 0; i < *count; i++) p_req[i] = MPI_Request_f2c(r[i]); *error = MPI_Testany_core(*count, p_req, index, flag, s); for (i = 0; i < *count; i++) r[i] = MPI_Request_c2f(p_req[i]); MPI_Testany_epilog(*count, r, index, flag, s, sizeof(MPI_Fint)); FREE_ITEMS(*count, p_req); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_sendrecv_replace.c0000644000000000000000000000013213143047722024156 xustar0030 mtime=1502367698.672456313 30 atime=1508138896.476432403 30 ctime=1508162368.053935268 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_sendrecv_replace.c0000644000175000017500000000627413143047722025356 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Sendrecv_replace_prolog (void* buf __attribute__((unused)), int count, MPI_Datatype type, int dest, int sendtag, int src, int recvtag, MPI_Comm comm, MPI_Status *status __attribute__((unused))) { /* same as mpi_sendrecv but the same buffer is used for sending *and* receiving */ int size; MPI_Type_size(type, &size); EZTRACE_EVENT_PACKED_4(EZTRACE_MPI_START_SENDRECV_REPLACE, count * size, src, recvtag, (app_ptr)comm); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_Info, count * size, dest, sendtag); } static int MPI_Sendrecv_replace_core(void* buf, int count, MPI_Datatype type, int dest, int sendtag, int src, int recvtag, MPI_Comm comm, MPI_Status *status) { return libMPI_Sendrecv_replace(buf, count, type, dest, sendtag, src, recvtag, comm, status); } static void MPI_Sendrecv_replace_epilog (void* buf __attribute__((unused)), int count, MPI_Datatype type, int dest, int sendtag, int src, int recvtag, MPI_Comm comm, MPI_Status *status __attribute__((unused))) { int size; MPI_Type_size(type, &size); EZTRACE_EVENT_PACKED_4(EZTRACE_MPI_STOP_SENDRECV_REPLACE, count * size, dest, sendtag, (app_ptr)comm); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_Info, count * size, src, recvtag); } int MPI_Sendrecv_replace(void* buf, int count, MPI_Datatype type, int dest, int sendtag, int src, int recvtag, MPI_Comm comm, MPI_Status *status) { FUNCTION_ENTRY; MPI_Sendrecv_replace_prolog(buf, count, type, dest, sendtag, src, recvtag, comm, status); int ret = MPI_Sendrecv_replace_core(buf, count, type, dest, sendtag, src, recvtag, comm, status); MPI_Sendrecv_replace_epilog(buf, count, type, dest, sendtag, src, recvtag, comm, status); return ret; } void mpif_sendrecv_replace_(void* buf, int *count, MPI_Fint *type, int *dest, int *sendtag, int *src, int *recvtag, MPI_Fint *comm, MPI_Status *status, int *error) { FUNCTION_ENTRY; MPI_Comm c_comm = MPI_Comm_f2c(*comm); MPI_Datatype c_type = MPI_Type_f2c(*type); MPI_Sendrecv_replace_prolog(buf, *count, c_type, *dest, *sendtag, *src, *recvtag, c_comm, status); *error = MPI_Sendrecv_replace_core(buf, *count, c_type, *dest, *sendtag, *src, *recvtag, c_comm, status); MPI_Sendrecv_replace_epilog(buf, *count, c_type, *dest, *sendtag, *src, *recvtag, c_comm, status); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_recv.c0000644000000000000000000000013213143047722021611 xustar0030 mtime=1502367698.672456313 30 atime=1508138893.988370266 30 ctime=1508162368.041934219 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_recv.c0000644000175000017500000000454413143047722023007 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Recv_prolog(void *buf __attribute__((unused)), int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status __attribute__((unused))) { int size; MPI_Type_size(datatype, &size); EZTRACE_EVENT_PACKED_4(EZTRACE_MPI_START_RECV, count*size, source, tag, (app_ptr) comm); } static int MPI_Recv_core(void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status) { return libMPI_Recv(buf, count, datatype, source, tag, comm, status); } static void MPI_Recv_epilog(void *buf __attribute__((unused)), int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status __attribute__((unused))) { int size; EZTRACE_EVENT_PACKED_4(EZTRACE_MPI_STOP_RECV, count*size, source, tag, (app_ptr)comm); MPI_Type_size(datatype, &size); } /* C function */ int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status) { FUNCTION_ENTRY; MPI_Recv_prolog(buf, count, datatype, source, tag, comm, status); int ret = MPI_Recv_core(buf, count, datatype, source, tag, comm, status); MPI_Recv_epilog(buf, count, datatype, source, tag, comm, status); return ret; } /* fortran function */ void mpif_recv_(void *buf, int *count, MPI_Fint *d, int *src, int *tag, MPI_Fint *c, MPI_Fint *s, int *error) { FUNCTION_ENTRY; MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Datatype c_type = MPI_Type_f2c(*d); MPI_Status c_status; MPI_Recv_prolog(buf, *count, c_type, *src, *tag, c_comm, &c_status); *error = MPI_Recv_core(buf, *count, c_type, *src, *tag, c_comm, &c_status); MPI_Status_c2f(&c_status, s); MPI_Recv_epilog(buf, *count, c_type, *src, *tag, c_comm, &c_status); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_gather.c0000644000000000000000000000013113143047722022123 xustar0030 mtime=1502367698.664456116 30 atime=1508138893.252351885 29 ctime=1508162368.03393352 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_gather.c0000644000175000017500000000615113143047722023316 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Gather_prolog(CONST void *sendbuf __attribute__((unused)), int sendcnt, MPI_Datatype sendtype, void *recvbuf __attribute__((unused)), int recvcount __attribute__((unused)), MPI_Datatype recvtype, int root, MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize; MPI_Type_size(sendtype, &ssize); int data_size = ssize * sendcnt; EZTRACE_EVENT_PACKED_5(EZTRACE_MPI_START_Gather, (app_ptr)comm, size, rank, data_size, root); } static int MPI_Gather_core(CONST void *sendbuf, int sendcnt, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm) { return libMPI_Gather(sendbuf, sendcnt, sendtype, recvbuf, recvcount, recvtype, root, comm); } static void MPI_Gather_epilog(CONST void *sendbuf __attribute__((unused)), int sendcnt __attribute__((unused)), MPI_Datatype sendtype, void *recvbuf __attribute__((unused)), int recvcount __attribute__((unused)), MPI_Datatype recvtype, int root __attribute__((unused)), MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_STOP_Gather, (app_ptr)comm, size, rank); } int MPI_Gather(CONST void *sendbuf, int sendcnt, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm) { FUNCTION_ENTRY; MPI_Gather_prolog(sendbuf, sendcnt, sendtype, recvbuf, recvcount, recvtype, root, comm); int ret = MPI_Gather_core(sendbuf, sendcnt, sendtype, recvbuf, recvcount, recvtype, root, comm); MPI_Gather_epilog(sendbuf, sendcnt, sendtype, recvbuf, recvcount, recvtype, root, comm); return ret; } void mpif_gather_(void *sbuf, int *scount, MPI_Fint *sd, void *rbuf, int *rcount, MPI_Fint *rd, int *root, MPI_Fint *c, int *error) { FUNCTION_ENTRY; MPI_Datatype c_stype = MPI_Type_f2c(*sd); MPI_Datatype c_rtype = MPI_Type_f2c(*rd); MPI_Comm c_comm = MPI_Comm_f2c(*c); void *c_sbuf = CHECK_MPI_IN_PLACE(sbuf); void *c_rbuf = CHECK_MPI_IN_PLACE(rbuf); MPI_Gather_prolog(c_sbuf, *scount, c_stype, c_rbuf, *rcount, c_rtype, *root, c_comm); *error = MPI_Gather_core(c_sbuf, *scount, c_stype, c_rbuf, *rcount, c_rtype, *root, c_comm); MPI_Gather_epilog(c_sbuf, *scount, c_stype, c_rbuf, *rcount, c_rtype, *root, c_comm); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_cancel.c0000644000000000000000000000013213143047722022077 xustar0030 mtime=1502367698.664456116 30 atime=1508138902.488582552 30 ctime=1508162368.081937715 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_cancel.c0000644000175000017500000000167313143047722023275 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Cancel_prolog(MPI_Fint *req) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_CANCEL, (app_ptr)req); } static int MPI_Cancel_core(MPI_Request *request) { return libMPI_Cancel(request); } int MPI_Cancel(MPI_Request *req) { FUNCTION_ENTRY; MPI_Cancel_prolog((MPI_Fint*) req); int ret = MPI_Cancel_core(req); return ret; } void mpif_cancel_(MPI_Fint *r, int *error) { FUNCTION_ENTRY; MPI_Request c_req = MPI_Request_f2c(*r); MPI_Cancel_prolog(r); *error = MPI_Cancel_core(&c_req); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_igather.c0000644000000000000000000000013213143047722022275 xustar0030 mtime=1502367698.668456214 30 atime=1508138899.520508427 30 ctime=1508162368.069936665 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_igather.c0000644000175000017500000000603013143047722023463 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © CNRS, INRIA, Université Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" #ifdef USE_MPI3 static void MPI_Igather_prolog(CONST void *sendbuf __attribute__((unused)), int sendcnt __attribute__((unused)), MPI_Datatype sendtype, void *recvbuf __attribute__((unused)), int recvcount __attribute__((unused)), MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *r) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize; MPI_Type_size(sendtype, &ssize); int data_size = ssize * sendcnt; EZTRACE_EVENT_PACKED_6(EZTRACE_MPI_IGATHER, (app_ptr)comm, size, rank, (app_ptr)r, data_size, root); } static int MPI_Igather_core(CONST void *sendbuf, int sendcnt, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *r) { return libMPI_Igather(sendbuf, sendcnt, sendtype, recvbuf, recvcount, recvtype, root, comm, r); } static void MPI_Igather_epilog(CONST void *sendbuf __attribute__((unused)), int sendcnt __attribute__((unused)), MPI_Datatype sendtype __attribute__((unused)), void *recvbuf __attribute__((unused)), int recvcount __attribute__((unused)), MPI_Datatype recvtype __attribute__((unused)), int root __attribute__((unused)), MPI_Comm comm __attribute__((unused)), MPI_Request *r) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_STOP_IGATHER, (app_ptr)r); } int MPI_Igather(CONST void *sendbuf, int sendcnt, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *r) { FUNCTION_ENTRY; MPI_Igather_prolog(sendbuf, sendcnt, sendtype, recvbuf, recvcount, recvtype, root, comm, r); int ret = MPI_Igather_core(sendbuf, sendcnt, sendtype, recvbuf, recvcount, recvtype, root, comm, r); MPI_Igather_epilog(sendbuf, sendcnt, sendtype, recvbuf, recvcount, recvtype, root, comm, r); return ret; } void mpif_igather_(void *sbuf, int *scount, MPI_Fint *sd, void *rbuf, int *rcount, MPI_Fint *rd, int *root, MPI_Fint *c, MPI_Fint *r, int *error) { FUNCTION_ENTRY; MPI_Datatype c_stype = MPI_Type_f2c(*sd); MPI_Datatype c_rtype = MPI_Type_f2c(*rd); MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Request c_req = MPI_Request_f2c(*r); MPI_Igather_prolog(sbuf, *scount, c_stype, rbuf, *rcount, c_rtype, *root, c_comm, r); *error = MPI_Igather_core(sbuf, *scount, c_stype, rbuf, *rcount, c_rtype, *root, c_comm, &c_req); *r= MPI_Request_c2f(c_req); MPI_Igather_epilog(sbuf, *scount, c_stype, rbuf, *rcount, c_rtype, *root, c_comm, r); } #endif eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_waitall.c0000644000000000000000000000013213143047722022307 xustar0030 mtime=1502367698.672456313 30 atime=1508138899.348504131 30 ctime=1508162368.061935967 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_waitall.c0000644000175000017500000000512013143047722023474 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Waitall_prolog(int count, void*req, MPI_Status *s __attribute__((unused)), size_t size) { int i; /* we have to iterate over the array of requests so that eztrace_convert * know which requests the application is waiting for */ EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_START_WAITALL, count); for (i = 0; i < count; i++) { /* we can't use &req[i] here since req may be an array of MPI_Request or MPI_Fint * (which may have different size) */ EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_Info, (app_ptr)((void*)req + (i*size))); } } static int MPI_Waitall_core(int count, MPI_Request *req, MPI_Status *s) { return libMPI_Waitall(count, req, s); } static void MPI_Waitall_epilog(int count, void*req, MPI_Status *s __attribute__((unused)), size_t size) { int i; EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_STOP_WAITALL, count); for (i = 0; i < count; i++) { /* we can't use &req[i] here since req may be an array of MPI_Request or MPI_Fint * (which may have different size) */ EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_Info, (app_ptr)((void*)req + (i*size))); } } int MPI_Waitall(int count, MPI_Request *req, MPI_Status *s) { FUNCTION_ENTRY; MPI_Waitall_prolog(count, req, s, sizeof(MPI_Request)); int ret = MPI_Waitall_core(count, req, s); MPI_Waitall_epilog(count, req, s, sizeof(MPI_Request)); return ret; } void mpif_waitall_(int *c, MPI_Fint *r, MPI_Status *s, int *error) { FUNCTION_ENTRY; int i; MPI_Waitall_prolog(*c, r, s, sizeof(MPI_Fint)); /* allocate a MPI_Request array and convert all the fortran requests * into C requests */ ALLOCATE_ITEMS(MPI_Request, *c, c_req, p_req); for (i = 0; i < *c; i++) p_req[i] = MPI_Request_f2c(r[i]); /* call the C version of MPI_Wait */ *error = MPI_Waitall_core(*c, p_req, s); /* Since the requests may have been modified by MPI_Waitall, * we need to convert them back to Fortran */ for (i = 0; i < *c; i++) r[i] = MPI_Request_c2f(p_req[i]); MPI_Waitall_epilog(*c, r, s, sizeof(MPI_Fint)); FREE_ITEMS(*c, p_req); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_probe.c0000644000000000000000000000013213143047722021761 xustar0030 mtime=1502367698.672456313 30 atime=1508138893.544359177 30 ctime=1508162368.041934219 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_probe.c0000644000175000017500000000360213143047722023151 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Probe_prolog(int source __attribute__((unused)), int tag __attribute__((unused)), MPI_Comm comm __attribute__((unused)), MPI_Status *status __attribute__((unused))) { EZTRACE_EVENT_PACKED_0(EZTRACE_MPI_START_PROBE); } static int MPI_Probe_core(int source, int tag, MPI_Comm comm, MPI_Status *status) { return libMPI_Probe(source, tag, comm, status); } static void MPI_Probe_epilog(int source __attribute__((unused)), int tag __attribute__((unused)), MPI_Comm comm __attribute__((unused)), MPI_Status *status) { int length = -1; MPI_Get_count(status, MPI_BYTE, &length); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_STOP_PROBE, status->MPI_SOURCE, status->MPI_TAG, length); } int MPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status) { FUNCTION_ENTRY; MPI_Probe_prolog(source, tag, comm, status); int ret = MPI_Probe_core(source, tag, comm, status); MPI_Probe_epilog(source, tag, comm, status); return ret; } void mpif_probe_(int* source, int* tag, MPI_Fint* comm, MPI_Status *status, int* err) { FUNCTION_ENTRY; MPI_Comm c_comm = MPI_Comm_f2c(*comm); MPI_Probe_prolog(*source, *tag, c_comm, status); *err = MPI_Probe_core(*source, *tag, c_comm, status); MPI_Probe_epilog(*source, *tag, c_comm, status); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_wait.c0000644000000000000000000000013213143047722021616 xustar0030 mtime=1502367698.672456313 30 atime=1508138899.260501934 30 ctime=1508162368.061935967 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_wait.c0000644000175000017500000000254213143047722023010 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Wait_prolog(MPI_Fint *req, MPI_Status *s __attribute__((unused))) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_START_WAIT, (app_ptr)req); } static int MPI_Wait_core(MPI_Request *req, MPI_Status *s) { return libMPI_Wait(req, s); } static void MPI_Wait_epilog(MPI_Fint *req, MPI_Status *s __attribute__((unused))) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_STOP_WAIT, (app_ptr)req); } int MPI_Wait(MPI_Request *req, MPI_Status *s) { FUNCTION_ENTRY; MPI_Wait_prolog((MPI_Fint*) req, s); int ret = MPI_Wait_core(req, s); MPI_Wait_epilog((MPI_Fint*) req, s); return ret; } void mpif_wait_(MPI_Fint *r, MPI_Fint *s, int *error) { FUNCTION_ENTRY; MPI_Request c_req = MPI_Request_f2c(*r); MPI_Status c_status; MPI_Wait_prolog(r, &c_status); *error = MPI_Wait_core(&c_req, &c_status); MPI_Status_c2f(&c_status, s); MPI_Wait_epilog(r, &c_status); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_iallreduce.c0000644000000000000000000000013213143047722022763 xustar0030 mtime=1502367698.668456214 30 atime=1508138901.944568966 30 ctime=1508162368.077937365 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_iallreduce.c0000644000175000017500000000513613143047722024157 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © CNRS, INRIA, Université Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" #ifdef USE_MPI3 static void MPI_Iallreduce_prolog (CONST void *sendbuf __attribute__((unused)), void *recvbuf __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype, MPI_Op op __attribute__((unused)), MPI_Comm comm, MPI_Request *r) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int len; MPI_Type_size(datatype, &len); int data_size = count * len; EZTRACE_EVENT_PACKED_5(EZTRACE_MPI_IALLREDUCE, (app_ptr)comm, size, rank, (app_ptr)r, data_size); } static int MPI_Iallreduce_core (CONST void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *r) { return libMPI_Iallreduce (sendbuf, recvbuf, count, datatype, op, comm, r); } static void MPI_Iallreduce_epilog (CONST void *sendbuf __attribute__((unused)), void *recvbuf __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype __attribute__((unused)), MPI_Op op __attribute__((unused)), MPI_Comm comm __attribute__((unused)), MPI_Request *r) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_STOP_IALLREDUCE, (app_ptr)r); } int MPI_Iallreduce (CONST void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *r) { FUNCTION_ENTRY; MPI_Iallreduce_prolog (sendbuf, recvbuf, count, datatype, op, comm, r); int ret = MPI_Iallreduce_core (sendbuf, recvbuf, count, datatype, op, comm, r); MPI_Iallreduce_epilog (sendbuf, recvbuf, count, datatype, op, comm, r); return ret; } void mpif_iallreduce_(void *sbuf, void *rbuf, int *count, MPI_Fint *d, MPI_Fint *op, MPI_Fint *c, MPI_Fint *r, int *error) { FUNCTION_ENTRY; MPI_Datatype c_type = MPI_Type_f2c(*d); MPI_Op c_op = MPI_Op_f2c(*op); MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Request c_req = MPI_Request_f2c(*r); MPI_Iallreduce_prolog(sbuf, rbuf, *count, c_type, c_op, c_comm, r); *error = MPI_Iallreduce_core(sbuf, rbuf, *count, c_type, c_op, c_comm, &c_req); *r = MPI_Request_c2f(c_req); MPI_Iallreduce_epilog(sbuf, rbuf, *count, c_type, c_op, c_comm, r); } #endif eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_waitany.c0000644000000000000000000000013213143047722022326 xustar0030 mtime=1502367698.672456313 30 atime=1508138899.540508926 30 ctime=1508162368.065936316 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_waitany.c0000644000175000017500000000470713143047722023525 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Waitany_prolog(int count, void*reqs, int *index __attribute__((unused)), MPI_Status *status __attribute__((unused)), size_t size) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_START_WAITANY, count); int i; for (i = 0; i < count; i++) { /* we can't use &req[i] here since req may be an array of MPI_Request or MPI_Fint * (which may have different size) */ EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_Info, (app_ptr)((void*)reqs+(i*size))); } } static int MPI_Waitany_core(int count, MPI_Request *reqs, int *index, MPI_Status *status) { return libMPI_Waitany(count, reqs, index, status); } static void MPI_Waitany_epilog(int count, void *reqs, int *index, MPI_Status *status __attribute__((unused)), size_t size) { int i; EZTRACE_EVENT_PACKED_2(EZTRACE_MPI_STOP_WAITANY, count, *index); for (i = 0; i < count; i++) { /* we can't use &req[i] here since req may be an array of MPI_Request or MPI_Fint * (which may have different size) */ EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_Info, (app_ptr)((void*)reqs+(i*size))); } } int MPI_Waitany(int count, MPI_Request *reqs, int *index, MPI_Status *status) { FUNCTION_ENTRY; MPI_Waitany_prolog(count, reqs, index, status, sizeof(MPI_Request)); int ret = MPI_Waitany_core(count, reqs, index, status); MPI_Waitany_epilog(count, reqs, index, status, sizeof(MPI_Request)); return ret; } void mpif_waitany_(int *c, MPI_Fint *r, MPI_Status *s, int *index, int *error) { FUNCTION_ENTRY; int i; MPI_Waitany_prolog(*c, r, index, s, sizeof(MPI_Fint)); ALLOCATE_ITEMS(MPI_Request, *c, c_req, p_req); for (i = 0; i < *c; i++) p_req[i] = MPI_Request_f2c(r[i]); *error = MPI_Waitany_core(*c, p_req, index, s); for (i = 0; i < *c; i++) r[i] = MPI_Request_c2f(p_req[i]); MPI_Waitany_epilog(*c, r, index, s, sizeof(MPI_Fint)); FREE_ITEMS(*c, p_req); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_ireduce.c0000644000000000000000000000013213143047722022272 xustar0030 mtime=1502367698.668456214 30 atime=1508138900.256526808 30 ctime=1508162368.077937365 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_ireduce.c0000644000175000017500000000523313143047722023464 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © CNRS, INRIA, Université Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" #ifdef USE_MPI3 static void MPI_Ireduce_prolog (CONST void *sendbuf __attribute__((unused)), void *recvbuf __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype, MPI_Op op __attribute__((unused)), int root, MPI_Comm comm, MPI_Request *r) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize; MPI_Type_size(datatype, &ssize); int data_size = ssize * count; EZTRACE_EVENT_PACKED_6(EZTRACE_MPI_IREDUCE, (app_ptr)comm, size, rank, (app_ptr)r, data_size, root); } static int MPI_Ireduce_core (CONST void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm, MPI_Request *r) { return libMPI_Ireduce (sendbuf, recvbuf, count, datatype, op, root, comm, r); } static void MPI_Ireduce_epilog (CONST void *sendbuf __attribute__((unused)), void *recvbuf __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype __attribute__((unused)), MPI_Op op __attribute__((unused)), int root __attribute__((unused)), MPI_Comm comm __attribute__((unused)), MPI_Request *r) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_STOP_IREDUCE, (app_ptr)r); } int MPI_Ireduce (CONST void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm, MPI_Request *r) { FUNCTION_ENTRY; MPI_Ireduce_prolog (sendbuf, recvbuf, count, datatype, op, root, comm, r); int ret = MPI_Ireduce_core (sendbuf, recvbuf, count, datatype, op, root, comm, r); MPI_Ireduce_epilog (sendbuf, recvbuf, count, datatype, op, root, comm, r); return ret; } void mpif_ireduce_(void *sbuf, void *rbuf, int *count, MPI_Fint *d, MPI_Fint *op, int *root, MPI_Fint *c, MPI_Fint *r, int *error) { FUNCTION_ENTRY; MPI_Datatype c_type = MPI_Type_f2c(*d); MPI_Op c_op = MPI_Op_f2c(*op); MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Request c_req = MPI_Request_f2c(*r); MPI_Ireduce_prolog(sbuf, rbuf, *count, c_type, c_op, *root, c_comm, r); *error = MPI_Ireduce_core(sbuf, rbuf, *count, c_type, c_op, *root, c_comm, &c_req); *r = MPI_Request_c2f(c_req); MPI_Ireduce_epilog(sbuf, rbuf, *count, c_type, c_op, *root, c_comm, r); } #endif eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_iscatterv.c0000644000000000000000000000013213143047722022656 xustar0030 mtime=1502367698.668456214 30 atime=1508138899.600510425 30 ctime=1508162368.073937016 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_iscatterv.c0000644000175000017500000000662213143047722024053 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © CNRS, INRIA, Université Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" #ifdef USE_MPI3 static void MPI_Iscatterv_prolog(CONST void *sendbuf __attribute__((unused)), CONST int *sendcnts __attribute__((unused)), CONST int *displs __attribute__((unused)), MPI_Datatype sendtype __attribute__((unused)), void *recvbuf __attribute__((unused)), int recvcnt __attribute__((unused)), MPI_Datatype recvtype __attribute__((unused)), int root, MPI_Comm comm, MPI_Request *r) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize; MPI_Type_size(sendtype, &ssize); int data_size = ssize * sendcnts[0]; EZTRACE_EVENT_PACKED_6(EZTRACE_MPI_ISCATTERV, (app_ptr)comm, size, rank, (app_ptr)r, data_size, root); } static int MPI_Iscatterv_core(CONST void *sendbuf, CONST int *sendcnts, CONST int *displs, MPI_Datatype sendtype, void *recvbuf, int recvcnt, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *r) { return libMPI_Iscatterv(sendbuf, sendcnts, displs, sendtype, recvbuf, recvcnt, recvtype, root, comm, r); } static void MPI_Iscatterv_epilog(CONST void *sendbuf __attribute__((unused)), CONST int *sendcnts __attribute__((unused)), CONST int *displs __attribute__((unused)), MPI_Datatype sendtype __attribute__((unused)), void *recvbuf __attribute__((unused)), int recvcnt __attribute__((unused)), MPI_Datatype recvtype __attribute__((unused)), int root __attribute__((unused)), MPI_Comm comm __attribute__((unused)), MPI_Request *r) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_STOP_ISCATTERV, (app_ptr)r); } int MPI_Iscatterv(CONST void *sendbuf, CONST int *sendcnts, CONST int *displs, MPI_Datatype sendtype, void *recvbuf, int recvcnt, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *r) { FUNCTION_ENTRY; MPI_Iscatterv_prolog(sendbuf, sendcnts, displs, sendtype, recvbuf, recvcnt, recvtype, root, comm, r); int ret = MPI_Iscatterv_core(sendbuf, sendcnts, displs, sendtype, recvbuf, recvcnt, recvtype, root, comm, r); MPI_Iscatterv_epilog(sendbuf, sendcnts, displs, sendtype, recvbuf, recvcnt, recvtype, root, comm, r); return ret; } void mpif_iscatterv_(void *sbuf, int *scount, int *displs, MPI_Fint *sd, void *rbuf, int *rcount, MPI_Fint *rd, int *root, MPI_Fint *c, MPI_Fint *r, int *error) { FUNCTION_ENTRY; MPI_Datatype c_stype = MPI_Type_f2c(*sd); MPI_Datatype c_rtype = MPI_Type_f2c(*rd); MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Request c_req = MPI_Request_f2c(*r); MPI_Iscatterv_prolog(sbuf, scount, displs, c_stype, rbuf, *rcount, c_rtype, *root, c_comm, r); *error = MPI_Iscatterv_core(sbuf, scount, displs, c_stype, rbuf, *rcount, c_rtype, *root, c_comm, &c_req); *r= MPI_Request_c2f(c_req); MPI_Iscatterv_epilog(sbuf, scount, displs, c_stype, rbuf, *rcount, c_rtype, *root, c_comm, r); } #endif eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_reduce.c0000644000000000000000000000013213143047722022121 xustar0030 mtime=1502367698.672456313 30 atime=1508138894.088372764 30 ctime=1508162368.045934568 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_reduce.c0000644000175000017500000000540613143047722023315 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Reduce_prolog (CONST void *sendbuf __attribute__((unused)), void *recvbuf __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype, MPI_Op op __attribute__((unused)), int root, MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize; MPI_Type_size(datatype, &ssize); int data_size = ssize * count; EZTRACE_EVENT_PACKED_5(EZTRACE_MPI_START_Reduce, (app_ptr)comm, size, rank, data_size, root); } static int MPI_Reduce_core(CONST void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm) { return libMPI_Reduce(sendbuf, recvbuf, count, datatype, op, root, comm); } static void MPI_Reduce_epilog (CONST void *sendbuf __attribute__((unused)), void *recvbuf __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype, MPI_Op op __attribute__((unused)), int root __attribute__((unused)), MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int len; MPI_Type_size(datatype, &len); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_STOP_Reduce, (app_ptr)comm, size, rank); } int MPI_Reduce(CONST void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm) { FUNCTION_ENTRY; MPI_Reduce_prolog(sendbuf, recvbuf, count, datatype, op, root, comm); int ret = MPI_Reduce_core(sendbuf, recvbuf, count, datatype, op, root, comm); MPI_Reduce_epilog(sendbuf, recvbuf, count, datatype, op, root, comm); return ret; } void mpif_reduce_(void *sbuf, void *rbuf, int *count, MPI_Fint *d, MPI_Fint *op, int *root, MPI_Fint *c, int *error) { FUNCTION_ENTRY; MPI_Datatype c_type = MPI_Type_f2c(*d); MPI_Op c_op = MPI_Op_f2c(*op); MPI_Comm c_comm = MPI_Comm_f2c(*c); void *c_sbuf = CHECK_MPI_IN_PLACE(sbuf); void *c_rbuf = CHECK_MPI_IN_PLACE(rbuf); MPI_Reduce_prolog(c_sbuf, c_rbuf, *count, c_type, c_op, *root, c_comm); *error = MPI_Reduce_core(c_sbuf, c_rbuf, *count, c_type, c_op, *root, c_comm); MPI_Reduce_epilog(c_sbuf, c_rbuf, *count, c_type, c_op, *root, c_comm); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_ibsend.c0000644000000000000000000000013113143047722022115 xustar0030 mtime=1502367698.668456214 30 atime=1508138893.540359078 29 ctime=1508162368.03393352 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_ibsend.c0000644000175000017500000000447013143047722023312 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Ibsend_prolog (CONST void* buf __attribute__((unused)), int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Fint *req) { int size; MPI_Type_size(datatype, &size); EZTRACE_EVENT_PACKED_5(EZTRACE_MPI_IBSEND, count*size, dest, tag, (app_ptr)req, (app_ptr)comm); } static int MPI_Ibsend_core(CONST void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *req) { return libMPI_Ibsend(buf, count, datatype, dest, tag, comm, req); } static void MPI_Ibsend_epilog (CONST void* buf __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype __attribute__((unused)), int dest __attribute__((unused)), int tag __attribute__((unused)), MPI_Comm comm __attribute__((unused)), MPI_Fint *req) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_STOP_IBSEND, (app_ptr)req); } int MPI_Ibsend(CONST void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *req) { FUNCTION_ENTRY; MPI_Ibsend_prolog(buf, count, datatype, dest, tag, comm, (MPI_Fint*) req); int ret = MPI_Ibsend_core(buf, count, datatype, dest, tag, comm, req); MPI_Ibsend_epilog(buf, count, datatype, dest, tag, comm, (MPI_Fint*) req); return ret; } void mpif_ibsend_(void *buf, int *count, MPI_Fint *d, int *dest, int *tag, MPI_Fint *c, MPI_Fint *r, int *error) { FUNCTION_ENTRY; MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Datatype c_type = MPI_Type_f2c(*d); MPI_Request c_req = MPI_Request_f2c(*r); MPI_Ibsend_prolog(buf, *count, c_type, *dest, *tag, c_comm, r); *error = MPI_Ibsend_core(buf, *count, c_type, *dest, *tag, c_comm, &c_req); *r = MPI_Request_c2f(c_req); MPI_Ibsend_epilog(buf, *count, c_type, *dest, *tag, c_comm, r); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_send_init.c0000644000000000000000000000013212544237152022630 xustar0030 mtime=1435582058.563899951 30 atime=1508138896.588435201 30 ctime=1508162368.053935268 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_send_init.c0000644000175000017500000000410712544237152024021 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static int MPI_Send_init_core(CONST void* buffer, int count, MPI_Datatype type, int dest, int tag, MPI_Comm comm, MPI_Request *req) { return libMPI_Send_init(buffer, count, type, dest, tag, comm, req); } static void MPI_Send_init_epilog(CONST void* buffer, int count, MPI_Datatype type, int dest, int tag, MPI_Comm comm, MPI_Fint *req) { int size; MPI_Type_size(type, &size); /* We need to record the events after mpi_send_init since * it may modify the request. * If we don't, req may have an invalid value. */ EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_SEND_INIT, (app_ptr)buffer, count*size, dest); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_Info, tag, (app_ptr)comm, (app_ptr)req); } int MPI_Send_init(CONST void* buffer, int count, MPI_Datatype type, int dest, int tag, MPI_Comm comm, MPI_Request *req) { FUNCTION_ENTRY; int ret = MPI_Send_init_core(buffer, count, type, dest, tag, comm, req); MPI_Send_init_epilog(buffer, count, type, dest, tag, comm, (MPI_Fint*) req); return ret; } void mpif_send_init_(void*buffer, int*count, MPI_Fint*type, int*dest, int*tag, MPI_Fint*comm, MPI_Fint *req, int*error) { FUNCTION_ENTRY; MPI_Datatype c_type = MPI_Type_f2c(*type); MPI_Comm c_comm = MPI_Comm_f2c(*comm); MPI_Request c_req = MPI_Request_f2c(*req); *error = MPI_Send_init_core(buffer, *count, c_type, *dest, *tag, c_comm, &c_req); *req = MPI_Request_c2f(c_req); MPI_Send_init_epilog(buffer, *count, c_type, *dest, *tag, c_comm, req); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_ibarrier.c0000644000000000000000000000013213143047722022451 xustar0030 mtime=1502367698.668456214 30 atime=1508138899.516508328 30 ctime=1508162368.065936316 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_ibarrier.c0000644000175000017500000000265313143047722023646 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © CNRS, INRIA, Université Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" #ifdef USE_MPI3 static void MPI_Ibarrier_prolog (MPI_Comm c, MPI_Fint *r) { int rank = -1; int size = -1; libMPI_Comm_size(c, &size); libMPI_Comm_rank(c, &rank); EZTRACE_EVENT_PACKED_4 (EZTRACE_MPI_IBARRIER, (app_ptr)c, rank, size, (app_ptr)r); } static int MPI_Ibarrier_core (MPI_Comm c, MPI_Request *r) { return libMPI_Ibarrier(c, r); } static void MPI_Ibarrier_epilog (MPI_Comm c, MPI_Fint *r) { EZTRACE_EVENT_PACKED_1 (EZTRACE_MPI_STOP_IBARRIER, (app_ptr)r); } int MPI_Ibarrier (MPI_Comm c, MPI_Request *req) { FUNCTION_ENTRY; MPI_Ibarrier_prolog(c, (MPI_Fint*)req); int ret = MPI_Ibarrier_core(c, req); MPI_Ibarrier_epilog(c, (MPI_Fint*)req); return ret; } void mpif_ibarrier_(MPI_Fint *c, MPI_Fint *r, int *error) { FUNCTION_ENTRY; MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Request c_req = MPI_Request_f2c(*r); MPI_Ibarrier_prolog(c_comm, r); *error = MPI_Ibarrier_core(c_comm, &c_req); *r= MPI_Request_c2f(c_req); MPI_Ibarrier_epilog(c_comm, r); } #endif eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_sendrecv.c0000644000000000000000000000013213143047722022463 xustar0030 mtime=1502367698.672456313 30 atime=1508138896.572434801 30 ctime=1508162368.053935268 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_sendrecv.c0000644000175000017500000000772113143047722023661 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Sendrecv_prolog (CONST void *sendbuf __attribute__((unused)), int sendcount, MPI_Datatype sendtype, int dest, int sendtag, void *recvbuf __attribute__((unused)), int recvcount, MPI_Datatype recvtype, int src, int recvtag, MPI_Comm comm, MPI_Status *status __attribute__((unused))) { int ssize, rsize; MPI_Type_size(sendtype, &ssize); MPI_Type_size(recvtype, &rsize); EZTRACE_EVENT_PACKED_4(EZTRACE_MPI_START_SENDRECV, recvcount * rsize, src, recvtag, (app_ptr)comm); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_Info, sendcount * ssize, dest, sendtag); } static int MPI_Sendrecv_core(CONST void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int sendtag, void *recvbuf, int recvcount, MPI_Datatype recvtype, int src, int recvtag, MPI_Comm comm, MPI_Status *status) { return libMPI_Sendrecv(sendbuf, sendcount, sendtype, dest, sendtag, recvbuf, recvcount, recvtype, src, recvtag, comm, status); } static void MPI_Sendrecv_epilog (CONST void *sendbuf __attribute__((unused)), int sendcount __attribute__((unused)), MPI_Datatype sendtype __attribute__((unused)), int dest __attribute__((unused)), int sendtag __attribute__((unused)), void *recvbuf __attribute__((unused)), int recvcount, MPI_Datatype recvtype, int src, int recvtag, MPI_Comm comm, MPI_Status *status __attribute__((unused))) { int ssize, rsize; MPI_Type_size(sendtype, &ssize); MPI_Type_size(recvtype, &rsize); EZTRACE_EVENT_PACKED_4(EZTRACE_MPI_STOP_SENDRECV, recvcount * rsize, src, recvtag, (app_ptr)comm); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_Info, sendcount * ssize, dest, sendtag); } int MPI_Sendrecv(CONST void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int sendtag, void *recvbuf, int recvcount, MPI_Datatype recvtype, int src, int recvtag, MPI_Comm comm, MPI_Status *status) { FUNCTION_ENTRY; MPI_Sendrecv_prolog(sendbuf, sendcount, sendtype, dest, sendtag, recvbuf, recvcount, recvtype, src, recvtag, comm, status); int ret = MPI_Sendrecv_core(sendbuf, sendcount, sendtype, dest, sendtag, recvbuf, recvcount, recvtype, src, recvtag, comm, status); MPI_Sendrecv_epilog(sendbuf, sendcount, sendtype, dest, sendtag, recvbuf, recvcount, recvtype, src, recvtag, comm, status); return ret; } void mpif_sendrecv_(void *sendbuf, int *sendcount, MPI_Fint *sendtype, int *dest, int *sendtag, void *recvbuf, int *recvcount, MPI_Fint *recvtype, int *src, int *recvtag, MPI_Fint *comm, MPI_Status *status, int *error) { FUNCTION_ENTRY; MPI_Comm c_comm = MPI_Comm_f2c(*comm); MPI_Datatype c_stype = MPI_Type_f2c(*sendtype); MPI_Datatype c_rtype = MPI_Type_f2c(*recvtype); MPI_Sendrecv_prolog(sendbuf, *sendcount, c_stype, *dest, *sendtag, recvbuf, *recvcount, c_rtype, *src, *recvtag, c_comm, status); *error = MPI_Sendrecv_core(sendbuf, *sendcount, c_stype, *dest, *sendtag, recvbuf, *recvcount, c_rtype, *src, *recvtag, c_comm, status); MPI_Sendrecv_epilog(sendbuf, *sendcount, c_stype, *dest, *sendtag, recvbuf, *recvcount, c_rtype, *src, *recvtag, c_comm, status); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_barrier.c0000644000000000000000000000013113143047722022277 xustar0030 mtime=1502367698.664456116 30 atime=1508138890.208275861 29 ctime=1508162368.02993317 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_barrier.c0000644000175000017500000000243413143047722023472 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Barrier_prolog(MPI_Comm c) { int rank = -1; int size = -1; libMPI_Comm_size(c, &size); libMPI_Comm_rank(c, &rank); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_START_BARRIER, (app_ptr)c, rank, size); } static int MPI_Barrier_core(MPI_Comm c) { return libMPI_Barrier(c); } static void MPI_Barrier_epilog(MPI_Comm c) { int rank = -1; int size = -1; libMPI_Comm_size(c, &size); libMPI_Comm_rank(c, &rank); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_STOP_BARRIER, (app_ptr)c, rank, size); } int MPI_Barrier(MPI_Comm c) { FUNCTION_ENTRY; MPI_Barrier_prolog(c); int ret = MPI_Barrier_core(c); MPI_Barrier_epilog(c); return ret; } void mpif_barrier_(MPI_Fint *c, int *error) { FUNCTION_ENTRY; MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Barrier_prolog(c_comm); *error = MPI_Barrier_core(c_comm); MPI_Barrier_epilog(c_comm); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_alltoallv.c0000644000000000000000000000013113143047722022643 xustar0030 mtime=1502367698.664456116 30 atime=1508138890.292277959 29 ctime=1508162368.02993317 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_alltoallv.c0000644000175000017500000000763213143047722024043 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Alltoallv_prolog (CONST void *sendbuf __attribute__((unused)), CONST int *sendcnts __attribute__((unused)), CONST int *sdispls __attribute__((unused)), MPI_Datatype sendtype, void *recvbuf __attribute__((unused)), CONST int *recvcnts __attribute__((unused)), CONST int *rdispls __attribute__((unused)), MPI_Datatype recvtype, MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize=0; int rsize =0; if(sendtype != MPI_DATATYPE_NULL) MPI_Type_size(sendtype, &ssize); if(recvtype != MPI_DATATYPE_NULL) MPI_Type_size(recvtype, &rsize); int data_size = sendcnts[0] * ssize; EZTRACE_EVENT_PACKED_4(EZTRACE_MPI_START_Alltoallv, (app_ptr)comm, size, rank, data_size); } static int MPI_Alltoallv_core(CONST void *sendbuf, CONST int *sendcnts, CONST int *sdispls, MPI_Datatype sendtype, void *recvbuf, CONST int *recvcnts, CONST int *rdispls, MPI_Datatype recvtype, MPI_Comm comm) { return libMPI_Alltoallv(sendbuf, sendcnts, sdispls, sendtype, recvbuf, recvcnts, rdispls, recvtype, comm); } static void MPI_Alltoallv_epilog (CONST void *sendbuf __attribute__((unused)), CONST int *sendcnts __attribute__((unused)), CONST int *sdispls __attribute__((unused)), MPI_Datatype sendtype, void *recvbuf __attribute__((unused)), CONST int *recvcnts __attribute__((unused)), CONST int *rdispls __attribute__((unused)), MPI_Datatype recvtype, MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize=0; int rsize =0; if(sendtype != MPI_DATATYPE_NULL) MPI_Type_size(sendtype, &ssize); if(recvtype != MPI_DATATYPE_NULL) MPI_Type_size(recvtype, &rsize); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_STOP_Alltoallv, (app_ptr)comm, size, rank); } int MPI_Alltoallv(CONST void *sendbuf, CONST int *sendcnts, CONST int *sdispls, MPI_Datatype sendtype, void *recvbuf, CONST int *recvcnts, CONST int *rdispls, MPI_Datatype recvtype, MPI_Comm comm) { FUNCTION_ENTRY; MPI_Alltoallv_prolog(sendbuf, sendcnts, sdispls, sendtype, recvbuf, recvcnts, rdispls, recvtype, comm); int ret = MPI_Alltoallv_core(sendbuf, sendcnts, sdispls, sendtype, recvbuf, recvcnts, rdispls, recvtype, comm); MPI_Alltoallv_epilog(sendbuf, sendcnts, sdispls, sendtype, recvbuf, recvcnts, rdispls, recvtype, comm); return ret; } void mpif_alltoallv_(void *sbuf, int *scount, int *sdispls, MPI_Fint *sd, void *rbuf, int *rcount, int *rdispls, MPI_Fint *rd, MPI_Fint *c, int *error) { FUNCTION_ENTRY; MPI_Datatype c_stype = MPI_Type_f2c(*sd); MPI_Datatype c_rtype = MPI_Type_f2c(*rd); MPI_Comm c_comm = MPI_Comm_f2c(*c); void *c_sbuf = CHECK_MPI_IN_PLACE(sbuf); void *c_rbuf = CHECK_MPI_IN_PLACE(rbuf); MPI_Alltoallv_prolog(c_sbuf, scount, sdispls, c_stype, c_rbuf, rcount, rdispls, c_rtype, c_comm); *error = MPI_Alltoallv_core(c_sbuf, scount, sdispls, c_stype, c_rbuf, rcount, rdispls, c_rtype, c_comm); MPI_Alltoallv_epilog(c_sbuf, scount, sdispls, c_stype, c_rbuf, rcount, rdispls, c_rtype, c_comm); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_irsend.c0000644000000000000000000000013113143047722022135 xustar0030 mtime=1502367698.668456214 30 atime=1508138893.328353783 29 ctime=1508162368.03793387 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_irsend.c0000644000175000017500000000447113143047722023333 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Irsend_prolog (CONST void* buf __attribute__((unused)), int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Fint *req) { int size; MPI_Type_size(datatype, &size); EZTRACE_EVENT_PACKED_5(EZTRACE_MPI_IRSEND, count*size, dest, tag, (app_ptr)req, (app_ptr)comm); } static int MPI_Irsend_core(CONST void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *req) { return libMPI_Irsend(buf, count, datatype, dest, tag, comm, req); } static void MPI_Irsend_epilog (CONST void* buf __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype __attribute__((unused)), int dest __attribute__((unused)), int tag __attribute__((unused)), MPI_Comm comm __attribute__((unused)), MPI_Fint *req) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_STOP_IRSEND, (app_ptr)req); } int MPI_Irsend(CONST void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *req) { FUNCTION_ENTRY; MPI_Irsend_prolog(buf, count, datatype, dest, tag, comm, (MPI_Fint*) req); int ret = MPI_Irsend_core(buf, count, datatype, dest, tag, comm, req); MPI_Irsend_epilog(buf, count, datatype, dest, tag, comm, (MPI_Fint*) req); return ret; } void mpif_irsend_(void *buf, int *count, MPI_Fint *d, int *dest, int *tag, MPI_Fint *c, MPI_Fint *r, int *error) { FUNCTION_ENTRY; MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Datatype c_type = MPI_Type_f2c(*d); MPI_Request c_req = MPI_Request_f2c(*r); MPI_Irsend_prolog(buf, *count, c_type, *dest, *tag, c_comm, r); *error = MPI_Irsend_core(buf, *count, c_type, *dest, *tag, c_comm, &c_req); *r = MPI_Request_c2f(c_req); MPI_Irsend_epilog(buf, *count, c_type, *dest, *tag, c_comm, r); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_ssend.c0000644000000000000000000000013213143047722021766 xustar0030 mtime=1502367698.672456313 30 atime=1508138896.992445291 30 ctime=1508162368.053935268 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_ssend.c0000644000175000017500000000377113143047722023165 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Ssend_prolog (CONST void* buf __attribute__((unused)), int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) { int size; MPI_Type_size(datatype, &size); EZTRACE_EVENT_PACKED_4(EZTRACE_MPI_START_SSEND, count*size, dest, tag, (app_ptr)comm); } static int MPI_Ssend_core(CONST void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) { return libMPI_Ssend(buf, count, datatype, dest, tag, comm); } static void MPI_Ssend_epilog (CONST void* buf __attribute__((unused)), int count __attribute__((unused)), MPI_Datatype datatype __attribute__((unused)), int dest, int tag, MPI_Comm comm) { EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_STOP_SSEND, dest, tag, (app_ptr)comm); } int MPI_Ssend(CONST void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) { FUNCTION_ENTRY; MPI_Ssend_prolog(buf, count, datatype, dest, tag, comm); int ret = MPI_Ssend_core(buf, count, datatype, dest, tag, comm); MPI_Ssend_epilog(buf, count, datatype, dest, tag, comm); return ret; } void mpif_ssend_(void *buf, int *count, MPI_Fint *d, int *dest, int *tag, MPI_Fint *c, int *error) { FUNCTION_ENTRY; MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Datatype c_type = MPI_Type_f2c(*d); MPI_Ssend_prolog(buf, *count, c_type, *dest, *tag, c_comm); *error = MPI_Ssend_core(buf, *count, c_type, *dest, *tag, c_comm); MPI_Ssend_epilog(buf, *count, c_type, *dest, *tag, c_comm); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_igatherv.c0000644000000000000000000000013113143047722022462 xustar0030 mtime=1502367698.668456214 29 atime=1508138899.79251522 30 ctime=1508162368.069936665 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_igatherv.c0000644000175000017500000000625613143047722023663 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © CNRS, INRIA, Université Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" #ifdef USE_MPI3 static void MPI_Igatherv_prolog(CONST void *sendbuf __attribute__((unused)), int sendcnt __attribute__((unused)), MPI_Datatype sendtype, void *recvbuf __attribute__((unused)), CONST int *recvcnts __attribute__((unused)), CONST int *displs __attribute__((unused)), MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *r) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize; MPI_Type_size(sendtype, &ssize); int data_size = ssize * sendcnt; EZTRACE_EVENT_PACKED_6(EZTRACE_MPI_IGATHERV, (app_ptr)comm, size, rank, (app_ptr)r, data_size, root); } static int MPI_Igatherv_core(CONST void *sendbuf, int sendcnt, MPI_Datatype sendtype, void *recvbuf, CONST int *recvcnts, CONST int *displs, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *r) { return libMPI_Igatherv(sendbuf, sendcnt, sendtype, recvbuf, recvcnts, displs, recvtype, root, comm, r); } static void MPI_Igatherv_epilog(CONST void *sendbuf __attribute__((unused)), int sendcnt __attribute__((unused)), MPI_Datatype sendtype __attribute__((unused)), void *recvbuf __attribute__((unused)), CONST int *recvcnts __attribute__((unused)), CONST int *displs __attribute__((unused)), MPI_Datatype recvtype __attribute__((unused)), int root __attribute__((unused)), MPI_Comm comm __attribute__((unused)), MPI_Request *r) { EZTRACE_EVENT_PACKED_1(EZTRACE_MPI_STOP_IGATHERV, (app_ptr)r); } int MPI_Igatherv(CONST void *sendbuf, int sendcnt, MPI_Datatype sendtype, void *recvbuf, CONST int *recvcnts, CONST int *displs, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *r) { FUNCTION_ENTRY; MPI_Igatherv_prolog(sendbuf, sendcnt, sendtype, recvbuf, recvcnts, displs, recvtype, root, comm, r); int ret = MPI_Igatherv_core(sendbuf, sendcnt, sendtype, recvbuf, recvcnts, displs, recvtype, root, comm, r); MPI_Igatherv_epilog(sendbuf, sendcnt, sendtype, recvbuf, recvcnts, displs, recvtype, root, comm, r); return ret; } void mpif_igatherv_(void *sbuf, int *scount, MPI_Fint *sd, void *rbuf, int *rcount, int *displs, MPI_Fint *rd, int *root, MPI_Fint *c, MPI_Fint *r,int *error) { FUNCTION_ENTRY; MPI_Datatype c_stype = MPI_Type_f2c(*sd); MPI_Datatype c_rtype = MPI_Type_f2c(*rd); MPI_Comm c_comm = MPI_Comm_f2c(*c); MPI_Request c_req = MPI_Request_f2c(*r); MPI_Igatherv_prolog(sbuf, *scount, c_stype, rbuf, rcount, displs, c_rtype, *root, c_comm, r); *error = MPI_Igatherv_core(sbuf, *scount, c_stype, rbuf, rcount, displs, c_rtype, *root, c_comm, &c_req); *r= MPI_Request_c2f(c_req); MPI_Igatherv_epilog(sbuf, *scount, c_stype, rbuf, rcount, displs, c_rtype, *root, c_comm, r); } #endif eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_reduce_scatter.c0000644000000000000000000000013213143047722023646 xustar0030 mtime=1502367698.672456313 30 atime=1508138894.332378857 30 ctime=1508162368.045934568 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_reduce_scatter.c0000644000175000017500000000555413143047722025046 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Reduce_scatter_prolog (CONST void *sendbuf __attribute__((unused)), void *recvbuf __attribute__((unused)), CONST int *recvcnts __attribute__((unused)), MPI_Datatype datatype, MPI_Op op __attribute__((unused)), MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int ssize; MPI_Type_size(datatype, &ssize); int data_size = ssize * recvcnts[0]; EZTRACE_EVENT_PACKED_4(EZTRACE_MPI_START_Reduce_scatter, (app_ptr)comm, size, rank, data_size); } static int MPI_Reduce_scatter_core(CONST void *sendbuf, void *recvbuf, CONST int *recvcnts, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) { return libMPI_Reduce_scatter(sendbuf, recvbuf, recvcnts, datatype, op, comm); } static void MPI_Reduce_scatter_epilog (CONST void *sendbuf __attribute__((unused)), void *recvbuf __attribute__((unused)), CONST int *recvcnts __attribute__((unused)), MPI_Datatype datatype, MPI_Op op __attribute__((unused)), MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int len; MPI_Type_size(datatype, &len); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_STOP_Reduce_scatter, (app_ptr)comm, size, rank); } int MPI_Reduce_scatter(CONST void *sendbuf, void *recvbuf, CONST int *recvcnts, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) { FUNCTION_ENTRY; MPI_Reduce_scatter_prolog(sendbuf, recvbuf, recvcnts, datatype, op, comm); int ret = MPI_Reduce_scatter_core(sendbuf, recvbuf, recvcnts, datatype, op, comm); MPI_Reduce_scatter_epilog(sendbuf, recvbuf, recvcnts, datatype, op, comm); return ret; } void mpif_reduce_scatter_(void *sbuf, void *rbuf, int *rcount, MPI_Fint *d, MPI_Fint *op, MPI_Fint *c, int *error) { FUNCTION_ENTRY; MPI_Datatype c_type = MPI_Type_f2c(*d); MPI_Op c_op = MPI_Op_f2c(*op); MPI_Comm c_comm = MPI_Comm_f2c(*c); void *c_sbuf = CHECK_MPI_IN_PLACE(sbuf); void *c_rbuf = CHECK_MPI_IN_PLACE(rbuf); MPI_Reduce_scatter_prolog(c_sbuf, c_rbuf, rcount, c_type, c_op, c_comm); *error = MPI_Reduce_scatter_core(c_sbuf, c_rbuf, rcount, c_type, c_op, c_comm); MPI_Reduce_scatter_epilog(c_sbuf, c_rbuf, rcount, c_type, c_op, c_comm); } eztrace-1.1-7/src/modules/mpi/mpi_funcs/PaxHeaders.7332/mpi_allgather.c0000644000000000000000000000013213143047722022615 xustar0030 mtime=1502367698.664456116 30 atime=1508138890.224276261 30 ctime=1508162368.025932821 eztrace-1.1-7/src/modules/mpi/mpi_funcs/mpi_allgather.c0000644000175000017500000000636513143047722024016 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 #define _REENTRANT #include #include #include #include #include #include #include #include #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" static void MPI_Allgather_prolog(CONST void __attribute__((unused)) *sendbuf, int sendcount, MPI_Datatype sendtype, void __attribute__((unused)) *recvbuf, int __attribute__((unused)) recvcount, MPI_Datatype recvtype, MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); int dsize; /* retrieve the size of the datatype so that we can compute the message length */ MPI_Type_size(sendtype, &dsize); int data_size = sendcount * dsize; EZTRACE_EVENT_PACKED_4(EZTRACE_MPI_START_Allgather, (app_ptr)comm, size, rank, data_size); } static int MPI_Allgather_core(CONST void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm) { return libMPI_Allgather(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm); } static void MPI_Allgather_epilog(CONST void __attribute__((unused)) *sendbuf, int sendcount, MPI_Datatype sendtype, void __attribute__((unused)) *recvbuf, int __attribute__((unused)) recvcount, MPI_Datatype recvtype, MPI_Comm comm) { int rank = -1; int size = -1; libMPI_Comm_size(comm, &size); libMPI_Comm_rank(comm, &rank); EZTRACE_EVENT_PACKED_3(EZTRACE_MPI_STOP_Allgather, (app_ptr)comm, size, rank); } int MPI_Allgather(CONST void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm) { FUNCTION_ENTRY; MPI_Allgather_prolog(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm); int ret = MPI_Allgather_core(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm); MPI_Allgather_epilog(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm); return ret; } void mpif_allgather_(void *sbuf, int *scount, MPI_Fint *sd, void *rbuf, int *rcount, MPI_Fint *rd, MPI_Fint *c, int *error) { FUNCTION_ENTRY; MPI_Datatype c_stype = MPI_Type_f2c(*sd); MPI_Datatype c_rtype = MPI_Type_f2c(*rd); MPI_Comm c_comm = MPI_Comm_f2c(*c); void *c_sbuf = CHECK_MPI_IN_PLACE(sbuf); void *c_rbuf = CHECK_MPI_IN_PLACE(rbuf); MPI_Allgather_prolog(c_sbuf, *scount, c_stype, c_rbuf, *rcount, c_rtype, c_comm); *error = MPI_Allgather_core(c_sbuf, *scount, c_stype, c_rbuf, *rcount, c_rtype, c_comm); MPI_Allgather_epilog(c_sbuf, *scount, c_stype, c_rbuf, *rcount, c_rtype, c_comm); } eztrace-1.1-7/src/modules/mpi/PaxHeaders.7332/eztrace_convert_mpi_p2p.c0000644000000000000000000000013213012560437022643 xustar0030 mtime=1479205151.284727238 30 atime=1508138889.944269268 30 ctime=1508162368.085938064 eztrace-1.1-7/src/modules/mpi/eztrace_convert_mpi_p2p.c0000644000175000017500000005143513012560437024042 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE /* See feature_test_macros(7) */ #include #include #include "mpi_ev_codes.h" #include "eztrace_convert_mpi_p2p.h" #include "eztrace_list.h" #include "eztrace_array.h" #include "eztrace_convert.h" #include "eztrace_convert_mpi.h" #include "eztrace_hierarchical_array.h" #if 0 /* Value of MPI_ANY_SOURCE */ extern int __MPI_ANY_SOURCE; /* Value of MPI_ANY_TAG */ extern uint32_t __MPI_ANY_TAG; #endif enum pending_comm_status_t { NONE_DONE = 1, IRECV_DONE = 2, ISEND_DONE = 4, RWAIT_DONE = 8, SWAIT_DONE = 16, }; struct mpi_pending_comm { struct ezt_list_token_t token; struct mpi_p2p_msg_t *msg; enum pending_comm_status_t status; }; void init_mpi_p2p_messages() { hierarchical_array_attach(EZTRACE_MPI_P2P_ID, sizeof(struct mpi_p2p_msg_t)); hierarchical_array_attach(EZTRACE_MPI_P2P_ISEND_ID, sizeof(struct p2p_msg_event)); hierarchical_array_attach(EZTRACE_MPI_P2P_IRECV_ID, sizeof(struct p2p_msg_event)); hierarchical_array_attach(EZTRACE_MPI_P2P_SWAIT_ID, sizeof(struct p2p_msg_event)); hierarchical_array_attach(EZTRACE_MPI_P2P_RWAIT_ID, sizeof(struct p2p_msg_event)); hierarchical_array_attach(MPI_REQUEST_ID, sizeof(struct mpi_request)); } void __print_mpi_req(struct mpi_request *req) { printf("req %p(ptr %p, type %d): msg %p(src=%d, dest=%d, len=%d)\n", req, (void *) req->ptr, req->req_type, req->msg, req->msg->src, req->msg->dest, req->msg->len); } void __print_mpi_requests_recurse(unsigned depth, p_eztrace_container p_cont) { unsigned i; int index; struct hierarchical_array* array = hierarchical_array_find(MPI_REQUEST_ID, p_cont); assert(array); for (index = (array->nb_items) - 1; index >= 0; index--) { struct mpi_request *req = NULL; req = ITH_ITEM(index, array); assert(req); for (i = 0; i < depth; i++) printf(" "); __print_mpi_req(req); } for (i = 0; i < p_cont->nb_children; i++) { __print_mpi_requests_recurse(depth + 1, p_cont->children[i]); } } void __print_mpi_requests() { int i; for (i = 0; i < NB_TRACES; i++) { p_eztrace_container p_cont = GET_PROCESS_CONTAINER(i); __print_mpi_requests_recurse(0, p_cont); } } void __print_p2p_message_header(FILE *stream) { fprintf(stream, "# src\tdest\tlen\ttag"); fprintf(stream, "\tStart_Isend_tick\tStop_Isend_tick\tSWait_tick\tWait_done_tick"); fprintf(stream, "\tStart_Irecv_tick\tStop_Irecv_tick\tRWait_tick\tWait_done_tick"); fprintf(stream, "\tSender_request\tReceiver_request"); fprintf(stream, "\n"); } void __print_p2p_message(FILE *stream, struct mpi_p2p_msg_t *msg) { fprintf(stream, "%d\t%d\t%d\t%x", msg->src, msg->dest, msg->len, msg->tag); int i; for (i = 0; i < P2P_NB_TIMES; i++) fprintf(stream, "\t%lu", msg->times[i]); fprintf(stream, "\t%p\t%p", msg->sender_request, msg->recver_request); fprintf(stream, "\n"); } void __print_p2p_messages_recurse(FILE *stream, unsigned depth, p_eztrace_container p_cont) { unsigned i; int index; struct hierarchical_array* array = hierarchical_array_find(EZTRACE_MPI_P2P_ID, p_cont); assert(array); for (index = (array->nb_items) - 1; index >= 0; index--) { struct mpi_p2p_msg_t *msg = NULL; msg = ITH_ITEM(index, array); assert(msg); for (i = 0; i < depth; i++) printf(" "); __print_p2p_message(stream, msg); } for (i = 0; i < p_cont->nb_children; i++) { __print_p2p_messages_recurse(stream, depth + 1, p_cont->children[i]); } } void __print_p2p_messages(FILE*stream) { int i; __print_p2p_message_header(stream); for (i = 0; i < NB_TRACES; i++) { /* reduce each trace counter */ p_eztrace_container p_cont = GET_PROCESS_CONTAINER(i); __print_p2p_messages_recurse(stream, 0, p_cont); } } void __record_event(uint64_t time, p_eztrace_container p_cont, int event_type, struct mpi_p2p_msg_t *p_msg) { struct p2p_msg_event* msg = hierarchical_array_new_item(p_cont, event_type); msg->time = time; msg->msg = p_msg; } /* create a new p2p message and store it. */ struct mpi_p2p_msg_t* __new_p2p_message( char* id, int src, int dest, int len, uint32_t tag, int unexp, char* link_value, const char* sender_thread_id, const struct mpi_request* sender_request, const char* recver_thread_id, const struct mpi_request* recver_request) { struct mpi_p2p_msg_t* msg = hierarchical_array_new_item( GET_PROCESS_CONTAINER(dest), EZTRACE_MPI_P2P_ID); assert(msg); assert(dest >= 0); msg->id = id; msg->src = src; msg->dest = dest; msg->len = len; msg->tag = tag; msg->unexp = unexp; /* set to 1 if the recv is detected before the send */ int i; for (i = 0; i < P2P_NB_TIMES; i++) msg->times[i] = TIME_INIT; msg->link_value = link_value; msg->sender_thread_id = sender_thread_id; msg->recver_thread_id = recver_thread_id; msg->sender_request = sender_request; msg->recver_request = recver_request; return msg; } /* create a new mpi request and store it. */ struct mpi_request* __mpi_new_mpi_request(int rank, app_ptr mpi_req, enum mpi_request_type req_type) { struct eztrace_container_t* container = GET_PROCESS_CONTAINER(rank_to_trace_id[rank]); struct mpi_request* req = hierarchical_array_new_item(container, MPI_REQUEST_ID); assert(req); req->container = container; req->ptr = mpi_req; req->req_type = req_type; req->msg = NULL; req->status = mpi_req_status_none; return req; } /* find an mpi request */ struct mpi_request* __mpi_find_mpi_req(int rank, app_ptr mpi_req, enum mpi_request_type req_type) { struct hierarchical_array *array = hierarchical_array_find( MPI_REQUEST_ID, GET_PROCESS_CONTAINER(rank_to_trace_id[rank])); assert(array); int index; struct mpi_request* req = NULL; for (index = (array->nb_items) - 1; index >= 0; index--) { req = ITH_ITEM(index, array); if ((req->ptr == mpi_req) && ((req_type == mpi_req_none) || (req->req_type == req_type))) { return req; } } return NULL; } struct mpi_request* __mpi_find_pending_mpi_req(int rank, app_ptr mpi_req, enum mpi_request_type req_type) { struct mpi_request* req = NULL; req = __mpi_find_mpi_req(rank, mpi_req, req_type); if (req != NULL && req->status != mpi_req_status_none) return req; return NULL; } /* find the p2p message that corresponds to an mpi request */ struct mpi_p2p_msg_t* __mpi_find_p2p_message_by_mpi_req(int rank, const struct mpi_request* request) { assert(request); assert(request->req_type != mpi_req_none); if (request->msg) return request->msg; struct hierarchical_array* array = NULL; array = hierarchical_array_find(EZTRACE_MPI_P2P_ID, request->container); assert(array); struct mpi_p2p_msg_t* msg = NULL; int index; /* fixme: * if request->msg is not set, we may be unable to find the message. * Since messages are stored in the receiver container, if the request is * an isend message, then we don't know who is the receiver. * * However, this should never happen (well, I hope so, we should check). */ for (index = (array->nb_items) - 1; index >= 0; index--) { msg = ITH_ITEM(index, array); if (request->req_type == mpi_req_send) { if (request && (msg->src == rank) && (msg->sender_request == request)) { assert(msg->dest < NB_TRACES); return msg; } } else { if (request && (msg->dest == rank) && (msg->recver_request == request)) { assert(msg->src < NB_TRACES); return msg; } } } return NULL; } /* find a p2p message. * warning: this can be quite expensive since this function browse the whole message list! */ struct mpi_p2p_msg_t* __mpi_find_p2p_message(int src __attribute__((unused)), int dest, int len __attribute__((unused)), uint32_t tag, int time_id) { INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(dest), p_info); struct hierarchical_array* array = hierarchical_array_find( EZTRACE_MPI_P2P_ID, GET_PROCESS_CONTAINER(dest)); struct mpi_p2p_msg_t* msg = NULL; int index; /* browse the message list, starting from the end */ for (index = (array->nb_items) - 1; index >= 0; index--) { msg = ITH_ITEM(index, array); if (((msg->src == src) || (msg->src == p_info->__MPI_ANY_SOURCE)) && (msg->dest == dest) && ((msg->tag == tag) || (msg->tag == p_info->__MPI_ANY_TAG)) && (time_id < 0 || !IS_TIME_SET(msg->times[time_id]))) { return msg; } } return NULL; } /* find a pending comm that matches(src, dest, len, tag) in the list * corresponding to type. Only consider pending comms that match the mask_ok * and doesn't match mask_not_ok */ struct mpi_pending_comm* __mpi_p2p_find_pending_comm(int src, int dest, int len __attribute__((unused)), uint32_t tag, enum comm_type_t type, uint32_t mask_ok, uint32_t mask_not_ok) { struct mpi_process_info_t * process_info = NULL; INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(dest), p_info); #if DEBUG_MSG_MATCHING printf("Searching for an MPI comm that matches (src=%x, dest=%x, tag=%x, type=%x, mask_ok=%x, mask_not_ok=%x)\n", src, dest, tag, type, mask_ok, mask_not_ok); if(src==p_info->__MPI_ANY_SOURCE) { printf("\t(src= MPI_ANY_SOURCE)\n"); } #endif switch (type) { case comm_type_outgoing: { INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(src), p_info_src); process_info = p_info_src; } break; case comm_type_incoming: { process_info = p_info; } break; default: assert(1); } struct mpi_p2p_msg_t* msg = NULL; struct ezt_list_token_t *token; /* for each pending comm in the dest process, check if the message matches */ ezt_list_foreach(&process_info->pending_comm[type], token) { struct mpi_pending_comm* p_comm = (struct mpi_pending_comm*) token->data; assert(p_comm->msg); msg = p_comm->msg; #if DEBUG_MSG_MATCHING printf("\tcomm %p / msg %p (src=%x, dest=%x, tag=%x, status=%d)\n", p_comm, msg, msg->src, msg->dest, msg->tag, p_comm->status); #endif if ((msg->dest == dest) && ((msg->src == src) || (msg->src == p_info->__MPI_ANY_SOURCE) || (src == p_info->__MPI_ANY_SOURCE)) && ((msg->tag == tag) || (msg->tag == p_info->__MPI_ANY_TAG) || (tag == p_info->__MPI_ANY_TAG))) { #if DEBUG_MSG_MATCHING printf("\t\tsrc/dest/tag match\n"); #endif if((p_comm->status & mask_ok) && (!(p_comm->status & mask_not_ok))) { #if DEBUG_MSG_MATCHING printf("\t\tOK ! return comm %p\n", p_comm); #endif return p_comm; } #if DEBUG_MSG_MATCHING else { printf("\t\tbut status does not match (mask_ok = %x, mask_not_ok=%x)\n", (p_comm->status & mask_ok), (p_comm->status & mask_not_ok) ); } #endif } } #if DEBUG_MSG_MATCHING printf("\t-> Not found\n"); #endif /* message not found */ return NULL; } /* find a pending irecv */ struct mpi_pending_comm* __mpi_p2p_find_pending_irecv(int src __attribute__((unused)), int dest, int len __attribute__((unused)), uint32_t tag, uint32_t mask_ok, uint32_t mask_not_ok) { return __mpi_p2p_find_pending_comm(src, dest, len, tag, comm_type_incoming, mask_ok, mask_not_ok); } /* find a pending isend */ struct mpi_pending_comm* __mpi_p2p_find_pending_isend(int src, int dest, int len, uint32_t tag, uint32_t mask_ok, uint32_t mask_not_ok) { INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(dest), p_info); if (src == p_info->__MPI_ANY_SOURCE) { /* In case of any_source, we don't know where to search for the isend, * so we need to find the message first */ struct mpi_pending_comm* ret = NULL; int rank; int nb_traces = *get_nb_traces(); /* search for a pending isend that match in all the processes */ for (rank = 0; rank < nb_traces; rank++) { ret = __mpi_p2p_find_pending_comm(rank, dest, len, tag, comm_type_outgoing, mask_ok, mask_not_ok); if (ret) goto out; } out: return ret; } return __mpi_p2p_find_pending_comm(src, dest, len, tag, comm_type_outgoing, mask_ok, mask_not_ok); } /* search for a message in a list of pending communication and remove it */ static void __remove_message_from_pending_comm(struct mpi_p2p_msg_t* msg, int cont, enum comm_type_t comm_type) { INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(cont), process_info); struct ezt_list_token_t *token, *next; ezt_list_foreach_safe(&process_info->pending_comm[comm_type], token, next) { struct mpi_pending_comm* p_comm = (struct mpi_pending_comm*) token->data; if ((p_comm->msg == msg) && (p_comm->status == (NONE_DONE | IRECV_DONE | ISEND_DONE | RWAIT_DONE | SWAIT_DONE))) { ezt_list_remove(token); free(p_comm); } } } /* check for the completion of a message (ie. both send and recv ended) * and remove the message from the lists of pending communications */ static void __message_set_completed(struct mpi_p2p_msg_t* msg) { int i; /* check wether the message is complete */ for (i = 0; i < P2P_NB_TIMES; i++) { if (!IS_TIME_SET(msg->times[i])) return; } /* message is complete (ie. send and recv ended) */ /* remove the message from the lists of pending sends */ __remove_message_from_pending_comm(msg, msg->src, comm_type_outgoing); /* remove the message from the lists of pending receives */ __remove_message_from_pending_comm(msg, msg->dest, comm_type_incoming); } static struct mpi_pending_comm* __create_new_pending_comm( int process_id, struct mpi_p2p_msg_t* msg, enum comm_type_t type) { INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(process_id), process_info); /* todo: use a block malloc instead (improved performance) */ struct mpi_pending_comm* p_comm = malloc(sizeof(struct mpi_pending_comm)); p_comm->status = NONE_DONE; p_comm->msg = msg; p_comm->token.data = p_comm; ezt_list_add(&process_info->pending_comm[type], &p_comm->token); return p_comm; } struct mpi_p2p_msg_t* __start_recv_message(uint64_t start_time, int src, int dest, int len, uint32_t tag, const char* thread_id, struct mpi_request* mpi_req) { /* is there a corresponding isend ? */ struct mpi_pending_comm* pending_comm = __mpi_p2p_find_pending_isend( src, dest, len, tag, NONE_DONE, IRECV_DONE); struct mpi_p2p_msg_t* msg = NULL; struct mpi_pending_comm* new_comm = NULL; if (!pending_comm) { /* no isend found. Create the message and register a irecv */ msg = __new_p2p_message(NULL, src, dest, len, tag, 1, NULL, NULL, NULL, thread_id, mpi_req); pending_comm = __create_new_pending_comm(dest, msg, comm_type_incoming); pending_comm->status |= IRECV_DONE; } else { /* isend found, update its status */ pending_comm->status |= IRECV_DONE; msg = pending_comm->msg; /* create a recv pending comm*/ new_comm = __create_new_pending_comm(dest, msg, comm_type_incoming); new_comm->status |= pending_comm->status; } assert (pending_comm->status & IRECV_DONE); assert (!(pending_comm->status & RWAIT_DONE)); assert(msg); __record_event(start_time, GET_PROCESS_CONTAINER(dest), EZTRACE_MPI_P2P_IRECV_ID, msg); msg->recver_thread_id = thread_id; msg->recver_request = mpi_req; msg->times[start_irecv] = start_time; if (mpi_req) { mpi_req->status = mpi_req_status_pending; mpi_req->msg = msg; } return msg; } struct mpi_p2p_msg_t* __stop_recv_message(uint64_t stop_time, int src, int dest, int len, uint32_t tag, const char* thread_id __attribute__((unused)), struct mpi_request* mpi_req) { /* retrieve the corresponding pending incoming comm */ struct mpi_pending_comm* pending_comm = __mpi_p2p_find_pending_irecv( src, dest, len, tag, IRECV_DONE, RWAIT_DONE); struct mpi_p2p_msg_t* msg = NULL; struct mpi_pending_comm* pending_comm_outgoing = NULL; assert(pending_comm); if (!(pending_comm->status & ISEND_DONE)) { /* the matching isend has not happened yet. This means there's a synchronisation problem * between the traces. */ return NULL; } assert (pending_comm->status & IRECV_DONE); /* update the status of the pending incoming comm */ pending_comm->status |= RWAIT_DONE; msg = pending_comm->msg; /* update the outgoing pending comm status */ /* we use msg->src and msg->tag instead of src (resp. tag) because * src may be set to MPI_ANY_SOURCE (resp. MPI_ANY_TAG), while * msg->src (resp msg->tag) contains the actual src (resp. tag) * that was matched (in pending_comm). */ pending_comm_outgoing = __mpi_p2p_find_pending_isend(msg->src, dest, len, msg->tag, NONE_DONE, RWAIT_DONE); if (pending_comm_outgoing) { pending_comm_outgoing->status |= RWAIT_DONE; assert(pending_comm_outgoing->status & IRECV_DONE); } assert(msg); __record_event(stop_time, GET_PROCESS_CONTAINER(dest), EZTRACE_MPI_P2P_RWAIT_ID, msg); if (!IS_TIME_SET(msg->times[start_rwait])) { msg->times[start_rwait] = stop_time; } msg->times[stop_recv] = stop_time; if (mpi_req) { mpi_req->msg = NULL; mpi_req->status = mpi_req_status_none; } if ((!msg->id) && msg->sender_thread_id && msg->recver_thread_id) { CREATE_P2P_MSG_ID(msg); } if ((!msg->link_value) && msg->sender_thread_id && msg->recver_thread_id) { CREATE_P2P_LINK_VALUE(msg); } __message_set_completed(msg); return msg; } struct mpi_p2p_msg_t* __start_send_message(uint64_t start_time, int src, int dest, int len, uint32_t tag, const char* thread_id, struct mpi_request* mpi_req) { /* did the matching irecv already happened ? */ struct mpi_pending_comm* pending_comm = __mpi_p2p_find_pending_irecv( src, dest, len, tag, NONE_DONE, ISEND_DONE); struct mpi_p2p_msg_t* msg = NULL; struct mpi_pending_comm* new_comm = NULL; if (!pending_comm) { /* no irecv found. Create the message and register a isend */ msg = __new_p2p_message(NULL, src, dest, len, tag, 0, NULL, thread_id, mpi_req, NULL, NULL); pending_comm = __create_new_pending_comm(src, msg, comm_type_outgoing); pending_comm->status |= ISEND_DONE; } else { /* irecv found, update its status */ pending_comm->status |= ISEND_DONE; msg = pending_comm->msg; /* create a send pending comm*/ new_comm = __create_new_pending_comm(src, msg, comm_type_outgoing); new_comm->status |= pending_comm->status; } assert(msg); __record_event(start_time, GET_PROCESS_CONTAINER(dest), EZTRACE_MPI_P2P_ISEND_ID, msg); INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(dest), p_info); msg->sender_thread_id = thread_id; msg->sender_request = mpi_req; msg->times[start_isend] = start_time; if (mpi_req) { mpi_req->msg = msg; mpi_req->status = mpi_req_status_pending; } if (msg->src == p_info->__MPI_ANY_SOURCE) msg->src = src; if (msg->tag == p_info->__MPI_ANY_TAG) msg->tag = tag; if ((!msg->id) && msg->sender_thread_id && msg->recver_thread_id) { CREATE_P2P_MSG_ID(msg); } if ((!msg->link_value) && msg->sender_thread_id && msg->recver_thread_id) { CREATE_P2P_LINK_VALUE(msg); } return msg; } struct mpi_p2p_msg_t* __stop_send_message(uint64_t stop_time, int src, int dest, int len, uint32_t tag, const char* thread_id __attribute__((unused)), struct mpi_request* mpi_req) { /* retrieve the corresponding pending outgoing comm */ struct mpi_pending_comm* pending_comm = __mpi_p2p_find_pending_isend( src, dest, len, tag, ISEND_DONE, SWAIT_DONE); struct mpi_p2p_msg_t* msg = NULL; assert(pending_comm); struct mpi_pending_comm* pending_comm_incoming = NULL; /* update the status of the outgoing comm*/ pending_comm->status |= SWAIT_DONE; msg = pending_comm->msg; /* update the incoming pending comm status */ pending_comm_incoming = __mpi_p2p_find_pending_irecv(src, dest, len, tag, NONE_DONE, SWAIT_DONE); if (pending_comm_incoming) { pending_comm_incoming->status |= SWAIT_DONE; } assert(msg); __record_event(stop_time, GET_PROCESS_CONTAINER(dest), EZTRACE_MPI_P2P_SWAIT_ID, msg); INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(dest), p_info); if (msg->src == p_info->__MPI_ANY_SOURCE) msg->src = src; if (msg->tag == p_info->__MPI_ANY_TAG) msg->tag = tag; if (!IS_TIME_SET(msg->times[start_swait])) { msg->times[start_swait] = stop_time; } msg->times[stop_send] = stop_time; if (mpi_req) { mpi_req->msg = NULL; mpi_req->status = mpi_req_status_none; } if ((!msg->id) && msg->sender_thread_id && msg->recver_thread_id) { CREATE_P2P_MSG_ID(msg); } if ((!msg->link_value) && msg->sender_thread_id && msg->recver_thread_id) { CREATE_P2P_LINK_VALUE(msg); } __message_set_completed(msg); return msg; } eztrace-1.1-7/src/modules/mpi/PaxHeaders.7332/eztrace_convert_mpi_p2p.h0000644000000000000000000000013213012560437022650 xustar0030 mtime=1479205151.284727238 30 atime=1508138889.968269867 30 ctime=1508162368.089938414 eztrace-1.1-7/src/modules/mpi/eztrace_convert_mpi_p2p.h0000644000175000017500000000537213012560437024046 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef EZTRACE_CONVERT_MPI_P2P_H #define EZTRACE_CONVERT_MPI_P2P_H #include #include "mpi_ev_codes.h" #include "eztrace_convert.h" #include "eztrace_convert_mpi.h" #include "eztrace_hierarchical_array.h" struct p2p_msg_event { uint64_t time; struct mpi_p2p_msg_t *msg; }; #define EZTRACE_MPI_P2P_ID (EZTRACE_MPI_PREFIX | 0x0001) #define EZTRACE_MPI_P2P_ISEND_ID (EZTRACE_MPI_PREFIX | 0x0010) #define EZTRACE_MPI_P2P_SWAIT_ID (EZTRACE_MPI_PREFIX | 0x0011) #define EZTRACE_MPI_P2P_IRECV_ID (EZTRACE_MPI_PREFIX | 0x0012) #define EZTRACE_MPI_P2P_RWAIT_ID (EZTRACE_MPI_PREFIX | 0x0013) #define EZTRACE_MPI_STATS_P2P_ID (EZTRACE_MPI_PREFIX | 0x0100) #define MPI_REQUEST_ID (EZTRACE_MPI_PREFIX | 0x0020) void init_mpi_p2p_messages(); void print_p2p_stats(); void __print_freq(); void __print_p2p_message(FILE*stream, struct mpi_p2p_msg_t *msg); void __print_p2p_messages_recurse(FILE*stream, unsigned depth, p_eztrace_container p_cont); void __print_p2p_messages(FILE*stream); struct mpi_p2p_msg_t* __new_p2p_message( char* id, int src, int dest, int len, uint32_t tag, int unexp, char* link_value, const char* sender_thread_id, const struct mpi_request* sender_request, const char* recver_thread_id, const struct mpi_request* recver_request); struct mpi_request* __mpi_new_mpi_request(int rank, app_ptr mpi_req, enum mpi_request_type req_type); struct mpi_request* __mpi_find_mpi_req(int rank, app_ptr mpi_req, enum mpi_request_type req_type); struct mpi_request* __mpi_find_pending_mpi_req(int rank, app_ptr mpi_req, enum mpi_request_type req_type); struct mpi_p2p_msg_t* __mpi_find_p2p_message_by_mpi_req(int rank, const struct mpi_request* request); struct mpi_p2p_msg_t* __mpi_find_p2p_message(int src __attribute__((unused)), int dest, int len __attribute__((unused)), uint32_t tag, int time_id); struct mpi_p2p_msg_t* __start_recv_message(uint64_t start_time, int src, int dest, int len, uint32_t tag, const char* thread_id, struct mpi_request* mpi_req); struct mpi_p2p_msg_t* __stop_recv_message(uint64_t stop_time, int src, int dest, int len, uint32_t tag, const char* thread_id __attribute__((unused)), struct mpi_request* mpi_req); struct mpi_p2p_msg_t* __start_send_message(uint64_t start_time, int src, int dest, int len, uint32_t tag, const char* thread_id, struct mpi_request* mpi_req); struct mpi_p2p_msg_t* __stop_send_message(uint64_t stop_time, int src, int dest, int len, uint32_t tag, const char* thread_id __attribute__((unused)), struct mpi_request* mpi_req); #endif /* EZTRACE_CONVERT_MPI_P2P_H */ eztrace-1.1-7/src/modules/mpi/PaxHeaders.7332/Makefile.am0000644000000000000000000000013113053046645017714 xustar0029 mtime=1487687077.29549415 30 atime=1508162219.837822756 30 ctime=1508162368.017932122 eztrace-1.1-7/src/modules/mpi/Makefile.am0000644000175000017500000001220013053046645021077 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis # See COPYING in top-level directory. TLCFLAGS=$(TL_CPPFLAGS) TLLDFLAGS=$(TL_LDFLAGS) TLLIBADD=$(TL_LIB) GTGCFLAGS=$(GTG_CPPFLAGS) GTGLDFLAGS=$(GTG_LDFLAGS) GTGDEPENDENCIES = $(GTG_DEPENDENCIES) GTGLIBADD=$(GTG_LIB) AM_CPPFLAGS = -I$(srcdir)/../../core/ -I$(top_builddir)/src/core \ -I$(top_srcdir)/src/pptrace -DMPI_MODULE_NAME=@MPI_MODULE_NAME@ \ -DMPI_EVENT_ID=@MPI_EVENT_ID@ lib_LTLIBRARIES = if USE_MPI lib_LTLIBRARIES += libeztrace-convert-@MPI_MODULE_NAME@.la \ libeztrace-@MPI_MODULE_NAME@.la \ libeztrace-autostart-@MPI_MODULE_NAME@.la AM_CPPFLAGS += -W -Wall -Wextra -DUSE_MPI $(MPI_CFLAGS) AM_LDFLAGS = @MPI_LDFLAGS@ endif # USE_MPI libeztrace_convert_@MPI_MODULE_NAME@_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(GTGCFLAGS) libeztrace_convert_@MPI_MODULE_NAME@_la_LIBADD = $(TLLIBADD) $(GTGLIBADD) libeztrace_convert_@MPI_MODULE_NAME@_la_LDFLAGS = --no-undefined $(GTGLDFLAGS) $(TLLDFLAGS) libeztrace_convert_@MPI_MODULE_NAME@_la_SOURCES = eztrace_convert_mpi.c \ eztrace_convert_mpi.h\ mpi_ev_codes.h\ eztrace_convert_mpi_p2p.c\ eztrace_convert_mpi_p2p.h\ eztrace_convert_mpi_coll.c\ eztrace_convert_mpi_coll.h\ eztrace_convert_mpi_pers.c\ eztrace_convert_mpi_pers.h\ eztrace_stats_mpi.h\ eztrace_stats_mpi.c libeztrace_convert_@MPI_MODULE_NAME@_la_DEPENDENCIES = $(GTGDEPENDENCIES) mpi_function_files = mpi_funcs/mpi_allgather.c \ mpi_funcs/mpi_allgatherv.c \ mpi_funcs/mpi_allreduce.c \ mpi_funcs/mpi_alltoall.c \ mpi_funcs/mpi_alltoallv.c \ mpi_funcs/mpi_barrier.c \ mpi_funcs/mpi_bcast.c \ mpi_funcs/mpi_bsend.c \ mpi_funcs/mpi_bsend_init.c \ mpi_funcs/mpi_gather.c \ mpi_funcs/mpi_gatherv.c \ mpi_funcs/mpi_get.c \ mpi_funcs/mpi_ibsend.c \ mpi_funcs/mpi_iprobe.c \ mpi_funcs/mpi_irecv.c \ mpi_funcs/mpi_irsend.c \ mpi_funcs/mpi_isend.c \ mpi_funcs/mpi_issend.c \ mpi_funcs/mpi_probe.c \ mpi_funcs/mpi_put.c \ mpi_funcs/mpi_recv.c \ mpi_funcs/mpi_recv_init.c \ mpi_funcs/mpi_reduce.c \ mpi_funcs/mpi_reduce_scatter.c \ mpi_funcs/mpi_rsend.c \ mpi_funcs/mpi_rsend_init.c \ mpi_funcs/mpi_scan.c \ mpi_funcs/mpi_scatter.c \ mpi_funcs/mpi_scatterv.c \ mpi_funcs/mpi_send.c \ mpi_funcs/mpi_send_init.c \ mpi_funcs/mpi_sendrecv.c \ mpi_funcs/mpi_sendrecv_replace.c\ mpi_funcs/mpi_ssend.c \ mpi_funcs/mpi_ssend_init.c \ mpi_funcs/mpi_start.c \ mpi_funcs/mpi_startall.c \ mpi_funcs/mpi_test.c \ mpi_funcs/mpi_testall.c \ mpi_funcs/mpi_testany.c \ mpi_funcs/mpi_testsome.c \ mpi_funcs/mpi_wait.c \ mpi_funcs/mpi_waitall.c \ mpi_funcs/mpi_waitany.c \ mpi_funcs/mpi_waitsome.c \ mpi_funcs/mpi_ibarrier.c \ mpi_funcs/mpi_ibcast.c \ mpi_funcs/mpi_igather.c \ mpi_funcs/mpi_igatherv.c \ mpi_funcs/mpi_iscatter.c \ mpi_funcs/mpi_iscatterv.c \ mpi_funcs/mpi_iallgather.c \ mpi_funcs/mpi_iallgatherv.c \ mpi_funcs/mpi_ialltoall.c \ mpi_funcs/mpi_ialltoallv.c \ mpi_funcs/mpi_ireduce.c \ mpi_funcs/mpi_iallreduce.c \ mpi_funcs/mpi_ireduce_scatter.c \ mpi_funcs/mpi_iscan.c \ mpi_funcs/mpi_cancel.c libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) \ -DLD_PRELOAD_NAME=\"@LD_PRELOAD_NAME@\" libeztrace_@MPI_MODULE_NAME@_la_LIBADD = -lm -lpthread $(TLLIBADD) libeztrace_@MPI_MODULE_NAME@_la_LDFLAGS = --no-undefined $(TLLDFLAGS) libeztrace_@MPI_MODULE_NAME@_la_SOURCES = mpi.c mpi_fortran.c mpi_f.f90\ fortran_utils.f90 mpi_ev_codes.h mpi_eztrace.h $(mpi_function_files) libeztrace_autostart_@MPI_MODULE_NAME@_la_FCFLAGS = $(AM_FFLAGS) -Wall libeztrace_@MPI_MODULE_NAME@_la_FCFLAGS = $(AM_FFLAGS) -Wall libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) \ -DLD_PRELOAD_NAME=\"@LD_PRELOAD_NAME@\" libeztrace_autostart_@MPI_MODULE_NAME@_la_LIBADD = -lm -lpthread $(TLLIBADD) $(AM_LDFLAGS) libeztrace_autostart_@MPI_MODULE_NAME@_la_LDFLAGS = $(TLLDFLAGS) -rdynamic libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS = $(AM_CFLAGS) -W -Wall -Wextra \ -DEZTRACE_AUTOSTART libeztrace_autostart_@MPI_MODULE_NAME@_la_SOURCES = mpi.c mpi_fortran.c mpi_f.f90\ fortran_utils.f90 mpi_ev_codes.h mpi_eztrace.h $(mpi_function_files) if USE_MPI3 libeztrace_@MPI_MODULE_NAME@_la_SOURCES += mpi3_f.f90 libeztrace_autostart_@MPI_MODULE_NAME@_la_SOURCES += mpi3_f.f90 AM_CPPFLAGS += -DUSE_MPI3 endif #noinst_HEADERS = eztrace_convert_mpi.h \ # mpi_ev_codes.h eztrace-1.1-7/src/modules/mpi/PaxHeaders.7332/eztrace_convert_mpi.c0000644000000000000000000000013213143047722022064 xustar0030 mtime=1502367698.660456018 30 atime=1508138890.096273065 30 ctime=1508162368.085938064 eztrace-1.1-7/src/modules/mpi/eztrace_convert_mpi.c0000644000175000017500000026640213143047722023265 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE #include #include #include #include #include "mpi_ev_codes.h" #include "mpi_eztrace.h" #include "eztrace_list.h" #include "eztrace_convert.h" #include "eztrace_convert_mpi.h" #include "eztrace_convert_mpi_p2p.h" #include "eztrace_convert_mpi_coll.h" #include "eztrace_convert_mpi_pers.h" #include "eztrace_stats_mpi.h" #ifdef USE_MPI /* todo: we should get rid of these lists. Use the hierarchical arrays instead. */ /* list that contains pending MPI_Comm_spawn */ struct ezt_list_t spawn_list; static int recording_stats = 0; static unsigned nb_mpi_calls[MPI_ID_SIZE]; int *rank_to_trace_id = NULL; #define MPI_CHANGE() if(!recording_stats) CHANGE() static void mpi_synchronize_processes(struct mpi_coll_msg_t* msg, int my_rank); static struct ezt_list_token_t* __find_matching_spawn(int ppid) { struct ezt_list_token_t *t = NULL; struct mpi_spawn_t *r; ezt_list_foreach(&spawn_list, t) { r = (struct mpi_spawn_t *) t->data; if(r->ppid == ppid) return t; } return t; } static struct ezt_mpi_comm* ezt_find_communicator(int index, app_ptr comm_id) { INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(index), p_info); if(p_info->__MPI_COMM_WORLD.comm_id == comm_id) return &p_info->__MPI_COMM_WORLD; if(p_info->__MPI_COMM_SELF.comm_id == comm_id) return &p_info->__MPI_COMM_SELF; struct ezt_list_token_t *token; ezt_list_foreach(&p_info->communicators, token) { struct ezt_mpi_comm* p_comm = (struct ezt_mpi_comm*) token->data; assert(p_comm); if(p_comm->comm_id == comm_id) { /* we found the communicator ! */ return p_comm; } } return 0; } #if EZTRACE_DEBUG /* return 1 if comm_id already exists in comm_list * for debugging purpose only */ static int __find_communicator(app_ptr comm_id, struct ezt_list_t *comm_list) { struct ezt_list_token_t *token; ezt_list_foreach(comm_list, token) { struct ezt_mpi_comm* p_comm = (struct ezt_mpi_comm*) token->data; assert(p_comm); if(p_comm->comm_id == comm_id) { /* we found the communicator ! */ return 1; } return 0; } } #endif /* destroy an mpi communicator */ void handle_mpi_delete_comm() { FUNC_NAME; INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(CUR_INDEX), p_info); /* get the communicator id (eg. MPI_COMM_WORLD) and the number of processes */ app_ptr comm_id; GET_PARAM_PACKED_1(CUR_EV, comm_id); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); assert(comm); ezt_list_remove(&comm->token); ezt_list_add(&p_info->deleted_communicators, &comm->token); } /* create a new mpi communicator */ void handle_mpi_new_comm() { FUNC_NAME; /* get the communicator id (eg. MPI_COMM_WORLD) and the number of processes */ app_ptr comm_id; int comm_size; GET_PARAM_PACKED_2(CUR_EV, comm_id, comm_size); INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(CUR_INDEX), p_info); /* allocate a new ezt_mpi_comm and fill it */ struct ezt_mpi_comm* p_comm = malloc(sizeof(struct ezt_mpi_comm)); p_comm->comm_id = comm_id; p_comm->comm_size = comm_size; p_comm->ranks = malloc(sizeof(int)*comm_size); p_comm->p_process = p_info; #if EZTRACE_DEBUG if(__find_communicator(comm_id, &p_info->communicators)) { fprintf(stderr, "[%d] Error: trying to add a communicator (%d) that already exists!\n", comm_id); abort(); } #endif /* for each rank in the new communicator, translate to the global rank * (the corresponding rank in MPI_COMM_WORLD) */ int i; for(i=0; iranks[i]); if(CUR_RANK == p_comm->ranks[i]) p_comm->my_rank = i; } p_comm->token.data = p_comm; ezt_list_add(&p_info->communicators, &p_comm->token); } int is_comm_mine(int global_rank, struct ezt_mpi_comm*comm) { if(comm->ranks[comm->my_rank] == global_rank) return 1; return 0; } static struct mpi_p2p_msg_t* __mpi_send_generic(const char* thread_id, int src, int dest, int len, uint32_t tag, struct mpi_request* mpi_req, app_ptr comm) { int actual_dest = ezt_get_global_rank_generic(rank_to_trace_id[src], comm, dest); assert(actual_dest!= -1); struct mpi_p2p_msg_t* msg = __start_send_message(CUR_TIME(CUR_INDEX), src, actual_dest, len, tag, thread_id, mpi_req); assert(msg); if(! IS_TIME_SET(msg->times[stop_recv])) { #ifndef GTG_OUT_OF_ORDER MPI_CHANGE() startLink(CURRENT, "L_MPI_P2P", "C_Prog", msg->sender_thread_id, msg->recver_thread_id, msg->link_value, msg->id); #endif } return msg; } static struct mpi_p2p_msg_t * __mpi_start_recv_generic (char*thread_id, int src, int dest, int len, int tag, struct mpi_request* mpi_req, app_ptr comm) { INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(rank_to_trace_id[dest]), p_info); if (src == p_info->__MPI_PROC_NULL || dest == p_info->__MPI_PROC_NULL) return NULL; int actual_src = src; if(src != p_info->__MPI_ANY_SOURCE) { actual_src = ezt_get_global_rank_generic(rank_to_trace_id[dest], comm, src); assert(actual_src!= -1); assert(actual_src!= -1); } return __start_recv_message(CUR_TIME(CUR_INDEX), actual_src, dest, len, tag, thread_id, mpi_req); } /* return 1 if the matching isend didn't occured yet. * In that case, this function has to be called again when the matching isend occurs * In case a synchronization problem is detected, timestamp is updated */ static int __mpi_stop_recv_generic (uint64_t *timestamp, char*thread_id, int src, int dest, int len, int tag, struct mpi_request* mpi_req, app_ptr comm) { int delay_added = 0; INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(rank_to_trace_id[dest]), p_info); if (src == p_info->__MPI_PROC_NULL || dest == p_info->__MPI_PROC_NULL) { return 0; } int actual_src = src; if(src != p_info->__MPI_ANY_SOURCE) { actual_src = ezt_get_global_rank_generic(CUR_INDEX, comm, src); assert(actual_src!= -1); } struct mpi_p2p_msg_t *msg = __stop_recv_message(*timestamp, actual_src, dest, len, tag, thread_id, mpi_req); if(!msg) { /* There is no matching MPI_Isend yet. * This means there's a synchronisation problem between the traces. * Let's wait until the remote process calls MPI_Isend */ SKIP = 1; CUR_TRACE->skip = 1; return 1; } if(IS_TIME_SET(msg->times[start_isend])) { if(msg->times[start_isend] > msg->times[stop_recv]) { msg->times[stop_recv] += add_delay_to_trace(rank_to_trace_id[dest], msg->times[stop_recv], msg->times[start_isend], msg->recver_thread_id); *timestamp = msg->times[stop_recv]; delay_added = 1; } assert(msg->id); assert(msg->link_value); assert(msg->sender_thread_id); assert(msg->recver_thread_id); #ifdef GTG_OUT_OF_ORDER MPI_CHANGE() startLink(NS_TO_MS(msg->times[start_isend]), "L_MPI_P2P", "C_Prog", msg->sender_thread_id, msg->recver_thread_id, msg->link_value, msg->id); MPI_CHANGE() endLink(NS_TO_MS(msg->times[stop_recv]), "L_MPI_P2P", "C_Prog", msg->sender_thread_id, thread_id, msg->link_value, msg->id); #if 0 char* message_str = NULL; float throughput = -1; /* duration in us */ float duration = ((NS_TO_MS(*timestamp)) - (NS_TO_MS(msg->times[start_isend])))*1e3; int res __attribute__ ((__unused__)); if(!delay_added) { if(len) { /* byte / us = MB/s */ throughput = len/duration; } res = asprintf(&message_str, "duration = %f us -- len=%d bytes -- throughput=%f MB/s", duration, len, throughput); } else { /* There was a synchronization problem that was corrected. Thus, the duration of the * communication is 0 (which does not make sense). We still need to add an event here since * some trace analysis tools (eg. eztrace pattern detection) may expect an event. */ res = asprintf(&message_str, "duration = ? (lost due to a synchronization correction) -- len=%d bytes -- throughput=? MB/s", len); } MPI_CHANGE() addEvent((NS_TO_MS(*timestamp)), "E_MPI_EndComm", thread_id, message_str); #endif #else /* GTG_OUT_OF_ORDER */ MPI_CHANGE() endLink((NS_TO_MS(*timestamp)), "L_MPI_P2P", "C_Prog", msg->sender_thread_id, msg->recver_thread_id, msg->link_value, msg->id); #endif } return 0; } #define start_coll_link(msg, src, dest) \ startLink (NS_TO_MS(msg->times[src][start_coll]), \ "L_MPI_Coll", "C_Prog", \ msg->thread_ids[src], msg->thread_ids[dest], \ msg->link_value[src][dest], msg->link_id[src][dest]) #define end_coll_link(msg, src, dest) \ endLink(NS_TO_MS(msg->times[dest][stop_coll]), \ "L_MPI_Coll", "C_Prog", \ msg->thread_ids[src], msg->thread_ids[dest], \ msg->link_value[src][dest], msg->link_id[src][dest]) static void __mpi_barrier_start_generic(struct mpi_coll_msg_t* msg, int my_rank) { int i; for(i=0; icomm[my_rank]->comm_size; i++) { if(i != my_rank) { #ifdef GTG_OUT_OF_ORDER assert(msg->thread_ids[my_rank]); if(IS_TIME_SET(msg->times[i][stop_coll])) { /* the remote process stop_coll already happened. * This means that there's a synchronisation problem between the traces */ msg->times[i][stop_coll] += add_delay_to_trace(i, msg->times[i][stop_coll], msg->times[my_rank][start_coll], msg->thread_ids[i]); } #else /* todo: not implemented yet */ #endif /* GTG_OUT_OF_ORDER */ } } } /* return 1 if the matching isend didn't occured yet. * In that case, this function has to be called again when the matching isend occurs */ static int __mpi_barrier_stop_generic(struct mpi_coll_msg_t* msg, int my_rank) { int i; if(!msg) { SKIP = 1; CUR_TRACE->skip = 1; return 1; } for(i=0; icomm[my_rank]->comm_size; i++) { if(i != my_rank) { if(!IS_TIME_SET(msg->times[i][start_coll])) { /* ith process has not yet reached the MPI_Barrier. * This means there's a synchronisation problem between the traces. * Let's wait until the remote process starts MPI_Barrier */ SKIP = 1; CUR_TRACE->skip = 1; msg->times[my_rank][stop_coll] = TIME_INIT; return 1; } } } for(i=0; icomm[my_rank]->comm_size; i++) { if(i != my_rank) { #ifdef GTG_OUT_OF_ORDER assert(msg->thread_ids[my_rank]); assert(msg->thread_ids[i]); MPI_CHANGE() start_coll_link(msg, my_rank, i); MPI_CHANGE() end_coll_link(msg, i, my_rank); #else /* todo: not implemented yet */ #endif /* GTG_OUT_OF_ORDER */ } } return 0; } void handle_mpi_init () { int rank; int world_size; int mpi_any_source; int mpi_any_tag; app_ptr mpi_request_null; int mpi_proc_null; GET_PARAM_PACKED_6(CUR_EV, rank, world_size, mpi_any_source, mpi_any_tag, mpi_request_null, mpi_proc_null); EZT_CONVERT_PRINTF(1, "MPI_Init(rank=%d, world_size=%d, mpi_any_source=%x, mpi_any_tag=%x, mpi_request_null=%x, mpi_proc_null=%d)\n", rank, world_size, mpi_any_source, mpi_any_tag, mpi_request_null, mpi_proc_null); int *nb_traces = get_nb_traces(); if(*nb_traces < world_size) { fprintf(stderr, "Error: the size of MPI_COMM_WORLD is %d, but only %d trace files were provided. Please give me all the trace files !\n", world_size, *nb_traces); abort(); } if(!rank_to_trace_id) { int *nb = nb_traces; rank_to_trace_id = calloc(*nb, sizeof(int)); } rank_to_trace_id[rank] = CUR_INDEX; CUR_TRACE->start_time = LITL_READ_GET_TIME(CUR_EV); /* Check wether MPI_SPAWNED event has already occur. * In that case, the rank is already known. */ if(!CUR_TRACE->start) { CUR_RANK = rank; int res __attribute__ ((__unused__)); res = CREATE_TRACE_ID_STR(CUR_ID, rank); GET_PROCESS_INFO(CUR_INDEX)->pid = rank; eztrace_create_ids(CUR_INDEX); CUR_TRACE->start = 1; NB_START++; /* Create the process and the main thread */ DECLARE_PROCESS_ID_STR(process_id, CUR_INDEX); if(!recording_stats)addContainer (CURRENT, process_id, "CT_Process", "C_Prog", process_id, "0"); new_thread(CUR_THREAD_ID); } else { CUR_TRACE->start = 1; NB_START++; } INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(CUR_INDEX), p_info); p_info->__MPI_ANY_SOURCE = mpi_any_source; p_info->__MPI_ANY_TAG = mpi_any_tag; p_info->__MPI_REQUEST_NULL = mpi_request_null; p_info->__MPI_PROC_NULL = mpi_proc_null; wait_for_an_event(CUR_TRACE->id, EZTRACE_MPI_INIT_Info); GET_PARAM_PACKED_2(CUR_EV, p_info->__MPI_COMM_WORLD.comm_id, p_info->__MPI_COMM_SELF.comm_id); p_info->__MPI_COMM_WORLD.comm_size = world_size; p_info->__MPI_COMM_WORLD.ranks = malloc(world_size * sizeof(int)); int i; for(i=0;i__MPI_COMM_WORLD.ranks[i] = i; p_info->__MPI_COMM_WORLD.my_rank = rank; p_info->__MPI_COMM_WORLD.p_process = p_info; p_info->__MPI_COMM_SELF.comm_size = 1; p_info->__MPI_COMM_SELF.ranks = malloc(1 * sizeof(int)); p_info->__MPI_COMM_SELF.ranks[0] = rank; p_info->__MPI_COMM_SELF.my_rank = 0; p_info->__MPI_COMM_SELF.p_process = p_info; ezt_list_new(&p_info->communicators); ezt_list_new(&p_info->deleted_communicators); FUNC_NAME; } void handle_mpi_spawned() { /* set the start time */ if(CUR_TRACE->start == 0) CUR_TRACE->start_time = LITL_READ_GET_TIME(CUR_EV); CUR_TRACE->start = 1; int ppid; /* local_rank = rank amoung the spawned processes */ int local_rank; GET_PARAM_PACKED_2(CUR_EV, ppid, local_rank); struct ezt_list_token_t *token = __find_matching_spawn(ppid); if(!token) { /* the MPI_Comm_spawn has not been handled yet. We have to wait for it */ SKIP = 1; CUR_TRACE->skip = 1; return; } struct mpi_spawn_t *spawn; spawn = (struct mpi_spawn_t *) token->data; /* We have to add a delay to all events on this trace */ CUR_TRACE->delay = spawn->start_time; spawn->nb_children--; struct trace_t *parent_trace = spawn->parent_trace; if(!spawn->nb_children) { /* all the spawned processes have been handled, we can free this structure. */ ezt_list_remove(token); free(spawn); free(token); } CUR_RANK = ppid + local_rank; /* initialize the trace_id */ int res __attribute__ ((__unused__)); res = asprintf(&CUR_ID, "%s_%d", parent_trace->trace_id, local_rank); eztrace_create_ids(CUR_INDEX); DECLARE_PROCESS_ID_STR(process_id, CUR_INDEX); if(!recording_stats)addContainer (CURRENT, process_id, "CT_Process", "C_Prog", process_id, "0"); new_thread(CUR_THREAD_ID); /* Crappy hack: we know that next event is MPI_Init and * we need the trace to be properly started before continuing the function. */ wait_for_an_event(CUR_TRACE->id, EZTRACE_MPI_INIT); /* We should at least check if the code corresponds to MPI_INIT */ handle_mpi_init (); FUNC_NAME; /* prepare the link value */ char*link_id = NULL; int __attribute__((unused)) ret = asprintf(&link_id, "%s_%d", parent_trace->trace_id, local_rank); MPI_CHANGE() endLink (CURRENT, "L_MPI_SPAWN", "C_Prog", parent_trace->trace_id, process_id, link_id, link_id); free(link_id); } void __ezt_mpi_enter_function(MPI_id_t id) { DECLARE_CUR_THREAD(p_thread); INIT_MPI_THREAD_INFO(p_thread, thread_info); assert(thread_info->enter_date_mpi_calls[id] < 0); thread_info->nb_mpi_calls[id]++; thread_info->enter_date_mpi_calls[id] = CURRENT; } void __ezt_mpi_leave_function(MPI_id_t id) { DECLARE_CUR_THREAD(p_thread); INIT_MPI_THREAD_INFO(p_thread, thread_info); assert(thread_info->enter_date_mpi_calls[id] >= 0); assert(thread_info->leave_date_mpi_calls[id] < 0); thread_info->leave_date_mpi_calls[id] = CURRENT; thread_info->total_time_mpi_calls[id] += thread_info->leave_date_mpi_calls[id]-thread_info->enter_date_mpi_calls[id]; thread_info->enter_date_mpi_calls[id] = -1; thread_info->leave_date_mpi_calls[id] = -1; } void handle_mpi_start_send () { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_SEND_ID); int len; int dest; uint32_t tag; app_ptr comm; GET_PARAM_PACKED_4(CUR_EV, len, dest, tag, comm); struct mpi_p2p_msg_t* msg = __mpi_send_generic( thread_id, CUR_RANK, dest, len, tag, NULL, comm); if(!IS_TIME_SET(msg->times[stop_isend])) msg->times[stop_isend] = CUR_TIME(CUR_INDEX); if(!IS_TIME_SET(msg->times[start_swait])) msg->times[start_swait] = CUR_TIME(CUR_INDEX); MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Send"); } void handle_mpi_stop_send () { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_leave_function(MPI_SEND_ID); int dest; int tag; app_ptr comm_id; GET_PARAM_PACKED_3(CUR_EV, dest, tag, comm_id); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); int actual_dest = ezt_get_global_rank(comm, dest); assert(actual_dest != -1); __stop_send_message(CUR_TIME(CUR_INDEX), CUR_RANK, actual_dest, -1, tag, thread_id, NULL); MPI_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_mpi_start_recv () { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_RECV_ID); int len; int src; int dest = CUR_RANK; uint32_t tag; app_ptr comm_id; GET_PARAM_PACKED_4(CUR_EV, len, src, tag, comm_id); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, (app_ptr) comm_id); INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(CUR_INDEX), p_info); int actual_src = src; if(src != p_info->__MPI_ANY_SOURCE) { actual_src = ezt_get_global_rank(comm, src); assert(actual_src!= -1); } struct mpi_p2p_msg_t* msg = __start_recv_message(CUR_TIME(CUR_INDEX), actual_src, dest, len, tag, thread_id, NULL); if(!IS_TIME_SET(msg->times[stop_irecv])) msg->times[stop_irecv] = CUR_TIME(CUR_INDEX); if(!IS_TIME_SET(msg->times[start_rwait])) msg->times[start_rwait] = CUR_TIME(CUR_INDEX); #if DEBUG_MSG_MATCHING printf("Start recv(src=%x, dest=%x, tag=%x, len=%d, comm=%p\n", src, dest, tag, len, comm_id); #endif MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Recv"); } void handle_mpi_stop_recv () { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); int len; int src; int dest = CUR_RANK; uint32_t tag; app_ptr comm; GET_PARAM_PACKED_4(CUR_EV, len, src, tag, comm); uint64_t timestamp = CUR_TIME(CUR_INDEX); #if DEBUG_MSG_MATCHING printf("Stop recv(src=%x, dest=%x, tag=%x, len=%d, comm=%p\n", src, dest, tag, len, comm); #endif if(__mpi_stop_recv_generic (×tamp, thread_id, src, CUR_RANK, len, tag, NULL, comm)) { /* waiting for a mpi_send that matches */ return; } __ezt_mpi_leave_function(MPI_RECV_ID); MPI_CHANGE() popState(NS_TO_MS(timestamp), "ST_Thread", thread_id); } void handle_mpi_start_sendrecv () { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_SENDRECV_ID); int rsrc = 0; int rdest = CUR_RANK; uint32_t rtag = 0; int rlen = 0; int ssrc = CUR_RANK; int sdest = 0; uint32_t stag = 0; int slen = 0; app_ptr comm = 0; GET_PARAM_PACKED_4(CUR_EV, rlen, rsrc, rtag, comm); /* process the recv */ wait_for_an_event(CUR_TRACE->id, EZTRACE_MPI_Info); GET_PARAM_PACKED_3(CUR_EV, slen, sdest, stag); INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(CUR_INDEX), p_info); struct mpi_p2p_msg_t* msg; /* process the send */ if (ssrc != p_info->__MPI_PROC_NULL && sdest != p_info->__MPI_PROC_NULL) { msg = __mpi_send_generic( thread_id, ssrc, sdest, slen, stag, NULL, comm); if(!IS_TIME_SET(msg->times[stop_isend])) { msg->times[stop_isend] = CUR_TIME(CUR_INDEX); } if(!IS_TIME_SET(msg->times[start_swait])) { msg->times[start_swait] = CUR_TIME(CUR_INDEX); } } /* process the recv */ if (rsrc != p_info->__MPI_PROC_NULL && rdest != p_info->__MPI_PROC_NULL) { int actual_src = rsrc; if(rsrc != p_info->__MPI_ANY_SOURCE) { actual_src = ezt_get_global_rank_generic(CUR_INDEX, comm, rsrc); assert(actual_src!= -1); } msg = __start_recv_message(CUR_TIME(CUR_INDEX), actual_src, rdest, rlen, rtag, thread_id, NULL); if(!IS_TIME_SET(msg->times[stop_irecv])) msg->times[stop_irecv] = CUR_TIME(CUR_INDEX); if(!IS_TIME_SET(msg->times[start_rwait])) msg->times[start_rwait] = CUR_TIME(CUR_INDEX); } MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Sendrecv"); } void handle_mpi_stop_sendrecv () { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); /* we need to process the recv first because we may have to re-synchronize traces * and thus, we may have to call handle_mpi_sop_sendrecv several times (until the corresponding * send occurs). */ int rsrc = 0; int rdest = CUR_RANK; uint32_t rtag = 0; int rlen = 0; int ssrc = CUR_RANK; int sdest = 0; uint32_t stag = 0; int slen = 0; app_ptr comm; GET_PARAM_PACKED_4(CUR_EV, rlen, rsrc, rtag, comm); uint64_t timestamp = CUR_TIME(CUR_INDEX); INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(CUR_INDEX), p_info); /* process the recv */ if (rsrc != p_info->__MPI_PROC_NULL && rdest != p_info->__MPI_PROC_NULL) { if(__mpi_stop_recv_generic (×tamp, thread_id, rsrc, rdest, rlen, rtag, NULL, comm)) { /* waiting for a mpi _send that matches */ return; } } /* process the send */ wait_for_an_event(CUR_TRACE->id, EZTRACE_MPI_Info); GET_PARAM_PACKED_3(CUR_EV, slen, sdest, stag); if (ssrc != p_info->__MPI_PROC_NULL && sdest != p_info->__MPI_PROC_NULL) { int actual_dest = ezt_get_global_rank_generic(CUR_INDEX, comm, sdest); __stop_send_message(timestamp, CUR_RANK, actual_dest, -1, stag, thread_id, NULL); } __ezt_mpi_leave_function(MPI_SENDRECV_ID); /* pop the sendrecv state */ MPI_CHANGE() popState(NS_TO_MS(timestamp), "ST_Thread", thread_id); } void handle_mpi_start_sendrecv_replace () { handle_mpi_start_sendrecv(); /* todo: implement this */ } void handle_mpi_stop_sendrecv_replace () { handle_mpi_stop_sendrecv(); } /* todo: implement this ! */ void handle_mpi_start_bsend() { /* for now, let's assume that bsend and send are the same */ handle_mpi_start_send (); } void handle_mpi_stop_bsend() { handle_mpi_stop_send (); } void handle_mpi_start_ssend() { handle_mpi_start_send (); } void handle_mpi_stop_ssend() { handle_mpi_stop_send (); } void handle_mpi_start_rsend() { handle_mpi_start_send (); } void handle_mpi_stop_rsend() { handle_mpi_stop_send (); } void handle_mpi_isend_generic(const char* state) { DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_ISEND_ID); int len; __attribute__((unused)) int src = CUR_RANK; int dest; uint32_t tag; app_ptr app_req; app_ptr comm; GET_PARAM_PACKED_5(CUR_EV, len, dest, tag, app_req, comm); struct mpi_request * mpi_req = __mpi_new_mpi_request(CUR_RANK, app_req, mpi_req_send); assert(mpi_req); __mpi_send_generic( thread_id, CUR_RANK, dest, len, tag, mpi_req, comm); /* todo: add a send event here */ MPI_CHANGE() pushState (CURRENT, "ST_Thread", thread_id, state); } void handle_mpi_isend() { FUNC_NAME; handle_mpi_isend_generic("STV_MPI_Isend"); } void handle_mpi_ibsend() { FUNC_NAME; handle_mpi_isend_generic("STV_MPI_Ibsend"); } void handle_mpi_issend() { FUNC_NAME; handle_mpi_isend_generic("STV_MPI_Irsend"); } void handle_mpi_irsend() { FUNC_NAME; handle_mpi_isend_generic("STV_MPI_Irsend"); } void handle_mpi_stop_isend_generic() { DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_leave_function(MPI_ISEND_ID); app_ptr app_req; GET_PARAM_PACKED_1(CUR_EV, app_req); struct mpi_request * mpi_req = __mpi_find_pending_mpi_req(CUR_RANK, app_req, mpi_req_send); assert(mpi_req); struct mpi_p2p_msg_t* msg = __mpi_find_p2p_message_by_mpi_req(CUR_RANK, mpi_req); assert(msg); if(!IS_TIME_SET(msg->times[stop_isend])) msg->times[stop_isend] = CUR_TIME(CUR_INDEX); /* todo: add a send event here */ MPI_CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handle_mpi_stop_isend() { FUNC_NAME; handle_mpi_stop_isend_generic(); } void handle_mpi_stop_ibsend() { FUNC_NAME; handle_mpi_stop_isend_generic(); } void handle_mpi_stop_issend() { FUNC_NAME; handle_mpi_stop_isend_generic(); } void handle_mpi_stop_irsend() { FUNC_NAME; handle_mpi_stop_isend_generic(); } void handle_mpi_irecv() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_IRECV_ID); int len; int src; int dest = CUR_RANK; uint32_t tag; app_ptr app_req; app_ptr comm; GET_PARAM_PACKED_5(CUR_EV, len, src, tag, app_req, comm); struct mpi_request * mpi_req = __mpi_new_mpi_request(CUR_RANK, app_req, mpi_req_recv); assert(mpi_req); __mpi_start_recv_generic (thread_id, src, dest, len, tag, mpi_req, comm); MPI_CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "STV_MPI_Irecv"); } void handle_mpi_stop_irecv() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); app_ptr app_req; GET_PARAM_PACKED_1(CUR_EV, app_req); __ezt_mpi_leave_function(MPI_IRECV_ID); struct mpi_request * mpi_req = __mpi_find_pending_mpi_req(CUR_RANK, app_req, mpi_req_recv); assert(mpi_req); struct mpi_p2p_msg_t* msg = __mpi_find_p2p_message_by_mpi_req(CUR_RANK, mpi_req); assert(msg); if(!IS_TIME_SET(msg->times[stop_irecv])) msg->times[stop_irecv] = CUR_TIME(CUR_INDEX); /* todo: add a recv event here */ MPI_CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handle_mpi_start_put() { /* todo */ } void handle_mpi_stop_put() { /* todo */ } void handle_mpi_start_get() { /* todo */ } void handle_mpi_stop_get() { /* todo */ } int __handle_mpi_start_wait_generic(struct mpi_request * req) { if (!req || req->status == mpi_req_status_none) { return 0; } DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); if(req->req_type == mpi_req_recv) { /* this is a receive request */ struct mpi_p2p_msg_t* msg = __mpi_find_p2p_message_by_mpi_req(CUR_RANK, req); assert(msg); msg->times[start_rwait] = CUR_TIME(CUR_INDEX); return 1; } else if(req->req_type == mpi_req_send) { /* this is a send request */ struct mpi_p2p_msg_t* msg = __mpi_find_p2p_message_by_mpi_req(CUR_RANK, req); assert(msg); msg->times[start_swait] = CUR_TIME(CUR_INDEX); return 1; } else { /* non blocking collective */ #if 0 struct mpi_coll_msg_t *coll_msg = req->coll_msg; switch(coll_msg->type) { case mpi_coll_barrier: MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Barrier"); break; case mpi_coll_bcast: MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_BCast"); break; case mpi_coll_gather: MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Gather"); break; case mpi_coll_scatter: MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Scatter"); break; case mpi_coll_allgather: MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Allgather"); break; case mpi_coll_alltoall: MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Alltoall"); break; case mpi_coll_reduce: MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Reduce"); break; case mpi_coll_allreduce: MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Allreduce"); break; case mpi_coll_reduce_scatter: MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_reduce_scatter"); break; case mpi_coll_scan: MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Scan"); break; default: fprintf(stderr, "%s: Unknown collective type : %d\n", __FUNCTION__, coll_msg->type); } #endif return 1; } return 0; } void handle_mpi_start_wait() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_WAIT_ID); app_ptr mpi_req; GET_PARAM_PACKED_1(CUR_EV, mpi_req); struct mpi_request * req = __mpi_find_pending_mpi_req(CUR_RANK, mpi_req, mpi_req_none); if(__handle_mpi_start_wait_generic(req)) { MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Wait"); } } void handle_mpi_start_waitany() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(CUR_INDEX), p_info); __ezt_mpi_enter_function(MPI_WAITANY_ID); int nb_reqs; GET_PARAM_PACKED_1(CUR_EV, nb_reqs); int i; MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Wait"); for(i=0; iid, EZTRACE_MPI_Info); app_ptr mpi_req; GET_PARAM_PACKED_1(CUR_EV, mpi_req); if(mpi_req == p_info->__MPI_REQUEST_NULL) continue; struct mpi_request * req = __mpi_find_pending_mpi_req(CUR_RANK, mpi_req, mpi_req_none); __handle_mpi_start_wait_generic(req); } } void handle_mpi_start_waitall() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(CUR_INDEX), p_info); __ezt_mpi_enter_function(MPI_WAITALL_ID); int nb_reqs; GET_PARAM_PACKED_1(CUR_EV, nb_reqs); int i; double cur_time = CURRENT; for(i=0; iid, EZTRACE_MPI_Info); app_ptr mpi_req; GET_PARAM_PACKED_1(CUR_EV, mpi_req); if(mpi_req == p_info->__MPI_REQUEST_NULL) { continue; } struct mpi_request * req = __mpi_find_pending_mpi_req(CUR_RANK, mpi_req, mpi_req_none); __handle_mpi_start_wait_generic(req); } MPI_CHANGE() pushState(cur_time, "ST_Thread", thread_id, "STV_MPI_Wait"); } static int __handle_mpi_test_success(app_ptr req, uint64_t timestamp) { DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(CUR_INDEX), p_info); struct mpi_request * mpi_req = __mpi_find_pending_mpi_req(CUR_RANK, req, mpi_req_none); if(!mpi_req) { /* this means the request was already freed, let's skip this one */ return 1; } if(mpi_req->req_type == mpi_req_recv) { /* this is a recv request */ struct mpi_p2p_msg_t* msg = __mpi_find_p2p_message_by_mpi_req(CUR_RANK, mpi_req); assert(msg); assert(msg->recver_request == mpi_req); if(__mpi_stop_recv_generic(×tamp, thread_id, msg->src, msg->dest, msg->len, msg->tag, mpi_req,p_info->__MPI_COMM_WORLD.comm_id)) return 0; } else if(mpi_req->req_type == mpi_req_send) { struct mpi_p2p_msg_t* msg = __mpi_find_p2p_message_by_mpi_req(CUR_RANK, mpi_req); assert(msg); assert(mpi_req->req_type == mpi_req_send); assert(msg->sender_request == mpi_req); /* this is a send request */ __stop_send_message(timestamp, msg->src, msg->dest, msg->len, msg->tag, thread_id, mpi_req); } else { /* non blocking collective */ int local_rank = -1; int i; /* find the rank of the process in this collective */ for(i=0; icoll_msg->comm_size; i++) { if(mpi_req->coll_msg->requests[i] == mpi_req) { local_rank = i; break; } } assert(local_rank >= 0); struct mpi_coll_msg_t* msg = __leave_coll(timestamp, mpi_req->coll_msg->type, mpi_req->coll_msg->comm[local_rank], CUR_RANK, mpi_req, mpi_req->coll_msg->thread_ids[local_rank]); if(__mpi_barrier_stop_generic(msg, CUR_RANK)) return 0; if(msg->type == mpi_coll_barrier) { mpi_synchronize_processes(msg, local_rank); } } return 1; } static void handle_mpi_start_probe() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_PROBE_ID); MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Probe"); } static void handle_mpi_stop_probe() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_leave_function(MPI_PROBE_ID); char* probe_str = NULL; int src; uint32_t tag; int len; GET_PARAM_PACKED_3(CUR_EV, src, tag, len); int res __attribute__ ((__unused__)); res = asprintf(&probe_str, "src=%d, tag=%x, length=%d", src, tag, len); MPI_CHANGE() addEvent(CURRENT, "E_MPI_Probe_success", thread_id, probe_str); MPI_CHANGE() popState(CURRENT, "ST_Thread", thread_id); free(probe_str); } void handle_mpi_iprobe_success() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); char* probe_str = NULL; int src; uint32_t tag; int len; GET_PARAM_PACKED_3(CUR_EV, src, tag, len); int res __attribute__ ((__unused__)); res = asprintf(&probe_str, "src=%d, tag=%x, length=%d", src, tag, len); MPI_CHANGE() addEvent(CURRENT, "E_MPI_Iprobe_success", thread_id, probe_str); free(probe_str); } void handle_mpi_iprobe_failed() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); char* probe_str = NULL; int src; uint32_t tag; GET_PARAM_PACKED_2(CUR_EV, src, tag); int res __attribute__ ((__unused__)); res = asprintf(&probe_str, "src=%d, tag=%x", src, tag); MPI_CHANGE() addEvent(CURRENT, "E_MPI_Iprobe_failed", thread_id, probe_str); free(probe_str); } void __handle_cancel_mpi_request(app_ptr req) { #warning TODO struct mpi_request * mpi_req = __mpi_find_mpi_req(CUR_RANK, req, mpi_req_none); if(!mpi_req) { /* this means the request was already freed, let's skip this one */ return ; } mpi_req->status = mpi_req_status_none; } void handle_mpi_cancel() { FUNC_NAME; app_ptr req; GET_PARAM_PACKED_1(CUR_EV, req); __handle_cancel_mpi_request(req); } void handle_mpi_stop_wait() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); app_ptr req; GET_PARAM_PACKED_1(CUR_EV, req); if(!__handle_mpi_test_success(req, CUR_TIME(CUR_INDEX))) return; __ezt_mpi_leave_function(MPI_WAIT_ID); MPI_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_mpi_stop_wait_failed() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); app_ptr req; GET_PARAM_PACKED_1(CUR_EV, req); __handle_cancel_mpi_request(req); __ezt_mpi_leave_function(MPI_WAIT_ID); MPI_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_mpi_stop_waitany() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(CUR_INDEX), p_info); int nb_reqs; int index; GET_PARAM_PACKED_2(CUR_EV, nb_reqs, index); /* process each request*/ int i; uint64_t timestamp = CUR_TIME(CUR_INDEX); for(i=0; iid, EZTRACE_MPI_Info); app_ptr mpi_req; GET_PARAM_PACKED_1(CUR_EV, mpi_req); if(index == i) { /* the successful request */ if(__handle_mpi_test_success(mpi_req, timestamp)) continue; } else { if(mpi_req == p_info->__MPI_REQUEST_NULL) continue; /* the other requests */ struct mpi_request * req = __mpi_find_pending_mpi_req(CUR_RANK, mpi_req, mpi_req_none); if (!req) { continue; } assert(req); struct mpi_p2p_msg_t* msg = __mpi_find_p2p_message_by_mpi_req(CUR_RANK, req); assert(msg); if(req->req_type == mpi_req_recv) { /* this is a receive request */ msg->times[start_rwait] = TIME_INIT; } else { /* this is a send request */ msg->times[start_swait] = timestamp; } } } __ezt_mpi_leave_function(MPI_WAITANY_ID); MPI_CHANGE() popState(NS_TO_MS(timestamp), "ST_Thread", thread_id); } struct mpi_stop_waitall_replay { int nb_reqs; int i; uint64_t timestamp; app_ptr mpi_req; }; void handle_mpi_stop_waitall( struct mpi_stop_waitall_replay *r) { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(CUR_INDEX), p_info); int nb_reqs; if(r) nb_reqs = r->nb_reqs; else GET_PARAM_PACKED_1(CUR_EV, nb_reqs); uint64_t timestamp = CUR_TIME(CUR_INDEX); /* process each request*/ int i = 0; if(r) { i = r->i; timestamp = r->timestamp; } for(; ii == i)) { /* unless this is the replay first look, fetch next event */ wait_for_an_event(CUR_TRACE->id, EZTRACE_MPI_Info); } app_ptr mpi_req; GET_PARAM_PACKED_1(CUR_EV, mpi_req); if(r && (r->i == i)) { assert(mpi_req == r->mpi_req); } if(mpi_req == p_info->__MPI_REQUEST_NULL) continue; if(! __handle_mpi_test_success(mpi_req, timestamp)) { /* The matching isend has not occured yet. We need to wait until it happens */ struct mpi_stop_waitall_replay* replay = malloc(sizeof(struct mpi_stop_waitall_replay)); replay->nb_reqs = nb_reqs; replay->i = i; replay->mpi_req = mpi_req; replay->timestamp = timestamp; ask_for_replay(CUR_INDEX, (void (*)(void *)) handle_mpi_stop_waitall, replay); goto out; } } __ezt_mpi_leave_function(MPI_WAITALL_ID); MPI_CHANGE() popState(NS_TO_MS(timestamp), "ST_Thread", thread_id); out: if( r ) free(r); return; } void handle_mpi_test_success() { FUNC_NAME; app_ptr mpi_req; GET_PARAM_PACKED_1(CUR_EV, mpi_req); if(__handle_mpi_test_success(mpi_req, CUR_TIME(CUR_INDEX))) return; } void handle_mpi_start_BCast() { /* some collective communications won't work with communicators != COMM_WORLD * (rank in the wrong communicator used) */ FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_BCAST_ID); MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_BCast"); app_ptr comm_id; int my_rank; int comm_size; int data_size; int root; GET_PARAM_PACKED_5(CUR_EV, comm_id, comm_size, my_rank, root, data_size); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_coll_msg_t* msg = __enter_coll(CUR_TIME(CUR_INDEX), mpi_coll_bcast, comm, my_rank, data_size, NULL, thread_id); msg->root_process = root; __mpi_barrier_start_generic(msg, my_rank); } void handle_mpi_start_Gather() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_GATHER_ID); MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Gather"); app_ptr comm_id; int my_rank; int comm_size; int data_size; int root; GET_PARAM_PACKED_5(CUR_EV, comm_id, comm_size, my_rank, data_size, root); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); assert(comm->my_rank == my_rank); struct mpi_coll_msg_t* msg = __enter_coll(CUR_TIME(CUR_INDEX), mpi_coll_gather, comm, my_rank, data_size, NULL, thread_id); msg->root_process = root; __mpi_barrier_start_generic(msg, my_rank); } void handle_mpi_start_Gatherv() { handle_mpi_start_Gather(); } void handle_mpi_start_Scatter() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_SCATTER_ID); MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Scatter"); app_ptr comm_id; int my_rank; int comm_size; int data_size; int root; GET_PARAM_PACKED_5(CUR_EV, comm_id, comm_size, my_rank, data_size, root); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_coll_msg_t* msg = __enter_coll(CUR_TIME(CUR_INDEX), mpi_coll_scatter, comm, my_rank, data_size, NULL, thread_id); msg->root_process = root; __mpi_barrier_start_generic(msg, my_rank); } void handle_mpi_start_Scatterv() { handle_mpi_start_Scatter(); } void handle_mpi_start_Allgather() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_ALLGATHER_ID); MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Allgather"); app_ptr comm_id; int my_rank; int comm_size; int data_size; GET_PARAM_PACKED_4(CUR_EV, comm_id, comm_size, my_rank, data_size); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); assert(comm); struct mpi_coll_msg_t* msg = __enter_coll(CUR_TIME(CUR_INDEX), mpi_coll_allgather, comm, my_rank, data_size, NULL, thread_id); __mpi_barrier_start_generic(msg, my_rank); } void handle_mpi_start_Allgatherv() { handle_mpi_start_Allgather(); } void handle_mpi_start_Alltoall() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_ALLTOALL_ID); MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Alltoall"); app_ptr comm_id; int my_rank; int comm_size; int data_size; GET_PARAM_PACKED_4(CUR_EV, comm_id, comm_size, my_rank, data_size); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_coll_msg_t* msg = __enter_coll(CUR_TIME(CUR_INDEX), mpi_coll_alltoall, comm, my_rank, data_size, NULL, thread_id); __mpi_barrier_start_generic(msg, my_rank); } void handle_mpi_start_Alltoallv() { handle_mpi_start_Alltoall(); } void handle_mpi_start_Reduce() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_REDUCE_ID); MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Reduce"); app_ptr comm_id; int my_rank; int comm_size; int data_size; int root; GET_PARAM_PACKED_5(CUR_EV, comm_id, comm_size, my_rank, data_size, root); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_coll_msg_t* msg = __enter_coll(CUR_TIME(CUR_INDEX), mpi_coll_reduce, comm, my_rank, data_size, NULL, thread_id); msg->root_process = root; __mpi_barrier_start_generic(msg, my_rank); } void handle_mpi_start_Allreduce() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_ALLREDUCE_ID); MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Allreduce"); app_ptr comm_id; int my_rank; int comm_size; int data_size; GET_PARAM_PACKED_4(CUR_EV, comm_id, comm_size, my_rank, data_size); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_coll_msg_t* msg = __enter_coll(CUR_TIME(CUR_INDEX), mpi_coll_allreduce, comm, my_rank, data_size, NULL, thread_id); __mpi_barrier_start_generic(msg, my_rank); } void handle_mpi_start_Reduce_scatter() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_REDUCE_SCATTER_ID); MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_reduce_scatter"); app_ptr comm_id; int my_rank; int comm_size; int data_size; GET_PARAM_PACKED_4(CUR_EV, comm_id, comm_size, my_rank, data_size); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_coll_msg_t* msg = __enter_coll(CUR_TIME(CUR_INDEX), mpi_coll_reduce_scatter, comm, my_rank, data_size, NULL, thread_id); __mpi_barrier_start_generic(msg, my_rank); } void handle_mpi_start_Scan() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_SCAN_ID); MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Scan"); app_ptr comm_id; int my_rank; int comm_size; int data_size; GET_PARAM_PACKED_4(CUR_EV, comm_id, comm_size, my_rank, data_size); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_coll_msg_t* msg = __enter_coll(CUR_TIME(CUR_INDEX), mpi_coll_scan, comm, my_rank, data_size, NULL, thread_id); __mpi_barrier_start_generic(msg, my_rank); } void handle_mpi_start_barrier() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); MPI_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_MPI_Barrier"); __ezt_mpi_enter_function(MPI_BARRIER_ID); app_ptr comm_id; int my_rank; int comm_size; GET_PARAM_PACKED_3(CUR_EV, comm_id, my_rank, comm_size); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_coll_msg_t* msg = __enter_coll(CUR_TIME(CUR_INDEX), mpi_coll_barrier, comm, my_rank, 0, NULL, thread_id); __mpi_barrier_start_generic(msg, my_rank); } void handle_mpi_stop_BCast() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); app_ptr comm_id; int my_rank; int comm_size; GET_PARAM_PACKED_3(CUR_EV, comm_id, comm_size, my_rank); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_coll_msg_t* msg = __leave_coll(CUR_TIME(CUR_INDEX), mpi_coll_bcast, comm, my_rank, NULL, thread_id); if(__mpi_barrier_stop_generic(msg, my_rank)) /* one of the process that belong to this collective didn't reach it. * We need to wait until it reach the begining of the collective before * pursuing. */ return; __ezt_mpi_leave_function(MPI_BCAST_ID); MPI_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_mpi_stop_Gather() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); app_ptr comm_id; int my_rank; int comm_size; GET_PARAM_PACKED_3(CUR_EV, comm_id, comm_size, my_rank); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); assert(comm->my_rank == my_rank); struct mpi_coll_msg_t* msg = __leave_coll(CUR_TIME(CUR_INDEX), mpi_coll_gather, comm, my_rank, NULL, thread_id); if(__mpi_barrier_stop_generic(msg, my_rank)) /* one of the process that belong to this collective didn't reach it. * We need to wait until it reach the begining of the collective before * pursuing. */ return; __ezt_mpi_leave_function(MPI_GATHER_ID); MPI_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_mpi_stop_Gatherv() { handle_mpi_stop_Gather(); } void handle_mpi_stop_Scatter() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); app_ptr comm_id; int my_rank; int comm_size; GET_PARAM_PACKED_3(CUR_EV, comm_id, comm_size, my_rank); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_coll_msg_t* msg = __leave_coll(CUR_TIME(CUR_INDEX), mpi_coll_scatter, comm, my_rank, NULL, thread_id); if(__mpi_barrier_stop_generic(msg, my_rank)) /* one of the process that belong to this collective didn't reach it. * We need to wait until it reach the begining of the collective before * pursuing. */ return; __ezt_mpi_leave_function(MPI_SCATTER_ID); MPI_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_mpi_stop_Scatterv() { handle_mpi_stop_Scatter(); } void handle_mpi_stop_Allgather() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); app_ptr comm_id; int my_rank; int comm_size; GET_PARAM_PACKED_3(CUR_EV, comm_id, comm_size, my_rank); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_coll_msg_t* msg = __leave_coll(CUR_TIME(CUR_INDEX), mpi_coll_allgather, comm, my_rank, NULL, thread_id); if(__mpi_barrier_stop_generic(msg, my_rank)) /* one of the process that belong to this collective didn't reach it. * We need to wait until it reach the begining of the collective before * pursuing. */ return; __ezt_mpi_leave_function(MPI_ALLGATHER_ID); MPI_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_mpi_stop_Allgatherv() { handle_mpi_stop_Allgather(); } void handle_mpi_stop_Alltoall() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); app_ptr comm_id; int my_rank; int comm_size; GET_PARAM_PACKED_3(CUR_EV, comm_id, comm_size, my_rank); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_coll_msg_t* msg = __leave_coll(CUR_TIME(CUR_INDEX), mpi_coll_alltoall, comm, my_rank, NULL, thread_id); if(__mpi_barrier_stop_generic(msg, my_rank)) /* one of the process that belong to this collective didn't reach it. * We need to wait until it reach the begining of the collective before * pursuing. */ return; __ezt_mpi_leave_function(MPI_ALLTOALL_ID); MPI_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_mpi_stop_Alltoallv() { handle_mpi_stop_Alltoall(); } void handle_mpi_stop_Reduce() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); app_ptr comm_id; int my_rank; int comm_size; GET_PARAM_PACKED_3(CUR_EV, comm_id, comm_size, my_rank); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_coll_msg_t* msg = __leave_coll(CUR_TIME(CUR_INDEX), mpi_coll_reduce, comm, my_rank, NULL, thread_id); if(__mpi_barrier_stop_generic(msg, my_rank)) { /* one of the process that belong to this collective didn't reach it. * We need to wait until it reach the begining of the collective before * pursuing. */ return; } __ezt_mpi_leave_function(MPI_REDUCE_ID); MPI_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_mpi_stop_Allreduce() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); app_ptr comm_id; int my_rank; int comm_size; GET_PARAM_PACKED_3(CUR_EV, comm_id, comm_size, my_rank); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_coll_msg_t* msg = __leave_coll(CUR_TIME(CUR_INDEX), mpi_coll_allreduce, comm, my_rank, NULL, thread_id); if(__mpi_barrier_stop_generic(msg, my_rank)) /* one of the process that belong to this collective didn't reach it. * We need to wait until it reach the begining of the collective before * pursuing. */ return; __ezt_mpi_leave_function(MPI_ALLREDUCE_ID); MPI_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_mpi_stop_Reduce_scatter() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); app_ptr comm_id; int my_rank; int comm_size; GET_PARAM_PACKED_3(CUR_EV, comm_id, comm_size, my_rank); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_coll_msg_t* msg = __leave_coll(CUR_TIME(CUR_INDEX), mpi_coll_reduce_scatter, comm, my_rank, NULL, thread_id); if(__mpi_barrier_stop_generic(msg, my_rank)) /* one of the process that belong to this collective didn't reach it. * We need to wait until it reach the begining of the collective before * pursuing. */ return; __ezt_mpi_leave_function(MPI_REDUCE_SCATTER_ID); MPI_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_mpi_stop_Scan() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); app_ptr comm_id; int my_rank; int comm_size; GET_PARAM_PACKED_3(CUR_EV, comm_id, comm_size, my_rank); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_coll_msg_t* msg = __leave_coll(CUR_TIME(CUR_INDEX), mpi_coll_scan, comm, my_rank, NULL, thread_id); if(__mpi_barrier_stop_generic(msg, my_rank)) /* one of the process that belong to this collective didn't reach it. * We need to wait until it reach the begining of the collective before * pursuing. */ return; __ezt_mpi_leave_function(MPI_SCAN_ID); MPI_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } static void mpi_synchronize_processes(struct mpi_coll_msg_t* msg, int my_rank) { uint64_t my_stop_time = msg->times[my_rank][stop_coll]; int i; for(i=0; icomm[my_rank]->comm_size; i++) { if(i != my_rank) { /* search for the max(times[start_coll], my_stop_coll) */ if(msg->times[i][start_coll] > my_stop_time) { my_stop_time = msg->times[i][start_coll]; } } } /* If one of the processes arrived after process #my_rank left, there's a * synchronisation problem: we need to delay process #my_rank so that it * leaves the collective operation after all the processes arrived. */ if(my_stop_time > msg->times[my_rank][stop_coll]) { int global_rank = ezt_get_global_rank(msg->comm[my_rank], my_rank); msg->times[my_rank][stop_coll] += add_delay_to_trace(global_rank, msg->times[my_rank][stop_coll], my_stop_time, msg->thread_ids[my_rank]); } } void handle_mpi_stop_barrier() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); app_ptr comm_id; int my_rank; int comm_size; GET_PARAM_PACKED_3(CUR_EV, comm_id, my_rank, comm_size); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_coll_msg_t* msg = __leave_coll(CUR_TIME(CUR_INDEX), mpi_coll_barrier, comm, my_rank, NULL, thread_id); if(__mpi_barrier_stop_generic(msg, my_rank)) /* one of the process that belong to this collective didn't reach it. * We need to wait until it reach the begining of the collective before * pursuing. */ return; mpi_synchronize_processes(msg, my_rank); __ezt_mpi_leave_function(MPI_BARRIER_ID); MPI_CHANGE() popState(CURRENT, "ST_Thread", thread_id); } /* non-blocking collective */ void handle_mpi_Ibcast() { /* some collective communications won't work with communicators != COMM_WORLD * (rank in the wrong communicator used) */ FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_IBCAST_ID); app_ptr comm_id; int my_rank; int comm_size; app_ptr req; int data_size; int root; GET_PARAM_PACKED_6(CUR_EV, comm_id, comm_size, my_rank, req, data_size, root); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_request * mpi_req = __mpi_new_mpi_request(CUR_RANK, req, mpi_req_coll); assert(mpi_req); struct mpi_coll_msg_t* msg = __enter_coll(CUR_TIME(CUR_INDEX), mpi_coll_bcast, comm, my_rank, data_size, mpi_req, thread_id); msg->root_process = root; __mpi_barrier_start_generic(msg, my_rank); MPI_CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "STV_MPI_Ibcast"); } void handle_mpi_Ibarrier() { /* some collective communications won't work with communicators != COMM_WORLD * (rank in the wrong communicator used) */ FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_IBARRIER_ID); app_ptr comm_id; int my_rank; int comm_size; app_ptr req; GET_PARAM_PACKED_4(CUR_EV, comm_id, my_rank, comm_size, req); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_request * mpi_req = __mpi_new_mpi_request(CUR_RANK, req, mpi_req_coll); assert(mpi_req); struct mpi_coll_msg_t* msg = __enter_coll(CUR_TIME(CUR_INDEX), mpi_coll_barrier, comm, my_rank, 0, mpi_req, thread_id); __mpi_barrier_start_generic(msg, my_rank); MPI_CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "STV_MPI_Ibarrier"); } void handle_mpi_Igather() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_IGATHER_ID); app_ptr comm_id; int my_rank; int comm_size; app_ptr req; int data_size; int root; GET_PARAM_PACKED_6(CUR_EV, comm_id, comm_size, my_rank, req, data_size, root); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_request * mpi_req = __mpi_new_mpi_request(CUR_RANK, req, mpi_req_coll); assert(mpi_req); struct mpi_coll_msg_t* msg = __enter_coll(CUR_TIME(CUR_INDEX), mpi_coll_gather, comm, my_rank, data_size, mpi_req, thread_id); msg->root_process = root; __mpi_barrier_start_generic(msg, my_rank); MPI_CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "STV_MPI_Igather"); } void handle_mpi_Igatherv() { handle_mpi_Igather(); } void handle_mpi_Iscatter() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_ISCATTER_ID); app_ptr comm_id; int my_rank; int comm_size; int data_size; app_ptr req; int root; GET_PARAM_PACKED_6(CUR_EV, comm_id, comm_size, my_rank, req, data_size, root); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_request * mpi_req = __mpi_new_mpi_request(CUR_RANK, req, mpi_req_coll); assert(mpi_req); struct mpi_coll_msg_t* msg = __enter_coll(CUR_TIME(CUR_INDEX), mpi_coll_scatter, comm, my_rank, data_size, mpi_req, thread_id); msg->root_process = root; __mpi_barrier_start_generic(msg, my_rank); MPI_CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "STV_MPI_Iscatter"); } void handle_mpi_Iscatterv() { handle_mpi_Iscatter(); } void handle_mpi_Iallgather() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_IALLGATHER_ID); app_ptr comm_id; int my_rank; int comm_size; app_ptr req; int data_size; GET_PARAM_PACKED_5(CUR_EV, comm_id, comm_size, my_rank, req, data_size); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_request * mpi_req = __mpi_new_mpi_request(CUR_RANK, req, mpi_req_coll); assert(mpi_req); struct mpi_coll_msg_t* msg = __enter_coll(CUR_TIME(CUR_INDEX), mpi_coll_allgather, comm, my_rank, data_size, mpi_req, thread_id); __mpi_barrier_start_generic(msg, my_rank); MPI_CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "STV_MPI_Iallgather"); } void handle_mpi_Iallgatherv() { handle_mpi_Iallgather(); } void handle_mpi_Ialltoall() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_IALLTOALL_ID); app_ptr comm_id; int my_rank; int comm_size; app_ptr req; int data_size; GET_PARAM_PACKED_5(CUR_EV, comm_id, comm_size, my_rank, req, data_size); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_request * mpi_req = __mpi_new_mpi_request(CUR_RANK, req, mpi_req_coll); assert(mpi_req); struct mpi_coll_msg_t* msg = __enter_coll(CUR_TIME(CUR_INDEX), mpi_coll_alltoall, comm, my_rank, data_size, mpi_req, thread_id); __mpi_barrier_start_generic(msg, my_rank); MPI_CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "STV_MPI_Ialltoall"); } void handle_mpi_Ialltoallv() { handle_mpi_Ialltoall(); } void handle_mpi_Ireduce() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_IREDUCE_ID); app_ptr comm_id; int my_rank; int comm_size; app_ptr req; int data_size; int root; GET_PARAM_PACKED_6(CUR_EV, comm_id, comm_size, my_rank, req, data_size, root); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_request * mpi_req = __mpi_new_mpi_request(CUR_RANK, req, mpi_req_coll); assert(mpi_req); struct mpi_coll_msg_t* msg = __enter_coll(CUR_TIME(CUR_INDEX), mpi_coll_reduce, comm, my_rank, data_size, mpi_req, thread_id); msg->root_process = root; __mpi_barrier_start_generic(msg, my_rank); MPI_CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "STV_MPI_Ireduce"); } void handle_mpi_Iallreduce() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_IALLREDUCE_ID); app_ptr comm_id; int my_rank; int comm_size; app_ptr req; int data_size; GET_PARAM_PACKED_5(CUR_EV, comm_id, comm_size, my_rank, req, data_size); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_request * mpi_req = __mpi_new_mpi_request(CUR_RANK, req, mpi_req_coll); assert(mpi_req); struct mpi_coll_msg_t* msg = __enter_coll(CUR_TIME(CUR_INDEX), mpi_coll_allreduce, comm, my_rank, data_size, mpi_req, thread_id); __mpi_barrier_start_generic(msg, my_rank); MPI_CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "STV_MPI_Iallreduce"); } void handle_mpi_Ireduce_scatter() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_IREDUCE_SCATTER_ID); app_ptr comm_id; int my_rank; int comm_size; app_ptr req; int data_size; GET_PARAM_PACKED_5(CUR_EV, comm_id, comm_size, my_rank, req, data_size); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_request * mpi_req = __mpi_new_mpi_request(CUR_RANK, req, mpi_req_coll); assert(mpi_req); struct mpi_coll_msg_t* msg = __enter_coll(CUR_TIME(CUR_INDEX), mpi_coll_reduce_scatter, comm, my_rank, data_size, mpi_req, thread_id); __mpi_barrier_start_generic(msg, my_rank); MPI_CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "STV_MPI_Ireduce_scatter"); } void handle_mpi_Iscan() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); __ezt_mpi_enter_function(MPI_ISCAN_ID); app_ptr comm_id; int my_rank; int comm_size; app_ptr req; int data_size; GET_PARAM_PACKED_5(CUR_EV, comm_id, comm_size, my_rank, req, data_size); struct ezt_mpi_comm* comm = ezt_find_communicator(CUR_INDEX, comm_id); struct mpi_request * mpi_req = __mpi_new_mpi_request(CUR_RANK, req, mpi_req_coll); assert(mpi_req); struct mpi_coll_msg_t* msg = __enter_coll(CUR_TIME(CUR_INDEX), mpi_coll_scan, comm, my_rank, data_size, mpi_req, thread_id); __mpi_barrier_start_generic(msg, my_rank); MPI_CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "STV_MPI_Iscan"); } struct mpi_coll_msg_t* __mpi_find_coll_message_by_mpi_req(int rank, struct mpi_request *mpi_req); static void handle_mpi_stop_nonblocking_collective_generic() { DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); app_ptr app_req; GET_PARAM_PACKED_1(CUR_EV, app_req); struct mpi_request * mpi_req = __mpi_find_pending_mpi_req(CUR_RANK, app_req, mpi_req_coll); assert(mpi_req); struct mpi_coll_msg_t* msg = __mpi_find_coll_message_by_mpi_req(CUR_RANK, mpi_req); assert(msg); MPI_CHANGE() popState (CURRENT, "ST_Thread", thread_id); } /* non-blocking collective */ void handle_mpi_stop_ibcast() { FUNC_NAME; __ezt_mpi_leave_function(MPI_IBCAST_ID); handle_mpi_stop_nonblocking_collective_generic(); } void handle_mpi_stop_ibarrier() { FUNC_NAME; __ezt_mpi_leave_function(MPI_IBARRIER_ID); handle_mpi_stop_nonblocking_collective_generic(); } void handle_mpi_stop_igather() { FUNC_NAME; __ezt_mpi_leave_function(MPI_IGATHER_ID); handle_mpi_stop_nonblocking_collective_generic(); } void handle_mpi_stop_igatherv() { FUNC_NAME; __ezt_mpi_leave_function(MPI_IGATHER_ID); handle_mpi_stop_nonblocking_collective_generic(); } void handle_mpi_stop_iscatter() { FUNC_NAME; __ezt_mpi_leave_function(MPI_ISCATTER_ID); handle_mpi_stop_nonblocking_collective_generic(); } void handle_mpi_stop_iscatterv() { FUNC_NAME; __ezt_mpi_leave_function(MPI_ISCATTER_ID); handle_mpi_stop_nonblocking_collective_generic(); } void handle_mpi_stop_iallgather() { FUNC_NAME; __ezt_mpi_leave_function(MPI_IALLGATHER_ID); handle_mpi_stop_nonblocking_collective_generic(); } void handle_mpi_stop_iallgatherv() { FUNC_NAME; __ezt_mpi_leave_function(MPI_IALLGATHER_ID); handle_mpi_stop_nonblocking_collective_generic(); } void handle_mpi_stop_ialltoall() { FUNC_NAME; __ezt_mpi_leave_function(MPI_IALLTOALL_ID); handle_mpi_stop_nonblocking_collective_generic(); } void handle_mpi_stop_ialltoallv() { FUNC_NAME; __ezt_mpi_leave_function(MPI_IALLTOALL_ID); handle_mpi_stop_nonblocking_collective_generic(); } void handle_mpi_stop_ireduce() { FUNC_NAME; __ezt_mpi_leave_function(MPI_IREDUCE_ID); handle_mpi_stop_nonblocking_collective_generic(); } void handle_mpi_stop_iallreduce() { FUNC_NAME; __ezt_mpi_leave_function(MPI_IALLREDUCE_ID); handle_mpi_stop_nonblocking_collective_generic(); } void handle_mpi_stop_ireduce_scatter() { FUNC_NAME; __ezt_mpi_leave_function(MPI_IREDUCE_SCATTER_ID); handle_mpi_stop_nonblocking_collective_generic(); } void handle_mpi_stop_iscan() { FUNC_NAME; __ezt_mpi_leave_function(MPI_ISCAN_ID); handle_mpi_stop_nonblocking_collective_generic(); } /* end of non-blocking collective */ void handle_mpi_spawn() { FUNC_NAME; /* This event happens when a process calls MPI_Comm_spawn * We have to: * - add the process info (PID, etc.) to the spawn_list * - create a few links */ int pid; int nb_spawned; GET_PARAM_PACKED_2(CUR_EV, pid, nb_spawned); char *link_prefix = NULL; int ret = asprintf(&link_prefix, "%s_", CUR_ID); assert(ret>=0); int i; /* add the current spawn to the list of pending spawns */ struct mpi_spawn_t *spawn = malloc(sizeof(struct mpi_spawn_t)); spawn->nb_children = nb_spawned; spawn->start_time = CUR_TIME(CUR_INDEX); spawn->ppid = pid; spawn->parent_trace = CUR_TRACE; struct ezt_list_token_t* token = malloc(sizeof(struct ezt_list_token_t)); token->data = spawn; ezt_list_add(&spawn_list, token); /* start one link per spawned process */ for(i=0; i=0); MPI_CHANGE() startLink (CURRENT, "L_MPI_SPAWN", "C_Prog", CUR_ID, NULL, link_id, link_id); free(link_id); } free(link_prefix); } void handle_mpi_send_init() { FUNC_NAME; app_ptr buffer; int len; int dest; int src = CUR_RANK; GET_PARAM_PACKED_3(CUR_EV, buffer, len, dest); wait_for_an_event(CUR_TRACE->id, EZTRACE_MPI_Info); uint32_t tag; app_ptr comm; app_ptr mpi_req; GET_PARAM_PACKED_3(CUR_EV, tag, comm, mpi_req); int actual_dest = ezt_get_global_rank_generic(CUR_INDEX, comm, dest); assert(actual_dest!= -1); struct mpi_pers_req_t __attribute__((unused)) *req = __pers_init(CURRENT, mpi_req_send, buffer, src, actual_dest, len, tag, mpi_req); DECLARE_CUR_THREAD(cur_thread); } void handle_mpi_bsend_init() { handle_mpi_send_init(); } void handle_mpi_rsend_init() { handle_mpi_send_init(); } void handle_mpi_ssend_init() { handle_mpi_send_init(); } void handle_mpi_recv_init() { FUNC_NAME; INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(CUR_INDEX), p_info); app_ptr buffer; int len; int src; int dest = CUR_RANK; GET_PARAM_PACKED_3(CUR_EV, buffer, len, src); wait_for_an_event(CUR_TRACE->id, EZTRACE_MPI_Info); uint32_t tag; app_ptr comm; app_ptr mpi_req; GET_PARAM_PACKED_3(CUR_EV, tag, comm, mpi_req); int actual_src = src; if(src != p_info->__MPI_ANY_SOURCE) { actual_src = ezt_get_global_rank_generic(CUR_INDEX, comm, src); } assert(actual_src!= -1); struct mpi_pers_req_t __attribute__((unused)) *req = __pers_init(CURRENT, mpi_req_recv, buffer, actual_src, dest, len, tag, mpi_req); DECLARE_CUR_THREAD(cur_thread); } void handle_mpi_start() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(CUR_INDEX), p_info); app_ptr mpi_req; GET_PARAM_PACKED_1(CUR_EV, mpi_req); struct mpi_pers_req_t* req = __pers_start(CURRENT, CUR_RANK, mpi_req); assert(req); if(req->type == mpi_req_send) { /* todo: mpi communicator */ struct mpi_p2p_msg_t* msg = __mpi_send_generic( thread_id, CUR_RANK, req->dest, req->len, req->tag, req->mpi_req, p_info->__MPI_COMM_WORLD.comm_id); if(!IS_TIME_SET(msg->times[stop_isend])) msg->times[stop_isend] = CUR_TIME(CUR_INDEX); } else { struct mpi_p2p_msg_t* msg = __mpi_start_recv_generic( thread_id, req->src, CUR_RANK, req->len, req->tag, req->mpi_req, p_info->__MPI_COMM_WORLD.comm_id); if(!IS_TIME_SET(msg->times[stop_irecv])) msg->times[stop_irecv] = CUR_TIME(CUR_INDEX); } /* todo: add a send event here */ } int eztrace_convert_mpi_init() { if(get_mode() == EZTRACE_CONVERT) { /* Process send a message */ addEntityValue("STV_MPI_Send", "ST_Thread", "Sending", GTG_ORANGE); addEntityValue("STV_MPI_Isend", "ST_Thread", "MPI_Isend", GTG_ORANGE); addEntityValue("STV_MPI_Ibsend", "ST_Thread", "MPI_Ibsend", GTG_ORANGE); addEntityValue("STV_MPI_Issend", "ST_Thread", "MPI_Issend", GTG_ORANGE); addEntityValue("STV_MPI_Irsend", "ST_Thread", "MPI_Irsend", GTG_ORANGE); addEntityValue("STV_MPI_Sendrecv", "ST_Thread", "SendRecv", GTG_ORANGE); /* Process receive a message */ addEntityValue("STV_MPI_Recv", "ST_Thread", "Receiving", GTG_PURPLE); addEntityValue("STV_MPI_Irecv", "ST_Thread", "MPI_Irecv", GTG_PURPLE); addEntityValue("STV_MPI_Wait", "ST_Thread", "MPI_Wait", GTG_RED); addEntityValue("STV_MPI_Barrier", "ST_Thread", "MPI_Barrier", GTG_PINK); addEntityValue("STV_MPI_BCast", "ST_Thread", "MPI_BCast", GTG_PINK); addEntityValue("STV_MPI_Gather", "ST_Thread", "MPI_Gather", GTG_PINK); addEntityValue("STV_MPI_Scatter", "ST_Thread", "MPI_Scatter", GTG_PINK); addEntityValue("STV_MPI_Allgather", "ST_Thread", "MPI_Allgather", GTG_PINK); addEntityValue("STV_MPI_Alltoall", "ST_Thread", "MPI_Alltoall", GTG_PINK); addEntityValue("STV_MPI_Reduce", "ST_Thread", "MPI_Reduce", GTG_PINK); addEntityValue("STV_MPI_Allreduce", "ST_Thread", "MPI_Allreduce", GTG_PINK); addEntityValue("STV_MPI_reduce_scatter", "ST_Thread", "MPI_Reduce_scatter", GTG_PINK); addEntityValue("STV_MPI_Scan", "ST_Thread", "MPI_Scan", GTG_PINK); addEntityValue("STV_MPI_Ibarrier", "ST_Thread", "MPI_Ibarrier", GTG_PINK); addEntityValue("STV_MPI_Ibcast", "ST_Thread", "MPI_Ibcast", GTG_PINK); addEntityValue("STV_MPI_Igather", "ST_Thread", "MPI_Igather", GTG_PINK); addEntityValue("STV_MPI_Iscatter", "ST_Thread", "MPI_Iscatter", GTG_PINK); addEntityValue("STV_MPI_Iallgather", "ST_Thread", "MPI_Iallgather", GTG_PINK); addEntityValue("STV_MPI_Ialltoall", "ST_Thread", "MPI_Ialltoall", GTG_PINK); addEntityValue("STV_MPI_Ireduce", "ST_Thread", "MPI_Ireduce", GTG_PINK); addEntityValue("STV_MPI_Iallreduce", "ST_Thread", "MPI_Iallreduce", GTG_PINK); addEntityValue("STV_MPI_Ireduce_scatter", "ST_Thread", "MPI_Ireduce_scatter", GTG_PINK); addEntityValue("STV_MPI_Iscan", "ST_Thread", "MPI_Iscan", GTG_PINK); addEntityValue("STV_MPI_Probe", "ST_Thread", "MPI_Probe", GTG_PURPLE); addLinkType ("L_MPI_Coll", "MPI collective communication", "CT_Program", "CT_Thread", "CT_Thread"); addLinkType ("L_MPI_P2P", "MPI point to point communication", "CT_Program", "CT_Thread", "CT_Thread"); addLinkType ("L_MPI_SPAWN", "MPI SPAWN", "CT_Program", "CT_Thread", "CT_Thread"); addEventType ("E_MPI_CommSend", "CT_Thread", "MPI Send"); addEventType ("E_MPI_CommRecv", "CT_Thread", "MPI Recv"); addEventType ("E_MPI_EndComm", "CT_Thread", "End of an MPI communication"); addEventType ("E_MPI_Probe_success", "CT_Thread", "MPI_Probe"); addEventType ("E_MPI_Iprobe_success", "CT_Thread", "MPI_IProbe success"); addEventType ("E_MPI_Iprobe_failed", "CT_Thread", "MPI_IProbe failed"); } ezt_list_new(&spawn_list); init_mpi_pers_messages(); init_mpi_p2p_messages(); init_mpi_coll_messages(); init_mpi_stats(); return 0; } /* return 1 if the event was handled */ int handle_mpi_events(eztrace_event_t *ev) { switch (LITL_READ_GET_CODE(ev)) { case EZTRACE_MPI_INIT: handle_mpi_init (); break; case EZTRACE_MPI_DELETE_COMM: handle_mpi_delete_comm (); break; case EZTRACE_MPI_NEW_COMM: handle_mpi_new_comm (); break; case EZTRACE_MPI_START_SEND: nb_mpi_calls[MPI_SEND_ID]++; handle_mpi_start_send (); break; case EZTRACE_MPI_STOP_SEND: handle_mpi_stop_send (); break; case EZTRACE_MPI_START_RECV: nb_mpi_calls[MPI_RECV_ID]++; handle_mpi_start_recv (); break; case EZTRACE_MPI_STOP_RECV: handle_mpi_stop_recv (); break; case EZTRACE_MPI_CANCEL: handle_mpi_cancel (); break; case EZTRACE_MPI_START_SENDRECV: nb_mpi_calls[MPI_SENDRECV_ID]++; handle_mpi_start_sendrecv (); break; case EZTRACE_MPI_STOP_SENDRECV: handle_mpi_stop_sendrecv (); break; case EZTRACE_MPI_START_SENDRECV_REPLACE: nb_mpi_calls[MPI_SENDRECV_REPLACE_ID]++; handle_mpi_start_sendrecv_replace (); break; case EZTRACE_MPI_STOP_SENDRECV_REPLACE: handle_mpi_stop_sendrecv_replace (); break; case EZTRACE_MPI_START_BSEND: nb_mpi_calls[MPI_BSEND_ID]++; handle_mpi_start_bsend (); break; case EZTRACE_MPI_STOP_BSEND: handle_mpi_stop_bsend (); break; case EZTRACE_MPI_START_SSEND: nb_mpi_calls[MPI_SSEND_ID]++; handle_mpi_start_ssend (); break; case EZTRACE_MPI_STOP_SSEND: handle_mpi_stop_ssend (); break; case EZTRACE_MPI_START_RSEND: nb_mpi_calls[MPI_RSEND_ID]++; handle_mpi_start_rsend (); break; case EZTRACE_MPI_STOP_RSEND: handle_mpi_stop_rsend (); break; case EZTRACE_MPI_ISEND: nb_mpi_calls[MPI_ISEND_ID]++; handle_mpi_isend (); break; case EZTRACE_MPI_IBSEND: nb_mpi_calls[MPI_IBSEND_ID]++; handle_mpi_ibsend (); break; case EZTRACE_MPI_ISSEND: nb_mpi_calls[MPI_ISSEND_ID]++; handle_mpi_issend (); break; case EZTRACE_MPI_IRSEND: nb_mpi_calls[MPI_IRSEND_ID]++; handle_mpi_irsend (); break; case EZTRACE_MPI_IRECV: nb_mpi_calls[MPI_IRECV_ID]++; handle_mpi_irecv (); break; case EZTRACE_MPI_STOP_IRECV: handle_mpi_stop_irecv (); break; case EZTRACE_MPI_STOP_ISEND: handle_mpi_stop_isend (); break; case EZTRACE_MPI_STOP_IBSEND: handle_mpi_stop_ibsend (); break; case EZTRACE_MPI_STOP_ISSEND: handle_mpi_stop_issend (); break; case EZTRACE_MPI_STOP_IRSEND: handle_mpi_stop_irsend (); break; case EZTRACE_MPI_START_PUT: nb_mpi_calls[MPI_PUT_ID]++; handle_mpi_start_put(); break; case EZTRACE_MPI_STOP_PUT: handle_mpi_stop_put(); break; case EZTRACE_MPI_START_GET: nb_mpi_calls[MPI_GET_ID]++; handle_mpi_start_get(); break; case EZTRACE_MPI_STOP_GET: handle_mpi_stop_get(); break; case EZTRACE_MPI_START_WAIT: nb_mpi_calls[MPI_WAIT_ID]++; handle_mpi_start_wait(); break; case EZTRACE_MPI_STOP_WAIT: handle_mpi_stop_wait(); break; case EZTRACE_MPI_STOP_WAIT_FAILED: handle_mpi_stop_wait_failed(); break; case EZTRACE_MPI_START_WAITANY: nb_mpi_calls[MPI_WAITANY_ID]++; handle_mpi_start_waitany(); break; case EZTRACE_MPI_STOP_WAITANY: handle_mpi_stop_waitany(); break; case EZTRACE_MPI_START_WAITALL: nb_mpi_calls[MPI_WAITALL_ID]++; handle_mpi_start_waitall(); break; case EZTRACE_MPI_STOP_WAITALL: handle_mpi_stop_waitall(NULL); break; case EZTRACE_MPI_TEST_SUCCESS: nb_mpi_calls[MPI_TEST_ID]++; handle_mpi_test_success(); break; case EZTRACE_MPI_START_PROBE: nb_mpi_calls[MPI_PROBE_ID]++; handle_mpi_start_probe(); break; case EZTRACE_MPI_STOP_PROBE: handle_mpi_stop_probe(); break; case EZTRACE_MPI_IPROBE_SUCCESS: nb_mpi_calls[MPI_IPROBE_ID]++; handle_mpi_iprobe_success(); break; case EZTRACE_MPI_IPROBE_FAILED: handle_mpi_iprobe_failed(); break; case EZTRACE_MPI_START_BCast: nb_mpi_calls[MPI_BCAST_ID]++; handle_mpi_start_BCast(); break; case EZTRACE_MPI_START_Gather: nb_mpi_calls[MPI_GATHER_ID]++; handle_mpi_start_Gather(); break; case EZTRACE_MPI_START_Gatherv: nb_mpi_calls[MPI_GATHERV_ID]++; handle_mpi_start_Gatherv(); break; case EZTRACE_MPI_START_Scatter: nb_mpi_calls[MPI_SCATTER_ID]++; handle_mpi_start_Scatter(); break; case EZTRACE_MPI_START_Scatterv: nb_mpi_calls[MPI_SCATTERV_ID]++; handle_mpi_start_Scatterv(); break; case EZTRACE_MPI_START_Allgather: nb_mpi_calls[MPI_ALLGATHER_ID]++; handle_mpi_start_Allgather(); break; case EZTRACE_MPI_START_Allgatherv: nb_mpi_calls[MPI_ALLGATHERV_ID]++; handle_mpi_start_Allgatherv(); break; case EZTRACE_MPI_START_Alltoall: nb_mpi_calls[MPI_ALLTOALL_ID]++; handle_mpi_start_Alltoall(); break; case EZTRACE_MPI_START_Alltoallv: nb_mpi_calls[MPI_ALLTOALLV_ID]++; handle_mpi_start_Alltoallv(); break; case EZTRACE_MPI_START_Reduce: nb_mpi_calls[MPI_REDUCE_ID]++; handle_mpi_start_Reduce(); break; case EZTRACE_MPI_START_Allreduce: nb_mpi_calls[MPI_ALLREDUCE_ID]++; handle_mpi_start_Allreduce(); break; case EZTRACE_MPI_START_Reduce_scatter: nb_mpi_calls[MPI_REDUCE_SCATTER_ID]++; handle_mpi_start_Reduce_scatter(); break; case EZTRACE_MPI_START_Scan: nb_mpi_calls[MPI_SCAN_ID]++; handle_mpi_start_Scan(); break; case EZTRACE_MPI_START_BARRIER: nb_mpi_calls[MPI_BARRIER_ID]++; handle_mpi_start_barrier(); break; case EZTRACE_MPI_STOP_BCast : handle_mpi_stop_BCast(); break; case EZTRACE_MPI_STOP_Gather : handle_mpi_stop_Gather(); break; case EZTRACE_MPI_STOP_Gatherv : handle_mpi_stop_Gatherv(); break; case EZTRACE_MPI_STOP_Scatter : handle_mpi_stop_Scatter(); break; case EZTRACE_MPI_STOP_Scatterv : handle_mpi_stop_Scatterv(); break; case EZTRACE_MPI_STOP_Allgather : handle_mpi_stop_Allgather(); break; case EZTRACE_MPI_STOP_Allgatherv : handle_mpi_stop_Allgatherv(); break; case EZTRACE_MPI_STOP_Alltoall : handle_mpi_stop_Alltoall(); break; case EZTRACE_MPI_STOP_Alltoallv : handle_mpi_stop_Alltoallv(); break; case EZTRACE_MPI_STOP_Reduce : handle_mpi_stop_Reduce(); break; case EZTRACE_MPI_STOP_Allreduce : handle_mpi_stop_Allreduce(); break; case EZTRACE_MPI_STOP_Reduce_scatter : handle_mpi_stop_Reduce_scatter(); break; case EZTRACE_MPI_STOP_Scan : handle_mpi_stop_Scan(); break; case EZTRACE_MPI_STOP_BARRIER : handle_mpi_stop_barrier(); break; case EZTRACE_MPI_IBCAST: nb_mpi_calls[MPI_IBCAST_ID]++; handle_mpi_Ibcast(); break; case EZTRACE_MPI_IGATHER: nb_mpi_calls[MPI_IGATHER_ID]++; handle_mpi_Igather(); break; case EZTRACE_MPI_IGATHERV: nb_mpi_calls[MPI_IGATHERV_ID]++; handle_mpi_Igatherv(); break; case EZTRACE_MPI_ISCATTER: nb_mpi_calls[MPI_ISCATTER_ID]++; handle_mpi_Iscatter(); break; case EZTRACE_MPI_ISCATTERV: nb_mpi_calls[MPI_ISCATTERV_ID]++; handle_mpi_Iscatterv(); break; case EZTRACE_MPI_IALLGATHER: nb_mpi_calls[MPI_IALLGATHER_ID]++; handle_mpi_Iallgather(); break; case EZTRACE_MPI_IALLGATHERV: nb_mpi_calls[MPI_IALLGATHERV_ID]++; handle_mpi_Iallgatherv(); break; case EZTRACE_MPI_IALLTOALL: nb_mpi_calls[MPI_IALLTOALL_ID]++; handle_mpi_Ialltoall(); break; case EZTRACE_MPI_IALLTOALLV: nb_mpi_calls[MPI_IALLTOALLV_ID]++; handle_mpi_Ialltoallv(); break; case EZTRACE_MPI_IREDUCE: nb_mpi_calls[MPI_IREDUCE_ID]++; handle_mpi_Ireduce(); break; case EZTRACE_MPI_IALLREDUCE: nb_mpi_calls[MPI_IALLREDUCE_ID]++; handle_mpi_Iallreduce(); break; case EZTRACE_MPI_IREDUCE_SCATTER: nb_mpi_calls[MPI_IREDUCE_SCATTER_ID]++; handle_mpi_Ireduce_scatter(); break; case EZTRACE_MPI_ISCAN: nb_mpi_calls[MPI_ISCAN_ID]++; handle_mpi_Iscan(); break; case EZTRACE_MPI_IBARRIER: nb_mpi_calls[MPI_IBARRIER_ID]++; handle_mpi_Ibarrier(); break; case EZTRACE_MPI_STOP_IBCAST: handle_mpi_stop_ibcast(); break; case EZTRACE_MPI_STOP_IGATHER: handle_mpi_stop_igather(); break; case EZTRACE_MPI_STOP_IGATHERV: handle_mpi_stop_igatherv(); break; case EZTRACE_MPI_STOP_ISCATTER: handle_mpi_stop_iscatter(); break; case EZTRACE_MPI_STOP_ISCATTERV: handle_mpi_stop_iscatterv(); break; case EZTRACE_MPI_STOP_IALLGATHER: handle_mpi_stop_iallgather(); break; case EZTRACE_MPI_STOP_IALLGATHERV: handle_mpi_stop_iallgatherv(); break; case EZTRACE_MPI_STOP_IALLTOALL: handle_mpi_stop_ialltoall(); break; case EZTRACE_MPI_STOP_IALLTOALLV: handle_mpi_stop_ialltoallv(); break; case EZTRACE_MPI_STOP_IREDUCE: handle_mpi_stop_ireduce(); break; case EZTRACE_MPI_STOP_IALLREDUCE: handle_mpi_stop_iallreduce(); break; case EZTRACE_MPI_STOP_IREDUCE_SCATTER: handle_mpi_stop_ireduce_scatter(); break; case EZTRACE_MPI_STOP_ISCAN: handle_mpi_stop_iscan(); break; case EZTRACE_MPI_STOP_IBARRIER: handle_mpi_stop_ibarrier(); break; case EZTRACE_MPI_SPAWN : handle_mpi_spawn(); break; case EZTRACE_MPI_SPAWNED : handle_mpi_spawned(); break; case EZTRACE_MPI_SEND_INIT: handle_mpi_send_init(); break; case EZTRACE_MPI_BSEND_INIT: handle_mpi_bsend_init(); break; case EZTRACE_MPI_RSEND_INIT: handle_mpi_rsend_init(); break; case EZTRACE_MPI_SSEND_INIT: handle_mpi_ssend_init(); break; case EZTRACE_MPI_RECV_INIT: handle_mpi_recv_init(); break; case EZTRACE_MPI_START: nb_mpi_calls[MPI_START_ID]++; handle_mpi_start(); break; default: return 0; } return 1; } int handle_mpi_stats(eztrace_event_t *ev) { recording_stats = 1; return handle_mpi_events(ev); } #define FORMAT_BYTES(nb_bytes) \ ((uint64_t)nb_bytes<1024?"B": \ ((uint64_t)nb_bytes<1024*1024?"KB": \ ((uint64_t)nb_bytes<1024*1024*1024?"MB": \ ((uint64_t)nb_bytes<(uint64_t)1024*1024*1024*1024?"GB": \ ((uint64_t)nb_bytes<(uint64_t)1024*1024*1024*1024*1024?"TB": \ "PB"))))) float VALUE_BYTES(uint64_t nb_bytes) { int i; uint64_t div=1; for(i=0; i<6; i++) { if((nb_bytes/div)<1024) return (nb_bytes/(double)div); div*=1024; } return (float)nb_bytes; } void print_mpi_stats() { printf ( "\nMPI:\n"); printf ( "---\n"); /* todo: * add: * - communication pattern (matrix) * - min/max/average message length * - min/max/average communication duration */ int i; #if 0 /* Print the of mpi_send, isend, issend, bcast, gather, scatter etc. */ for(i=0; inb_children; thread_id++) { struct eztrace_container_t *p_thread = process_cont->children[thread_id]; struct thread_info_t* thread_info = (struct thread_info_t*) (p_thread->container_info); INIT_MPI_THREAD_INFO(thread_info, mpi_info); int should_print = 0; double mpi_duration = 0; for(i=0; inb_mpi_calls[i]) { should_print = 1 ; mpi_duration += mpi_info->total_time_mpi_calls[i]; } } if(!should_print) continue; double thread_duration = p_thread->end_timestamp - p_thread->start_timestamp; printf("Thread %s -- total duration: %lf ms, time spent in mpi: %lf ms (%lf %%)\n", p_thread->name, thread_duration, mpi_duration, 100*mpi_duration/thread_duration); /* Print the of mpi_send, isend, issend, bcast, gather, scatter etc. */ for(i=0; inb_mpi_calls[i]) { printf("\t"); switch(i) { case MPI_SEND_ID : printf("MPI_SEND :"); break; case MPI_RECV_ID : printf("MPI_RECV :"); break; case MPI_BSEND_ID : printf("MPI_BSEND :"); break; case MPI_SSEND_ID : printf("MPI_SSEND :"); break; case MPI_RSEND_ID : printf("MPI_RSEND :"); break; case MPI_ISEND_ID : printf("MPI_ISEND :"); break; case MPI_IBSEND_ID : printf("MPI_IBSEND :"); break; case MPI_ISSEND_ID : printf("MPI_ISSEND :"); break; case MPI_IRSEND_ID : printf("MPI_IRSEND :"); break; case MPI_IRECV_ID : printf("MPI_IRECV :"); break; case MPI_SENDRECV_ID : printf("MPI_SENDRECV :"); break; case MPI_SENDRECV_REPLACE_ID : printf("MPI_SENDRECV_REPLACE :"); break; case MPI_START_ID : printf("MPI_START :"); break; case MPI_STARTALL_ID : printf("MPI_STARTALL :"); break; case MPI_WAIT_ID : printf("MPI_WAIT :"); break; case MPI_TEST_ID : printf("MPI_TEST :"); break; case MPI_WAITANY_ID : printf("MPI_WAITANY :"); break; case MPI_TESTANY_ID : printf("MPI_TESTANY :"); break; case MPI_WAITALL_ID : printf("MPI_WAITALL :"); break; case MPI_TESTALL_ID : printf("MPI_TESTALL :"); break; case MPI_WAITSOME_ID : printf("MPI_WAITSOME :"); break; case MPI_TESTSOME_ID : printf("MPI_TESTSOME :"); break; case MPI_PROBE_ID : printf("MPI_PROBE :"); break; case MPI_IPROBE_ID : printf("MPI_IPROBE :"); break; case MPI_BARRIER_ID : printf("MPI_BARRIER :"); break; case MPI_BCAST_ID : printf("MPI_BCAST :"); break; case MPI_GATHER_ID : printf("MPI_GATHER :"); break; case MPI_GATHERV_ID : printf("MPI_GATHERV :"); break; case MPI_SCATTER_ID : printf("MPI_SCATTER :"); break; case MPI_SCATTERV_ID : printf("MPI_SCATTERV :"); break; case MPI_ALLGATHER_ID : printf("MPI_ALLGATHER :"); break; case MPI_ALLGATHERV_ID : printf("MPI_ALLGATHERV :"); break; case MPI_ALLTOALL_ID : printf("MPI_ALLTOALL :"); break; case MPI_ALLTOALLV_ID : printf("MPI_ALLTOALLV :"); break; case MPI_REDUCE_ID : printf("MPI_REDUCE :"); break; case MPI_ALLREDUCE_ID : printf("MPI_ALLREDUCE :"); break; case MPI_REDUCE_SCATTER_ID : printf("MPI_REDUCE_SCATTER :"); break; case MPI_SCAN_ID : printf("MPI_SCAN :"); break; case MPI_IBARRIER_ID : printf("MPI_IBARRIER :"); break; case MPI_IBCAST_ID : printf("MPI_IBCAST :"); break; case MPI_IGATHER_ID : printf("MPI_IGATHER :"); break; case MPI_IGATHERV_ID : printf("MPI_IGATHERV :"); break; case MPI_ISCATTER_ID : printf("MPI_ISCATTER :"); break; case MPI_ISCATTERV_ID : printf("MPI_ISCATTERV :"); break; case MPI_IALLGATHER_ID : printf("MPI_IALLGATHER :"); break; case MPI_IALLGATHERV_ID : printf("MPI_IALLGATHERV :"); break; case MPI_IALLTOALL_ID : printf("MPI_IALLTOALL :"); break; case MPI_IALLTOALLV_ID : printf("MPI_IALLTOALLV :"); break; case MPI_IREDUCE_ID : printf("MPI_IREDUCE :"); break; case MPI_IALLREDUCE_ID : printf("MPI_IALLREDUCE :"); break; case MPI_IREDUCE_SCATTER_ID : printf("MPI_IREDUCE_SCATTER :"); break; case MPI_ISCAN_ID : printf("MPI_ISCAN :"); break; case MPI_GET_ID : printf("MPI_GET :"); break; case MPI_PUT_ID : printf("MPI_PUT :"); break; } printf("%d calls -- %lf ms (%lf %% of the thread runtime)\n", mpi_info->nb_mpi_calls[i], mpi_info->total_time_mpi_calls[i], 100*mpi_info->total_time_mpi_calls[i]/thread_duration); } } } } #endif printf("\n"); print_mpi_msg_stats(); } #define QUOTE(name) #name #define STR(macro) QUOTE(macro) #ifndef MPI_MODULE_NAME #define MPI_MODULE_NAME mpi #endif #define MPI_MODULE_NAME_STR STR(MPI_MODULE_NAME) struct eztrace_convert_module mpi_module; void libinit(void) __attribute__ ((constructor)); void libinit(void) { mpi_module.api_version = EZTRACE_API_VERSION; mpi_module.init = eztrace_convert_mpi_init; mpi_module.handle = handle_mpi_events; mpi_module.handle_stats = handle_mpi_stats; mpi_module.print_stats = print_mpi_stats; mpi_module.module_prefix = EZTRACE_MPI_EVENTS_ID; int res __attribute__ ((__unused__)); res = asprintf(&mpi_module.name, MPI_MODULE_NAME_STR); res = asprintf(&mpi_module.description, "Module for MPI functions"); mpi_module.token.data = &mpi_module; eztrace_convert_register_module(&mpi_module); int i; for(i=0; i #include #include #include #include #include #include #include #include #include "pptrace.h" #include "mpi.h" #include "mpi_eztrace.h" #include "mpi_ev_codes.h" #include "eztrace.h" /* pointers to actual MPI functions (C version) */ int (*libMPI_Init)(int *, char ***); int (*libMPI_Init_thread)(int *, char ***, int, int*); int (*libMPI_Comm_size)( MPI_Comm, int *); int (*libMPI_Comm_rank)( MPI_Comm, int *); int (*libMPI_Comm_get_parent)(MPI_Comm *parent) = NULL; int (*libMPI_Finalize)(void); int (*libMPI_Initialized)(int *); int (*libMPI_Abort)( MPI_Comm, int); int (*libMPI_Type_size)(MPI_Datatype datatype, int *size); int (*libMPI_Cancel)( MPI_Request*); int (*libMPI_Comm_disconnect)(MPI_Comm * comm); int (*libMPI_Comm_free)(MPI_Comm *comm); int (*libMPI_Comm_create)(MPI_Comm comm, MPI_Group group, MPI_Comm *newcomm); int (*libMPI_Comm_create_group)(MPI_Comm comm, MPI_Group group, int tag, MPI_Comm * newcomm); int (*libMPI_Comm_split)(MPI_Comm comm, int color, int key, MPI_Comm *newcomm); int (*libMPI_Comm_dup)(MPI_Comm comm, MPI_Comm *newcomm); int (*libMPI_Comm_dup_with_info)(MPI_Comm comm, MPI_Info info, MPI_Comm * newcomm); int (*libMPI_Comm_split_type)(MPI_Comm comm, int split_type, int key, MPI_Info info, MPI_Comm * newcomm); int (*libMPI_Intercomm_create)(MPI_Comm local_comm, int local_leader, MPI_Comm peer_comm, int remote_leader, int tag, MPI_Comm *newintercomm); int (*libMPI_Intercomm_merge)(MPI_Comm intercomm, int high, MPI_Comm *newintracomm); int (*libMPI_Cart_sub)(MPI_Comm old_comm, CONST int *belongs, MPI_Comm *new_comm); int (*libMPI_Cart_create)(MPI_Comm comm_old, int ndims, CONST int *dims, CONST int *periods, int reorder, MPI_Comm *comm_cart); int (*libMPI_Graph_create)(MPI_Comm comm_old, int nnodes, CONST int *index, CONST int *edges, int reorder, MPI_Comm *comm_graph); int (*libMPI_Dist_graph_create_adjacent)(MPI_Comm comm_old, int indegree, CONST int sources[], CONST int sourceweights[], int outdegree, CONST int destinations[], CONST int destweights[], MPI_Info info, int reorder, MPI_Comm *comm_dist_graph); int (*libMPI_Dist_graph_create)(MPI_Comm comm_old, int n, CONST int sources[], CONST int degrees[], CONST int destinations[], CONST int weights[], MPI_Info info, int reorder, MPI_Comm *comm_dist_graph); int (*libMPI_Send)(CONST void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm); int (*libMPI_Recv)(void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status); int (*libMPI_Bsend)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm); int (*libMPI_Ssend)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm); int (*libMPI_Rsend)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm); int (*libMPI_Isend)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); int (*libMPI_Ibsend)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); int (*libMPI_Issend)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); int (*libMPI_Irsend)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); int (*libMPI_Irecv)(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); int (*libMPI_Sendrecv)(CONST void *, int, MPI_Datatype, int, int, void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *); int (*libMPI_Sendrecv_replace)(void*, int, MPI_Datatype, int, int, int, int, MPI_Comm, MPI_Status *); int (*libMPI_Send_init)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); int (*libMPI_Bsend_init)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); int (*libMPI_Ssend_init)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); int (*libMPI_Rsend_init)(CONST void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); int (*libMPI_Recv_init)(void*, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *); int (*libMPI_Start)(MPI_Request *); int (*libMPI_Startall)(int, MPI_Request *); int (*libMPI_Wait)(MPI_Request *, MPI_Status *); int (*libMPI_Test)(MPI_Request *, int *, MPI_Status *); int (*libMPI_Waitany)(int, MPI_Request *, int *, MPI_Status *); int (*libMPI_Testany)(int, MPI_Request *, int *, int *, MPI_Status *); int (*libMPI_Waitall)(int, MPI_Request *, MPI_Status *); int (*libMPI_Testall)(int, MPI_Request *, int *, MPI_Status *); int (*libMPI_Waitsome)(int, MPI_Request *, int *, int *, MPI_Status *); int (*libMPI_Testsome)(int, MPI_Request *, int *, int *, MPI_Status *); int (*libMPI_Probe)(int source, int tag, MPI_Comm comm, MPI_Status *status); int (*libMPI_Iprobe)(int source, int tag, MPI_Comm comm, int *flag, MPI_Status *status); int (*libMPI_Barrier)( MPI_Comm); int (*libMPI_Bcast)(void*, int, MPI_Datatype, int, MPI_Comm); int (*libMPI_Gather)(CONST void*, int, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm); int (*libMPI_Gatherv)(CONST void*, int, MPI_Datatype, void*, CONST int *, CONST int *, MPI_Datatype, int, MPI_Comm); int (*libMPI_Scatter)(CONST void*, int, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm); int (*libMPI_Scatterv)(CONST void*, CONST int *, CONST int *, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm); int (*libMPI_Allgather)(CONST void*, int, MPI_Datatype, void*, int, MPI_Datatype, MPI_Comm); int (*libMPI_Allgatherv)(CONST void*, int, MPI_Datatype, void*, CONST int *, CONST int *, MPI_Datatype, MPI_Comm); int (*libMPI_Alltoall)(CONST void*, int, MPI_Datatype, void*, int, MPI_Datatype, MPI_Comm); int (*libMPI_Alltoallv)(CONST void*, CONST int *, CONST int *, MPI_Datatype, void*, CONST int *, CONST int *, MPI_Datatype, MPI_Comm); int (*libMPI_Reduce)(CONST void*, void*, int, MPI_Datatype, MPI_Op, int, MPI_Comm); int (*libMPI_Allreduce)(CONST void*, void*, int, MPI_Datatype, MPI_Op, MPI_Comm); int (*libMPI_Reduce_scatter)(CONST void*, void*, CONST int *, MPI_Datatype, MPI_Op, MPI_Comm); int (*libMPI_Scan)(CONST void*, void*, int, MPI_Datatype, MPI_Op, MPI_Comm); /* non-blocking collective (available since MPI 3.0) */ #ifdef USE_MPI3 int ( *libMPI_Ibarrier)(MPI_Comm, MPI_Request*); int ( *libMPI_Ibcast)(void*, int, MPI_Datatype, int, MPI_Comm, MPI_Request*); int ( *libMPI_Igather) (const void*, int, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm, MPI_Request*); int ( *libMPI_Igatherv) (const void*, int, MPI_Datatype, void*, const int *, const int *, MPI_Datatype, int, MPI_Comm, MPI_Request*); int ( *libMPI_Iscatter) (const void*, int, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm, MPI_Request*); int ( *libMPI_Iscatterv) (const void*, const int *, const int *, MPI_Datatype, void*, int, MPI_Datatype, int, MPI_Comm, MPI_Request*); int ( *libMPI_Iallgather) (const void*, int, MPI_Datatype, void*, int, MPI_Datatype, MPI_Comm, MPI_Request*); int ( *libMPI_Iallgatherv) (const void*, int, MPI_Datatype, void*, const int *, const int *, MPI_Datatype, MPI_Comm, MPI_Request*); int ( *libMPI_Ialltoall) (const void*, int, MPI_Datatype, void*, int, MPI_Datatype, MPI_Comm, MPI_Request*); int ( *libMPI_Ialltoallv) (const void*, const int *, const int *, MPI_Datatype, void*, const int *, const int *, MPI_Datatype, MPI_Comm, MPI_Request*); int ( *libMPI_Ireduce) (const void* , void*, int, MPI_Datatype, MPI_Op, int, MPI_Comm, MPI_Request*); int ( *libMPI_Iallreduce) (const void*, void*, int, MPI_Datatype, MPI_Op, MPI_Comm, MPI_Request*); int ( *libMPI_Ireduce_scatter) (const void*, void*, const int *, MPI_Datatype, MPI_Op, MPI_Comm, MPI_Request*); int ( *libMPI_Iscan) (const void*, void*, int, MPI_Datatype, MPI_Op, MPI_Comm, MPI_Request*); #endif int ( *libMPI_Get) (void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype, MPI_Win); int ( *libMPI_Put) (CONST void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype, MPI_Win); int (*libMPI_Get)(void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype, MPI_Win); int (*libMPI_Put)(CONST void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype, MPI_Win); int (*libMPI_Comm_spawn)(CONST char *command, char *argv[], int maxprocs, MPI_Info info, int root, MPI_Comm comm, MPI_Comm *intercomm, int array_of_errcodes[]); /* fortran bindings */ void (*libmpi_init_)(int*e); void (*libmpi_init_thread_)(int*, int*, int*); void (*libmpi_finalize_)(int*); void (*libmpi_barrier_)(MPI_Comm*, int*); void (*libmpi_comm_size_)(MPI_Comm*, int*, int*); void (*libmpi_comm_rank_)(MPI_Comm*, int*, int*); void (*libmpi_comm_get_parent_)(MPI_Comm *, int*); void (*libmpi_type_size_)(MPI_Datatype *, int *, int*); void (*libmpi_cancel_)(MPI_Request*, int*); int (*libmpi_comm_create_)(int*, int*, int*, int*); int (*libmpi_comm_create_group_)(int*, int*, int*, int*, int*); int (*libmpi_comm_split_)(int*, int*, int*, int*, int*); int (*libmpi_comm_dup_)(int*, int*, int*); int (*libmpi_comm_dup_with_info_)(int*, int*, int*, int*); int (*libmpi_comm_split_type_)(int*, int*, int*, int*, int*); int (*libmpi_intercomm_create_)(int*, int*, int*, int*, int*, int*, int*); int (*libmpi_intercomm_merge_)(int*, int*, int*, int*); int (*libmpi_cart_sub_)(int*, int*, int*, int*); int (*libmpi_cart_create_)(int*, int*, int*, int*, int*, int*, int*); int (*libmpi_graph_create_)(int*, int*, int*, int*, int*, int*, int*); int (*libmpi_dist_graph_create_adjacent_)(int*, int*, int*, int*, int*, int*, int*, int*, int*, int*, int*); int (*libmpi_dist_graph_create_)(int*, int*, int*,int*, int*, int*,int*, int*, int*, int*); void (*libmpi_send_)(void*, int*, MPI_Datatype*, int*, int*, int*); void (*libmpi_recv_)(void*, int*, MPI_Datatype*, int*, int *, MPI_Status *, int*); void (*libmpi_sendrecv_)(void *, int, MPI_Datatype, int, int, void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *, int*); void (*libmpi_sendrecv_replace_)(void*, int, MPI_Datatype, int, int, int, int, MPI_Comm, MPI_Status *, int*); void (*libmpi_bsend_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, int*); void (*libmpi_ssend_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, int*); void (*libmpi_rsend_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, int*); void (*libmpi_isend_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, MPI_Request*, int*); void (*libmpi_ibsend_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, MPI_Request*, int*); void (*libmpi_issend_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, MPI_Request *, int*); void (*libmpi_irsend_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, MPI_Request *, int*); void (*libmpi_irecv_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, MPI_Request *, int*); void (*libmpi_wait_)(MPI_Request*, MPI_Status*, int*); void (*libmpi_test_)(MPI_Request*, int*, MPI_Status*, int*); void (*libmpi_waitany_)(int*, MPI_Request *, int *, MPI_Status *, int*); void (*libmpi_testany_)(int*, MPI_Request *, int *, int *, MPI_Status *, int*); void (*libmpi_waitall_)(int*, MPI_Request *, MPI_Status *, int*); void (*libmpi_testall_)(int*, MPI_Request *, int *, MPI_Status *, int*); void (*libmpi_waitsome_)(int*, MPI_Request *, int *, int *, MPI_Status *, int*); void (*libmpi_testsome_)(int*, MPI_Request *, int *, int *, MPI_Status *, int*); void (*libmpi_probe_)(int* source, int* tag, MPI_Comm* comm, MPI_Status *status, int* err); void (*libmpi_iprobe_)(int* source, int* tag, MPI_Comm* comm, int *flag, MPI_Status *status, int* err); void (*libmpi_get_)(void *, int*, MPI_Datatype*, int*, MPI_Aint*, int*, MPI_Datatype*, MPI_Win*, int*); void (*libmpi_put_)(void *, int*, MPI_Datatype*, int*, MPI_Aint*, int*, MPI_Datatype*, MPI_Win*, int*); void (*libmpi_bcast_)(void*, int*, MPI_Datatype*, int*, MPI_Comm*, int*); void (*libmpi_gather_)(void*, int*, MPI_Datatype*, void*, int*, MPI_Datatype*, int*, MPI_Comm*, int*); void (*libmpi_gatherv_)(void*, int*, MPI_Datatype*, void*, int*, int*, MPI_Datatype*, int*, MPI_Comm*); void (*libmpi_scatter_)(void*, int*, MPI_Datatype*, void*, int*, MPI_Datatype*, int*, MPI_Comm*, int*); void (*libmpi_scatterv_)(void*, int*, int*, MPI_Datatype*, void*, int*, MPI_Datatype*, int*, MPI_Comm*, int*); void (*libmpi_allgather_)(void*, int*, MPI_Datatype*, void*, int*, MPI_Datatype*, MPI_Comm*, int*); void (*libmpi_allgatherv_)(void*, int*, MPI_Datatype*, void*, int*, int*, MPI_Datatype*, MPI_Comm*); void (*libmpi_alltoall_)(void*, int*, MPI_Datatype*, void*, int*, MPI_Datatype*, MPI_Comm*, int*); void (*libmpi_alltoallv_)(void*, int*, int*, MPI_Datatype*, void*, int*, int*, MPI_Datatype*, MPI_Comm*, int*); void (*libmpi_reduce_)(void*, void*, int*, MPI_Datatype*, MPI_Op*, int*, MPI_Comm*, int*); void (*libmpi_allreduce_)(void*, void*, int*, MPI_Datatype*, MPI_Op*, MPI_Comm*, int*); void (*libmpi_reduce_scatter_)(void*, void*, int*, MPI_Datatype*, MPI_Op*, MPI_Comm*, int*); void (*libmpi_scan_)(void*, void*, int*, MPI_Datatype*, MPI_Op*, MPI_Comm*, int*); #ifdef USE_MPI3 /* non-blocking collective (available since MPI 3.0) */ void (*libmpi_ibarrier_)(MPI_Fint*, MPI_Fint*, int*); void (*libmpi_ibcast_)(void*, int*, MPI_Fint*, int*, MPI_Fint*, MPI_Fint*, int*); void (*libmpi_igather_)(const void*, int*, MPI_Fint*, void*, int*, MPI_Fint*, int*, MPI_Fint*, MPI_Fint*, int*); void (*libmpi_igatherv_)(const void*, int*, MPI_Fint*, void*, const int *, const int *, MPI_Fint*, int*, MPI_Fint*, MPI_Fint*, int*); void (*libmpi_iscatter_)(const void*, int*, MPI_Fint*, void*, int*, MPI_Fint*, int*, MPI_Fint*, MPI_Fint*, int*); void (*libmpi_iscatterv_)(const void*, const int *, const int *, MPI_Fint*, void*, int*, MPI_Fint*, int*, MPI_Fint*, MPI_Fint*, int*); void (*libmpi_iallgather_)(const void*, int*, MPI_Fint*, void*, int*, MPI_Fint*, MPI_Fint*, MPI_Fint*, int*); void (*libmpi_iallgatherv_)(const void*, int*, MPI_Fint*, void*, const int *, const int *, MPI_Fint*, MPI_Fint*, MPI_Fint*, int*); void (*libmpi_ialltoall_)(const void*, int*, MPI_Fint*, void*, int*, MPI_Fint*, MPI_Fint*, MPI_Fint*, int*); void (*libmpi_ialltoallv_)(const void*, const int *, const int *, MPI_Fint*, void*, const int *, const int *, MPI_Fint*, MPI_Fint*, MPI_Fint*, int*); void (*libmpi_ireduce_)(const void* , void*, int*, MPI_Fint*, MPI_Op, int*, MPI_Fint*, MPI_Fint*, int*); void (*libmpi_iallreduce_)(const void*, void*, int*, MPI_Fint*, MPI_Op, MPI_Fint*, MPI_Fint*, int*); void (*libmpi_ireduce_scatter_)(const void*, void*, const int *, MPI_Fint*, MPI_Op, MPI_Fint*, MPI_Fint*, int*); void (*libmpi_iscan_)(const void*, void*, int*, MPI_Fint*, MPI_Op, MPI_Fint*, MPI_Fint*, int*); #endif void (*libmpi_comm_spawn_)(char *command, char **argv, int *maxprocs, MPI_Info *info, int *root, MPI_Comm *comm, MPI_Comm *intercomm, int *array_of_errcodes, int*error); void (*libmpi_send_init_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, MPI_Request *, int*); void (*libmpi_bsend_init_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, MPI_Request *, int*); void (*libmpi_ssend_init_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, MPI_Request *, int*); void (*libmpi_rsend_init_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, MPI_Request *, int*); void (*libmpi_recv_init_)(void*, int*, MPI_Datatype*, int*, int*, MPI_Comm*, MPI_Request *, int*); void (*libmpi_start_)(MPI_Request *, int*); void (*libmpi_startall_)(int*, MPI_Request *, int*); struct __ezt_mpi_info { int rank; int size; int mpi_any_source; int mpi_any_tag; app_ptr mpi_request_null; int mpi_proc_null; app_ptr mpi_comm_world; app_ptr mpi_comm_self; int ppid; /* Process identifier. * It corresponds to the global MPI rank unless the process was spawned. * In that case, the identifier is the concatenation of the parent process id * and the global rank. * For example process id 0_1_3 has a global rank of 3 and is has been spawned by process 0_1 * Process 0_1 has a global rank of 1 and was spawned by process 0 */ char* proc_id; }; static int __mpi_init_called = 0; static struct __ezt_mpi_info mpi_infos; /* Functions that intercept MPI calls * Basically each function create an event this the arguments * passed to the function. * It then call the actual MPI function (using the appropriate * callback) with the same args */ int MPI_Comm_spawn(CONST char *command, char *argv[], int maxprocs, MPI_Info info, int root, MPI_Comm comm, MPI_Comm *intercomm, int array_of_errcodes[]) { /* Instead of running command argv, we have to run 'env LD_PRELOAD=xxx command argv' Thus, we have to provide a new argv array */ /* retrieve LD_PRELOAD command set by EZTrace */ char* ld_preload = getenv(LD_PRELOAD_NAME); char* ld_preload_str = NULL; int ret __attribute__ ((__unused__)); ret = asprintf(&ld_preload_str, "%s=%s", LD_PRELOAD_NAME, ld_preload); /* count the number of args */ int argc = 0; if (argv != MPI_ARGV_NULL) for (argc = 0; argv[argc] != NULL; argc++) { } /* create a new argv array */ int new_argc = argc + 3; char **new_argv = (char**) malloc(sizeof(char*) * new_argc); new_argv[0] = ld_preload_str; ret = asprintf(&new_argv[1], "%s", command); int i; for (i = 0; i < argc; i++) new_argv[i + 2] = argv[i]; new_argv[i + 2] = NULL; ret = libMPI_Comm_spawn("env", new_argv, maxprocs, info, root, comm, intercomm, array_of_errcodes); /* Now that the processes are launched, tell them our proc_id so that the filenames are not messed up */ int f_size; /* number of children actually created */ int proc_id_len = strlen(mpi_infos.proc_id) + 1; int my_pid = getpid(); MPI_Comm_remote_size(*intercomm, &f_size); EZTRACE_EVENT_FORCE_RECORD_PACKED_2(EZTRACE_MPI_SPAWN, my_pid, f_size); for (i = 0; i < f_size; i++) { MPI_Send(&proc_id_len, 1, MPI_INTEGER, i, 0, *intercomm); MPI_Send(mpi_infos.proc_id, proc_id_len, MPI_CHAR, i, 0, *intercomm); MPI_Send(&my_pid, 1, MPI_INTEGER, i, 0, *intercomm); } /* Here, we shall not free ld_preload, since it may modify the environment of the process ! (man getenv) */ free(new_argv); free(ld_preload_str); FUNCTION_ENTRY; return ret; } int MPI_Comm_get_parent(MPI_Comm *parent) { if (!libMPI_Comm_get_parent) { /* MPI_Comm_get_parent was not found. Let's assume the application doesn't use it. */ *parent = MPI_COMM_NULL; return MPI_SUCCESS; } return libMPI_Comm_get_parent(parent); } int MPI_Comm_size(MPI_Comm c, int *s) { return libMPI_Comm_size(c, s); } int MPI_Comm_rank(MPI_Comm c, int *r) { return libMPI_Comm_rank(c, r); } int MPI_Type_size(MPI_Datatype datatype, int *size) { return libMPI_Type_size(datatype, size); } int MPI_Finalize() { FUNCTION_ENTRY; return libMPI_Finalize(); } void ezt_mpi_initialize_trace(); /* internal function * This function is used by the various MPI_Init* functions (C * and Fortran versions) * This function add informations to the trace (rank, etc.) * and set the trace filename. */ void __mpi_init_generic() { int ret __attribute__ ((__unused__)); MPI_Comm parentcomm; MPI_Comm_get_parent(&parentcomm); libMPI_Comm_size(MPI_COMM_WORLD, &mpi_infos.size); libMPI_Comm_rank(MPI_COMM_WORLD, &mpi_infos.rank); if (parentcomm == MPI_COMM_NULL) { /* This process is a 'normal' process (ie. it wasn't spawned) */ ret = asprintf(&mpi_infos.proc_id, "%d", mpi_infos.rank); mpi_infos.ppid = -1; } else { /* This process was spawned. * We have to get the parent process information */ char *father_proc_id; int father_proc_id_len = -1; /* Get the parent process id */ libMPI_Recv(&father_proc_id_len, 1, MPI_INTEGER, 0, 0, parentcomm, MPI_STATUS_IGNORE); father_proc_id = (char*) malloc(sizeof(char) * father_proc_id_len); libMPI_Recv(father_proc_id, father_proc_id_len, MPI_CHAR, 0, 0, parentcomm, MPI_STATUS_IGNORE); libMPI_Recv(&mpi_infos.ppid, 1, MPI_INTEGER, 0, 0, parentcomm, MPI_STATUS_IGNORE); ret = asprintf(&mpi_infos.proc_id, "%s_%d", father_proc_id, mpi_infos.rank); free(father_proc_id); } libMPI_Barrier(MPI_COMM_WORLD); mpi_infos.mpi_any_source=MPI_ANY_SOURCE; mpi_infos.mpi_any_tag = MPI_ANY_TAG; mpi_infos.mpi_proc_null = MPI_PROC_NULL; mpi_infos.mpi_request_null = (app_ptr)MPI_REQUEST_NULL; mpi_infos.mpi_comm_world = (app_ptr)MPI_COMM_WORLD; mpi_infos.mpi_comm_self = (app_ptr)MPI_COMM_SELF; __mpi_init_called = 1; ezt_mpi_initialize_trace(); } /* This function record initialization events. It is called during mpi_init if * autostart is enabled or when eztrace_start is reached */ void ezt_mpi_initialize_trace() { static int mpi_trace_initialized = 0; if(__ezt_trace.status == ezt_trace_status_running || __ezt_trace.status == ezt_trace_status_paused) { if (!mpi_trace_initialized) { assert(__mpi_init_called); mpi_trace_initialized = 1; if (mpi_infos.ppid>=0) EZTRACE_EVENT_FORCE_RECORD_PACKED_2(EZTRACE_MPI_SPAWNED, mpi_infos.ppid, mpi_infos.rank); char *filename= NULL; asprintf(&filename, "eztrace_log_rank_%s", mpi_infos.proc_id); eztrace_set_filename(filename); EZTRACE_EVENT_FORCE_RECORD_PACKED_6(EZTRACE_MPI_INIT, mpi_infos.rank, mpi_infos.size, mpi_infos.mpi_any_source, mpi_infos.mpi_any_tag, (app_ptr)mpi_infos.mpi_request_null, mpi_infos.mpi_proc_null); EZTRACE_EVENT_FORCE_RECORD_PACKED_2(EZTRACE_MPI_INIT_Info, (app_ptr)mpi_infos.mpi_comm_world, (app_ptr)mpi_infos.mpi_comm_self); } } } int MPI_Init_thread(int *argc, char ***argv, int required, int *provided) { int ret = libMPI_Init_thread(argc, argv, required, provided); __mpi_init_generic(); FUNCTION_ENTRY; return ret; } int MPI_Init(int * argc, char***argv) { int ret = libMPI_Init(argc, argv); __mpi_init_generic(); FUNCTION_ENTRY; return ret; } static void __ezt_new_mpi_comm(MPI_Comm comm) { MPI_Group world_group, group; int gsize; /* size of the group */ FUNCTION_ENTRY; if(comm == MPI_COMM_NULL) return ; MPI_Comm_group(MPI_COMM_WORLD, &world_group); MPI_Comm_group(comm, &group); MPI_Group_size(group, &gsize); int *local_ranks = malloc(sizeof(int) * gsize); int *global_ranks = malloc(sizeof(int) * gsize); int i; for (i = 0; i < gsize; i++) local_ranks[i] = i; /* translate the ranks of the local group into rank of the world group */ MPI_Group_translate_ranks(group, gsize, local_ranks, world_group, global_ranks); /* record the information we need to use the communicator */ EZTRACE_EVENT_FORCE_RECORD_PACKED_2(EZTRACE_MPI_NEW_COMM, (app_ptr)comm, gsize); for (i = 0; i < gsize; i++) { EZTRACE_EVENT_FORCE_RECORD_PACKED_1(EZTRACE_MPI_NEW_COMM_Info, global_ranks[i]); } } #ifdef DEBUG #define CHECK_COMMUNICATOR(newcomm, comm) \ do { \ if((newcomm) == MPI_COMM_NULL) { \ int rank, size; \ MPI_Comm_rank(MPI_COMM_WORLD, &rank); \ MPI_Comm_size(MPI_COMM_WORLD, &size); \ fprintf(stderr, "Warning: new communicator (%x) is NULL ! This communicator was created from communicator %x using %s\n", \ (void*)(newcomm), (void*)(comm), __FUNCTION__); \ } \ } while(0) #else #define CHECK_COMMUNICATOR(newcomm, comm) (void)(0) #endif #define __EZT_NEW_COMM(new_comm, old_comm) \ do { \ if (ret == MPI_SUCCESS) { \ CHECK_COMMUNICATOR(new_comm, old_comm); \ __ezt_new_mpi_comm(new_comm); \ } else { \ fprintf(stderr, "Warning: %s returned %d\n", __FUNCTION__, ret); \ } \ } while(0) int MPI_Comm_disconnect(MPI_Comm * comm) { FUNCTION_ENTRY; if (comm) EZTRACE_EVENT_FORCE_RECORD_PACKED_1(EZTRACE_MPI_DELETE_COMM, (app_ptr)*comm); return libMPI_Comm_disconnect(comm); } int MPI_Comm_free(MPI_Comm *comm) { FUNCTION_ENTRY; if (comm) EZTRACE_EVENT_FORCE_RECORD_PACKED_1(EZTRACE_MPI_DELETE_COMM, (app_ptr)*comm); return libMPI_Comm_free(comm); } int MPI_Comm_create(MPI_Comm comm, MPI_Group group, MPI_Comm *newcomm) { FUNCTION_ENTRY; int ret = libMPI_Comm_create(comm, group, newcomm); __EZT_NEW_COMM(*newcomm, comm); return ret; } int MPI_Comm_create_group(MPI_Comm comm, MPI_Group group, int tag, MPI_Comm * newcomm){ FUNCTION_ENTRY; int ret = libMPI_Comm_create_group(comm, group, tag, newcomm); __EZT_NEW_COMM(*newcomm, comm); return ret; } int MPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm *newcomm) { FUNCTION_ENTRY; int ret = libMPI_Comm_split(comm, color, key, newcomm); __EZT_NEW_COMM(*newcomm, comm); return ret; } int MPI_Comm_dup(MPI_Comm comm, MPI_Comm *newcomm) { FUNCTION_ENTRY; int ret = libMPI_Comm_dup(comm, newcomm); __EZT_NEW_COMM(*newcomm, comm); return ret; } int MPI_Comm_dup_with_info(MPI_Comm comm, MPI_Info info, MPI_Comm * newcomm) { FUNCTION_ENTRY; int ret = libMPI_Comm_dup_with_info(comm, info, newcomm); __EZT_NEW_COMM(*newcomm, comm); return ret; } int MPI_Comm_split_type(MPI_Comm comm, int split_type, int key, MPI_Info info, MPI_Comm * newcomm) { FUNCTION_ENTRY; int ret = libMPI_Comm_split_type(comm, split_type, key, info, newcomm); __EZT_NEW_COMM(*newcomm, comm); return ret; } int MPI_Intercomm_create(MPI_Comm local_comm, int local_leader, MPI_Comm peer_comm, int remote_leader, int tag, MPI_Comm *newintercomm) { FUNCTION_ENTRY; int ret = libMPI_Intercomm_create(local_comm, local_leader, peer_comm, remote_leader, tag, newintercomm); __EZT_NEW_COMM(*newintercomm, local_comm); return ret; } int MPI_Intercomm_merge(MPI_Comm intercomm, int high, MPI_Comm *newintracomm) { FUNCTION_ENTRY; int ret = libMPI_Intercomm_merge(intercomm, high, newintracomm); __EZT_NEW_COMM(*newintracomm, intercomm); return ret; } int MPI_Cart_sub(MPI_Comm old_comm, CONST int *belongs, MPI_Comm *new_comm) { FUNCTION_ENTRY; int ret = libMPI_Cart_sub(old_comm, belongs, new_comm); __EZT_NEW_COMM(*new_comm, old_comm); return ret; } int MPI_Cart_create(MPI_Comm comm_old, int ndims, CONST int *dims, CONST int *periods, int reorder, MPI_Comm *comm_cart) { FUNCTION_ENTRY; int ret = libMPI_Cart_create(comm_old, ndims, dims, periods, reorder, comm_cart); __EZT_NEW_COMM(*comm_cart, old_comm); return ret; } int MPI_Graph_create(MPI_Comm comm_old, int nnodes, CONST int *index, CONST int *edges, int reorder, MPI_Comm *comm_graph) { FUNCTION_ENTRY; int ret = libMPI_Graph_create(comm_old, nnodes, index, edges, reorder, comm_graph); __EZT_NEW_COMM(*comm_graph, old_comm); return ret; } int MPI_Dist_graph_create(MPI_Comm comm_old, int n, CONST int sources[], CONST int degrees[], CONST int destinations[], CONST int weights[], MPI_Info info, int reorder, MPI_Comm *comm_dist_graph) { FUNCTION_ENTRY; int ret = libMPI_Dist_graph_create(comm_old, n, sources, degrees, destinations, weights, info, reorder, comm_dist_graph); __EZT_NEW_COMM(*comm_dist_graph, comm_old); return ret; } int MPI_Dist_graph_create_adjacent(MPI_Comm comm_old, int indegree, CONST int sources[], CONST int sourceweights[], int outdegree, CONST int destinations[], CONST int destweights[], MPI_Info info, int reorder, MPI_Comm *comm_dist_graph) { FUNCTION_ENTRY; int ret = libMPI_Dist_graph_create_adjacent(comm_old, indegree, sources, sourceweights, outdegree, destinations, destweights, info, reorder, comm_dist_graph); __EZT_NEW_COMM(*comm_dist_graph, comm_old); return ret; } START_INTERCEPT_MODULE(mpi) INTERCEPT2("MPI_Init_thread", libMPI_Init_thread) INTERCEPT2("MPI_Init", libMPI_Init) INTERCEPT2("MPI_Finalize", libMPI_Finalize) INTERCEPT2("MPI_Barrier", libMPI_Barrier) INTERCEPT2("MPI_Comm_size", libMPI_Comm_size) INTERCEPT2("MPI_Comm_rank", libMPI_Comm_rank) INTERCEPT2("MPI_Comm_get_parent", libMPI_Comm_get_parent) INTERCEPT2("MPI_Type_size", libMPI_Type_size) INTERCEPT2("MPI_Cancel", libMPI_Cancel) INTERCEPT2("MPI_Comm_disconnect", libMPI_Comm_disconnect) INTERCEPT2("MPI_Comm_free", libMPI_Comm_free) INTERCEPT2("MPI_Comm_create", libMPI_Comm_create) INTERCEPT2("MPI_Comm_create_group", libMPI_Comm_create_group) INTERCEPT2("MPI_Comm_split", libMPI_Comm_split) INTERCEPT2("MPI_Comm_dup", libMPI_Comm_dup) INTERCEPT2("MPI_Comm_dup_with_info", libMPI_Comm_dup_with_info) INTERCEPT2("MPI_Comm_split_type", libMPI_Comm_split_type) INTERCEPT2("MPI_Intercomm_create", libMPI_Intercomm_create) INTERCEPT2("MPI_Intercomm_merge", libMPI_Intercomm_merge) INTERCEPT2("MPI_Cart_sub", libMPI_Cart_sub) INTERCEPT2("MPI_Cart_create", libMPI_Cart_create) INTERCEPT2("MPI_Graph_create", libMPI_Graph_create) INTERCEPT2("MPI_Dist_graph_create", libMPI_Dist_graph_create) INTERCEPT2("MPI_Dist_graph_create_adjacent", libMPI_Dist_graph_create_adjacent) INTERCEPT2("MPI_Send", libMPI_Send) INTERCEPT2("MPI_Recv", libMPI_Recv) INTERCEPT2("MPI_Sendrecv", libMPI_Sendrecv) INTERCEPT2("MPI_Sendrecv_replace", libMPI_Sendrecv_replace) INTERCEPT2("MPI_Bsend", libMPI_Bsend) INTERCEPT2("MPI_Ssend", libMPI_Ssend) INTERCEPT2("MPI_Rsend", libMPI_Rsend) INTERCEPT2("MPI_Isend", libMPI_Isend) INTERCEPT2("MPI_Ibsend", libMPI_Ibsend) INTERCEPT2("MPI_Issend", libMPI_Issend) INTERCEPT2("MPI_Irsend", libMPI_Irsend) INTERCEPT2("MPI_Irecv", libMPI_Irecv) INTERCEPT2("MPI_Wait", libMPI_Wait) INTERCEPT2("MPI_Waitall", libMPI_Waitall) INTERCEPT2("MPI_Waitany", libMPI_Waitany) INTERCEPT2("MPI_Waitsome", libMPI_Waitsome) INTERCEPT2("MPI_Test", libMPI_Test) INTERCEPT2("MPI_Testall", libMPI_Testall) INTERCEPT2("MPI_Testany", libMPI_Testany) INTERCEPT2("MPI_Testsome", libMPI_Testsome) INTERCEPT2("MPI_Iprobe", libMPI_Iprobe) INTERCEPT2("MPI_Probe", libMPI_Probe) INTERCEPT2("MPI_Get", libMPI_Get) INTERCEPT2("MPI_Put", libMPI_Put) INTERCEPT2("MPI_Bcast", libMPI_Bcast) INTERCEPT2("MPI_Gather", libMPI_Gather) INTERCEPT2("MPI_Gatherv", libMPI_Gatherv) INTERCEPT2("MPI_Scatter", libMPI_Scatter) INTERCEPT2("MPI_Scatterv", libMPI_Scatterv) INTERCEPT2("MPI_Allgather", libMPI_Allgather) INTERCEPT2("MPI_Allgatherv", libMPI_Allgatherv) INTERCEPT2("MPI_Alltoall", libMPI_Alltoall) INTERCEPT2("MPI_Alltoallv", libMPI_Alltoallv) INTERCEPT2("MPI_Reduce", libMPI_Reduce) INTERCEPT2("MPI_Allreduce", libMPI_Allreduce) INTERCEPT2("MPI_Reduce_scatter", libMPI_Reduce_scatter) INTERCEPT2("MPI_Scan", libMPI_Scan) #ifdef USE_MPI3 INTERCEPT2("MPI_Ibarrier", libMPI_Ibarrier) INTERCEPT2("MPI_Ibcast", libMPI_Ibcast) INTERCEPT2("MPI_Igather", libMPI_Igather) INTERCEPT2("MPI_Igatherv", libMPI_Igatherv) INTERCEPT2("MPI_Iscatter", libMPI_Iscatter) INTERCEPT2("MPI_Iscatterv", libMPI_Iscatterv) INTERCEPT2("MPI_Iallgather", libMPI_Iallgather) INTERCEPT2("MPI_Iallgatherv", libMPI_Iallgatherv) INTERCEPT2("MPI_Ialltoall", libMPI_Ialltoall) INTERCEPT2("MPI_Ialltoallv", libMPI_Ialltoallv) INTERCEPT2("MPI_Ireduce", libMPI_Ireduce) INTERCEPT2("MPI_Iallreduce", libMPI_Iallreduce) INTERCEPT2("MPI_Ireduce_scatter", libMPI_Ireduce_scatter) INTERCEPT2("MPI_Iscan", libMPI_Iscan) #endif INTERCEPT2("MPI_Comm_spawn", libMPI_Comm_spawn) INTERCEPT2("MPI_Send_init", libMPI_Send_init) INTERCEPT2("MPI_Bsend_init", libMPI_Bsend_init) INTERCEPT2("MPI_Ssend_init", libMPI_Ssend_init) INTERCEPT2("MPI_Rsend_init", libMPI_Rsend_init) INTERCEPT2("MPI_Recv_init", libMPI_Recv_init) INTERCEPT2("MPI_Start", libMPI_Start) INTERCEPT2("MPI_Startall", libMPI_Startall) /* fortran binding */ INTERCEPT2("mpi_init_", libmpi_init_) INTERCEPT2("mpi_init_thread_", libmpi_init_thread_) INTERCEPT2("mpi_init_", libmpi_init_) INTERCEPT2("mpi_finalize_", libmpi_finalize_) INTERCEPT2("mpi_barrier_", libmpi_barrier_) INTERCEPT2("mpi_comm_size_", libmpi_comm_size_) INTERCEPT2("mpi_comm_rank_", libmpi_comm_rank_) INTERCEPT2("mpi_comm_get_parent_", libmpi_comm_get_parent_) INTERCEPT2("mpi_type_size_", libmpi_type_size_) INTERCEPT2("mpi_cancel_", libmpi_cancel_) INTERCEPT2("mpi_comm_create_", libmpi_comm_create_) INTERCEPT2("mpi_comm_create_group_", libmpi_comm_create_group_) INTERCEPT2("mpi_comm_split_", libmpi_comm_split_) INTERCEPT2("mpi_comm_dup_", libmpi_comm_dup_) INTERCEPT2("mpi_comm_dup_with_info_", libmpi_comm_dup_with_info_) INTERCEPT2("mpi_comm_split_type_", libmpi_comm_split_type_) INTERCEPT2("mpi_intercomm_create_", libmpi_intercomm_create_) INTERCEPT2("mpi_intercomm_merge_", libmpi_intercomm_merge_) INTERCEPT2("mpi_cart_sub_", libmpi_cart_sub_) INTERCEPT2("mpi_cart_create_", libmpi_cart_create_) INTERCEPT2("mpi_graph_create_", libmpi_graph_create_) INTERCEPT2("mpi_dist_graph_create_", libmpi_dist_graph_create_) INTERCEPT2("mpi_dist_graph_create_adjacent_", libmpi_dist_graph_create_adjacent_) INTERCEPT2("mpi_send_", libmpi_send_) INTERCEPT2("mpi_recv_", libmpi_recv_) INTERCEPT2("mpi_sendrecv_", libmpi_sendrecv_) INTERCEPT2("mpi_sendrecv_replace_", libmpi_sendrecv_replace_) INTERCEPT2("mpi_bsend_", libmpi_bsend_) INTERCEPT2("mpi_ssend_", libmpi_ssend_) INTERCEPT2("mpi_rsend_", libmpi_rsend_) INTERCEPT2("mpi_isend_", libmpi_isend_) INTERCEPT2("mpi_ibsend_", libmpi_ibsend_) INTERCEPT2("mpi_issend_", libmpi_issend_) INTERCEPT2("mpi_irsend_", libmpi_irsend_) INTERCEPT2("mpi_irecv_", libmpi_irecv_) INTERCEPT2("mpi_wait_", libmpi_wait_) INTERCEPT2("mpi_waitall_", libmpi_waitall_) INTERCEPT2("mpi_waitany_", libmpi_waitany_) INTERCEPT2("mpi_waitsome_", libmpi_waitsome_) INTERCEPT2("mpi_test_", libmpi_test_) INTERCEPT2("mpi_testall_", libmpi_testall_) INTERCEPT2("mpi_testany_", libmpi_testany_) INTERCEPT2("mpi_testsome_", libmpi_testsome_) INTERCEPT2("mpi_probe_", libmpi_probe_) INTERCEPT2("mpi_iprobe_", libmpi_iprobe_) INTERCEPT2("mpi_get_", libmpi_get_) INTERCEPT2("mpi_put_", libmpi_put_) INTERCEPT2("mpi_bcast_", libmpi_bcast_) INTERCEPT2("mpi_gather_", libmpi_gather_) INTERCEPT2("mpi_gatherv_", libmpi_gatherv_) INTERCEPT2("mpi_scatter_", libmpi_scatter_) INTERCEPT2("mpi_scatterv_", libmpi_scatterv_) INTERCEPT2("mpi_allgather_", libmpi_allgather_) INTERCEPT2("mpi_allgatherv_", libmpi_allgatherv_) INTERCEPT2("mpi_alltoall_", libmpi_alltoall_) INTERCEPT2("mpi_alltoallv_", libmpi_alltoallv_) INTERCEPT2("mpi_reduce_", libmpi_reduce_) INTERCEPT2("mpi_allreduce_", libmpi_allreduce_) INTERCEPT2("mpi_reduce_scatter_", libmpi_reduce_scatter_) INTERCEPT2("mpi_scan_", libmpi_scan_) #ifdef USE_MPI3 INTERCEPT2("mpi_ibarrier_", libmpi_ibarrier_) INTERCEPT2("mpi_ibarrier_", libmpi_ibarrier_) INTERCEPT2("mpi_ibcast_", libmpi_ibcast_) INTERCEPT2("mpi_igather_", libmpi_igather_) INTERCEPT2("mpi_igatherv_", libmpi_igatherv_) INTERCEPT2("mpi_iscatter_", libmpi_iscatter_) INTERCEPT2("mpi_iscatterv_", libmpi_iscatterv_) INTERCEPT2("mpi_iallgather_", libmpi_iallgather_) INTERCEPT2("mpi_iallgatherv_", libmpi_iallgatherv_) INTERCEPT2("mpi_ialltoall_", libmpi_ialltoall_) INTERCEPT2("mpi_ialltoallv_", libmpi_ialltoallv_) INTERCEPT2("mpi_ireduce_", libmpi_ireduce_) INTERCEPT2("mpi_iallreduce_", libmpi_iallreduce_) INTERCEPT2("mpi_ireduce_scatter_", libmpi_ireduce_scatter_) INTERCEPT2("mpi_iscan_", libmpi_iscan_) #endif INTERCEPT2("mpi_comm_spawn_", libmpi_comm_spawn_) INTERCEPT2("mpi_send_init_", libmpi_send_init_) INTERCEPT2("mpi_bsend_init_", libmpi_bsend_init_) INTERCEPT2("mpi_ssend_init_", libmpi_ssend_init_) INTERCEPT2("mpi_rsend_init_", libmpi_rsend_init_) INTERCEPT2("mpi_recv_init_", libmpi_recv_init_) INTERCEPT2("mpi_start_", libmpi_start_) INTERCEPT2("mpi_startall_", libmpi_startall_) END_INTERCEPT_MODULE(mpi) void libinit(void) __attribute__ ((constructor)); void libinit(void) { DYNAMIC_INTERCEPT_ALL_MODULE(mpi); #ifdef EZTRACE_AUTOSTART eztrace_start (); #else /* when the application calls eztrace_start(), * we need to execute ezt_mpi_initialize_trace */ eztrace_register_init_routine(&ezt_mpi_initialize_trace); #endif } void libfinalize(void) __attribute__ ((destructor)); void libfinalize(void) { eztrace_stop(); free(mpi_infos.proc_id); } eztrace-1.1-7/src/modules/mpi/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135254017722 xustar0030 mtime=1508162220.017835971 30 atime=1508162286.599025538 30 ctime=1508162368.021932471 eztrace-1.1-7/src/modules/mpi/Makefile.in0000644000175000017500000102256213171135254021121 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @USE_MPI_TRUE@am__append_1 = libeztrace-convert-@MPI_MODULE_NAME@.la \ @USE_MPI_TRUE@ libeztrace-@MPI_MODULE_NAME@.la \ @USE_MPI_TRUE@ libeztrace-autostart-@MPI_MODULE_NAME@.la @USE_MPI_TRUE@am__append_2 = -W -Wall -Wextra -DUSE_MPI $(MPI_CFLAGS) @USE_MPI3_TRUE@am__append_3 = mpi3_f.f90 @USE_MPI3_TRUE@am__append_4 = mpi3_f.f90 @USE_MPI3_TRUE@am__append_5 = -DUSE_MPI3 subdir = src/modules/mpi ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) libeztrace_@MPI_MODULE_NAME@_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am__libeztrace_@MPI_MODULE_NAME@_la_SOURCES_DIST = mpi.c mpi_fortran.c \ mpi_f.f90 fortran_utils.f90 mpi_ev_codes.h mpi_eztrace.h \ mpi_funcs/mpi_allgather.c mpi_funcs/mpi_allgatherv.c \ mpi_funcs/mpi_allreduce.c mpi_funcs/mpi_alltoall.c \ mpi_funcs/mpi_alltoallv.c mpi_funcs/mpi_barrier.c \ mpi_funcs/mpi_bcast.c mpi_funcs/mpi_bsend.c \ mpi_funcs/mpi_bsend_init.c mpi_funcs/mpi_gather.c \ mpi_funcs/mpi_gatherv.c mpi_funcs/mpi_get.c \ mpi_funcs/mpi_ibsend.c mpi_funcs/mpi_iprobe.c \ mpi_funcs/mpi_irecv.c mpi_funcs/mpi_irsend.c \ mpi_funcs/mpi_isend.c mpi_funcs/mpi_issend.c \ mpi_funcs/mpi_probe.c mpi_funcs/mpi_put.c mpi_funcs/mpi_recv.c \ mpi_funcs/mpi_recv_init.c mpi_funcs/mpi_reduce.c \ mpi_funcs/mpi_reduce_scatter.c mpi_funcs/mpi_rsend.c \ mpi_funcs/mpi_rsend_init.c mpi_funcs/mpi_scan.c \ mpi_funcs/mpi_scatter.c mpi_funcs/mpi_scatterv.c \ mpi_funcs/mpi_send.c mpi_funcs/mpi_send_init.c \ mpi_funcs/mpi_sendrecv.c mpi_funcs/mpi_sendrecv_replace.c \ mpi_funcs/mpi_ssend.c mpi_funcs/mpi_ssend_init.c \ mpi_funcs/mpi_start.c mpi_funcs/mpi_startall.c \ mpi_funcs/mpi_test.c mpi_funcs/mpi_testall.c \ mpi_funcs/mpi_testany.c mpi_funcs/mpi_testsome.c \ mpi_funcs/mpi_wait.c mpi_funcs/mpi_waitall.c \ mpi_funcs/mpi_waitany.c mpi_funcs/mpi_waitsome.c \ mpi_funcs/mpi_ibarrier.c mpi_funcs/mpi_ibcast.c \ mpi_funcs/mpi_igather.c mpi_funcs/mpi_igatherv.c \ mpi_funcs/mpi_iscatter.c mpi_funcs/mpi_iscatterv.c \ mpi_funcs/mpi_iallgather.c mpi_funcs/mpi_iallgatherv.c \ mpi_funcs/mpi_ialltoall.c mpi_funcs/mpi_ialltoallv.c \ mpi_funcs/mpi_ireduce.c mpi_funcs/mpi_iallreduce.c \ mpi_funcs/mpi_ireduce_scatter.c mpi_funcs/mpi_iscan.c \ mpi_funcs/mpi_cancel.c mpi3_f.f90 am__dirstamp = $(am__leading_dot)dirstamp am__objects_1 = \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgather.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgatherv.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_allreduce.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoall.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoallv.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_barrier.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_bcast.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend_init.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_gather.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_gatherv.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_get.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibsend.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iprobe.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_irecv.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_irsend.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_isend.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_issend.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_probe.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_put.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv_init.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend_init.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_scan.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatter.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatterv.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_send.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_send_init.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend_init.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_start.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_startall.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_test.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_testall.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_testany.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_testsome.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_wait.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitall.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitany.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitsome.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibarrier.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibcast.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_igather.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_igatherv.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatter.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatterv.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgather.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgatherv.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoall.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoallv.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallreduce.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscan.lo \ mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_cancel.lo @USE_MPI3_TRUE@am__objects_2 = \ @USE_MPI3_TRUE@ libeztrace_@MPI_MODULE_NAME@_la-mpi3_f.lo am_libeztrace_@MPI_MODULE_NAME@_la_OBJECTS = \ libeztrace_@MPI_MODULE_NAME@_la-mpi.lo \ libeztrace_@MPI_MODULE_NAME@_la-mpi_fortran.lo \ libeztrace_@MPI_MODULE_NAME@_la-mpi_f.lo \ libeztrace_@MPI_MODULE_NAME@_la-fortran_utils.lo \ $(am__objects_1) $(am__objects_2) libeztrace_@MPI_MODULE_NAME@_la_OBJECTS = \ $(am_libeztrace_@MPI_MODULE_NAME@_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libeztrace_@MPI_MODULE_NAME@_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \ $(libeztrace_@MPI_MODULE_NAME@_la_FCFLAGS) $(FCFLAGS) \ $(libeztrace_@MPI_MODULE_NAME@_la_LDFLAGS) $(LDFLAGS) -o $@ @USE_MPI_TRUE@am_libeztrace_@MPI_MODULE_NAME@_la_rpath = -rpath \ @USE_MPI_TRUE@ $(libdir) libeztrace_autostart_@MPI_MODULE_NAME@_la_DEPENDENCIES = \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) am__libeztrace_autostart_@MPI_MODULE_NAME@_la_SOURCES_DIST = mpi.c \ mpi_fortran.c mpi_f.f90 fortran_utils.f90 mpi_ev_codes.h \ mpi_eztrace.h mpi_funcs/mpi_allgather.c \ mpi_funcs/mpi_allgatherv.c mpi_funcs/mpi_allreduce.c \ mpi_funcs/mpi_alltoall.c mpi_funcs/mpi_alltoallv.c \ mpi_funcs/mpi_barrier.c mpi_funcs/mpi_bcast.c \ mpi_funcs/mpi_bsend.c mpi_funcs/mpi_bsend_init.c \ mpi_funcs/mpi_gather.c mpi_funcs/mpi_gatherv.c \ mpi_funcs/mpi_get.c mpi_funcs/mpi_ibsend.c \ mpi_funcs/mpi_iprobe.c mpi_funcs/mpi_irecv.c \ mpi_funcs/mpi_irsend.c mpi_funcs/mpi_isend.c \ mpi_funcs/mpi_issend.c mpi_funcs/mpi_probe.c \ mpi_funcs/mpi_put.c mpi_funcs/mpi_recv.c \ mpi_funcs/mpi_recv_init.c mpi_funcs/mpi_reduce.c \ mpi_funcs/mpi_reduce_scatter.c mpi_funcs/mpi_rsend.c \ mpi_funcs/mpi_rsend_init.c mpi_funcs/mpi_scan.c \ mpi_funcs/mpi_scatter.c mpi_funcs/mpi_scatterv.c \ mpi_funcs/mpi_send.c mpi_funcs/mpi_send_init.c \ mpi_funcs/mpi_sendrecv.c mpi_funcs/mpi_sendrecv_replace.c \ mpi_funcs/mpi_ssend.c mpi_funcs/mpi_ssend_init.c \ mpi_funcs/mpi_start.c mpi_funcs/mpi_startall.c \ mpi_funcs/mpi_test.c mpi_funcs/mpi_testall.c \ mpi_funcs/mpi_testany.c mpi_funcs/mpi_testsome.c \ mpi_funcs/mpi_wait.c mpi_funcs/mpi_waitall.c \ mpi_funcs/mpi_waitany.c mpi_funcs/mpi_waitsome.c \ mpi_funcs/mpi_ibarrier.c mpi_funcs/mpi_ibcast.c \ mpi_funcs/mpi_igather.c mpi_funcs/mpi_igatherv.c \ mpi_funcs/mpi_iscatter.c mpi_funcs/mpi_iscatterv.c \ mpi_funcs/mpi_iallgather.c mpi_funcs/mpi_iallgatherv.c \ mpi_funcs/mpi_ialltoall.c mpi_funcs/mpi_ialltoallv.c \ mpi_funcs/mpi_ireduce.c mpi_funcs/mpi_iallreduce.c \ mpi_funcs/mpi_ireduce_scatter.c mpi_funcs/mpi_iscan.c \ mpi_funcs/mpi_cancel.c mpi3_f.f90 am__objects_3 = mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgather.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgatherv.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allreduce.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoall.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoallv.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_barrier.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bcast.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend_init.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gather.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gatherv.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_get.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibsend.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iprobe.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irecv.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irsend.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_isend.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_issend.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_probe.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_put.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv_init.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend_init.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scan.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatter.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatterv.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send_init.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend_init.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_start.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_startall.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_test.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testall.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testany.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testsome.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_wait.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitall.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitany.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitsome.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibarrier.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibcast.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igather.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igatherv.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatter.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatterv.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgather.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgatherv.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoall.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoallv.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallreduce.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscan.lo \ mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_cancel.lo @USE_MPI3_TRUE@am__objects_4 = libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi3_f.lo am_libeztrace_autostart_@MPI_MODULE_NAME@_la_OBJECTS = \ libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi.lo \ libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_fortran.lo \ libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_f.lo \ libeztrace_autostart_@MPI_MODULE_NAME@_la-fortran_utils.lo \ $(am__objects_3) $(am__objects_4) libeztrace_autostart_@MPI_MODULE_NAME@_la_OBJECTS = \ $(am_libeztrace_autostart_@MPI_MODULE_NAME@_la_OBJECTS) libeztrace_autostart_@MPI_MODULE_NAME@_la_LINK = $(LIBTOOL) $(AM_V_lt) \ --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(FCLD) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_FCFLAGS) \ $(FCFLAGS) \ $(libeztrace_autostart_@MPI_MODULE_NAME@_la_LDFLAGS) \ $(LDFLAGS) -o $@ @USE_MPI_TRUE@am_libeztrace_autostart_@MPI_MODULE_NAME@_la_rpath = \ @USE_MPI_TRUE@ -rpath $(libdir) am_libeztrace_convert_@MPI_MODULE_NAME@_la_OBJECTS = libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi.lo \ libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_p2p.lo \ libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_coll.lo \ libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_pers.lo \ libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_stats_mpi.lo libeztrace_convert_@MPI_MODULE_NAME@_la_OBJECTS = \ $(am_libeztrace_convert_@MPI_MODULE_NAME@_la_OBJECTS) libeztrace_convert_@MPI_MODULE_NAME@_la_LINK = $(LIBTOOL) $(AM_V_lt) \ --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libeztrace_convert_@MPI_MODULE_NAME@_la_LDFLAGS) $(LDFLAGS) \ -o $@ @USE_MPI_TRUE@am_libeztrace_convert_@MPI_MODULE_NAME@_la_rpath = \ @USE_MPI_TRUE@ -rpath $(libdir) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) LTFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = $(libeztrace_@MPI_MODULE_NAME@_la_SOURCES) \ $(libeztrace_autostart_@MPI_MODULE_NAME@_la_SOURCES) \ $(libeztrace_convert_@MPI_MODULE_NAME@_la_SOURCES) DIST_SOURCES = $(am__libeztrace_@MPI_MODULE_NAME@_la_SOURCES_DIST) \ $(am__libeztrace_autostart_@MPI_MODULE_NAME@_la_SOURCES_DIST) \ $(libeztrace_convert_@MPI_MODULE_NAME@_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUDA_CFLAGS = @CUDA_CFLAGS@ CUDA_LDFLAGS = @CUDA_LDFLAGS@ CUDA_LIBS = @CUDA_LIBS@ CUDA_ROOT = @CUDA_ROOT@ CUPTI_CFLAGS = @CUPTI_CFLAGS@ CUPTI_LDFLAGS = @CUPTI_LDFLAGS@ CUPTI_LIBS = @CUPTI_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ DYNLIB_EXT = @DYNLIB_EXT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ GTGDIR = @GTGDIR@ GTG_CPPFLAGS = @GTG_CPPFLAGS@ GTG_DEPENDENCIES = @GTG_DEPENDENCIES@ GTG_EXT_CPPFLAGS = @GTG_EXT_CPPFLAGS@ GTG_EXT_LDFLAGS = @GTG_EXT_LDFLAGS@ GTG_EXT_LIB = @GTG_EXT_LIB@ GTG_LDFLAGS = @GTG_LDFLAGS@ GTG_LIB = @GTG_LIB@ GTG_OUT_OF_ORDER = @GTG_OUT_OF_ORDER@ HAVE_ENV = @HAVE_ENV@ HAVE_LIBBACKTRACE = @HAVE_LIBBACKTRACE@ HAVE_LIBOPCODE = @HAVE_LIBOPCODE@ HAVE_PRCTL_H = @HAVE_PRCTL_H@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LD_LIBRARY_PATH_NAME = @LD_LIBRARY_PATH_NAME@ LD_PRELOAD_NAME = @LD_PRELOAD_NAME@ LIBBACKTRACE_CPPFLAGS = @LIBBACKTRACE_CPPFLAGS@ LIBBACKTRACE_LDFLAGS = @LIBBACKTRACE_LDFLAGS@ LIBBACKTRACE_LIB = @LIBBACKTRACE_LIB@ LIBBACKTRACE_ROOT = @LIBBACKTRACE_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LITL_PRINT = @LITL_PRINT@ LITL_ROOT = @LITL_ROOT@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPI_CFLAGS = @MPI_CFLAGS@ MPI_EVENT_ID = @MPI_EVENT_ID@ MPI_INC = @MPI_INC@ MPI_LDFLAGS = @MPI_LDFLAGS@ MPI_MODULE_NAME = @MPI_MODULE_NAME@ MPI_ROOT = @MPI_ROOT@ NM = @NM@ NMEDIT = @NMEDIT@ NVCC = @NVCC@ NVCCFLAGS = @NVCCFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAPIDIR = @PAPIDIR@ PAPI_CPPFLAGS = @PAPI_CPPFLAGS@ PAPI_ENABLED = @PAPI_ENABLED@ PAPI_LDFLAGS = @PAPI_LDFLAGS@ PAPI_LIBDIR = @PAPI_LIBDIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PPTRACE_BINARY_TYPE = @PPTRACE_BINARY_TYPE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STARPU_CFLAGS = @STARPU_CFLAGS@ STARPU_CPPFLAGS = @STARPU_CPPFLAGS@ STARPU_LDFLAGS = @STARPU_LDFLAGS@ STARPU_LIBS = @STARPU_LIBS@ STARPU_ROOT = @STARPU_ROOT@ STRIP = @STRIP@ TARGET_BITS = @TARGET_BITS@ TL_CPPFLAGS = @TL_CPPFLAGS@ TL_EXT_CPPFLAGS = @TL_EXT_CPPFLAGS@ TL_EXT_LDFLAGS = @TL_EXT_LDFLAGS@ TL_EXT_LIB = @TL_EXT_LIB@ TL_LDFLAGS = @TL_LDFLAGS@ TL_LIB = @TL_LIB@ USE_BIN_INSTRUMENTATION = @USE_BIN_INSTRUMENTATION@ USE_CUDADIR_FROM_USER = @USE_CUDADIR_FROM_USER@ USE_GETTID = @USE_GETTID@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ USE_PAPIDIR_FROM_USER = @USE_PAPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ TLCFLAGS = $(TL_CPPFLAGS) TLLDFLAGS = $(TL_LDFLAGS) TLLIBADD = $(TL_LIB) GTGCFLAGS = $(GTG_CPPFLAGS) GTGLDFLAGS = $(GTG_LDFLAGS) GTGDEPENDENCIES = $(GTG_DEPENDENCIES) GTGLIBADD = $(GTG_LIB) AM_CPPFLAGS = -I$(srcdir)/../../core/ -I$(top_builddir)/src/core \ -I$(top_srcdir)/src/pptrace \ -DMPI_MODULE_NAME=@MPI_MODULE_NAME@ \ -DMPI_EVENT_ID=@MPI_EVENT_ID@ $(am__append_2) $(am__append_5) lib_LTLIBRARIES = $(am__append_1) @USE_MPI_TRUE@AM_LDFLAGS = @MPI_LDFLAGS@ libeztrace_convert_@MPI_MODULE_NAME@_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(GTGCFLAGS) libeztrace_convert_@MPI_MODULE_NAME@_la_LIBADD = $(TLLIBADD) $(GTGLIBADD) libeztrace_convert_@MPI_MODULE_NAME@_la_LDFLAGS = --no-undefined $(GTGLDFLAGS) $(TLLDFLAGS) libeztrace_convert_@MPI_MODULE_NAME@_la_SOURCES = eztrace_convert_mpi.c \ eztrace_convert_mpi.h\ mpi_ev_codes.h\ eztrace_convert_mpi_p2p.c\ eztrace_convert_mpi_p2p.h\ eztrace_convert_mpi_coll.c\ eztrace_convert_mpi_coll.h\ eztrace_convert_mpi_pers.c\ eztrace_convert_mpi_pers.h\ eztrace_stats_mpi.h\ eztrace_stats_mpi.c libeztrace_convert_@MPI_MODULE_NAME@_la_DEPENDENCIES = $(GTGDEPENDENCIES) mpi_function_files = mpi_funcs/mpi_allgather.c \ mpi_funcs/mpi_allgatherv.c \ mpi_funcs/mpi_allreduce.c \ mpi_funcs/mpi_alltoall.c \ mpi_funcs/mpi_alltoallv.c \ mpi_funcs/mpi_barrier.c \ mpi_funcs/mpi_bcast.c \ mpi_funcs/mpi_bsend.c \ mpi_funcs/mpi_bsend_init.c \ mpi_funcs/mpi_gather.c \ mpi_funcs/mpi_gatherv.c \ mpi_funcs/mpi_get.c \ mpi_funcs/mpi_ibsend.c \ mpi_funcs/mpi_iprobe.c \ mpi_funcs/mpi_irecv.c \ mpi_funcs/mpi_irsend.c \ mpi_funcs/mpi_isend.c \ mpi_funcs/mpi_issend.c \ mpi_funcs/mpi_probe.c \ mpi_funcs/mpi_put.c \ mpi_funcs/mpi_recv.c \ mpi_funcs/mpi_recv_init.c \ mpi_funcs/mpi_reduce.c \ mpi_funcs/mpi_reduce_scatter.c \ mpi_funcs/mpi_rsend.c \ mpi_funcs/mpi_rsend_init.c \ mpi_funcs/mpi_scan.c \ mpi_funcs/mpi_scatter.c \ mpi_funcs/mpi_scatterv.c \ mpi_funcs/mpi_send.c \ mpi_funcs/mpi_send_init.c \ mpi_funcs/mpi_sendrecv.c \ mpi_funcs/mpi_sendrecv_replace.c\ mpi_funcs/mpi_ssend.c \ mpi_funcs/mpi_ssend_init.c \ mpi_funcs/mpi_start.c \ mpi_funcs/mpi_startall.c \ mpi_funcs/mpi_test.c \ mpi_funcs/mpi_testall.c \ mpi_funcs/mpi_testany.c \ mpi_funcs/mpi_testsome.c \ mpi_funcs/mpi_wait.c \ mpi_funcs/mpi_waitall.c \ mpi_funcs/mpi_waitany.c \ mpi_funcs/mpi_waitsome.c \ mpi_funcs/mpi_ibarrier.c \ mpi_funcs/mpi_ibcast.c \ mpi_funcs/mpi_igather.c \ mpi_funcs/mpi_igatherv.c \ mpi_funcs/mpi_iscatter.c \ mpi_funcs/mpi_iscatterv.c \ mpi_funcs/mpi_iallgather.c \ mpi_funcs/mpi_iallgatherv.c \ mpi_funcs/mpi_ialltoall.c \ mpi_funcs/mpi_ialltoallv.c \ mpi_funcs/mpi_ireduce.c \ mpi_funcs/mpi_iallreduce.c \ mpi_funcs/mpi_ireduce_scatter.c \ mpi_funcs/mpi_iscan.c \ mpi_funcs/mpi_cancel.c libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) \ -DLD_PRELOAD_NAME=\"@LD_PRELOAD_NAME@\" libeztrace_@MPI_MODULE_NAME@_la_LIBADD = -lm -lpthread $(TLLIBADD) libeztrace_@MPI_MODULE_NAME@_la_LDFLAGS = --no-undefined $(TLLDFLAGS) libeztrace_@MPI_MODULE_NAME@_la_SOURCES = mpi.c mpi_fortran.c \ mpi_f.f90 fortran_utils.f90 mpi_ev_codes.h mpi_eztrace.h \ $(mpi_function_files) $(am__append_3) libeztrace_autostart_@MPI_MODULE_NAME@_la_FCFLAGS = $(AM_FFLAGS) -Wall libeztrace_@MPI_MODULE_NAME@_la_FCFLAGS = $(AM_FFLAGS) -Wall libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) \ -DLD_PRELOAD_NAME=\"@LD_PRELOAD_NAME@\" libeztrace_autostart_@MPI_MODULE_NAME@_la_LIBADD = -lm -lpthread $(TLLIBADD) $(AM_LDFLAGS) libeztrace_autostart_@MPI_MODULE_NAME@_la_LDFLAGS = $(TLLDFLAGS) -rdynamic libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS = $(AM_CFLAGS) -W -Wall -Wextra \ -DEZTRACE_AUTOSTART libeztrace_autostart_@MPI_MODULE_NAME@_la_SOURCES = mpi.c \ mpi_fortran.c mpi_f.f90 fortran_utils.f90 mpi_ev_codes.h \ mpi_eztrace.h $(mpi_function_files) $(am__append_4) all: all-am .SUFFIXES: .SUFFIXES: .c .f90 .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/modules/mpi/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/modules/mpi/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } mpi_funcs/$(am__dirstamp): @$(MKDIR_P) mpi_funcs @: > mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) mpi_funcs/$(DEPDIR) @: > mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgather.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgatherv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_allreduce.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoall.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoallv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_barrier.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_bcast.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend_init.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_gather.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_gatherv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_get.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibsend.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iprobe.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_irecv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_irsend.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_isend.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_issend.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_probe.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_put.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv_init.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend_init.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_scan.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatter.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatterv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_send.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_send_init.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend_init.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_start.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_startall.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_test.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_testall.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_testany.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_testsome.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_wait.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitall.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitany.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitsome.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibarrier.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibcast.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_igather.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_igatherv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatter.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatterv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgather.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgatherv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoall.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoallv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallreduce.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscan.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_cancel.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) libeztrace-@MPI_MODULE_NAME@.la: $(libeztrace_@MPI_MODULE_NAME@_la_OBJECTS) $(libeztrace_@MPI_MODULE_NAME@_la_DEPENDENCIES) $(EXTRA_libeztrace_@MPI_MODULE_NAME@_la_DEPENDENCIES) $(AM_V_FCLD)$(libeztrace_@MPI_MODULE_NAME@_la_LINK) $(am_libeztrace_@MPI_MODULE_NAME@_la_rpath) $(libeztrace_@MPI_MODULE_NAME@_la_OBJECTS) $(libeztrace_@MPI_MODULE_NAME@_la_LIBADD) $(LIBS) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgather.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgatherv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allreduce.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoall.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoallv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_barrier.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bcast.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend_init.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gather.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gatherv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_get.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibsend.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iprobe.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irecv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irsend.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_isend.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_issend.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_probe.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_put.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv_init.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend_init.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scan.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatter.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatterv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send_init.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend_init.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_start.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_startall.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_test.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testall.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testany.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testsome.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_wait.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitall.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitany.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitsome.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibarrier.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibcast.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igather.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igatherv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatter.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatterv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgather.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgatherv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoall.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoallv.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallreduce.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscan.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_cancel.lo: \ mpi_funcs/$(am__dirstamp) mpi_funcs/$(DEPDIR)/$(am__dirstamp) libeztrace-autostart-@MPI_MODULE_NAME@.la: $(libeztrace_autostart_@MPI_MODULE_NAME@_la_OBJECTS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_DEPENDENCIES) $(EXTRA_libeztrace_autostart_@MPI_MODULE_NAME@_la_DEPENDENCIES) $(AM_V_FCLD)$(libeztrace_autostart_@MPI_MODULE_NAME@_la_LINK) $(am_libeztrace_autostart_@MPI_MODULE_NAME@_la_rpath) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_OBJECTS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_LIBADD) $(LIBS) libeztrace-convert-@MPI_MODULE_NAME@.la: $(libeztrace_convert_@MPI_MODULE_NAME@_la_OBJECTS) $(libeztrace_convert_@MPI_MODULE_NAME@_la_DEPENDENCIES) $(EXTRA_libeztrace_convert_@MPI_MODULE_NAME@_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_convert_@MPI_MODULE_NAME@_la_LINK) $(am_libeztrace_convert_@MPI_MODULE_NAME@_la_rpath) $(libeztrace_convert_@MPI_MODULE_NAME@_la_OBJECTS) $(libeztrace_convert_@MPI_MODULE_NAME@_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f mpi_funcs/*.$(OBJEXT) -rm -f mpi_funcs/*.lo distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_fortran.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_fortran.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_coll.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_p2p.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_pers.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_stats_mpi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgather.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgatherv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_allreduce.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoall.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoallv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_barrier.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_bcast.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend_init.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_cancel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_gather.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_gatherv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_get.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgather.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgatherv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallreduce.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoall.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoallv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibarrier.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibcast.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibsend.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_igather.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_igatherv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iprobe.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_irecv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_irsend.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscan.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatter.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatterv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_isend.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_issend.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_probe.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_put.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv_init.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend_init.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_scan.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatter.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatterv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_send.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_send_init.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend_init.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_start.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_startall.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_test.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_testall.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_testany.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_testsome.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_wait.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitall.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitany.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitsome.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgather.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgatherv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allreduce.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoall.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoallv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_barrier.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bcast.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend_init.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_cancel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gather.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gatherv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_get.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgather.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgatherv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallreduce.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoall.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoallv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibarrier.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibcast.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibsend.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igather.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igatherv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iprobe.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irecv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irsend.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscan.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatter.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatterv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_isend.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_issend.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_probe.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_put.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv_init.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend_init.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scan.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatter.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatterv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send_init.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend_init.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_start.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_startall.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_test.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testall.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testany.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testsome.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_wait.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitall.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitany.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitsome.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libeztrace_@MPI_MODULE_NAME@_la-mpi.lo: mpi.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_@MPI_MODULE_NAME@_la-mpi.lo -MD -MP -MF $(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi.Tpo -c -o libeztrace_@MPI_MODULE_NAME@_la-mpi.lo `test -f 'mpi.c' || echo '$(srcdir)/'`mpi.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi.Tpo $(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi.c' object='libeztrace_@MPI_MODULE_NAME@_la-mpi.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_@MPI_MODULE_NAME@_la-mpi.lo `test -f 'mpi.c' || echo '$(srcdir)/'`mpi.c libeztrace_@MPI_MODULE_NAME@_la-mpi_fortran.lo: mpi_fortran.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_@MPI_MODULE_NAME@_la-mpi_fortran.lo -MD -MP -MF $(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_fortran.Tpo -c -o libeztrace_@MPI_MODULE_NAME@_la-mpi_fortran.lo `test -f 'mpi_fortran.c' || echo '$(srcdir)/'`mpi_fortran.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_fortran.Tpo $(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_fortran.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_fortran.c' object='libeztrace_@MPI_MODULE_NAME@_la-mpi_fortran.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_@MPI_MODULE_NAME@_la-mpi_fortran.lo `test -f 'mpi_fortran.c' || echo '$(srcdir)/'`mpi_fortran.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgather.lo: mpi_funcs/mpi_allgather.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgather.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgather.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgather.lo `test -f 'mpi_funcs/mpi_allgather.c' || echo '$(srcdir)/'`mpi_funcs/mpi_allgather.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgather.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgather.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_allgather.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgather.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgather.lo `test -f 'mpi_funcs/mpi_allgather.c' || echo '$(srcdir)/'`mpi_funcs/mpi_allgather.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgatherv.lo: mpi_funcs/mpi_allgatherv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgatherv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgatherv.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgatherv.lo `test -f 'mpi_funcs/mpi_allgatherv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_allgatherv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgatherv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgatherv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_allgatherv.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgatherv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_allgatherv.lo `test -f 'mpi_funcs/mpi_allgatherv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_allgatherv.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_allreduce.lo: mpi_funcs/mpi_allreduce.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_allreduce.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_allreduce.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_allreduce.lo `test -f 'mpi_funcs/mpi_allreduce.c' || echo '$(srcdir)/'`mpi_funcs/mpi_allreduce.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_allreduce.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_allreduce.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_allreduce.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_allreduce.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_allreduce.lo `test -f 'mpi_funcs/mpi_allreduce.c' || echo '$(srcdir)/'`mpi_funcs/mpi_allreduce.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoall.lo: mpi_funcs/mpi_alltoall.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoall.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoall.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoall.lo `test -f 'mpi_funcs/mpi_alltoall.c' || echo '$(srcdir)/'`mpi_funcs/mpi_alltoall.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoall.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoall.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_alltoall.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoall.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoall.lo `test -f 'mpi_funcs/mpi_alltoall.c' || echo '$(srcdir)/'`mpi_funcs/mpi_alltoall.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoallv.lo: mpi_funcs/mpi_alltoallv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoallv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoallv.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoallv.lo `test -f 'mpi_funcs/mpi_alltoallv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_alltoallv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoallv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoallv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_alltoallv.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoallv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_alltoallv.lo `test -f 'mpi_funcs/mpi_alltoallv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_alltoallv.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_barrier.lo: mpi_funcs/mpi_barrier.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_barrier.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_barrier.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_barrier.lo `test -f 'mpi_funcs/mpi_barrier.c' || echo '$(srcdir)/'`mpi_funcs/mpi_barrier.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_barrier.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_barrier.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_barrier.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_barrier.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_barrier.lo `test -f 'mpi_funcs/mpi_barrier.c' || echo '$(srcdir)/'`mpi_funcs/mpi_barrier.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_bcast.lo: mpi_funcs/mpi_bcast.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_bcast.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_bcast.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_bcast.lo `test -f 'mpi_funcs/mpi_bcast.c' || echo '$(srcdir)/'`mpi_funcs/mpi_bcast.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_bcast.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_bcast.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_bcast.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_bcast.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_bcast.lo `test -f 'mpi_funcs/mpi_bcast.c' || echo '$(srcdir)/'`mpi_funcs/mpi_bcast.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend.lo: mpi_funcs/mpi_bsend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend.lo `test -f 'mpi_funcs/mpi_bsend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_bsend.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_bsend.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend.lo `test -f 'mpi_funcs/mpi_bsend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_bsend.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend_init.lo: mpi_funcs/mpi_bsend_init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend_init.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend_init.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend_init.lo `test -f 'mpi_funcs/mpi_bsend_init.c' || echo '$(srcdir)/'`mpi_funcs/mpi_bsend_init.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend_init.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend_init.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_bsend_init.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend_init.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_bsend_init.lo `test -f 'mpi_funcs/mpi_bsend_init.c' || echo '$(srcdir)/'`mpi_funcs/mpi_bsend_init.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_gather.lo: mpi_funcs/mpi_gather.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_gather.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_gather.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_gather.lo `test -f 'mpi_funcs/mpi_gather.c' || echo '$(srcdir)/'`mpi_funcs/mpi_gather.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_gather.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_gather.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_gather.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_gather.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_gather.lo `test -f 'mpi_funcs/mpi_gather.c' || echo '$(srcdir)/'`mpi_funcs/mpi_gather.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_gatherv.lo: mpi_funcs/mpi_gatherv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_gatherv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_gatherv.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_gatherv.lo `test -f 'mpi_funcs/mpi_gatherv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_gatherv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_gatherv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_gatherv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_gatherv.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_gatherv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_gatherv.lo `test -f 'mpi_funcs/mpi_gatherv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_gatherv.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_get.lo: mpi_funcs/mpi_get.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_get.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_get.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_get.lo `test -f 'mpi_funcs/mpi_get.c' || echo '$(srcdir)/'`mpi_funcs/mpi_get.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_get.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_get.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_get.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_get.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_get.lo `test -f 'mpi_funcs/mpi_get.c' || echo '$(srcdir)/'`mpi_funcs/mpi_get.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibsend.lo: mpi_funcs/mpi_ibsend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibsend.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibsend.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibsend.lo `test -f 'mpi_funcs/mpi_ibsend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ibsend.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibsend.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibsend.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_ibsend.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibsend.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibsend.lo `test -f 'mpi_funcs/mpi_ibsend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ibsend.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iprobe.lo: mpi_funcs/mpi_iprobe.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iprobe.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iprobe.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iprobe.lo `test -f 'mpi_funcs/mpi_iprobe.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iprobe.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iprobe.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iprobe.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_iprobe.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iprobe.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iprobe.lo `test -f 'mpi_funcs/mpi_iprobe.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iprobe.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_irecv.lo: mpi_funcs/mpi_irecv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_irecv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_irecv.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_irecv.lo `test -f 'mpi_funcs/mpi_irecv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_irecv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_irecv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_irecv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_irecv.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_irecv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_irecv.lo `test -f 'mpi_funcs/mpi_irecv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_irecv.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_irsend.lo: mpi_funcs/mpi_irsend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_irsend.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_irsend.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_irsend.lo `test -f 'mpi_funcs/mpi_irsend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_irsend.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_irsend.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_irsend.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_irsend.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_irsend.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_irsend.lo `test -f 'mpi_funcs/mpi_irsend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_irsend.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_isend.lo: mpi_funcs/mpi_isend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_isend.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_isend.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_isend.lo `test -f 'mpi_funcs/mpi_isend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_isend.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_isend.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_isend.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_isend.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_isend.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_isend.lo `test -f 'mpi_funcs/mpi_isend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_isend.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_issend.lo: mpi_funcs/mpi_issend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_issend.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_issend.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_issend.lo `test -f 'mpi_funcs/mpi_issend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_issend.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_issend.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_issend.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_issend.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_issend.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_issend.lo `test -f 'mpi_funcs/mpi_issend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_issend.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_probe.lo: mpi_funcs/mpi_probe.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_probe.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_probe.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_probe.lo `test -f 'mpi_funcs/mpi_probe.c' || echo '$(srcdir)/'`mpi_funcs/mpi_probe.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_probe.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_probe.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_probe.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_probe.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_probe.lo `test -f 'mpi_funcs/mpi_probe.c' || echo '$(srcdir)/'`mpi_funcs/mpi_probe.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_put.lo: mpi_funcs/mpi_put.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_put.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_put.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_put.lo `test -f 'mpi_funcs/mpi_put.c' || echo '$(srcdir)/'`mpi_funcs/mpi_put.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_put.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_put.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_put.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_put.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_put.lo `test -f 'mpi_funcs/mpi_put.c' || echo '$(srcdir)/'`mpi_funcs/mpi_put.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv.lo: mpi_funcs/mpi_recv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv.lo `test -f 'mpi_funcs/mpi_recv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_recv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_recv.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv.lo `test -f 'mpi_funcs/mpi_recv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_recv.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv_init.lo: mpi_funcs/mpi_recv_init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv_init.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv_init.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv_init.lo `test -f 'mpi_funcs/mpi_recv_init.c' || echo '$(srcdir)/'`mpi_funcs/mpi_recv_init.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv_init.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv_init.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_recv_init.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv_init.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_recv_init.lo `test -f 'mpi_funcs/mpi_recv_init.c' || echo '$(srcdir)/'`mpi_funcs/mpi_recv_init.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce.lo: mpi_funcs/mpi_reduce.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce.lo `test -f 'mpi_funcs/mpi_reduce.c' || echo '$(srcdir)/'`mpi_funcs/mpi_reduce.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_reduce.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce.lo `test -f 'mpi_funcs/mpi_reduce.c' || echo '$(srcdir)/'`mpi_funcs/mpi_reduce.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.lo: mpi_funcs/mpi_reduce_scatter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.lo `test -f 'mpi_funcs/mpi_reduce_scatter.c' || echo '$(srcdir)/'`mpi_funcs/mpi_reduce_scatter.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_reduce_scatter.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.lo `test -f 'mpi_funcs/mpi_reduce_scatter.c' || echo '$(srcdir)/'`mpi_funcs/mpi_reduce_scatter.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend.lo: mpi_funcs/mpi_rsend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend.lo `test -f 'mpi_funcs/mpi_rsend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_rsend.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_rsend.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend.lo `test -f 'mpi_funcs/mpi_rsend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_rsend.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend_init.lo: mpi_funcs/mpi_rsend_init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend_init.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend_init.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend_init.lo `test -f 'mpi_funcs/mpi_rsend_init.c' || echo '$(srcdir)/'`mpi_funcs/mpi_rsend_init.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend_init.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend_init.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_rsend_init.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend_init.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_rsend_init.lo `test -f 'mpi_funcs/mpi_rsend_init.c' || echo '$(srcdir)/'`mpi_funcs/mpi_rsend_init.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_scan.lo: mpi_funcs/mpi_scan.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_scan.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_scan.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_scan.lo `test -f 'mpi_funcs/mpi_scan.c' || echo '$(srcdir)/'`mpi_funcs/mpi_scan.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_scan.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_scan.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_scan.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_scan.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_scan.lo `test -f 'mpi_funcs/mpi_scan.c' || echo '$(srcdir)/'`mpi_funcs/mpi_scan.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatter.lo: mpi_funcs/mpi_scatter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatter.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatter.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatter.lo `test -f 'mpi_funcs/mpi_scatter.c' || echo '$(srcdir)/'`mpi_funcs/mpi_scatter.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatter.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatter.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_scatter.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatter.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatter.lo `test -f 'mpi_funcs/mpi_scatter.c' || echo '$(srcdir)/'`mpi_funcs/mpi_scatter.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatterv.lo: mpi_funcs/mpi_scatterv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatterv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatterv.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatterv.lo `test -f 'mpi_funcs/mpi_scatterv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_scatterv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatterv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatterv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_scatterv.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatterv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_scatterv.lo `test -f 'mpi_funcs/mpi_scatterv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_scatterv.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_send.lo: mpi_funcs/mpi_send.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_send.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_send.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_send.lo `test -f 'mpi_funcs/mpi_send.c' || echo '$(srcdir)/'`mpi_funcs/mpi_send.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_send.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_send.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_send.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_send.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_send.lo `test -f 'mpi_funcs/mpi_send.c' || echo '$(srcdir)/'`mpi_funcs/mpi_send.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_send_init.lo: mpi_funcs/mpi_send_init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_send_init.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_send_init.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_send_init.lo `test -f 'mpi_funcs/mpi_send_init.c' || echo '$(srcdir)/'`mpi_funcs/mpi_send_init.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_send_init.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_send_init.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_send_init.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_send_init.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_send_init.lo `test -f 'mpi_funcs/mpi_send_init.c' || echo '$(srcdir)/'`mpi_funcs/mpi_send_init.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv.lo: mpi_funcs/mpi_sendrecv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv.lo `test -f 'mpi_funcs/mpi_sendrecv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_sendrecv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_sendrecv.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv.lo `test -f 'mpi_funcs/mpi_sendrecv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_sendrecv.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.lo: mpi_funcs/mpi_sendrecv_replace.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.lo `test -f 'mpi_funcs/mpi_sendrecv_replace.c' || echo '$(srcdir)/'`mpi_funcs/mpi_sendrecv_replace.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_sendrecv_replace.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.lo `test -f 'mpi_funcs/mpi_sendrecv_replace.c' || echo '$(srcdir)/'`mpi_funcs/mpi_sendrecv_replace.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend.lo: mpi_funcs/mpi_ssend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend.lo `test -f 'mpi_funcs/mpi_ssend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ssend.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_ssend.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend.lo `test -f 'mpi_funcs/mpi_ssend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ssend.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend_init.lo: mpi_funcs/mpi_ssend_init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend_init.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend_init.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend_init.lo `test -f 'mpi_funcs/mpi_ssend_init.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ssend_init.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend_init.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend_init.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_ssend_init.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend_init.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ssend_init.lo `test -f 'mpi_funcs/mpi_ssend_init.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ssend_init.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_start.lo: mpi_funcs/mpi_start.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_start.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_start.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_start.lo `test -f 'mpi_funcs/mpi_start.c' || echo '$(srcdir)/'`mpi_funcs/mpi_start.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_start.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_start.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_start.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_start.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_start.lo `test -f 'mpi_funcs/mpi_start.c' || echo '$(srcdir)/'`mpi_funcs/mpi_start.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_startall.lo: mpi_funcs/mpi_startall.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_startall.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_startall.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_startall.lo `test -f 'mpi_funcs/mpi_startall.c' || echo '$(srcdir)/'`mpi_funcs/mpi_startall.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_startall.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_startall.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_startall.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_startall.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_startall.lo `test -f 'mpi_funcs/mpi_startall.c' || echo '$(srcdir)/'`mpi_funcs/mpi_startall.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_test.lo: mpi_funcs/mpi_test.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_test.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_test.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_test.lo `test -f 'mpi_funcs/mpi_test.c' || echo '$(srcdir)/'`mpi_funcs/mpi_test.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_test.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_test.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_test.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_test.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_test.lo `test -f 'mpi_funcs/mpi_test.c' || echo '$(srcdir)/'`mpi_funcs/mpi_test.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_testall.lo: mpi_funcs/mpi_testall.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_testall.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_testall.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_testall.lo `test -f 'mpi_funcs/mpi_testall.c' || echo '$(srcdir)/'`mpi_funcs/mpi_testall.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_testall.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_testall.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_testall.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_testall.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_testall.lo `test -f 'mpi_funcs/mpi_testall.c' || echo '$(srcdir)/'`mpi_funcs/mpi_testall.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_testany.lo: mpi_funcs/mpi_testany.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_testany.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_testany.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_testany.lo `test -f 'mpi_funcs/mpi_testany.c' || echo '$(srcdir)/'`mpi_funcs/mpi_testany.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_testany.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_testany.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_testany.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_testany.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_testany.lo `test -f 'mpi_funcs/mpi_testany.c' || echo '$(srcdir)/'`mpi_funcs/mpi_testany.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_testsome.lo: mpi_funcs/mpi_testsome.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_testsome.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_testsome.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_testsome.lo `test -f 'mpi_funcs/mpi_testsome.c' || echo '$(srcdir)/'`mpi_funcs/mpi_testsome.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_testsome.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_testsome.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_testsome.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_testsome.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_testsome.lo `test -f 'mpi_funcs/mpi_testsome.c' || echo '$(srcdir)/'`mpi_funcs/mpi_testsome.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_wait.lo: mpi_funcs/mpi_wait.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_wait.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_wait.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_wait.lo `test -f 'mpi_funcs/mpi_wait.c' || echo '$(srcdir)/'`mpi_funcs/mpi_wait.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_wait.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_wait.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_wait.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_wait.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_wait.lo `test -f 'mpi_funcs/mpi_wait.c' || echo '$(srcdir)/'`mpi_funcs/mpi_wait.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitall.lo: mpi_funcs/mpi_waitall.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitall.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitall.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitall.lo `test -f 'mpi_funcs/mpi_waitall.c' || echo '$(srcdir)/'`mpi_funcs/mpi_waitall.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitall.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitall.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_waitall.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitall.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitall.lo `test -f 'mpi_funcs/mpi_waitall.c' || echo '$(srcdir)/'`mpi_funcs/mpi_waitall.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitany.lo: mpi_funcs/mpi_waitany.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitany.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitany.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitany.lo `test -f 'mpi_funcs/mpi_waitany.c' || echo '$(srcdir)/'`mpi_funcs/mpi_waitany.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitany.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitany.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_waitany.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitany.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitany.lo `test -f 'mpi_funcs/mpi_waitany.c' || echo '$(srcdir)/'`mpi_funcs/mpi_waitany.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitsome.lo: mpi_funcs/mpi_waitsome.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitsome.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitsome.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitsome.lo `test -f 'mpi_funcs/mpi_waitsome.c' || echo '$(srcdir)/'`mpi_funcs/mpi_waitsome.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitsome.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitsome.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_waitsome.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitsome.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_waitsome.lo `test -f 'mpi_funcs/mpi_waitsome.c' || echo '$(srcdir)/'`mpi_funcs/mpi_waitsome.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibarrier.lo: mpi_funcs/mpi_ibarrier.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibarrier.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibarrier.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibarrier.lo `test -f 'mpi_funcs/mpi_ibarrier.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ibarrier.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibarrier.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibarrier.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_ibarrier.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibarrier.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibarrier.lo `test -f 'mpi_funcs/mpi_ibarrier.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ibarrier.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibcast.lo: mpi_funcs/mpi_ibcast.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibcast.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibcast.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibcast.lo `test -f 'mpi_funcs/mpi_ibcast.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ibcast.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibcast.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibcast.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_ibcast.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibcast.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ibcast.lo `test -f 'mpi_funcs/mpi_ibcast.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ibcast.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_igather.lo: mpi_funcs/mpi_igather.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_igather.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_igather.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_igather.lo `test -f 'mpi_funcs/mpi_igather.c' || echo '$(srcdir)/'`mpi_funcs/mpi_igather.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_igather.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_igather.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_igather.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_igather.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_igather.lo `test -f 'mpi_funcs/mpi_igather.c' || echo '$(srcdir)/'`mpi_funcs/mpi_igather.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_igatherv.lo: mpi_funcs/mpi_igatherv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_igatherv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_igatherv.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_igatherv.lo `test -f 'mpi_funcs/mpi_igatherv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_igatherv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_igatherv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_igatherv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_igatherv.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_igatherv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_igatherv.lo `test -f 'mpi_funcs/mpi_igatherv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_igatherv.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatter.lo: mpi_funcs/mpi_iscatter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatter.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatter.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatter.lo `test -f 'mpi_funcs/mpi_iscatter.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iscatter.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatter.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatter.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_iscatter.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatter.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatter.lo `test -f 'mpi_funcs/mpi_iscatter.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iscatter.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatterv.lo: mpi_funcs/mpi_iscatterv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatterv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatterv.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatterv.lo `test -f 'mpi_funcs/mpi_iscatterv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iscatterv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatterv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatterv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_iscatterv.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatterv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscatterv.lo `test -f 'mpi_funcs/mpi_iscatterv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iscatterv.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgather.lo: mpi_funcs/mpi_iallgather.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgather.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgather.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgather.lo `test -f 'mpi_funcs/mpi_iallgather.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iallgather.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgather.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgather.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_iallgather.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgather.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgather.lo `test -f 'mpi_funcs/mpi_iallgather.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iallgather.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgatherv.lo: mpi_funcs/mpi_iallgatherv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgatherv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgatherv.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgatherv.lo `test -f 'mpi_funcs/mpi_iallgatherv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iallgatherv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgatherv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgatherv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_iallgatherv.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgatherv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallgatherv.lo `test -f 'mpi_funcs/mpi_iallgatherv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iallgatherv.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoall.lo: mpi_funcs/mpi_ialltoall.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoall.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoall.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoall.lo `test -f 'mpi_funcs/mpi_ialltoall.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ialltoall.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoall.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoall.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_ialltoall.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoall.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoall.lo `test -f 'mpi_funcs/mpi_ialltoall.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ialltoall.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoallv.lo: mpi_funcs/mpi_ialltoallv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoallv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoallv.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoallv.lo `test -f 'mpi_funcs/mpi_ialltoallv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ialltoallv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoallv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoallv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_ialltoallv.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoallv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ialltoallv.lo `test -f 'mpi_funcs/mpi_ialltoallv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ialltoallv.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce.lo: mpi_funcs/mpi_ireduce.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce.lo `test -f 'mpi_funcs/mpi_ireduce.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ireduce.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_ireduce.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce.lo `test -f 'mpi_funcs/mpi_ireduce.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ireduce.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallreduce.lo: mpi_funcs/mpi_iallreduce.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallreduce.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallreduce.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallreduce.lo `test -f 'mpi_funcs/mpi_iallreduce.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iallreduce.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallreduce.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallreduce.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_iallreduce.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallreduce.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iallreduce.lo `test -f 'mpi_funcs/mpi_iallreduce.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iallreduce.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.lo: mpi_funcs/mpi_ireduce_scatter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.lo `test -f 'mpi_funcs/mpi_ireduce_scatter.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ireduce_scatter.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_ireduce_scatter.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.lo `test -f 'mpi_funcs/mpi_ireduce_scatter.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ireduce_scatter.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscan.lo: mpi_funcs/mpi_iscan.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscan.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscan.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscan.lo `test -f 'mpi_funcs/mpi_iscan.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iscan.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscan.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscan.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_iscan.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscan.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_iscan.lo `test -f 'mpi_funcs/mpi_iscan.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iscan.c mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_cancel.lo: mpi_funcs/mpi_cancel.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_cancel.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_cancel.Tpo -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_cancel.lo `test -f 'mpi_funcs/mpi_cancel.c' || echo '$(srcdir)/'`mpi_funcs/mpi_cancel.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_cancel.Tpo mpi_funcs/$(DEPDIR)/libeztrace_@MPI_MODULE_NAME@_la-mpi_cancel.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_cancel.c' object='mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_cancel.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_@MPI_MODULE_NAME@_la-mpi_cancel.lo `test -f 'mpi_funcs/mpi_cancel.c' || echo '$(srcdir)/'`mpi_funcs/mpi_cancel.c libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi.lo: mpi.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi.lo -MD -MP -MF $(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi.Tpo -c -o libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi.lo `test -f 'mpi.c' || echo '$(srcdir)/'`mpi.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi.Tpo $(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi.c' object='libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi.lo `test -f 'mpi.c' || echo '$(srcdir)/'`mpi.c libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_fortran.lo: mpi_fortran.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_fortran.lo -MD -MP -MF $(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_fortran.Tpo -c -o libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_fortran.lo `test -f 'mpi_fortran.c' || echo '$(srcdir)/'`mpi_fortran.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_fortran.Tpo $(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_fortran.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_fortran.c' object='libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_fortran.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_fortran.lo `test -f 'mpi_fortran.c' || echo '$(srcdir)/'`mpi_fortran.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgather.lo: mpi_funcs/mpi_allgather.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgather.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgather.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgather.lo `test -f 'mpi_funcs/mpi_allgather.c' || echo '$(srcdir)/'`mpi_funcs/mpi_allgather.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgather.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgather.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_allgather.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgather.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgather.lo `test -f 'mpi_funcs/mpi_allgather.c' || echo '$(srcdir)/'`mpi_funcs/mpi_allgather.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgatherv.lo: mpi_funcs/mpi_allgatherv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgatherv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgatherv.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgatherv.lo `test -f 'mpi_funcs/mpi_allgatherv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_allgatherv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgatherv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgatherv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_allgatherv.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgatherv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allgatherv.lo `test -f 'mpi_funcs/mpi_allgatherv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_allgatherv.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allreduce.lo: mpi_funcs/mpi_allreduce.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allreduce.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allreduce.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allreduce.lo `test -f 'mpi_funcs/mpi_allreduce.c' || echo '$(srcdir)/'`mpi_funcs/mpi_allreduce.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allreduce.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allreduce.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_allreduce.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allreduce.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_allreduce.lo `test -f 'mpi_funcs/mpi_allreduce.c' || echo '$(srcdir)/'`mpi_funcs/mpi_allreduce.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoall.lo: mpi_funcs/mpi_alltoall.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoall.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoall.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoall.lo `test -f 'mpi_funcs/mpi_alltoall.c' || echo '$(srcdir)/'`mpi_funcs/mpi_alltoall.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoall.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoall.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_alltoall.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoall.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoall.lo `test -f 'mpi_funcs/mpi_alltoall.c' || echo '$(srcdir)/'`mpi_funcs/mpi_alltoall.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoallv.lo: mpi_funcs/mpi_alltoallv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoallv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoallv.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoallv.lo `test -f 'mpi_funcs/mpi_alltoallv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_alltoallv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoallv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoallv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_alltoallv.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoallv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_alltoallv.lo `test -f 'mpi_funcs/mpi_alltoallv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_alltoallv.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_barrier.lo: mpi_funcs/mpi_barrier.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_barrier.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_barrier.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_barrier.lo `test -f 'mpi_funcs/mpi_barrier.c' || echo '$(srcdir)/'`mpi_funcs/mpi_barrier.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_barrier.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_barrier.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_barrier.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_barrier.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_barrier.lo `test -f 'mpi_funcs/mpi_barrier.c' || echo '$(srcdir)/'`mpi_funcs/mpi_barrier.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bcast.lo: mpi_funcs/mpi_bcast.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bcast.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bcast.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bcast.lo `test -f 'mpi_funcs/mpi_bcast.c' || echo '$(srcdir)/'`mpi_funcs/mpi_bcast.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bcast.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bcast.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_bcast.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bcast.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bcast.lo `test -f 'mpi_funcs/mpi_bcast.c' || echo '$(srcdir)/'`mpi_funcs/mpi_bcast.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend.lo: mpi_funcs/mpi_bsend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend.lo `test -f 'mpi_funcs/mpi_bsend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_bsend.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_bsend.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend.lo `test -f 'mpi_funcs/mpi_bsend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_bsend.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend_init.lo: mpi_funcs/mpi_bsend_init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend_init.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend_init.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend_init.lo `test -f 'mpi_funcs/mpi_bsend_init.c' || echo '$(srcdir)/'`mpi_funcs/mpi_bsend_init.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend_init.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend_init.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_bsend_init.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend_init.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_bsend_init.lo `test -f 'mpi_funcs/mpi_bsend_init.c' || echo '$(srcdir)/'`mpi_funcs/mpi_bsend_init.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gather.lo: mpi_funcs/mpi_gather.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gather.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gather.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gather.lo `test -f 'mpi_funcs/mpi_gather.c' || echo '$(srcdir)/'`mpi_funcs/mpi_gather.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gather.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gather.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_gather.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gather.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gather.lo `test -f 'mpi_funcs/mpi_gather.c' || echo '$(srcdir)/'`mpi_funcs/mpi_gather.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gatherv.lo: mpi_funcs/mpi_gatherv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gatherv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gatherv.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gatherv.lo `test -f 'mpi_funcs/mpi_gatherv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_gatherv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gatherv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gatherv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_gatherv.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gatherv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_gatherv.lo `test -f 'mpi_funcs/mpi_gatherv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_gatherv.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_get.lo: mpi_funcs/mpi_get.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_get.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_get.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_get.lo `test -f 'mpi_funcs/mpi_get.c' || echo '$(srcdir)/'`mpi_funcs/mpi_get.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_get.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_get.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_get.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_get.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_get.lo `test -f 'mpi_funcs/mpi_get.c' || echo '$(srcdir)/'`mpi_funcs/mpi_get.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibsend.lo: mpi_funcs/mpi_ibsend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibsend.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibsend.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibsend.lo `test -f 'mpi_funcs/mpi_ibsend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ibsend.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibsend.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibsend.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_ibsend.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibsend.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibsend.lo `test -f 'mpi_funcs/mpi_ibsend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ibsend.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iprobe.lo: mpi_funcs/mpi_iprobe.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iprobe.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iprobe.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iprobe.lo `test -f 'mpi_funcs/mpi_iprobe.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iprobe.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iprobe.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iprobe.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_iprobe.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iprobe.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iprobe.lo `test -f 'mpi_funcs/mpi_iprobe.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iprobe.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irecv.lo: mpi_funcs/mpi_irecv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irecv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irecv.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irecv.lo `test -f 'mpi_funcs/mpi_irecv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_irecv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irecv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irecv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_irecv.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irecv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irecv.lo `test -f 'mpi_funcs/mpi_irecv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_irecv.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irsend.lo: mpi_funcs/mpi_irsend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irsend.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irsend.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irsend.lo `test -f 'mpi_funcs/mpi_irsend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_irsend.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irsend.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irsend.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_irsend.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irsend.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_irsend.lo `test -f 'mpi_funcs/mpi_irsend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_irsend.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_isend.lo: mpi_funcs/mpi_isend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_isend.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_isend.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_isend.lo `test -f 'mpi_funcs/mpi_isend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_isend.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_isend.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_isend.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_isend.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_isend.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_isend.lo `test -f 'mpi_funcs/mpi_isend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_isend.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_issend.lo: mpi_funcs/mpi_issend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_issend.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_issend.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_issend.lo `test -f 'mpi_funcs/mpi_issend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_issend.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_issend.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_issend.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_issend.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_issend.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_issend.lo `test -f 'mpi_funcs/mpi_issend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_issend.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_probe.lo: mpi_funcs/mpi_probe.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_probe.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_probe.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_probe.lo `test -f 'mpi_funcs/mpi_probe.c' || echo '$(srcdir)/'`mpi_funcs/mpi_probe.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_probe.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_probe.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_probe.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_probe.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_probe.lo `test -f 'mpi_funcs/mpi_probe.c' || echo '$(srcdir)/'`mpi_funcs/mpi_probe.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_put.lo: mpi_funcs/mpi_put.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_put.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_put.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_put.lo `test -f 'mpi_funcs/mpi_put.c' || echo '$(srcdir)/'`mpi_funcs/mpi_put.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_put.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_put.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_put.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_put.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_put.lo `test -f 'mpi_funcs/mpi_put.c' || echo '$(srcdir)/'`mpi_funcs/mpi_put.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv.lo: mpi_funcs/mpi_recv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv.lo `test -f 'mpi_funcs/mpi_recv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_recv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_recv.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv.lo `test -f 'mpi_funcs/mpi_recv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_recv.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv_init.lo: mpi_funcs/mpi_recv_init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv_init.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv_init.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv_init.lo `test -f 'mpi_funcs/mpi_recv_init.c' || echo '$(srcdir)/'`mpi_funcs/mpi_recv_init.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv_init.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv_init.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_recv_init.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv_init.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_recv_init.lo `test -f 'mpi_funcs/mpi_recv_init.c' || echo '$(srcdir)/'`mpi_funcs/mpi_recv_init.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce.lo: mpi_funcs/mpi_reduce.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce.lo `test -f 'mpi_funcs/mpi_reduce.c' || echo '$(srcdir)/'`mpi_funcs/mpi_reduce.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_reduce.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce.lo `test -f 'mpi_funcs/mpi_reduce.c' || echo '$(srcdir)/'`mpi_funcs/mpi_reduce.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.lo: mpi_funcs/mpi_reduce_scatter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.lo `test -f 'mpi_funcs/mpi_reduce_scatter.c' || echo '$(srcdir)/'`mpi_funcs/mpi_reduce_scatter.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_reduce_scatter.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_reduce_scatter.lo `test -f 'mpi_funcs/mpi_reduce_scatter.c' || echo '$(srcdir)/'`mpi_funcs/mpi_reduce_scatter.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend.lo: mpi_funcs/mpi_rsend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend.lo `test -f 'mpi_funcs/mpi_rsend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_rsend.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_rsend.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend.lo `test -f 'mpi_funcs/mpi_rsend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_rsend.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend_init.lo: mpi_funcs/mpi_rsend_init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend_init.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend_init.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend_init.lo `test -f 'mpi_funcs/mpi_rsend_init.c' || echo '$(srcdir)/'`mpi_funcs/mpi_rsend_init.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend_init.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend_init.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_rsend_init.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend_init.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_rsend_init.lo `test -f 'mpi_funcs/mpi_rsend_init.c' || echo '$(srcdir)/'`mpi_funcs/mpi_rsend_init.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scan.lo: mpi_funcs/mpi_scan.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scan.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scan.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scan.lo `test -f 'mpi_funcs/mpi_scan.c' || echo '$(srcdir)/'`mpi_funcs/mpi_scan.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scan.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scan.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_scan.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scan.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scan.lo `test -f 'mpi_funcs/mpi_scan.c' || echo '$(srcdir)/'`mpi_funcs/mpi_scan.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatter.lo: mpi_funcs/mpi_scatter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatter.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatter.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatter.lo `test -f 'mpi_funcs/mpi_scatter.c' || echo '$(srcdir)/'`mpi_funcs/mpi_scatter.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatter.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatter.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_scatter.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatter.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatter.lo `test -f 'mpi_funcs/mpi_scatter.c' || echo '$(srcdir)/'`mpi_funcs/mpi_scatter.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatterv.lo: mpi_funcs/mpi_scatterv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatterv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatterv.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatterv.lo `test -f 'mpi_funcs/mpi_scatterv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_scatterv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatterv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatterv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_scatterv.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatterv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_scatterv.lo `test -f 'mpi_funcs/mpi_scatterv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_scatterv.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send.lo: mpi_funcs/mpi_send.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send.lo `test -f 'mpi_funcs/mpi_send.c' || echo '$(srcdir)/'`mpi_funcs/mpi_send.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_send.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send.lo `test -f 'mpi_funcs/mpi_send.c' || echo '$(srcdir)/'`mpi_funcs/mpi_send.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send_init.lo: mpi_funcs/mpi_send_init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send_init.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send_init.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send_init.lo `test -f 'mpi_funcs/mpi_send_init.c' || echo '$(srcdir)/'`mpi_funcs/mpi_send_init.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send_init.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send_init.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_send_init.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send_init.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_send_init.lo `test -f 'mpi_funcs/mpi_send_init.c' || echo '$(srcdir)/'`mpi_funcs/mpi_send_init.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv.lo: mpi_funcs/mpi_sendrecv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv.lo `test -f 'mpi_funcs/mpi_sendrecv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_sendrecv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_sendrecv.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv.lo `test -f 'mpi_funcs/mpi_sendrecv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_sendrecv.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.lo: mpi_funcs/mpi_sendrecv_replace.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.lo `test -f 'mpi_funcs/mpi_sendrecv_replace.c' || echo '$(srcdir)/'`mpi_funcs/mpi_sendrecv_replace.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_sendrecv_replace.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_sendrecv_replace.lo `test -f 'mpi_funcs/mpi_sendrecv_replace.c' || echo '$(srcdir)/'`mpi_funcs/mpi_sendrecv_replace.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend.lo: mpi_funcs/mpi_ssend.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend.lo `test -f 'mpi_funcs/mpi_ssend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ssend.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_ssend.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend.lo `test -f 'mpi_funcs/mpi_ssend.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ssend.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend_init.lo: mpi_funcs/mpi_ssend_init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend_init.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend_init.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend_init.lo `test -f 'mpi_funcs/mpi_ssend_init.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ssend_init.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend_init.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend_init.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_ssend_init.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend_init.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ssend_init.lo `test -f 'mpi_funcs/mpi_ssend_init.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ssend_init.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_start.lo: mpi_funcs/mpi_start.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_start.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_start.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_start.lo `test -f 'mpi_funcs/mpi_start.c' || echo '$(srcdir)/'`mpi_funcs/mpi_start.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_start.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_start.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_start.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_start.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_start.lo `test -f 'mpi_funcs/mpi_start.c' || echo '$(srcdir)/'`mpi_funcs/mpi_start.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_startall.lo: mpi_funcs/mpi_startall.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_startall.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_startall.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_startall.lo `test -f 'mpi_funcs/mpi_startall.c' || echo '$(srcdir)/'`mpi_funcs/mpi_startall.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_startall.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_startall.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_startall.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_startall.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_startall.lo `test -f 'mpi_funcs/mpi_startall.c' || echo '$(srcdir)/'`mpi_funcs/mpi_startall.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_test.lo: mpi_funcs/mpi_test.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_test.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_test.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_test.lo `test -f 'mpi_funcs/mpi_test.c' || echo '$(srcdir)/'`mpi_funcs/mpi_test.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_test.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_test.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_test.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_test.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_test.lo `test -f 'mpi_funcs/mpi_test.c' || echo '$(srcdir)/'`mpi_funcs/mpi_test.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testall.lo: mpi_funcs/mpi_testall.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testall.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testall.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testall.lo `test -f 'mpi_funcs/mpi_testall.c' || echo '$(srcdir)/'`mpi_funcs/mpi_testall.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testall.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testall.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_testall.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testall.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testall.lo `test -f 'mpi_funcs/mpi_testall.c' || echo '$(srcdir)/'`mpi_funcs/mpi_testall.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testany.lo: mpi_funcs/mpi_testany.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testany.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testany.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testany.lo `test -f 'mpi_funcs/mpi_testany.c' || echo '$(srcdir)/'`mpi_funcs/mpi_testany.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testany.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testany.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_testany.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testany.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testany.lo `test -f 'mpi_funcs/mpi_testany.c' || echo '$(srcdir)/'`mpi_funcs/mpi_testany.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testsome.lo: mpi_funcs/mpi_testsome.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testsome.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testsome.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testsome.lo `test -f 'mpi_funcs/mpi_testsome.c' || echo '$(srcdir)/'`mpi_funcs/mpi_testsome.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testsome.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testsome.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_testsome.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testsome.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_testsome.lo `test -f 'mpi_funcs/mpi_testsome.c' || echo '$(srcdir)/'`mpi_funcs/mpi_testsome.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_wait.lo: mpi_funcs/mpi_wait.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_wait.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_wait.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_wait.lo `test -f 'mpi_funcs/mpi_wait.c' || echo '$(srcdir)/'`mpi_funcs/mpi_wait.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_wait.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_wait.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_wait.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_wait.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_wait.lo `test -f 'mpi_funcs/mpi_wait.c' || echo '$(srcdir)/'`mpi_funcs/mpi_wait.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitall.lo: mpi_funcs/mpi_waitall.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitall.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitall.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitall.lo `test -f 'mpi_funcs/mpi_waitall.c' || echo '$(srcdir)/'`mpi_funcs/mpi_waitall.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitall.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitall.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_waitall.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitall.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitall.lo `test -f 'mpi_funcs/mpi_waitall.c' || echo '$(srcdir)/'`mpi_funcs/mpi_waitall.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitany.lo: mpi_funcs/mpi_waitany.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitany.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitany.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitany.lo `test -f 'mpi_funcs/mpi_waitany.c' || echo '$(srcdir)/'`mpi_funcs/mpi_waitany.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitany.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitany.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_waitany.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitany.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitany.lo `test -f 'mpi_funcs/mpi_waitany.c' || echo '$(srcdir)/'`mpi_funcs/mpi_waitany.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitsome.lo: mpi_funcs/mpi_waitsome.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitsome.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitsome.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitsome.lo `test -f 'mpi_funcs/mpi_waitsome.c' || echo '$(srcdir)/'`mpi_funcs/mpi_waitsome.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitsome.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitsome.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_waitsome.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitsome.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_waitsome.lo `test -f 'mpi_funcs/mpi_waitsome.c' || echo '$(srcdir)/'`mpi_funcs/mpi_waitsome.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibarrier.lo: mpi_funcs/mpi_ibarrier.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibarrier.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibarrier.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibarrier.lo `test -f 'mpi_funcs/mpi_ibarrier.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ibarrier.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibarrier.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibarrier.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_ibarrier.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibarrier.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibarrier.lo `test -f 'mpi_funcs/mpi_ibarrier.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ibarrier.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibcast.lo: mpi_funcs/mpi_ibcast.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibcast.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibcast.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibcast.lo `test -f 'mpi_funcs/mpi_ibcast.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ibcast.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibcast.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibcast.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_ibcast.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibcast.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ibcast.lo `test -f 'mpi_funcs/mpi_ibcast.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ibcast.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igather.lo: mpi_funcs/mpi_igather.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igather.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igather.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igather.lo `test -f 'mpi_funcs/mpi_igather.c' || echo '$(srcdir)/'`mpi_funcs/mpi_igather.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igather.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igather.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_igather.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igather.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igather.lo `test -f 'mpi_funcs/mpi_igather.c' || echo '$(srcdir)/'`mpi_funcs/mpi_igather.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igatherv.lo: mpi_funcs/mpi_igatherv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igatherv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igatherv.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igatherv.lo `test -f 'mpi_funcs/mpi_igatherv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_igatherv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igatherv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igatherv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_igatherv.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igatherv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_igatherv.lo `test -f 'mpi_funcs/mpi_igatherv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_igatherv.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatter.lo: mpi_funcs/mpi_iscatter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatter.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatter.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatter.lo `test -f 'mpi_funcs/mpi_iscatter.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iscatter.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatter.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatter.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_iscatter.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatter.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatter.lo `test -f 'mpi_funcs/mpi_iscatter.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iscatter.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatterv.lo: mpi_funcs/mpi_iscatterv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatterv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatterv.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatterv.lo `test -f 'mpi_funcs/mpi_iscatterv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iscatterv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatterv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatterv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_iscatterv.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatterv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscatterv.lo `test -f 'mpi_funcs/mpi_iscatterv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iscatterv.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgather.lo: mpi_funcs/mpi_iallgather.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgather.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgather.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgather.lo `test -f 'mpi_funcs/mpi_iallgather.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iallgather.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgather.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgather.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_iallgather.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgather.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgather.lo `test -f 'mpi_funcs/mpi_iallgather.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iallgather.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgatherv.lo: mpi_funcs/mpi_iallgatherv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgatherv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgatherv.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgatherv.lo `test -f 'mpi_funcs/mpi_iallgatherv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iallgatherv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgatherv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgatherv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_iallgatherv.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgatherv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallgatherv.lo `test -f 'mpi_funcs/mpi_iallgatherv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iallgatherv.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoall.lo: mpi_funcs/mpi_ialltoall.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoall.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoall.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoall.lo `test -f 'mpi_funcs/mpi_ialltoall.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ialltoall.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoall.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoall.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_ialltoall.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoall.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoall.lo `test -f 'mpi_funcs/mpi_ialltoall.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ialltoall.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoallv.lo: mpi_funcs/mpi_ialltoallv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoallv.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoallv.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoallv.lo `test -f 'mpi_funcs/mpi_ialltoallv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ialltoallv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoallv.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoallv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_ialltoallv.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoallv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ialltoallv.lo `test -f 'mpi_funcs/mpi_ialltoallv.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ialltoallv.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce.lo: mpi_funcs/mpi_ireduce.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce.lo `test -f 'mpi_funcs/mpi_ireduce.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ireduce.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_ireduce.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce.lo `test -f 'mpi_funcs/mpi_ireduce.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ireduce.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallreduce.lo: mpi_funcs/mpi_iallreduce.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallreduce.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallreduce.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallreduce.lo `test -f 'mpi_funcs/mpi_iallreduce.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iallreduce.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallreduce.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallreduce.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_iallreduce.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallreduce.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iallreduce.lo `test -f 'mpi_funcs/mpi_iallreduce.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iallreduce.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.lo: mpi_funcs/mpi_ireduce_scatter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.lo `test -f 'mpi_funcs/mpi_ireduce_scatter.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ireduce_scatter.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_ireduce_scatter.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_ireduce_scatter.lo `test -f 'mpi_funcs/mpi_ireduce_scatter.c' || echo '$(srcdir)/'`mpi_funcs/mpi_ireduce_scatter.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscan.lo: mpi_funcs/mpi_iscan.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscan.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscan.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscan.lo `test -f 'mpi_funcs/mpi_iscan.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iscan.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscan.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscan.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_iscan.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscan.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_iscan.lo `test -f 'mpi_funcs/mpi_iscan.c' || echo '$(srcdir)/'`mpi_funcs/mpi_iscan.c mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_cancel.lo: mpi_funcs/mpi_cancel.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -MT mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_cancel.lo -MD -MP -MF mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_cancel.Tpo -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_cancel.lo `test -f 'mpi_funcs/mpi_cancel.c' || echo '$(srcdir)/'`mpi_funcs/mpi_cancel.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_cancel.Tpo mpi_funcs/$(DEPDIR)/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_cancel.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mpi_funcs/mpi_cancel.c' object='mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_cancel.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_CFLAGS) $(CFLAGS) -c -o mpi_funcs/libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_cancel.lo `test -f 'mpi_funcs/mpi_cancel.c' || echo '$(srcdir)/'`mpi_funcs/mpi_cancel.c libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi.lo: eztrace_convert_mpi.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi.lo -MD -MP -MF $(DEPDIR)/libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi.Tpo -c -o libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi.lo `test -f 'eztrace_convert_mpi.c' || echo '$(srcdir)/'`eztrace_convert_mpi.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi.Tpo $(DEPDIR)/libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_convert_mpi.c' object='libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi.lo `test -f 'eztrace_convert_mpi.c' || echo '$(srcdir)/'`eztrace_convert_mpi.c libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_p2p.lo: eztrace_convert_mpi_p2p.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_p2p.lo -MD -MP -MF $(DEPDIR)/libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_p2p.Tpo -c -o libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_p2p.lo `test -f 'eztrace_convert_mpi_p2p.c' || echo '$(srcdir)/'`eztrace_convert_mpi_p2p.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_p2p.Tpo $(DEPDIR)/libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_p2p.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_convert_mpi_p2p.c' object='libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_p2p.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_p2p.lo `test -f 'eztrace_convert_mpi_p2p.c' || echo '$(srcdir)/'`eztrace_convert_mpi_p2p.c libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_coll.lo: eztrace_convert_mpi_coll.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_coll.lo -MD -MP -MF $(DEPDIR)/libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_coll.Tpo -c -o libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_coll.lo `test -f 'eztrace_convert_mpi_coll.c' || echo '$(srcdir)/'`eztrace_convert_mpi_coll.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_coll.Tpo $(DEPDIR)/libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_coll.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_convert_mpi_coll.c' object='libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_coll.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_coll.lo `test -f 'eztrace_convert_mpi_coll.c' || echo '$(srcdir)/'`eztrace_convert_mpi_coll.c libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_pers.lo: eztrace_convert_mpi_pers.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_pers.lo -MD -MP -MF $(DEPDIR)/libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_pers.Tpo -c -o libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_pers.lo `test -f 'eztrace_convert_mpi_pers.c' || echo '$(srcdir)/'`eztrace_convert_mpi_pers.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_pers.Tpo $(DEPDIR)/libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_pers.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_convert_mpi_pers.c' object='libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_pers.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_convert_mpi_pers.lo `test -f 'eztrace_convert_mpi_pers.c' || echo '$(srcdir)/'`eztrace_convert_mpi_pers.c libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_stats_mpi.lo: eztrace_stats_mpi.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_stats_mpi.lo -MD -MP -MF $(DEPDIR)/libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_stats_mpi.Tpo -c -o libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_stats_mpi.lo `test -f 'eztrace_stats_mpi.c' || echo '$(srcdir)/'`eztrace_stats_mpi.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_stats_mpi.Tpo $(DEPDIR)/libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_stats_mpi.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_stats_mpi.c' object='libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_stats_mpi.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_@MPI_MODULE_NAME@_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_convert_@MPI_MODULE_NAME@_la-eztrace_stats_mpi.lo `test -f 'eztrace_stats_mpi.c' || echo '$(srcdir)/'`eztrace_stats_mpi.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f90.lo: $(AM_V_FC)$(LTFCCOMPILE) -c -o $@ $< libeztrace_@MPI_MODULE_NAME@_la-mpi_f.lo: mpi_f.f90 $(AM_V_FC)$(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(libeztrace_@MPI_MODULE_NAME@_la_FCFLAGS) $(FCFLAGS) -c -o libeztrace_@MPI_MODULE_NAME@_la-mpi_f.lo `test -f 'mpi_f.f90' || echo '$(srcdir)/'`mpi_f.f90 libeztrace_@MPI_MODULE_NAME@_la-fortran_utils.lo: fortran_utils.f90 $(AM_V_FC)$(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(libeztrace_@MPI_MODULE_NAME@_la_FCFLAGS) $(FCFLAGS) -c -o libeztrace_@MPI_MODULE_NAME@_la-fortran_utils.lo `test -f 'fortran_utils.f90' || echo '$(srcdir)/'`fortran_utils.f90 libeztrace_@MPI_MODULE_NAME@_la-mpi3_f.lo: mpi3_f.f90 $(AM_V_FC)$(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(libeztrace_@MPI_MODULE_NAME@_la_FCFLAGS) $(FCFLAGS) -c -o libeztrace_@MPI_MODULE_NAME@_la-mpi3_f.lo `test -f 'mpi3_f.f90' || echo '$(srcdir)/'`mpi3_f.f90 libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_f.lo: mpi_f.f90 $(AM_V_FC)$(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_FCFLAGS) $(FCFLAGS) -c -o libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi_f.lo `test -f 'mpi_f.f90' || echo '$(srcdir)/'`mpi_f.f90 libeztrace_autostart_@MPI_MODULE_NAME@_la-fortran_utils.lo: fortran_utils.f90 $(AM_V_FC)$(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_FCFLAGS) $(FCFLAGS) -c -o libeztrace_autostart_@MPI_MODULE_NAME@_la-fortran_utils.lo `test -f 'fortran_utils.f90' || echo '$(srcdir)/'`fortran_utils.f90 libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi3_f.lo: mpi3_f.f90 $(AM_V_FC)$(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(FC) $(libeztrace_autostart_@MPI_MODULE_NAME@_la_FCFLAGS) $(FCFLAGS) -c -o libeztrace_autostart_@MPI_MODULE_NAME@_la-mpi3_f.lo `test -f 'mpi3_f.f90' || echo '$(srcdir)/'`mpi3_f.f90 mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs -rm -rf mpi_funcs/.libs mpi_funcs/_libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f mpi_funcs/$(DEPDIR)/$(am__dirstamp) -rm -f mpi_funcs/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) mpi_funcs/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) mpi_funcs/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags-am \ distclean distclean-compile distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags-am uninstall uninstall-am uninstall-libLTLIBRARIES .PRECIOUS: Makefile #noinst_HEADERS = eztrace_convert_mpi.h \ # mpi_ev_codes.h # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/src/modules/mpi/PaxHeaders.7332/mpi3_f.f900000644000000000000000000000013213012560437017351 xustar0030 mtime=1479205151.284727238 30 atime=1508162330.642705429 30 ctime=1508162368.081937715 eztrace-1.1-7/src/modules/mpi/mpi3_f.f900000644000175000017500000000400413012560437020536 0ustar00trahaytrahay00000000000000! These routines are specific to MPI3 subroutine MPI_IBarrier(COMM, REQ, IERROR) call MPIF_IBarrier(COMM, REQ, IERROR) return end subroutine MPI_IBCast(BUFFER, COUNT, DATATYPE, ROOT, COMM, REQ, IERROR) call MPIF_IBCast(BUFFER, COUNT, DATATYPE, ROOT, COMM, REQ, IERROR) return end subroutine MPI_IGather(SBUF,SCNT,STYPE,RBUF,RCNT, RTYPE, R, C, REQ, E) call MPIF_IGather(SBUF, SCNT, STYPE, RBUF, RCNT, RTYPE, R, C, REQ, E) return end subroutine MPI_IGatherv(SBUF,SCNT,STYPE,RBUF,RCNT,DSP,RTYPE,R,C,REQ,E) call MPIF_IGatherv(SBUF,SCNT,STYPE,RBUF,RCNT,DSP,RTYPE,R,C,REQ,E) return end subroutine MPI_IScatter(SBUF,SCNT,STYPE,RBUF,RCNT,RTYPE,R,C,REQ,E) call MPIF_IScatter(SBUF, SCNT, STYPE, RBUF, RCNT, RTYPE, R, C,REQ, E) return end subroutine MPI_IScatterv(SBUF,SCNT,DSP,SDTYP,RBUF,RCNT,RTYP,R,C,REQ,E) call MPIF_IScatterv(SBUF,SCNT,DSP,SDTYP,RBUF, RCNT, RTYP, R, C, REQ,E) return end subroutine MPI_IAllgather(SBUF, SCNT, STYP, RBUF, RCNT, RTYP, C, REQ, E) call MPIF_IAllgather(SBUF, SCNT, STYP, RBUF, RCNT, RTYP, C, REQ, E) return end subroutine MPI_IAllgatherv(SB, SC, ST, RB, RC, D, RT, C, REQ,IERROR) call MPIF_IAllgatherv(SB, SC, ST, RB, RC, D, RT, C, REQ,IERROR) return end subroutine MPI_IAlltoall(SB, SC, ST, RB, RC, RT, COMM, REQ,IERROR) call MPIF_IAlltoall(SB, SC, ST, RB, RC, RT, COMM, REQ,IERROR) return end subroutine MPI_IAlltoallv(SB, SC, SD, ST, RB, RC, RD, RT, C, REQ,ERROR) call MPIF_IAlltoallv(SB, SC, SD, ST, RB, RC, RD, RT, C, REQ,ERROR) return end subroutine MPI_IReduce(SBUF, RBUF, CNT, D, OP, ROOT, COMM, REQ,IERROR) call MPIF_IReduce(SBUF, RBUF, CNT, D, OP, ROOT, COMM, REQ,IERROR) return end subroutine MPI_IAllreduce(SBUF, RBUF, CNT, D, OP, COMM, REQ,IERROR) call MPIF_IAllreduce(SBUF, RBUF, CNT, D, OP, COMM, REQ,IERROR) return end subroutine MPI_IReduce_scatter(SBUF, RBUF, RCNT, D, OP, C, REQ,IERROR) call MPIF_IReduce_scatter(SBUF, RBUF, RCNT, D, OP, C, REQ,IERROR) return end subroutine MPI_IScan(SBUF, RBUF, CNT, D, OP, COMM, REQ,IERROR) call MPIF_IScan(SBUF, RBUF, CNT, D, OP, COMM, REQ,IERROR) return end eztrace-1.1-7/src/modules/mpi/PaxHeaders.7332/mpi_ev_codes.h0000644000000000000000000000013213143047722020463 xustar0030 mtime=1502367698.664456116 30 atime=1508138889.964269768 30 ctime=1508162368.025932821 eztrace-1.1-7/src/modules/mpi/mpi_ev_codes.h0000644000175000017500000001775113143047722021665 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef __MPI_EV_CODES_H__ #define __MPI_EV_CODES_H__ #include "ev_codes.h" #ifndef MPI_EVENT_ID #define MPI_EVENT_ID 0x04 #endif #define EZTRACE_MPI_EVENTS_ID SYSTEM_MODULE_ID(MPI_EVENT_ID) #define EZTRACE_MPI_PREFIX GENERATE_SYSTEM_MODULE_PREFIX(EZTRACE_MPI_EVENTS_ID) #define EZTRACE_MPI_INIT (EZTRACE_MPI_PREFIX | 0x0010) #define EZTRACE_MPI_INIT_Info (EZTRACE_MPI_PREFIX | 0x0011) #define EZTRACE_MPI_NEW_COMM (EZTRACE_MPI_PREFIX | 0x0012) #define EZTRACE_MPI_NEW_COMM_Info (EZTRACE_MPI_PREFIX | 0x0013) #define EZTRACE_MPI_DELETE_COMM (EZTRACE_MPI_PREFIX | 0x0014) #define EZTRACE_MPI_START_SEND (EZTRACE_MPI_PREFIX | 0x0001) #define EZTRACE_MPI_STOP_SEND (EZTRACE_MPI_PREFIX | 0x0002) #define EZTRACE_MPI_START_BSEND (EZTRACE_MPI_PREFIX | 0x0003) #define EZTRACE_MPI_STOP_BSEND (EZTRACE_MPI_PREFIX | 0x0004) #define EZTRACE_MPI_START_SSEND (EZTRACE_MPI_PREFIX | 0x0005) #define EZTRACE_MPI_STOP_SSEND (EZTRACE_MPI_PREFIX | 0x0006) #define EZTRACE_MPI_START_RSEND (EZTRACE_MPI_PREFIX | 0x0007) #define EZTRACE_MPI_STOP_RSEND (EZTRACE_MPI_PREFIX | 0x0008) #define EZTRACE_MPI_START_SENDRECV (EZTRACE_MPI_PREFIX | 0x000a) #define EZTRACE_MPI_STOP_SENDRECV (EZTRACE_MPI_PREFIX | 0x000b) #define EZTRACE_MPI_START_SENDRECV_REPLACE (EZTRACE_MPI_PREFIX | 0x000c) #define EZTRACE_MPI_STOP_SENDRECV_REPLACE (EZTRACE_MPI_PREFIX | 0x000d) #define EZTRACE_MPI_ISEND (EZTRACE_MPI_PREFIX | 0x0101) #define EZTRACE_MPI_IBSEND (EZTRACE_MPI_PREFIX | 0x0103) #define EZTRACE_MPI_ISSEND (EZTRACE_MPI_PREFIX | 0x0105) #define EZTRACE_MPI_IRSEND (EZTRACE_MPI_PREFIX | 0x0107) #define EZTRACE_MPI_START_PUT (EZTRACE_MPI_PREFIX | 0x0201) #define EZTRACE_MPI_STOP_PUT (EZTRACE_MPI_PREFIX | 0x0202) #define EZTRACE_MPI_START_GET (EZTRACE_MPI_PREFIX | 0x0203) #define EZTRACE_MPI_STOP_GET (EZTRACE_MPI_PREFIX | 0x0204) #define EZTRACE_MPI_STOP_ISEND (EZTRACE_MPI_PREFIX | 0x0111) #define EZTRACE_MPI_STOP_IBSEND (EZTRACE_MPI_PREFIX | 0x0113) #define EZTRACE_MPI_STOP_ISSEND (EZTRACE_MPI_PREFIX | 0x0115) #define EZTRACE_MPI_STOP_IRSEND (EZTRACE_MPI_PREFIX | 0x0117) #define EZTRACE_MPI_START_RECV (EZTRACE_MPI_PREFIX | 0x1003) #define EZTRACE_MPI_STOP_RECV (EZTRACE_MPI_PREFIX | 0x1004) #define EZTRACE_MPI_IRECV (EZTRACE_MPI_PREFIX | 0x1005) #define EZTRACE_MPI_STOP_IRECV (EZTRACE_MPI_PREFIX | 0x1006) #define EZTRACE_MPI_START_WAIT (EZTRACE_MPI_PREFIX | 0x2001) #define EZTRACE_MPI_STOP_WAIT (EZTRACE_MPI_PREFIX | 0x2002) #define EZTRACE_MPI_TEST_SUCCESS (EZTRACE_MPI_PREFIX | 0x2003) #define EZTRACE_MPI_START_PROBE (EZTRACE_MPI_PREFIX | 0x2004) #define EZTRACE_MPI_STOP_PROBE (EZTRACE_MPI_PREFIX | 0x2005) #define EZTRACE_MPI_IPROBE_SUCCESS (EZTRACE_MPI_PREFIX | 0x2006) #define EZTRACE_MPI_IPROBE_FAILED (EZTRACE_MPI_PREFIX | 0x2007) #define EZTRACE_MPI_START_WAITANY (EZTRACE_MPI_PREFIX | 0x2008) #define EZTRACE_MPI_STOP_WAITANY (EZTRACE_MPI_PREFIX | 0x2009) #define EZTRACE_MPI_START_WAITALL (EZTRACE_MPI_PREFIX | 0x200a) #define EZTRACE_MPI_STOP_WAITALL (EZTRACE_MPI_PREFIX | 0x200b) #define EZTRACE_MPI_STOP_WAIT_FAILED (EZTRACE_MPI_PREFIX | 0x200c) #define EZTRACE_MPI_BCast_info (EZTRACE_MPI_PREFIX | 0x3101) #define EZTRACE_MPI_START_BCast (EZTRACE_MPI_PREFIX | 0x3001) #define EZTRACE_MPI_START_Gather (EZTRACE_MPI_PREFIX | 0x3002) #define EZTRACE_MPI_START_Gatherv (EZTRACE_MPI_PREFIX | 0x3003) #define EZTRACE_MPI_START_Scatter (EZTRACE_MPI_PREFIX | 0x3004) #define EZTRACE_MPI_START_Scatterv (EZTRACE_MPI_PREFIX | 0x3005) #define EZTRACE_MPI_START_Allgather (EZTRACE_MPI_PREFIX | 0x3006) #define EZTRACE_MPI_START_Allgatherv (EZTRACE_MPI_PREFIX | 0x3007) #define EZTRACE_MPI_START_Alltoall (EZTRACE_MPI_PREFIX | 0x3008) #define EZTRACE_MPI_START_Alltoallv (EZTRACE_MPI_PREFIX | 0x3009) #define EZTRACE_MPI_START_Reduce (EZTRACE_MPI_PREFIX | 0x300a) #define EZTRACE_MPI_START_Allreduce (EZTRACE_MPI_PREFIX | 0x300b) #define EZTRACE_MPI_START_Reduce_scatter (EZTRACE_MPI_PREFIX | 0x300c) #define EZTRACE_MPI_START_Scan (EZTRACE_MPI_PREFIX | 0x300d) #define EZTRACE_MPI_START_BARRIER (EZTRACE_MPI_PREFIX | 0x300e) #define EZTRACE_MPI_STOP_BCast (EZTRACE_MPI_PREFIX | 0x3011) #define EZTRACE_MPI_STOP_Gather (EZTRACE_MPI_PREFIX | 0x3012) #define EZTRACE_MPI_STOP_Gatherv (EZTRACE_MPI_PREFIX | 0x3013) #define EZTRACE_MPI_STOP_Scatter (EZTRACE_MPI_PREFIX | 0x3014) #define EZTRACE_MPI_STOP_Scatterv (EZTRACE_MPI_PREFIX | 0x3015) #define EZTRACE_MPI_STOP_Allgather (EZTRACE_MPI_PREFIX | 0x3016) #define EZTRACE_MPI_STOP_Allgatherv (EZTRACE_MPI_PREFIX | 0x3017) #define EZTRACE_MPI_STOP_Alltoall (EZTRACE_MPI_PREFIX | 0x3018) #define EZTRACE_MPI_STOP_Alltoallv (EZTRACE_MPI_PREFIX | 0x3019) #define EZTRACE_MPI_STOP_Reduce (EZTRACE_MPI_PREFIX | 0x301a) #define EZTRACE_MPI_STOP_Allreduce (EZTRACE_MPI_PREFIX | 0x301b) #define EZTRACE_MPI_STOP_Reduce_scatter (EZTRACE_MPI_PREFIX | 0x301c) #define EZTRACE_MPI_STOP_Scan (EZTRACE_MPI_PREFIX | 0x301d) #define EZTRACE_MPI_STOP_BARRIER (EZTRACE_MPI_PREFIX | 0x301e) #define EZTRACE_MPI_IBCAST (EZTRACE_MPI_PREFIX | 0x3021) #define EZTRACE_MPI_IGATHER (EZTRACE_MPI_PREFIX | 0x3022) #define EZTRACE_MPI_IGATHERV (EZTRACE_MPI_PREFIX | 0x3023) #define EZTRACE_MPI_ISCATTER (EZTRACE_MPI_PREFIX | 0x3024) #define EZTRACE_MPI_ISCATTERV (EZTRACE_MPI_PREFIX | 0x3025) #define EZTRACE_MPI_IALLGATHER (EZTRACE_MPI_PREFIX | 0x3026) #define EZTRACE_MPI_IALLGATHERV (EZTRACE_MPI_PREFIX | 0x3027) #define EZTRACE_MPI_IALLTOALL (EZTRACE_MPI_PREFIX | 0x3028) #define EZTRACE_MPI_IALLTOALLV (EZTRACE_MPI_PREFIX | 0x3029) #define EZTRACE_MPI_IREDUCE (EZTRACE_MPI_PREFIX | 0x302a) #define EZTRACE_MPI_IALLREDUCE (EZTRACE_MPI_PREFIX | 0x302b) #define EZTRACE_MPI_IREDUCE_SCATTER (EZTRACE_MPI_PREFIX | 0x302c) #define EZTRACE_MPI_ISCAN (EZTRACE_MPI_PREFIX | 0x302d) #define EZTRACE_MPI_IBARRIER (EZTRACE_MPI_PREFIX | 0x302e) #define EZTRACE_MPI_STOP_IBCAST (EZTRACE_MPI_PREFIX | 0x3121) #define EZTRACE_MPI_STOP_IGATHER (EZTRACE_MPI_PREFIX | 0x3122) #define EZTRACE_MPI_STOP_IGATHERV (EZTRACE_MPI_PREFIX | 0x3123) #define EZTRACE_MPI_STOP_ISCATTER (EZTRACE_MPI_PREFIX | 0x3124) #define EZTRACE_MPI_STOP_ISCATTERV (EZTRACE_MPI_PREFIX | 0x3125) #define EZTRACE_MPI_STOP_IALLGATHER (EZTRACE_MPI_PREFIX | 0x3126) #define EZTRACE_MPI_STOP_IALLGATHERV (EZTRACE_MPI_PREFIX | 0x3127) #define EZTRACE_MPI_STOP_IALLTOALL (EZTRACE_MPI_PREFIX | 0x3128) #define EZTRACE_MPI_STOP_IALLTOALLV (EZTRACE_MPI_PREFIX | 0x3129) #define EZTRACE_MPI_STOP_IREDUCE (EZTRACE_MPI_PREFIX | 0x312a) #define EZTRACE_MPI_STOP_IALLREDUCE (EZTRACE_MPI_PREFIX | 0x312b) #define EZTRACE_MPI_STOP_IREDUCE_SCATTER (EZTRACE_MPI_PREFIX | 0x312c) #define EZTRACE_MPI_STOP_ISCAN (EZTRACE_MPI_PREFIX | 0x312d) #define EZTRACE_MPI_STOP_IBARRIER (EZTRACE_MPI_PREFIX | 0x312e) #define EZTRACE_MPI_SPAWN (EZTRACE_MPI_PREFIX | 0x4001) #define EZTRACE_MPI_SPAWNED (EZTRACE_MPI_PREFIX | 0x4002) #define EZTRACE_MPI_SEND_INIT (EZTRACE_MPI_PREFIX | 0x5001) #define EZTRACE_MPI_BSEND_INIT (EZTRACE_MPI_PREFIX | 0x5002) #define EZTRACE_MPI_RSEND_INIT (EZTRACE_MPI_PREFIX | 0x5003) #define EZTRACE_MPI_SSEND_INIT (EZTRACE_MPI_PREFIX | 0x5004) #define EZTRACE_MPI_RECV_INIT (EZTRACE_MPI_PREFIX | 0x5010) #define EZTRACE_MPI_START (EZTRACE_MPI_PREFIX | 0x5100) #define EZTRACE_MPI_CANCEL (EZTRACE_MPI_PREFIX | 0x6001) #define EZTRACE_MPI_Info (EZTRACE_MPI_PREFIX | 0x9999) #endif /* __MPI_EV_CODES_H__ */ eztrace-1.1-7/src/modules/mpi/PaxHeaders.7332/eztrace_convert_mpi.h0000644000000000000000000000013213143047722022071 xustar0030 mtime=1502367698.660456018 30 atime=1508138890.036271566 30 ctime=1508162368.085938064 eztrace-1.1-7/src/modules/mpi/eztrace_convert_mpi.h0000644000175000017500000003127113143047722023264 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef EZTRACE_CONVERT_MPI_H #define EZTRACE_CONVERT_MPI_H #define _GNU_SOURCE #include #include "eztrace_convert.h" #include "mpi_eztrace.h" /* Different kinds of MPI messages */ enum MPI_MSG_TYPE { mpi_msg_type_p2p, mpi_msg_type_coll, }; enum comm_type_t { comm_type_incoming = 0, /* pending recv */ comm_type_outgoing = 1, /* pending send */ comm_type_collective = 2, /* pending collective */ comm_type_max = 3, }; struct mpi_process_info_t; struct ezt_mpi_comm { struct ezt_list_token_t token; app_ptr comm_id; int comm_size; /* number of participants in this communicator */ int *ranks; /* global ranks for each participant to this communicator */ int my_rank; /* rank of the process in this communicator */ struct mpi_process_info_t *p_process; }; /* return 1 if comm1==comm2 */ static __attribute__ ((unused)) int __ezt_mpi_communicator_are_equal(struct ezt_mpi_comm *comm1, struct ezt_mpi_comm *comm2){ if(comm1 == comm2) return 1; if(comm1->comm_size != comm2->comm_size) return 0; /* compare each rank */ int i; for(i=0; icomm_size; i++) { if(comm1->ranks[i] != comm2->ranks[i]) { return 0; } } /* the communicators have the same size and the ranks match */ return 1; } typedef enum { MPI_SEND_ID , MPI_RECV_ID , MPI_BSEND_ID , MPI_SSEND_ID , MPI_RSEND_ID , MPI_ISEND_ID , MPI_IBSEND_ID , MPI_ISSEND_ID , MPI_IRSEND_ID , MPI_IRECV_ID , MPI_SENDRECV_ID , MPI_SENDRECV_REPLACE_ID , MPI_START_ID , MPI_STARTALL_ID , MPI_WAIT_ID , MPI_TEST_ID , MPI_WAITANY_ID , MPI_TESTANY_ID , MPI_WAITALL_ID , MPI_TESTALL_ID , MPI_WAITSOME_ID , MPI_TESTSOME_ID , MPI_PROBE_ID , MPI_IPROBE_ID , MPI_BARRIER_ID , MPI_BCAST_ID , MPI_GATHER_ID , MPI_GATHERV_ID , MPI_SCATTER_ID , MPI_SCATTERV_ID , MPI_ALLGATHER_ID , MPI_ALLGATHERV_ID , MPI_ALLTOALL_ID , MPI_ALLTOALLV_ID , MPI_REDUCE_ID , MPI_ALLREDUCE_ID , MPI_REDUCE_SCATTER_ID , MPI_SCAN_ID , MPI_IBARRIER_ID , MPI_IBCAST_ID , MPI_IGATHER_ID , MPI_IGATHERV_ID , MPI_ISCATTER_ID , MPI_ISCATTERV_ID , MPI_IALLGATHER_ID , MPI_IALLGATHERV_ID , MPI_IALLTOALL_ID , MPI_IALLTOALLV_ID , MPI_IREDUCE_ID , MPI_IALLREDUCE_ID , MPI_IREDUCE_SCATTER_ID , MPI_ISCAN_ID , MPI_GET_ID , MPI_PUT_ID , MPI_ID_SIZE } MPI_id_t; /* MPI information on each thread */ struct mpi_thread_info_t { struct thread_info_t *p_thread; unsigned nb_mpi_calls[MPI_ID_SIZE]; double total_time_mpi_calls[MPI_ID_SIZE]; double enter_date_mpi_calls[MPI_ID_SIZE]; /* timestamp when the thread entered an MPI function */ double leave_date_mpi_calls[MPI_ID_SIZE]; /* timestamp when the thread left an MPI function */ }; /* Each process has a list of pending isend/irecv */ struct mpi_process_info_t { struct ezt_list_t pending_comm[comm_type_max]; struct process_info_t *p_process; struct ezt_list_t communicators; struct ezt_list_t deleted_communicators; int __MPI_ANY_SOURCE; /* Value of MPI_ANY_SOURCE */ uint32_t __MPI_ANY_TAG; /* Value of MPI_ANY_TAG */ app_ptr __MPI_REQUEST_NULL; /* value of MPI_REQUEST_NULL */ int __MPI_PROC_NULL; /*Value of MPI_PROC_NULL */ struct ezt_mpi_comm __MPI_COMM_WORLD; /* value of MPI_COMM_WORLD */ struct ezt_mpi_comm __MPI_COMM_SELF; /* value of MPI_COMM_SELF */ }; /* todo: remove this struct */ union mpi_msg { struct { enum { mpi_p2p_msg_send, mpi_p2p_msg_recv } p2p_type; } p2p; struct { enum { mpi_coll_msg_barrier, mpi_coll_msg_bcast /* todo: add other kinds of collective operations */ } coll_type; } coll; }; enum mpi_request_type{ mpi_req_none, mpi_req_send, mpi_req_coll, mpi_req_recv }; enum mpi_request_status { mpi_req_status_none, mpi_req_status_pending }; struct mpi_request { app_ptr ptr; struct eztrace_container_t* container; enum mpi_request_type req_type; struct mpi_p2p_msg_t *msg; struct mpi_coll_msg_t *coll_msg; enum mpi_request_status status; }; enum p2p_time_ids { start_isend = 0, stop_isend = 1, start_swait = 2, stop_send = 3, start_irecv = 4, stop_irecv = 5, start_rwait = 6, stop_recv = 7, P2P_NB_TIMES }; struct mpi_p2p_msg_t { char*id; int src; int dest; int len; uint32_t tag; int unexp; /* set to 1 if the recv is detected before the send */ uint64_t times[P2P_NB_TIMES]; char* link_value; const char* sender_thread_id; const struct mpi_request* sender_request; const char* recver_thread_id; const struct mpi_request* recver_request; }; enum coll_type_t { mpi_coll_barrier, mpi_coll_bcast, mpi_coll_gather, mpi_coll_scatter, mpi_coll_allgather, mpi_coll_alltoall, mpi_coll_reduce, mpi_coll_allreduce, mpi_coll_reduce_scatter, mpi_coll_scan, mpi_coll_type_max, /* todo: add other kinds of collective operations */ }; #define COLL_TYPE_STR(coll_type) \ (coll_type) == mpi_coll_barrier? "MPI_Barrier": \ (coll_type) == mpi_coll_bcast ? "MPI_Bcast": \ (coll_type) == mpi_coll_gather ? "MPI_Gather": \ (coll_type) == mpi_coll_scatter ? "MPI_Scatter": \ (coll_type) == mpi_coll_allgather ? "MPI_Allgather": \ (coll_type) == mpi_coll_alltoall ? "MPI_Alltoall": \ (coll_type) == mpi_coll_reduce ? "MPI_Reduce": \ (coll_type) == mpi_coll_allreduce ? "MPI_Allreduce": \ (coll_type) == mpi_coll_reduce_scatter ? "MPI_Reduce_scatter": \ (coll_type) == mpi_coll_scan ? "MPI_Scan": \ "MPI_INVALID_COLLECTIV" enum coll_time_ids { start_coll = 0, stop_coll = 2, COLL_NB_TIMES }; struct mpi_coll_msg_t { enum coll_type_t type; uint64_t** times; int data_size; int comm_size; int nb_started; struct ezt_mpi_comm **comm; char***link_id; char*** link_value; int unexp; /* todo: useless ? */ char** thread_ids; struct mpi_request **requests; int root_process; }; /* This structure contains information about a MPI message in the global view (ie. it is valid no matter which process acces it) */ /* todo: cleanup this mess. some fields are only used for p2p messages ! */ struct mpi_msg_t { char* id; enum MPI_MSG_TYPE msg_type; union mpi_msg msg; int src; int dest; int len; int unexp; /* set to 1 if the recv is detected before the send */ uint32_t tag; uint64_t send_time; uint64_t recv_time; uint64_t start_wait_time; char* link_value; char* threadstr; }; /* This structure contains information about a MPI_COMM_SPAWN */ struct mpi_spawn_t { int nb_children; /* number of processes spawned */ uint64_t start_time; /* date at which MPI_COMM_SPAWN was invoked */ int ppid; /* parent process id */ struct trace_t *parent_trace; }; /* This structure contains information on a persistent request */ struct mpi_pers_req_t { int process_id; enum mpi_request_type type; app_ptr buffer; int len; int src; int dest; uint32_t tag; struct mpi_request* mpi_req; }; /* This structure contains informations on a MPI request. * it is only valid for one process (cf the rank field) */ struct __mpi_request_t { struct mpi_msg_t *msg; /* pointer to the message corresponding to this request */ union mpi_msg type; app_ptr req; /* address of the request in the MPI process */ int rank; /* the rank of the MPI process that uses this req */ }; /* This structure contains relevant informations used in the * communication matrix */ struct comm_info { int nb; int src; int dest; uint64_t size; }; struct message_size { int nb; int size; }; /* generate a MPI message id */ #define CREATE_P2P_MSG_ID(msg) \ {int __attribute__((unused)) ret = asprintf(&msg->id, "%d_%d_%20u_%p", msg->src, msg->dest, msg->tag, msg);} /* generate the value of a p2p link */ #define CREATE_P2P_LINK_VALUE(msg) \ { int __attribute__((unused)) ret = asprintf(&(msg)->link_value, "src=%d, dest=%d, len=%d, tag=%x", \ (msg)->src, (msg)->dest, (msg)->len, (msg)->tag);} /* generate the value of a coll link */ #define CREATE_COLL_MSG_ID(_msg_, _src_, _dest_) \ { int __attribute__((unused)) ret = asprintf(&(msg)->link_id[_src_][_dest_], "%d_%d_%p", _src_, _dest_, _msg_); } #define CREATE_COLL_LINK_VALUE(_str_, _src_, _dest_) \ { int __attribute__((unused))ret = asprintf(&(_str_)->link_value[_src_][_dest_], "src=%d, dest=%d", \ _src_, _dest_); } static inline struct comm_info *__create_comm_info(int src, int dest, int size, int nb) { struct comm_info *msg = (struct comm_info*) malloc(sizeof(struct comm_info)); msg->src = src; msg->dest = dest; msg->size = size; msg->nb = nb; return msg; } static inline struct message_size *__create_message_size(int size, int nb) { struct message_size *msg = (struct message_size*) malloc( sizeof(struct message_size)); msg->size = size; msg->nb = nb; return msg; } /* attach process-specific data to a process when it's created */ static struct mpi_process_info_t* __register_process_hook( struct process_info_t* p_process) { struct mpi_process_info_t *p_info = (struct mpi_process_info_t*) malloc( sizeof(struct mpi_process_info_t)); p_info->p_process = p_process; int i; for (i = 0; i < comm_type_max; i++) ezt_list_new(&p_info->pending_comm[i]); p_info->__MPI_ANY_SOURCE = -1; /* Value of MPI_ANY_SOURCE */ p_info->__MPI_ANY_TAG = -1; /* Value of MPI_ANY_TAG */ p_info->__MPI_REQUEST_NULL = (app_ptr) -1; /* value of MPI_REQUEST_NULL */ p_info->__MPI_COMM_WORLD.comm_id = (app_ptr) -1; /* value of MPI_COMM_WORLD */ p_info->__MPI_COMM_SELF.comm_id = (app_ptr) -1; /* value of MPI_COMM_SELF */ /* add the hook in the thread info structure */ ezt_hook_list_add(&p_info->p_process->hooks, p_info, (uint8_t) EZTRACE_MPI_EVENTS_ID); return p_info; } /* attach thread-specific data to a thread when it's created */ static struct mpi_thread_info_t* __register_thread_hook( struct thread_info_t* p_thread) { struct mpi_thread_info_t *p_info = (struct mpi_thread_info_t*) malloc( sizeof(struct mpi_thread_info_t)); p_info->p_thread = p_thread; int i; for(i=0; inb_mpi_calls[i] = 0; p_info->total_time_mpi_calls[i] = 0; p_info->enter_date_mpi_calls[i] = -1; p_info->leave_date_mpi_calls[i] = -1; } /* add the hook in the thread info structure */ ezt_hook_list_add(&p_info->p_thread->hooks, p_info, (uint8_t) EZTRACE_MPI_EVENTS_ID); return p_info; } #define INIT_MPI_PROCESS_INFO(p_process, var) \ struct mpi_process_info_t *var = (struct mpi_process_info_t*) \ ezt_hook_list_retrieve_data(&p_process->hooks, (uint8_t)EZTRACE_MPI_EVENTS_ID); \ if(!(var)) { \ var = __register_process_hook(p_process); \ } #define INIT_MPI_THREAD_INFO(p_thread, var) \ struct mpi_thread_info_t *var = (struct mpi_thread_info_t*) \ ezt_hook_list_retrieve_data(&p_thread->hooks, (uint8_t)EZTRACE_MPI_EVENTS_ID); \ if(!(var)) { \ var = __register_thread_hook(p_thread); \ } static inline int ezt_get_global_rank_generic(int trace_id, app_ptr comm, int local_rank) { INIT_MPI_PROCESS_INFO(GET_PROCESS_INFO(trace_id), p_info); if (p_info->__MPI_COMM_WORLD.comm_id == comm) return local_rank; if (p_info->__MPI_COMM_SELF.comm_id == comm) return trace_id; /* the communicator in use isn't MPI_COMM_WORLD, * let's browse the list */ struct ezt_list_token_t *token; ezt_list_foreach(&p_info->communicators, token) { struct ezt_mpi_comm* p_comm = (struct ezt_mpi_comm*) token->data; assert(p_comm); if (p_comm->comm_id == comm) { /* we found the communicator ! */ assert(p_comm->comm_size > local_rank); return p_comm->ranks[local_rank]; } } return -1; } static inline int ezt_get_global_rank(struct ezt_mpi_comm *comm, int local_rank) { return ezt_get_global_rank_generic( comm->p_process->p_process->container->p_trace->id, comm->comm_id, local_rank); } extern int *rank_to_trace_id; #define EZT_RANK_TO_TRACE_ID(rank) (rank_to_trace_id[rank]) int is_comm_mine(int global_rank, struct ezt_mpi_comm*comm); #define IS_TIME_SET(t) ((t)!=UINT64_MAX) #define TIME_INIT UINT64_MAX #endif /* EZTRACE_CONVERT_MPI_H */ eztrace-1.1-7/src/modules/mpi/PaxHeaders.7332/mpi_f.f900000644000000000000000000000013213012560437017266 xustar0030 mtime=1479205151.284727238 30 atime=1508162330.650706111 30 ctime=1508162368.021932471 eztrace-1.1-7/src/modules/mpi/mpi_f.f900000644000175000017500000002011313012560437020452 0ustar00trahaytrahay00000000000000! Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis ! See COPYING in top-level directory. subroutine MPI_COMM_SPAWN(CMD, ARGV, M, I, R, C, INTERCOMM, A, E) call MPIF_COMM_SPAWN(CMD, ARGV, M, I, R, C, INTERCOMM, A, E) return end subroutine MPI_INIT(error) call MPIF_INIT(error) return end subroutine MPI_Init_thread(REQUIRED, PROVIDED, IERROR) call MPIF_Init_thread(REQUIRED, PROVIDED, IERROR) return end subroutine MPI_Finalize(IERROR) call MPIF_Finalize(IERROR) return end subroutine MPI_Barrier(COMM, IERROR) call MPIF_Barrier(COMM, IERROR) return end subroutine MPI_Comm_size(COMM, SIZE, IERROR) call MPIF_Comm_size(COMM, SIZE, IERROR) return end subroutine MPI_Comm_rank(COMM, RANK, IERROR) call MPIF_Comm_rank(COMM, RANK, IERROR) return end subroutine MPI_Comm_create(COMM, GROUP, NEWCOMM, IERROR) call MPIF_Comm_create(COMM, GROUP, NEWCOMM, IERROR) return end subroutine MPI_Comm_create_group(COMM, GROUP, TAG, NEWCOMM, IERROR) call MPIF_Comm_create_group(COMM, GROUP, TAG, NEWCOMM, IERROR) return end subroutine MPI_Comm_split(COMM, COLOR, KEY, NEWCOMM, IERROR) call MPIF_Comm_split(COMM, COLOR, KEY, NEWCOMM, IERROR) return end subroutine MPI_Comm_dup(COMM, NEWCOMM, IERROR) call MPIF_Comm_dup(COMM, NEWCOMM, IERROR) return end subroutine MPI_Comm_dup_with_info(COMM, info, NEWCOMM, IERROR) call MPIF_Comm_dup_with_info(COMM, info, NEWCOMM, IERROR) return end subroutine MPI_COMM_SPLIT_TYPE(COMM, SPLIT_TYPE, KEY, INFO, NEWCOMM, IERROR) call MPIF_COMM_SPLIT_TYPE(COMM, SPLIT_TYPE, KEY, INFO, NEWCOMM, IERROR) return end subroutine MPI_Intercomm_create(LOCAL_COMM, LOCAL_LEADER, PEER_COMM, REMOTE_LEADER, TAG, NEWINTERCOMM, IERROR) call MPIF_Intercomm_create(LOCAL_COMM, LOCAL_LEADER, PEER_COMM, REMOTE_LEADER, TAG, NEWINTERCOMM, IERROR) return end subroutine MPI_INTERCOMM_MERGE(INTERCOMM, HIGH, NEWINTRACOMM, IERROR) call MPIF_INTERCOMM_MERGE(INTERCOMM, HIGH, NEWINTRACOMM, IERROR) return end subroutine MPI_CART_SUB(COMM, REMAIN_DIMS, COMM_NEW, IERROR) call MPIF_CART_SUB(COMM, REMAIN_DIMS, COMM_NEW, IERROR) return end subroutine MPI_CART_CREATE(COMM_OLD, NDIMS, DIMS, PERIODS, REORDER, COMM_CART, IERROR) call MPIF_CART_CREATE(COMM_OLD, NDIMS, DIMS, PERIODS, REORDER, COMM_CART, IERROR) return end subroutine MPI_GRAPH_CREATE(COMM_OLD, NNODES, INDEX, EDGES, REORDER, COMM_GRAPH, IERROR) call MPIF_GRAPH_CREATE(COMM_OLD, NNODES, INDEX, EDGES, REORDER, COMM_GRAPH, IERROR) return end subroutine MPI_DIST_GRAPH_CREATE(COMM_OLD, N, SOURCES, DEGREES, DESTINATIONS, WEIGHTS,& INFO, REORDER, COMM_DIST_GRAPH, IERROR) call MPIF_DIST_GRAPH_CREATE(COMM_OLD, N, SOURCES, DEGREES, DESTINATIONS, WEIGHTS,& INFO, REORDER, COMM_DIST_GRAPH, IERROR) return end subroutine MPI_DIST_GRAPH_CREATE_ADJACENT(COMM_OLD, INDEGREE, SOURCES, SOURCEWEIGHTS, & OUTDEGREE, DESTINATIONS, DESTWEIGHTS, INFO, REORDER, COMM_DIST_GRAPH, IERROR) call MPIF_DIST_GRAPH_CREATE_ADJACENT(COMM_OLD, INDEGREE, SOURCES, SOURCEWEIGHTS, & OUTDEGREE, DESTINATIONS, DESTWEIGHTS, INFO, REORDER, COMM_DIST_GRAPH, IERROR) return end subroutine MPI_Send(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR) call MPIF_Send(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR) return end subroutine MPI_Recv(BUF, COUNT, D, SRC, TAG, COMM, STATUS, IERROR) call MPIF_Recv(BUF, COUNT, D, SRC, TAG, COMM, STATUS, IERROR) return end subroutine MPI_Sendrecv(SBUF, SCOUNT, STYPE, DST, STAG, RBUF, RCOUNT, RTYPE, SRC, RTAG, COMM, STATUS, ERROR) call MPIF_Sendrecv(SBUF, SCOUNT, STYPE, DST, STAG, RBUF, RCOUNT, RTYPE, SRC, RTAG, COMM, STATUS, ERROR) return end subroutine MPI_Sendecv_replace(BUF, COUNT, TYPE, DST, STAG, SRC, RTAG, COMM, STATUS, ERROR) call MPIF_Sendrecv_replace(BUF, COUNT, TYPE, DST, STAG, SRC, RTAG, COMM, STATUS, ERROR) return end subroutine MPI_Bsend(BUF, COUNT,DATATYPE, DEST, TAG, COMM, IERROR) call MPIF_Bsend(BUF, COUNT,DATATYPE, DEST, TAG, COMM, IERROR) return end subroutine MPI_Ssend(BUF, COUNT, D, DEST, TAG, COMM, IERROR) call MPIF_Ssend(BUF, COUNT, D, DEST, TAG, COMM, IERROR) return end subroutine MPI_Rsend(BUF, COUNT, D, DEST, TAG, COMM, IERROR) call MPIF_Rsend(BUF, COUNT, D, DEST, TAG, COMM, IERROR) return end subroutine MPI_Isend(BUF, COUNT, D, DST, TAG, COMM, REQ, IERROR) call MPIF_Isend(BUF, COUNT, D, DST, TAG, COMM, REQ, IERROR) return end subroutine MPI_Ibsend(BUF, COUNT, D, DST, TAG, COMM, REQ, IERROR) call MPIF_Ibsend(BUF, COUNT, D, DST, TAG, COMM, REQ, IERROR) return end subroutine MPI_Issend(BUF, COUNT, D, DST, TAG, COMM, REQ, IERROR) call MPIF_Issend(BUF, COUNT, D, DST, TAG, COMM, REQ, IERROR) return end subroutine MPI_Irsend(BUF, COUNT, D, DST, TAG, COMM, REQ, IERROR) call MPIF_Irsend(BUF, COUNT, D, DST, TAG, COMM, REQ, IERROR) return end subroutine MPI_Irecv(B, CNT, D, SRC, TAG, COMM, REQ, IERROR) call MPIF_Irecv(B, CNT, D, SRC, TAG, COMM, REQ, IERROR) return end subroutine MPI_Wait(REQUEST, STATUS, IERROR) call MPIF_Wait(REQUEST, STATUS, IERROR) return end subroutine MPI_WAITALL(COUNT, R, S, IERROR) call MPIF_Waitall(COUNT, R, S, IERROR) return end subroutine MPI_WAITANY(COUNT, R, S, INDEX, IERROR) call MPIF_Waitany(COUNT, R, S, INDEX, IERROR) return end subroutine MPI_WAITSOME(IC, R, OC, INDEX, S, IERROR) call MPIF_Waitsome(IC, R, OC, INDEX, S, IERROR) return end subroutine MPI_TESTSOME(IC, R, OC, INDEX, S, IERROR) call MPIF_Testsome(IC, R, OC, INDEX, S, IERROR) return end subroutine MPI_PROBE(S, T, C, STAT, IERROR) call MPIF_PROBE(S, T, C, STAT, IERROR) return end subroutine MPI_IPROBE(S, T, C, FLAG, STAT, IERROR) call MPIF_IPROBE(S, T, C, FLAG, STAT, IERROR) return end subroutine MPI_Test(REQUEST, FLAG, STATUS, IERROR) call MPIF_Test(REQUEST, FLAG, STATUS, IERROR) return end subroutine MPI_Testall(C, REQUEST, INDEX, STATUS, IERROR) call MPIF_Testall(C, REQUEST, INDEX, STATUS, IERROR) return end subroutine MPI_Testany(C, REQUEST, INDEX, F, STATUS, IERROR) call MPIF_Testany(C, REQUEST, INDEX, F, STATUS, IERROR) return end subroutine MPI_Get(O_A, O_C, O_D, T_R, T_DS, T_C, T_D, W, ERROR) call MPIF_Get(O_A, O_C, O_D, T_R, T_DS, T_C, T_D, W, ERROR) return end subroutine MPI_Put(O_A, O_C, O_D, T_R, T_DS, T_C, T_D, W, ERROR) call MPIF_Put(O_A, O_C, O_D, T_R, T_DS, T_C, T_D, W, ERROR) return end subroutine MPI_BCast(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR) call MPIF_BCast(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR) return end subroutine MPI_Gather(SBUF,SCNT,STYPE,RBUF,RCNT, RTYPE, R, C, E) call MPIF_Gather(SBUF, SCNT, STYPE, RBUF, RCNT, RTYPE, R, C, E) return end subroutine MPI_Gatherv(SBUF,SCNT,STYPE,RBUF,RCNT,DSP,RTYPE,R,C,E) call MPIF_Gatherv(SBUF,SCNT,STYPE,RBUF,RCNT,DSP,RTYPE,R,C,E) return end subroutine MPI_Scatter(SBUF,SCNT,STYPE,RBUF,RCNT,RTYPE,R,C,E) call MPIF_Scatter(SBUF, SCNT, STYPE, RBUF, RCNT, RTYPE, R, C, E) return end subroutine MPI_Scatterv(SBUF,SCNT,DSP,SDTYP,RBUF,RCNT,RTYP,R,C,E) call MPIF_Scatterv(SBUF,SCNT,DSP,SDTYP,RBUF, RCNT, RTYP, R, C, E) return end subroutine MPI_Allgather(SBUF, SCNT, STYP, RBUF, RCNT, RTYP, C, E) call MPIF_Allgather(SBUF, SCNT, STYP, RBUF, RCNT, RTYP, C, E) return end subroutine MPI_Allgatherv(SB, SC, ST, RB, RC, D, RT, C, IERROR) call MPIF_Allgatherv(SB, SC, ST, RB, RC, D, RT, C, IERROR) return end subroutine MPI_Alltoall(SB, SC, ST, RB, RC, RT, COMM, IERROR) call MPIF_Alltoall(SB, SC, ST, RB, RC, RT, COMM, IERROR) return end subroutine MPI_Alltoallv(SB, SC, SD, ST, RB, RC, RD, RT, C, ERROR) call MPIF_Alltoallv(SB, SC, SD, ST, RB, RC, RD, RT, C, ERROR) return end subroutine MPI_Reduce(SBUF, RBUF, CNT, D, OP, ROOT, COMM, IERROR) call MPIF_Reduce(SBUF, RBUF, CNT, D, OP, ROOT, COMM, IERROR) return end subroutine MPI_Allreduce(SBUF, RBUF, CNT, D, OP, COMM, IERROR) call MPIF_Allreduce(SBUF, RBUF, CNT, D, OP, COMM, IERROR) return end subroutine MPI_Reduce_scatter(SBUF, RBUF, RCNT, D, OP, C, IERROR) call MPIF_Reduce_scatter(SBUF, RBUF, RCNT, D, OP, C, IERROR) return end subroutine MPI_Scan(SBUF, RBUF, CNT, D, OP, COMM, IERROR) call MPIF_Scan(SBUF, RBUF, CNT, D, OP, COMM, IERROR) return end subroutine MPI_Scan subroutine MPI_CANCEL(REQUEST, IERROR) call MPIF_Cancel(REQUEST, IERROR) return end subroutine MPI_CANCEL subroutine MPI_TYPE_SIZE(TYPE, SIZE, IERROR) call MPIF_TYPE_SIZE(TYPE, SIZE, IERROR) return end subroutine MPI_TYPE_SIZE eztrace-1.1-7/src/modules/PaxHeaders.7332/stdio0000644000000000000000000000013213171135500016127 xustar0030 mtime=1508162368.281955192 30 atime=1508162372.166294941 30 ctime=1508162368.281955192 eztrace-1.1-7/src/modules/stdio/0000755000175000017500000000000013171135500017373 5ustar00trahaytrahay00000000000000eztrace-1.1-7/src/modules/stdio/PaxHeaders.7332/eztrace_convert_stdio.c0000644000000000000000000000013213143047722022756 xustar0030 mtime=1502367698.672456313 30 atime=1508138915.408905226 30 ctime=1508162368.281955192 eztrace-1.1-7/src/modules/stdio/eztrace_convert_stdio.c0000644000175000017500000001221613143047722024147 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE #include #include #include "eztrace_convert.h" #include "stdio_ev_codes.h" #include "eztrace_list.h" static int recording_stats = 0; #define STDIO_CHANGE() if(!recording_stats) CHANGE() #define TOSTRING(x) #x #define GENERATE_HANDLER(fname) \ void handle_stdio_##fname (int start) \ { \ FUNC_NAME; \ DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); \ if(start) { \ STDIO_CHANGE() pushState(CURRENT, "ST_Thread", thread_id, TOSTRING(stdio_##fname)); \ }else{ \ STDIO_CHANGE() popState(CURRENT, "ST_Thread", thread_id); \ } \ } GENERATE_HANDLER(read) GENERATE_HANDLER(pread) GENERATE_HANDLER(readv) GENERATE_HANDLER(fread) GENERATE_HANDLER(write) GENERATE_HANDLER(pwrite) GENERATE_HANDLER(writev) GENERATE_HANDLER(fwrite) GENERATE_HANDLER(select) GENERATE_HANDLER(pselect) GENERATE_HANDLER(lseek) GENERATE_HANDLER(poll) GENERATE_HANDLER(ppoll) int eztrace_convert_stdio_init() { if (get_mode() == EZTRACE_CONVERT) { addEntityValue("stdio_read", "ST_Thread", "stdio_read", GTG_BLACK); addEntityValue("stdio_pread", "ST_Thread", "stdio_pread", GTG_BLACK); addEntityValue("stdio_readv", "ST_Thread", "stdio_readv", GTG_BLACK); addEntityValue("stdio_fread", "ST_Thread", "stdio_fread", GTG_BLACK); addEntityValue("stdio_write", "ST_Thread", "stdio_write", GTG_BLACK); addEntityValue("stdio_pwrite", "ST_Thread", "stdio_pwrite", GTG_BLACK); addEntityValue("stdio_writev", "ST_Thread", "stdio_writev", GTG_BLACK); addEntityValue("stdio_fwrite", "ST_Thread", "stdio_fwrite", GTG_BLACK); addEntityValue("stdio_select", "ST_Thread", "stdio_select", GTG_BLACK); addEntityValue("stdio_pselect", "ST_Thread", "stdio_pselect", GTG_BLACK); addEntityValue("stdio_lseek", "ST_Thread", "stdio_lseek", GTG_BLACK); addEntityValue("stdio_poll", "ST_Thread", "stdio_poll", GTG_BLACK); addEntityValue("stdio_ppoll", "ST_Thread", "stdio_ppoll", GTG_BLACK); } return 0; } /* return 1 if the event was handled */ int handle_stdio_events(eztrace_event_t *ev) { if (!STARTED) return 0; switch (LITL_READ_GET_CODE(ev)) { case EZTRACE_STDIO_READ_START: handle_stdio_read(1); break; case EZTRACE_STDIO_PREAD_START: handle_stdio_pread(1); break; case EZTRACE_STDIO_READV_START: handle_stdio_readv(1); break; case EZTRACE_STDIO_FREAD_START: handle_stdio_fread(1); break; case EZTRACE_STDIO_WRITE_START: handle_stdio_write(1); break; case EZTRACE_STDIO_PWRITE_START: handle_stdio_pwrite(1); break; case EZTRACE_STDIO_WRITEV_START: handle_stdio_writev(1); break; case EZTRACE_STDIO_FWRITE_START: handle_stdio_fwrite(1); break; case EZTRACE_STDIO_SELECT_START: handle_stdio_select(1); break; case EZTRACE_STDIO_PSELECT_START: handle_stdio_pselect(1); break; case EZTRACE_STDIO_LSEEK_START: handle_stdio_lseek(1); break; case EZTRACE_STDIO_POLL_START: handle_stdio_poll(1); break; case EZTRACE_STDIO_PPOLL_START: handle_stdio_ppoll(1); break; case EZTRACE_STDIO_READ_STOP: handle_stdio_read(0); break; case EZTRACE_STDIO_PREAD_STOP: handle_stdio_pread(0); break; case EZTRACE_STDIO_READV_STOP: handle_stdio_readv(0); break; case EZTRACE_STDIO_FREAD_STOP: handle_stdio_fread(0); break; case EZTRACE_STDIO_WRITE_STOP: handle_stdio_write(0); break; case EZTRACE_STDIO_PWRITE_STOP: handle_stdio_pwrite(0); break; case EZTRACE_STDIO_WRITEV_STOP: handle_stdio_writev(0); break; case EZTRACE_STDIO_FWRITE_STOP: handle_stdio_fwrite(0); break; case EZTRACE_STDIO_SELECT_STOP: handle_stdio_select(0); break; case EZTRACE_STDIO_PSELECT_STOP: handle_stdio_pselect(0); break; case EZTRACE_STDIO_LSEEK_STOP: handle_stdio_lseek(0); break; case EZTRACE_STDIO_POLL_STOP: handle_stdio_poll(0); break; case EZTRACE_STDIO_PPOLL_STOP: handle_stdio_ppoll(0); break; default: return 0; } return 1; } int handle_stdio_stats(eztrace_event_t *ev) { recording_stats = 1; return handle_stdio_events(ev); } void print_stdio_stats() { printf("\nSTDIO:\n"); printf("-------\n"); } struct eztrace_convert_module stdio_module; void libinit(void) __attribute__ ((constructor)); void libinit(void) { stdio_module.api_version = EZTRACE_API_VERSION; stdio_module.init = eztrace_convert_stdio_init; stdio_module.handle = handle_stdio_events; stdio_module.handle_stats = handle_stdio_stats; stdio_module.print_stats = print_stdio_stats; stdio_module.module_prefix = EZTRACE_STDIO_EVENTS_ID; int res __attribute__ ((__unused__)); res = asprintf(&stdio_module.name, "stdio"); res = asprintf( &stdio_module.description, "Module for stdio functions (read, write, select, poll, etc.)"); stdio_module.token.data = &stdio_module; eztrace_convert_register_module(&stdio_module); } void libfinalize(void) __attribute__ ((destructor)); void libfinalize(void) { } eztrace-1.1-7/src/modules/stdio/PaxHeaders.7332/stdio_ev_codes.h0000644000000000000000000000013213143047722021355 xustar0030 mtime=1502367698.676456411 30 atime=1508138915.384904628 30 ctime=1508162368.277954843 eztrace-1.1-7/src/modules/stdio/stdio_ev_codes.h0000644000175000017500000000424313143047722022547 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef __STDIO_EV_CODES_H__ #define __STDIO_EV_CODES_H__ #include "ev_codes.h" #define EZTRACE_STDIO_EVENTS_ID SYSTEM_MODULE_ID(0x03) #define EZTRACE_STDIO_PREFIX GENERATE_SYSTEM_MODULE_PREFIX(EZTRACE_STDIO_EVENTS_ID) #define EZTRACE_STDIO_READ_START (EZTRACE_STDIO_PREFIX | 0X0110) #define EZTRACE_STDIO_PREAD_START (EZTRACE_STDIO_PREFIX | 0X0120) #define EZTRACE_STDIO_READV_START (EZTRACE_STDIO_PREFIX | 0X0130) #define EZTRACE_STDIO_FREAD_START (EZTRACE_STDIO_PREFIX | 0X0140) #define EZTRACE_STDIO_WRITE_START (EZTRACE_STDIO_PREFIX | 0X0210) #define EZTRACE_STDIO_PWRITE_START (EZTRACE_STDIO_PREFIX | 0X0220) #define EZTRACE_STDIO_WRITEV_START (EZTRACE_STDIO_PREFIX | 0X0230) #define EZTRACE_STDIO_FWRITE_START (EZTRACE_STDIO_PREFIX | 0X0240) #define EZTRACE_STDIO_SELECT_START (EZTRACE_STDIO_PREFIX | 0X0310) #define EZTRACE_STDIO_PSELECT_START (EZTRACE_STDIO_PREFIX | 0X0320) #define EZTRACE_STDIO_LSEEK_START (EZTRACE_STDIO_PREFIX | 0X0330) #define EZTRACE_STDIO_POLL_START (EZTRACE_STDIO_PREFIX | 0X0340) #define EZTRACE_STDIO_PPOLL_START (EZTRACE_STDIO_PREFIX | 0X0350) #define EZTRACE_STDIO_READ_STOP (EZTRACE_STDIO_PREFIX | 0X0111) #define EZTRACE_STDIO_PREAD_STOP (EZTRACE_STDIO_PREFIX | 0X0121) #define EZTRACE_STDIO_READV_STOP (EZTRACE_STDIO_PREFIX | 0X0131) #define EZTRACE_STDIO_FREAD_STOP (EZTRACE_STDIO_PREFIX | 0X0141) #define EZTRACE_STDIO_WRITE_STOP (EZTRACE_STDIO_PREFIX | 0X0211) #define EZTRACE_STDIO_PWRITE_STOP (EZTRACE_STDIO_PREFIX | 0X0221) #define EZTRACE_STDIO_WRITEV_STOP (EZTRACE_STDIO_PREFIX | 0X0231) #define EZTRACE_STDIO_FWRITE_STOP (EZTRACE_STDIO_PREFIX | 0X0241) #define EZTRACE_STDIO_SELECT_STOP (EZTRACE_STDIO_PREFIX | 0X0311) #define EZTRACE_STDIO_PSELECT_STOP (EZTRACE_STDIO_PREFIX | 0X0321) #define EZTRACE_STDIO_LSEEK_STOP (EZTRACE_STDIO_PREFIX | 0X0331) #define EZTRACE_STDIO_POLL_STOP (EZTRACE_STDIO_PREFIX | 0X0341) #define EZTRACE_STDIO_PPOLL_STOP (EZTRACE_STDIO_PREFIX | 0X0351) #endif /* __STDIO_EV_CODES_H__ */ eztrace-1.1-7/src/modules/stdio/PaxHeaders.7332/stdio.c0000644000000000000000000000013213143047722017501 xustar0030 mtime=1502367698.676456411 30 atime=1508138915.364904127 30 ctime=1508162368.281955192 eztrace-1.1-7/src/modules/stdio/stdio.c0000644000175000017500000001650313143047722020675 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 /* or _BSD_SOURCE or _SVID_SOURCE */ #define _REENTRANT #include #include #include #include #include #include #include #include #include "stdio_ev_codes.h" #include "eztrace.h" #include "pptrace.h" /* set to 1 when all the hooks are set. * This is usefull in order to avoid recursive calls */ static int __stdio_initialized = 0; ssize_t (*libread)(int fd, void *buf, size_t count); ssize_t read(int fd, void *buf, size_t count) { FUNCTION_ENTRY; INTERCEPT("read", libread); EZTRACE_EVENT_PACKED_3(EZTRACE_STDIO_READ_START, fd, buf, count); ssize_t ret = libread(fd, buf, count); EZTRACE_EVENT_PACKED_3(EZTRACE_STDIO_READ_STOP, fd, buf, count); return ret; } ssize_t (*libwrite)(int fd, const void *buf, size_t count); ssize_t write(int fd, const void *buf, size_t count) { FUNCTION_ENTRY; INTERCEPT("write", libwrite); EZTRACE_EVENT_PACKED_3(EZTRACE_STDIO_WRITE_START, fd, buf, count); ssize_t ret = libwrite(fd, buf, count); EZTRACE_EVENT_PACKED_3(EZTRACE_STDIO_WRITE_STOP, fd, buf, count); return ret; } /* pointers to actual stdio functions */ ssize_t (*libpread)(int fd, void *buf, size_t count, off_t offset); ssize_t (*libpwrite)(int fd, const void *buf, size_t count, off_t offset); ssize_t (*libreadv)(int fd, const struct iovec *iov, int iovcnt); ssize_t (*libwritev)(int fd, const struct iovec *iov, int iovcnt); size_t (*libfread)(void *ptr, size_t size, size_t nmemb, FILE *stream); size_t (*libfwrite)(const void *ptr, size_t size, size_t nmemb, FILE *stream); off_t (*liblseek)(int fd, off_t offset, int whence); int (*libselect)(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); int (*libpselect)(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timespec *timeout, const sigset_t *sigmask); int (*libpoll)(struct pollfd *fds, nfds_t nfds, int timeout); int (*libppoll)(struct pollfd *fds, nfds_t nfds, const struct timespec *timeout, const sigset_t *sigmask); ssize_t pread(int fd, void *buf, size_t count, off_t offset) { FUNCTION_ENTRY; INTERCEPT("pread", libpread); EZTRACE_EVENT_PACKED_4(EZTRACE_STDIO_PREAD_START, fd, buf, count, offset); ssize_t ret = libpread(fd, buf, count, offset); EZTRACE_EVENT_PACKED_4(EZTRACE_STDIO_PREAD_STOP, fd, buf, count, offset); return ret; } ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset) { FUNCTION_ENTRY; INTERCEPT("pwrite", libpwrite); EZTRACE_EVENT_PACKED_4(EZTRACE_STDIO_PWRITE_START, fd, buf, count, offset); ssize_t ret = libpwrite(fd, buf, count, offset); EZTRACE_EVENT_PACKED_4(EZTRACE_STDIO_PWRITE_STOP, fd, buf, count, offset); return ret; } ssize_t readv(int fd, const struct iovec *iov, int iovcnt) { FUNCTION_ENTRY; INTERCEPT("readv", libreadv); EZTRACE_EVENT_PACKED_3(EZTRACE_STDIO_READV_START, fd, iov, iovcnt); ssize_t ret = libreadv(fd, iov, iovcnt); EZTRACE_EVENT_PACKED_3(EZTRACE_STDIO_READV_STOP, fd, iov, iovcnt); return ret; } ssize_t writev(int fd, const struct iovec *iov, int iovcnt) { FUNCTION_ENTRY; INTERCEPT("writev", libwritev); EZTRACE_EVENT_PACKED_3(EZTRACE_STDIO_WRITEV_START, fd, iov, iovcnt); ssize_t ret = libwritev(fd, iov, iovcnt); EZTRACE_EVENT_PACKED_3(EZTRACE_STDIO_WRITEV_STOP, fd, iov, iovcnt); return ret; } size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream) { FUNCTION_ENTRY; INTERCEPT("fread", libfread); EZTRACE_EVENT_PACKED_4(EZTRACE_STDIO_FREAD_START, ptr, size, nmemb, stream); size_t ret = libfread(ptr, size, nmemb, stream); EZTRACE_EVENT_PACKED_4(EZTRACE_STDIO_FREAD_STOP, ptr, size, nmemb, stream); return ret; } size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) { FUNCTION_ENTRY; INTERCEPT("fwrite", libfwrite); if (!__stdio_initialized) { if (!libfwrite) { printf("Interception did not work for fwrite\n"); abort(); } return libfwrite(ptr, size, nmemb, stream); } EZTRACE_EVENT_PACKED_4(EZTRACE_STDIO_FWRITE_START, ptr, size, nmemb, stream); size_t ret = libfwrite(ptr, size, nmemb, stream); EZTRACE_EVENT_PACKED_4(EZTRACE_STDIO_FWRITE_STOP, ptr, size, nmemb, stream); return ret; } off_t lseek(int fd, off_t offset, int whence) { FUNCTION_ENTRY; static int not_yet_init = 1; if (not_yet_init) { INTERCEPT("lseek", liblseek); not_yet_init = 0; } EZTRACE_EVENT_PACKED_3(EZTRACE_STDIO_LSEEK_START, fd, offset, whence); off_t ret = liblseek(fd, offset, whence); EZTRACE_EVENT_PACKED_3(EZTRACE_STDIO_LSEEK_STOP, fd, offset, whence); return ret; } int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) { FUNCTION_ENTRY; INTERCEPT("select", libselect); EZTRACE_EVENT_PACKED_3(EZTRACE_STDIO_SELECT_START, nfds, timeout?timeout->tv_sec : 0, timeout?timeout->tv_usec : 0); int ret = libselect(nfds, readfds, writefds, exceptfds, timeout); EZTRACE_EVENT_PACKED_3(EZTRACE_STDIO_SELECT_STOP, nfds, timeout?timeout->tv_sec : 0, timeout?timeout->tv_usec : 0); return ret; } int pselect(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timespec *timeout, const sigset_t *sigmask) { FUNCTION_ENTRY; INTERCEPT("pselect", libpselect); EZTRACE_EVENT_PACKED_3(EZTRACE_STDIO_PSELECT_START, nfds, timeout?timeout->tv_sec : 0, timeout?timeout->tv_nsec : 0); int ret = libpselect(nfds, readfds, writefds, exceptfds, timeout, sigmask); EZTRACE_EVENT_PACKED_3(EZTRACE_STDIO_PSELECT_STOP, nfds, timeout?timeout->tv_sec : 0, timeout?timeout->tv_nsec : 0); return ret; } int poll(struct pollfd *fds, nfds_t nfds, int timeout) { FUNCTION_ENTRY; INTERCEPT("poll", libpoll); EZTRACE_EVENT_PACKED_2(EZTRACE_STDIO_POLL_START, nfds, timeout); int ret = libpoll(fds, nfds, timeout); EZTRACE_EVENT_PACKED_2(EZTRACE_STDIO_POLL_STOP, nfds, timeout); return ret; } int ppoll(struct pollfd *fds, nfds_t nfds, const struct timespec *timeout, const sigset_t *sigmask) { FUNCTION_ENTRY; INTERCEPT("ppoll", libppoll); EZTRACE_EVENT_PACKED_3(EZTRACE_STDIO_PPOLL_START, nfds, timeout?timeout->tv_sec : 0, timeout?timeout->tv_nsec : 0); int ret = libppoll(fds, nfds, timeout, sigmask); EZTRACE_EVENT_PACKED_3(EZTRACE_STDIO_PPOLL_STOP, nfds, timeout?timeout->tv_sec : 0, timeout?timeout->tv_nsec : 0); return ret; } START_INTERCEPT_MODULE(stdio) INTERCEPT2("read", libread) INTERCEPT2("write", libwrite) INTERCEPT2("pread", libpread) INTERCEPT2("pwrite", libpwrite) INTERCEPT2("readv", libreadv) INTERCEPT2("writev", libwritev) INTERCEPT2("fread", libfread) INTERCEPT2("fwrite", libfwrite) INTERCEPT2("lseek", liblseek) INTERCEPT2("select", libselect) INTERCEPT2("pselect", libpselect) INTERCEPT2("poll", libpoll) INTERCEPT2("ppoll", libppoll) END_INTERCEPT_MODULE(stdio) static void __stdio_init(void) __attribute__ ((constructor)); static void __stdio_init(void) { DYNAMIC_INTERCEPT_ALL_MODULE(stdio); #ifdef EZTRACE_AUTOSTART eztrace_start(); #endif __stdio_initialized = 1; } static void __stdio_conclude(void) __attribute__ ((destructor)); static void __stdio_conclude(void) { __stdio_initialized = 0; eztrace_stop(); } eztrace-1.1-7/src/modules/stdio/PaxHeaders.7332/Makefile.am0000644000000000000000000000013213012560437020245 xustar0030 mtime=1479205151.300727536 30 atime=1508162220.205849799 30 ctime=1508162368.277954843 eztrace-1.1-7/src/modules/stdio/Makefile.am0000644000175000017500000000260013012560437021432 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis # See COPYING in top-level directory. TLCFLAGS=$(TL_CPPFLAGS) TLLDFLAGS=$(TL_LDFLAGS) TLLIBADD=$(TL_LIB) GTGCFLAGS=$(GTG_CPPFLAGS) GTGLDFLAGS=$(GTG_LDFLAGS) GTGDEPENDENCIES = $(GTG_DEPENDENCIES) GTGLIBADD=$(GTG_LIB) lib_LTLIBRARIES = libeztrace-convert-stdio.la \ libeztrace-stdio.la \ libeztrace-autostart-stdio.la AM_CFLAGS = -W -Wall -Wextra -I$(srcdir)/../../core/ -I$(top_builddir)/src/core \ -I$(top_srcdir)/src/pptrace libeztrace_convert_stdio_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(GTGCFLAGS) libeztrace_convert_stdio_la_LIBADD = $(TLLIBADD) $(GTGLIBADD) libeztrace_convert_stdio_la_LDFLAGS = $(GTGLDFLAGS) $(TLLDFLAGS) libeztrace_convert_stdio_la_DEPENDENCIES = $(GTGDEPENDENCIES) libeztrace_convert_stdio_la_SOURCES = eztrace_convert_stdio.c libeztrace_stdio_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) libeztrace_stdio_la_LIBADD = $(TLLIBADD) libeztrace_stdio_la_LDFLAGS = --no-undefined $(TLLDFLAGS) libeztrace_stdio_la_SOURCES = stdio.c libeztrace_autostart_stdio_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) libeztrace_autostart_stdio_la_LIBADD = $(TLLIBADD) libeztrace_autostart_stdio_la_LDFLAGS = --no-undefined $(TLLDFLAGS) libeztrace_autostart_stdio_la_CFLAGS = $(AM_CFLAGS) -W -Wall -Wextra -DEZTRACE_AUTOSTART libeztrace_autostart_stdio_la_SOURCES = stdio.c noinst_HEADERS = stdio_ev_codes.h eztrace-1.1-7/src/modules/stdio/PaxHeaders.7332/Makefile.in0000644000000000000000000000013113171135254020256 xustar0030 mtime=1508162220.233851859 29 atime=1508162286.64702946 30 ctime=1508162368.281955192 eztrace-1.1-7/src/modules/stdio/Makefile.in0000644000175000017500000007204313171135254021454 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src/modules/stdio ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) libeztrace_autostart_stdio_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_libeztrace_autostart_stdio_la_OBJECTS = \ libeztrace_autostart_stdio_la-stdio.lo libeztrace_autostart_stdio_la_OBJECTS = \ $(am_libeztrace_autostart_stdio_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libeztrace_autostart_stdio_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(libeztrace_autostart_stdio_la_CFLAGS) $(CFLAGS) \ $(libeztrace_autostart_stdio_la_LDFLAGS) $(LDFLAGS) -o $@ am_libeztrace_convert_stdio_la_OBJECTS = \ libeztrace_convert_stdio_la-eztrace_convert_stdio.lo libeztrace_convert_stdio_la_OBJECTS = \ $(am_libeztrace_convert_stdio_la_OBJECTS) libeztrace_convert_stdio_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libeztrace_convert_stdio_la_LDFLAGS) \ $(LDFLAGS) -o $@ libeztrace_stdio_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_libeztrace_stdio_la_OBJECTS = libeztrace_stdio_la-stdio.lo libeztrace_stdio_la_OBJECTS = $(am_libeztrace_stdio_la_OBJECTS) libeztrace_stdio_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libeztrace_stdio_la_LDFLAGS) \ $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libeztrace_autostart_stdio_la_SOURCES) \ $(libeztrace_convert_stdio_la_SOURCES) \ $(libeztrace_stdio_la_SOURCES) DIST_SOURCES = $(libeztrace_autostart_stdio_la_SOURCES) \ $(libeztrace_convert_stdio_la_SOURCES) \ $(libeztrace_stdio_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUDA_CFLAGS = @CUDA_CFLAGS@ CUDA_LDFLAGS = @CUDA_LDFLAGS@ CUDA_LIBS = @CUDA_LIBS@ CUDA_ROOT = @CUDA_ROOT@ CUPTI_CFLAGS = @CUPTI_CFLAGS@ CUPTI_LDFLAGS = @CUPTI_LDFLAGS@ CUPTI_LIBS = @CUPTI_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ DYNLIB_EXT = @DYNLIB_EXT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ GTGDIR = @GTGDIR@ GTG_CPPFLAGS = @GTG_CPPFLAGS@ GTG_DEPENDENCIES = @GTG_DEPENDENCIES@ GTG_EXT_CPPFLAGS = @GTG_EXT_CPPFLAGS@ GTG_EXT_LDFLAGS = @GTG_EXT_LDFLAGS@ GTG_EXT_LIB = @GTG_EXT_LIB@ GTG_LDFLAGS = @GTG_LDFLAGS@ GTG_LIB = @GTG_LIB@ GTG_OUT_OF_ORDER = @GTG_OUT_OF_ORDER@ HAVE_ENV = @HAVE_ENV@ HAVE_LIBBACKTRACE = @HAVE_LIBBACKTRACE@ HAVE_LIBOPCODE = @HAVE_LIBOPCODE@ HAVE_PRCTL_H = @HAVE_PRCTL_H@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LD_LIBRARY_PATH_NAME = @LD_LIBRARY_PATH_NAME@ LD_PRELOAD_NAME = @LD_PRELOAD_NAME@ LIBBACKTRACE_CPPFLAGS = @LIBBACKTRACE_CPPFLAGS@ LIBBACKTRACE_LDFLAGS = @LIBBACKTRACE_LDFLAGS@ LIBBACKTRACE_LIB = @LIBBACKTRACE_LIB@ LIBBACKTRACE_ROOT = @LIBBACKTRACE_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LITL_PRINT = @LITL_PRINT@ LITL_ROOT = @LITL_ROOT@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPI_CFLAGS = @MPI_CFLAGS@ MPI_EVENT_ID = @MPI_EVENT_ID@ MPI_INC = @MPI_INC@ MPI_LDFLAGS = @MPI_LDFLAGS@ MPI_MODULE_NAME = @MPI_MODULE_NAME@ MPI_ROOT = @MPI_ROOT@ NM = @NM@ NMEDIT = @NMEDIT@ NVCC = @NVCC@ NVCCFLAGS = @NVCCFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAPIDIR = @PAPIDIR@ PAPI_CPPFLAGS = @PAPI_CPPFLAGS@ PAPI_ENABLED = @PAPI_ENABLED@ PAPI_LDFLAGS = @PAPI_LDFLAGS@ PAPI_LIBDIR = @PAPI_LIBDIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PPTRACE_BINARY_TYPE = @PPTRACE_BINARY_TYPE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STARPU_CFLAGS = @STARPU_CFLAGS@ STARPU_CPPFLAGS = @STARPU_CPPFLAGS@ STARPU_LDFLAGS = @STARPU_LDFLAGS@ STARPU_LIBS = @STARPU_LIBS@ STARPU_ROOT = @STARPU_ROOT@ STRIP = @STRIP@ TARGET_BITS = @TARGET_BITS@ TL_CPPFLAGS = @TL_CPPFLAGS@ TL_EXT_CPPFLAGS = @TL_EXT_CPPFLAGS@ TL_EXT_LDFLAGS = @TL_EXT_LDFLAGS@ TL_EXT_LIB = @TL_EXT_LIB@ TL_LDFLAGS = @TL_LDFLAGS@ TL_LIB = @TL_LIB@ USE_BIN_INSTRUMENTATION = @USE_BIN_INSTRUMENTATION@ USE_CUDADIR_FROM_USER = @USE_CUDADIR_FROM_USER@ USE_GETTID = @USE_GETTID@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ USE_PAPIDIR_FROM_USER = @USE_PAPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ TLCFLAGS = $(TL_CPPFLAGS) TLLDFLAGS = $(TL_LDFLAGS) TLLIBADD = $(TL_LIB) GTGCFLAGS = $(GTG_CPPFLAGS) GTGLDFLAGS = $(GTG_LDFLAGS) GTGDEPENDENCIES = $(GTG_DEPENDENCIES) GTGLIBADD = $(GTG_LIB) lib_LTLIBRARIES = libeztrace-convert-stdio.la \ libeztrace-stdio.la \ libeztrace-autostart-stdio.la AM_CFLAGS = -W -Wall -Wextra -I$(srcdir)/../../core/ -I$(top_builddir)/src/core \ -I$(top_srcdir)/src/pptrace libeztrace_convert_stdio_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(GTGCFLAGS) libeztrace_convert_stdio_la_LIBADD = $(TLLIBADD) $(GTGLIBADD) libeztrace_convert_stdio_la_LDFLAGS = $(GTGLDFLAGS) $(TLLDFLAGS) libeztrace_convert_stdio_la_DEPENDENCIES = $(GTGDEPENDENCIES) libeztrace_convert_stdio_la_SOURCES = eztrace_convert_stdio.c libeztrace_stdio_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) libeztrace_stdio_la_LIBADD = $(TLLIBADD) libeztrace_stdio_la_LDFLAGS = --no-undefined $(TLLDFLAGS) libeztrace_stdio_la_SOURCES = stdio.c libeztrace_autostart_stdio_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) libeztrace_autostart_stdio_la_LIBADD = $(TLLIBADD) libeztrace_autostart_stdio_la_LDFLAGS = --no-undefined $(TLLDFLAGS) libeztrace_autostart_stdio_la_CFLAGS = $(AM_CFLAGS) -W -Wall -Wextra -DEZTRACE_AUTOSTART libeztrace_autostart_stdio_la_SOURCES = stdio.c noinst_HEADERS = stdio_ev_codes.h all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/modules/stdio/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/modules/stdio/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libeztrace-autostart-stdio.la: $(libeztrace_autostart_stdio_la_OBJECTS) $(libeztrace_autostart_stdio_la_DEPENDENCIES) $(EXTRA_libeztrace_autostart_stdio_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_autostart_stdio_la_LINK) -rpath $(libdir) $(libeztrace_autostart_stdio_la_OBJECTS) $(libeztrace_autostart_stdio_la_LIBADD) $(LIBS) libeztrace-convert-stdio.la: $(libeztrace_convert_stdio_la_OBJECTS) $(libeztrace_convert_stdio_la_DEPENDENCIES) $(EXTRA_libeztrace_convert_stdio_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_convert_stdio_la_LINK) -rpath $(libdir) $(libeztrace_convert_stdio_la_OBJECTS) $(libeztrace_convert_stdio_la_LIBADD) $(LIBS) libeztrace-stdio.la: $(libeztrace_stdio_la_OBJECTS) $(libeztrace_stdio_la_DEPENDENCIES) $(EXTRA_libeztrace_stdio_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_stdio_la_LINK) -rpath $(libdir) $(libeztrace_stdio_la_OBJECTS) $(libeztrace_stdio_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_autostart_stdio_la-stdio.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_convert_stdio_la-eztrace_convert_stdio.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_stdio_la-stdio.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libeztrace_autostart_stdio_la-stdio.lo: stdio.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_stdio_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_stdio_la_CFLAGS) $(CFLAGS) -MT libeztrace_autostart_stdio_la-stdio.lo -MD -MP -MF $(DEPDIR)/libeztrace_autostart_stdio_la-stdio.Tpo -c -o libeztrace_autostart_stdio_la-stdio.lo `test -f 'stdio.c' || echo '$(srcdir)/'`stdio.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_autostart_stdio_la-stdio.Tpo $(DEPDIR)/libeztrace_autostart_stdio_la-stdio.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stdio.c' object='libeztrace_autostart_stdio_la-stdio.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_stdio_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_stdio_la_CFLAGS) $(CFLAGS) -c -o libeztrace_autostart_stdio_la-stdio.lo `test -f 'stdio.c' || echo '$(srcdir)/'`stdio.c libeztrace_convert_stdio_la-eztrace_convert_stdio.lo: eztrace_convert_stdio.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_stdio_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_convert_stdio_la-eztrace_convert_stdio.lo -MD -MP -MF $(DEPDIR)/libeztrace_convert_stdio_la-eztrace_convert_stdio.Tpo -c -o libeztrace_convert_stdio_la-eztrace_convert_stdio.lo `test -f 'eztrace_convert_stdio.c' || echo '$(srcdir)/'`eztrace_convert_stdio.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_convert_stdio_la-eztrace_convert_stdio.Tpo $(DEPDIR)/libeztrace_convert_stdio_la-eztrace_convert_stdio.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_convert_stdio.c' object='libeztrace_convert_stdio_la-eztrace_convert_stdio.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_stdio_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_convert_stdio_la-eztrace_convert_stdio.lo `test -f 'eztrace_convert_stdio.c' || echo '$(srcdir)/'`eztrace_convert_stdio.c libeztrace_stdio_la-stdio.lo: stdio.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_stdio_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_stdio_la-stdio.lo -MD -MP -MF $(DEPDIR)/libeztrace_stdio_la-stdio.Tpo -c -o libeztrace_stdio_la-stdio.lo `test -f 'stdio.c' || echo '$(srcdir)/'`stdio.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_stdio_la-stdio.Tpo $(DEPDIR)/libeztrace_stdio_la-stdio.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stdio.c' object='libeztrace_stdio_la-stdio.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_stdio_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_stdio_la-stdio.lo `test -f 'stdio.c' || echo '$(srcdir)/'`stdio.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libLTLIBRARIES install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/src/modules/PaxHeaders.7332/starpu0000644000000000000000000000013213171135500016323 xustar0030 mtime=1508162368.157944356 30 atime=1508162372.166294941 30 ctime=1508162368.157944356 eztrace-1.1-7/src/modules/starpu/0000755000175000017500000000000013171135500017567 5ustar00trahaytrahay00000000000000eztrace-1.1-7/src/modules/starpu/PaxHeaders.7332/starpu_ev_codes.h0000644000000000000000000000013213012560437021743 xustar0030 mtime=1479205151.300727536 30 atime=1507797543.126866173 30 ctime=1508162368.149943657 eztrace-1.1-7/src/modules/starpu/starpu_ev_codes.h0000644000175000017500000003477713012560437023154 0ustar00trahaytrahay00000000000000/* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #ifndef __starpu_EV_CODES_H__ #define __starpu_EV_CODES_H__ /* This file defines the event codes that are used by the example * module. */ #include "ev_codes.h" /* 7-bits event codes prefix. This identifies the module and thus should be * unique. * The 0x0? prefix is reserved for eztrace internal use. Thus you can * use any prefix between 0x80 and 0xff. */ #define starpu_EVENTS_ID 0x10 #define EZTRACE_STARPU_EVENTS_ID SYSTEM_MODULE_ID(starpu_EVENTS_ID) #define starpu_PREFIX GENERATE_SYSTEM_MODULE_PREFIX(EZTRACE_STARPU_EVENTS_ID) /* Define various event codes used by the example module * The 2 most significant bytes should correspond to the module id, * as below: */ // Internals #define EZTRACE_starpu__starpu_driver_start_job (starpu_PREFIX | 0x0002) #define EZTRACE_starpu__starpu_driver_end_job (starpu_PREFIX | 0x0004) // API #define EZTRACE_starpu_starpu_cublas_init_41 (starpu_PREFIX | 0x29) #define EZTRACE_starpu_starpu_cublas_init_42 (starpu_PREFIX | 0x2a) #define EZTRACE_starpu_starpu_cublas_shutdown_43 (starpu_PREFIX | 0x2b) #define EZTRACE_starpu_starpu_cublas_shutdown_44 (starpu_PREFIX | 0x2c) #define EZTRACE_starpu_starpu_init_47 (starpu_PREFIX | 0x2f) #define EZTRACE_starpu_starpu_init_48 (starpu_PREFIX | 0x30) #define EZTRACE_starpu_starpu_pause_49 (starpu_PREFIX | 0x31) #define EZTRACE_starpu_starpu_pause_50 (starpu_PREFIX | 0x32) #define EZTRACE_starpu_starpu_resume_51 (starpu_PREFIX | 0x33) #define EZTRACE_starpu_starpu_resume_52 (starpu_PREFIX | 0x34) #define EZTRACE_starpu_starpu_shutdown_53 (starpu_PREFIX | 0x35) #define EZTRACE_starpu_starpu_shutdown_54 (starpu_PREFIX | 0x36) #define EZTRACE_starpu_starpu_data_unregister_79 (starpu_PREFIX | 0x4f) #define EZTRACE_starpu_starpu_data_unregister_80 (starpu_PREFIX | 0x50) #define EZTRACE_starpu_starpu_data_unregister_no_coherency_81 (starpu_PREFIX | 0x51) #define EZTRACE_starpu_starpu_data_unregister_no_coherency_82 (starpu_PREFIX | 0x52) #define EZTRACE_starpu_starpu_data_unregister_submit_83 (starpu_PREFIX | 0x53) #define EZTRACE_starpu_starpu_data_unregister_submit_84 (starpu_PREFIX | 0x54) #define EZTRACE_starpu_starpu_data_invalidate_85 (starpu_PREFIX | 0x55) #define EZTRACE_starpu_starpu_data_invalidate_86 (starpu_PREFIX | 0x56) #define EZTRACE_starpu_starpu_data_invalidate_submit_87 (starpu_PREFIX | 0x57) #define EZTRACE_starpu_starpu_data_invalidate_submit_88 (starpu_PREFIX | 0x58) #define EZTRACE_starpu_starpu_data_acquire_91 (starpu_PREFIX | 0x5b) #define EZTRACE_starpu_starpu_data_acquire_92 (starpu_PREFIX | 0x5c) #define EZTRACE_starpu_starpu_data_acquire_on_node_93 (starpu_PREFIX | 0x5d) #define EZTRACE_starpu_starpu_data_acquire_on_node_94 (starpu_PREFIX | 0x5e) #define EZTRACE_starpu_starpu_data_acquire_cb_95 (starpu_PREFIX | 0x5f) #define EZTRACE_starpu_starpu_data_acquire_cb_96 (starpu_PREFIX | 0x60) #define EZTRACE_starpu_starpu_data_acquire_on_node_cb_97 (starpu_PREFIX | 0x61) #define EZTRACE_starpu_starpu_data_acquire_on_node_cb_98 (starpu_PREFIX | 0x62) #define EZTRACE_starpu_starpu_data_release_99 (starpu_PREFIX | 0x63) #define EZTRACE_starpu_starpu_data_release_100 (starpu_PREFIX | 0x64) #define EZTRACE_starpu_starpu_data_release_on_node_101 (starpu_PREFIX | 0x65) #define EZTRACE_starpu_starpu_data_release_on_node_102 (starpu_PREFIX | 0x66) #define EZTRACE_starpu_starpu_data_request_allocation_105 (starpu_PREFIX | 0x69) #define EZTRACE_starpu_starpu_data_request_allocation_106 (starpu_PREFIX | 0x6a) #define EZTRACE_starpu_starpu_malloc_on_node_183 (starpu_PREFIX | 0xb7) #define EZTRACE_starpu_starpu_malloc_on_node_184 (starpu_PREFIX | 0xb8) #define EZTRACE_starpu_starpu_free_on_node_185 (starpu_PREFIX | 0xb9) #define EZTRACE_starpu_starpu_free_on_node_186 (starpu_PREFIX | 0xba) #define EZTRACE_starpu_starpu_mpi_isend_311 (starpu_PREFIX | 0x137) #define EZTRACE_starpu_starpu_mpi_isend_312 (starpu_PREFIX | 0x138) #define EZTRACE_starpu_starpu_mpi_irecv_313 (starpu_PREFIX | 0x139) #define EZTRACE_starpu_starpu_mpi_irecv_314 (starpu_PREFIX | 0x13a) #define EZTRACE_starpu_starpu_mpi_send_315 (starpu_PREFIX | 0x13b) #define EZTRACE_starpu_starpu_mpi_send_316 (starpu_PREFIX | 0x13c) #define EZTRACE_starpu_starpu_mpi_recv_317 (starpu_PREFIX | 0x13d) #define EZTRACE_starpu_starpu_mpi_recv_318 (starpu_PREFIX | 0x13e) #define EZTRACE_starpu_starpu_mpi_isend_detached_319 (starpu_PREFIX | 0x13f) #define EZTRACE_starpu_starpu_mpi_isend_detached_320 (starpu_PREFIX | 0x140) #define EZTRACE_starpu_starpu_mpi_irecv_detached_321 (starpu_PREFIX | 0x141) #define EZTRACE_starpu_starpu_mpi_irecv_detached_322 (starpu_PREFIX | 0x142) #define EZTRACE_starpu_starpu_mpi_wait_323 (starpu_PREFIX | 0x143) #define EZTRACE_starpu_starpu_mpi_wait_324 (starpu_PREFIX | 0x144) #define EZTRACE_starpu_starpu_mpi_test_325 (starpu_PREFIX | 0x145) #define EZTRACE_starpu_starpu_mpi_test_326 (starpu_PREFIX | 0x146) #define EZTRACE_starpu_starpu_mpi_barrier_327 (starpu_PREFIX | 0x147) #define EZTRACE_starpu_starpu_mpi_barrier_328 (starpu_PREFIX | 0x148) #define EZTRACE_starpu_starpu_mpi_init_329 (starpu_PREFIX | 0x149) #define EZTRACE_starpu_starpu_mpi_init_330 (starpu_PREFIX | 0x14a) #define EZTRACE_starpu_starpu_mpi_initialize_331 (starpu_PREFIX | 0x14b) #define EZTRACE_starpu_starpu_mpi_initialize_332 (starpu_PREFIX | 0x14c) #define EZTRACE_starpu_starpu_mpi_initialize_extended_333 (starpu_PREFIX | 0x14d) #define EZTRACE_starpu_starpu_mpi_initialize_extended_334 (starpu_PREFIX | 0x14e) #define EZTRACE_starpu_starpu_mpi_shutdown_335 (starpu_PREFIX | 0x14f) #define EZTRACE_starpu_starpu_mpi_shutdown_336 (starpu_PREFIX | 0x150) #define EZTRACE_starpu_starpu_mpi_get_data_on_node_337 (starpu_PREFIX | 0x151) #define EZTRACE_starpu_starpu_mpi_get_data_on_node_338 (starpu_PREFIX | 0x152) #define EZTRACE_starpu_starpu_mpi_get_data_on_node_detached_339 (starpu_PREFIX | 0x153) #define EZTRACE_starpu_starpu_mpi_get_data_on_node_detached_340 (starpu_PREFIX | 0x154) #define EZTRACE_starpu_starpu_mpi_redux_data_341 (starpu_PREFIX | 0x155) #define EZTRACE_starpu_starpu_mpi_redux_data_342 (starpu_PREFIX | 0x156) #define EZTRACE_starpu_starpu_mpi_scatter_detached_343 (starpu_PREFIX | 0x157) #define EZTRACE_starpu_starpu_mpi_scatter_detached_344 (starpu_PREFIX | 0x158) #define EZTRACE_starpu_starpu_mpi_gather_detached_345 (starpu_PREFIX | 0x159) #define EZTRACE_starpu_starpu_mpi_gather_detached_346 (starpu_PREFIX | 0x15a) #define EZTRACE_starpu_starpu_mpi_isend_detached_unlock_tag_347 (starpu_PREFIX | 0x15b) #define EZTRACE_starpu_starpu_mpi_isend_detached_unlock_tag_348 (starpu_PREFIX | 0x15c) #define EZTRACE_starpu_starpu_mpi_irecv_detached_unlock_tag_349 (starpu_PREFIX | 0x15d) #define EZTRACE_starpu_starpu_mpi_irecv_detached_unlock_tag_350 (starpu_PREFIX | 0x15e) #define EZTRACE_starpu_starpu_mpi_isend_array_detached_unlock_tag_351 (starpu_PREFIX | 0x15f) #define EZTRACE_starpu_starpu_mpi_isend_array_detached_unlock_tag_352 (starpu_PREFIX | 0x160) #define EZTRACE_starpu_starpu_mpi_irecv_array_detached_unlock_tag_353 (starpu_PREFIX | 0x161) #define EZTRACE_starpu_starpu_mpi_irecv_array_detached_unlock_tag_354 (starpu_PREFIX | 0x162) #define EZTRACE_starpu_starpu_mpi_comm_amounts_retrieve_355 (starpu_PREFIX | 0x163) #define EZTRACE_starpu_starpu_mpi_comm_amounts_retrieve_356 (starpu_PREFIX | 0x164) #define EZTRACE_starpu_starpu_mpi_cache_flush_357 (starpu_PREFIX | 0x165) #define EZTRACE_starpu_starpu_mpi_cache_flush_358 (starpu_PREFIX | 0x166) #define EZTRACE_starpu_starpu_mpi_cache_flush_all_data_359 (starpu_PREFIX | 0x167) #define EZTRACE_starpu_starpu_mpi_cache_flush_all_data_360 (starpu_PREFIX | 0x168) #define EZTRACE_starpu_starpu_mpi_data_register_361 (starpu_PREFIX | 0x169) #define EZTRACE_starpu_starpu_mpi_data_register_362 (starpu_PREFIX | 0x16a) #define EZTRACE_starpu_starpu_sched_ctx_add_workers_411 (starpu_PREFIX | 0x19b) #define EZTRACE_starpu_starpu_sched_ctx_add_workers_412 (starpu_PREFIX | 0x19c) #define EZTRACE_starpu_starpu_sched_ctx_remove_workers_413 (starpu_PREFIX | 0x19d) #define EZTRACE_starpu_starpu_sched_ctx_remove_workers_414 (starpu_PREFIX | 0x19e) #define EZTRACE_starpu_starpu_sched_ctx_delete_415 (starpu_PREFIX | 0x19f) #define EZTRACE_starpu_starpu_sched_ctx_delete_416 (starpu_PREFIX | 0x1a0) #define EZTRACE_starpu_starpu_sched_ctx_set_inheritor_417 (starpu_PREFIX | 0x1a1) #define EZTRACE_starpu_starpu_sched_ctx_set_inheritor_418 (starpu_PREFIX | 0x1a2) #define EZTRACE_starpu_starpu_sched_ctx_set_context_419 (starpu_PREFIX | 0x1a3) #define EZTRACE_starpu_starpu_sched_ctx_set_context_420 (starpu_PREFIX | 0x1a4) #define EZTRACE_starpu_starpu_sched_ctx_get_context_421 (starpu_PREFIX | 0x1a5) #define EZTRACE_starpu_starpu_sched_ctx_get_context_422 (starpu_PREFIX | 0x1a6) #define EZTRACE_starpu_starpu_sched_ctx_stop_task_submission_423 (starpu_PREFIX | 0x1a7) #define EZTRACE_starpu_starpu_sched_ctx_stop_task_submission_424 (starpu_PREFIX | 0x1a8) #define EZTRACE_starpu_starpu_sched_ctx_finished_submit_425 (starpu_PREFIX | 0x1a9) #define EZTRACE_starpu_starpu_sched_ctx_finished_submit_426 (starpu_PREFIX | 0x1aa) #define EZTRACE_starpu_starpu_sched_ctx_create_worker_collection_461 (starpu_PREFIX | 0x1cd) #define EZTRACE_starpu_starpu_sched_ctx_create_worker_collection_462 (starpu_PREFIX | 0x1ce) #define EZTRACE_starpu_starpu_sched_ctx_delete_worker_collection_463 (starpu_PREFIX | 0x1cf) #define EZTRACE_starpu_starpu_sched_ctx_delete_worker_collection_464 (starpu_PREFIX | 0x1d0) #define EZTRACE_starpu_starpu_sched_ctx_get_worker_collection_465 (starpu_PREFIX | 0x1d1) #define EZTRACE_starpu_starpu_sched_ctx_get_worker_collection_466 (starpu_PREFIX | 0x1d2) #define EZTRACE_starpu_starpu_prefetch_task_input_on_node_495 (starpu_PREFIX | 0x1ef) #define EZTRACE_starpu_starpu_prefetch_task_input_on_node_496 (starpu_PREFIX | 0x1f0) #define EZTRACE_starpu_starpu_malloc_521 (starpu_PREFIX | 0x209) #define EZTRACE_starpu_starpu_malloc_522 (starpu_PREFIX | 0x20a) #define EZTRACE_starpu_starpu_free_523 (starpu_PREFIX | 0x20b) #define EZTRACE_starpu_starpu_free_524 (starpu_PREFIX | 0x20c) #define EZTRACE_starpu_starpu_malloc_flags_525 (starpu_PREFIX | 0x20d) #define EZTRACE_starpu_starpu_malloc_flags_526 (starpu_PREFIX | 0x20e) #define EZTRACE_starpu_starpu_free_flags_527 (starpu_PREFIX | 0x20f) #define EZTRACE_starpu_starpu_free_flags_528 (starpu_PREFIX | 0x210) #define EZTRACE_starpu_starpu_tag_wait_537 (starpu_PREFIX | 0x219) #define EZTRACE_starpu_starpu_tag_wait_538 (starpu_PREFIX | 0x21a) #define EZTRACE_starpu_starpu_tag_wait_array_539 (starpu_PREFIX | 0x21b) #define EZTRACE_starpu_starpu_tag_wait_array_540 (starpu_PREFIX | 0x21c) #define EZTRACE_starpu_starpu_tag_notify_from_apps_541 (starpu_PREFIX | 0x21d) #define EZTRACE_starpu_starpu_tag_notify_from_apps_542 (starpu_PREFIX | 0x21e) #define EZTRACE_starpu_starpu_task_init_547 (starpu_PREFIX | 0x223) #define EZTRACE_starpu_starpu_task_init_548 (starpu_PREFIX | 0x224) #define EZTRACE_starpu_starpu_task_clean_549 (starpu_PREFIX | 0x225) #define EZTRACE_starpu_starpu_task_clean_550 (starpu_PREFIX | 0x226) #define EZTRACE_starpu_starpu_task_create_551 (starpu_PREFIX | 0x227) #define EZTRACE_starpu_starpu_task_create_552 (starpu_PREFIX | 0x228) #define EZTRACE_starpu_starpu_task_destroy_553 (starpu_PREFIX | 0x229) #define EZTRACE_starpu_starpu_task_destroy_554 (starpu_PREFIX | 0x22a) #define EZTRACE_starpu_starpu_task_submit_555 (starpu_PREFIX | 0x22b) #define EZTRACE_starpu_starpu_task_submit_556 (starpu_PREFIX | 0x22c) #define EZTRACE_starpu_starpu_task_submit_to_ctx_557 (starpu_PREFIX | 0x22d) #define EZTRACE_starpu_starpu_task_submit_to_ctx_558 (starpu_PREFIX | 0x22e) #define EZTRACE_starpu_starpu_task_wait_559 (starpu_PREFIX | 0x22f) #define EZTRACE_starpu_starpu_task_wait_560 (starpu_PREFIX | 0x230) #define EZTRACE_starpu_starpu_task_wait_for_all_561 (starpu_PREFIX | 0x231) #define EZTRACE_starpu_starpu_task_wait_for_all_562 (starpu_PREFIX | 0x232) #define EZTRACE_starpu_starpu_task_wait_for_all_in_ctx_563 (starpu_PREFIX | 0x233) #define EZTRACE_starpu_starpu_task_wait_for_all_in_ctx_564 (starpu_PREFIX | 0x234) #define EZTRACE_starpu_starpu_task_wait_for_no_ready_565 (starpu_PREFIX | 0x235) #define EZTRACE_starpu_starpu_task_wait_for_no_ready_566 (starpu_PREFIX | 0x236) #define EZTRACE_starpu_starpu_task_nready_567 (starpu_PREFIX | 0x237) #define EZTRACE_starpu_starpu_task_nready_568 (starpu_PREFIX | 0x238) #define EZTRACE_starpu_starpu_task_nsubmitted_569 (starpu_PREFIX | 0x239) #define EZTRACE_starpu_starpu_task_nsubmitted_570 (starpu_PREFIX | 0x23a) #define EZTRACE_starpu_starpu_codelet_init_571 (starpu_PREFIX | 0x23b) #define EZTRACE_starpu_starpu_codelet_init_572 (starpu_PREFIX | 0x23c) #define EZTRACE_starpu_starpu_codelet_display_stats_573 (starpu_PREFIX | 0x23d) #define EZTRACE_starpu_starpu_codelet_display_stats_574 (starpu_PREFIX | 0x23f) #define EZTRACE_starpu_starpu_parallel_task_barrier_init_577 (starpu_PREFIX | 0x241) #define EZTRACE_starpu_starpu_parallel_task_barrier_init_578 (starpu_PREFIX | 0x242) #define EZTRACE_starpu_starpu_parallel_task_barrier_init_n_579 (starpu_PREFIX | 0x243) #define EZTRACE_starpu_starpu_parallel_task_barrier_init_n_580 (starpu_PREFIX | 0x244) #define EZTRACE_starpu_starpu_task_dup_581 (starpu_PREFIX | 0x245) #define EZTRACE_starpu_starpu_task_dup_582 (starpu_PREFIX | 0x246) #define EZTRACE_starpu_starpu_task_bundle_create_587 (starpu_PREFIX | 0x24b) #define EZTRACE_starpu_starpu_task_bundle_create_588 (starpu_PREFIX | 0x24c) #define EZTRACE_starpu_starpu_task_bundle_insert_589 (starpu_PREFIX | 0x24d) #define EZTRACE_starpu_starpu_task_bundle_insert_590 (starpu_PREFIX | 0x24e) #define EZTRACE_starpu_starpu_task_bundle_remove_591 (starpu_PREFIX | 0x24f) #define EZTRACE_starpu_starpu_task_bundle_remove_592 (starpu_PREFIX | 0x250) #define EZTRACE_starpu_starpu_task_bundle_close_593 (starpu_PREFIX | 0x251) #define EZTRACE_starpu_starpu_task_bundle_close_594 (starpu_PREFIX | 0x252) #define EZTRACE_starpu_starpu_create_sync_task_595 (starpu_PREFIX | 0x253) #define EZTRACE_starpu_starpu_create_sync_task_596 (starpu_PREFIX | 0x254) #define EZTRACE_starpu_starpu_execute_on_each_worker_691 (starpu_PREFIX | 0x2b3) #define EZTRACE_starpu_starpu_execute_on_each_worker_692 (starpu_PREFIX | 0x2b4) #define EZTRACE_starpu_starpu_execute_on_each_worker_ex_693 (starpu_PREFIX | 0x2b5) #define EZTRACE_starpu_starpu_execute_on_each_worker_ex_694 (starpu_PREFIX | 0x2b6) #define EZTRACE_starpu_starpu_execute_on_specific_workers_695 (starpu_PREFIX | 0x2b7) #define EZTRACE_starpu_starpu_execute_on_specific_workers_696 (starpu_PREFIX | 0x2b8) #define EZTRACE_starpu_starpu_data_cpy_697 (starpu_PREFIX | 0x2b9) #define EZTRACE_starpu_starpu_data_cpy_698 (starpu_PREFIX | 0x2ba) #endif /* __starpu_EV_CODES_H__ */ eztrace-1.1-7/src/modules/starpu/PaxHeaders.7332/eztrace_convert_starpu.c0000644000000000000000000000013213012560437023344 xustar0030 mtime=1479205151.300727536 30 atime=1507797543.126866173 30 ctime=1508162368.161944706 eztrace-1.1-7/src/modules/starpu/eztrace_convert_starpu.c0000644000175000017500000023320213012560437024535 0ustar00trahaytrahay00000000000000/* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include #include "eztrace_convert.h" #include "eztrace_convert_macros.h" #include "starpu_ev_codes.h" //#define FUNC_NAME printf("%s\n", __FUNCTION__); /* This structure contains information about the source of the starpu link */ struct starpu_link_source { char* source; /* The thread which submitted the task */ varPrec time; /* date at which the task is submitted */ struct starpu_task* task; /* Address of the task being submitted */ }; /* This list contains information about the source of the starpu link */ struct ezt_list_t starpu_link_source_list; /* This structure contains the duration of a particular task */ struct starpu_task_duration { double start_time; struct starpu_task* task; /* Address of the task being executed */ }; /* This structure contains the durations of tasks of the same type */ struct starpu_task_type_stats { double min_time; double max_time; double ave_time; int nb_tasks; void* task_type; struct ezt_list_t starpu_task_duration_list; /* This list contains duration statistics for a particular task type */ }; /* This list contains duration statistics for a particular task type */ struct ezt_list_t starpu_task_type_stats_list; char *jobName = NULL; #define GET_PARAM_RAW_1(p_ev, arg1) do { \ litl_read_get_param_1(p_ev, arg1); \ } while(0) typedef struct s_nameList { char *name; struct s_nameList *next; } nameList; nameList *nameL = NULL; nameList *savePtr; nameList *nameExec = NULL; nameList *execPtr; static struct ezt_list_token_t* __find_matching_link_source(struct starpu_task * task) { struct ezt_list_token_t *t = NULL; struct starpu_link_source *r; ezt_list_foreach(&starpu_link_source_list, t) { r = (struct starpu_link_source *) t->data; if(r->task == task) return t; } return t; } static struct ezt_list_token_t* __find_matching_task(app_ptr task, struct ezt_list_t *starpu_task_duration_list) { struct ezt_list_token_t *t = NULL; struct starpu_task_duration *r; ezt_list_foreach(starpu_task_duration_list, t) { r = (struct starpu_task_duration *) t->data; if((app_ptr)r->task == task) return t; } return t; } static struct ezt_list_token_t* __find_matching_task_type(app_ptr task_type) { struct ezt_list_token_t *t = NULL; struct starpu_task_type_stats *r; ezt_list_foreach(&starpu_task_type_stats_list, t) { r = (struct starpu_task_type_stats *) t->data; if((app_ptr)r->task_type == task_type) return t; } return t; } int eztrace_convert_starpu_init(); int handle_starpu_events(eztrace_event_t *ev); // Internals void handleEZTRACE_starpu__starpu_driver_start_job(); void handleEZTRACE_starpu__starpu_driver_end_job() ; // API void handleEZTRACE_starpu_starpu_cublas_init_41() ; void handleEZTRACE_starpu_starpu_cublas_init_42() ; void handleEZTRACE_starpu_starpu_cublas_shutdown_43() ; void handleEZTRACE_starpu_starpu_cublas_shutdown_44() ; void handleEZTRACE_starpu_starpu_init_47() ; void handleEZTRACE_starpu_starpu_init_48() ; void handleEZTRACE_starpu_starpu_pause_49() ; void handleEZTRACE_starpu_starpu_pause_50() ; void handleEZTRACE_starpu_starpu_resume_51() ; void handleEZTRACE_starpu_starpu_resume_52() ; void handleEZTRACE_starpu_starpu_shutdown_53() ; void handleEZTRACE_starpu_starpu_shutdown_54() ; void handleEZTRACE_starpu_starpu_data_unregister_79() ; void handleEZTRACE_starpu_starpu_data_unregister_80() ; void handleEZTRACE_starpu_starpu_data_unregister_no_coherency_81() ; void handleEZTRACE_starpu_starpu_data_unregister_no_coherency_82() ; void handleEZTRACE_starpu_starpu_data_unregister_submit_83() ; void handleEZTRACE_starpu_starpu_data_unregister_submit_84() ; void handleEZTRACE_starpu_starpu_data_invalidate_85() ; void handleEZTRACE_starpu_starpu_data_invalidate_86() ; void handleEZTRACE_starpu_starpu_data_invalidate_submit_87() ; void handleEZTRACE_starpu_starpu_data_invalidate_submit_88() ; void handleEZTRACE_starpu_starpu_data_acquire_91() ; void handleEZTRACE_starpu_starpu_data_acquire_92() ; void handleEZTRACE_starpu_starpu_data_acquire_on_node_93() ; void handleEZTRACE_starpu_starpu_data_acquire_on_node_94() ; void handleEZTRACE_starpu_starpu_data_acquire_cb_95() ; void handleEZTRACE_starpu_starpu_data_acquire_cb_96() ; void handleEZTRACE_starpu_starpu_data_acquire_on_node_cb_97() ; void handleEZTRACE_starpu_starpu_data_acquire_on_node_cb_98() ; void handleEZTRACE_starpu_starpu_data_release_99() ; void handleEZTRACE_starpu_starpu_data_release_100() ; void handleEZTRACE_starpu_starpu_data_release_on_node_101() ; void handleEZTRACE_starpu_starpu_data_release_on_node_102() ; void handleEZTRACE_starpu_starpu_malloc_on_node_183() ; void handleEZTRACE_starpu_starpu_malloc_on_node_184() ; void handleEZTRACE_starpu_starpu_free_on_node_185() ; void handleEZTRACE_starpu_starpu_free_on_node_186() ; void handleEZTRACE_starpu_starpu_mpi_isend_311() ; void handleEZTRACE_starpu_starpu_mpi_isend_312() ; void handleEZTRACE_starpu_starpu_mpi_irecv_313() ; void handleEZTRACE_starpu_starpu_mpi_irecv_314() ; void handleEZTRACE_starpu_starpu_mpi_send_315() ; void handleEZTRACE_starpu_starpu_mpi_send_316() ; void handleEZTRACE_starpu_starpu_mpi_recv_317() ; void handleEZTRACE_starpu_starpu_mpi_recv_318() ; void handleEZTRACE_starpu_starpu_mpi_isend_detached_319() ; void handleEZTRACE_starpu_starpu_mpi_isend_detached_320() ; void handleEZTRACE_starpu_starpu_mpi_irecv_detached_321() ; void handleEZTRACE_starpu_starpu_mpi_irecv_detached_322() ; void handleEZTRACE_starpu_starpu_mpi_wait_323() ; void handleEZTRACE_starpu_starpu_mpi_wait_324() ; void handleEZTRACE_starpu_starpu_mpi_test_325() ; void handleEZTRACE_starpu_starpu_mpi_test_326() ; void handleEZTRACE_starpu_starpu_mpi_barrier_327() ; void handleEZTRACE_starpu_starpu_mpi_barrier_328() ; void handleEZTRACE_starpu_starpu_mpi_init_329() ; void handleEZTRACE_starpu_starpu_mpi_init_330() ; void handleEZTRACE_starpu_starpu_mpi_initialize_331() ; void handleEZTRACE_starpu_starpu_mpi_initialize_332() ; void handleEZTRACE_starpu_starpu_mpi_initialize_extended_333() ; void handleEZTRACE_starpu_starpu_mpi_initialize_extended_334() ; void handleEZTRACE_starpu_starpu_mpi_shutdown_335() ; void handleEZTRACE_starpu_starpu_mpi_shutdown_336() ; void handleEZTRACE_starpu_starpu_mpi_get_data_on_node_337() ; void handleEZTRACE_starpu_starpu_mpi_get_data_on_node_338() ; void handleEZTRACE_starpu_starpu_mpi_get_data_on_node_detached_339() ; void handleEZTRACE_starpu_starpu_mpi_get_data_on_node_detached_340() ; void handleEZTRACE_starpu_starpu_mpi_redux_data_341() ; void handleEZTRACE_starpu_starpu_mpi_redux_data_342() ; void handleEZTRACE_starpu_starpu_mpi_scatter_detached_343() ; void handleEZTRACE_starpu_starpu_mpi_scatter_detached_344() ; void handleEZTRACE_starpu_starpu_mpi_gather_detached_345() ; void handleEZTRACE_starpu_starpu_mpi_gather_detached_346() ; void handleEZTRACE_starpu_starpu_mpi_isend_detached_unlock_tag_347() ; void handleEZTRACE_starpu_starpu_mpi_isend_detached_unlock_tag_348() ; void handleEZTRACE_starpu_starpu_mpi_irecv_detached_unlock_tag_349() ; void handleEZTRACE_starpu_starpu_mpi_irecv_detached_unlock_tag_350() ; void handleEZTRACE_starpu_starpu_mpi_isend_array_detached_unlock_tag_351() ; void handleEZTRACE_starpu_starpu_mpi_isend_array_detached_unlock_tag_352() ; void handleEZTRACE_starpu_starpu_mpi_irecv_array_detached_unlock_tag_353() ; void handleEZTRACE_starpu_starpu_mpi_irecv_array_detached_unlock_tag_354() ; void handleEZTRACE_starpu_starpu_mpi_comm_amounts_retrieve_355() ; void handleEZTRACE_starpu_starpu_mpi_comm_amounts_retrieve_356() ; void handleEZTRACE_starpu_starpu_mpi_cache_flush_357() ; void handleEZTRACE_starpu_starpu_mpi_cache_flush_358() ; void handleEZTRACE_starpu_starpu_mpi_cache_flush_all_data_359() ; void handleEZTRACE_starpu_starpu_mpi_cache_flush_all_data_360() ; void handleEZTRACE_starpu_starpu_mpi_data_register_361() ; void handleEZTRACE_starpu_starpu_mpi_data_register_362() ; void handleEZTRACE_starpu_starpu_sched_ctx_add_workers_411() ; void handleEZTRACE_starpu_starpu_sched_ctx_add_workers_412() ; void handleEZTRACE_starpu_starpu_sched_ctx_remove_workers_413() ; void handleEZTRACE_starpu_starpu_sched_ctx_remove_workers_414() ; void handleEZTRACE_starpu_starpu_sched_ctx_delete_415() ; void handleEZTRACE_starpu_starpu_sched_ctx_delete_416() ; void handleEZTRACE_starpu_starpu_sched_ctx_set_inheritor_417() ; void handleEZTRACE_starpu_starpu_sched_ctx_set_inheritor_418() ; void handleEZTRACE_starpu_starpu_sched_ctx_set_context_419() ; void handleEZTRACE_starpu_starpu_sched_ctx_set_context_420() ; void handleEZTRACE_starpu_starpu_sched_ctx_get_context_421() ; void handleEZTRACE_starpu_starpu_sched_ctx_get_context_422() ; void handleEZTRACE_starpu_starpu_sched_ctx_stop_task_submission_423() ; void handleEZTRACE_starpu_starpu_sched_ctx_stop_task_submission_424() ; void handleEZTRACE_starpu_starpu_sched_ctx_finished_submit_425() ; void handleEZTRACE_starpu_starpu_sched_ctx_finished_submit_426() ; void handleEZTRACE_starpu_starpu_sched_ctx_create_worker_collection_461() ; void handleEZTRACE_starpu_starpu_sched_ctx_create_worker_collection_462() ; void handleEZTRACE_starpu_starpu_sched_ctx_delete_worker_collection_463() ; void handleEZTRACE_starpu_starpu_sched_ctx_delete_worker_collection_464() ; void handleEZTRACE_starpu_starpu_sched_ctx_get_worker_collection_465() ; void handleEZTRACE_starpu_starpu_sched_ctx_get_worker_collection_466() ; void handleEZTRACE_starpu_starpu_prefetch_task_input_on_node_495() ; void handleEZTRACE_starpu_starpu_prefetch_task_input_on_node_496() ; void handleEZTRACE_starpu_starpu_malloc_521() ; void handleEZTRACE_starpu_starpu_malloc_522() ; void handleEZTRACE_starpu_starpu_free_523() ; void handleEZTRACE_starpu_starpu_free_524() ; void handleEZTRACE_starpu_starpu_malloc_flags_525() ; void handleEZTRACE_starpu_starpu_malloc_flags_526() ; void handleEZTRACE_starpu_starpu_free_flags_527() ; void handleEZTRACE_starpu_starpu_free_flags_528() ; void handleEZTRACE_starpu_starpu_tag_wait_537() ; void handleEZTRACE_starpu_starpu_tag_wait_538() ; void handleEZTRACE_starpu_starpu_tag_wait_array_539() ; void handleEZTRACE_starpu_starpu_tag_wait_array_540() ; void handleEZTRACE_starpu_starpu_tag_notify_from_apps_541() ; void handleEZTRACE_starpu_starpu_tag_notify_from_apps_542() ; void handleEZTRACE_starpu_starpu_task_init_547() ; void handleEZTRACE_starpu_starpu_task_init_548() ; void handleEZTRACE_starpu_starpu_task_clean_549() ; void handleEZTRACE_starpu_starpu_task_clean_550() ; void handleEZTRACE_starpu_starpu_task_create_551() ; void handleEZTRACE_starpu_starpu_task_create_552() ; void handleEZTRACE_starpu_starpu_task_destroy_553() ; void handleEZTRACE_starpu_starpu_task_destroy_554() ; void handleEZTRACE_starpu_starpu_task_submit_555() ; void handleEZTRACE_starpu_starpu_task_submit_556() ; void handleEZTRACE_starpu_starpu_task_submit_to_ctx_557() ; void handleEZTRACE_starpu_starpu_task_submit_to_ctx_558() ; void handleEZTRACE_starpu_starpu_task_wait_559() ; void handleEZTRACE_starpu_starpu_task_wait_560() ; void handleEZTRACE_starpu_starpu_task_wait_for_all_561() ; void handleEZTRACE_starpu_starpu_task_wait_for_all_562() ; void handleEZTRACE_starpu_starpu_task_wait_for_all_in_ctx_563() ; void handleEZTRACE_starpu_starpu_task_wait_for_all_in_ctx_564() ; void handleEZTRACE_starpu_starpu_task_wait_for_no_ready_565() ; void handleEZTRACE_starpu_starpu_task_wait_for_no_ready_566() ; void handleEZTRACE_starpu_starpu_task_nready_567() ; void handleEZTRACE_starpu_starpu_task_nready_568() ; void handleEZTRACE_starpu_starpu_task_nsubmitted_569() ; void handleEZTRACE_starpu_starpu_task_nsubmitted_570() ; void handleEZTRACE_starpu_starpu_task_dup_581() ; void handleEZTRACE_starpu_starpu_task_dup_582() ; void handleEZTRACE_starpu_starpu_task_bundle_create_587() ; void handleEZTRACE_starpu_starpu_task_bundle_create_588() ; void handleEZTRACE_starpu_starpu_task_bundle_insert_589() ; void handleEZTRACE_starpu_starpu_task_bundle_insert_590() ; void handleEZTRACE_starpu_starpu_task_bundle_remove_591() ; void handleEZTRACE_starpu_starpu_task_bundle_remove_592() ; void handleEZTRACE_starpu_starpu_task_bundle_close_593() ; void handleEZTRACE_starpu_starpu_task_bundle_close_594() ; void handleEZTRACE_starpu_starpu_create_sync_task_595() ; void handleEZTRACE_starpu_starpu_create_sync_task_596() ; void handleEZTRACE_starpu_starpu_execute_on_each_worker_691() ; void handleEZTRACE_starpu_starpu_execute_on_each_worker_692() ; void handleEZTRACE_starpu_starpu_execute_on_each_worker_ex_693() ; void handleEZTRACE_starpu_starpu_execute_on_each_worker_ex_694() ; void handleEZTRACE_starpu_starpu_execute_on_specific_workers_695() ; void handleEZTRACE_starpu_starpu_execute_on_specific_workers_696() ; void handleEZTRACE_starpu_starpu_data_cpy_697() ; void handleEZTRACE_starpu_starpu_data_cpy_698() ; /* Constructor of the plugin. * This function registers the current module to eztrace_convert */ struct eztrace_convert_module starpu_module; void libinit(void) __attribute__ ((constructor)); void libinit(void) { starpu_module.api_version = EZTRACE_API_VERSION; /* Specify the initialization function. * This function will be called once all the plugins are loaded * and the trace is started. * This function usually declared StateTypes, LinkTypes, etc. */ starpu_module.init = eztrace_convert_starpu_init; /* Specify the function to call for handling an event */ starpu_module.handle = handle_starpu_events; /* Specify the module prefix */ starpu_module.module_prefix = starpu_EVENTS_ID; asprintf(&starpu_module.name, "starpu"); asprintf(&starpu_module.description, "module for StarPU framework"); starpu_module.token.data = &starpu_module; /* Register the module to eztrace_convert */ eztrace_convert_register_module(&starpu_module); //printf("module starpu loaded\n"); } void libfinalize(void) __attribute__ ((destructor)); void libfinalize(void) { //printf("unloading module starpu\n"); } /* * This function will be called once all the plugins are loaded * and the trace is started. * This function usually declared StateTypes, LinkTypes, etc. */ int eztrace_convert_starpu_init() { if (get_mode() == EZTRACE_CONVERT) { addContType("CT_Scheduler", "CT_Program", "Scheduler"); // addContainer(0.00000, "CT_Sched", "CT_Scheduler", "C_Prog", "Scheduler", "0"); addVarType("starpu_VAR__0", "submitted task", "CT_Process"); // Internals // addEntityValue("starpu_STATE_0", "ST_Thread", "Executing a task", GTG_GREEN); // API addEntityValue("starpu_STATE_20", "ST_Thread", "starpu_cublas_init", GTG_DARKGREY); addEntityValue("starpu_STATE_21", "ST_Thread", "starpu_cublas_shutdown", GTG_DARKGREY); addEntityValue("starpu_STATE_23", "ST_Thread", "starpu_init", GTG_DARKGREY); addEntityValue("starpu_STATE_24", "ST_Thread", "starpu_pause", GTG_DARKGREY); addEntityValue("starpu_STATE_25", "ST_Thread", "starpu_resume", GTG_DARKGREY); addEntityValue("starpu_STATE_26", "ST_Thread", "starpu_shutdown", GTG_DARKGREY); addEntityValue("starpu_STATE_39", "ST_Thread", "starpu_data_unregister", GTG_DARKGREY); addEntityValue("starpu_STATE_40", "ST_Thread", "starpu_data_unregister_no_coherency", GTG_DARKGREY); addEntityValue("starpu_STATE_41", "ST_Thread", "starpu_data_unregister_submit", GTG_DARKGREY); addEntityValue("starpu_STATE_42", "ST_Thread", "starpu_data_invalidate", GTG_DARKGREY); addEntityValue("starpu_STATE_43", "ST_Thread", "starpu_data_invalidate_submit", GTG_DARKGREY); addEntityValue("starpu_STATE_45", "ST_Thread", "starpu_data_acquire", GTG_DARKGREY); addEntityValue("starpu_STATE_46", "ST_Thread", "starpu_data_acquire_on_node", GTG_DARKGREY); addEntityValue("starpu_STATE_47", "ST_Thread", "starpu_data_acquire_cb", GTG_DARKGREY); addEntityValue("starpu_STATE_48", "ST_Thread", "starpu_data_acquire_on_node_cb", GTG_DARKGREY); addEntityValue("starpu_STATE_49", "ST_Thread", "starpu_data_release", GTG_DARKGREY); addEntityValue("starpu_STATE_50", "ST_Thread", "starpu_data_release_on_node", GTG_DARKGREY); addEntityValue("starpu_STATE_52", "ST_Thread", "starpu_data_request_allocation", GTG_DARKGREY); addEntityValue("starpu_STATE_91", "ST_Thread", "starpu_malloc_on_node", GTG_DARKGREY); addEntityValue("starpu_STATE_92", "ST_Thread", "starpu_free_on_node", GTG_DARKGREY); addEntityValue("starpu_STATE_155", "ST_Thread", "starpu_mpi_isend", GTG_DARKGREY); addEntityValue("starpu_STATE_156", "ST_Thread", "starpu_mpi_irecv", GTG_DARKGREY); addEntityValue("starpu_STATE_157", "ST_Thread", "starpu_mpi_send", GTG_DARKGREY); addEntityValue("starpu_STATE_158", "ST_Thread", "starpu_mpi_recv", GTG_DARKGREY); addEntityValue("starpu_STATE_159", "ST_Thread", "starpu_mpi_isend_detached", GTG_DARKGREY); addEntityValue("starpu_STATE_160", "ST_Thread", "starpu_mpi_irecv_detached", GTG_DARKGREY); addEntityValue("starpu_STATE_161", "ST_Thread", "starpu_mpi_wait", GTG_DARKGREY); addEntityValue("starpu_STATE_162", "ST_Thread", "starpu_mpi_test", GTG_DARKGREY); addEntityValue("starpu_STATE_163", "ST_Thread", "starpu_mpi_barrier", GTG_DARKGREY); addEntityValue("starpu_STATE_164", "ST_Thread", "starpu_mpi_init", GTG_DARKGREY); addEntityValue("starpu_STATE_165", "ST_Thread", "starpu_mpi_initialize", GTG_DARKGREY); addEntityValue("starpu_STATE_166", "ST_Thread", "starpu_mpi_initialize_extended", GTG_DARKGREY); addEntityValue("starpu_STATE_167", "ST_Thread", "starpu_mpi_shutdown", GTG_DARKGREY); addEntityValue("starpu_STATE_168", "ST_Thread", "starpu_mpi_get_data_on_node", GTG_DARKGREY); addEntityValue("starpu_STATE_169", "ST_Thread", "starpu_mpi_get_data_on_node_detached", GTG_DARKGREY); addEntityValue("starpu_STATE_170", "ST_Thread", "starpu_mpi_redux_data", GTG_DARKGREY); addEntityValue("starpu_STATE_171", "ST_Thread", "starpu_mpi_scatter_detached", GTG_DARKGREY); addEntityValue("starpu_STATE_172", "ST_Thread", "starpu_mpi_gather_detached", GTG_DARKGREY); addEntityValue("starpu_STATE_173", "ST_Thread", "starpu_mpi_isend_detached_unlock_tag", GTG_DARKGREY); addEntityValue("starpu_STATE_174", "ST_Thread", "starpu_mpi_irecv_detached_unlock_tag", GTG_DARKGREY); addEntityValue("starpu_STATE_175", "ST_Thread", "starpu_mpi_isend_array_detached_unlock_tag", GTG_DARKGREY); addEntityValue("starpu_STATE_176", "ST_Thread", "starpu_mpi_irecv_array_detached_unlock_tag", GTG_DARKGREY); addEntityValue("starpu_STATE_177", "ST_Thread", "starpu_mpi_comm_amounts_retrieve", GTG_DARKGREY); addEntityValue("starpu_STATE_178", "ST_Thread", "starpu_mpi_cache_flush", GTG_DARKGREY); addEntityValue("starpu_STATE_179", "ST_Thread", "starpu_mpi_cache_flush_all_data", GTG_DARKGREY); addEntityValue("starpu_STATE_180", "ST_Thread", "starpu_mpi_data_register", GTG_DARKGREY); addEntityValue("starpu_STATE_205", "ST_Thread", "starpu_sched_ctx_add_workers", GTG_DARKGREY); addEntityValue("starpu_STATE_206", "ST_Thread", "starpu_sched_ctx_remove_workers", GTG_DARKGREY); addEntityValue("starpu_STATE_207", "ST_Thread", "starpu_sched_ctx_delete", GTG_DARKGREY); addEntityValue("starpu_STATE_208", "ST_Thread", "starpu_sched_ctx_set_inheritor", GTG_DARKGREY); addEntityValue("starpu_STATE_209", "ST_Thread", "starpu_sched_ctx_set_context", GTG_DARKGREY); addEntityValue("starpu_STATE_210", "ST_Thread", "starpu_sched_ctx_get_context", GTG_DARKGREY); addEntityValue("starpu_STATE_211", "ST_Thread", "starpu_sched_ctx_stop_task_submission", GTG_DARKGREY); addEntityValue("starpu_STATE_212", "ST_Thread", "starpu_sched_ctx_finished_submit", GTG_DARKGREY); addEntityValue("starpu_STATE_230", "ST_Thread", "starpu_sched_ctx_create_worker_collection", GTG_DARKGREY); addEntityValue("starpu_STATE_231", "ST_Thread", "starpu_sched_ctx_delete_worker_collection", GTG_DARKGREY); addEntityValue("starpu_STATE_232", "ST_Thread", "starpu_sched_ctx_get_worker_collection", GTG_DARKGREY); addEntityValue("starpu_STATE_247", "ST_Thread", "starpu_prefetch_task_input_on_node", GTG_DARKGREY); addEntityValue("starpu_STATE_260", "ST_Thread", "starpu_malloc", GTG_DARKGREY); addEntityValue("starpu_STATE_261", "ST_Thread", "starpu_free", GTG_DARKGREY); addEntityValue("starpu_STATE_262", "ST_Thread", "starpu_malloc_flags", GTG_DARKGREY); addEntityValue("starpu_STATE_263", "ST_Thread", "starpu_free_flags", GTG_DARKGREY); addEntityValue("starpu_STATE_268", "ST_Thread", "starpu_tag_wait", GTG_DARKGREY); addEntityValue("starpu_STATE_269", "ST_Thread", "starpu_tag_wait_array", GTG_DARKGREY); addEntityValue("starpu_STATE_270", "ST_Thread", "starpu_tag_notify_from_apps", GTG_DARKGREY); addEntityValue("starpu_STATE_273", "ST_Thread", "starpu_task_init", GTG_DARKGREY); addEntityValue("starpu_STATE_274", "ST_Thread", "starpu_task_clean", GTG_DARKGREY); addEntityValue("starpu_STATE_275", "ST_Thread", "starpu_task_create", GTG_DARKGREY); addEntityValue("starpu_STATE_276", "ST_Thread", "starpu_task_destroy", GTG_DARKGREY); addEntityValue("starpu_STATE_277", "ST_Thread", "starpu_task_submit", GTG_DARKGREY); addEntityValue("starpu_STATE_278", "ST_Thread", "starpu_task_submit_to_ctx", GTG_DARKGREY); addEntityValue("starpu_STATE_279", "ST_Thread", "starpu_task_wait", GTG_DARKGREY); addEntityValue("starpu_STATE_280", "ST_Thread", "starpu_task_wait_for_all", GTG_DARKGREY); addEntityValue("starpu_STATE_281", "ST_Thread", "starpu_task_wait_for_all_in_ctx", GTG_DARKGREY); addEntityValue("starpu_STATE_282", "ST_Thread", "starpu_task_wait_for_no_ready", GTG_DARKGREY); addEntityValue("starpu_STATE_283", "ST_Thread", "starpu_task_nready", GTG_DARKGREY); addEntityValue("starpu_STATE_284", "ST_Thread", "starpu_task_nsubmitted", GTG_DARKGREY); addEntityValue("starpu_STATE_290", "ST_Thread", "starpu_task_dup", GTG_DARKGREY); addEntityValue("starpu_STATE_293", "ST_Thread", "starpu_task_bundle_create", GTG_DARKGREY); addEntityValue("starpu_STATE_294", "ST_Thread", "starpu_task_bundle_insert", GTG_DARKGREY); addEntityValue("starpu_STATE_295", "ST_Thread", "starpu_task_bundle_remove", GTG_DARKGREY); addEntityValue("starpu_STATE_296", "ST_Thread", "starpu_task_bundle_close", GTG_DARKGREY); addEntityValue("starpu_STATE_297", "ST_Thread", "starpu_create_sync_task", GTG_DARKGREY); addEntityValue("starpu_STATE_345", "ST_Thread", "starpu_execute_on_each_worker", GTG_DARKGREY); addEntityValue("starpu_STATE_346", "ST_Thread", "starpu_execute_on_each_worker_ex", GTG_DARKGREY); addEntityValue("starpu_STATE_347", "ST_Thread", "starpu_execute_on_specific_workers", GTG_DARKGREY); addEntityValue("starpu_STATE_348", "ST_Thread", "starpu_data_cpy", GTG_DARKGREY); } ezt_list_new(&starpu_link_source_list); ezt_list_new(&starpu_task_type_stats_list); } /* This function is called by eztrace_convert for each event to * handle. * It shall return 1 if the event was handled successfully or * 0 otherwise. */ int handle_starpu_events(eztrace_event_t *ev) { switch (LITL_READ_GET_CODE(ev)) { case EZTRACE_starpu__starpu_driver_start_job: handleEZTRACE_starpu__starpu_driver_start_job(); break; case EZTRACE_starpu__starpu_driver_end_job: handleEZTRACE_starpu__starpu_driver_end_job(); break; case EZTRACE_starpu_starpu_cublas_init_41: handleEZTRACE_starpu_starpu_cublas_init_41(); break; case EZTRACE_starpu_starpu_cublas_init_42: handleEZTRACE_starpu_starpu_cublas_init_42(); break; case EZTRACE_starpu_starpu_cublas_shutdown_43: handleEZTRACE_starpu_starpu_cublas_shutdown_43(); break; case EZTRACE_starpu_starpu_cublas_shutdown_44: handleEZTRACE_starpu_starpu_cublas_shutdown_44(); break; case EZTRACE_starpu_starpu_init_47: handleEZTRACE_starpu_starpu_init_47(); break; case EZTRACE_starpu_starpu_init_48: handleEZTRACE_starpu_starpu_init_48(); break; case EZTRACE_starpu_starpu_pause_49: handleEZTRACE_starpu_starpu_pause_49(); break; case EZTRACE_starpu_starpu_pause_50: handleEZTRACE_starpu_starpu_pause_50(); break; case EZTRACE_starpu_starpu_resume_51: handleEZTRACE_starpu_starpu_resume_51(); break; case EZTRACE_starpu_starpu_resume_52: handleEZTRACE_starpu_starpu_resume_52(); break; case EZTRACE_starpu_starpu_shutdown_53: handleEZTRACE_starpu_starpu_shutdown_53(); break; case EZTRACE_starpu_starpu_shutdown_54: handleEZTRACE_starpu_starpu_shutdown_54(); break; case EZTRACE_starpu_starpu_data_unregister_79: handleEZTRACE_starpu_starpu_data_unregister_79(); break; case EZTRACE_starpu_starpu_data_unregister_80: handleEZTRACE_starpu_starpu_data_unregister_80(); break; case EZTRACE_starpu_starpu_data_unregister_no_coherency_81: handleEZTRACE_starpu_starpu_data_unregister_no_coherency_81(); break; case EZTRACE_starpu_starpu_data_unregister_no_coherency_82: handleEZTRACE_starpu_starpu_data_unregister_no_coherency_82(); break; case EZTRACE_starpu_starpu_data_unregister_submit_83: handleEZTRACE_starpu_starpu_data_unregister_submit_83(); break; case EZTRACE_starpu_starpu_data_unregister_submit_84: handleEZTRACE_starpu_starpu_data_unregister_submit_84(); break; case EZTRACE_starpu_starpu_data_invalidate_85: handleEZTRACE_starpu_starpu_data_invalidate_85(); break; case EZTRACE_starpu_starpu_data_invalidate_86: handleEZTRACE_starpu_starpu_data_invalidate_86(); break; case EZTRACE_starpu_starpu_data_invalidate_submit_87: handleEZTRACE_starpu_starpu_data_invalidate_submit_87(); break; case EZTRACE_starpu_starpu_data_invalidate_submit_88: handleEZTRACE_starpu_starpu_data_invalidate_submit_88(); break; case EZTRACE_starpu_starpu_data_acquire_91: handleEZTRACE_starpu_starpu_data_acquire_91(); break; case EZTRACE_starpu_starpu_data_acquire_92: handleEZTRACE_starpu_starpu_data_acquire_92(); break; case EZTRACE_starpu_starpu_data_acquire_on_node_93: handleEZTRACE_starpu_starpu_data_acquire_on_node_93(); break; case EZTRACE_starpu_starpu_data_acquire_on_node_94: handleEZTRACE_starpu_starpu_data_acquire_on_node_94(); break; case EZTRACE_starpu_starpu_data_acquire_cb_95: handleEZTRACE_starpu_starpu_data_acquire_cb_95(); break; case EZTRACE_starpu_starpu_data_acquire_cb_96: handleEZTRACE_starpu_starpu_data_acquire_cb_96(); break; case EZTRACE_starpu_starpu_data_acquire_on_node_cb_97: handleEZTRACE_starpu_starpu_data_acquire_on_node_cb_97(); break; case EZTRACE_starpu_starpu_data_acquire_on_node_cb_98: handleEZTRACE_starpu_starpu_data_acquire_on_node_cb_98(); break; case EZTRACE_starpu_starpu_data_release_99: handleEZTRACE_starpu_starpu_data_release_99(); break; case EZTRACE_starpu_starpu_data_release_100: handleEZTRACE_starpu_starpu_data_release_100(); break; case EZTRACE_starpu_starpu_data_release_on_node_101: handleEZTRACE_starpu_starpu_data_release_on_node_101(); break; case EZTRACE_starpu_starpu_data_release_on_node_102: handleEZTRACE_starpu_starpu_data_release_on_node_102(); break; case EZTRACE_starpu_starpu_malloc_on_node_183: handleEZTRACE_starpu_starpu_malloc_on_node_183(); break; case EZTRACE_starpu_starpu_malloc_on_node_184: handleEZTRACE_starpu_starpu_malloc_on_node_184(); break; case EZTRACE_starpu_starpu_free_on_node_185: handleEZTRACE_starpu_starpu_free_on_node_185(); break; case EZTRACE_starpu_starpu_free_on_node_186: handleEZTRACE_starpu_starpu_free_on_node_186(); break; case EZTRACE_starpu_starpu_mpi_isend_311: handleEZTRACE_starpu_starpu_mpi_isend_311(); break; case EZTRACE_starpu_starpu_mpi_isend_312: handleEZTRACE_starpu_starpu_mpi_isend_312(); break; case EZTRACE_starpu_starpu_mpi_irecv_313: handleEZTRACE_starpu_starpu_mpi_irecv_313(); break; case EZTRACE_starpu_starpu_mpi_irecv_314: handleEZTRACE_starpu_starpu_mpi_irecv_314(); break; case EZTRACE_starpu_starpu_mpi_send_315: handleEZTRACE_starpu_starpu_mpi_send_315(); break; case EZTRACE_starpu_starpu_mpi_send_316: handleEZTRACE_starpu_starpu_mpi_send_316(); break; case EZTRACE_starpu_starpu_mpi_recv_317: handleEZTRACE_starpu_starpu_mpi_recv_317(); break; case EZTRACE_starpu_starpu_mpi_recv_318: handleEZTRACE_starpu_starpu_mpi_recv_318(); break; case EZTRACE_starpu_starpu_mpi_isend_detached_319: handleEZTRACE_starpu_starpu_mpi_isend_detached_319(); break; case EZTRACE_starpu_starpu_mpi_isend_detached_320: handleEZTRACE_starpu_starpu_mpi_isend_detached_320(); break; case EZTRACE_starpu_starpu_mpi_irecv_detached_321: handleEZTRACE_starpu_starpu_mpi_irecv_detached_321(); break; case EZTRACE_starpu_starpu_mpi_irecv_detached_322: handleEZTRACE_starpu_starpu_mpi_irecv_detached_322(); break; case EZTRACE_starpu_starpu_mpi_wait_323: handleEZTRACE_starpu_starpu_mpi_wait_323(); break; case EZTRACE_starpu_starpu_mpi_wait_324: handleEZTRACE_starpu_starpu_mpi_wait_324(); break; case EZTRACE_starpu_starpu_mpi_test_325: handleEZTRACE_starpu_starpu_mpi_test_325(); break; case EZTRACE_starpu_starpu_mpi_test_326: handleEZTRACE_starpu_starpu_mpi_test_326(); break; case EZTRACE_starpu_starpu_mpi_barrier_327: handleEZTRACE_starpu_starpu_mpi_barrier_327(); break; case EZTRACE_starpu_starpu_mpi_barrier_328: handleEZTRACE_starpu_starpu_mpi_barrier_328(); break; case EZTRACE_starpu_starpu_mpi_init_329: handleEZTRACE_starpu_starpu_mpi_init_329(); break; case EZTRACE_starpu_starpu_mpi_init_330: handleEZTRACE_starpu_starpu_mpi_init_330(); break; case EZTRACE_starpu_starpu_mpi_initialize_331: handleEZTRACE_starpu_starpu_mpi_initialize_331(); break; case EZTRACE_starpu_starpu_mpi_initialize_332: handleEZTRACE_starpu_starpu_mpi_initialize_332(); break; case EZTRACE_starpu_starpu_mpi_initialize_extended_333: handleEZTRACE_starpu_starpu_mpi_initialize_extended_333(); break; case EZTRACE_starpu_starpu_mpi_initialize_extended_334: handleEZTRACE_starpu_starpu_mpi_initialize_extended_334(); break; case EZTRACE_starpu_starpu_mpi_shutdown_335: handleEZTRACE_starpu_starpu_mpi_shutdown_335(); break; case EZTRACE_starpu_starpu_mpi_shutdown_336: handleEZTRACE_starpu_starpu_mpi_shutdown_336(); break; case EZTRACE_starpu_starpu_mpi_get_data_on_node_337: handleEZTRACE_starpu_starpu_mpi_get_data_on_node_337(); break; case EZTRACE_starpu_starpu_mpi_get_data_on_node_338: handleEZTRACE_starpu_starpu_mpi_get_data_on_node_338(); break; case EZTRACE_starpu_starpu_mpi_get_data_on_node_detached_339: handleEZTRACE_starpu_starpu_mpi_get_data_on_node_detached_339(); break; case EZTRACE_starpu_starpu_mpi_get_data_on_node_detached_340: handleEZTRACE_starpu_starpu_mpi_get_data_on_node_detached_340(); break; case EZTRACE_starpu_starpu_mpi_redux_data_341: handleEZTRACE_starpu_starpu_mpi_redux_data_341(); break; case EZTRACE_starpu_starpu_mpi_redux_data_342: handleEZTRACE_starpu_starpu_mpi_redux_data_342(); break; case EZTRACE_starpu_starpu_mpi_scatter_detached_343: handleEZTRACE_starpu_starpu_mpi_scatter_detached_343(); break; case EZTRACE_starpu_starpu_mpi_scatter_detached_344: handleEZTRACE_starpu_starpu_mpi_scatter_detached_344(); break; case EZTRACE_starpu_starpu_mpi_gather_detached_345: handleEZTRACE_starpu_starpu_mpi_gather_detached_345(); break; case EZTRACE_starpu_starpu_mpi_gather_detached_346: handleEZTRACE_starpu_starpu_mpi_gather_detached_346(); break; case EZTRACE_starpu_starpu_mpi_isend_detached_unlock_tag_347: handleEZTRACE_starpu_starpu_mpi_isend_detached_unlock_tag_347(); break; case EZTRACE_starpu_starpu_mpi_isend_detached_unlock_tag_348: handleEZTRACE_starpu_starpu_mpi_isend_detached_unlock_tag_348(); break; case EZTRACE_starpu_starpu_mpi_irecv_detached_unlock_tag_349: handleEZTRACE_starpu_starpu_mpi_irecv_detached_unlock_tag_349(); break; case EZTRACE_starpu_starpu_mpi_irecv_detached_unlock_tag_350: handleEZTRACE_starpu_starpu_mpi_irecv_detached_unlock_tag_350(); break; case EZTRACE_starpu_starpu_mpi_isend_array_detached_unlock_tag_351: handleEZTRACE_starpu_starpu_mpi_isend_array_detached_unlock_tag_351(); break; case EZTRACE_starpu_starpu_mpi_isend_array_detached_unlock_tag_352: handleEZTRACE_starpu_starpu_mpi_isend_array_detached_unlock_tag_352(); break; case EZTRACE_starpu_starpu_mpi_irecv_array_detached_unlock_tag_353: handleEZTRACE_starpu_starpu_mpi_irecv_array_detached_unlock_tag_353(); break; case EZTRACE_starpu_starpu_mpi_irecv_array_detached_unlock_tag_354: handleEZTRACE_starpu_starpu_mpi_irecv_array_detached_unlock_tag_354(); break; case EZTRACE_starpu_starpu_mpi_comm_amounts_retrieve_355: handleEZTRACE_starpu_starpu_mpi_comm_amounts_retrieve_355(); break; case EZTRACE_starpu_starpu_mpi_comm_amounts_retrieve_356: handleEZTRACE_starpu_starpu_mpi_comm_amounts_retrieve_356(); break; case EZTRACE_starpu_starpu_mpi_cache_flush_357: handleEZTRACE_starpu_starpu_mpi_cache_flush_357(); break; case EZTRACE_starpu_starpu_mpi_cache_flush_358: handleEZTRACE_starpu_starpu_mpi_cache_flush_358(); break; case EZTRACE_starpu_starpu_mpi_cache_flush_all_data_359: handleEZTRACE_starpu_starpu_mpi_cache_flush_all_data_359(); break; case EZTRACE_starpu_starpu_mpi_cache_flush_all_data_360: handleEZTRACE_starpu_starpu_mpi_cache_flush_all_data_360(); break; case EZTRACE_starpu_starpu_mpi_data_register_361: handleEZTRACE_starpu_starpu_mpi_data_register_361(); break; case EZTRACE_starpu_starpu_mpi_data_register_362: handleEZTRACE_starpu_starpu_mpi_data_register_362(); break; case EZTRACE_starpu_starpu_sched_ctx_add_workers_411: handleEZTRACE_starpu_starpu_sched_ctx_add_workers_411(); break; case EZTRACE_starpu_starpu_sched_ctx_add_workers_412: handleEZTRACE_starpu_starpu_sched_ctx_add_workers_412(); break; case EZTRACE_starpu_starpu_sched_ctx_remove_workers_413: handleEZTRACE_starpu_starpu_sched_ctx_remove_workers_413(); break; case EZTRACE_starpu_starpu_sched_ctx_remove_workers_414: handleEZTRACE_starpu_starpu_sched_ctx_remove_workers_414(); break; case EZTRACE_starpu_starpu_sched_ctx_delete_415: handleEZTRACE_starpu_starpu_sched_ctx_delete_415(); break; case EZTRACE_starpu_starpu_sched_ctx_delete_416: handleEZTRACE_starpu_starpu_sched_ctx_delete_416(); break; case EZTRACE_starpu_starpu_sched_ctx_set_inheritor_417: handleEZTRACE_starpu_starpu_sched_ctx_set_inheritor_417(); break; case EZTRACE_starpu_starpu_sched_ctx_set_inheritor_418: handleEZTRACE_starpu_starpu_sched_ctx_set_inheritor_418(); break; case EZTRACE_starpu_starpu_sched_ctx_set_context_419: handleEZTRACE_starpu_starpu_sched_ctx_set_context_419(); break; case EZTRACE_starpu_starpu_sched_ctx_set_context_420: handleEZTRACE_starpu_starpu_sched_ctx_set_context_420(); break; case EZTRACE_starpu_starpu_sched_ctx_get_context_421: handleEZTRACE_starpu_starpu_sched_ctx_get_context_421(); break; case EZTRACE_starpu_starpu_sched_ctx_get_context_422: handleEZTRACE_starpu_starpu_sched_ctx_get_context_422(); break; case EZTRACE_starpu_starpu_sched_ctx_stop_task_submission_423: handleEZTRACE_starpu_starpu_sched_ctx_stop_task_submission_423(); break; case EZTRACE_starpu_starpu_sched_ctx_stop_task_submission_424: handleEZTRACE_starpu_starpu_sched_ctx_stop_task_submission_424(); break; case EZTRACE_starpu_starpu_sched_ctx_finished_submit_425: handleEZTRACE_starpu_starpu_sched_ctx_finished_submit_425(); break; case EZTRACE_starpu_starpu_sched_ctx_finished_submit_426: handleEZTRACE_starpu_starpu_sched_ctx_finished_submit_426(); break; case EZTRACE_starpu_starpu_sched_ctx_create_worker_collection_461: handleEZTRACE_starpu_starpu_sched_ctx_create_worker_collection_461(); break; case EZTRACE_starpu_starpu_sched_ctx_create_worker_collection_462: handleEZTRACE_starpu_starpu_sched_ctx_create_worker_collection_462(); break; case EZTRACE_starpu_starpu_sched_ctx_delete_worker_collection_463: handleEZTRACE_starpu_starpu_sched_ctx_delete_worker_collection_463(); break; case EZTRACE_starpu_starpu_sched_ctx_delete_worker_collection_464: handleEZTRACE_starpu_starpu_sched_ctx_delete_worker_collection_464(); break; case EZTRACE_starpu_starpu_sched_ctx_get_worker_collection_465: handleEZTRACE_starpu_starpu_sched_ctx_get_worker_collection_465(); break; case EZTRACE_starpu_starpu_sched_ctx_get_worker_collection_466: handleEZTRACE_starpu_starpu_sched_ctx_get_worker_collection_466(); break; case EZTRACE_starpu_starpu_prefetch_task_input_on_node_495: handleEZTRACE_starpu_starpu_prefetch_task_input_on_node_495(); break; case EZTRACE_starpu_starpu_prefetch_task_input_on_node_496: handleEZTRACE_starpu_starpu_prefetch_task_input_on_node_496(); break; case EZTRACE_starpu_starpu_malloc_521: handleEZTRACE_starpu_starpu_malloc_521(); break; case EZTRACE_starpu_starpu_malloc_522: handleEZTRACE_starpu_starpu_malloc_522(); break; case EZTRACE_starpu_starpu_free_523: handleEZTRACE_starpu_starpu_free_523(); break; case EZTRACE_starpu_starpu_free_524: handleEZTRACE_starpu_starpu_free_524(); break; case EZTRACE_starpu_starpu_malloc_flags_525: handleEZTRACE_starpu_starpu_malloc_flags_525(); break; case EZTRACE_starpu_starpu_malloc_flags_526: handleEZTRACE_starpu_starpu_malloc_flags_526(); break; case EZTRACE_starpu_starpu_free_flags_527: handleEZTRACE_starpu_starpu_free_flags_527(); break; case EZTRACE_starpu_starpu_free_flags_528: handleEZTRACE_starpu_starpu_free_flags_528(); break; case EZTRACE_starpu_starpu_tag_wait_537: handleEZTRACE_starpu_starpu_tag_wait_537(); break; case EZTRACE_starpu_starpu_tag_wait_538: handleEZTRACE_starpu_starpu_tag_wait_538(); break; case EZTRACE_starpu_starpu_tag_wait_array_539: handleEZTRACE_starpu_starpu_tag_wait_array_539(); break; case EZTRACE_starpu_starpu_tag_wait_array_540: handleEZTRACE_starpu_starpu_tag_wait_array_540(); break; case EZTRACE_starpu_starpu_tag_notify_from_apps_541: handleEZTRACE_starpu_starpu_tag_notify_from_apps_541(); break; case EZTRACE_starpu_starpu_tag_notify_from_apps_542: handleEZTRACE_starpu_starpu_tag_notify_from_apps_542(); break; case EZTRACE_starpu_starpu_task_init_547: handleEZTRACE_starpu_starpu_task_init_547(); break; case EZTRACE_starpu_starpu_task_init_548: handleEZTRACE_starpu_starpu_task_init_548(); break; case EZTRACE_starpu_starpu_task_clean_549: handleEZTRACE_starpu_starpu_task_clean_549(); break; case EZTRACE_starpu_starpu_task_clean_550: handleEZTRACE_starpu_starpu_task_clean_550(); break; case EZTRACE_starpu_starpu_task_create_551: handleEZTRACE_starpu_starpu_task_create_551(); break; case EZTRACE_starpu_starpu_task_create_552: handleEZTRACE_starpu_starpu_task_create_552(); break; case EZTRACE_starpu_starpu_task_destroy_553: handleEZTRACE_starpu_starpu_task_destroy_553(); break; case EZTRACE_starpu_starpu_task_destroy_554: handleEZTRACE_starpu_starpu_task_destroy_554(); break; case EZTRACE_starpu_starpu_task_submit_555: handleEZTRACE_starpu_starpu_task_submit_555(); break; case EZTRACE_starpu_starpu_task_submit_556: handleEZTRACE_starpu_starpu_task_submit_556(); break; case EZTRACE_starpu_starpu_task_submit_to_ctx_557: handleEZTRACE_starpu_starpu_task_submit_to_ctx_557(); break; case EZTRACE_starpu_starpu_task_submit_to_ctx_558: handleEZTRACE_starpu_starpu_task_submit_to_ctx_558(); break; case EZTRACE_starpu_starpu_task_wait_559: handleEZTRACE_starpu_starpu_task_wait_559(); break; case EZTRACE_starpu_starpu_task_wait_560: handleEZTRACE_starpu_starpu_task_wait_560(); break; case EZTRACE_starpu_starpu_task_wait_for_all_561: handleEZTRACE_starpu_starpu_task_wait_for_all_561(); break; case EZTRACE_starpu_starpu_task_wait_for_all_562: handleEZTRACE_starpu_starpu_task_wait_for_all_562(); break; case EZTRACE_starpu_starpu_task_wait_for_all_in_ctx_563: handleEZTRACE_starpu_starpu_task_wait_for_all_in_ctx_563(); break; case EZTRACE_starpu_starpu_task_wait_for_all_in_ctx_564: handleEZTRACE_starpu_starpu_task_wait_for_all_in_ctx_564(); break; case EZTRACE_starpu_starpu_task_wait_for_no_ready_565: handleEZTRACE_starpu_starpu_task_wait_for_no_ready_565(); break; case EZTRACE_starpu_starpu_task_wait_for_no_ready_566: handleEZTRACE_starpu_starpu_task_wait_for_no_ready_566(); break; case EZTRACE_starpu_starpu_task_nready_567: handleEZTRACE_starpu_starpu_task_nready_567(); break; case EZTRACE_starpu_starpu_task_nready_568: handleEZTRACE_starpu_starpu_task_nready_568(); break; case EZTRACE_starpu_starpu_task_nsubmitted_569: handleEZTRACE_starpu_starpu_task_nsubmitted_569(); break; case EZTRACE_starpu_starpu_task_nsubmitted_570: handleEZTRACE_starpu_starpu_task_nsubmitted_570(); break; case EZTRACE_starpu_starpu_task_dup_581: handleEZTRACE_starpu_starpu_task_dup_581(); break; case EZTRACE_starpu_starpu_task_dup_582: handleEZTRACE_starpu_starpu_task_dup_582(); break; case EZTRACE_starpu_starpu_task_bundle_create_587: handleEZTRACE_starpu_starpu_task_bundle_create_587(); break; case EZTRACE_starpu_starpu_task_bundle_create_588: handleEZTRACE_starpu_starpu_task_bundle_create_588(); break; case EZTRACE_starpu_starpu_task_bundle_insert_589: handleEZTRACE_starpu_starpu_task_bundle_insert_589(); break; case EZTRACE_starpu_starpu_task_bundle_insert_590: handleEZTRACE_starpu_starpu_task_bundle_insert_590(); break; case EZTRACE_starpu_starpu_task_bundle_remove_591: handleEZTRACE_starpu_starpu_task_bundle_remove_591(); break; case EZTRACE_starpu_starpu_task_bundle_remove_592: handleEZTRACE_starpu_starpu_task_bundle_remove_592(); break; case EZTRACE_starpu_starpu_task_bundle_close_593: handleEZTRACE_starpu_starpu_task_bundle_close_593(); break; case EZTRACE_starpu_starpu_task_bundle_close_594: handleEZTRACE_starpu_starpu_task_bundle_close_594(); break; case EZTRACE_starpu_starpu_create_sync_task_595: handleEZTRACE_starpu_starpu_create_sync_task_595(); break; case EZTRACE_starpu_starpu_create_sync_task_596: handleEZTRACE_starpu_starpu_create_sync_task_596(); break; case EZTRACE_starpu_starpu_execute_on_each_worker_691: handleEZTRACE_starpu_starpu_execute_on_each_worker_691(); break; case EZTRACE_starpu_starpu_execute_on_each_worker_692: handleEZTRACE_starpu_starpu_execute_on_each_worker_692(); break; case EZTRACE_starpu_starpu_execute_on_each_worker_ex_693: handleEZTRACE_starpu_starpu_execute_on_each_worker_ex_693(); break; case EZTRACE_starpu_starpu_execute_on_each_worker_ex_694: handleEZTRACE_starpu_starpu_execute_on_each_worker_ex_694(); break; case EZTRACE_starpu_starpu_execute_on_specific_workers_695: handleEZTRACE_starpu_starpu_execute_on_specific_workers_695(); break; case EZTRACE_starpu_starpu_execute_on_specific_workers_696: handleEZTRACE_starpu_starpu_execute_on_specific_workers_696(); break; case EZTRACE_starpu_starpu_data_cpy_697: handleEZTRACE_starpu_starpu_data_cpy_697(); break; case EZTRACE_starpu_starpu_data_cpy_698: handleEZTRACE_starpu_starpu_data_cpy_698(); break; default: /* The event was not handled */ return 0; } return 1; } // Internals void handleEZTRACE_starpu__starpu_driver_start_job() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); char *proc = calloc(1, sizeof(char) * 9); sprintf(proc, "CT_SP#%i", CUR_RANK); CHANGE() subVar (CURRENT, "starpu_VAR__0", proc, (varPrec) 1); // CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_0"); // free(proc); } void handleEZTRACE_starpu__starpu_driver_end_job() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); // CHANGE() popState (CURRENT, "ST_Thread", thread_id); } //API void handleEZTRACE_starpu_starpu_cublas_init_41() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_20"); } void handleEZTRACE_starpu_starpu_cublas_init_42() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_cublas_shutdown_43() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_21"); } void handleEZTRACE_starpu_starpu_cublas_shutdown_44() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_init_47() { FUNC_NAME; char *proc = calloc(1, sizeof(char) * 5); char *procCpt = calloc(1, sizeof(char) * 9); DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_23"); sprintf(procCpt,"CT_SP#%i", CUR_RANK); sprintf(proc,"P#%i", CUR_RANK); addContainer(0.00000, procCpt, "CT_Scheduler", proc, "Task queue ", "0"); CHANGE() setVar (CURRENT, "starpu_VAR__0", procCpt, 0); } void handleEZTRACE_starpu_starpu_init_48() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_pause_49() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_24"); } void handleEZTRACE_starpu_starpu_pause_50() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_resume_51() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_25"); } void handleEZTRACE_starpu_starpu_resume_52() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_shutdown_53() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_26"); } void handleEZTRACE_starpu_starpu_shutdown_54() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_data_unregister_79() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_39"); } void handleEZTRACE_starpu_starpu_data_unregister_80() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_data_unregister_no_coherency_81() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_40"); } void handleEZTRACE_starpu_starpu_data_unregister_no_coherency_82() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_data_unregister_submit_83() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_41"); } void handleEZTRACE_starpu_starpu_data_unregister_submit_84() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_data_invalidate_85() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_42"); } void handleEZTRACE_starpu_starpu_data_invalidate_86() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_data_invalidate_submit_87() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_43"); } void handleEZTRACE_starpu_starpu_data_invalidate_submit_88() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_data_acquire_91() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_45"); } void handleEZTRACE_starpu_starpu_data_acquire_92() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_data_acquire_on_node_93() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_46"); } void handleEZTRACE_starpu_starpu_data_acquire_on_node_94() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_data_acquire_cb_95() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_47"); } void handleEZTRACE_starpu_starpu_data_acquire_cb_96() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_data_acquire_on_node_cb_97() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_48"); } void handleEZTRACE_starpu_starpu_data_acquire_on_node_cb_98() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_data_release_99() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_49"); } void handleEZTRACE_starpu_starpu_data_release_100() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_data_release_on_node_101() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_50"); } void handleEZTRACE_starpu_starpu_data_release_on_node_102() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_malloc_on_node_183() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_91"); } void handleEZTRACE_starpu_starpu_malloc_on_node_184() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_free_on_node_185() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_92"); } void handleEZTRACE_starpu_starpu_free_on_node_186() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_isend_311() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_155"); } void handleEZTRACE_starpu_starpu_mpi_isend_312() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_irecv_313() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_156"); } void handleEZTRACE_starpu_starpu_mpi_irecv_314() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_send_315() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_157"); } void handleEZTRACE_starpu_starpu_mpi_send_316() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_recv_317() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_158"); } void handleEZTRACE_starpu_starpu_mpi_recv_318() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_isend_detached_319() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_159"); } void handleEZTRACE_starpu_starpu_mpi_isend_detached_320() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_irecv_detached_321() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_160"); } void handleEZTRACE_starpu_starpu_mpi_irecv_detached_322() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_wait_323() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_161"); } void handleEZTRACE_starpu_starpu_mpi_wait_324() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_test_325() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_162"); } void handleEZTRACE_starpu_starpu_mpi_test_326() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_barrier_327() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_163"); } void handleEZTRACE_starpu_starpu_mpi_barrier_328() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_init_329() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_164"); } void handleEZTRACE_starpu_starpu_mpi_init_330() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_initialize_331() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_165"); } void handleEZTRACE_starpu_starpu_mpi_initialize_332() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_initialize_extended_333() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_166"); } void handleEZTRACE_starpu_starpu_mpi_initialize_extended_334() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_shutdown_335() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_167"); } void handleEZTRACE_starpu_starpu_mpi_shutdown_336() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_get_data_on_node_337() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_168"); } void handleEZTRACE_starpu_starpu_mpi_get_data_on_node_338() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_get_data_on_node_detached_339() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_169"); } void handleEZTRACE_starpu_starpu_mpi_get_data_on_node_detached_340() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_redux_data_341() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_170"); } void handleEZTRACE_starpu_starpu_mpi_redux_data_342() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_scatter_detached_343() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_171"); } void handleEZTRACE_starpu_starpu_mpi_scatter_detached_344() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_gather_detached_345() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_172"); } void handleEZTRACE_starpu_starpu_mpi_gather_detached_346() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_isend_detached_unlock_tag_347() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_173"); } void handleEZTRACE_starpu_starpu_mpi_isend_detached_unlock_tag_348() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_irecv_detached_unlock_tag_349() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_174"); } void handleEZTRACE_starpu_starpu_mpi_irecv_detached_unlock_tag_350() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_isend_array_detached_unlock_tag_351() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_175"); } void handleEZTRACE_starpu_starpu_mpi_isend_array_detached_unlock_tag_352() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_irecv_array_detached_unlock_tag_353() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_176"); } void handleEZTRACE_starpu_starpu_mpi_irecv_array_detached_unlock_tag_354() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_comm_amounts_retrieve_355() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_177"); } void handleEZTRACE_starpu_starpu_mpi_comm_amounts_retrieve_356() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_cache_flush_357() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_178"); } void handleEZTRACE_starpu_starpu_mpi_cache_flush_358() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_cache_flush_all_data_359() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_179"); } void handleEZTRACE_starpu_starpu_mpi_cache_flush_all_data_360() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_mpi_data_register_361() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_180"); } void handleEZTRACE_starpu_starpu_mpi_data_register_362() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_sched_ctx_add_workers_411() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_205"); } void handleEZTRACE_starpu_starpu_sched_ctx_add_workers_412() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_sched_ctx_remove_workers_413() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_206"); } void handleEZTRACE_starpu_starpu_sched_ctx_remove_workers_414() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_sched_ctx_delete_415() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_207"); } void handleEZTRACE_starpu_starpu_sched_ctx_delete_416() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_sched_ctx_set_inheritor_417() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_208"); } void handleEZTRACE_starpu_starpu_sched_ctx_set_inheritor_418() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_sched_ctx_set_context_419() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_209"); } void handleEZTRACE_starpu_starpu_sched_ctx_set_context_420() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_sched_ctx_get_context_421() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_210"); } void handleEZTRACE_starpu_starpu_sched_ctx_get_context_422() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_sched_ctx_stop_task_submission_423() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_211"); } void handleEZTRACE_starpu_starpu_sched_ctx_stop_task_submission_424() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_sched_ctx_finished_submit_425() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_212"); } void handleEZTRACE_starpu_starpu_sched_ctx_finished_submit_426() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_sched_ctx_create_worker_collection_461() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_230"); } void handleEZTRACE_starpu_starpu_sched_ctx_create_worker_collection_462() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_sched_ctx_delete_worker_collection_463() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_231"); } void handleEZTRACE_starpu_starpu_sched_ctx_delete_worker_collection_464() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_sched_ctx_get_worker_collection_465() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_232"); } void handleEZTRACE_starpu_starpu_sched_ctx_get_worker_collection_466() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_prefetch_task_input_on_node_495() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_247"); } void handleEZTRACE_starpu_starpu_prefetch_task_input_on_node_496() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_malloc_521() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_260"); } void handleEZTRACE_starpu_starpu_malloc_522() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_free_523() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_261"); } void handleEZTRACE_starpu_starpu_free_524() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_malloc_flags_525() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_262"); } void handleEZTRACE_starpu_starpu_malloc_flags_526() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_free_flags_527() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_263"); } void handleEZTRACE_starpu_starpu_free_flags_528() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_tag_wait_537() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_268"); } void handleEZTRACE_starpu_starpu_tag_wait_538() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_tag_wait_array_539() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_269"); } void handleEZTRACE_starpu_starpu_tag_wait_array_540() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_tag_notify_from_apps_541() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_270"); } void handleEZTRACE_starpu_starpu_tag_notify_from_apps_542() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_task_init_547() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_273"); } void handleEZTRACE_starpu_starpu_task_init_548() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_task_clean_549() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_274"); } void handleEZTRACE_starpu_starpu_task_clean_550() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_task_create_551() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_275"); } void handleEZTRACE_starpu_starpu_task_create_552() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_task_destroy_553() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_276"); } void handleEZTRACE_starpu_starpu_task_destroy_554() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_task_submit_555() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_277"); } void handleEZTRACE_starpu_starpu_task_submit_556() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); char *proc = calloc(1, sizeof(char) * 9); sprintf(proc, "CT_SP#%i", CUR_RANK); CHANGE() addVar (CURRENT, "starpu_VAR__0", proc, (varPrec) 1); CHANGE() popState (CURRENT, "ST_Thread", thread_id); // free(proc); } void handleEZTRACE_starpu_starpu_task_submit_to_ctx_557() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_278"); } void handleEZTRACE_starpu_starpu_task_submit_to_ctx_558() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_task_wait_559() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_279"); } void handleEZTRACE_starpu_starpu_task_wait_560() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_task_wait_for_all_561() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_280"); } void handleEZTRACE_starpu_starpu_task_wait_for_all_562() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_task_wait_for_all_in_ctx_563() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_281"); } void handleEZTRACE_starpu_starpu_task_wait_for_all_in_ctx_564() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_task_wait_for_no_ready_565() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_282"); } void handleEZTRACE_starpu_starpu_task_wait_for_no_ready_566() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_task_nready_567() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_283"); } void handleEZTRACE_starpu_starpu_task_nready_568() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_task_nsubmitted_569() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_284"); } void handleEZTRACE_starpu_starpu_task_nsubmitted_570() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_task_dup_581() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_290"); } void handleEZTRACE_starpu_starpu_task_dup_582() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_task_bundle_create_587() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_293"); } void handleEZTRACE_starpu_starpu_task_bundle_create_588() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_task_bundle_insert_589() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_294"); } void handleEZTRACE_starpu_starpu_task_bundle_insert_590() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_task_bundle_remove_591() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_295"); } void handleEZTRACE_starpu_starpu_task_bundle_remove_592() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_task_bundle_close_593() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_296"); } void handleEZTRACE_starpu_starpu_task_bundle_close_594() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_create_sync_task_595() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_297"); } void handleEZTRACE_starpu_starpu_create_sync_task_596() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_execute_on_each_worker_691() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_345"); } void handleEZTRACE_starpu_starpu_execute_on_each_worker_692() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_execute_on_each_worker_ex_693() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_346"); } void handleEZTRACE_starpu_starpu_execute_on_each_worker_ex_694() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_execute_on_specific_workers_695() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_347"); } void handleEZTRACE_starpu_starpu_execute_on_specific_workers_696() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } void handleEZTRACE_starpu_starpu_data_cpy_697() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState (CURRENT, "ST_Thread", thread_id, "starpu_STATE_348"); } void handleEZTRACE_starpu_starpu_data_cpy_698() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState (CURRENT, "ST_Thread", thread_id); } eztrace-1.1-7/src/modules/starpu/PaxHeaders.7332/eztrace_convert_starpu.h0000644000000000000000000000013213012560437023351 xustar0030 mtime=1479205151.300727536 30 atime=1507797543.126866173 30 ctime=1508162368.149943657 eztrace-1.1-7/src/modules/starpu/eztrace_convert_starpu.h0000644000175000017500000000026613012560437024544 0ustar00trahaytrahay00000000000000/* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include "eztrace_convert.h" static int recording_stats = 0; eztrace-1.1-7/src/modules/starpu/PaxHeaders.7332/Makefile.am0000644000000000000000000000013213012560437020441 xustar0030 mtime=1479205151.300727536 30 atime=1508162220.169847151 30 ctime=1508162368.145943308 eztrace-1.1-7/src/modules/starpu/Makefile.am0000644000175000017500000000326713012560437021640 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis # See COPYING in top-level directory. TLCFLAGS=$(TL_CPPFLAGS) TLLDFLAGS=$(TL_LDFLAGS) TLLIBADD=$(TL_LIB) GTGCFLAGS=$(GTG_CPPFLAGS) GTGLDFLAGS=$(GTG_LDFLAGS) GTGDEPENDENCIES = $(GTG_DEPENDENCIES) GTGLIBADD=$(GTG_LIB) if USE_STARPU AM_CFLAGS = -I$(srcdir)/../../core/ -I$(top_builddir)/src/core \ -I$(top_srdir)/src/pptrace -I$(srcdir)/starpu-include \ -I$(STARPU_ROOT)/include/starpu/1.3 STARPU_VERSION= starpu-1.3 lib_LTLIBRARIES = libeztrace-convert-starpu.la \ libeztrace-starpu.la \ libeztrace-autostart-starpu.la libeztrace_convert_starpu_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(GTGCFLAGS) $(STARPU_CPPFLAGS) libeztrace_convert_starpu_la_LIBADD = $(TLLIBADD) $(GTGLIBADD) $(STARPU_LDFLAGS) libeztrace_convert_starpu_la_LDFLAGS = $(GTGLDFLAGS) $(TLLDFLAGS) libeztrace_convert_starpu_la_DEPENDENCIES = $(GTGDEPENDENCIES) libeztrace_convert_starpu_la_SOURCES = eztrace_convert_starpu.c libeztrace_starpu_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(STARPU_CPPFLAGS) libeztrace_starpu_la_LIBADD = -lm $(TLLIBADD) $(STARPU_LDFLAGS) libeztrace_starpu_la_LDFLAGS = --no-undefined $(TLLDFLAGS) -Wl,-Bsymbolic libeztrace_starpu_la_SOURCES = starpu.c libeztrace_autostart_starpu_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(STARPU_CPPFLAGS) libeztrace_autostart_starpu_la_LIBADD = -lm -lpthread $(TLLIBADD) $(STARPU_LDFLAGS) libeztrace_autostart_starpu_la_LDFLAGS = --no-undefined $(TLLDFLAGS) -Wl,-Bsymbolic libeztrace_autostart_starpu_la_CFLAGS = $(AM_CFLAGS) -W -Wall -Wextra -DEZTRACE_AUTOSTART libeztrace_autostart_starpu_la_SOURCES = starpu.c noinst_HEADERS = starpu_ev_codes.h eztrace_convert_starpu.h endif #USE_STARPU eztrace-1.1-7/src/modules/starpu/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135254020453 xustar0030 mtime=1508162220.201849505 30 atime=1508162286.691033055 30 ctime=1508162368.153944007 eztrace-1.1-7/src/modules/starpu/Makefile.in0000644000175000017500000007515013171135254021652 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src/modules/starpu ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__noinst_HEADERS_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) @USE_STARPU_TRUE@libeztrace_autostart_starpu_la_DEPENDENCIES = \ @USE_STARPU_TRUE@ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) am__libeztrace_autostart_starpu_la_SOURCES_DIST = starpu.c @USE_STARPU_TRUE@am_libeztrace_autostart_starpu_la_OBJECTS = \ @USE_STARPU_TRUE@ libeztrace_autostart_starpu_la-starpu.lo libeztrace_autostart_starpu_la_OBJECTS = \ $(am_libeztrace_autostart_starpu_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libeztrace_autostart_starpu_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(libeztrace_autostart_starpu_la_CFLAGS) $(CFLAGS) \ $(libeztrace_autostart_starpu_la_LDFLAGS) $(LDFLAGS) -o $@ @USE_STARPU_TRUE@am_libeztrace_autostart_starpu_la_rpath = -rpath \ @USE_STARPU_TRUE@ $(libdir) am__libeztrace_convert_starpu_la_SOURCES_DIST = \ eztrace_convert_starpu.c @USE_STARPU_TRUE@am_libeztrace_convert_starpu_la_OBJECTS = libeztrace_convert_starpu_la-eztrace_convert_starpu.lo libeztrace_convert_starpu_la_OBJECTS = \ $(am_libeztrace_convert_starpu_la_OBJECTS) libeztrace_convert_starpu_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libeztrace_convert_starpu_la_LDFLAGS) \ $(LDFLAGS) -o $@ @USE_STARPU_TRUE@am_libeztrace_convert_starpu_la_rpath = -rpath \ @USE_STARPU_TRUE@ $(libdir) @USE_STARPU_TRUE@libeztrace_starpu_la_DEPENDENCIES = \ @USE_STARPU_TRUE@ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) am__libeztrace_starpu_la_SOURCES_DIST = starpu.c @USE_STARPU_TRUE@am_libeztrace_starpu_la_OBJECTS = \ @USE_STARPU_TRUE@ libeztrace_starpu_la-starpu.lo libeztrace_starpu_la_OBJECTS = $(am_libeztrace_starpu_la_OBJECTS) libeztrace_starpu_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libeztrace_starpu_la_LDFLAGS) \ $(LDFLAGS) -o $@ @USE_STARPU_TRUE@am_libeztrace_starpu_la_rpath = -rpath $(libdir) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libeztrace_autostart_starpu_la_SOURCES) \ $(libeztrace_convert_starpu_la_SOURCES) \ $(libeztrace_starpu_la_SOURCES) DIST_SOURCES = $(am__libeztrace_autostart_starpu_la_SOURCES_DIST) \ $(am__libeztrace_convert_starpu_la_SOURCES_DIST) \ $(am__libeztrace_starpu_la_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__noinst_HEADERS_DIST = starpu_ev_codes.h eztrace_convert_starpu.h HEADERS = $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUDA_CFLAGS = @CUDA_CFLAGS@ CUDA_LDFLAGS = @CUDA_LDFLAGS@ CUDA_LIBS = @CUDA_LIBS@ CUDA_ROOT = @CUDA_ROOT@ CUPTI_CFLAGS = @CUPTI_CFLAGS@ CUPTI_LDFLAGS = @CUPTI_LDFLAGS@ CUPTI_LIBS = @CUPTI_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ DYNLIB_EXT = @DYNLIB_EXT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ GTGDIR = @GTGDIR@ GTG_CPPFLAGS = @GTG_CPPFLAGS@ GTG_DEPENDENCIES = @GTG_DEPENDENCIES@ GTG_EXT_CPPFLAGS = @GTG_EXT_CPPFLAGS@ GTG_EXT_LDFLAGS = @GTG_EXT_LDFLAGS@ GTG_EXT_LIB = @GTG_EXT_LIB@ GTG_LDFLAGS = @GTG_LDFLAGS@ GTG_LIB = @GTG_LIB@ GTG_OUT_OF_ORDER = @GTG_OUT_OF_ORDER@ HAVE_ENV = @HAVE_ENV@ HAVE_LIBBACKTRACE = @HAVE_LIBBACKTRACE@ HAVE_LIBOPCODE = @HAVE_LIBOPCODE@ HAVE_PRCTL_H = @HAVE_PRCTL_H@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LD_LIBRARY_PATH_NAME = @LD_LIBRARY_PATH_NAME@ LD_PRELOAD_NAME = @LD_PRELOAD_NAME@ LIBBACKTRACE_CPPFLAGS = @LIBBACKTRACE_CPPFLAGS@ LIBBACKTRACE_LDFLAGS = @LIBBACKTRACE_LDFLAGS@ LIBBACKTRACE_LIB = @LIBBACKTRACE_LIB@ LIBBACKTRACE_ROOT = @LIBBACKTRACE_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LITL_PRINT = @LITL_PRINT@ LITL_ROOT = @LITL_ROOT@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPI_CFLAGS = @MPI_CFLAGS@ MPI_EVENT_ID = @MPI_EVENT_ID@ MPI_INC = @MPI_INC@ MPI_LDFLAGS = @MPI_LDFLAGS@ MPI_MODULE_NAME = @MPI_MODULE_NAME@ MPI_ROOT = @MPI_ROOT@ NM = @NM@ NMEDIT = @NMEDIT@ NVCC = @NVCC@ NVCCFLAGS = @NVCCFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAPIDIR = @PAPIDIR@ PAPI_CPPFLAGS = @PAPI_CPPFLAGS@ PAPI_ENABLED = @PAPI_ENABLED@ PAPI_LDFLAGS = @PAPI_LDFLAGS@ PAPI_LIBDIR = @PAPI_LIBDIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PPTRACE_BINARY_TYPE = @PPTRACE_BINARY_TYPE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STARPU_CFLAGS = @STARPU_CFLAGS@ STARPU_CPPFLAGS = @STARPU_CPPFLAGS@ STARPU_LDFLAGS = @STARPU_LDFLAGS@ STARPU_LIBS = @STARPU_LIBS@ STARPU_ROOT = @STARPU_ROOT@ STRIP = @STRIP@ TARGET_BITS = @TARGET_BITS@ TL_CPPFLAGS = @TL_CPPFLAGS@ TL_EXT_CPPFLAGS = @TL_EXT_CPPFLAGS@ TL_EXT_LDFLAGS = @TL_EXT_LDFLAGS@ TL_EXT_LIB = @TL_EXT_LIB@ TL_LDFLAGS = @TL_LDFLAGS@ TL_LIB = @TL_LIB@ USE_BIN_INSTRUMENTATION = @USE_BIN_INSTRUMENTATION@ USE_CUDADIR_FROM_USER = @USE_CUDADIR_FROM_USER@ USE_GETTID = @USE_GETTID@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ USE_PAPIDIR_FROM_USER = @USE_PAPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ TLCFLAGS = $(TL_CPPFLAGS) TLLDFLAGS = $(TL_LDFLAGS) TLLIBADD = $(TL_LIB) GTGCFLAGS = $(GTG_CPPFLAGS) GTGLDFLAGS = $(GTG_LDFLAGS) GTGDEPENDENCIES = $(GTG_DEPENDENCIES) GTGLIBADD = $(GTG_LIB) @USE_STARPU_TRUE@AM_CFLAGS = -I$(srcdir)/../../core/ -I$(top_builddir)/src/core \ @USE_STARPU_TRUE@ -I$(top_srdir)/src/pptrace -I$(srcdir)/starpu-include \ @USE_STARPU_TRUE@ -I$(STARPU_ROOT)/include/starpu/1.3 @USE_STARPU_TRUE@STARPU_VERSION = starpu-1.3 @USE_STARPU_TRUE@lib_LTLIBRARIES = libeztrace-convert-starpu.la \ @USE_STARPU_TRUE@ libeztrace-starpu.la \ @USE_STARPU_TRUE@ libeztrace-autostart-starpu.la @USE_STARPU_TRUE@libeztrace_convert_starpu_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(GTGCFLAGS) $(STARPU_CPPFLAGS) @USE_STARPU_TRUE@libeztrace_convert_starpu_la_LIBADD = $(TLLIBADD) $(GTGLIBADD) $(STARPU_LDFLAGS) @USE_STARPU_TRUE@libeztrace_convert_starpu_la_LDFLAGS = $(GTGLDFLAGS) $(TLLDFLAGS) @USE_STARPU_TRUE@libeztrace_convert_starpu_la_DEPENDENCIES = $(GTGDEPENDENCIES) @USE_STARPU_TRUE@libeztrace_convert_starpu_la_SOURCES = eztrace_convert_starpu.c @USE_STARPU_TRUE@libeztrace_starpu_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(STARPU_CPPFLAGS) @USE_STARPU_TRUE@libeztrace_starpu_la_LIBADD = -lm $(TLLIBADD) $(STARPU_LDFLAGS) @USE_STARPU_TRUE@libeztrace_starpu_la_LDFLAGS = --no-undefined $(TLLDFLAGS) -Wl,-Bsymbolic @USE_STARPU_TRUE@libeztrace_starpu_la_SOURCES = starpu.c @USE_STARPU_TRUE@libeztrace_autostart_starpu_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(STARPU_CPPFLAGS) @USE_STARPU_TRUE@libeztrace_autostart_starpu_la_LIBADD = -lm -lpthread $(TLLIBADD) $(STARPU_LDFLAGS) @USE_STARPU_TRUE@libeztrace_autostart_starpu_la_LDFLAGS = --no-undefined $(TLLDFLAGS) -Wl,-Bsymbolic @USE_STARPU_TRUE@libeztrace_autostart_starpu_la_CFLAGS = $(AM_CFLAGS) -W -Wall -Wextra -DEZTRACE_AUTOSTART @USE_STARPU_TRUE@libeztrace_autostart_starpu_la_SOURCES = starpu.c @USE_STARPU_TRUE@noinst_HEADERS = starpu_ev_codes.h eztrace_convert_starpu.h all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/modules/starpu/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/modules/starpu/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libeztrace-autostart-starpu.la: $(libeztrace_autostart_starpu_la_OBJECTS) $(libeztrace_autostart_starpu_la_DEPENDENCIES) $(EXTRA_libeztrace_autostart_starpu_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_autostart_starpu_la_LINK) $(am_libeztrace_autostart_starpu_la_rpath) $(libeztrace_autostart_starpu_la_OBJECTS) $(libeztrace_autostart_starpu_la_LIBADD) $(LIBS) libeztrace-convert-starpu.la: $(libeztrace_convert_starpu_la_OBJECTS) $(libeztrace_convert_starpu_la_DEPENDENCIES) $(EXTRA_libeztrace_convert_starpu_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_convert_starpu_la_LINK) $(am_libeztrace_convert_starpu_la_rpath) $(libeztrace_convert_starpu_la_OBJECTS) $(libeztrace_convert_starpu_la_LIBADD) $(LIBS) libeztrace-starpu.la: $(libeztrace_starpu_la_OBJECTS) $(libeztrace_starpu_la_DEPENDENCIES) $(EXTRA_libeztrace_starpu_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_starpu_la_LINK) $(am_libeztrace_starpu_la_rpath) $(libeztrace_starpu_la_OBJECTS) $(libeztrace_starpu_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_autostart_starpu_la-starpu.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_convert_starpu_la-eztrace_convert_starpu.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_starpu_la-starpu.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libeztrace_autostart_starpu_la-starpu.lo: starpu.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_starpu_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_starpu_la_CFLAGS) $(CFLAGS) -MT libeztrace_autostart_starpu_la-starpu.lo -MD -MP -MF $(DEPDIR)/libeztrace_autostart_starpu_la-starpu.Tpo -c -o libeztrace_autostart_starpu_la-starpu.lo `test -f 'starpu.c' || echo '$(srcdir)/'`starpu.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_autostart_starpu_la-starpu.Tpo $(DEPDIR)/libeztrace_autostart_starpu_la-starpu.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='starpu.c' object='libeztrace_autostart_starpu_la-starpu.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_starpu_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_starpu_la_CFLAGS) $(CFLAGS) -c -o libeztrace_autostart_starpu_la-starpu.lo `test -f 'starpu.c' || echo '$(srcdir)/'`starpu.c libeztrace_convert_starpu_la-eztrace_convert_starpu.lo: eztrace_convert_starpu.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_starpu_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_convert_starpu_la-eztrace_convert_starpu.lo -MD -MP -MF $(DEPDIR)/libeztrace_convert_starpu_la-eztrace_convert_starpu.Tpo -c -o libeztrace_convert_starpu_la-eztrace_convert_starpu.lo `test -f 'eztrace_convert_starpu.c' || echo '$(srcdir)/'`eztrace_convert_starpu.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_convert_starpu_la-eztrace_convert_starpu.Tpo $(DEPDIR)/libeztrace_convert_starpu_la-eztrace_convert_starpu.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_convert_starpu.c' object='libeztrace_convert_starpu_la-eztrace_convert_starpu.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_starpu_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_convert_starpu_la-eztrace_convert_starpu.lo `test -f 'eztrace_convert_starpu.c' || echo '$(srcdir)/'`eztrace_convert_starpu.c libeztrace_starpu_la-starpu.lo: starpu.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_starpu_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_starpu_la-starpu.lo -MD -MP -MF $(DEPDIR)/libeztrace_starpu_la-starpu.Tpo -c -o libeztrace_starpu_la-starpu.lo `test -f 'starpu.c' || echo '$(srcdir)/'`starpu.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_starpu_la-starpu.Tpo $(DEPDIR)/libeztrace_starpu_la-starpu.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='starpu.c' object='libeztrace_starpu_la-starpu.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_starpu_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_starpu_la-starpu.lo `test -f 'starpu.c' || echo '$(srcdir)/'`starpu.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libLTLIBRARIES install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/src/modules/starpu/PaxHeaders.7332/starpu.c0000644000000000000000000000013213012560437020067 xustar0030 mtime=1479205151.300727536 30 atime=1507797543.130866303 30 ctime=1508162368.157944356 eztrace-1.1-7/src/modules/starpu/starpu.c0000644000175000017500000012775613012560437021300 0ustar00trahaytrahay00000000000000/* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include "eztrace.h" #include "eztrace_sampling.h" #include "starpu_ev_codes.h" #include "starpu.h" #ifdef USE_MPI #include "starpu_mpi.h" #endif #include "starpu_opencl.h" // Internals void (*lib_starpu_driver_start_job) (void *args, void *j, void *codelet_start, int rank, int profiling); void (*lib_starpu_driver_end_job) (void * args, void *j, void *perf_arch, void *codelet_end, int rank, int profiling); // API void (*libstarpu_cublas_init) (); void (*libstarpu_cublas_shutdown) (); int (*libstarpu_init) (struct starpu_conf* conf); void (*libstarpu_pause) (); void (*libstarpu_resume) (); void (*libstarpu_shutdown) (); void (*libstarpu_data_unregister) (starpu_data_handle_t handle); void (*libstarpu_data_unregister_no_coherency) (starpu_data_handle_t handle); void (*libstarpu_data_unregister_submit) (starpu_data_handle_t handle); void (*libstarpu_data_invalidate) (starpu_data_handle_t handle); void (*libstarpu_data_invalidate_submit) (starpu_data_handle_t handle); int (*libstarpu_data_acquire) (starpu_data_handle_t handle, enum starpu_data_access_mode mode); int (*libstarpu_data_acquire_on_node) (starpu_data_handle_t handle, int node, enum starpu_data_access_mode mode); int (*libstarpu_data_acquire_cb) (starpu_data_handle_t handle, enum starpu_data_access_mode mode, void (* callback), void *arg); int (*libstarpu_data_acquire_on_node_cb) (starpu_data_handle_t handle, int node, enum starpu_data_access_mode mode, void (* callback), void *arg); void (*libstarpu_data_release) (starpu_data_handle_t handle); void (*libstarpu_data_release_on_node) (starpu_data_handle_t handle, int node); int (*libstarpu_data_request_allocation) (starpu_data_handle_t handle, unsigned node); uintptr_t (*libstarpu_malloc_on_node) (unsigned dst_node, size_t size); void (*libstarpu_free_on_node) (unsigned dst_node, uintptr_t addr, size_t size); #ifdef USE_MPI int (*libstarpu_mpi_isend) (starpu_data_handle_t data_handle, starpu_mpi_req* req, int dest, int mpi_tag, MPI_Comm comm); int (*libstarpu_mpi_irecv) (starpu_data_handle_t data_handle, starpu_mpi_req* req, int source, int mpi_tag, MPI_Comm comm); int (*libstarpu_mpi_send) (starpu_data_handle_t data_handle, int dest, int mpi_tag, MPI_Comm comm); int (*libstarpu_mpi_recv) (starpu_data_handle_t data_handle, int source, int mpi_tag, MPI_Comm comm, MPI_Status* status); int (*libstarpu_mpi_isend_detached) (starpu_data_handle_t data_handle, int dest, int mpi_tag, MPI_Comm comm, void (* callback)(void *arg), void *arg); int (*libstarpu_mpi_irecv_detached) (starpu_data_handle_t data_handle, int source, int mpi_tag, MPI_Comm comm, void (* callback)(void *arg), void *arg); int (*libstarpu_mpi_wait) (starpu_mpi_req* req, MPI_Status* status); int (*libstarpu_mpi_test) (starpu_mpi_req* req, int* flag, MPI_Status* status); int (*libstarpu_mpi_barrier) (MPI_Comm comm); int (*libstarpu_mpi_init) (int* argc, char*** argv, int initialize_mpi); int (*libstarpu_mpi_initialize) (); int (*libstarpu_mpi_initialize_extended) (int* rank, int* world_size); int (*libstarpu_mpi_shutdown) (); void (*libstarpu_mpi_get_data_on_node) (MPI_Comm comm, starpu_data_handle_t data_handle, int node); void (*libstarpu_mpi_get_data_on_node_detached) (MPI_Comm comm, starpu_data_handle_t data_handle, int node, void (* callback)(void *arg), void *arg); void (*libstarpu_mpi_redux_data) (MPI_Comm comm, starpu_data_handle_t data_handle); int (*libstarpu_mpi_scatter_detached) (starpu_data_handle_t* data_handles, int count, int root, MPI_Comm comm, void (* scallback)(void *arg), void *arg,void (*rcallback)(void *), void *rarg); int (*libstarpu_mpi_gather_detached) (starpu_data_handle_t* data_handles, int count, int root, MPI_Comm comm, void (* scallback)(void *arg), void *arg, void (*rcallback)(void *), void *rarg); int (*libstarpu_mpi_isend_detached_unlock_tag) (starpu_data_handle_t data_handle, int dest, int mpi_tag, MPI_Comm comm, starpu_tag_t tag); int (*libstarpu_mpi_irecv_detached_unlock_tag) (starpu_data_handle_t data_handle, int source, int mpi_tag, MPI_Comm comm, starpu_tag_t tag); int (*libstarpu_mpi_isend_array_detached_unlock_tag) (unsigned array_size, starpu_data_handle_t* data_handle, int* dest, int* mpi_tag, MPI_Comm* comm, starpu_tag_t tag); int (*libstarpu_mpi_irecv_array_detached_unlock_tag) (unsigned array_size, starpu_data_handle_t* data_handle, int* source, int* mpi_tag, MPI_Comm* comm, starpu_tag_t tag); void (*libstarpu_mpi_comm_amounts_retrieve) (size_t* comm_amounts); void (*libstarpu_mpi_cache_flush) (MPI_Comm comm, starpu_data_handle_t data_handle); void (*libstarpu_mpi_cache_flush_all_data) (MPI_Comm comm); #endif USE_MPI #ifndef HAVE_STARPU_MPI_DATA_REGISTER_COMM void (*libstarpu_mpi_data_register) (starpu_data_handle_t data_handle, int tag, int rank); #else void (*libstarpu_mpi_data_register_comm) (starpu_data_handle_t data_handle, int tag, int rank, MPI_Comm comm); #endif void (*libstarpu_sched_ctx_add_workers) (int* workerids_ctx, int nworkers_ctx, unsigned sched_ctx_id); void (*libstarpu_sched_ctx_remove_workers) (int* workerids_ctx, int nworkers_ctx, unsigned sched_ctx_id); void (*libstarpu_sched_ctx_delete) (unsigned sched_ctx_id); void (*libstarpu_sched_ctx_set_inheritor) (unsigned sched_ctx_id, unsigned inheritor); void (*libstarpu_sched_ctx_set_context) (unsigned* sched_ctx_id); unsigned (*libstarpu_sched_ctx_get_context) (); void (*libstarpu_sched_ctx_stop_task_submission) (); void (*libstarpu_sched_ctx_finished_submit) (unsigned sched_ctx_id); struct starpu_worker_collection * (*libstarpu_sched_ctx_create_worker_collection) (unsigned sched_ctx_id, enum starpu_worker_collection_type type); void (*libstarpu_sched_ctx_delete_worker_collection) (unsigned sched_ctx_id); struct starpu_worker_collection * (*libstarpu_sched_ctx_get_worker_collection) (unsigned sched_ctx_id); int (*libstarpu_prefetch_task_input_on_node) (struct starpu_task* task, unsigned node); int (*libstarpu_malloc) (void** A, size_t dim); int (*libstarpu_free) (void* A); int (*libstarpu_malloc_flags) (void** A, size_t dim, int flags); int (*libstarpu_free_flags) (void* A, size_t dim, int flags); int (*libstarpu_tag_wait) (starpu_tag_t id); int (*libstarpu_tag_wait_array) (unsigned ntags, starpu_tag_t* id); void (*libstarpu_tag_notify_from_apps) (starpu_tag_t id); void (*libstarpu_task_init) (struct starpu_task* task); void (*libstarpu_task_clean) (struct starpu_task* task); struct starpu_task * (*libstarpu_task_create) (); void (*libstarpu_task_destroy) (struct starpu_task* task); int (*libstarpu_task_submit) (struct starpu_task* task); int (*libstarpu_task_submit_to_ctx) (struct starpu_task* task, unsigned sched_ctx_id); int (*libstarpu_task_wait) (struct starpu_task* task); int (*libstarpu_task_wait_for_all) (); int (*libstarpu_task_wait_for_all_in_ctx) (unsigned sched_ctx_id); int (*libstarpu_task_wait_for_no_ready) (); int (*libstarpu_task_nready) (); int (*libstarpu_task_nsubmitted) (); struct starpu_task * (*libstarpu_task_dup) (struct starpu_task* task); void (*libstarpu_task_bundle_create) (starpu_task_bundle_t* bundle); int (*libstarpu_task_bundle_insert) (starpu_task_bundle_t bundle, struct starpu_task* task); int (*libstarpu_task_bundle_remove) (starpu_task_bundle_t bundle, struct starpu_task* task); void (*libstarpu_task_bundle_close) (starpu_task_bundle_t bundle); void (*libstarpu_create_sync_task) (starpu_tag_t sync_tag, unsigned ndeps, starpu_tag_t* deps, void (* callback)(void *), void *callback_arg); void (*libstarpu_execute_on_each_worker) (void (* func)(void *), void *arg, uint32_t where); void (*libstarpu_execute_on_each_worker_ex) (void (* func)(void *), void *arg, uint32_t where, const char * name); void (*libstarpu_execute_on_specific_workers) (void (* func)(void*), void * arg, unsigned num_workers, unsigned * workers, const char * name); int (*libstarpu_data_cpy) (starpu_data_handle_t dst_handle, starpu_data_handle_t src_handle, int asynchronous, void (* callback_func)(void*), void *callback_arg); void _starpu_driver_start_job (void *args, void *j, void *codelet_start, int rank, int profiling) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0(EZTRACE_starpu__starpu_driver_start_job); lib_starpu_driver_start_job (args, j, codelet_start, rank, profiling); } void _starpu_driver_end_job (void* args, void* j, void* perf_arch, void *codelet_end, int rank, int profiling) { FUNCTION_ENTRY; EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu__starpu_driver_end_job); lib_starpu_driver_end_job (args, j, perf_arch, codelet_end, rank, profiling); } void starpu_cublas_init () { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_cublas_init_41); libstarpu_cublas_init (); EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_cublas_init_42); } void starpu_cublas_shutdown () { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_cublas_shutdown_43); libstarpu_cublas_shutdown (); EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_cublas_shutdown_44); } int starpu_init (struct starpu_conf* conf) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_init_47, conf); int ret = libstarpu_init (conf); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_init_48, conf); return ret; } void starpu_pause () { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_pause_49); libstarpu_pause (); EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_pause_50); } void starpu_resume () { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_resume_51); libstarpu_resume (); EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_resume_52); } void starpu_shutdown () { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_shutdown_53); libstarpu_shutdown (); EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_shutdown_54); } void starpu_data_unregister (starpu_data_handle_t handle) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_data_unregister_79, handle); libstarpu_data_unregister (handle); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_data_unregister_80, handle); } void starpu_data_unregister_no_coherency (starpu_data_handle_t handle) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_data_unregister_no_coherency_81, handle); libstarpu_data_unregister_no_coherency (handle); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_data_unregister_no_coherency_82, handle); } void starpu_data_unregister_submit (starpu_data_handle_t handle) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_data_unregister_submit_83, handle); libstarpu_data_unregister_submit (handle); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_data_unregister_submit_84, handle); } void starpu_data_invalidate (starpu_data_handle_t handle) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_data_invalidate_85, handle); libstarpu_data_invalidate (handle); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_data_invalidate_86, handle); } void starpu_data_invalidate_submit (starpu_data_handle_t handle) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_data_invalidate_submit_87, handle); libstarpu_data_invalidate_submit (handle); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_data_invalidate_submit_88, handle); } int starpu_data_acquire (starpu_data_handle_t handle, enum starpu_data_access_mode mode) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_data_acquire_91, handle, mode); int ret = libstarpu_data_acquire (handle, mode); EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_data_acquire_92, handle, mode); return ret; } int starpu_data_acquire_on_node (starpu_data_handle_t handle, int node, enum starpu_data_access_mode mode) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_data_acquire_on_node_93, handle, node, mode); int ret = libstarpu_data_acquire_on_node (handle, node, mode); EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_data_acquire_on_node_94, handle, node, mode); return ret; } int starpu_data_acquire_cb (starpu_data_handle_t handle, enum starpu_data_access_mode mode, void (* callback)(void *), void *arg) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_data_acquire_cb_95, handle, mode, callback, arg); int ret = libstarpu_data_acquire_cb (handle, mode, callback, arg); EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_data_acquire_cb_96, handle, mode, callback, arg); return ret; } int starpu_data_acquire_on_node_cb (starpu_data_handle_t handle, int node, enum starpu_data_access_mode mode, void (* callback)(void *), void *arg) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_5(EZTRACE_starpu_starpu_data_acquire_on_node_cb_97, handle, node, mode, callback, arg); int ret = libstarpu_data_acquire_on_node_cb (handle, node, mode, callback, arg); EZTRACE_EVENT_PACKED_5(EZTRACE_starpu_starpu_data_acquire_on_node_cb_98, handle, node, mode, callback, arg); return ret; } void starpu_data_release (starpu_data_handle_t handle) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_data_release_99, handle); libstarpu_data_release (handle); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_data_release_100, handle); } void starpu_data_release_on_node (starpu_data_handle_t handle, int node) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_data_release_on_node_101, handle, node); libstarpu_data_release_on_node (handle, node); EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_data_release_on_node_102, handle, node); } int starpu_data_request_allocation (starpu_data_handle_t handle, unsigned node) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_data_request_allocation_105, handle, node); int ret = libstarpu_data_request_allocation (handle, node); EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_data_request_allocation_106, handle, node); return ret; } uintptr_t starpu_malloc_on_node (unsigned dst_node, size_t size) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_malloc_on_node_183, dst_node, size); uintptr_t ret = libstarpu_malloc_on_node (dst_node, size); EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_malloc_on_node_184, dst_node, size); return ret; } void starpu_free_on_node (unsigned dst_node, uintptr_t addr, size_t size) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_free_on_node_185, dst_node, addr, size); libstarpu_free_on_node (dst_node, addr, size); EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_free_on_node_186, dst_node, addr, size); } #ifdef USE_MPI int starpu_mpi_isend (starpu_data_handle_t data_handle, starpu_mpi_req* req, int dest, int mpi_tag, MPI_Comm comm) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_isend_311, data_handle, req, dest, mpi_tag); int ret = libstarpu_mpi_isend (data_handle, req, dest, mpi_tag, comm); EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_isend_312, data_handle, req, dest, mpi_tag); return ret; } int starpu_mpi_irecv (starpu_data_handle_t data_handle, starpu_mpi_req* req, int source, int mpi_tag, MPI_Comm comm) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_irecv_313, data_handle, req, source, mpi_tag); int ret = libstarpu_mpi_irecv (data_handle, req, source, mpi_tag, comm); EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_irecv_314, data_handle, req, source, mpi_tag); return ret; } int starpu_mpi_send (starpu_data_handle_t data_handle, int dest, int mpi_tag, MPI_Comm comm) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_send_315, data_handle, dest, mpi_tag, comm); int ret = libstarpu_mpi_send (data_handle, dest, mpi_tag, comm); EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_send_316, data_handle, dest, mpi_tag, comm); return ret; } int starpu_mpi_recv (starpu_data_handle_t data_handle, int source, int mpi_tag, MPI_Comm comm, MPI_Status* status) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_recv_317, data_handle, source, mpi_tag, comm); int ret = libstarpu_mpi_recv (data_handle, source, mpi_tag, comm, status); EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_recv_318, data_handle, source, mpi_tag, comm); return ret; } int starpu_mpi_isend_detached (starpu_data_handle_t data_handle, int dest, int mpi_tag, MPI_Comm comm, void (* callback)(void *arg), void *arg) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_isend_detached_319, data_handle, dest, mpi_tag, comm); int ret = libstarpu_mpi_isend_detached (data_handle, dest, mpi_tag, comm, callback, arg); EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_isend_detached_320, data_handle, dest, mpi_tag, comm); return ret; } int starpu_mpi_irecv_detached (starpu_data_handle_t data_handle, int source, int mpi_tag, MPI_Comm comm, void (* callback)(void *arg), void *arg) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_irecv_detached_321, data_handle, source, mpi_tag, comm); int ret = libstarpu_mpi_irecv_detached (data_handle, source, mpi_tag, comm, callback, arg); EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_irecv_detached_322, data_handle, source, mpi_tag, comm); return ret; } int starpu_mpi_wait (starpu_mpi_req* req, MPI_Status* status) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_mpi_wait_323, req, status); int ret = libstarpu_mpi_wait (req, status); EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_mpi_wait_324, req, status); return ret; } int starpu_mpi_test (starpu_mpi_req* req, int* flag, MPI_Status* status) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_mpi_test_325, req, flag, status); int ret = libstarpu_mpi_test (req, flag, status); EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_mpi_test_326, req, flag, status); return ret; } int starpu_mpi_barrier (MPI_Comm comm) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_mpi_barrier_327, comm); int ret = libstarpu_mpi_barrier (comm); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_mpi_barrier_328, comm); return ret; } int starpu_mpi_init (int* argc, char*** argv, int initialize_mpi) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_mpi_init_329, argc, argv, initialize_mpi); int ret = libstarpu_mpi_init (argc, argv, initialize_mpi); EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_mpi_init_330, argc, argv, initialize_mpi); return ret; } int starpu_mpi_initialize () { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_mpi_initialize_331); int ret = libstarpu_mpi_initialize (); EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_mpi_initialize_332); return ret; } int starpu_mpi_initialize_extended (int* rank, int* world_size) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_mpi_initialize_extended_333, rank, world_size); int ret = libstarpu_mpi_initialize_extended (rank, world_size); EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_mpi_initialize_extended_334, rank, world_size); return ret; } int starpu_mpi_shutdown () { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_mpi_shutdown_335); int ret = libstarpu_mpi_shutdown (); EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_mpi_shutdown_336); return ret; } void starpu_mpi_get_data_on_node (MPI_Comm comm, starpu_data_handle_t data_handle, int node) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_mpi_get_data_on_node_337, comm, data_handle, node); libstarpu_mpi_get_data_on_node (comm, data_handle, node); EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_mpi_get_data_on_node_338, comm, data_handle, node); } void starpu_mpi_get_data_on_node_detached (MPI_Comm comm, starpu_data_handle_t data_handle, int node, void (* callback)(void *arg), void *arg) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_mpi_get_data_on_node_detached_339, comm, data_handle, node); libstarpu_mpi_get_data_on_node_detached (comm, data_handle, node, callback, arg); EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_mpi_get_data_on_node_detached_340, comm, data_handle, node); } void starpu_mpi_redux_data (MPI_Comm comm, starpu_data_handle_t data_handle) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_mpi_redux_data_341, comm, data_handle); libstarpu_mpi_redux_data (comm, data_handle); EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_mpi_redux_data_342, comm, data_handle); } int starpu_mpi_scatter_detached (starpu_data_handle_t* data_handles, int count, int root, MPI_Comm comm, void (* scallback)(void *arg), void *arg, void (*rcallback)(void *), void *rarg) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_scatter_detached_343, data_handles, count, root, comm); int ret = libstarpu_mpi_scatter_detached (data_handles, count, root, comm, scallback, arg, rcallback, rarg); EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_scatter_detached_344, data_handles, count, root, comm); return ret; } int starpu_mpi_gather_detached (starpu_data_handle_t* data_handles, int count, int root, MPI_Comm comm, void (* scallback)(void *arg), void *arg, void (*rcallback)(void *), void *rarg) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_gather_detached_345, data_handles, count, root, comm); int ret = libstarpu_mpi_gather_detached (data_handles, count, root, comm, scallback, arg, rcallback, rarg); EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_gather_detached_346, data_handles, count, root, comm); return ret; } int starpu_mpi_isend_detached_unlock_tag (starpu_data_handle_t data_handle, int dest, int mpi_tag, MPI_Comm comm, starpu_tag_t tag) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_isend_detached_unlock_tag_347, data_handle, dest, mpi_tag, comm); int ret = libstarpu_mpi_isend_detached_unlock_tag (data_handle, dest, mpi_tag, comm, tag); EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_isend_detached_unlock_tag_348, data_handle, dest, mpi_tag, comm); return ret; } int starpu_mpi_irecv_detached_unlock_tag (starpu_data_handle_t data_handle, int source, int mpi_tag, MPI_Comm comm, starpu_tag_t tag) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_irecv_detached_unlock_tag_349, data_handle, source, mpi_tag, comm); int ret = libstarpu_mpi_irecv_detached_unlock_tag (data_handle, source, mpi_tag, comm, tag); EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_irecv_detached_unlock_tag_350, data_handle, source, mpi_tag, comm); return ret; } int starpu_mpi_isend_array_detached_unlock_tag (unsigned array_size, starpu_data_handle_t* data_handle, int* dest, int* mpi_tag, MPI_Comm* comm, starpu_tag_t tag) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_isend_array_detached_unlock_tag_351, array_size, data_handle, dest, mpi_tag); int ret = libstarpu_mpi_isend_array_detached_unlock_tag (array_size, data_handle, dest, mpi_tag, comm, tag); EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_isend_array_detached_unlock_tag_352, array_size, data_handle, dest, mpi_tag); return ret; } int starpu_mpi_irecv_array_detached_unlock_tag (unsigned array_size, starpu_data_handle_t* data_handle, int* source, int* mpi_tag, MPI_Comm* comm, starpu_tag_t tag) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_irecv_array_detached_unlock_tag_353, array_size, data_handle, source, mpi_tag); int ret = libstarpu_mpi_irecv_array_detached_unlock_tag (array_size, data_handle, source, mpi_tag, comm, tag); EZTRACE_EVENT_PACKED_4 (EZTRACE_starpu_starpu_mpi_irecv_array_detached_unlock_tag_354, array_size, data_handle, source, mpi_tag); return ret; } void starpu_mpi_comm_amounts_retrieve (size_t* comm_amounts) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_mpi_comm_amounts_retrieve_355, comm_amounts); libstarpu_mpi_comm_amounts_retrieve (comm_amounts); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_mpi_comm_amounts_retrieve_356, comm_amounts); } void starpu_mpi_cache_flush (MPI_Comm comm, starpu_data_handle_t data_handle) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_mpi_cache_flush_357, comm, data_handle); libstarpu_mpi_cache_flush (comm, data_handle); EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_mpi_cache_flush_358, comm, data_handle); } void starpu_mpi_cache_flush_all_data (MPI_Comm comm) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_mpi_cache_flush_all_data_359, comm); libstarpu_mpi_cache_flush_all_data (comm); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_mpi_cache_flush_all_data_360, comm); } #endif #ifndef HAVE_STARPU_MPI_DATA_REGISTER_COMM void starpu_mpi_data_register (starpu_data_handle_t data_handle, int tag, int rank) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_mpi_data_register_361); libstarpu_mpi_data_register (data_handle, tag, rank); EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_mpi_data_register_362); } #else void starpu_mpi_data_register_comm(starpu_data_handle_t data_handle, int tag, int rank, MPI_Comm comm) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_mpi_data_register_361); libstarpu_mpi_data_register_comm (data_handle, tag, rank, comm); EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_mpi_data_register_362); } #endif void starpu_sched_ctx_add_workers (int* workerids_ctx, int nworkers_ctx, unsigned sched_ctx_id) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_sched_ctx_add_workers_411, workerids_ctx, nworkers_ctx, sched_ctx_id); libstarpu_sched_ctx_add_workers (workerids_ctx, nworkers_ctx, sched_ctx_id); EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_sched_ctx_add_workers_412, workerids_ctx, nworkers_ctx, sched_ctx_id); } void starpu_sched_ctx_remove_workers (int* workerids_ctx, int nworkers_ctx, unsigned sched_ctx_id) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_sched_ctx_remove_workers_413, workerids_ctx, nworkers_ctx, sched_ctx_id); libstarpu_sched_ctx_remove_workers (workerids_ctx, nworkers_ctx, sched_ctx_id); EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_sched_ctx_remove_workers_414, workerids_ctx, nworkers_ctx, sched_ctx_id); } void starpu_sched_ctx_delete (unsigned sched_ctx_id) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_sched_ctx_delete_415, sched_ctx_id); libstarpu_sched_ctx_delete (sched_ctx_id); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_sched_ctx_delete_416, sched_ctx_id); } void starpu_sched_ctx_set_inheritor (unsigned sched_ctx_id, unsigned inheritor) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_sched_ctx_set_inheritor_417, sched_ctx_id, inheritor); libstarpu_sched_ctx_set_inheritor (sched_ctx_id, inheritor); EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_sched_ctx_set_inheritor_418, sched_ctx_id, inheritor); } void starpu_sched_ctx_set_context (unsigned* sched_ctx_id) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_sched_ctx_set_context_419, sched_ctx_id); libstarpu_sched_ctx_set_context (sched_ctx_id); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_sched_ctx_set_context_420, sched_ctx_id); } unsigned starpu_sched_ctx_get_context () { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_sched_ctx_get_context_421); unsigned ret = libstarpu_sched_ctx_get_context (); EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_sched_ctx_get_context_422); return ret; } void starpu_sched_ctx_stop_task_submission () { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_sched_ctx_stop_task_submission_423); libstarpu_sched_ctx_stop_task_submission (); EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_sched_ctx_stop_task_submission_424); } void starpu_sched_ctx_finished_submit (unsigned sched_ctx_id) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_sched_ctx_finished_submit_425, sched_ctx_id); libstarpu_sched_ctx_finished_submit (sched_ctx_id); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_sched_ctx_finished_submit_426, sched_ctx_id); } struct starpu_worker_collection * starpu_sched_ctx_create_worker_collection (unsigned sched_ctx_id, enum starpu_worker_collection_type type) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_sched_ctx_create_worker_collection_461, sched_ctx_id, type); struct starpu_worker_collection * ret = libstarpu_sched_ctx_create_worker_collection (sched_ctx_id, type); EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_sched_ctx_create_worker_collection_462, sched_ctx_id, type); return ret; } void starpu_sched_ctx_delete_worker_collection (unsigned sched_ctx_id) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_sched_ctx_delete_worker_collection_463, sched_ctx_id); libstarpu_sched_ctx_delete_worker_collection (sched_ctx_id); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_sched_ctx_delete_worker_collection_464, sched_ctx_id); } struct starpu_worker_collection * starpu_sched_ctx_get_worker_collection (unsigned sched_ctx_id) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_sched_ctx_get_worker_collection_465, sched_ctx_id); struct starpu_worker_collection * ret = libstarpu_sched_ctx_get_worker_collection (sched_ctx_id); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_sched_ctx_get_worker_collection_466, sched_ctx_id); return ret; } int starpu_prefetch_task_input_on_node (struct starpu_task* task, unsigned node) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_prefetch_task_input_on_node_495, task, node); int ret = libstarpu_prefetch_task_input_on_node (task, node); EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_prefetch_task_input_on_node_496, task, node); return ret; } int starpu_malloc (void** A, size_t dim) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_malloc_521, A, dim); int ret = libstarpu_malloc (A, dim); EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_malloc_522, A, dim); return ret; } int starpu_free (void* A) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_free_523, A); int ret = libstarpu_free (A); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_free_524, A); return ret; } int starpu_malloc_flags (void** A, size_t dim, int flags) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_malloc_flags_525, A, dim, flags); int ret = libstarpu_malloc_flags (A, dim, flags); EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_malloc_flags_526, A, dim, flags); return ret; } int starpu_free_flags (void* A, size_t dim, int flags) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_free_flags_527, A, dim, flags); int ret = libstarpu_free_flags (A, dim, flags); EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_free_flags_528, A, dim, flags); return ret; } int starpu_tag_wait (starpu_tag_t id) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_tag_wait_537, id); int ret = libstarpu_tag_wait (id); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_tag_wait_538, id); return ret; } int starpu_tag_wait_array (unsigned ntags, starpu_tag_t* id) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_tag_wait_array_539, ntags, id); int ret = libstarpu_tag_wait_array (ntags, id); EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_tag_wait_array_540, ntags, id); return ret; } void starpu_tag_notify_from_apps (starpu_tag_t id) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_tag_notify_from_apps_541, id); libstarpu_tag_notify_from_apps (id); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_tag_notify_from_apps_542, id); } void starpu_task_init (struct starpu_task* task) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_task_init_547, task); libstarpu_task_init (task); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_task_init_548, task); } void starpu_task_clean (struct starpu_task* task) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_task_clean_549, task); libstarpu_task_clean (task); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_task_clean_550, task); } struct starpu_task * starpu_task_create () { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_task_create_551); struct starpu_task * ret = libstarpu_task_create (); EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_task_create_552); return ret; } void starpu_task_destroy (struct starpu_task* task) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_task_destroy_553, task); libstarpu_task_destroy (task); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_task_destroy_554, task); } int starpu_task_submit (struct starpu_task* task) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_task_submit_555, task); int ret = libstarpu_task_submit (task); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_task_submit_556, task); return ret; } int starpu_task_submit_to_ctx (struct starpu_task* task, unsigned sched_ctx_id) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_task_submit_to_ctx_557, task, sched_ctx_id); int ret = libstarpu_task_submit_to_ctx (task, sched_ctx_id); EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_task_submit_to_ctx_558, task, sched_ctx_id); return ret; } int starpu_task_wait (struct starpu_task* task) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_task_wait_559, task); int ret = libstarpu_task_wait (task); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_task_wait_560, task); return ret; } int starpu_task_wait_for_all () { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_task_wait_for_all_561); int ret = libstarpu_task_wait_for_all (); EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_task_wait_for_all_562); return ret; } int starpu_task_wait_for_all_in_ctx (unsigned sched_ctx_id) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_task_wait_for_all_in_ctx_563, sched_ctx_id); int ret = libstarpu_task_wait_for_all_in_ctx (sched_ctx_id); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_task_wait_for_all_in_ctx_564, sched_ctx_id); return ret; } int starpu_task_wait_for_no_ready () { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_task_wait_for_no_ready_565); int ret = libstarpu_task_wait_for_no_ready (); EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_task_wait_for_no_ready_566); return ret; } int starpu_task_nready () { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_task_nready_567); int ret = libstarpu_task_nready (); EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_task_nready_568); return ret; } int starpu_task_nsubmitted () { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_task_nsubmitted_569); int ret = libstarpu_task_nsubmitted (); EZTRACE_EVENT_PACKED_0 (EZTRACE_starpu_starpu_task_nsubmitted_570); return ret; } struct starpu_task * starpu_task_dup (struct starpu_task* task) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_task_dup_581, task); struct starpu_task * ret = libstarpu_task_dup (task); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_task_dup_582, task); return ret; } void starpu_task_bundle_create (starpu_task_bundle_t* bundle) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_task_bundle_create_587, bundle); libstarpu_task_bundle_create (bundle); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_task_bundle_create_588, bundle); } int starpu_task_bundle_insert (starpu_task_bundle_t bundle, struct starpu_task* task) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_task_bundle_insert_589, bundle, task); int ret = libstarpu_task_bundle_insert (bundle, task); EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_task_bundle_insert_590, bundle, task); return ret; } int starpu_task_bundle_remove (starpu_task_bundle_t bundle, struct starpu_task* task) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_task_bundle_remove_591, bundle, task); int ret = libstarpu_task_bundle_remove (bundle, task); EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_task_bundle_remove_592, bundle, task); return ret; } void starpu_task_bundle_close (starpu_task_bundle_t bundle) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_task_bundle_close_593, bundle); libstarpu_task_bundle_close (bundle); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_task_bundle_close_594, bundle); } void starpu_create_sync_task (starpu_tag_t sync_tag, unsigned ndeps, starpu_tag_t* deps, void (* callback)(void *), void *callback_arg) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_create_sync_task_595, sync_tag, ndeps, deps); libstarpu_create_sync_task (sync_tag, ndeps, deps, callback, callback_arg); EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_create_sync_task_596, sync_tag, ndeps, deps); } void starpu_execute_on_each_worker (void (* func)(void *), void *arg, uint32_t where) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_execute_on_each_worker_691, where); libstarpu_execute_on_each_worker (func, arg, where); EZTRACE_EVENT_PACKED_1 (EZTRACE_starpu_starpu_execute_on_each_worker_692, where); } void starpu_execute_on_each_worker_ex (void (* func)(void *), void *arg, uint32_t where, const char * name) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_execute_on_each_worker_ex_693, where, name); libstarpu_execute_on_each_worker_ex (func, arg, where, name); EZTRACE_EVENT_PACKED_2 (EZTRACE_starpu_starpu_execute_on_each_worker_ex_694, where, name); } void starpu_execute_on_specific_workers (void (* func)(void*), void * arg, unsigned num_workers, unsigned * workers, const char * name) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_execute_on_specific_workers_695, num_workers, workers, name); libstarpu_execute_on_specific_workers (func, arg, num_workers, workers, name); EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_execute_on_specific_workers_696, num_workers, workers, name); } int starpu_data_cpy (starpu_data_handle_t dst_handle, starpu_data_handle_t src_handle, int asynchronous, void (* callback_func)(void*), void *callback_arg) { FUNCTION_ENTRY EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_data_cpy_697, dst_handle, src_handle, asynchronous); int ret = libstarpu_data_cpy (dst_handle, src_handle, asynchronous, callback_func, callback_arg); EZTRACE_EVENT_PACKED_3 (EZTRACE_starpu_starpu_data_cpy_698, dst_handle, src_handle, asynchronous); return ret; } START_INTERCEPT_MODULE(starpu) INTERCEPT2("_starpu_driver_start_job", lib_starpu_driver_start_job) INTERCEPT2("_starpu_driver_end_job", lib_starpu_driver_end_job) INTERCEPT2("starpu_cublas_init", libstarpu_cublas_init) INTERCEPT2("starpu_cublas_shutdown", libstarpu_cublas_shutdown) INTERCEPT2("starpu_init", libstarpu_init) INTERCEPT2("starpu_pause", libstarpu_pause) INTERCEPT2("starpu_resume", libstarpu_resume) INTERCEPT2("starpu_shutdown", libstarpu_shutdown) INTERCEPT2("starpu_data_unregister", libstarpu_data_unregister) INTERCEPT2("starpu_data_unregister_no_coherency", libstarpu_data_unregister_no_coherency) INTERCEPT2("starpu_data_unregister_submit", libstarpu_data_unregister_submit) INTERCEPT2("starpu_data_invalidate", libstarpu_data_invalidate) INTERCEPT2("starpu_data_invalidate_submit", libstarpu_data_invalidate_submit) INTERCEPT2("starpu_data_acquire", libstarpu_data_acquire) INTERCEPT2("starpu_data_acquire_on_node", libstarpu_data_acquire_on_node) INTERCEPT2("starpu_data_acquire_cb", libstarpu_data_acquire_cb) INTERCEPT2("starpu_data_acquire_on_node_cb", libstarpu_data_acquire_on_node_cb) INTERCEPT2("starpu_data_release", libstarpu_data_release) INTERCEPT2("starpu_data_release_on_node", libstarpu_data_release_on_node) INTERCEPT2("starpu_data_request_allocation", libstarpu_data_request_allocation) INTERCEPT2("starpu_malloc_on_node", libstarpu_malloc_on_node) INTERCEPT2("starpu_free_on_node", libstarpu_free_on_node) INTERCEPT2("starpu_mpi_isend", libstarpu_mpi_isend) INTERCEPT2("starpu_mpi_irecv", libstarpu_mpi_irecv) INTERCEPT2("starpu_mpi_send", libstarpu_mpi_send) INTERCEPT2("starpu_mpi_recv", libstarpu_mpi_recv) INTERCEPT2("starpu_mpi_isend_detached", libstarpu_mpi_isend_detached) INTERCEPT2("starpu_mpi_irecv_detached", libstarpu_mpi_irecv_detached) INTERCEPT2("starpu_mpi_wait", libstarpu_mpi_wait) INTERCEPT2("starpu_mpi_test", libstarpu_mpi_test) INTERCEPT2("starpu_mpi_barrier", libstarpu_mpi_barrier) INTERCEPT2("starpu_mpi_init", libstarpu_mpi_init) INTERCEPT2("starpu_mpi_initialize", libstarpu_mpi_initialize) INTERCEPT2("starpu_mpi_initialize_extended", libstarpu_mpi_initialize_extended) INTERCEPT2("starpu_mpi_shutdown", libstarpu_mpi_shutdown) INTERCEPT2("starpu_mpi_get_data_on_node", libstarpu_mpi_get_data_on_node) INTERCEPT2("starpu_mpi_get_data_on_node_detached", libstarpu_mpi_get_data_on_node_detached) INTERCEPT2("starpu_mpi_redux_data", libstarpu_mpi_redux_data) INTERCEPT2("starpu_mpi_scatter_detached", libstarpu_mpi_scatter_detached) INTERCEPT2("starpu_mpi_gather_detached", libstarpu_mpi_gather_detached) INTERCEPT2("starpu_mpi_isend_detached_unlock_tag", libstarpu_mpi_isend_detached_unlock_tag) INTERCEPT2("starpu_mpi_irecv_detached_unlock_tag", libstarpu_mpi_irecv_detached_unlock_tag) INTERCEPT2("starpu_mpi_isend_array_detached_unlock_tag", libstarpu_mpi_isend_array_detached_unlock_tag) INTERCEPT2("starpu_mpi_irecv_array_detached_unlock_tag", libstarpu_mpi_irecv_array_detached_unlock_tag) INTERCEPT2("starpu_mpi_comm_amounts_retrieve", libstarpu_mpi_comm_amounts_retrieve) INTERCEPT2("starpu_mpi_cache_flush", libstarpu_mpi_cache_flush) INTERCEPT2("starpu_mpi_cache_flush_all_data", libstarpu_mpi_cache_flush_all_data) #ifndef HAVE_STARPU_MPI_DATA_REGISTER_COMM INTERCEPT2("starpu_mpi_data_register", libstarpu_mpi_data_register) #else INTERCEPT2("starpu_mpi_data_register_comm", libstarpu_mpi_data_register_comm) #endif INTERCEPT2("starpu_sched_ctx_add_workers", libstarpu_sched_ctx_add_workers) INTERCEPT2("starpu_sched_ctx_remove_workers", libstarpu_sched_ctx_remove_workers) INTERCEPT2("starpu_sched_ctx_delete", libstarpu_sched_ctx_delete) INTERCEPT2("starpu_sched_ctx_set_inheritor", libstarpu_sched_ctx_set_inheritor) INTERCEPT2("starpu_sched_ctx_set_context", libstarpu_sched_ctx_set_context) INTERCEPT2("starpu_sched_ctx_get_context", libstarpu_sched_ctx_get_context) INTERCEPT2("starpu_sched_ctx_stop_task_submission", libstarpu_sched_ctx_stop_task_submission) INTERCEPT2("starpu_sched_ctx_finished_submit", libstarpu_sched_ctx_finished_submit) INTERCEPT2("starpu_sched_ctx_create_worker_collection", libstarpu_sched_ctx_create_worker_collection) INTERCEPT2("starpu_sched_ctx_delete_worker_collection", libstarpu_sched_ctx_delete_worker_collection) INTERCEPT2("starpu_sched_ctx_get_worker_collection", libstarpu_sched_ctx_get_worker_collection) INTERCEPT2("starpu_prefetch_task_input_on_node", libstarpu_prefetch_task_input_on_node) INTERCEPT2("starpu_malloc", libstarpu_malloc) INTERCEPT2("starpu_free", libstarpu_free) INTERCEPT2("starpu_malloc_flags", libstarpu_malloc_flags) INTERCEPT2("starpu_free_flags", libstarpu_free_flags) INTERCEPT2("starpu_tag_wait", libstarpu_tag_wait) INTERCEPT2("starpu_tag_wait_array", libstarpu_tag_wait_array) INTERCEPT2("starpu_task_init", libstarpu_task_init) INTERCEPT2("starpu_task_clean", libstarpu_task_clean) INTERCEPT2("starpu_task_create", libstarpu_task_create) INTERCEPT2("starpu_task_destroy", libstarpu_task_destroy) INTERCEPT2("starpu_task_submit", libstarpu_task_submit) INTERCEPT2("starpu_task_submit_to_ctx", libstarpu_task_submit_to_ctx) INTERCEPT2("starpu_task_wait", libstarpu_task_wait) INTERCEPT2("starpu_task_wait_for_all", libstarpu_task_wait_for_all) INTERCEPT2("starpu_task_wait_for_all_in_ctx", libstarpu_task_wait_for_all_in_ctx) INTERCEPT2("starpu_task_wait_for_no_ready", libstarpu_task_wait_for_no_ready) INTERCEPT2("starpu_task_nready", libstarpu_task_nready) INTERCEPT2("starpu_task_nsubmitted", libstarpu_task_nsubmitted) INTERCEPT2("starpu_task_dup", libstarpu_task_dup) INTERCEPT2("starpu_task_bundle_create", libstarpu_task_bundle_create) INTERCEPT2("starpu_task_bundle_insert", libstarpu_task_bundle_insert) INTERCEPT2("starpu_task_bundle_remove", libstarpu_task_bundle_remove) INTERCEPT2("starpu_task_bundle_close", libstarpu_task_bundle_close) INTERCEPT2("starpu_create_sync_task", libstarpu_create_sync_task) INTERCEPT2("starpu_execute_on_each_worker", libstarpu_execute_on_each_worker) INTERCEPT2("starpu_execute_on_each_worker_ex", libstarpu_execute_on_each_worker_ex) INTERCEPT2("starpu_execute_on_specific_workers", libstarpu_execute_on_specific_workers) INTERCEPT2("starpu_data_cpy", libstarpu_data_cpy) INTERCEPT2("starpu_tag_notify_from_apps", libstarpu_tag_notify_from_apps) END_INTERCEPT_MODULE(starpu) static void __starpu_init (void) __attribute__ ((constructor)); /* Initialize the current library */ static void __starpu_init (void) { DYNAMIC_INTERCEPT_ALL_MODULE(starpu); /* start event recording */ #ifdef EZTRACE_AUTOSTART eztrace_start (); #endif } static void __starpu_conclude (void) __attribute__ ((destructor)); static void __starpu_conclude (void) { /* stop event recording */ eztrace_stop (); } eztrace-1.1-7/src/modules/PaxHeaders.7332/papi0000644000000000000000000000013213171135500015736 xustar0030 mtime=1508162368.389964631 30 atime=1508162372.166294941 30 ctime=1508162368.389964631 eztrace-1.1-7/src/modules/papi/0000755000175000017500000000000013171135500017202 5ustar00trahaytrahay00000000000000eztrace-1.1-7/src/modules/papi/PaxHeaders.7332/papi_ev_codes.h0000644000000000000000000000013212544237152020775 xustar0030 mtime=1435582058.567899951 30 atime=1507797543.130866303 30 ctime=1508162368.381963932 eztrace-1.1-7/src/modules/papi/papi_ev_codes.h0000644000175000017500000000576112544237152022175 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef __PAPI_EV_CODES_H__ #define __PAPI_EV_CODES_H__ #include #include "ev_codes.h" #define EZTRACE_PAPI_EVENTS_ID SYSTEM_MODULE_ID(0x06) #define EZTRACE_PAPI_PREFIX GENERATE_SYSTEM_MODULE_PREFIX(EZTRACE_PAPI_EVENTS_ID) #define EZTRACE_PAPI_INIT (EZTRACE_PAPI_PREFIX | 0X0001) #define EZTRACE_PAPI_INIT_COUNTERS (EZTRACE_PAPI_PREFIX | 0X0002) #define EZTRACE_PAPI_INIT_COUNTER_NAME (EZTRACE_PAPI_PREFIX | 0X0003) #define EZTRACE_PAPI_MEASUREMENT (EZTRACE_PAPI_PREFIX | 0X0010) struct papi_counter_id { int code; char* code_str; char* description; }; struct papi_counter_id *papi_counter_ids; static int nb_counters = 0; static inline void __papi_print_counter_ids() { int i; for (i = 0; i < nb_counters; i++) { printf("[%d] code %x : %s (%s)\n", i, papi_counter_ids[i].code, papi_counter_ids[i].code_str, papi_counter_ids[i].description); } } static inline void __papi_print_available_counters() { PAPI_event_info_t info; int retval; int mask = PAPI_PRESET_ENUM_AVAIL | PAPI_NTV_ENUM_UMASKS; int start = 0 | PAPI_PRESET_MASK; int i = start; do { retval = PAPI_get_event_info(i, &info); if (retval == PAPI_OK) { printf("%-20s %s\n", info.symbol, info.long_descr); } } while ((retval = PAPI_enum_event(&i, mask)) == PAPI_OK); } /* search for a counter name and return the corresponding code. * if not found, return -1; */ static inline int __papi_get_counter_id(char* counter_name) { int i; for (i = 0; i < nb_counters; i++) { if (strcmp(counter_name, papi_counter_ids[i].code_str) == 0) { return i; } } return -1; } static inline int __papi_get_counter_id_by_code(int counter_code) { int i; for (i = 0; i < nb_counters; i++) { if (counter_code == papi_counter_ids[i].code) return i; } return -1; } #define define_counter(id, __code__, __code_str__, __desc__) \ { \ papi_counter_ids[id].code = __code__; \ asprintf(&(papi_counter_ids[id].code_str), "%s", __code_str__); \ asprintf(&(papi_counter_ids[id].description), "%s", __desc__); \ } static inline void __papi_init_counter_ids() { nb_counters = 0; papi_counter_ids = NULL; PAPI_event_info_t info; int retval; int cur_counter = 0; int mask = PAPI_PRESET_ENUM_AVAIL; int start = 0 | PAPI_PRESET_MASK; int i = start; do { retval = PAPI_get_event_info(i, &info); if (retval == PAPI_OK) nb_counters++; } while ((retval = PAPI_enum_event(&i, mask)) == PAPI_OK); papi_counter_ids = malloc(sizeof(struct papi_counter_id) * nb_counters); i = start; do { retval = PAPI_get_event_info(i, &info); if (retval == PAPI_OK) { define_counter(cur_counter, info.event_code, info.symbol, info.long_descr); cur_counter++; } } while ((retval = PAPI_enum_event(&i, mask)) == PAPI_OK); } #endif /* _PAPI_EV_CODES_H__ */ eztrace-1.1-7/src/modules/papi/PaxHeaders.7332/eztrace_convert_papi.c0000644000000000000000000000013213012560437022372 xustar0030 mtime=1479205151.296727461 30 atime=1507797543.130866303 30 ctime=1508162368.389964631 eztrace-1.1-7/src/modules/papi/eztrace_convert_papi.c0000644000175000017500000001131113012560437023556 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE #include #include #include #include "eztrace_convert.h" #include "papi_ev_codes.h" #include "eztrace_list.h" static int recording_stats = 0; #define PAPI_CHANGE() if(!recording_stats) CHANGE() static int nb_papi_counters = 0; struct __papi_counter_info { int counter_code; char* gtg_alias; char* gtg_desc; uint64_t sum_counters; double total_duration; }; static struct __papi_counter_info *counters_info; void handle_papi_event() { if (!STARTED) return; FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); int index; long_long counter_diff; int duration; GET_PARAM_PACKED_3(CUR_EV, index, counter_diff, duration); counters_info[index].sum_counters += counter_diff; counters_info[index].total_duration += duration; PAPI_CHANGE() setVar(CURRENT, counters_info[index].gtg_alias, thread_id, counter_diff); } void handle_papi_init() { FUNC_NAME; /* if using MPI + PAPI, papi is initialized once per process */ static int already_initialized = 0; int i; int nb_counters; GET_PARAM_PACKED_1(CUR_EV, nb_counters); if (already_initialized) { /* make sure all the processes use the same counters */ assert(nb_counters == nb_papi_counters); } nb_papi_counters = nb_counters; if(!already_initialized) counters_info = malloc(nb_papi_counters*sizeof(struct __papi_counter_info)); /* if using MPI, we still need to process the following events (the ones that define the PAPI * codes to use). */ for(i=0; iid, EZTRACE_PAPI_INIT_COUNTERS); int index; int event_code; GET_PARAM_PACKED_2(CUR_EV, index, event_code); assert(index == i); wait_for_an_event(CUR_TRACE->id, EZTRACE_PAPI_INIT_COUNTERS); /* get the name of the counter */ assert(LITL_READ_GET_TYPE(CUR_EV) == LITL_TYPE_RAW); char* name = NULL; asprintf(&name, "%s", LITL_READ_RAW(CUR_EV)->data); wait_for_an_event(CUR_TRACE->id, EZTRACE_PAPI_INIT_COUNTERS); /* get the unit of the counter */ assert(LITL_READ_GET_TYPE(CUR_EV) == LITL_TYPE_RAW); char* units = NULL; asprintf(&units, "%s", LITL_READ_RAW(CUR_EV)->data); if(already_initialized) { /* make sure all the processes use the same counters */ assert(counters_info[i].counter_code == event_code); /* we don't need to do the remaining */ continue; } counters_info[i].counter_code = event_code; counters_info[i].gtg_desc = NULL; asprintf(&(counters_info[i].gtg_desc), "%s (%s per second)", name, units); counters_info[i].gtg_alias = name; counters_info[i].sum_counters = 0; counters_info[i].total_duration = 0; if(get_mode() == EZTRACE_CONVERT) { addVarType (counters_info[i].gtg_alias, counters_info[i].gtg_desc, "CT_Thread"); } } if(nb_papi_counters) already_initialized = 1; } int eztrace_convert_papi_init() { if (get_mode() == EZTRACE_CONVERT) { addVarType("V_L3miss", "L3 Misses", "CT_Thread"); } return 0; } /* return 1 if the event was handled */ int handle_papi_events(eztrace_event_t *ev) { switch (LITL_READ_GET_CODE(ev)) { case EZTRACE_PAPI_INIT: handle_papi_init(); break; case EZTRACE_PAPI_MEASUREMENT: handle_papi_event(); break; default: return 0; } return 1; } int handle_papi_stats(eztrace_event_t *ev) { recording_stats = 1; return handle_papi_events(ev); } void print_papi_stats() { printf("\nPAPI:\n"); printf("-------\n"); int i; for (i = 0; i < nb_papi_counters; i++) { printf("average %s: %lf\n", counters_info[i].gtg_desc, counters_info[i].sum_counters / counters_info[i].total_duration); } } struct eztrace_convert_module papi_module; void libinit(void) __attribute__ ((constructor)); void libinit(void) { papi_module.api_version = EZTRACE_API_VERSION; papi_module.init = eztrace_convert_papi_init; papi_module.handle = handle_papi_events; papi_module.handle_stats = handle_papi_stats; papi_module.print_stats = print_papi_stats; papi_module.module_prefix = EZTRACE_PAPI_EVENTS_ID; asprintf(&papi_module.name, "papi"); asprintf(&papi_module.description, "Module for PAPI Performance counters"); papi_module.token.data = &papi_module; eztrace_convert_register_module(&papi_module); int ret = PAPI_library_init(PAPI_VER_CURRENT); if (ret != PAPI_VER_CURRENT && ret > 0) { fprintf(stderr, "PAPI library version mismatch!\n"); exit(1); } __papi_init_counter_ids(); } void libfinalize(void) __attribute__ ((destructor)); void libfinalize(void) { } eztrace-1.1-7/src/modules/papi/PaxHeaders.7332/Makefile.am0000644000000000000000000000013213012560437020054 xustar0030 mtime=1479205151.296727461 30 atime=1508162220.101842149 30 ctime=1508162368.377963582 eztrace-1.1-7/src/modules/papi/Makefile.am0000644000175000017500000000300113012560437021235 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis # See COPYING in top-level directory. TLCFLAGS=$(TL_CPPFLAGS) TLLDFLAGS=$(TL_LDFLAGS) TLLIBADD=$(TL_LIB) GTGCFLAGS=$(GTG_CPPFLAGS) GTGLDFLAGS=$(GTG_LDFLAGS) GTGDEPENDENCIES = $(GTG_DEPENDENCIES) GTGLIBADD=$(GTG_LIB) if USE_PAPI lib_LTLIBRARIES = libeztrace-convert-papi.la \ libeztrace-papi.la \ libeztrace-autostart-papi.la AM_CFLAGS = -W -Wall -Wextra -I$(srcdir)/../../core/ -I$(top_builddir)/src/core \ -I$(top_srcdir)/src/pptrace libeztrace_convert_papi_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(GTGCFLAGS) $(PAPI_CPPFLAGS) libeztrace_convert_papi_la_LIBADD = $(TLLIBADD) $(GTGLIBADD) -lpapi libeztrace_convert_papi_la_LDFLAGS = $(GTGLDFLAGS) $(TLLDFLAGS) $(PAPI_LDFLAGS) libeztrace_convert_papi_la_DEPENDENCIES = $(GTGDEPENDENCIES) libeztrace_convert_papi_la_SOURCES = eztrace_convert_papi.c libeztrace_papi_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(PAPI_CPPFLAGS) libeztrace_papi_la_LIBADD = $(TLLIBADD) -lpapi libeztrace_papi_la_LDFLAGS = --no-undefined $(TLLDFLAGS) $(PAPI_LDFLAGS) libeztrace_papi_la_SOURCES = papi.c libeztrace_autostart_papi_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(PAPI_CPPFLAGS) libeztrace_autostart_papi_la_LIBADD = $(TLLIBADD) -lpapi libeztrace_autostart_papi_la_LDFLAGS = --no-undefined $(TLLDFLAGS) $(PAPI_LDFLAGS) libeztrace_autostart_papi_la_CFLAGS = $(AM_CFLAGS) -W -Wall -Wextra -DEZTRACE_AUTOSTART libeztrace_autostart_papi_la_SOURCES = papi.c noinst_HEADERS = papi_ev_codes.h endif # USE_PAPI eztrace-1.1-7/src/modules/papi/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135254020066 xustar0030 mtime=1508162220.129844209 30 atime=1508162286.675031748 30 ctime=1508162368.381963932 eztrace-1.1-7/src/modules/papi/Makefile.in0000644000175000017500000007371413171135254021271 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src/modules/papi ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__noinst_HEADERS_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) @USE_PAPI_TRUE@libeztrace_autostart_papi_la_DEPENDENCIES = \ @USE_PAPI_TRUE@ $(am__DEPENDENCIES_2) am__libeztrace_autostart_papi_la_SOURCES_DIST = papi.c @USE_PAPI_TRUE@am_libeztrace_autostart_papi_la_OBJECTS = \ @USE_PAPI_TRUE@ libeztrace_autostart_papi_la-papi.lo libeztrace_autostart_papi_la_OBJECTS = \ $(am_libeztrace_autostart_papi_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libeztrace_autostart_papi_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(libeztrace_autostart_papi_la_CFLAGS) $(CFLAGS) \ $(libeztrace_autostart_papi_la_LDFLAGS) $(LDFLAGS) -o $@ @USE_PAPI_TRUE@am_libeztrace_autostart_papi_la_rpath = -rpath \ @USE_PAPI_TRUE@ $(libdir) am__libeztrace_convert_papi_la_SOURCES_DIST = eztrace_convert_papi.c @USE_PAPI_TRUE@am_libeztrace_convert_papi_la_OBJECTS = libeztrace_convert_papi_la-eztrace_convert_papi.lo libeztrace_convert_papi_la_OBJECTS = \ $(am_libeztrace_convert_papi_la_OBJECTS) libeztrace_convert_papi_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libeztrace_convert_papi_la_LDFLAGS) \ $(LDFLAGS) -o $@ @USE_PAPI_TRUE@am_libeztrace_convert_papi_la_rpath = -rpath $(libdir) @USE_PAPI_TRUE@libeztrace_papi_la_DEPENDENCIES = \ @USE_PAPI_TRUE@ $(am__DEPENDENCIES_2) am__libeztrace_papi_la_SOURCES_DIST = papi.c @USE_PAPI_TRUE@am_libeztrace_papi_la_OBJECTS = \ @USE_PAPI_TRUE@ libeztrace_papi_la-papi.lo libeztrace_papi_la_OBJECTS = $(am_libeztrace_papi_la_OBJECTS) libeztrace_papi_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libeztrace_papi_la_LDFLAGS) \ $(LDFLAGS) -o $@ @USE_PAPI_TRUE@am_libeztrace_papi_la_rpath = -rpath $(libdir) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libeztrace_autostart_papi_la_SOURCES) \ $(libeztrace_convert_papi_la_SOURCES) \ $(libeztrace_papi_la_SOURCES) DIST_SOURCES = $(am__libeztrace_autostart_papi_la_SOURCES_DIST) \ $(am__libeztrace_convert_papi_la_SOURCES_DIST) \ $(am__libeztrace_papi_la_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__noinst_HEADERS_DIST = papi_ev_codes.h HEADERS = $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUDA_CFLAGS = @CUDA_CFLAGS@ CUDA_LDFLAGS = @CUDA_LDFLAGS@ CUDA_LIBS = @CUDA_LIBS@ CUDA_ROOT = @CUDA_ROOT@ CUPTI_CFLAGS = @CUPTI_CFLAGS@ CUPTI_LDFLAGS = @CUPTI_LDFLAGS@ CUPTI_LIBS = @CUPTI_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ DYNLIB_EXT = @DYNLIB_EXT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ GTGDIR = @GTGDIR@ GTG_CPPFLAGS = @GTG_CPPFLAGS@ GTG_DEPENDENCIES = @GTG_DEPENDENCIES@ GTG_EXT_CPPFLAGS = @GTG_EXT_CPPFLAGS@ GTG_EXT_LDFLAGS = @GTG_EXT_LDFLAGS@ GTG_EXT_LIB = @GTG_EXT_LIB@ GTG_LDFLAGS = @GTG_LDFLAGS@ GTG_LIB = @GTG_LIB@ GTG_OUT_OF_ORDER = @GTG_OUT_OF_ORDER@ HAVE_ENV = @HAVE_ENV@ HAVE_LIBBACKTRACE = @HAVE_LIBBACKTRACE@ HAVE_LIBOPCODE = @HAVE_LIBOPCODE@ HAVE_PRCTL_H = @HAVE_PRCTL_H@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LD_LIBRARY_PATH_NAME = @LD_LIBRARY_PATH_NAME@ LD_PRELOAD_NAME = @LD_PRELOAD_NAME@ LIBBACKTRACE_CPPFLAGS = @LIBBACKTRACE_CPPFLAGS@ LIBBACKTRACE_LDFLAGS = @LIBBACKTRACE_LDFLAGS@ LIBBACKTRACE_LIB = @LIBBACKTRACE_LIB@ LIBBACKTRACE_ROOT = @LIBBACKTRACE_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LITL_PRINT = @LITL_PRINT@ LITL_ROOT = @LITL_ROOT@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPI_CFLAGS = @MPI_CFLAGS@ MPI_EVENT_ID = @MPI_EVENT_ID@ MPI_INC = @MPI_INC@ MPI_LDFLAGS = @MPI_LDFLAGS@ MPI_MODULE_NAME = @MPI_MODULE_NAME@ MPI_ROOT = @MPI_ROOT@ NM = @NM@ NMEDIT = @NMEDIT@ NVCC = @NVCC@ NVCCFLAGS = @NVCCFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAPIDIR = @PAPIDIR@ PAPI_CPPFLAGS = @PAPI_CPPFLAGS@ PAPI_ENABLED = @PAPI_ENABLED@ PAPI_LDFLAGS = @PAPI_LDFLAGS@ PAPI_LIBDIR = @PAPI_LIBDIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PPTRACE_BINARY_TYPE = @PPTRACE_BINARY_TYPE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STARPU_CFLAGS = @STARPU_CFLAGS@ STARPU_CPPFLAGS = @STARPU_CPPFLAGS@ STARPU_LDFLAGS = @STARPU_LDFLAGS@ STARPU_LIBS = @STARPU_LIBS@ STARPU_ROOT = @STARPU_ROOT@ STRIP = @STRIP@ TARGET_BITS = @TARGET_BITS@ TL_CPPFLAGS = @TL_CPPFLAGS@ TL_EXT_CPPFLAGS = @TL_EXT_CPPFLAGS@ TL_EXT_LDFLAGS = @TL_EXT_LDFLAGS@ TL_EXT_LIB = @TL_EXT_LIB@ TL_LDFLAGS = @TL_LDFLAGS@ TL_LIB = @TL_LIB@ USE_BIN_INSTRUMENTATION = @USE_BIN_INSTRUMENTATION@ USE_CUDADIR_FROM_USER = @USE_CUDADIR_FROM_USER@ USE_GETTID = @USE_GETTID@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ USE_PAPIDIR_FROM_USER = @USE_PAPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ TLCFLAGS = $(TL_CPPFLAGS) TLLDFLAGS = $(TL_LDFLAGS) TLLIBADD = $(TL_LIB) GTGCFLAGS = $(GTG_CPPFLAGS) GTGLDFLAGS = $(GTG_LDFLAGS) GTGDEPENDENCIES = $(GTG_DEPENDENCIES) GTGLIBADD = $(GTG_LIB) @USE_PAPI_TRUE@lib_LTLIBRARIES = libeztrace-convert-papi.la \ @USE_PAPI_TRUE@ libeztrace-papi.la \ @USE_PAPI_TRUE@ libeztrace-autostart-papi.la @USE_PAPI_TRUE@AM_CFLAGS = -W -Wall -Wextra -I$(srcdir)/../../core/ -I$(top_builddir)/src/core \ @USE_PAPI_TRUE@ -I$(top_srcdir)/src/pptrace @USE_PAPI_TRUE@libeztrace_convert_papi_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(GTGCFLAGS) $(PAPI_CPPFLAGS) @USE_PAPI_TRUE@libeztrace_convert_papi_la_LIBADD = $(TLLIBADD) $(GTGLIBADD) -lpapi @USE_PAPI_TRUE@libeztrace_convert_papi_la_LDFLAGS = $(GTGLDFLAGS) $(TLLDFLAGS) $(PAPI_LDFLAGS) @USE_PAPI_TRUE@libeztrace_convert_papi_la_DEPENDENCIES = $(GTGDEPENDENCIES) @USE_PAPI_TRUE@libeztrace_convert_papi_la_SOURCES = eztrace_convert_papi.c @USE_PAPI_TRUE@libeztrace_papi_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(PAPI_CPPFLAGS) @USE_PAPI_TRUE@libeztrace_papi_la_LIBADD = $(TLLIBADD) -lpapi @USE_PAPI_TRUE@libeztrace_papi_la_LDFLAGS = --no-undefined $(TLLDFLAGS) $(PAPI_LDFLAGS) @USE_PAPI_TRUE@libeztrace_papi_la_SOURCES = papi.c @USE_PAPI_TRUE@libeztrace_autostart_papi_la_CPPFLAGS = $(AM_CPPFLAGS) $(TLCFLAGS) $(PAPI_CPPFLAGS) @USE_PAPI_TRUE@libeztrace_autostart_papi_la_LIBADD = $(TLLIBADD) -lpapi @USE_PAPI_TRUE@libeztrace_autostart_papi_la_LDFLAGS = --no-undefined $(TLLDFLAGS) $(PAPI_LDFLAGS) @USE_PAPI_TRUE@libeztrace_autostart_papi_la_CFLAGS = $(AM_CFLAGS) -W -Wall -Wextra -DEZTRACE_AUTOSTART @USE_PAPI_TRUE@libeztrace_autostart_papi_la_SOURCES = papi.c @USE_PAPI_TRUE@noinst_HEADERS = papi_ev_codes.h all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/modules/papi/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/modules/papi/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libeztrace-autostart-papi.la: $(libeztrace_autostart_papi_la_OBJECTS) $(libeztrace_autostart_papi_la_DEPENDENCIES) $(EXTRA_libeztrace_autostart_papi_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_autostart_papi_la_LINK) $(am_libeztrace_autostart_papi_la_rpath) $(libeztrace_autostart_papi_la_OBJECTS) $(libeztrace_autostart_papi_la_LIBADD) $(LIBS) libeztrace-convert-papi.la: $(libeztrace_convert_papi_la_OBJECTS) $(libeztrace_convert_papi_la_DEPENDENCIES) $(EXTRA_libeztrace_convert_papi_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_convert_papi_la_LINK) $(am_libeztrace_convert_papi_la_rpath) $(libeztrace_convert_papi_la_OBJECTS) $(libeztrace_convert_papi_la_LIBADD) $(LIBS) libeztrace-papi.la: $(libeztrace_papi_la_OBJECTS) $(libeztrace_papi_la_DEPENDENCIES) $(EXTRA_libeztrace_papi_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_papi_la_LINK) $(am_libeztrace_papi_la_rpath) $(libeztrace_papi_la_OBJECTS) $(libeztrace_papi_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_autostart_papi_la-papi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_convert_papi_la-eztrace_convert_papi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_papi_la-papi.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libeztrace_autostart_papi_la-papi.lo: papi.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_papi_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_papi_la_CFLAGS) $(CFLAGS) -MT libeztrace_autostart_papi_la-papi.lo -MD -MP -MF $(DEPDIR)/libeztrace_autostart_papi_la-papi.Tpo -c -o libeztrace_autostart_papi_la-papi.lo `test -f 'papi.c' || echo '$(srcdir)/'`papi.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_autostart_papi_la-papi.Tpo $(DEPDIR)/libeztrace_autostart_papi_la-papi.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='papi.c' object='libeztrace_autostart_papi_la-papi.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_papi_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_papi_la_CFLAGS) $(CFLAGS) -c -o libeztrace_autostart_papi_la-papi.lo `test -f 'papi.c' || echo '$(srcdir)/'`papi.c libeztrace_convert_papi_la-eztrace_convert_papi.lo: eztrace_convert_papi.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_papi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_convert_papi_la-eztrace_convert_papi.lo -MD -MP -MF $(DEPDIR)/libeztrace_convert_papi_la-eztrace_convert_papi.Tpo -c -o libeztrace_convert_papi_la-eztrace_convert_papi.lo `test -f 'eztrace_convert_papi.c' || echo '$(srcdir)/'`eztrace_convert_papi.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_convert_papi_la-eztrace_convert_papi.Tpo $(DEPDIR)/libeztrace_convert_papi_la-eztrace_convert_papi.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_convert_papi.c' object='libeztrace_convert_papi_la-eztrace_convert_papi.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_papi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_convert_papi_la-eztrace_convert_papi.lo `test -f 'eztrace_convert_papi.c' || echo '$(srcdir)/'`eztrace_convert_papi.c libeztrace_papi_la-papi.lo: papi.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_papi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_papi_la-papi.lo -MD -MP -MF $(DEPDIR)/libeztrace_papi_la-papi.Tpo -c -o libeztrace_papi_la-papi.lo `test -f 'papi.c' || echo '$(srcdir)/'`papi.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_papi_la-papi.Tpo $(DEPDIR)/libeztrace_papi_la-papi.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='papi.c' object='libeztrace_papi_la-papi.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_papi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_papi_la-papi.lo `test -f 'papi.c' || echo '$(srcdir)/'`papi.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libLTLIBRARIES install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/src/modules/papi/PaxHeaders.7332/papi.c0000644000000000000000000000013113064435534017122 xustar0029 mtime=1490172764.97437013 30 atime=1507797543.130866303 30 ctime=1508162368.389964631 eztrace-1.1-7/src/modules/papi/papi.c0000644000175000017500000002237413064435534020322 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 /* or _BSD_SOURCE or _SVID_SOURCE */ #define _REENTRANT #include #include #include #include #include #include #include #include #include "eztrace_sampling.h" #include "papi_ev_codes.h" #include "eztrace.h" /* set to 1 when all the hooks are set. * This is usefull in order to avoid recursive calls */ static int __papi_initialized = 0; //#define VERBOSE 1 /* We don't use the FUNCTION_NAME macro (defined in src/core/eztrace.h) * to avoid infinite loops (since it calls record_counters). */ #ifdef FUNCTION_NAME #undef FUNCTION_NAME #endif #ifdef VERBOSE #define FUNCTION_NAME fprintf(stderr, "Calling [%s]\n", __FUNCTION__) #else #define FUNCTION_NAME (void) 0 #endif #define TIME_DIFF(t1, t2) \ ((t2.tv_sec - t1.tv_sec) * 1000000 + (t2.tv_usec - t1.tv_usec)) static pthread_key_t papi_thread_info_key; struct __papi_thread_info { int Events; long_long *values; struct timeval last_tick; }; static int nb_events; static int Events; static int* Event_codes; static char** Event_names; static char** units_names; struct __papi_thread_info * papi_init_hw_counter(); #define handle_error(n) \ fprintf(stderr, "%s: PAPI error %d: %s\n",__FUNCTION__, n,PAPI_strerror(n)) int papi_record(struct ezt_sampling_callback_instance *instance) { if (!__papi_initialized || !nb_events) return 0; struct __papi_thread_info *ptr = NULL; struct timeval cur_tick; gettimeofday(&cur_tick, NULL ); /* retrieve the thread-specific structure */ if(! instance->plugin_data) { ptr = papi_init_hw_counter(instance); if (!ptr) { return -1; } } ptr = instance->plugin_data; /* read hardware counter */ // this region needs to be protected in order to disable infinite recursion due to the intercepting of functions. // Because, PAPI functions can possibly be intercepted too. EZTRACE_PROTECT { EZTRACE_PROTECT_ON(); int ret; /* get the values of counters */ if ((ret = PAPI_stop(ptr->Events, ptr->values)) != PAPI_OK) { handle_error(ret); abort(); } /* restart counters */ ret = PAPI_start(ptr->Events); if(ret != PAPI_OK) { handle_error(ret); abort(); } int duration = TIME_DIFF(instance->last_call, cur_tick); /* duration in usec */ int i; for (i = 0; i < nb_events; i++) { // As this region is protected, the unprotected function is called EZTRACE_EVENT3_PACKED_UNPROTECTED(EZTRACE_PAPI_MEASUREMENT, i, ptr->values[i], duration); } /* reset the timer */ instance->last_call.tv_usec = cur_tick.tv_usec; instance->last_call.tv_sec = cur_tick.tv_sec; EZTRACE_PROTECT_OFF(); return 0; } return 1; } /* Initialize the PAPI counter interface for a thread */ struct __papi_thread_info * papi_init_hw_counter(struct ezt_sampling_callback_instance *instance) { if (!nb_events) /* no counter were selected. We don't need to do anything */ return NULL; struct __papi_thread_info *ptr = NULL; // this region needs to be protected in order to disable infinite recursion due to the intercepting of functions. // Because, PAPI functions can possibly be intercepted too. EZTRACE_PROTECT { EZTRACE_PROTECT_ON(); int ret; /* initialize the thread-specific structure */ if (instance->plugin_data == NULL ) { /* This thread has not been initialized yet */ PAPI_register_thread(); ptr = malloc(sizeof(struct __papi_thread_info)); ptr->values = malloc(sizeof(long_long) * nb_events); int i; /* Create a new EventSet */ ptr->Events = PAPI_NULL; ret = PAPI_create_eventset(&ptr->Events); if(ret != PAPI_OK) { handle_error(ret); abort(); } /* copy Events to the EventSet */ for (i = 0; i < nb_events; i++) { ret = PAPI_add_event( ptr->Events, Event_codes[i] ); if(ret != PAPI_OK) { handle_error(ret); abort(); } } /* Start the counter */ if ((ret = PAPI_start(ptr->Events)) != PAPI_OK) { if (ret == PAPI_ECNFLCT) { fprintf(stderr, "PAPI error %d (%s): It is likely that you selected too many counters to monitor\n", ret, PAPI_strerror(ret)); exit(-1); } } /* set the structure Thread-specific */ instance->plugin_data = ptr; /* first measurement */ gettimeofday(&instance->last_call, NULL ); int retval = PAPI_stop( ptr->Events, ptr->values); if (retval != PAPI_OK) { fprintf(stderr, "PAPI_stop() failed\n"); } retval = PAPI_start(ptr->Events); if (retval != PAPI_OK) { fprintf(stderr,"PAPI_start() failed\n"); exit(1); } } EZTRACE_PROTECT_OFF(); } return ptr; } static int __papi_add_counter(char* counter_name) { nb_events++; Event_codes = realloc(Event_codes, sizeof(int) * nb_events); Event_names = realloc(Event_names, sizeof(char*) * nb_events); units_names = realloc(units_names, sizeof(char*) * nb_events); int code; int retval; if ( (retval = PAPI_event_name_to_code( counter_name, &code )) == PAPI_OK ) { retval = PAPI_add_event( Events, code ); if (retval != PAPI_OK) { handle_error(retval); nb_events--; return retval; } else { #if PAPI_VERSION > PAPI_VERSION_NUMBER(5,0,0,0) PAPI_event_info_t info; retval = PAPI_get_event_info(code, &info); if (retval != PAPI_OK) { /* PAPI_get_event_info failed. Let's assume there is no unit */ handle_error(retval); asprintf(&units_names[nb_events-1], " "); } else { asprintf(&units_names[nb_events-1], "%s", info.units); } #else asprintf(&units_names[nb_events-1], " "); #endif Event_codes[nb_events-1] = code; asprintf(&Event_names[nb_events-1], "%s", counter_name); return PAPI_OK; } } handle_error(retval); nb_events--; return retval; } /* select the counters to monitor */ static void __papi_select_counters() { int invalid_counters = 0; char* env1 = getenv("EZTRACE_PAPI_COUNTERS"); nb_events = 0; Events = PAPI_NULL; if ( PAPI_create_eventset( &Events ) != PAPI_OK ) { abort(); } if (env1) { /* EZTRACE_PAPI_COUNTERS is defined */ /* strtok may modify env, so let's make a copy of it */ char* env; asprintf(&env, "%s", env1); char *token = strtok(env, " "); /* for each token, get the code id and fill the Events array */ while (token) { if(__papi_add_counter(token) != PAPI_OK) { invalid_counters = 1; } token = strtok(NULL, " "); } } else { /* EZTRACE_PAPI_COUNTERS is not defined, use the default values */ __papi_add_counter("PAPI_TOT_INS"); } if (invalid_counters) { fprintf(stderr, "Available counters:\n"); __papi_print_available_counters(); } } /* In some cases (eg. using -O3 with gcc), the compiler may optimize too agressively and remove the function array symbol. * This results in pptrace being unable to load the module (since the symbol is not found). * This can be "solved" by declaring 2 callbacks to avoid the compiler optimization */ void (*libfoo)(void*); void (*libfoo2)(void*); START_INTERCEPT_MODULE(papi) INTERCEPT2("foo", libfoo) INTERCEPT2("foo2", libfoo2) END_INTERCEPT_MODULE(papi) static void __papi_init(void) __attribute__ ((constructor)); static void __papi_init(void) { DYNAMIC_INTERCEPT_ALL_MODULE(papi); int ret; pthread_key_create(&papi_thread_info_key, NULL ); /* initialize PAPI */ ret = PAPI_library_init(PAPI_VER_CURRENT); if (ret != PAPI_VER_CURRENT && ret > 0) { fprintf(stderr, "PAPI library version mismatch!\n"); exit(1); } /* There may be several threads, so let's tell this to PAPI */ if ((ret = PAPI_thread_init(pthread_self)) != PAPI_OK) handle_error(ret); __papi_init_counter_ids(); __papi_select_counters(); char* env=getenv("EZTRACE_PAPI_SAMPLE_INTERVAL"); int sample_interval=100; /* by default, check counter every 100 µs */ if(env) { sample_interval = atoi(env); if(sample_interval <= 0) { fprintf(stderr, "[EZTrace] please enter a value > 0 when setting EZTRACE_PAPI_SAMPLE_INTERVAL\n"); sample_interval=100; } } #ifdef EZTRACE_AUTOSTART eztrace_start (); #endif __papi_initialized = 1; /* Tell how many counters (and which counters) are monitored */ EZTRACE_EVENT_PACKED_1(EZTRACE_PAPI_INIT, nb_events); int i; for (i = 0; i < nb_events; i++) { EZTRACE_EVENT_PACKED_2(EZTRACE_PAPI_INIT_COUNTERS, i, Event_codes[i]); litl_write_probe_raw(__ezt_trace.litl_trace, EZTRACE_PAPI_INIT_COUNTERS, strlen(Event_names[i]), (litl_data_t*) Event_names[i]); litl_write_probe_raw(__ezt_trace.litl_trace, EZTRACE_PAPI_INIT_COUNTERS, strlen(units_names[i]), (litl_data_t*)units_names[i]); /* todo: add event description */ } ezt_sampling_register_callback(papi_record, sample_interval); } static void __papi_conclude(void) __attribute__ ((destructor)); static void __papi_conclude(void) { __papi_initialized = 0; eztrace_stop(); } eztrace-1.1-7/src/PaxHeaders.7332/pptrace0000644000000000000000000000012613171135477015013 xustar0028 mtime=1508162367.8299157 30 atime=1508162372.166294941 28 ctime=1508162367.8299157 eztrace-1.1-7/src/pptrace/0000755000175000017500000000000013171135477016254 5ustar00trahaytrahay00000000000000eztrace-1.1-7/src/pptrace/PaxHeaders.7332/types.h0000644000000000000000000000013113020610327016362 xustar0029 mtime=1480790231.95021497 30 atime=1508138884.100123315 30 ctime=1508162365.457708634 eztrace-1.1-7/src/pptrace/types.h0000644000175000017500000000121713020610327017553 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #ifndef TYPES_H #define TYPES_H // without explicit distinguishing between architectures, this code is portable on both x86_64 and ARMv7 #if __WORDSIZE == 64 typedef uint64_t word_uint; typedef int64_t word_int; #define WORD_HEX_FORMAT "%lx" #define WORD_DEC_FORMAT "%ld" #else // __WORDSIZE != 64 typedef uint32_t word_uint; typedef int32_t word_int; #define WORD_HEX_FORMAT "%x" #define WORD_DEC_FORMAT "%d" #endif // __WORDSIZE == 64 #endif // TYPES_H #if __arm__ #define ARM_INSTR_SIZE 32 #endif eztrace-1.1-7/src/pptrace/PaxHeaders.7332/memory.h0000644000000000000000000000013113020610327016526 xustar0029 mtime=1480790231.95021497 30 atime=1508138884.180125313 30 ctime=1508162365.457708634 eztrace-1.1-7/src/pptrace/memory.h0000644000175000017500000000175613020610327017727 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * memory.h -- handles memory allocation in the target process * * Provided methods: * - allocate_buffer(child, size): allocate a buffer of size *size* in * the process *child*. Returns the address allocated * - correct_buffer_allocation(child, required_size, actual_size): free * (*required_size*-*actual_size*) in the process *child* for the last * allocation made by allocate_buffer(). * * Created on: 2 juil. 2011 * Author: Damien Martin-Guillerez */ #ifndef PPTRACE_MEMORY_H_ #define PPTRACE_MEMORY_H_ #include #include #include #include "types.h" word_uint allocate_buffer(pid_t child, size_t size); void correct_buffer_allocation(pid_t child, size_t required_size, size_t actual_size); #endif /* PPTRACE_MEMORY_H_ */ eztrace-1.1-7/src/pptrace/PaxHeaders.7332/arch0000644000000000000000000000013213171135475015723 xustar0030 mtime=1508162365.465709333 30 atime=1508162367.741908015 30 ctime=1508162365.465709333 eztrace-1.1-7/src/pptrace/arch/0000755000175000017500000000000013171135475017167 5ustar00trahaytrahay00000000000000eztrace-1.1-7/src/pptrace/arch/PaxHeaders.7332/armv70000644000000000000000000000013213171135475016757 xustar0030 mtime=1508162365.469709681 30 atime=1508162367.741908015 30 ctime=1508162365.469709681 eztrace-1.1-7/src/pptrace/arch/armv7/0000755000175000017500000000000013171135475020223 5ustar00trahaytrahay00000000000000eztrace-1.1-7/src/pptrace/arch/armv7/PaxHeaders.7332/opcode.c0000644000000000000000000000013013143052166020441 xustar0030 mtime=1502368886.911763427 28 atime=1508161798.0590475 30 ctime=1508162365.469709681 eztrace-1.1-7/src/pptrace/arch/armv7/opcode.c0000644000175000017500000000323513143052166021635 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * opcode.c * * Determining the size to override (by computing the size of instructions) using the opcode library */ #include #include #include #include #include int dummy_print(void *stream, const char *fmt) { return 0; } /* * This function determines the size of instructions that will be replaced. * Output is the size of the replacement */ ssize_t opcode_get_overridden_size(bfd *abfd, pid_t child, word_uint symbol, size_t trampoline_size) { size_t max_size = trampoline_size * 2; if (max_size < 10) max_size = 10; unsigned char* code = (unsigned char*) malloc(max_size); trace_read(child, symbol, code, max_size); struct disassemble_info i; INIT_DISASSEMBLE_INFO(i, NULL, dummy_print); i.arch = bfd_get_arch(abfd); i.mach = bfd_get_mach(abfd); #if HAVE_BINUTILS_2_28_OR_OLDER disassembler_ftype disassemble = disassembler(abfd); #else disassembler_ftype disassemble = disassembler(i.arch, bfd_big_endian(abfd), i.mach, abfd); #endif i.buffer = code; i.buffer_vma = (unsigned long) i.buffer; i.buffer_length = max_size; i.disassembler_options = "force-thumb"; ssize_t j; for (j = 0; j < trampoline_size;) { j += disassemble(i.buffer_vma + j, &i); } free(code); return j; } ssize_t get_overridden_size(void* bin, pid_t child, word_uint symbol, size_t trampoline_size) { return opcode_get_overridden_size((bfd*) bin, child, symbol, trampoline_size); } eztrace-1.1-7/src/pptrace/arch/armv7/PaxHeaders.7332/trace.c0000644000000000000000000000013113020610327020260 xustar0029 mtime=1480790231.95021497 30 atime=1507797543.130866303 30 ctime=1508162365.469709681 eztrace-1.1-7/src/pptrace/arch/armv7/trace.c0000644000175000017500000000213613020610327021452 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * trace.c * * Determining the size to override (by computing the size of instructions) using single step tracing */ #include #include #include #include #include #define ARM_INSTR_SIZE_BYTE (ARM_INSTR_SIZE/8) /* * This function determines the size of instructions that will be replaced. * Output is the size of the replacement */ ssize_t get_overridden_size(void *bin, pid_t child, word_uint symbol, size_t trampoline_size) { /* On ARM mode, the size of instructions is static (32 bits). Thus, the size of instructions to replace * can be computed as follows. * Please note that this is only possible for ARM mode, *the result for Thumb mode is incorrect* ! */ return (size_t)( ((trampoline_size + symbol) / ARM_INSTR_SIZE_BYTE + ((trampoline_size + symbol) % ARM_INSTR_SIZE_BYTE == 0 ? 0 : 1)) * ARM_INSTR_SIZE_BYTE - symbol); } eztrace-1.1-7/src/pptrace/arch/PaxHeaders.7332/bfd.c0000644000000000000000000000013113020610327016661 xustar0029 mtime=1480790231.95021497 30 atime=1508138884.168125013 30 ctime=1508162365.465709333 eztrace-1.1-7/src/pptrace/arch/bfd.c0000644000175000017500000001462613020610327020062 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * bfd.c * * Parsing of binaries using the BFD library. See binary.h for the interfaces * This file needs the -lbfd flag when linking * * Created on: 2 juil. 2011 * Author: Damien Martin-Guillerez */ #include #include #include #include #include #include #include #include #include #include #include "ezt_demangle.h" // Internals int _initialized = 0; void _zzt_bin_init() { if (_initialized == 0) { bfd_init(); } } zzt_word zzt_asymbol_size(asymbol *sym) { if (bfd_asymbol_flavour(sym) == bfd_target_elf_flavour) { // ELF case hack by reverse engineering libbfd... bfd_vma* ielf = (bfd_vma*) (sym + 1); // The elf_internal_sym structure can be found right after the bfd struct return *(ielf + 1); // and second word in that struct is the size of the symbol } else { // We don't know return 0; } } /* read the symtable * fills syms and return the number of symbols */ static int __get_symbol_table(bfd* abfd, asymbol***symbol_table) { asymbol** syms = 0; unsigned int size; int dyn = 0; int i; char *p = NULL; /* search for symbols a static binary */ long symcount = bfd_read_minisymbols(abfd, dyn, (void**)&syms, &size); if (symcount == 0) { /* no symbol found. abfd is probably a dynamic library */ dyn = 1; symcount = bfd_read_minisymbols(abfd, dyn, (void**)&syms, &size); } if (symcount < 0) { return symcount; } *symbol_table = (asymbol **) malloc(sizeof(asymbol*) * symcount); assert(*symbol_table); p = (char*)syms; for ( i = 0; i < symcount; i++) { (*symbol_table)[i] = bfd_minisymbol_to_symbol(abfd, dyn, p, NULL); p += size; } return symcount; } void* apply_on_symbol(void *bin, char *symbol, void* (*apply)(bfd *abfd, asymbol *sym, va_list ap), ...) { va_list ap; bfd* abfd = (bfd*) bin; asymbol **symbol_table; long number_of_symbols; long i; va_start(ap, apply); number_of_symbols = __get_symbol_table(abfd, &symbol_table); if (number_of_symbols < 0) return NULL; for (i = 0; i < number_of_symbols; i++) { if (strcmp(symbol_table[i]->name, symbol) == 0 || strcmp(ezt_demangle(symbol_table[i]->name), symbol) == 0) { void* result = apply(abfd, symbol_table[i], ap); va_end(ap); free(symbol_table); return result; } } va_end(ap); free(symbol_table); return NULL; } const char* pptrace_bin_error() { if (bfd_get_error() == bfd_error_no_error) return NULL; return bfd_errmsg(bfd_get_error()); } // free_symbol void free_symbol(zzt_symbol *symbol) { if (symbol) { if (symbol->symbol_name) free(symbol->symbol_name); symbol->symbol_name = NULL; if (symbol->section_name) free(symbol->section_name); symbol->section_name = NULL; free(symbol); } } // open_binary void* open_binary(char *path) { bfd * bfd; _zzt_bin_init(); bfd = bfd_openr(path, NULL); if (!bfd) { return NULL; } if (!bfd_check_format(bfd, bfd_object)) { bfd_close(bfd); return NULL; } return bfd; } // close_binary void close_binary(void *bin) { bfd_close((bfd*) bin); } int get_binary_bits(void *bin) { return bfd_arch_bits_per_address((bfd*) bin); } // get_symbol void* symbol_from_bfd_sym(bfd *abfd __attribute__((unused)), asymbol *sym, va_list ap __attribute__((unused))) { zzt_symbol *result; result = (zzt_symbol*) malloc(sizeof(zzt_symbol)); result->symbol_name = strdup(sym->name); result->symbol_offset = sym->value; if (bfd_get_section(sym) == NULL) { result->section_name = ""; result->section_addr = 0; } else { result->section_name = strdup(bfd_get_section(sym)->name); result->section_addr = bfd_asymbol_base(sym); } if(abfd->flags & DYNAMIC) { /* The binary is relocatable (ie. compiled with -fPIE). The address * is thus an offset from the base address of the binary */ result->flags=ZZT_FLAG_DYNAMIC; } else { /* the address is the exact place where the symbol will be (ie. not * compiled with -fPIE) */ result->flags=ZZT_FLAG_STATIC; } result->symbol_size = zzt_asymbol_size(sym); #ifdef __arm__ /* On ARM processors, a symbol defined in a shared-library (ie. marked as 'U' in the symbol table) * may have a base address. The instructions located at this base address seem to be replaced by * the 'real' instruction when the library is loaded. * * In order to simplify pptrace behavior, let's return NULL for these symbols. */ if(result) { symbol_info syminfo; bfd_get_symbol_info(abfd, sym, &syminfo); if(syminfo.type == 'U') { result = NULL; } } #endif return (void*) result; } zzt_symbol* get_symbol(void *bin, char *symbol) { return (zzt_symbol*) apply_on_symbol(bin, symbol, symbol_from_bfd_sym); } // read_symbol void* read_symbol_from_bfd_sym(bfd *abfd, asymbol *sym, va_list ap) { void* buffer = va_arg(ap, void*); ssize_t size = va_arg(ap, ssize_t); size_t result = zzt_asymbol_size(sym); if (result == 0 || result > size) result = size; if (bfd_get_section(sym) != NULL) { if (bfd_get_section_contents(abfd, bfd_get_section(sym), buffer, sym->value, result)) { return (void*) result; } } return (void*) 0; } size_t read_symbol(void *bin, zzt_symbol *symbol, void *buffer, ssize_t size) { return (size_t) apply_on_symbol(bin, symbol->symbol_name, read_symbol_from_bfd_sym, buffer, size); } // read_zstring struct _get_section_struct { asection *result; zzt_word addr; }; size_t read_zstring(void *bin, zzt_symbol *symbol __attribute__((unused)), zzt_word addr, void *buffer, ssize_t size) { asection *sect; uint8_t buf; bfd *abfd = (bfd*) bin; for (sect = abfd->sections; sect != NULL; sect = sect->next) { if (sect->vma <= addr && addr < sect->vma + sect->size) { addr -= sect->vma; if (size > sect->size - addr) { size = sect->size - addr; } size_t result; for (result = 0; result < size - 1 && bfd_get_section_contents(abfd, sect, &buf, addr + result, 1) && buf != 0; result++) { ((uint8_t*) buffer)[result] = buf; } ((uint8_t*) buffer)[result] = 0; result++; return result; } } return 0; } eztrace-1.1-7/src/pptrace/arch/PaxHeaders.7332/x86_640000644000000000000000000000013213171135475016661 xustar0030 mtime=1508162365.465709333 30 atime=1508162367.741908015 30 ctime=1508162365.465709333 eztrace-1.1-7/src/pptrace/arch/x86_64/0000755000175000017500000000000013171135475020125 5ustar00trahaytrahay00000000000000eztrace-1.1-7/src/pptrace/arch/x86_64/PaxHeaders.7332/hijack.c0000644000000000000000000000013213143052223020317 xustar0030 mtime=1502368915.576399656 30 atime=1508138884.212126112 30 ctime=1508162365.465709333 eztrace-1.1-7/src/pptrace/arch/x86_64/hijack.c0000644000175000017500000001012413143052223021504 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * hijack.c * * Check the instructions that we are going to overwrite with a trampoline * */ #ifdef __x86_64__ #ifdef HAVE_LIBOPCODE #include #include #include #include int dummy_print(void *stream __attribute__((unused)), const char *fmt __attribute__((unused)), ...) { return 0; } #define HAVE_CHECK_INSTRUCTIONS /* Check the instructions that we are going to overwrite with a trampoline * Return 1 if the trampoline can be inserted without any issue. * return 0 if the trampoline may break the program */ int check_instructions(void* bin, pid_t child, word_uint sym_addr, word_uint reloc_addr, size_t length) { /* copy the child memory locally so that we can modify it */ uint8_t buffer[1024]; trace_read(child, sym_addr, buffer, length); bfd* abfd = (bfd*)bin; /* set to 1 if it is possible to modify the child program */ int can_change = 1; asection* section; section = bfd_get_section_by_name( abfd, ".text" ); if (section == NULL ) { return 0; } pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "Check instruction %d bytes starting at %p. relocating to %p\n", length, sym_addr, reloc_addr); /* reloc_addr and sym_addr are separated by more than 2GB * -> we can't use 'small jumps' */ if(reloc_addr-sym_addr > 1<<30) { can_change=0; } struct disassemble_info i; init_disassemble_info ( &i, NULL, dummy_print ); i.arch = bfd_get_arch(abfd); i.mach = bfd_get_mach(abfd); #if HAVE_BINUTILS_2_28_OR_OLDER disassembler_ftype disassemble = disassembler(abfd); #else disassembler_ftype disassemble = disassembler(i.arch, bfd_big_endian(abfd), i.mach, abfd); #endif if ( disassemble == NULL ) { return 0; } i.buffer_vma = section->vma; i.buffer_length = section->size; i.section = section; bfd_malloc_and_get_section( abfd, section, &i.buffer ); disassemble_init_for_target ( &i ); unsigned long count, pc; pc = sym_addr; count = 0; unsigned start_addr=0; int need_to_push_changes=0; /* browse the instructions and search for problematic opcodes. We may have a * problem in the following situations: * - one of the instructions is a jump * - one of the instruction uses RIP-relative addressing * -> in this case we can try to change the offset */ do { pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "0x%x ", pc ); count = disassemble( pc, &i ); pc += count; pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "\n\t" ); /* TODO: check for other problematic instructions (ie. jump) */ if( buffer[start_addr] == 0x8b && buffer[start_addr+1] == 0x5) { /* the instruction is a 'mov offset(%rip), %register' * we need to change the value of offset */ if(can_change) { /* it is possible to change the offset */ //uint32_t *p_addr = (uint32_t*)&buffer[start_addr+2]; uint32_t addr = buffer[start_addr+2] | buffer[start_addr+3]<<8 |buffer[start_addr+4]<<16; pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "\t\told offset: %lx\n", addr); addr = addr-(reloc_addr-sym_addr); pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "\t\tnew offset: %lx\n", addr); buffer[start_addr+2] = addr & 0xff; buffer[start_addr+3] = (addr & 0xff00)>>8; buffer[start_addr+4] = (addr & 0xff0000)>>16; addr = buffer[start_addr+2] | buffer[start_addr+3]<<8 |buffer[start_addr+4]<<16; need_to_push_changes=1; } else { /* it's not possible to change the offset. We should not instrument this * function ! */ return 0; } } start_addr+=count; } while ( count > 0 && pc < bfd_get_start_address( abfd ) + section->size && pc <= sym_addr+length); if(need_to_push_changes && can_change) { /* some instructions were modified. We need to push the modifications */ pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "\tWriting the modified instructions.\n"); trace_write(child, sym_addr, buffer, length); } return 1; } #endif /* HAVE_LIBOPCODES */ #endif /* __x86_64__ */ eztrace-1.1-7/src/pptrace/arch/x86_64/PaxHeaders.7332/opcode.c0000644000000000000000000000013213143052124020337 xustar0030 mtime=1502368852.951009099 30 atime=1508138922.581084346 30 ctime=1508162365.465709333 eztrace-1.1-7/src/pptrace/arch/x86_64/opcode.c0000644000175000017500000000315413143052124021531 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * opcode.c * * Determining the size to override (by computing the size of instructions) using the opcode library * * Created on: 2 August 2011 * Author: dmartin */ #include #include #include #include #include int dummy_print(void *stream, const char *fmt); /* * This function determines the size of instructions that will be replaced. * Output is the size of the replacement */ ssize_t opcode_get_overridden_size(bfd *abfd, pid_t child, word_uint symbol, size_t trampoline_size) { size_t max_size = trampoline_size * 2; bfd_byte *code; struct disassemble_info i; if (max_size < 10) max_size = 10; code = (bfd_byte*) malloc(max_size); trace_read(child, symbol, code, max_size); INIT_DISASSEMBLE_INFO(i, NULL, dummy_print); i.arch = bfd_get_arch(abfd); i.mach = bfd_get_mach(abfd); #if HAVE_BINUTILS_2_28_OR_OLDER disassembler_ftype disassemble = disassembler(abfd); #else disassembler_ftype disassemble = disassembler(i.arch, bfd_big_endian(abfd), i.mach, abfd); #endif i.buffer = code; i.buffer_vma = (unsigned long) i.buffer; i.buffer_length = max_size; ssize_t j; for (j = 0; j < trampoline_size;) { j += disassemble(i.buffer_vma + j, &i); } free(code); return j; } ssize_t get_overridden_size(void* bin, pid_t child, word_uint symbol, size_t trampoline_size) { return opcode_get_overridden_size((bfd*) bin, child, symbol, trampoline_size); } eztrace-1.1-7/src/pptrace/arch/x86_64/PaxHeaders.7332/trace.c0000644000000000000000000000013113020610327020162 xustar0029 mtime=1480790231.95021497 30 atime=1508138884.232126612 30 ctime=1508162365.465709333 eztrace-1.1-7/src/pptrace/arch/x86_64/trace.c0000644000175000017500000000520413020610327021353 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * trace.c * * Determining the size to override (by computing the size of instructions) using single step tracing * * Created on: 2 July 2011 * Author: Damien Martin-Guillerez */ #include #include #include #include #include /* * This function returns the jump size */ ssize_t trace_get_jump_size(pid_t child, word_uint instruction_addr) { uint8_t buf[10]; size_t offset = 0; uint8_t prefix = 0; trace_read(child, instruction_addr, buf, 10); ssize_t r = read_jump(buf, 10, offset, prefix); while (!r && offset < 9) { prefix = buf[offset]; offset++; r = read_jump(buf, 10, offset, prefix); } if (r > 0) { return r + offset; // it's a jump of r + offset bytes } return 0; } /* * This function determines the size of instructions that will be replaced. * To do so, place rip on the symbol and single step until the size of instruction exceed trampoline_size * Output is the size of the replacement */ ssize_t get_overridden_size(void *bin __attribute__((unused)), pid_t child, word_uint symbol, size_t trampoline_size) { REG_STRUCT regs; trace_get_regs(child, ®s); // Backup registers set_ip(child, symbol); // Jump to symbol word_uint crip = symbol; int n_signal=0; while (crip < symbol + trampoline_size) { int status = trace_singlestep(child); // single stepping until we go further than symbol + trampoline_size if (WIFSTOPPED(status)){ if(n_signal++ > 100) { printf("Child %d received %d signals (the last one was: %s). Aborting\n", child, n_signal, strsignal(WSTOPSIG(status))); abort(); return 0; } }else { n_signal = 0; } word_uint newrip = get_ip(child); // Unfortunately, this works only if no jump / call if (newrip < crip || newrip > crip + 2) { // There might be a jump // Tells whether it is a jump or not ssize_t off = trace_get_jump_size(child, crip); if (off) { newrip = crip + off; set_ip(child, newrip); } else if (newrip < crip) { trace_set_regs(child, ®s); // Restore registers return 0; // We have failed! } } else if (newrip == crip) { if (WIFSTOPPED(status)) { newrip = crip; // Stopped, continue } else { pptrace_fubar("got signal %d (term) %d (status)", WTERMSIG(status), WSTOPSIG(status)); } } crip = newrip; } trace_set_regs(child, ®s); // Restore registers return (size_t)(crip - symbol); } eztrace-1.1-7/src/pptrace/PaxHeaders.7332/isize.c0000644000000000000000000000012713020610327016341 xustar0029 mtime=1480790231.95021497 30 atime=1508138884.116123715 28 ctime=1508162367.8299157 eztrace-1.1-7/src/pptrace/isize.c0000644000175000017500000000166013020610327017527 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * isize.c * * Wrapper to include the good library for determining the instruction size * * Created on: 2 juil. 2011 * Author: Damien Martin-Guillerez */ #include #include #ifdef __x86_64__ // x86_64 #ifndef __PPTRACE_ISIZE_TYPE #include "arch/x86_64/trace.c" #else #if __PPTRACE_ISIZE_TYPE == PPTRACE_ISIZE_TYPE_OPCODE #include "arch/x86_64/opcode.c" #else // if ! (__PPTRACE_ISIZE_TYPE == PPTRACE_ISIZE_TYPE_OPCODE) #include "arch/x86_64/trace.c" #endif // ! (__PPTRACE_ISIZE_TYPE == PPTRACE_ISIZE_TYPE_OPCODE) #endif // !defined(__PPTRACE_ISIZE_TYPE) #elif __arm__ // ARMv7 #ifdef HAVE_LIBOPCODE #include "arch/armv7/opcode.c" #else #warning Libopcode not available. pptrace will not work! #endif #endif eztrace-1.1-7/src/pptrace/PaxHeaders.7332/memory.c0000644000000000000000000000013013033226735016532 xustar0030 mtime=1483550173.654864671 30 atime=1508138884.256127211 28 ctime=1508162367.8299157 eztrace-1.1-7/src/pptrace/memory.c0000644000175000017500000000301413033226735017721 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * memory.c * * Created on: 2 juil. 2011 * Author: Damien Martin-Guillerez */ #include #if ENABLE_BINARY_INSTRUMENTATION #include #include #include // Memory allocation. Don't handle memory free (we don't care actually) #define MY_PAGE_SIZE (1024*1024) // We use 1Mbytes pages for allocation word_uint currentPointer = 0; // The current pointer toward free memory word_uint currentEndPointer = 0; // The pointer to the end of the current page word_uint allocate_buffer(pid_t child, size_t size) { // This algorithm is dummy, because we don't need to be memory efficient for the kind of target we plan if (currentPointer - currentEndPointer < size) { // We need a new page word_uint pagesize = MY_PAGE_SIZE; while (pagesize < size) pagesize += MY_PAGE_SIZE; currentPointer = trace_mmap(child, 0, pagesize, PROT_READ | PROT_EXEC); if (currentPointer) { currentEndPointer = currentPointer + pagesize; } else { currentEndPointer = 0; return 0; } } // Do the dummy allocation word_uint r = currentPointer; currentPointer += size; return r; } void correct_buffer_allocation(pid_t child __attribute__((unused)), size_t required_size, size_t actual_size) { currentPointer -= (required_size - actual_size); } #endif eztrace-1.1-7/src/pptrace/PaxHeaders.7332/binary.c0000644000000000000000000000013113020610327016475 xustar0029 mtime=1480790231.95021497 30 atime=1508138884.068122515 30 ctime=1508162367.825915351 eztrace-1.1-7/src/pptrace/binary.c0000644000175000017500000000277113020610327017674 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * binary.c * * Wrapper to include the good library for parsing of binary files * * Created on: 2 juil. 2011 * Author: Damien Martin-Guillerez */ #include #include #include #include #include #if HAVE_LIBBFD #include "arch/bfd.c" char** read_zstring_array(void *bin, char *symbol) { char **result; char *buf; char buf2[4096]; zzt_symbol *sym = get_symbol(bin, symbol); int bytes = get_binary_bits(bin) >> 3; if (sym == NULL) return NULL; size_t size = sym->symbol_size; if (size <= 0) size = 1024; buf = malloc(size); if (buf == NULL) return NULL; uint32_t* val32 = (uint32_t*) buf; word_uint* val64 = (word_uint*) buf; size = read_symbol(bin, sym, buf, size) / bytes; result = (char**) malloc(size * sizeof(char*)); size_t i = 0; for (i = 0; i < size; i++) { zzt_word w = (bytes == 4) ? val32[i] : val64[i]; if (w == 0) { result[i] = 0; free(buf); return result; } read_zstring(bin, sym, w, buf2, 1024); // printf("\t[%d] %p %s\n", i, (void*)w, buf2); result[i] = strdup(buf2); } free(buf); return result; } void free_zstring_array(char **strarray) { int i = 0; while (strarray[i] != NULL) { free(strarray[i]); i++; } free(strarray); } #endif eztrace-1.1-7/src/pptrace/PaxHeaders.7332/hijack.c0000644000000000000000000000012713020610327016447 xustar0029 mtime=1480790231.95021497 30 atime=1508138884.080122816 28 ctime=1508162367.8299157 eztrace-1.1-7/src/pptrace/hijack.c0000644000175000017500000002701013020610327017632 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include #include #include #include #include #include #include #if ENABLE_BINARY_INSTRUMENTATION #ifdef __x86_64__ #ifdef HAVE_LIBOPCODE #include "arch/x86_64/hijack.c" #endif /* HAVE_LIBOPCODES */ #endif #ifndef HAVE_CHECK_INSTRUCTIONS /* check_instructions is not defined. * define it as a dummy function that always allow the insertion of a trampoline */ int check_instructions(void* bin, pid_t child, word_uint sym_addr, word_uint reloc_addr, size_t length) { return 1; } #endif #define HIJACK_CODE_FAILED(test) if(test) { \ goto out_failed; \ } static ssize_t __install_jump(pid_t child, ssize_t max_size, word_uint src_addr, word_uint dest_addr) { // create the trampoline back to the original address uint8_t* jump = (uint8_t*) malloc(max_size); ssize_t jump_size = generate_trampoline(jump, max_size, src_addr, dest_addr); HIJACK_CODE_FAILED(jump_size < 0); // install the jump pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "(hijack)\tinserting a jump from (0x%lx) to (0x%lx)\n", (unsigned long) (src_addr), (unsigned long) (dest_addr)); trace_write(child, src_addr, jump, jump_size); out: assert(jump_size<=max_size); free(jump); return jump_size; out_failed: jump_size = -1; goto out; } /* copies the overwritten opcodes, creates the back jump from * reloc_addr+overwrite_size to sym_addr+overwrite_size and installs it * return the size of the created back jump (or -1 in case of an error) */ static ssize_t __install_back_jump(pid_t child, word_uint reloc_addr, word_uint sym_addr, ssize_t overwrite_size) { // copy the overwritten code to reloc_addr pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "(hijack)\tcopying overwritten code (%d bytes) from original code (0x%lx) to relocated position (0x%lx)\n", overwrite_size, (unsigned long) sym_addr, (unsigned long) (reloc_addr)); trace_copy(child, sym_addr, reloc_addr, overwrite_size); ssize_t back_jump_size = __install_jump(child, MAX_TRAMPOLINE_SIZE, reloc_addr+overwrite_size, sym_addr+overwrite_size); HIJACK_CODE_FAILED(back_jump_size < 0); out: return back_jump_size; out_failed: back_jump_size=-1; goto out; } /* creates the first jump from sym_addr to repl_addr * * return the size that will be overwritten when the jump is installed * or -1 in case of an error. */ static ssize_t __prepare_first_jump(void *bin, pid_t child, word_uint sym_addr, word_uint sym_size, word_uint repl_addr, uint8_t **first_jump){ *first_jump = (uint8_t*) malloc(sym_size); // Build the first jump from sym_addr to repl_addr ssize_t first_jump_size = generate_trampoline(*first_jump, sym_size, sym_addr, repl_addr); HIJACK_CODE_FAILED(first_jump_size < 0); // get the size to override ssize_t over = get_overridden_size(bin, child, sym_addr, first_jump_size); HIJACK_CODE_FAILED(over < first_jump_size || over > sym_size); out: return over; out_failed: /* no need to free first_jump since it will be freed by the calling function */ over=-1; goto out; } /* install the first jump from sym_addr to repl_addr and free *first_jump */ static void __finalize_first_jump(pid_t child, word_uint sym_addr, word_uint repl_addr, uint8_t* first_jump, ssize_t overwrite_size) { // install first_jump pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "(hijack)\tinserting first jump from 0x%lx to 0x%lx\n", (unsigned long) sym_addr, (unsigned long) repl_addr); trace_write(child, sym_addr, first_jump, overwrite_size); // Insert the long jump free(first_jump); } /* set the callback address to reloc_addr */ static void __assign_callback_address(pid_t child, word_uint reloc_addr, word_uint orig_addr) { pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "(hijack)\tassigning callback (located at addr 0x%lx) to 0x%lx\n", (unsigned long) orig_addr, (unsigned long) reloc_addr); trace_write(child, orig_addr, (uint8_t*) (&reloc_addr), sizeof(reloc_addr)); } ssize_t hijack_code_small_jump(void* bin, pid_t child, word_uint sym_addr, word_uint sym_size, word_uint reloc_addr, word_uint orig_addr, word_uint repl_addr) { // If the size is not available, then we suppose we have enough room if (sym_size <= 0) { sym_size = MAX_TRAMPOLINE_SIZE; } uint8_t* small_jump = NULL; /* sym_addr: address of the original function (in which we install a call to eztrace) * reloc_addr: address of the block of data that jumps to eztrace * repl_addr: address of the eztrace version of the function * orig_addr: address of the callback in eztrace that permits to call the user-defined function */ /* the goal here is to change the child process so that when the application calls the sym_addr function, * the following behavior occurs: * call sym_addr: (small) jump to reloc_addr (<-- small_jump) * reloc_addr: (long) jump to repl_addr (<-- long_jump) * repl_addr: perform eztrace stuff (recording events, etc.) * repl_addr: call *orig_addr (=reloc_addr+over) * orig_addr: replay the overwritten opcodes * orig_addr: (long) jump to sym_addr+x (<-- back_jump) * sym_addr: process stuff (it is the application function) * sym_addr: ret -> go back to repl_addr * repl_addr: perform eztrace stuff (recording events, etc.) * repl_addr: ret -> go back to the application */ /* We need to : - install a small (ie. relative) jump from sym_addr to reloc_addr - install long (ie. absolute) jump from reloc_addr to repl_addr - copy the overwritten opcodes from sym_addr to reloc_addr+sizeof(long_jump) - install a jump from reloc_addr+sizeof(long_jump) to sym_addr - set the callback value to reloc_addr+sizeof(long_jump) */ // Prepare the first (small) jump from sym_addr to reloc_addr ssize_t over = __prepare_first_jump(bin, child,sym_addr, sym_size, reloc_addr, &small_jump); HIJACK_CODE_FAILED((!check_instructions(bin, child, sym_addr, reloc_addr, over))); // Install the (long) jump from reloc_addr to repl_addr ssize_t long_jump_size = __install_jump(child, MAX_TRAMPOLINE_SIZE,reloc_addr, repl_addr); HIJACK_CODE_FAILED(long_jump_size < 0); // copy the overwritten opcodes and installs the jump back to sym_addr word_uint back_jump_addr = reloc_addr + long_jump_size; ssize_t back_jump_size = __install_back_jump(child, back_jump_addr, sym_addr, over); HIJACK_CODE_FAILED(back_jump_size < 0); // Insert the trampoline into the dest process __finalize_first_jump(child, sym_addr, reloc_addr, small_jump, over); // set the callback to back_jump_addr __assign_callback_address(child, back_jump_addr, orig_addr); // Return the size of the inserted code ssize_t retval = long_jump_size + back_jump_size + over; out: return retval; out_failed: free(small_jump); retval=-1; goto out; } ssize_t hijack_code_long_jump(void* bin, pid_t child, word_uint sym_addr, word_uint sym_size, word_uint reloc_addr, word_uint orig_addr, word_uint repl_addr) { // If the size is not available, then we assume we have enough room if (sym_size <= 0) { sym_size = MAX_TRAMPOLINE_SIZE; } /* sym_addr: address of the original function (in which we install a call to eztrace) * reloc_addr: address of the block of data that jumps back to the application * repl_addr: address of the eztrace version of the function * orig_addr: address of the callback in eztrace that permits to call the user-defined function */ /* the goal here is to change the child process so that when the application calls the sym_addr function, * the following behavior occurs: * call sym_addr: jump to repl_addr (<-- first_jump) * repl_addr: perform eztrace stuff (recording events, etc.) * repl_addr: call *orig_addr (=reloc_addr) * reloc_addr: replay the overwritten opcodes * reloc_addr: (long) jump to sym_addr+x (<-- back_jump) * sym_addr: process stuff (it is the application function) * sym_addr: ret -> go back to repl_addr * repl_addr: perform eztrace stuff (recording events, etc.) * repl_addr: ret -> go back to the application */ /* We need to : - install a jump from sym_addr to repl_addr - copy the overwritten opcodes from sym_addr to reloc_addr - install a jump from reloc_addr to sym_addr - set the callback value to reloc_addr */ // Prepare the first jump from sym_addr to repl_addr uint8_t *first_jump = NULL; ssize_t overwrite_size = __prepare_first_jump(bin, child, sym_addr, sym_size, repl_addr, &first_jump); HIJACK_CODE_FAILED(overwrite_size < 0); // Copy the opcodes that are going to be overwritten by first_jump // and install the jump back to sym_addr /* BUG: we should check that the relocated opcodes to not depend on their address * For instance, mov (%rip+x), %eax fails */ ssize_t back_jump_size = __install_back_jump(child, reloc_addr, sym_addr, overwrite_size); HIJACK_CODE_FAILED(back_jump_size < 0); // Now we can install the first jump (and thus overwrite the first opcode) __finalize_first_jump(child, sym_addr, repl_addr, first_jump, overwrite_size); // set the callback to reloc_addr #ifdef __arm__ /* we need to switch to Thumb momde */ reloc_addr |= 0x01; #endif __assign_callback_address(child, reloc_addr, orig_addr); // Return the size of the inserted code ssize_t retval = back_jump_size + overwrite_size; out: return retval; out_failed: free(first_jump); retval = 1; goto out; } ssize_t hijack_code(void* bin, pid_t child, word_uint sym_addr, word_uint sym_size, word_uint reloc_addr, word_uint orig_addr, word_uint repl_addr) { #if __arm__ return hijack_code_long_jump(bin, child, sym_addr, sym_size, reloc_addr, orig_addr, repl_addr); #else return hijack_code_small_jump(bin, child, sym_addr, sym_size, reloc_addr, orig_addr, repl_addr); #endif } ssize_t hijack(void* bin, pid_t child, zzt_symbol *toHijack, zzt_symbol *orig, zzt_symbol *repl) { // Compute the addresses from the symbols word_uint addr = (word_uint) (toHijack->symbol_offset + toHijack->section_addr); word_uint sym_size = (word_uint) (toHijack->symbol_size); word_uint orig_addr = (word_uint) (orig->symbol_offset + orig->section_addr); word_uint repl_addr = (word_uint) (repl->symbol_offset + repl->section_addr); pptrace_debug( PPTRACE_DEBUG_LEVEL_DEBUG, "Hijacking symbol %s (0x%lx) with %s (0x%lx) using %s (0x%lx) as function pointer...\n", toHijack->symbol_name, (unsigned long) addr, repl->symbol_name, (unsigned long) repl_addr, orig->symbol_name, (unsigned long) orig_addr); pptrace_debug(PPTRACE_DEBUG_LEVEL_DEBUG, "Allocating buffer for relocating bytes... "); word_uint reloc_addr = allocate_buffer(child, MAX_TRAMPOLINE_SIZE); if (reloc_addr != 0) { pptrace_debug(PPTRACE_DEBUG_LEVEL_DEBUG, "ok (0x%lx)\n", (unsigned long) reloc_addr); ssize_t hijack_size = hijack_code(bin, child, addr, sym_size, reloc_addr, orig_addr, repl_addr); if (hijack_size > 0 && hijack_size != MAX_TRAMPOLINE_SIZE) { correct_buffer_allocation(child, MAX_TRAMPOLINE_SIZE, hijack_size); } pptrace_debug(PPTRACE_DEBUG_LEVEL_DEBUG, "Symbol hijacked...\n"); return hijack_size; } pptrace_debug(PPTRACE_DEBUG_LEVEL_DEBUG, "failed!\n"); return -1; } #endif /* ENABLE_BINARY_INSTRUMENTATION */ eztrace-1.1-7/src/pptrace/PaxHeaders.7332/os0000644000000000000000000000013213171135475015427 xustar0030 mtime=1508162365.445707588 30 atime=1508162367.741908015 30 ctime=1508162365.445707588 eztrace-1.1-7/src/pptrace/os/0000755000175000017500000000000013171135475016673 5ustar00trahaytrahay00000000000000eztrace-1.1-7/src/pptrace/os/PaxHeaders.7332/linux0000644000000000000000000000013213171135475016566 xustar0030 mtime=1508162365.465709333 30 atime=1508162367.741908015 30 ctime=1508162365.465709333 eztrace-1.1-7/src/pptrace/os/linux/0000755000175000017500000000000013171135475020032 5ustar00trahaytrahay00000000000000eztrace-1.1-7/src/pptrace/os/linux/PaxHeaders.7332/linux.h0000644000000000000000000000013113020610327020135 xustar0029 mtime=1480790231.95021497 30 atime=1508138884.128124014 30 ctime=1508162365.461708984 eztrace-1.1-7/src/pptrace/os/linux/linux.h0000644000175000017500000002574213020610327021337 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include #include #include #include "types.h" // Copy/pasted from asm/unistd_32.h #define __NR32_restart_syscall 0 #define __NR32_exit 1 #define __NR32_fork 2 #define __NR32_read 3 #define __NR32_write 4 #define __NR32_open 5 #define __NR32_close 6 #define __NR32_waitpid 7 #define __NR32_creat 8 #define __NR32_link 9 #define __NR32_unlink 10 #define __NR32_execve 11 #define __NR32_chdir 12 #define __NR32_time 13 #define __NR32_mknod 14 #define __NR32_chmod 15 #define __NR32_lchown 16 #define __NR32_break 17 #define __NR32_oldstat 18 #define __NR32_lseek 19 #define __NR32_getpid 20 #define __NR32_mount 21 #define __NR32_umount 22 #define __NR32_setuid 23 #define __NR32_getuid 24 #define __NR32_stime 25 #define __NR32_ptrace 26 #define __NR32_alarm 27 #define __NR32_oldfstat 28 #define __NR32_pause 29 #define __NR32_utime 30 #define __NR32_stty 31 #define __NR32_gtty 32 #define __NR32_access 33 #define __NR32_nice 34 #define __NR32_ftime 35 #define __NR32_sync 36 #define __NR32_kill 37 #define __NR32_rename 38 #define __NR32_mkdir 39 #define __NR32_rmdir 40 #define __NR32_dup 41 #define __NR32_pipe 42 #define __NR32_times 43 #define __NR32_prof 44 #define __NR32_brk 45 #define __NR32_setgid 46 #define __NR32_getgid 47 #define __NR32_signal 48 #define __NR32_geteuid 49 #define __NR32_getegid 50 #define __NR32_acct 51 #define __NR32_umount2 52 #define __NR32_lock 53 #define __NR32_ioctl 54 #define __NR32_fcntl 55 #define __NR32_mpx 56 #define __NR32_setpgid 57 #define __NR32_ulimit 58 #define __NR32_oldolduname 59 #define __NR32_umask 60 #define __NR32_chroot 61 #define __NR32_ustat 62 #define __NR32_dup2 63 #define __NR32_getppid 64 #define __NR32_getpgrp 65 #define __NR32_setsid 66 #define __NR32_sigaction 67 #define __NR32_sgetmask 68 #define __NR32_ssetmask 69 #define __NR32_setreuid 70 #define __NR32_setregid 71 #define __NR32_sigsuspend 72 #define __NR32_sigpending 73 #define __NR32_sethostname 74 #define __NR32_setrlimit 75 #define __NR32_getrlimit 76 /* Back compatible 2Gig limited rlimit */ #define __NR32_getrusage 77 #define __NR32_gettimeofday 78 #define __NR32_settimeofday 79 #define __NR32_getgroups 80 #define __NR32_setgroups 81 #define __NR32_select 82 #define __NR32_symlink 83 #define __NR32_oldlstat 84 #define __NR32_readlink 85 #define __NR32_uselib 86 #define __NR32_swapon 87 #define __NR32_reboot 88 #define __NR32_readdir 89 #define __NR32_mmap 90 #define __NR32_munmap 91 #define __NR32_truncate 92 #define __NR32_ftruncate 93 #define __NR32_fchmod 94 #define __NR32_fchown 95 #define __NR32_getpriority 96 #define __NR32_setpriority 97 #define __NR32_profil 98 #define __NR32_statfs 99 #define __NR32_fstatfs 100 #define __NR32_ioperm 101 #define __NR32_socketcall 102 #define __NR32_syslog 103 #define __NR32_setitimer 104 #define __NR32_getitimer 105 #define __NR32_stat 106 #define __NR32_lstat 107 #define __NR32_fstat 108 #define __NR32_olduname 109 #define __NR32_iopl 110 #define __NR32_vhangup 111 #define __NR32_idle 112 #define __NR32_vm86old 113 #define __NR32_wait4 114 #define __NR32_swapoff 115 #define __NR32_sysinfo 116 #define __NR32_ipc 117 #define __NR32_fsync 118 #define __NR32_sigreturn 119 #define __NR32_clone 120 #define __NR32_setdomainname 121 #define __NR32_uname 122 #define __NR32_modify_ldt 123 #define __NR32_adjtimex 124 #define __NR32_mprotect 125 #define __NR32_sigprocmask 126 #define __NR32_create_module 127 #define __NR32_init_module 128 #define __NR32_delete_module 129 #define __NR32_get_kernel_syms 130 #define __NR32_quotactl 131 #define __NR32_getpgid 132 #define __NR32_fchdir 133 #define __NR32_bdflush 134 #define __NR32_sysfs 135 #define __NR32_personality 136 #define __NR32_afs_syscall 137 /* Syscall for Andrew File System */ #define __NR32_setfsuid 138 #define __NR32_setfsgid 139 #define __NR32__llseek 140 #define __NR32_getdents 141 #define __NR32__newselect 142 #define __NR32_flock 143 #define __NR32_msync 144 #define __NR32_readv 145 #define __NR32_writev 146 #define __NR32_getsid 147 #define __NR32_fdatasync 148 #define __NR32__sysctl 149 #define __NR32_mlock 150 #define __NR32_munlock 151 #define __NR32_mlockall 152 #define __NR32_munlockall 153 #define __NR32_sched_setparam 154 #define __NR32_sched_getparam 155 #define __NR32_sched_setscheduler 156 #define __NR32_sched_getscheduler 157 #define __NR32_sched_yield 158 #define __NR32_sched_get_priority_max 159 #define __NR32_sched_get_priority_min 160 #define __NR32_sched_rr_get_interval 161 #define __NR32_nanosleep 162 #define __NR32_mremap 163 #define __NR32_setresuid 164 #define __NR32_getresuid 165 #define __NR32_vm86 166 #define __NR32_query_module 167 #define __NR32_poll 168 #define __NR32_nfsservctl 169 #define __NR32_setresgid 170 #define __NR32_getresgid 171 #define __NR32_prctl 172 #define __NR32_rt_sigreturn 173 #define __NR32_rt_sigaction 174 #define __NR32_rt_sigprocmask 175 #define __NR32_rt_sigpending 176 #define __NR32_rt_sigtimedwait 177 #define __NR32_rt_sigqueueinfo 178 #define __NR32_rt_sigsuspend 179 #define __NR32_pread64 180 #define __NR32_pwrite64 181 #define __NR32_chown 182 #define __NR32_getcwd 183 #define __NR32_capget 184 #define __NR32_capset 185 #define __NR32_sigaltstack 186 #define __NR32_sendfile 187 #define __NR32_getpmsg 188 /* some people actually want streams */ #define __NR32_putpmsg 189 /* some people actually want streams */ #define __NR32_vfork 190 #define __NR32_ugetrlimit 191 /* SuS compliant getrlimit */ #define __NR32_mmap2 192 #define __NR32_truncate64 193 #define __NR32_ftruncate64 194 #define __NR32_stat64 195 #define __NR32_lstat64 196 #define __NR32_fstat64 197 #define __NR32_lchown32 198 #define __NR32_getuid32 199 #define __NR32_getgid32 200 #define __NR32_geteuid32 201 #define __NR32_getegid32 202 #define __NR32_setreuid32 203 #define __NR32_setregid32 204 #define __NR32_getgroups32 205 #define __NR32_setgroups32 206 #define __NR32_fchown32 207 #define __NR32_setresuid32 208 #define __NR32_getresuid32 209 #define __NR32_setresgid32 210 #define __NR32_getresgid32 211 #define __NR32_chown32 212 #define __NR32_setuid32 213 #define __NR32_setgid32 214 #define __NR32_setfsuid32 215 #define __NR32_setfsgid32 216 #define __NR32_pivot_root 217 #define __NR32_mincore 218 #define __NR32_madvise 219 #define __NR32_madvise1 219 /* delete when C lib stub is removed */ #define __NR32_getdents64 220 #define __NR32_fcntl64 221 /* 223 is unused */ #define __NR32_gettid 224 #define __NR32_readahead 225 #define __NR32_setxattr 226 #define __NR32_lsetxattr 227 #define __NR32_fsetxattr 228 #define __NR32_getxattr 229 #define __NR32_lgetxattr 230 #define __NR32_fgetxattr 231 #define __NR32_listxattr 232 #define __NR32_llistxattr 233 #define __NR32_flistxattr 234 #define __NR32_removexattr 235 #define __NR32_lremovexattr 236 #define __NR32_fremovexattr 237 #define __NR32_tkill 238 #define __NR32_sendfile64 239 #define __NR32_futex 240 #define __NR32_sched_setaffinity 241 #define __NR32_sched_getaffinity 242 #define __NR32_set_thread_area 243 #define __NR32_get_thread_area 244 #define __NR32_io_setup 245 #define __NR32_io_destroy 246 #define __NR32_io_getevents 247 #define __NR32_io_submit 248 #define __NR32_io_cancel 249 #define __NR32_fadvise64 250 /* 251 is available for reuse (was briefly sys_set_zone_reclaim) */ #define __NR32_exit_group 252 #define __NR32_lookup_dcookie 253 #define __NR32_epoll_create 254 #define __NR32_epoll_ctl 255 #define __NR32_epoll_wait 256 #define __NR32_remap_file_pages 257 #define __NR32_set_tid_address 258 #define __NR32_timer_create 259 #define __NR32_timer_settime (__NR32_timer_create+1) #define __NR32_timer_gettime (__NR32_timer_create+2) #define __NR32_timer_getoverrun (__NR32_timer_create+3) #define __NR32_timer_delete (__NR32_timer_create+4) #define __NR32_clock_settime (__NR32_timer_create+5) #define __NR32_clock_gettime (__NR32_timer_create+6) #define __NR32_clock_getres (__NR32_timer_create+7) #define __NR32_clock_nanosleep (__NR32_timer_create+8) #define __NR32_statfs64 268 #define __NR32_fstatfs64 269 #define __NR32_tgkill 270 #define __NR32_utimes 271 #define __NR32_fadvise64_64 272 #define __NR32_vserver 273 #define __NR32_mbind 274 #define __NR32_get_mempolicy 275 #define __NR32_set_mempolicy 276 #define __NR32_mq_open 277 #define __NR32_mq_unlink (__NR32_mq_open+1) #define __NR32_mq_timedsend (__NR32_mq_open+2) #define __NR32_mq_timedreceive (__NR32_mq_open+3) #define __NR32_mq_notify (__NR32_mq_open+4) #define __NR32_mq_getsetattr (__NR32_mq_open+5) #define __NR32_kexec_load 283 #define __NR32_waitid 284 /* #define __NR32_sys_setaltroot 285 */ #define __NR32_add_key 286 #define __NR32_request_key 287 #define __NR32_keyctl 288 #define __NR32_ioprio_set 289 #define __NR32_ioprio_get 290 #define __NR32_inotify_init 291 #define __NR32_inotify_add_watch 292 #define __NR32_inotify_rm_watch 293 #define __NR32_migrate_pages 294 #define __NR32_openat 295 #define __NR32_mkdirat 296 #define __NR32_mknodat 297 #define __NR32_fchownat 298 #define __NR32_futimesat 299 #define __NR32_fstatat64 300 #define __NR32_unlinkat 301 #define __NR32_renameat 302 #define __NR32_linkat 303 #define __NR32_symlinkat 304 #define __NR32_readlinkat 305 #define __NR32_fchmodat 306 #define __NR32_faccessat 307 #define __NR32_pselect6 308 #define __NR32_ppoll 309 #define __NR32_unshare 310 #define __NR32_set_robust_list 311 #define __NR32_get_robust_list 312 #define __NR32_splice 313 #define __NR32_sync_file_range 314 #define __NR32_tee 315 #define __NR32_vmsplice 316 #define __NR32_move_pages 317 #define __NR32_getcpu 318 #define __NR32_epoll_pwait 319 #define __NR32_utimensat 320 #define __NR32_signalfd 321 #define __NR32_timerfd_create 322 #define __NR32_eventfd 323 #define __NR32_fallocate 324 #define __NR32_timerfd_settime 325 #define __NR32_timerfd_gettime 326 #define __NR32_signalfd4 327 #define __NR32_eventfd2 328 #define __NR32_epoll_create1 329 #define __NR32_dup3 330 #define __NR32_pipe2 331 #define __NR32_inotify_init1 332 #define __NR32_preadv 333 #define __NR32_pwritev 334 #define __NR32_rt_tgsigqueueinfo 335 #define __NR32_perf_event_open 336 int trace_get_bits(); #ifdef __x86_64__ // x86_64 #define TRACE_SYSCALL(name) (trace_get_bits() == 32 ? __NR32_##name : __NR_##name) #define REG_STRUCT struct user_regs_struct #define MMAP_SYSCALLS (trace_get_bits() == 32 ? ((__NR32_mmap << 16) | (__NR32_mmap2)) : __NR_mmap) #elif __arm__ // ARMv7 #define TRACE_SYSCALL(name) (__NR_##name) #define REG_STRUCT struct user_regs #define MMAP_SYSCALLS ((__NR32_mmap << 16) | (__NR32_mmap2)) #endif #define TRACE_SYSCALLS(name1, name2) ((TRACE_SYSCALL(name1) << 16) & TRACE_SYSCALL(name2)) eztrace-1.1-7/src/pptrace/os/linux/PaxHeaders.7332/linux.c0000644000000000000000000000013113020610327020130 xustar0029 mtime=1480790231.95021497 30 atime=1508138884.416131207 30 ctime=1508162365.465709333 eztrace-1.1-7/src/pptrace/os/linux/linux.c0000644000175000017500000006072313020610327021330 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * linux.c * * Implementation of the tracing interface using the linux _ptrace system call * * Created on: 2 juil. 2011 * Author: Damien Martin-Guillerez */ #include #include #include #include #include #ifdef __PPTRACE_USE_PRCTL #include #endif // __PPTRACE_USE_PRCTL #include #include #include #include #include #include #include #include #include "linux.h" extern int pptrace_debug_level; #define _ptrace(req, pid, addr, data) __ptrace(req, pid, addr, data, __FILE__, __LINE__) static inline long __ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data, const char *file, int line); #if ENABLE_BINARY_INSTRUMENTATION #define CONTSIGNAL NULL static int ptrace_bits = __WORDSIZE; // Size of a word in the traced process #ifndef MAP_32BIT #define MAP_32BIT 0 #endif #if __x86_64__ // x86_64 #if __WORDSIZE == 64 // Registers name #define REG_IP rip #define REG_AX rax #define REG_ORIG_AX orig_rax #define REG_BX rbx #define REG_CX rcx #define REG_DX rdx #define REG_SI rsi #define REG_DI rdi #define REG_BP rbp #define REG_R10 r10 #define REG_R8 r8 #define REG_R9 r9 #define REG_FORMAT "rip=0x%016lx rax=0x%016lx orig_rax=0x%016lx rbx=0x%016lx rcx=0x%016lx rdx=0x%016lx rsi=0x%016lx rdi=0x%016lx rbp=0x%016lx r10=0x%016lx r8=0x%016lx r9=0x%016lx" #define REG_FORMAT_VALUES(regs) regs.rip, regs.rax, regs.orig_rax, regs.rbx, regs.rcx, regs.rdx, regs.rsi, regs.rdi, regs.rbp, regs.r10, regs.r8, regs.r9 // Debugging #define FORMAT_WORD_HEX "%02lx %02lx %02lx %02lx %02lx %02lx %02lx %02lx" #define FORMAT_WORD_POINTER "0x%016lx" #define ARG_FORMAT_WORD(data) (data) & 0xff, (data >> 8) & 0xff, (data >> 16) & 0xff, (data >> 24) & 0xff, (data >> 32) & 0xff,\ (data >> 40) & 0xff, (data >> 48) & 0xff, (data >> 56) & 0xff #else // if __WORDSIZE != 64 // Register names #define REG_IP eip #define REG_AX eax #define REG_ORIG_AX orig_eax #define REG_BX ebx #define REG_CX ecx #define REG_DX edx #define REG_SI esi #define REG_DI edi #define REG_BP ebp #define REG_R10 edi // dummy, doesn't exist in 32bits #define REG_R8 esi // dummy, doesn't exist in 32bits #define REG_R9 ebp // dummy, doesn't exist in 32bits #define REG_FORMAT "eip=0x%08lx eax=0x%08lx orig_eax=0x%08lx ebx=0x%08lx ecx=0x%08lx edx=0x%08lx esi=0x%08lx edi=0x%08lx ebp=0x%08lx" #define REG_FORMAT_VALUES(regs) regs.eip, regs.eax, regs.orig_eax, regs.ebx, regs.ecx, regs.edx, regs.esi, regs.edi, regs.ebp // Debugging #define FORMAT_WORD_HEX "%02lx %02lx %02lx %02lx" #define FORMAT_WORD_POINTER "0x%08lx" #define ARG_FORMAT_WORD(data) (data) & 0xff, (data >> 8) & 0xff, (data >> 16) & 0xff, (data >> 24) & 0xff #endif // __WORDSIZE == 64 #elif __arm__ // ARMv7 // Register names #define REG_R0 ARM_r0 #define REG_R1 ARM_r1 #define REG_R2 ARM_r2 #define REG_R3 ARM_r3 #define REG_R4 ARM_r4 #define REG_R5 ARM_r5 #define REG_R6 ARM_r6 #define REG_R7 ARM_r7 #define REG_R8 ARM_r8 #define REG_SP ARM_sp #define REG_FP ARM_fp #define REG_PC ARM_pc #define REG_FORMAT "ARM_r0=0x%08lx ARM_r1=0x%08lx ARM_r2=0x%08lx ARM_r3=0x%08lx ARM_r4=0x%08lx ARM_r5=0x%08lx ARM_r6=0x%08lx ARM_r7=0x%08lx ARM_r8=0x%08lx ARM_r9=0x%08lx ARM_sp=0x%08lx ARM_fp=0x%08lx ARM_pc=0x%08lx" #define REG_FORMAT_VALUES(regs) regs.ARM_r0, regs.ARM_r1, regs.ARM_r2, regs.ARM_r3, regs.ARM_r4, regs.ARM_r5, regs.ARM_r6, regs.ARM_r7, regs.ARM_r8, regs.ARM_sp, regs.ARM_fp, regs.ARM_pc // Debugging #define FORMAT_WORD_HEX "%02lx %02lx %02lx %02lx" #define FORMAT_WORD_POINTER "0x%08lx" #define ARG_FORMAT_WORD(data) (data) & 0xff, (data >> 8) & 0xff, (data >> 16) & 0xff, (data >> 24) & 0xff #endif // __arm__ void trace_set_bits(int bits) { ptrace_bits = bits; } int trace_get_bits() { return ptrace_bits; } word_uint get_ip(pid_t child) { REG_STRUCT regs; _ptrace(PTRACE_GETREGS, child, NULL, ®s); #if __arm__ // ARMv7 return regs.REG_PC; #elif __x86_64__ // x86_64 return regs.REG_IP; #endif } void set_ip(pid_t child, word_uint rip) { REG_STRUCT regs; _ptrace(PTRACE_GETREGS, child, NULL, ®s); #if __arm__ // ARMv7 regs.REG_PC = rip; #elif __x86_64__ // x86_64 regs.REG_IP = rip; #endif _ptrace(PTRACE_SETREGS, child, NULL, ®s); } void trace_get_regs(pid_t child, REG_STRUCT* regs) { _ptrace(PTRACE_GETREGS, child, NULL, regs); } void trace_set_regs(pid_t child, REG_STRUCT* regs) { _ptrace(PTRACE_SETREGS, child, NULL, regs); } uint8_t trace_replace(pid_t child, word_uint addr, uint8_t newbyte) { int wordsize = ptrace_bits / 8; word_uint addrmask = ~((word_uint) (wordsize - 1)); int shift = (8 * (addr % wordsize)); word_uint data64 = 0; word_uint addr64 = addr & addrmask; /* todo: does it work on 32-bit systems (eg. ARM) ? */ word_uint mask = ~(((word_uint) 0xff) << shift); word_uint newvalue = newbyte; word_uint oldvalue = 0; newvalue <<= shift; data64 = _ptrace(PTRACE_PEEKTEXT, child, (void*)addr64, NULL); pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "Replacing [" FORMAT_WORD_HEX "] from address " FORMAT_WORD_POINTER " by ", ARG_FORMAT_WORD(data64), addr64); oldvalue = data64 >> shift; oldvalue &= 0xff; data64 = (data64 & mask) | newvalue; pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "[" FORMAT_WORD_HEX "]\n", ARG_FORMAT_WORD(data64)); _ptrace(PTRACE_POKETEXT, child, (void* )addr64, (void* )data64); return (uint8_t) oldvalue; } void trace_read(pid_t child, word_uint fromaddr, uint8_t* buffer, size_t length) { word_uint data; word_uint curAddr; unsigned word_size = sizeof(word_uint); for (curAddr = 0; curAddr < length; curAddr += word_size) { data = _ptrace(PTRACE_PEEKTEXT, child, (void*)(curAddr+fromaddr), NULL); memcpy(buffer + curAddr, (void*) (&data), curAddr + word_size < length ? word_size : (length - curAddr)); } } void trace_copy(pid_t child, word_uint fromaddr, word_uint toaddr, size_t length) { word_uint data; word_uint curAddr; int extraBytes = length % sizeof(word_uint); pptrace_debug(PPTRACE_DEBUG_LEVEL_DEBUG, "Copying buffer of %ld bytes from address " FORMAT_WORD_POINTER " to address " FORMAT_WORD_POINTER "\n", length, fromaddr, toaddr); for (curAddr = 0; curAddr < length - extraBytes; curAddr += sizeof(word_uint)) { data = _ptrace(PTRACE_PEEKTEXT, child, (void*)(curAddr+fromaddr), NULL); pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "Copying word [" FORMAT_WORD_HEX "] from address " FORMAT_WORD_POINTER " to address " FORMAT_WORD_POINTER "\n", ARG_FORMAT_WORD(data), curAddr+fromaddr, curAddr+toaddr); _ptrace(PTRACE_POKETEXT, child, (void* )(curAddr + toaddr), (void* )data); } if (extraBytes > 0) { extraBytes <<= 3; // in bits word_uint mask = ((1L << (extraBytes)) - 1); data = _ptrace(PTRACE_PEEKTEXT, child, (void*)(curAddr+fromaddr), NULL); data &= mask; pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "Copying %d extra bytes (word [" FORMAT_WORD_HEX "] from address " FORMAT_WORD_POINTER " to address " FORMAT_WORD_POINTER ")\n", extraBytes >> 3, ARG_FORMAT_WORD(data), curAddr+fromaddr, curAddr+toaddr); word_uint destData = _ptrace(PTRACE_PEEKTEXT, child, (void*)(curAddr+toaddr), NULL); pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "Replacing [" FORMAT_WORD_HEX "] by ", ARG_FORMAT_WORD(destData)); destData &= ~(mask); destData |= data; pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "[" FORMAT_WORD_HEX "]\n", ARG_FORMAT_WORD(destData)); _ptrace(PTRACE_POKETEXT, child, (void* )(curAddr + toaddr), (void* )destData); } } int trace_singlestep(pid_t child) { int status = 0; _ptrace(PTRACE_SINGLESTEP, child, NULL, NULL); waitpid(child, &status, 0); return status; } int trace_syscall(pid_t child) { int status = 0; _ptrace(PTRACE_SYSCALL, child, NULL, NULL); waitpid(child, &status, 0); return status; } int trace_continue(pid_t child) { int status = 0; _ptrace(PTRACE_CONT, child, NULL, NULL); waitpid(child, &status, 0); return status; } void trace_write(pid_t child, word_uint addr, uint8_t* buffer, size_t length) { word_uint data; word_uint curAddr; int extraBytes = length % sizeof(word_uint); pptrace_debug(PPTRACE_DEBUG_LEVEL_DEBUG, "Inserting buffer of %ld bytes at address " FORMAT_WORD_POINTER "\n", length, addr); for (curAddr = 0; curAddr < length - extraBytes; curAddr += sizeof(word_uint)) { memcpy((void*) (&data), (void*) (buffer + curAddr), sizeof(word_uint)); pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "Inserting word [" FORMAT_WORD_HEX "] at address " FORMAT_WORD_POINTER "\n", ARG_FORMAT_WORD(data), curAddr+addr); _ptrace(PTRACE_POKETEXT, child, (void* )(curAddr + addr), (void* )data); } if (extraBytes > 0) { data = 0; memcpy((void*) (&data), (void*) (buffer + curAddr), extraBytes); extraBytes <<= 3; // This is not needed, stupid endianness // data >>= (64 - extraBytes); word_uint mask = ((1L << (extraBytes)) - 1); pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "Inserting %d extra bytes (word [" FORMAT_WORD_HEX "] at address " FORMAT_WORD_POINTER ")\n", extraBytes >> 3, ARG_FORMAT_WORD(data), curAddr+addr); data &= mask; word_uint destData = _ptrace(PTRACE_PEEKTEXT, child, (void*)(curAddr+addr), NULL); pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "Replacing [" FORMAT_WORD_HEX "] by ", ARG_FORMAT_WORD(destData)); destData &= ~(mask); destData |= data; pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "[" FORMAT_WORD_HEX "]\n", ARG_FORMAT_WORD(destData)); _ptrace(PTRACE_POKETEXT, child, (void* )(curAddr + addr), (void* )destData); } } /* push a value on the stack. * return the value that is overwritten */ word_uint do_push(pid_t child __attribute__((unused)), word_uint *sp __attribute__((unused)), word_uint value __attribute__((unused))) { #if __arm__ // ARMv7 word_uint ret =-1; trace_read(child, *sp, (uint8_t *) &ret, sizeof(word_uint)); trace_write(child, *sp, (uint8_t *) &value, sizeof(word_uint)); *sp = *(uint8_t*)sp - sizeof(word_uint); return ret; #else /* TODO */ fprintf(stderr, "do_push not implemented on this architecture\n"); abort(); #endif } /* Undo a push: pop a value from the stack and replace it by the value that * has been overwritten by do_push * returns the popped value */ word_uint do_pop(pid_t child __attribute__((unused)), word_uint *sp __attribute__((unused)), word_uint prev_value __attribute__((unused))) { #if __arm__ // ARMv7 word_uint ret; *sp = *(uint8_t*)sp + sizeof(word_uint); trace_read(child, *sp, (uint8_t *) &ret, sizeof(word_uint)); trace_write(child, *sp, (uint8_t *) &prev_value, sizeof(word_uint)); return ret; #else /* TODO */ fprintf(stderr, "do_pop not implemented on this architecture\n"); abort(); #endif } /* return value of a function/syscall */ word_uint get_retval(REG_STRUCT regs) { #if __arm__ // ARMv7 return regs.REG_R0; #elif __x86_64__ // x86_64 return regs.REG_AX; #endif } /* print value stored in a register */ void print_reg_value(pid_t child, word_uint addr) { word_uint data = 0; data = _ptrace(PTRACE_PEEKTEXT, child, (void*)addr, NULL); printf("[" FORMAT_WORD_HEX "] from address " FORMAT_WORD_POINTER "\n", ARG_FORMAT_WORD(data), addr); } char *trace_get_zstring(pid_t child, word_uint addr) { unsigned int size = 1024; unsigned int index = 0; if (addr == 0) return NULL; uint8_t *buf = (uint8_t*) malloc(size); do { if (index >= size) { size += 1024; buf = (uint8_t*) realloc(buf, size); } trace_read(child, addr + index, buf + index, 1); index++; } while (buf[index - 1]); return (char*) buf; } int syscall_match_arg(pid_t child, int type, va_list* args, word_uint reg) { word_uint value; char *ptr; char **ptr2; char *buf; int r; switch (type) { case SYSCALL_ARGTYPE_INT: value = va_arg(*args, word_uint); pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, " %ld == %ld?", reg, value); return (value == reg) ? 1 : 0; case SYSCALL_ARGTYPE_ZSTRING: ptr = va_arg(*args, char*); if (ptr == NULL) { pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, " NULL == %p?", (void*) reg); return reg == 0 ? 1 : 0; } buf = trace_get_zstring(child, reg); pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, " \"%s\" (%p) == \"%s\"?", buf, (void*) reg, ptr); r = strcmp(ptr, buf); free(buf); return r == 0 ? 1 : 0; case SYSCALL_ARGTYPE_ZSTRING_RETURN: buf = trace_get_zstring(child, reg); ptr2 = va_arg(*args, char**); if (ptr2 == NULL) { *ptr2 = NULL; pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, " got NULL for getting zstring..."); } else { *ptr2 = trace_get_zstring(child, reg); pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, " returning string %s...", *ptr2); } return 1; case SYSCALL_ARGTYPE_IGNORE: default: pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, " Ignoring %lx!", reg); return 1; } } int syscall_match_args(pid_t child, int syscall, va_list* args, REG_STRUCT regs) { int type; #define _sma_TEST_ARG(child, type, args, arg) \ do { \ type = va_arg(*args, int); \ if(type == SYSCALL_ARGTYPE_END) \ return 1; \ if(syscall_match_arg(child, type, args, arg) == 0) \ return 0; \ } while(0) // 64bits args: rdi,rsi,rdx,r10,r8,r9 // 32bits args: rbx,rcx,rdx,rsi,rdi,rbp // armv7 args: r0, r1, r2, r3, sp+12, sp+16 if (ptrace_bits == 32) { #if __arm__ // ARMv7 uint32_t buf[2]; trace_read(child, regs.REG_SP+(3*sizeof(uint32_t)), (uint8_t*) buf, 2*4); pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "\tFound old_mmap call and reading memory from sp:\n"); pptrace_dump_buffer(PPTRACE_DEBUG_LEVEL_ALL, (uint8_t*) buf, 2*4); pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "\nArgument check: "); _sma_TEST_ARG(child, type, args, regs.REG_R0); _sma_TEST_ARG(child, type, args, regs.REG_R1); _sma_TEST_ARG(child, type, args, regs.REG_R2); _sma_TEST_ARG(child, type, args, regs.REG_R3); _sma_TEST_ARG(child, type, args, buf[0]); _sma_TEST_ARG(child, type, args, buf[1]); #elif __x86_64__ // x86_64 if (syscall == TRACE_SYSCALL(mmap)) { uint32_t buf[6]; trace_read(child, regs.REG_BX, (uint8_t*) buf, 24); pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "\tFound old_mmap call and reading memory from ebx:\n"); pptrace_dump_buffer(PPTRACE_DEBUG_LEVEL_ALL, (char*) buf, 24); pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "\nArgument check: "); _sma_TEST_ARG(child, type, args, buf[0]); _sma_TEST_ARG(child, type, args, buf[1]); _sma_TEST_ARG(child, type, args, buf[2]); _sma_TEST_ARG(child, type, args, buf[3]); _sma_TEST_ARG(child, type, args, buf[4]); _sma_TEST_ARG(child, type, args, buf[5]); } else { _sma_TEST_ARG(child, type, args, regs.REG_BX); _sma_TEST_ARG(child, type, args, regs.REG_CX); _sma_TEST_ARG(child, type, args, regs.REG_DX); _sma_TEST_ARG(child, type, args, regs.REG_SI); _sma_TEST_ARG(child, type, args, regs.REG_DI); _sma_TEST_ARG(child, type, args, regs.REG_BP); } } else { _sma_TEST_ARG(child, type, args, regs.REG_DI); _sma_TEST_ARG(child, type, args, regs.REG_SI); _sma_TEST_ARG(child, type, args, regs.REG_DX); _sma_TEST_ARG(child, type, args, regs.REG_R10); _sma_TEST_ARG(child, type, args, regs.REG_R8); _sma_TEST_ARG(child, type, args, regs.REG_R9); #endif } return 1; } #if __WORDSIZE == 32 #define SYSCALLS_FORMAT "%u,%u" #define SYSCALLS_PRINT_ARGS(syscalls) (syscalls & 0xffff), ((syscalls >> 16) & 0xffff) #define TEST_SYSCALL(syscalls, syscall) (((syscall != 0) || (syscall == syscalls)) && (((syscalls & 0xffff) == syscall) || (((syscalls >> 16) & 0xffff) == syscall))) #else #define SYSCALLS_FORMAT "%u,%u,%u,%u" #define SYSCALLS_PRINT_ARGS(syscalls) (syscalls & 0xffff), ((syscalls >> 16) & 0xffff), ((syscalls >> 32) & 0xffff), ((syscalls >> 48) & 0xffff) #define TEST_SYSCALL(syscalls, syscall) (((syscall != 0) || (syscall == syscalls)) && (((syscalls & 0xffff) == syscall) || (((syscalls >> 16) & 0xffff) == syscall) || (((syscalls >> 32) & 0xffff) == syscall) || (((syscalls >> 48) & 0xffff) == syscall))) #endif int trace_wait_syscall(pid_t child, word_uint* retval, unsigned long syscall, ...) { // Wait for syscall and return the return value of the first encountered int status; REG_STRUCT regs; unsigned int in_syscall = 0; int in_execve = 0; va_list args; pptrace_debug(PPTRACE_DEBUG_LEVEL_DEBUG, "Looking for syscalls "SYSCALLS_FORMAT"\n", SYSCALLS_PRINT_ARGS(syscall)); for (status = trace_syscall(child); !WIFEXITED(status) && !WIFSIGNALED(status); status = trace_syscall(child)) { if (WIFSTOPPED(status)) { int signal = WSTOPSIG(status); if (signal == SIGTRAP) { _ptrace(PTRACE_GETREGS, child, NULL, ®s); if (!in_syscall) { #if __arm__ // ARMv7 in_syscall = regs.REG_R7; #elif __x86_64__ // x86_64 in_syscall = regs.REG_ORIG_AX; #endif pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "Entering syscall %d\n", in_syscall); if (in_syscall == TRACE_SYSCALL(execve)) in_execve = 1; // execve generate 3 sigtraps: one at call, one at program loading and one at syscall return if (TEST_SYSCALL(syscall, in_syscall)) { pptrace_debug(PPTRACE_DEBUG_LEVEL_DEBUG, "Found syscall entry %d with registers "REG_FORMAT"\n", in_syscall, REG_FORMAT_VALUES(regs)); // We are in the good syscall but have we the good arguments? va_start(args, syscall); pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "Checking arguments: "); if (!syscall_match_args(child, in_syscall, &args, regs)) { in_syscall = -in_syscall; // Arguments doesn't match pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, " failed!\n"); } else { pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, " ok\n"); } va_end(args); } } else if (in_execve) { pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "execve has stopped after loading the new program\n"); in_execve = 0; } else { // Exiting a syscall pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "Exiting syscall %d\n", in_syscall); if (TEST_SYSCALL(syscall, in_syscall)) { pptrace_debug(PPTRACE_DEBUG_LEVEL_DEBUG, "Found syscall %d with registers "REG_FORMAT"\n", in_syscall, REG_FORMAT_VALUES(regs)); if (retval != NULL) *retval = get_retval(regs); return 0; } in_syscall = 0; } } else if (signal == SIGSEGV || signal == SIGKILL || signal == SIGILL) { // Signal that terminates the process pptrace_debug(PPTRACE_DEBUG_LEVEL_DEBUG, "Syscalls "SYSCALLS_FORMAT" not found\n", SYSCALLS_PRINT_ARGS(syscall)); return -1; } else pptrace_debug(PPTRACE_DEBUG_LEVEL_DEBUG, "Stopped with unknown signal %d\n", signal); } else pptrace_debug(PPTRACE_DEBUG_LEVEL_DEBUG, "Waitpid returned with the process unstopped\n"); } pptrace_debug(PPTRACE_DEBUG_LEVEL_DEBUG, "Syscalls "SYSCALLS_FORMAT" not found\n", SYSCALLS_PRINT_ARGS(syscall)); return -1; } word_uint trace_mmap(pid_t child, word_uint addr, size_t length, int prot) { int i; // Save user registers REG_STRUCT regs; _ptrace(PTRACE_GETREGS, child, NULL, ®s); REG_STRUCT saved_regs; _ptrace(PTRACE_GETREGS, child, NULL, &saved_regs); #if __WORDSIZE == 64 if(ptrace_bits == 32) { #endif #if __arm__ // ARMv7 /* Linux syscall on 32-bits ARMv7 (svc #0 = 00 EF) number __NR_mmap (90) r7 = __NR_mmap r0 = arg1 => addr r1 = arg2 => length r2 = arg3 => prot r3 = arg4 => flags = MAP_ANONYMOUS | MAP_PRIVATE sp+12 = arg5 => fd = -1 sp+16 = arg6 => offset = 0 return r0 = return value = addr */ word_uint prev_val1 = -1; word_uint prev_val2 = -1; regs.REG_R7 = 192; // __NR_mmap2 32-bits regs.REG_R0 = addr; regs.REG_R1 = length; regs.REG_R2 = prot; regs.REG_R3 = MAP_ANONYMOUS | MAP_PRIVATE; // backup the values from sp prev_val1 = do_push(child, (word_uint *) &saved_regs.REG_SP, -1); prev_val2 = do_push(child, (word_uint *) &saved_regs.REG_SP, 0); #elif __x86_64__ // x86_64 /* Linux syscall on 32-bits (int 0x80 = CD 80) number __NR_mmap (90) eax = __NR_mmap ebx = arg1 => addr ecx = arg2 => length edx = arg3 => prot esi = arg4 => flags = MAP_ANONYMOUS | MAP_PRIVATE edi = arg5 => fd = -1 ebp = arg6 => offset = 0 return rax = return value = addr */ regs.REG_AX = 192; // __NR_mmap2 32-bits regs.REG_BX = addr; regs.REG_CX = length; regs.REG_DX = prot; regs.REG_SI = MAP_ANONYMOUS | MAP_PRIVATE; regs.REG_DI = -1; regs.REG_BP = 0; #endif #if __WORDSIZE == 64 } else { /* Linux syscall on 64-bits (syscall - 0f 05) number __NR_mmap (9) rax = __NR_mmap rdi = arg1 => addr rsi = arg2 => length rdx = arg3 => prot r10 = arg4 => flags = MAP_ANONYMOUS | MAP_PRIVATE | MAP_32BIT r8 = arg5 => fd = -1 r9 = arg6 => offset = 0 return rax = return value = addr */ regs.REG_AX = 9; // __NR_mmap 64-bits regs.REG_DI = addr; regs.REG_SI = length; regs.REG_DX = prot; regs.REG_R10 = MAP_ANONYMOUS | MAP_PRIVATE | MAP_32BIT; regs.REG_R8 = -1; regs.REG_R9 = 0; } #endif // Pushing new user registers _ptrace(PTRACE_SETREGS, child, NULL, ®s); #if __arm__ // ARMv7 // Inserting svc #0 (00 00 00 ef) uint8_t opcode[] = {0x00, 0x00, 0x00, 0xef}; int size = 4; #elif __x86_64__ // x86_64 // Inserting syscall (0f 05) / int 0x80 (cd 80) uint8_t opcode[] = {0x0f, 0x05, 0xcd, 0x80}; int off = ptrace_bits == 32 ? 2 : 0; int size = 2; #endif for (i = 0; i < size; i++) #if __arm__ // ARMv7 opcode[i] = trace_replace(child, saved_regs.REG_PC + i, opcode[i]); #elif __x86_64__ // x86_64 opcode[i + off] = trace_replace(child, saved_regs.REG_IP + i, opcode[i + off]); #endif // Two step execution with PTRACE_SYSCALL to return _ptrace(PTRACE_SYSCALL, child, NULL, NULL); waitpid(child, NULL, 0); // The syscall was called _ptrace(PTRACE_SYSCALL, child, NULL, NULL); waitpid(child, NULL, 0); // The syscall has returned // Getting back the result from the syscall _ptrace(PTRACE_GETREGS, child, NULL, ®s); // Inserting back the original opcode for (i = 0; i < size; i++) #if __arm__ // ARMv7 opcode[i] = trace_replace(child, saved_regs.REG_PC + i, opcode[i]); #elif __x86_64__ // x86_64 opcode[i + off] = trace_replace(child, saved_regs.REG_IP + i, opcode[i + off]); #endif #if __arm__ /* restore the values that were overwritten by do_push */ do_pop(child, (word_uint *) &saved_regs.REG_SP, prev_val2); do_pop(child, (word_uint *) &saved_regs.REG_SP, prev_val1); #endif // Restoring registers _ptrace(PTRACE_SETREGS, child, NULL, &saved_regs); // Returning the result of the syscall return get_retval(regs); } #endif pid_t trace_run(char *path, char **argv, char **envp, int debug) { int status; int fds[2]; pipe(fds); char plop; pid_t child = fork(); if (pptrace_debug_level > PPTRACE_DEBUG_LEVEL_ALL) debug = 1; if ((debug == 0 && child != 0) || (debug && child == 0)) { #ifdef __PPTRACE_USE_PRCTL #ifdef PR_SET_PTRACER prctl(PR_SET_PTRACER, child, 0, 0, 0); #endif // PR_SET_PTRACER #endif // __PPTRACE_USE_PRCTL if (child == 0) _ptrace(PTRACE_TRACEME, 0, NULL, NULL); /* wait until the parent process is attached */ read(fds[0], &plop, sizeof(char)); close(fds[0]); if (path == NULL) { // No execution is asked (fork only) so return to the calling function kill(getpid(), SIGTRAP); // signal the parent to emulate execve call. return 0; } /* run the application */ pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "execve(%s, ...)\n", path); execve(path, argv, envp); pptrace_debug(PPTRACE_DEBUG_LEVEL_VERBOSE, "Execution of %s failed\n", path); exit(-1); } pid_t tpid = debug ? child : getppid(); if (debug == 0) _ptrace(PTRACE_ATTACH, tpid, NULL, NULL); /* notify the child process that we are attached */ plop = 'a'; write(fds[1], &plop, sizeof(char)); close(fds[1]); waitpid(tpid, &status, 0); while (!WIFEXITED(status) && (!WIFSTOPPED(status) || WSTOPSIG(status) != SIGTRAP)) { _ptrace(PTRACE_CONT, tpid, NULL, NULL); waitpid(tpid, &status, 0); } pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "execve(%s, ...) passed\n", path); if (WIFEXITED(status)) { pptrace_debug( PPTRACE_DEBUG_LEVEL_VERBOSE, "Process %d exited (probably due to execution of %s failed)\n", tpid, path); return -1; } return tpid; } void trace_detach(pid_t child) { _ptrace(PTRACE_DETACH, child, NULL, NULL); } void trace_wait(pid_t child) { int status = 0; do { waitpid(child, &status, 0); } while (!WIFEXITED(status) && !WIFSIGNALED(status)); } /* * A wrapper to test for errors * TODO: Correct error handling in that part of the code */ static inline long __ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data, const char *file, int line) { errno = 0; long result = ptrace(request, pid, addr, data); if (errno && result == -1) { pptrace_fubar("at %s:%d: ptrace(%lu, %d, %p, %p): %s", file, line, (long) request, pid, addr, data, strerror(errno)); } return result; } eztrace-1.1-7/src/pptrace/PaxHeaders.7332/errors.h0000644000000000000000000000013113020610327016532 xustar0029 mtime=1480790231.95021497 30 atime=1508138884.108123515 30 ctime=1508162365.461708984 eztrace-1.1-7/src/pptrace/errors.h0000644000175000017500000000321613020610327017724 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * errors.h -- Error reporting inside PPTrace. * * Methods provided are: * - pptrace_get_error(): returns the last reported error * - pptrace_clear_error(): clear the error reported by PPTrace internals * - pptrace_error(fmt, ...): printf-like function to display an error. * *PPTrace Internals* * - pptrace_report_error(fmt, ...): printf-like function to report an error * that won't be displayed. *PPTrace Internals* * - pptrace_fubar(fmt, ...): printf-like function for fatal error. This ends * the process. *PPTrace Internals* * - pptrace_bin_error(): method implemented by the binary module to provides * error specific to the binary module. *PPTrace Internals* * - pptrace_debug(level, fmt, ...): printf-like function for printing * debugging information. *PPTrace Internals* * - pptrace_dump_buffer(level, buffer, length): print in hex format the * buffer given in argument for debugging purpose. *PPTrace Internals* * * Created on: 2 Aug. 2011 * Author: Damien Martin-Guillerez */ #ifndef PPTRACE_ERRORS_H_ #define PPTRACE_ERRORS_H_ #include #include const char* pptrace_get_error(); void pptrace_clear_error(); void pptrace_error(char *fmt, ...); void pptrace_report_error(char *fmt, ...); void pptrace_fubar(char *fmt, ...); const char* pptrace_bin_error(); void pptrace_debug(int level, char *fmt, ...); void pptrace_dump_buffer(int level, char *buffer, size_t length); #endif // PPTRACE_ERRORS_H_ eztrace-1.1-7/src/pptrace/PaxHeaders.7332/binary.h0000644000000000000000000000013113020610327016502 xustar0029 mtime=1480790231.95021497 30 atime=1508138884.136124214 30 ctime=1508162365.461708984 eztrace-1.1-7/src/pptrace/binary.h0000644000175000017500000000615213020610327017676 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * binary.h -- Interface for reading symbol from binaries * * Provided methods: * - open_binary(path): open the binary for reading and return an opaque * structure * - close_binary(bin): close the opaque structure opened by open_binary * - get_symbol(bin, symbol): get the symbol in which name is provided by * the symbol parameter from the binary bin (opaque structure). * The returned structure contains the section of the symbol (name * and address), the offset of the symbol inside the section, * the symbol name and, if available, the symbol size. * - free_symbol(symbol): free a structure returned by a previous call of get_symbol() * - get_binary_bits(bin): return the size of a word inside the binary (e.g. is the code * of the binary for a 32 bits arch or a 64 bits * - read_symbol(bin, symbol, buffer, size): read the symbol content from the binary bin. * If the symbol is found and present in the library, then its content is * copied in buffer copying at most size bytes. The number of copied bytes * are returned in result. * - read_zstring(bin, symbol, addr, buffer, size): read size bytes given an address read from * the symbol given in argument. If the address is found, at most size bytes * are copied into buffer. * - read_zstring_array(bin, symbol): read a null terminated string array from a binary and * allocate the string array. The string array should be freed upon with * free_zstring_array(). * - free_zstring_array(arr): delete a null terminated string array allocated by read_zstring_array(). * Created on: 2 juil. 2011 * Author: Damien Martin-Guillerez */ #ifndef PPTRACE_BINARY_H_ #define PPTRACE_BINARY_H_ #include #include #include #include "types.h" typedef word_uint zzt_word; typedef struct _zzt_symbol { zzt_word symbol_offset; char *symbol_name; zzt_word symbol_size; char *section_name; zzt_word section_addr; uint32_t flags; /* the address can be used as is */ #define ZZT_FLAG_STATIC 1 /* the address is only an offset from the binary base address */ #define ZZT_FLAG_DYNAMIC 1<<1 } zzt_symbol; #define INIT_ZZT_SYMBOL(n, addr, size) zzt_symbol n; n.symbol_name = #n; n.symbol_size = (zzt_word)(size); n.section_name = NULL; n.section_addr = (zzt_word)0; n.symbol_offset = (zzt_word)(addr); void close_binary(void *bin); void* open_binary(char *path); zzt_symbol* get_symbol(void *bin, char *symbol); void free_symbol(zzt_symbol *symbol); int get_binary_bits(void *bin); size_t read_symbol(void *bin, zzt_symbol *symbol, void *buffer, ssize_t size); size_t read_zstring(void *bin, zzt_symbol *symbol, zzt_word addr, void *buffer, ssize_t size); char** read_zstring_array(void *bin, char *symbol); void free_zstring_array(char **strarray); #endif /* PPTRACE_BINARY_H_ */ eztrace-1.1-7/src/pptrace/PaxHeaders.7332/errors.c0000644000000000000000000000013113020610327016525 xustar0029 mtime=1480790231.95021497 30 atime=1508138884.096123215 30 ctime=1508162367.825915351 eztrace-1.1-7/src/pptrace/errors.c0000644000175000017500000000356313020610327017724 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * errors.c * * Created on: 2 Aug. 2011 * Author: Damien Martin-Guillerez */ #include #include #include #include #include #include #include char errmsg[1024]; int pptrace_debug_level = __PPTRACE_DEBUG_LEVEL; const char* pptrace_get_error() { #if ENABLE_BINARY_INSTRUMENTATION const char *bin_error = pptrace_bin_error(); if (bin_error) return bin_error; if (errmsg[0]) return errmsg; if (errno) { return strerror(errno); } #endif return NULL; } void pptrace_clear_error() { errmsg[0] = 0; } void pptrace_report_error(char *fmt, ...) { va_list va; va_start(va, fmt); vsnprintf(errmsg, sizeof(errmsg), fmt, va); va_end(va); } void pptrace_error(char *fmt, ...) { #if PPTRACE_DEBUG_LEVEL_NONE <= __PPTRACE_DEBUG_LEVEL va_list va; va_start(va, fmt); vfprintf(stderr, fmt, va); va_end(va); const char *emsg = pptrace_get_error(); if (emsg) { fprintf(stderr, ": %s\n", emsg); } else { fprintf(stderr, "\n"); } #endif } void pptrace_fubar(char *fmt, ...) { va_list va; va_start(va, fmt); fprintf(stderr, "FUBAR: "); vfprintf(stderr, fmt, va); fprintf(stderr, "\n"); va_end(va); exit(-1); } void pptrace_debug(int level, char *fmt, ...) { if (level <= pptrace_debug_level) { va_list va; va_start(va, fmt); vfprintf(stderr, fmt, va); va_end(va); } } void pptrace_dump_buffer(int level, char *buffer, size_t length) { size_t i; if (level <= pptrace_debug_level) { for (i = 0; i < length; i++) { fprintf(stderr, "%02x ", buffer[i]); if (i % 20 == 0) fprintf(stderr, "\n"); } fprintf(stderr, "\n"); } } eztrace-1.1-7/src/pptrace/PaxHeaders.7332/pptrace.h0000644000000000000000000000013113020610327016654 xustar0029 mtime=1480790231.95021497 30 atime=1508138884.048122016 30 ctime=1508162365.457708634 eztrace-1.1-7/src/pptrace/pptrace.h0000644000175000017500000000414713020610327020052 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * pptrace.h -- Public interface of PPTrace. Used by EZTrace * * - pptrace_prepare_binary(binary): open *binary* and returns an opaque * structure that is to be used by all other methods here. * - pptrace_load_module(bin, library): add *library* to be an hijack * library. This library should have a symbolic name * __pptrace_hijack_list is an array of string (char*). * Each string contain, separated by a space, the name of symbol to hijack, * the name of the symbol in the library to write the original address, * and the name of the replacement symbol. * *bin* is the opaque structure returned by pptrace_prepare_binary(). * Returns non-zero on failure. * * - pptrace_add_debugger(bin, argv): adds the program ran by the *argv* * vector to the binary *bin* to be the program debugger. An argument * matching '{name}' will be replaced by the target binary name and * an argument matching '{pid}' will be replaced by the target program * identifier. * * - pptrace_add_preload(bin, library): adds *library* to be a preload library. * This library will be added to the preload without doing anything else. * *bin* is the opaque structure returned by pptrace_prepare_binary(). * Returns non-zero on failure. * * - pptrace_run(void *bin, char **argv, char **envp): executes the binary * with the given argv and envp (see execve). * *bin* is the opaque structure returned by pptrace_prepare_binary(). * Returns non-zero on failure and free the *bin* structure. * * Created on: 2 August 2011 * Author: Damien Martin-Guillerez */ #ifndef PPTRACE_PPTRACE_H #define PPTRACE_PPTRACE_H void* pptrace_prepare_binary(char *binary); void pptrace_add_debugger(void *bin, char **argv); int pptrace_load_module(void *bin, char *library); int pptrace_add_preload(void *bin, char *library); int pptrace_run(void *bin, char **argv, char **envp); #endif // PPTRACE_PPTRACE_H eztrace-1.1-7/src/pptrace/PaxHeaders.7332/isize.h0000644000000000000000000000013113020610327016341 xustar0029 mtime=1480790231.95021497 30 atime=1508138884.180125313 30 ctime=1508162365.461708984 eztrace-1.1-7/src/pptrace/isize.h0000644000175000017500000000157313020610327017537 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * isize.h -- determining instruction size * * Provided method: * - get_overridden_size(bin, child, symbol, trampoline_size): determines * how much of *symbol* should be copied to replace the part overridden by * the trampoline of size *trampoline_size*. *bin* is the opaque structure * of the binary and *child* the pid of the child process. * * Created on: 2 juil. 2011 * Author: Damien Martin-Guillerez */ #ifndef PPTRACE_ISIZE_H_ #define PPTRACE_ISIZE_H_ #include #include #include ssize_t get_overridden_size(void* bin, pid_t child, word_uint symbol, size_t trampoline_size); #endif /* PPTRACE_ISIZE_H_ */ eztrace-1.1-7/src/pptrace/PaxHeaders.7332/opcodes.h0000644000000000000000000000013113020610327016652 xustar0029 mtime=1480790231.95021497 30 atime=1508138884.060122316 30 ctime=1508162365.457708634 eztrace-1.1-7/src/pptrace/opcodes.h0000644000175000017500000000361513020610327020047 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * opcodes.h -- Opcode generation * * - insert_opcodes(opcode, opcode_size, buf, size, offset): insert *opcode* * of size *opcode_size* at offset *offset* of *buf* of size *size*. * Returns min(offset+opcode_size, size) * - generate_trampoline(buf, size, orig_addr, reloc_addr): generates * opcodes to jump to *reloc_addr* from *orig_addr*. The opcodes are the * smallest possible. * The generated opcodes are put at the beginning of *buf* (that is * of size *size*). Returns the new size of the inserted opcodes. * - read_jump(buf, size, offset, prefix): read a jump part that was prefixed * by *prefix* and that is contained at offset *offset* of *buf* (*size* is * the size of *buf*). The returned value is the size of the instruction * if a jump is read, 0 if a valid prefix for a jump was encountered, and < 0 * if the instruction is not a jump. * * - MAX_TRAMPOLINE_SIZE is a constant giving the maximum size of a trampoline * overwrite * * Created on: 2 juil. 2011 * Author: Damien Martin-Guillerez */ #ifndef PPTRACE_OPCODES_H_ #define PPTRACE_OPCODES_H_ #include #include #include #include "types.h" #if __x86_64__ #define MAX_TRAMPOLINE_SIZE 48 // Be large :) #elif __arm__ #define MAX_TRAMPOLINE_SIZE 24 // in bytes!!! = sizes of one jumps and max overridden size. #endif ssize_t insert_opcodes(uint8_t* opcode, int opcode_size, uint8_t* buf, size_t size, size_t offset); ssize_t generate_trampoline(uint8_t* buffer, size_t size, word_uint orig_addr, word_uint reloc_addr); ssize_t read_jump(uint8_t* buf, size_t size, size_t offset, uint8_t prefix); #endif /* PPTRACE_OPCODES_H_ */ eztrace-1.1-7/src/pptrace/PaxHeaders.7332/tracing.h0000644000000000000000000000013113020610327016645 xustar0029 mtime=1480790231.95021497 30 atime=1508138884.100123315 30 ctime=1508162365.461708984 eztrace-1.1-7/src/pptrace/tracing.h0000644000175000017500000001261313020610327020040 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * tracing.h -- API for tracing process using ptrace() or similar * * - trace_run(path, argv, envp, debug): executes a process and trace it * Arguments should be the same as execve. The returned value * is the pid of the traced process. * If path is NULL, the process is only forked and trace_run * act as fork, the traced process return 0 and the tracing * returned the pid of the traced process. debug tells * the trace_run function that we would like to debug at the * detachment of the process (so run the program in background). * - trace_detach(child): detach (stop tracing) the process *child*. * - trace_wait(child): wait for the end of the process *child*. * - trace_set_bits(bits): tells the tracing system the size of a word * in the trace process (default is the wordsize of the host process). * - get_ip(child): returns the instruction pointer of process *child*. * - set_ip(child, rip): set to *rip* the instruction pointer of process * *child*. * - trace_read(child, fromaddr, buffer, length): reads *length* bytes * into *buffer* from *child* memory starting at address *fromaddr*. * - trace_write(child, fromaddr, buffer, length): write *length* bytes * from *buffer* to *child* memory starting at address *fromaddr*. * - trace_replace(child, addr, newbyte): set the byte at address *addr* * of *child* memory to *newbyte*. The previous value of this address * is returned by this function. * - trace_copy(child, fromaddr, toaddr, length): copies *length* bytes * from address *fromaddr* to address *toaddr* of *child* memory. * - trace_singlestep(child): executes one instruction of *child* and * stops after. * - trace_continue(child): Continue the child until a signal is caught. * - trace_syscall(child): Continue the child until a signal is caught or * a syscall is issued. * - trace_mmap(child, addr, length, prot): do, inside *child*, a * mmap(addr, length, prot, MAP_ANONYMOUS | MAP_PRIVATE | MAP_32BIT, -1, 0). * This function return the result of the syscall. * - trace_wait_syscall(child, retval, syscall, ...): wait for syscall number * *syscall* to happen in *child*. Result of the syscall is store in *retval*. * The arguments after are a series of SYSCALL_ARGTYPE_* ended * by SYSCALL_ARGTYPE_END. * SYSCALL_ARGTYPE_INT waits for an integer that matches the next * argument * SYSCALL_ARGTYPE_ZSTRING waits for a null terminated string that * matches the next argument * SYSCALL_ARGTYPE_ZSTRING waits for a null terminated string that * will be returned in the pointer given as next argument * SYSCALL_ARGTYPE_IGNORE waits for any argument * trace_wait_syscall returns < 0 when the wait did not encountered * the awaited syscall and 0 on success. * For use with several similar syscalls, multiple syscall numbers can be fit * together in syscall using high bits range (2 byte per syscall number) * - trace_get_regs(pid_t child, REG_STRUCT* regs): returns the registers * of process *child* into *regs*. * - trace_set_regs(pid_t child, REG_STRUCT* regs): set the registers of * process *child* to be *regs*. * Created on: 2 juil. 2011 * Author: Damien Martin-Guillerez */ #ifndef PPTRACE_TRACING_H_ #define PPTRACE_TRACING_H_ #include #include #include //#ifndef __PPTRACE_TRACE_TYPE #include //#else //#if __PPTRACE_TRACE_TYPE == PPTRACE_TRACE_TYPE_BSD //#include //#elif __PPTRACE_TRACE_TYPE == PPTRACE_ARCH_TYPE_MACOSX //#include //#else // if ! (__PPTRACE_TRACE_TYPE == PPTRACE_ARCH_TYPE_MACOSX || __PPTRACE_TRACE_TYPE == PPTRACE_ARCH_TYPE_BSD) //#include //#endif // ! (__PPTRACE_TRACE_TYPE == PPTRACE_ARCH_TYPE_MACOSX || __PPTRACE_TRACE_TYPE == PPTRACE_ARCH_TYPE_BSD) //#endif // !defined(__PPTRACE_TRACE_TYPE) #define SYSCALL_ARGTYPE_END 0 #define SYSCALL_ARGTYPE_INT 1 #define SYSCALL_ARGTYPE_ZSTRING 2 #define SYSCALL_ARGTYPE_ZSTRING_RETURN 3 // Return the value of the string #define SYSCALL_ARGTYPE_IGNORE 4 pid_t trace_run(char *path, char **argv, char **envp, int debug); void trace_detach(pid_t child); void trace_wait(pid_t child); void trace_set_bits(int bits); word_uint get_ip(pid_t child); void set_ip(pid_t child, word_uint rip); #ifdef __x86_64__ // x86_64 void trace_get_regs(pid_t child, REG_STRUCT* regs); void trace_set_regs(pid_t child, REG_STRUCT* regs); #endif void trace_read(pid_t child, word_uint fromaddr, uint8_t* buffer, size_t length); void trace_write(pid_t child, word_uint addr, uint8_t* buffer, size_t length); uint8_t trace_replace(pid_t child, word_uint addr, uint8_t newbyte); void trace_copy(pid_t child, word_uint fromaddr, word_uint toaddr, size_t length); int trace_singlestep(pid_t child); int trace_syscall(pid_t child); int trace_continue(pid_t child); word_uint trace_mmap(pid_t child, word_uint addr, size_t length, int prot); int trace_wait_syscall(pid_t child, word_uint *retval, unsigned long syscall, ...); // Wait for syscall and return the return value of the first encountered syscall void print_reg_value(pid_t, word_uint); #endif /* PPTRACE_TRACING_H_ */ eztrace-1.1-7/src/pptrace/PaxHeaders.7332/opcodes.c0000644000000000000000000000012613020610327016651 xustar0029 mtime=1480790231.95021497 29 atime=1508138884.26012731 28 ctime=1508162367.8299157 eztrace-1.1-7/src/pptrace/opcodes.c0000644000175000017500000000162713020610327020043 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * opcodes.c * * Wrapper to include the good set of opcodes. If we ever * support multiple instruction set, we should certainly change that by an array * of opcodes. * * Created on: 2 juil. 2011 * Author: Damien Martin-Guillerez */ #include #include #if __x86_64__ // x86_64 //#ifndef __PPTRACE_ARCH_TYPE #include "cpu/intel.c" //#else //#if __PPTRACE_ARCH_TYPE == PPTRACE_ARCH_TYPE_XXX //#include "opcodes/x x x.c" //#else // if ! (__PPTRACE_ARCH_TYPE == PPTRACE_ARCH_TYPE_XXX) //#include "opcodes/intel.c" //#endif // ! (__PPTRACE_ARCH_TYPE == PPTRACE_ARCH_TYPE_XXX) //#endif // !defined(__PTRACE_ARCH_TYPE) #elif __arm__ // ARMv7 -- ARM cortex-A9 #include "cpu/arm.c" #endif eztrace-1.1-7/src/pptrace/PaxHeaders.7332/cpu0000644000000000000000000000013213171135475015575 xustar0030 mtime=1508162365.469709681 30 atime=1508162367.741908015 30 ctime=1508162365.469709681 eztrace-1.1-7/src/pptrace/cpu/0000755000175000017500000000000013171135475017041 5ustar00trahaytrahay00000000000000eztrace-1.1-7/src/pptrace/cpu/PaxHeaders.7332/intel.c0000644000000000000000000000013113020610327017113 xustar0029 mtime=1480790231.95021497 30 atime=1508138884.372130108 30 ctime=1508162365.469709681 eztrace-1.1-7/src/pptrace/cpu/intel.c0000644000175000017500000001155613020610327020313 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * intel.c * * Production of opcodes for 64-bit intel processors (aka. amd64 architecture). * This file should also be used for 32-bit targets (the program should adapt itself to the target). * * Created on: 2 juil. 2011 * Author: Damien Martin-Guillerez */ #include #include #include "errors.h" ssize_t insert_opcodes(uint8_t* opcode, int opcode_size, uint8_t* buf, size_t size, size_t offset) { int i = 0; pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "(opcodes)\tinserting opcodes: "); while (offset < size && i < opcode_size) { pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "%02X ", opcode[i]); buf[offset] = opcode[i]; offset++; i++; } pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "\n"); return offset; } ssize_t read_jump(uint8_t* buf, size_t size, size_t offset, uint8_t prefix) { ssize_t offlen = (prefix == 0x66) ? 2 : 4; // if prefix is an instruction size override then it's 16-bits offset switch (buf[offset]) { case 0xEB: // JMP cb case 0xE3: // JrCXZ cb case 0x70: case 0x71: case 0x72: case 0x73: case 0x74: case 0x75: case 0x76: case 0x77: // Jcc cb case 0x78: case 0x79: case 0x7A: case 0x7B: case 0x7C: case 0x7D: case 0x7E: case 0x7F: return 2; case 0x0f: // Possible Jcc cw/cd (0x0f 0x8x cd) if (size < offset + 2) return -2; // We need more byte to answer return ((buf[offset + 1] & 0xf0) == 0x80) ? 2 + offlen : 0; case 0xE9: // JMP cw/cd case 0xE8: // CALL cw/cd case 0x9A: // CALL FAR cw/cd return 1 + offlen; case 0xFF: // JMP /4, JMP FAR /5, CALL /2, CALL FAR /3 // Parse the ModRM byte if (size < offset + 2) return -2; // We need more byte to answer uint8_t modRM = buf[offset + 1]; uint8_t mod = (modRM >> 6) & 0x3; uint8_t reg = (modRM >> 3) & 0x7; uint8_t rm = (modRM) & 0x7; if (reg < 2 || reg > 5) return -1; // Neither CALL nor JMP switch (mod) { case 0: // Registers ( + SIB byte if rm = 4) return (rm == 4) ? 4 : 3; case 3: // Extended registers return 3; case 1: // offset16 ( + SIB byte if rm = 4) return (rm == 4) ? 5 : 4; case 2: // offset32 ( + SIB byte if rm = 4) return (rm == 4) ? 7 : 6; } return -1; // ??? case 0xC3: // RET case 0xCB: // RET FAR return 1; case 0xC2: // RET cw case 0xCA: // RET FAR cw return 3; // Prefixes case 0x66: // Operand-Size Override case 0x67: // Address-Size Override case 0x2E: case 0x3E: case 0x26: case 0x64: case 0x65: case 0x36: // Segment Override case 0xF0: // Lock case 0xF3: case 0xF2: // Repeat return 0; // Retry with next byte default: return -1; // It's not a jump, nor a prefix } } static inline int get_unsigned_nb_bits(word_uint value) { int index = 0; while (value) { value >>= 1; index++; } return index; } int get_signed_nb_bits(word_int value) { if (value < 0) { value = -value; } else { value++; } return get_unsigned_nb_bits(value) + 1; } ssize_t generate_trampoline(uint8_t* buffer, size_t size, word_uint orig_addr, word_uint reloc_addr) { uint8_t buf[12]; word_int offset = reloc_addr - orig_addr; pptrace_debug( PPTRACE_DEBUG_LEVEL_ALL, "(opcodes)\tgenerating trampoline from 0x%lx to 0x%lx (delta is %ld)\n", (unsigned long) orig_addr, (unsigned long) reloc_addr, (unsigned long) offset); if (get_signed_nb_bits(offset - 2) <= 8) { if (size < 2) return -1; // 8-bit offset (jmp rel8off EB) buf[0] = 0xeb; buf[1] = offset - 2; return insert_opcodes(buf, 2, buffer, size, 0); } else if (get_signed_nb_bits(offset - 5) <= 32) { if (size < sizeof(uint32_t) + 1) return -1; // 32-bit offset (jmp rel32off E9) buf[0] = 0xe9; uint32_t off = offset - 5; memcpy((void*) (buf + 1), (void*) (&off), sizeof(uint32_t)); return insert_opcodes(buf, sizeof(uint32_t) + 1, buffer, size, 0); } else if (get_unsigned_nb_bits(reloc_addr) <= 32) { // 32-bits jump // mov eax, addr (B8 + rd); jump eax (FF E0) if (size < 7) return -1; buf[0] = 0xb8; // mov eax, addr uint32_t addr = reloc_addr; memcpy((void*) (buf + 1), (void*) (&addr), sizeof(uint32_t)); buf[5] = 0xff; // jmp eax buf[6] = 0xe0; return insert_opcodes(buf, 7, buffer, size, 0); } else { // 64-bits jump if (size < 12) return -1; // Absolute jump (mov rax, addr (REX.W + B8+ rd) ; jmp rax) buf[0] = 0x48; // mov rax, addr buf[1] = 0xb8; memcpy((void*) (buf + 2), (void*) (&reloc_addr), sizeof(word_uint)); buf[10] = 0xff; // jmp rax buf[11] = 0xe0; return insert_opcodes(buf, 12, buffer, size, 0); } } eztrace-1.1-7/src/pptrace/cpu/PaxHeaders.7332/arm.c0000644000000000000000000000013113020610327016557 xustar0029 mtime=1480790231.95021497 30 atime=1508138922.581084346 30 ctime=1508162365.469709681 eztrace-1.1-7/src/pptrace/cpu/arm.c0000644000175000017500000000577013020610327017760 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * arm.c * * Generate opcodes for ARM cortex-A9 processors * * Author: Damien Martin-Guillerez */ #include #include ssize_t insert_opcodes(uint8_t* opcode, int opcode_size, uint8_t* buf, size_t size, size_t offset) { int i = 0; pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "(opcodes)\tinserting opcodes: "); while (offset < size && i < opcode_size) { pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "%02X ", opcode[i]); buf[offset] = opcode[i]; offset++; i++; } pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "\n"); return offset; } ssize_t read_jump(uint8_t* buf, size_t size, size_t offset, uint8_t prefix) { // Since the size of instructions on ARMv7 is static (=32b), the size of the jump instruction // can be simply computed as return ARM_INSTR_SIZE / 8; } static inline int get_unsigned_nb_bits(word_uint value) { int index = 0; while (value) { value >>= 1; index++; } return index; } int get_signed_nb_bits(word_int value) { if (value < 0) { value = -value; } else { value++; } return get_unsigned_nb_bits(value) + 1; } ssize_t generate_nops(uint8_t*buffer, size_t size) { int i; uint8_t buf[1024]; for (i = 0; i < 1024; i += 2) { buf[i] = 0xbf; buf[i + 1] = 0x00; } return insert_opcodes(buf, 12, buffer, size, 0); } ssize_t generate_trampoline(uint8_t* buffer, size_t size, word_uint orig_addr, word_uint reloc_addr) { uint8_t buf[12]; pptrace_debug(PPTRACE_DEBUG_LEVEL_ALL, "(opcodes)\tgenerating trampoline from 0x%lx to 0x%lx\n", (unsigned long) orig_addr, (unsigned long) reloc_addr); if (size < 12) return -1; uint32_t addr = reloc_addr; #define GET_IM8(addr_16) ((addr_16) & 0x000000ff) #define GET_IM3(addr_16) (((addr_16)>>8) & 0x00000007) #define GET_I(addr_16) (((addr_16) >>11) & 0x00000001) #define GET_IM4(addr_16) (((addr_16) >>12) & 0x0000000f) /* working with register R8 */ uint8_t register_id = 8; /* switch to Thumb mode */ addr = addr | 0x01; // im4:i:im3:im8 uint16_t addr16 = addr & 0x0000FFFF; // movw rX, addr[0:15] uint32_t _im8 = GET_IM8(addr16); uint32_t _im3 = GET_IM3(addr16); uint32_t _i = GET_I (addr16); uint32_t _im4 = GET_IM4(addr16); buf[3] = (_im3 << 4) | register_id; buf[2] = _im8; buf[1] = (_i << 2) | (uint8_t) 0xf2; buf[0] = _im4 | (uint8_t) 0x40; // movt rX, addr[16:31] addr16 = addr >> 16; _im8 = GET_IM8(addr16); _im3 = GET_IM3(addr16); _i = GET_I (addr16); _im4 = GET_IM4(addr16); buf[7] = (_im3 << 4) | register_id; buf[6] = _im8; buf[5] = (_i << 2) | (uint8_t) 0xf2; buf[4] = _im4 | (uint8_t) 0xC0; // bx rX buf[8] = register_id << 3; buf[9] = 0x47; // nop buf[10] = 0x00; buf[11] = 0xbf; return insert_opcodes(buf, 12, buffer, size, 0); } eztrace-1.1-7/src/pptrace/PaxHeaders.7332/tracing.c0000644000000000000000000000012713020610327016645 xustar0029 mtime=1480790231.95021497 29 atime=1508138884.26812751 29 ctime=1508162367.83391605 eztrace-1.1-7/src/pptrace/tracing.c0000644000175000017500000000174013020610327020032 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * tracing.c * * Wrapper to include the good library for tracing processes * * Created on: 2 juil. 2011 * Author: Damien Martin-Guillerez */ #include #include #include #include #include //#ifndef __PPTRACE_TRACE_TYPE #include "os/linux/linux.c" //#else //#if __PPTRACE_TRACE_TYPE == PPTRACE_TRACE_TYPE_BSD //#include "tracing/bsd.c" //#elif __PPTRACE_TRACE_TYPE == PPTRACE_ARCH_TYPE_MACOSX //#include "tracing/macosx.c" //#else // if ! (__PPTRACE_TRACE_TYPE == PPTRACE_ARCH_TYPE_MACOSX || __PPTRACE_TRACE_TYPE == PPTRACE_ARCH_TYPE_BSD) //#include "tracing/linux.c" //#endif // ! (__PPTRACE_TRACE_TYPE == PPTRACE_ARCH_TYPE_MACOSX || __PPTRACE_TRACE_TYPE == PPTRACE_ARCH_TYPE_BSD) //#endif // !defined(__PPTRACE_TRACE_TYPE) eztrace-1.1-7/src/pptrace/PaxHeaders.7332/hijack.h0000644000000000000000000000013113020610327016447 xustar0029 mtime=1480790231.95021497 30 atime=1508138884.204125912 30 ctime=1508162365.461708984 eztrace-1.1-7/src/pptrace/hijack.h0000644000175000017500000000300513020610327017635 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * hijack.h -- High-level interface for inserting hijacks into a traced process * * Provided methods are: * - hijack_code(bin, child, sym_addr, sym_size, reloc_addr, orig_addr, * repl_addr): hijacks the symbol at address *sym_addr* which size is * *sym_size*. It will insert a jump to *repl_addr* at *sym_addr*. The * symbol at *orig_addr* will be filled with the address *reloc_addr* * that contains the code overridden by the trampoline. This is done by * determining the size of instruction using the *bin* parameter (a * binary opened by open_binary()) * - hijack(bin, child, toHijack, orig, repl): allocates * the destination buffer for the hijack and then do the hijack using * hijack_symbol(). *toHijack* is the symbol to intercept, *orig* is the * symbol to store the address of the hijack code and *repl* is the symbol * called instead of the *toHijack* symbol * * Created on: 2 juil. 2011 * Author: Damien Martin-Guillerez */ #ifndef HIJACK_H_ #define HIJACK_H_ ssize_t hijack_code(void* bin, pid_t child, word_uint sym_addr, word_uint sym_size, word_uint reloc_addr, word_uint orig_addr, word_uint repl_addr); ssize_t hijack(void* bin, pid_t child, zzt_symbol *toHijack, zzt_symbol *orig, zzt_symbol *repl); #endif /* HIJACK_H_ */ eztrace-1.1-7/src/pptrace/PaxHeaders.7332/pptrace.c0000644000000000000000000000013113020610327016647 xustar0029 mtime=1480790231.95021497 30 atime=1508138884.036121717 30 ctime=1508162367.825915351 eztrace-1.1-7/src/pptrace/pptrace.c0000644000175000017500000005405213020610327020045 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * pptrace.c * * Public interface of the library * * Created on: 2 Aug. 2011 * Author: Damien Martin-Guillerez */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "eztrace_config.h" // To store informations about hijack to install typedef struct __pptrace_internal_hijack { char* function; // Function to hijack char* orig_symbol; // Name of the symbol to store the intercepted address char* replace_symbol; // Name of the interceptor symbol zzt_symbol* funSym; // Symbol of the function zzt_symbol* origSym; // Symbol to store the intercepted address zzt_symbol* replSym; // Interceptor symbol } pptrace_internal_hijack; // To store informations about libraries to load typedef struct __pptrace_internal_library { char* library; // The library name pptrace_internal_hijack** hijacks; // The hijacks to install zzt_word baseaddr; // Double-linked list struct __pptrace_internal_library* next; struct __pptrace_internal_library* prev; } pptrace_internal_library; // And finally the binary structure typedef struct __pptrace_internal_binary { char *name; // Name of the binary void *binary; // Binary structure char **debugger; // Argument list to debugger an argument matching "{name}" will be replaced by the binary name and arguments matching "{pid}" will be replaced by the program pid zzt_word baseaddr; /* base address of the binary */ // List of libraries pptrace_internal_library* first; pptrace_internal_library* last; } pptrace_internal_binary; #define ALLOC(type) (type*)malloc(sizeof(type)); // Look out for a binary in the path char* get_program_path(char *name) { struct stat buf; if (stat(name, &buf) == 0) { // The address is relative return strdup(name); } // Looking in the path char *path = getenv("PATH"); if (path == NULL) return NULL; path = strdup(path); // copying to avoid corrupting the environment variable if (path == NULL) return NULL; char *ifs = getenv("IFS"); if (ifs == NULL) ifs = ":"; // for each path char *p; char rpath[1024]; for (p = strtok(path, ifs); p != NULL; p = strtok(NULL, ifs)) { // Add the path component if (p[strlen(p) - 1] != '/') snprintf(rpath, 1024, "%s/%s", p, name); else snprintf(rpath, 1024, "%s%s", p, name); // Test if it exists if (stat(rpath, &buf) == 0) { free(path); return strdup(rpath); } } free(path); return NULL; } void* pptrace_prepare_binary(char *binary) { pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "Loading binary %s... ", binary); pptrace_clear_error(); pptrace_internal_binary* bin = ALLOC(pptrace_internal_binary) ; if (!bin) { pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "failed!\n"); pptrace_error("Allocation failed"); return NULL; } bin->debugger = NULL; bin->first = bin->last = NULL; bin->name = get_program_path(binary); if (!(bin->name)) { pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "failed!\n"); free(bin); pptrace_error("Allocation failed"); return NULL; } #if ENABLE_BINARY_INSTRUMENTATION bin->binary = open_binary(bin->name); if (!(bin->binary)) { pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "failed!\n"); pptrace_error("Cannot open binary %s", binary); free(bin->name); free(bin); return NULL; } #endif pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "ok\n"); return (void*) bin; } void pptrace_add_debugger(void *bin, char **argv) { pptrace_internal_binary* ibin = bin; ibin->debugger = argv; if (argv == NULL) pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "Installing debugger %s\n"); else pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "Uninstalling debugger\n", argv[0]); } void pptrace_free_hijack(pptrace_internal_hijack* hijack) { if (!hijack) return; #if ENABLE_BINARY_INSTRUMENTATION if (hijack->origSym) free_symbol(hijack->origSym); if (hijack->replSym) free_symbol(hijack->replSym); if (hijack->funSym) free_symbol(hijack->funSym); if (hijack->orig_symbol) free(hijack->orig_symbol); if (hijack->replace_symbol) free(hijack->replace_symbol); if (hijack->function) free(hijack->function); #endif free(hijack); } pptrace_internal_hijack* pptrace_get_hijack(pptrace_internal_binary *bin, char *library, void *lib, char *params) { #if ENABLE_BINARY_INSTRUMENTATION char *params_copy; char *function; char *interceptee; char *interceptor; // Parsing of the result of __pptrace_hijack_list params_copy = strdup(params); function = strtok(params_copy, " "); interceptee = strtok(NULL, " "); interceptor = strtok(NULL, " "); if (function == NULL || interceptee == NULL || interceptor == NULL) { pptrace_error("Wrong order to intercept: %s\n", params); free(params_copy); return NULL; } pptrace_internal_hijack *hijack = ALLOC(pptrace_internal_hijack) ; pptrace_debug(PPTRACE_DEBUG_LEVEL_VERBOSE, "Got order to intercept %s with %s using %s\n", function, interceptor, interceptee); if (!hijack) { pptrace_error("Allocation failed"); free(params_copy); return NULL; } hijack->orig_symbol = hijack->replace_symbol = hijack->function = NULL; hijack->origSym = hijack->replSym = hijack->funSym = NULL; hijack->orig_symbol = strdup(interceptee); if (!hijack->orig_symbol) { pptrace_free_hijack(hijack); pptrace_error("Allocation failed"); free(params_copy); return NULL; } hijack->replace_symbol = strdup(interceptor); if (!hijack->replace_symbol) { pptrace_free_hijack(hijack); pptrace_error("Allocation failed"); free(params_copy); return NULL; } hijack->function = strdup(function); if (!hijack->function) { pptrace_free_hijack(hijack); pptrace_error("Allocation failed"); free(params_copy); return NULL; } free(params_copy); /* search for the address of the symbol */ hijack->funSym = get_symbol(bin->binary, hijack->function); if (!hijack->funSym) { pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "Failed to find symbol %s in binary %s, ignoring!\n", hijack->function, library); pptrace_free_hijack(hijack); return NULL; } hijack->origSym = get_symbol(lib, hijack->orig_symbol); if (!hijack->origSym) { pptrace_error("Failed to find symbol %s in binary %s", hijack->orig_symbol, library); pptrace_free_hijack(hijack); return NULL; } hijack->replSym = get_symbol(lib, hijack->replace_symbol); if (!hijack->replSym) { pptrace_error("Failed to find symbol %s in binary %s", hijack->replace_symbol, library); pptrace_free_hijack(hijack); return NULL; } return hijack; #endif return NULL; } void pptrace_free_hijacks(pptrace_internal_hijack** hijacks) { int i; if (!hijacks) return; for (i = 0; hijacks[i] != NULL; i++) pptrace_free_hijack(hijacks[i]); free(hijacks); } pptrace_internal_hijack** pptrace_get_hijacks(pptrace_internal_binary *bin, char *library, void *lib, char **params) { int s, i, j; for (s = 0; params[s] != NULL; s++) ; pptrace_internal_hijack** hijacks = (pptrace_internal_hijack**) malloc( sizeof(pptrace_internal_hijack*) * (s + 1)); if (!hijacks) { pptrace_error("Allocation failed"); return NULL; } for (i = 0; i < s + 1; i++) hijacks[i] = NULL; for (i = j = 0; j < s; i++, j++) { hijacks[i] = pptrace_get_hijack(bin, library, lib, params[j]); if (!hijacks[i]) i--; // ignoring this line } return hijacks; } void __pptrace_get_module_name(const char* libname, char *module_name, size_t buffer_size) { #define LIBEZTRACE_PREFIX "libeztrace-autostart-" memset(module_name, '\0', buffer_size); /* search for "libeztrace-autostart-" */ char* res = strstr(libname, LIBEZTRACE_PREFIX); if(res) { /* found it */ res = &res[strlen(LIBEZTRACE_PREFIX)]; /* now search for the suffix (".so" / ".dynlib") */ char* suffix = strstr(res, DYNLIB_SUFFIX); if(suffix) { /* found it */ assert(suffix-res < buffer_size); strncpy(module_name, res, suffix-res); } } } pptrace_internal_hijack** pptrace_load_hijacks(pptrace_internal_binary *bin, char *library, void *lib) { #if ENABLE_BINARY_INSTRUMENTATION void *bin_bin = open_binary(library); char module_name[1024]; __pptrace_get_module_name(library, module_name, 1024); char hijack_symbol[1024]; __get_pptrace_symbol_external(hijack_symbol, 1024, module_name); char** params = read_zstring_array(bin_bin, hijack_symbol); if (!params) { __get_pptrace_symbol_external(hijack_symbol, 1024, ""); params = read_zstring_array(bin_bin, hijack_symbol); if(!params) { pptrace_error("%s library does not contain symbol %s, probably wrong library format", library, hijack_symbol); close_binary(bin_bin); return NULL; } } close_binary(bin_bin); pptrace_internal_hijack **result = pptrace_get_hijacks(bin, library, lib, params); free_zstring_array(params); return result; #endif return NULL; } void pptrace_free_library(pptrace_internal_library *lib) { if (!lib) return; if (lib->library) { free(lib->library); } if (lib->hijacks) { pptrace_free_hijacks(lib->hijacks); } free(lib); } void pptrace_insert_library(pptrace_internal_binary* binary, pptrace_internal_library* lib) { lib->next = NULL; lib->prev = binary->last; if (binary->last) { binary->last->next = lib; binary->last = lib; } else { binary->first = binary->last = lib; } } void pptrace_remove_last_library(pptrace_internal_binary* binary) { if (binary->last) { pptrace_internal_library* lib = binary->last; binary->last = lib->prev; if (lib->prev) { lib->prev->next = NULL; } if (binary->first == lib) binary->first = NULL; } } int pptrace_load_module(void *bin, char *library) { int r = pptrace_add_preload(bin, library); if (r < 0) return r; #if ENABLE_BINARY_INSTRUMENTATION pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "Fetching hijacks of library %s\n", library); pptrace_internal_binary* binary = (pptrace_internal_binary*) bin; pptrace_internal_library* lib = binary->last; void *libr = open_binary(library); if (!binary) { pptrace_remove_last_library(binary); pptrace_free_library(lib); pptrace_error("Failed to open library %s", library); return -1; } lib->hijacks = pptrace_load_hijacks(binary, library, libr); if (!lib->hijacks) { pptrace_remove_last_library(binary); pptrace_free_library(lib); return -1; } close_binary(libr); lib->baseaddr = 0; pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "Hijacks of library %s fetched\n", library); #endif return 0; } int pptrace_add_preload(void *bin, char *library) { pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "Loading library %s... ", library); pptrace_clear_error(); if (!bin || !library) { pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "failed!\n"); pptrace_error("Invalid argument"); return -1; } pptrace_internal_binary* binary = (pptrace_internal_binary*) bin; pptrace_internal_library* lib = ALLOC(pptrace_internal_library) ; if (!lib) { pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "failed!\n"); pptrace_error("Allocation failed"); return -1; } lib->library = strdup(library); lib->baseaddr = -1; if (!(lib->library)) { free(lib); pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "failed!\n"); pptrace_error("Allocation failed"); return -1; } lib->hijacks = NULL; pptrace_insert_library(binary, lib); pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "ok\n"); return 0; } char* pptrace_create_preload(pptrace_internal_library *first) { const char* ldpreload = "LD_PRELOAD="; char *result = (char*) malloc(1024); unsigned int size = 1024; unsigned int nsize = strlen(ldpreload); strcpy(result, ldpreload); while (first != NULL) { while (size - nsize < strlen(first->library) + 2) { size += 1024; result = (char*) realloc(result, size); } strcpy(result + nsize, first->library); nsize += strlen(first->library); strcpy(result + nsize, ":"); nsize++; first = first->next; } char *envpreload = getenv("LD_PRELOAD"); if (envpreload != NULL) { while (size - nsize < strlen(envpreload) + 1) { size += 1024; result = (char*) realloc(result, size); } strcpy(result + nsize, envpreload); } else if (nsize > 0) { nsize--; // remove the trailing ':' result[nsize] = 0; } return result; } /* preload the libraries, and load the application */ pid_t pptrace_launch_preload(char *path, char **argv, char **envp, pptrace_internal_library *first, int debug) { // Adding LD_PRELOAD=libraries in envp int i, size = 0; while (envp[size] != NULL) size++; char **envp2 = (char**) malloc(sizeof(char*) * (size + 2)); for (i = 0; i < size; i++) envp2[i] = envp[i]; envp2[size] = pptrace_create_preload(first); envp2[size + 1] = NULL; pptrace_debug(PPTRACE_DEBUG_LEVEL_DEBUG, "\nLD_PRELOAD is %s\n", envp2[size]); pid_t child = trace_run(path, argv, envp2, debug); free(envp2[size]); free(envp2); return child; } void pptrace_free_binary(pptrace_internal_binary* binary) { pptrace_internal_library *lib; if (!binary) return; #if ENABLE_BINARY_INSTRUMENTATION if (binary->binary) { close_binary(binary->binary); } #endif while (binary->first) { lib = binary->first; binary->first = lib->next; pptrace_free_library(lib); } binary->last = NULL; if (binary->name) { free(binary->name); } free(binary); } int pptrace_count_unmatched_libraries(pptrace_internal_binary* binary, int max) { int count = 0; pptrace_internal_library *result = binary->first; while (result != NULL && count < max) { if (result->baseaddr == 0) count++; result = result->next; } return count; } pptrace_internal_library* pptrace_search_library( pptrace_internal_binary* binary, char *libname) { pptrace_internal_library *result = binary->first; int libnamelen = strlen(libname); while (result != NULL) { int len = libnamelen - strlen(result->library); pptrace_debug(PPTRACE_DEBUG_LEVEL_DEBUG, "Comparing %s and %s\n", result->library, libname + len); if (len >= 0 && strcmp(result->library, libname + len) == 0) // the searched library ends with the short name of the lib return result; result = result->next; } return NULL; } void pptrace_apply_library_baseaddr(pptrace_internal_library *lib, zzt_word baseaddr) { int i; lib->baseaddr = baseaddr; if (lib->hijacks) { for (i = 0; lib->hijacks[i]; i++) { lib->hijacks[i]->origSym->section_addr += baseaddr; lib->hijacks[i]->replSym->section_addr += baseaddr; } } } /* search for the base address of binary (once it is loaded) and fill * the baseaddr field of the binary structure */ int pptrace_get_base_address(pid_t child, pptrace_internal_binary* binary) { binary->baseaddr = 0; /* the binary is mapped at this address: grep "name>$" /proc//maps |grep "r-xp"|cut -d'-' -f1 */ char cmd[4096]; snprintf(cmd, 4096, "grep \"$(basename %s)$\" /proc/%d/maps |grep \" r-xp \"|cut -d'-' -f1", binary->name, child); FILE*f = popen(cmd, "r"); if(!f) { fprintf(stderr, "popen(%s) failed\n", cmd); return -1; } uint64_t ptr; fscanf(f, "%lx", &binary->baseaddr); pptrace_debug(PPTRACE_DEBUG_LEVEL_VERBOSE, "Binary base address: %p\n", binary->baseaddr); return 0; } int pptrace_wait_library(pid_t child, pptrace_internal_binary* binary) { #if ENABLE_BINARY_INSTRUMENTATION char *library; // Wait for dlopen(argv[1]) pptrace_debug(PPTRACE_DEBUG_LEVEL_VERBOSE, "Waiting for open(*, O_RDONLY) (syscall %d)... ", TRACE_SYSCALL(open)); word_uint fd; int r = trace_wait_syscall(child, &fd, TRACE_SYSCALL(open), SYSCALL_ARGTYPE_ZSTRING_RETURN, &library, SYSCALL_ARGTYPE_IGNORE, SYSCALL_ARGTYPE_END); if (r < 0 || library == NULL) { pptrace_debug(PPTRACE_DEBUG_LEVEL_VERBOSE, "failed!\n"); return -1; } pptrace_debug(PPTRACE_DEBUG_LEVEL_VERBOSE, "ok (fd = %d, library = %s)\n", fd, library); if ((int) fd < 0) { pptrace_debug(PPTRACE_DEBUG_LEVEL_VERBOSE, "open() failed ==> ignoring\n"); return 0; } pptrace_internal_library* lib = pptrace_search_library(binary, library); free(library); if (!lib || lib->baseaddr) { pptrace_debug(PPTRACE_DEBUG_LEVEL_VERBOSE, "Not an awaited library, ignoring\n"); return 0; } pptrace_debug( PPTRACE_DEBUG_LEVEL_VERBOSE, "Waiting for mmap(*, *, PROT_READ|PROT_EXEC, *, %d, *) (syscall %d)... ", fd, MMAP_SYSCALLS); word_uint baseaddr = 0; r = trace_wait_syscall(child, &baseaddr, MMAP_SYSCALLS, SYSCALL_ARGTYPE_IGNORE, SYSCALL_ARGTYPE_IGNORE, SYSCALL_ARGTYPE_INT, (word_uint) (PROT_READ | PROT_EXEC), SYSCALL_ARGTYPE_IGNORE, SYSCALL_ARGTYPE_INT, (word_uint) fd, SYSCALL_ARGTYPE_IGNORE, SYSCALL_ARGTYPE_END); if (baseaddr == 0 || r < 0) { pptrace_debug(PPTRACE_DEBUG_LEVEL_VERBOSE, "failed!\n"); return -1; } pptrace_debug(PPTRACE_DEBUG_LEVEL_VERBOSE, "ok (addr = %016lx)\n", baseaddr); pptrace_debug(PPTRACE_DEBUG_LEVEL_VERBOSE, "Waiting for close(%d) (syscall %d)... ", fd, TRACE_SYSCALL(close)); if (trace_wait_syscall(child, NULL, TRACE_SYSCALL(close), SYSCALL_ARGTYPE_INT, fd, SYSCALL_ARGTYPE_END) < 0) { pptrace_debug(PPTRACE_DEBUG_LEVEL_VERBOSE, "failed!\n"); return -1; } pptrace_debug(PPTRACE_DEBUG_LEVEL_VERBOSE, "ok (addr = %016lx)\n", baseaddr); pptrace_apply_library_baseaddr(lib, (zzt_word) baseaddr); #endif /* ENABLE_BINARY_INSTRUMENTATION */ return 0; } int pptrace_wait_libraries(pid_t child, pptrace_internal_binary* binary) { while (pptrace_count_unmatched_libraries(binary, 1)) { if (pptrace_wait_library(child, binary)) return -1; } return 0; } /* Install all the detected hijacks into the child process. * Return the number of symbols that were successfully installed * or -1 if an error occured. */ int pptrace_install_hijacks(pid_t child, pptrace_internal_binary* binary) { int nb_installed = 0; #if ENABLE_BINARY_INSTRUMENTATION int i; pptrace_internal_library* lib; for (lib = binary->first; lib != NULL; lib = lib->next) { if (lib->hijacks) { for (i = 0; lib->hijacks[i] != NULL; i++) { if (lib->hijacks[i]->funSym != NULL && lib->hijacks[i]->funSym->symbol_offset) { if(lib->hijacks[i]->funSym->flags & ZZT_FLAG_DYNAMIC) { /* the symbol is in a relocated binary (ie. compiled with * -fPIE. We need to shift the base address. */ lib->hijacks[i]->funSym->section_addr = lib->hijacks[i]->funSym->section_addr + binary->baseaddr; } // Replacing symbol only when the symbol is not in a dynamic library if (hijack(binary->binary, child, lib->hijacks[i]->funSym, lib->hijacks[i]->origSym, lib->hijacks[i]->replSym) < 0) { fprintf(stderr, "Failed to install hijack of symbol %s\n", lib->hijacks[i]->function); } else { nb_installed ++; pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "Function %s instrumented.\n", lib->hijacks[i]->function); } } } } } #endif return nb_installed; } int pptrace_run(void *bin, char **argv, char **envp) { pptrace_clear_error(); if (!bin) { pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "failed!\n"); pptrace_error("Invalid argument"); return -1; } pptrace_internal_binary* binary = (pptrace_internal_binary*) bin; #if ENABLE_BINARY_INSTRUMENTATION trace_set_bits(get_binary_bits(binary->binary)); #endif pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "Running binary %s... ", binary->name); pid_t child = pptrace_launch_preload(binary->name, argv, envp, binary->first, (binary->debugger != NULL) ? 1 : 0); if (child <= 0) { pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "failed!\n"); pptrace_error("Failed to run binary %s", binary->name); pptrace_free_binary(binary); return -1; } pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "ok (pid = %d)\n", child); pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "Getting the binary base address\n"); if (pptrace_get_base_address(child, binary)) { pptrace_error("Failed to get the base address of the binary, exiting after detaching child process..."); pptrace_free_binary(binary); return -1; } pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "Getting libraries' addresses\n"); if (pptrace_wait_libraries(child, binary)) { pptrace_error( "Failed to wait for open of the library, exiting after detaching child process..."); pptrace_free_binary(binary); return -1; } pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "Installing hijacks\n"); if (pptrace_install_hijacks(child, binary) < 0) { trace_detach(child); pptrace_error( "Failed to install hijacks, exiting after detaching child process..."); pptrace_free_binary(binary); return -1; } if (binary->debugger != NULL) { pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "Giving the control to the debugger %s\n", binary->debugger[0]); char pid[10]; int i; snprintf(pid, 10, "%d", child); pid[9] = 0; for (i = 0; binary->debugger[i] != NULL; i++) { if (strcmp(binary->debugger[i], "{pid}") == 0) { binary->debugger[i] = pid; } else if (strcmp(binary->debugger[i], "{name}") == 0) { binary->debugger[i] = binary->name; } } char *debugger = get_program_path(binary->debugger[0]); if (debugger == NULL) { pptrace_fubar("debugger %s was not found!", binary->debugger[0]); } trace_detach(child); execve(debugger, binary->debugger, envp); pptrace_fubar("failed to launch debugger!"); } else { pptrace_free_binary(binary); pptrace_debug(PPTRACE_DEBUG_LEVEL_INFO, "Detaching and waiting the end of the process\n"); trace_detach(child); trace_wait(child); } return 0; } eztrace-1.1-7/src/PaxHeaders.7332/core0000644000000000000000000000013213171135477014302 xustar0030 mtime=1508162367.841916748 30 atime=1508162372.166294941 30 ctime=1508162367.841916748 eztrace-1.1-7/src/core/0000755000175000017500000000000013171135477015546 5ustar00trahaytrahay00000000000000eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_array.c0000644000000000000000000000013213020610460017335 xustar0030 mtime=1480790320.360264651 30 atime=1508138883.848117021 30 ctime=1508162367.821915002 eztrace-1.1-7/src/core/eztrace_array.c0000644000175000017500000000252613020610460020531 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (c) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #include #include #include #include "eztrace_array.h" #define DEFAULT_PREALLOC 64 /* initialize an array */ void eztrace_array_create(struct eztrace_array_t* p_array, unsigned item_size, unsigned nb_prealloc) { p_array->item_size = item_size; p_array->nb_items = 0; p_array->values = malloc(item_size * nb_prealloc); p_array->nb_allocated = nb_prealloc; } /* free an array */ void eztrace_array_free(struct eztrace_array_t* p_array) { assert(p_array); free(p_array->values); } /* return a new item of an array (for a specific container) */ void* eztrace_array_new_value(struct eztrace_array_t* p_array) { assert(p_array); if (p_array->nb_items >= p_array->nb_allocated) { /* expand the buffer */ p_array->nb_allocated *= 2; if (!p_array->nb_allocated) p_array->nb_allocated = DEFAULT_PREALLOC; void * ptr = realloc(p_array->values, p_array->item_size * p_array->nb_allocated); if(!ptr) { fprintf(stderr, "In %s: cannot allocate enough memory. Aborting.\n", __FUNCTION__); abort(); } p_array->values = ptr; } p_array->nb_items++; return ITH_VALUE(p_array->nb_items - 1, p_array) ; } eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_stats_core.h0000644000000000000000000000013213020610460020372 xustar0030 mtime=1480790320.360264651 30 atime=1508138883.828116521 30 ctime=1508162367.817914652 eztrace-1.1-7/src/core/eztrace_stats_core.h0000644000175000017500000001024713020610460021565 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef EZTRACE_STATS_CORE_H #define EZTRACE_STATS_CORE_H #include "eztrace_convert.h" void eztrace_stats_set_output_dir(const char*path); const char* eztrace_stats_get_output_dir(); /* This defines a hierarchical counter mechanism that permits to summarize * counters in a hierarchical way: a counter is maintained for each thread/process/whatever. * Example of output: CT_Process #0 -- Total: 43812.000000 MPI: 20464.000000 OpenMP: 23348.000000 P#0_T#3923150688 -- Total: 10832.000000 MPI: 5370.000000 OpenMP: 5462.000000 P#0_T#3733358336 -- Total: 10321.000000 MPI: 4741.000000 OpenMP: 5580.000000 P#0_T#3724965632 -- Total: 15568.000000 MPI: 7082.000000 OpenMP: 8486.000000 P#0_T#3715507968 -- Total: 7091.000000 MPI: 3271.000000 OpenMP: 3820.000000 */ /* Each counter contains a vector of double (in the example, the vector contains ) * for each eztrace_container. */ typedef uint32_t eztrace_counter_id; typedef struct eztrace_container_t* p_eztrace_container; /* Create a new counter whose id is counter_id. This counter contains vectors that consist in * vector_size items. The names of each of the vector item are stores in names */ void attach_counter(eztrace_counter_id counter_id, unsigned vector_size, char**names); /* Allocate counters in a newly created container */ void counters_new_container(p_eztrace_container p_cont); /* Return a pointer to the vector item #index from the counter #counter_id of a specific container */ double* get_counter(p_eztrace_container container, eztrace_counter_id counter_id, unsigned index); /* Print the values of a specific counter */ void print_counters(eztrace_counter_id id); /* Add /value/ to a counter for the current thread */ static inline void counter_add(uint32_t counter_id, uint32_t module_id, double value) { double* v = get_counter(GET_THREAD_CONTAINER(CUR_INDEX, CUR_THREAD_ID), counter_id, module_id); if (v) { (*v) += value; } } /* define a 'generic' counter that counts min/max/average */ #define STAT_COUNTER_T(type) \ struct stat_##type##_counter_t { \ type sum; \ type min; \ type max; \ } #define stat_counter_t(type) struct stat_##type##_counter_t /* define uint64_t counters */ STAT_COUNTER_T(uint64_t); /* define double counters */ STAT_COUNTER_T(double); /* initialize a double counter */ #define __init_double_stat_counter(counter) \ { \ ((struct stat_double_counter_t* ) counter)->sum = 0; \ ((struct stat_double_counter_t* ) counter)->min = DBL_MAX; \ ((struct stat_double_counter_t* ) counter)->max = DBL_MIN; \ } /* initialize a uint64_t counter */ #define __init_uint64_t_stat_counter(counter) \ { \ ((struct stat_uint64_t_counter_t*)counter)->sum = 0; \ ((struct stat_uint64_t_counter_t*)counter)->min = UINT64_MAX; \ ((struct stat_uint64_t_counter_t*)counter)->max = 0; \ } /* initialize a counter */ #define __init_stat_counter(type, counter) \ { \ stat_counter_t(type) * _c_ = (stat_counter_t(type) *) (counter); \ __init_##type##_stat_counter(_c_); \ } /* update a counter */ #define __update_stat_counter(type, counter, new_value) \ { \ stat_counter_t(type) * _c_ = (stat_counter_t(type) *) (counter); \ _c_ -> sum += (new_value); \ if((new_value) < _c_->min) \ _c_->min = (new_value); \ if((new_value) > _c_->max) \ _c_->max = (new_value); \ } /* reduce a counter */ #define __reduce_stat_counter(type, src_counter, dest_counter) \ { \ stat_counter_t(type) *_src_ = (stat_counter_t(type) *)(src_counter); \ stat_counter_t(type) *_dest_ = (stat_counter_t(type) *)(dest_counter); \ \ _dest_->sum += _src_->sum; \ \ if(_src_->min < _dest_->min) \ _dest_->min = _src_->min; \ \ if(_src_->max > _dest_->max) \ _dest_->max = _src_->max; \ } #endif /* EZTRACE_STATS_CORE_H */ eztrace-1.1-7/src/core/PaxHeaders.7332/ezt_demangle.h0000644000000000000000000000013213020610460017145 xustar0030 mtime=1480790320.360264651 30 atime=1508138884.304128409 30 ctime=1508162367.825915351 eztrace-1.1-7/src/core/ezt_demangle.h0000644000175000017500000000026713020610460020341 0ustar00trahaytrahay00000000000000#ifndef EZT_DEMANGLE_H #define EZT_DEMANGLE_H /* demangle a string into a newly allocated buffer. */ const char* ezt_demangle(const char* mangled_str); #endif /* EZT_DEMANGLE_H */ eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_litl_packed.h0000644000000000000000000000013213020610460020477 xustar0030 mtime=1480790320.360264651 30 atime=1508138883.424106431 30 ctime=1508162367.793912556 eztrace-1.1-7/src/core/eztrace_litl_packed.h0000644000175000017500000002622213020610460021672 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #ifndef EZTRACE_LITL_PACKED_H #define EZTRACE_LITL_PACKED_H #include "eztrace.h" #include "litl_types.h" #include "litl_write.h" #include "litl_read.h" #define CHECK_RETVAL_PACKED(f) \ do { \ void* retval = NULL; \ if(__ezt_trace.status == ezt_trace_status_running || \ __ezt_trace.status == ezt_trace_status_being_finalized || \ __ezt_trace.status == ezt_trace_status_paused ) { \ f; \ if(! retval){ \ fprintf(stderr, "[EZTrace] The buffer for recording events is full. Stop recording. The trace will be truncated\n");\ __ezt_trace.status = ezt_trace_status_stopped; \ } \ } \ } while(0) #define EZTRACE_EVENT0_PACKED_UNPROTECTED(code) do { \ EZT_PRINTF(5, "EZTRACE_EVENT0_PACKED(code=%x)\n", code); \ CHECK_RETVAL_PACKED(litl_write_probe_pack_0(__ezt_trace.litl_trace, code, retval)); \ } while(0) #define EZTRACE_EVENT1_PACKED_UNPROTECTED(code, arg1) do { \ EZT_PRINTF(5, "EZTRACE_EVENT1_PACKED(code=%x)\n", code); \ CHECK_RETVAL_PACKED(litl_write_probe_pack_1(__ezt_trace.litl_trace, code, arg1, retval)); \ }while(0) #define EZTRACE_EVENT2_PACKED_UNPROTECTED(code, arg1, arg2) do { \ EZT_PRINTF(5, "EZTRACE_EVENT2_PACKED(code=%x)\n", code); \ CHECK_RETVAL_PACKED(litl_write_probe_pack_2(__ezt_trace.litl_trace, code, arg1, arg2, retval)); \ } while(0) #define EZTRACE_EVENT3_PACKED_UNPROTECTED(code, arg1, arg2, arg3) do { \ EZT_PRINTF(5, "EZTRACE_EVENT3_PACKED(code=%x)\n", code); \ CHECK_RETVAL_PACKED(litl_write_probe_pack_3(__ezt_trace.litl_trace, code, arg1, arg2, arg3, retval)); \ } while(0) #define EZTRACE_EVENT4_PACKED_UNPROTECTED(code, arg1, arg2, arg3, arg4) do { \ EZT_PRINTF(5, "EZTRACE_EVENT4_PACKED(code=%x)\n", code); \ CHECK_RETVAL_PACKED(litl_write_probe_pack_4(__ezt_trace.litl_trace, code, arg1, arg2, arg3, arg4, retval)); \ } while(0) #define EZTRACE_EVENT5_PACKED_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5) do { \ EZT_PRINTF(5, "EZTRACE_EVENT5_PACKED(code=%x)\n", code); \ CHECK_RETVAL_PACKED(litl_write_probe_pack_5(__ezt_trace.litl_trace, code, arg1, arg2, arg3, arg4, arg5, retval)); \ } while(0) #define EZTRACE_EVENT6_PACKED_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6) do { \ EZT_PRINTF(5, "EZTRACE_EVENT6_PACKED(code=%x)\n", code); \ CHECK_RETVAL_PACKED(litl_write_probe_pack_6(__ezt_trace.litl_trace, code, arg1, arg2, arg3, arg4, arg5, arg6, retval)); \ } while(0) #define EZTRACE_EVENT7_PACKED_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7) do { \ EZT_PRINTF(5, "EZTRACE_EVENT7_PACKED(code=%x)\n", code); \ CHECK_RETVAL_PACKED(litl_write_probe_pack_7(__ezt_trace.litl_trace, code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, retval)); \ } while(0) #define EZTRACE_EVENT8_PACKED_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) do { \ EZT_PRINTF(5, "EZTRACE_EVENT8_PACKED(code=%x)\n", code); \ CHECK_RETVAL_PACKED(litl_write_probe_pack_8(__ezt_trace.litl_trace, code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, retval)); \ } while(0) #define EZTRACE_EVENT9_PACKED_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) do { \ EZT_PRINTF(5, "EZTRACE_EVENT9_PACKED(code=%x)\n", code); \ CHECK_RETVAL_PACKED(litl_write_probe_pack_9(__ezt_trace.litl_trace, code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, retval)); \ } while(0) #define GET_PARAM_PACKED_1(p_ev, arg1) do { \ litl_read_get_param_1(p_ev, arg1); \ } while(0) #define GET_PARAM_PACKED_2(p_ev, arg1, arg2) do { \ litl_read_get_param_2(p_ev, arg1, arg2); \ } while(0) #define GET_PARAM_PACKED_3(p_ev, arg1, arg2, arg3) do { \ litl_read_get_param_3(p_ev, arg1, arg2, arg3); \ } while(0) #define GET_PARAM_PACKED_4(p_ev, arg1, arg2, arg3, arg4) do { \ litl_read_get_param_4(p_ev, arg1, arg2, arg3, arg4); \ } while(0) #define GET_PARAM_PACKED_5(p_ev, arg1, arg2, arg3, arg4, arg5) do { \ litl_read_get_param_5(p_ev, arg1, arg2, arg3, arg4, arg5); \ } while(0) #define GET_PARAM_PACKED_6(p_ev, arg1, arg2, arg3, arg4, arg5, arg6) do { \ litl_read_get_param_6(p_ev, arg1, arg2, arg3, arg4, arg5, arg6); \ } while(0) #define GET_PARAM_PACKED_7(p_ev, arg1, arg2, arg3, arg4, arg5, arg6, arg7) do { \ litl_read_get_param_7(p_ev, arg1, arg2, arg3, arg4, arg5, arg6, arg7); \ } while(0) #define GET_PARAM_PACKED_8(p_ev, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) do { \ litl_read_get_param_8(p_ev, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); \ } while(0) #define GET_PARAM_PACKED_9(p_ev, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) do { \ litl_read_get_param_9(p_ev, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); \ } while(0) #define EZTRACE_EVENT_FORCE_RECORD_PACKED_0(code) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ EZTRACE_EVENT0_PACKED_UNPROTECTED(code); \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT_FORCE_RECORD_PACKED_1(code, arg1) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ EZTRACE_EVENT1_PACKED_UNPROTECTED(code, arg1); \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT_FORCE_RECORD_PACKED_2(code, arg1, arg2) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ EZTRACE_EVENT2_PACKED_UNPROTECTED(code, arg1, arg2); \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT_FORCE_RECORD_PACKED_3(code, arg1, arg2, arg3) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ EZTRACE_EVENT3_PACKED_UNPROTECTED(code, arg1, arg2, arg3); \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT_FORCE_RECORD_PACKED_4(code, arg1, arg2, arg3, arg4) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ EZTRACE_EVENT4_PACKED_UNPROTECTED(code, arg1, arg2, arg3, arg4); \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT_FORCE_RECORD_PACKED_5(code, arg1, arg2, arg3, arg4, arg5) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ EZTRACE_EVENT5_PACKED_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5); \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT_FORCE_RECORD_PACKED_6(code, arg1, arg2, arg3, arg4, arg5, arg6) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ EZTRACE_EVENT6_PACKED_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6); \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT_FORCE_RECORD_PACKED_7(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ EZTRACE_EVENT7_PACKED_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7); \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT_FORCE_RECORD_PACKED_8(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ EZTRACE_EVENT8_PACKED_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT_FORCE_RECORD_PACKED_9(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ EZTRACE_EVENT9_PACKED_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT_PACKED_0(code) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ if (__ezt_trace.status != ezt_trace_status_paused) { \ EZTRACE_EVENT0_PACKED_UNPROTECTED(code); \ } \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT_PACKED_1(code, arg1) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ if (__ezt_trace.status != ezt_trace_status_paused) { \ EZTRACE_EVENT1_PACKED_UNPROTECTED(code, arg1); \ } \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT_PACKED_2(code, arg1, arg2) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ if (__ezt_trace.status != ezt_trace_status_paused) { \ EZTRACE_EVENT2_PACKED_UNPROTECTED(code, arg1, arg2); \ } \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT_PACKED_3(code, arg1, arg2, arg3) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ if (__ezt_trace.status != ezt_trace_status_paused) { \ EZTRACE_EVENT3_PACKED_UNPROTECTED(code, arg1, arg2, arg3); \ } \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT_PACKED_4(code, arg1, arg2, arg3, arg4) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ if (__ezt_trace.status != ezt_trace_status_paused) { \ EZTRACE_EVENT4_PACKED_UNPROTECTED(code, arg1, arg2, arg3, arg4); \ } \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT_PACKED_5(code, arg1, arg2, arg3, arg4, arg5) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ if (__ezt_trace.status != ezt_trace_status_paused) { \ EZTRACE_EVENT5_PACKED_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5); \ } \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT_PACKED_6(code, arg1, arg2, arg3, arg4, arg5, arg6) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ if (__ezt_trace.status != ezt_trace_status_paused) { \ EZTRACE_EVENT6_PACKED_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6); \ } \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT_PACKED_7(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ if (__ezt_trace.status != ezt_trace_status_paused) { \ EZTRACE_EVENT7_PACKED_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7); \ } \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT_PACKED_8(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ if (__ezt_trace.status != ezt_trace_status_paused) { \ EZTRACE_EVENT8_PACKED_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); \ } \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT_PACKED_9(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ if (__ezt_trace.status != ezt_trace_status_paused) { \ EZTRACE_EVENT9_PACKED_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); \ } \ EZTRACE_PROTECT_OFF(); \ } \ } #endif /* EZTRACE_LITL_PACKED_H */ eztrace-1.1-7/src/core/PaxHeaders.7332/function.pm0000644000000000000000000000013113114024302016516 xustar0029 mtime=1496328386.09998249 30 atime=1508138919.172999231 30 ctime=1508162367.841916748 eztrace-1.1-7/src/core/function.pm0000644000175000017500000002173413114024302017715 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis # See COPYING in top-level directory. package Function; use warnings; use strict; use Carp; #contructor sub new { my ($classe) = @_; $classe = ref($classe) || $classe; my $this = {}; bless($this, $classe); $this->{RET_TYPE}="null"; $this->{FNAME}="null"; $this->{ARGS}=[]; $this->{NB_ARGS}=0; $this->{ALREADY_CALLED}=0; $this->{TYPE}="LIBRARY"; $this->{ENTRY_CODE}= 0; $this->{EXIT_CODE}= 0; $this->{BODY_BEGIN}=" FUNCTION_ENTRY\n"; $this->{BODY_FCALL}=""; $this->{BODY_END}=""; $this->{USE_VARGS}=0; return $this; } sub add_body { my ($this, $new_line) = @_; if($this->{ALREADY_CALLED} == 0) { $this->{BODY_BEGIN}.="\t${new_line}"; } else { $this->{BODY_END}.="\t${new_line}"; } } sub convert_declare_parameters { my ($this, $code) = @_; my $nb_param = get_arg_num($this); $nb_param-- if ( $this->{USE_VARGS} ); if($nb_param > 4) { $nb_param = 4; } my $string = ""; if ($this->{TYPE} eq "LIBRARY") { my $i; my $get_param_str="GET_PARAM_PACKED_".$nb_param."(CUR_EV, "; for($i=0; $i<$nb_param; $i++) { # declare a variable $string .= get_arg_type($this, $i). " ".get_arg_name($this, $i). ";\n" ; # put the i_th parameter of the event in the variable $get_param_str.= get_arg_name($this, $i); if($i+1 < $nb_param) { #there is another parameter after this one $get_param_str .= ", "; } } $get_param_str .= ");\n"; if($nb_param > 0) { $string .= $get_param_str; } } return $string; } sub add_event { my ($this, $code) = @_; my $nb_param = get_arg_num($this); if($this->{ALREADY_CALLED} == 0) { $this->{ENTRY_CODE}= $code; } else { $this->{EXIT_CODE}= $code; } $nb_param-- if ( $this->{USE_VARGS} ); if($nb_param > 4) { $nb_param = 4; } my $string = ""; if ($this->{TYPE} eq "LIBRARY") { $string .= "EZTRACE_EVENT_PACKED_${nb_param} ($code"; my $i; for($i=0; $i<$nb_param; $i++) { $string .= ", "; $string .= get_arg_name($this, $i); } $string .= ");\n"; } add_body($this, $string); } sub create_counter { my $ret = ""; my ($this, $symb_name) = @_; $ret = "int ".$symb_name."_counter = 0;\n"; return $ret; } sub create_intercept { my ($this) = @_; my $ret = ""; if ($this->{TYPE} eq "LIBRARY") { $ret = "INTERCEPT2(\"".$this->{FNAME}."\", lib".$this->{FNAME}.")\n"; } return $ret; } # Create a string that has the following pattern: # asprintf(&varname, "arg1=%x, arg2=%x", arg1, arg2); # return the generated string sub create_asprintf { my ($this, $output_var_name) = @_; my $format = ""; my $args = ""; my $i; my $nb_param = $this->get_arg_num; # construct the format and args at the same time for($i=0; $i<$nb_param; $i++) { my $var_name = $this->get_arg_name($i); my $index = $i + 1; $args .= ", GET_PARAM(CUR_EV, ".$index.")"; $format .= "$var_name = %x"; my $num_remaining_args=$nb_param - $i; if($num_remaining_args>1) { $format .= ", "; } } my $ret = "asprintf(&${output_var_name}, \"${format}\" ${args} );"; return $ret; } sub add_fcall { my ($this) = @_; if($this->{ALREADY_CALLED} != 0) { print "Error: calling twice function ".$this->{FNAME}."\n"; exit 1; } $this->{ALREADY_CALLED} = 1; if ($this->{TYPE} eq "LIBRARY") { if (index($this->{RET_TYPE}, "void") == -1){ $this->{BODY_FCALL} .= "\t".$this->{RET_TYPE}." ret = lib".$this->{FNAME}." ("; } else { $this->{BODY_FCALL} .= "\tlib".$this->{FNAME}." ("; } my $i; my $array_size = get_arg_num($this); for($i=0; $i<$array_size; $i++) { $this->{BODY_FCALL} .= get_arg_name($this, $i); my $num_remaining_args=$array_size - $i; if($num_remaining_args>1) { $this->{BODY_FCALL} .= ", "; } } $this->{BODY_FCALL} .= ");\n"; } } # Create the callback string (type (*libfname)(arg1, arg2...)) # returns the string to insert sub create_callback { my ($this) = @_; # create the ' (*lib) (' string my $ret = $this->{RET_TYPE}." (*lib".$this->{FNAME}.") ("; my $i; my $nb_arg = get_arg_num($this); # add the parameters to the string for($i=0; $i<$nb_arg; $i++) { $ret .= get_arg_type($this, $i)." ".get_arg_name($this, $i); my $num_remaining_args=$nb_arg - $i; if($num_remaining_args>1) { $ret .=", "; } } # finalize the string $ret .= ");\n"; return $ret; } # Create the function string (type fname(arg1, arg2...)) # returns the string to insert sub create_function { my ($this) = @_; # create the ' (' string my $ret = $this->{RET_TYPE}." ".$this->{FNAME}." ("; my $i; my $nb_arg = get_arg_num($this); # add the parameters to the string for($i=0; $i<$nb_arg; $i++) { $ret .= get_arg_type($this, $i)." ".get_arg_name($this, $i); my $num_remaining_args=$nb_arg - $i; if($num_remaining_args>1) { $ret .=", "; } } # finalize the string $ret .= ") {\n"; # Add block for va_arg parameters if ( $this->{USE_VARGS} ) { $ret .= "\tva_list myargs;\n"; $ret .= "\tva_start(myargs, ".$this->get_arg_name($nb_arg-2).");\n"; } #Needed for symbols called before the plugin is properly initialized $this->{BODY_BEGIN} .= "\tif (!lib".$this->{FNAME}.") lib".$this->{FNAME}; $this->{BODY_BEGIN} .= ' = dlsym(RTLD_NEXT, "'.$this->{FNAME}.'"'.");\n"; #Test whether it is needed to perform a backtrace recording my $counter_name = $this->{FNAME}."_counter"; $this->{BODY_BEGIN} .= "\telse if (module_initialized) {\n"; $this->{BODY_BEGIN} .= "#if RECORD_BACKTRACE\n"; $this->{BODY_BEGIN} .= "\t\tif (".$counter_name." % 10000 == 0) {\n"; $this->{BODY_BEGIN} .= "\t\t\t".$counter_name."++; \n"; #It might be better to generate the line below automatically? $this->{BODY_BEGIN} .= "\t\t\tEZTRACE_EVENT_PACKED_0(EZTRACE_BACKTRACE);\n"; $this->{BODY_BEGIN} .= "\t\t\trecord_backtrace();\n"; $this->{BODY_BEGIN} .= "\t\t} else {\n"; $this->{BODY_BEGIN} .= "\t\t\t".$counter_name."++; \n"; $this->{BODY_BEGIN} .= "\t\t}\n"; $this->{BODY_BEGIN} .= "#endif\n"; $this->{BODY_BEGIN} .= "\t}\n"; $ret .= $this->{BODY_BEGIN}; if($this->{ALREADY_CALLED} == 0) { $this->add_fcall(); } $ret .= $this->{BODY_FCALL}; $ret .= $this->{BODY_END}; if (index($this->{RET_TYPE},"void") == -1){ $ret .="\treturn ret;\n"; } $ret .="}\n"; return $ret; } # return the number of parameters for the function sub get_arg_num { my ($this) = @_; return $this->{NB_ARGS}; } # return the ith parameter type # params # $arg_num i sub get_arg_type { my ($this, $arg_num) = @_; my @args = @{$this->{ARGS}}; my @ith_arg = @{$args[$arg_num]}; return $ith_arg[0]; } # return the ith parameter name # params # $arg_num i sub get_arg_name { my ($this, $arg_num) = @_; my @args = @{$this->{ARGS}}; my @ith_arg = @{$args[$arg_num]}; return $ith_arg[1]; } sub get_fname { my ($this) = @_; return $this->{FNAME}; } # print information on the function for debugging # params # $arg_num i sub print { my ($this) = @_; printf "\tret type = ".$this->{RET_TYPE}."\n"; printf "\tfname = ".$this->{FNAME}."\n"; my $i; for($i=0; $i<$this->get_arg_num(); $i++) { print "type '".$this->get_arg_type($i)."'\t"; print "name '".$this->get_arg_name($i)."'\n"; } } # change the type returned by the function # params # $ret_type return type sub set_ret_type { my ($this, $ret_type) = @_; $this->{RET_TYPE} = $ret_type; } # change the function name # params # $fname function name sub set_fname( $$ ) { my ($this, $fname) = @_; $this->{FNAME} = $fname; } # change the function name # params # $fname function name sub set_type( $$ ) { my ($this, $type) = @_; $this->{TYPE} = $type; } # add a parameter to the function # params # $new_arg_type parameter type # $new_arg_name parameter name sub add_arg( $$$ ) { my ($this, $new_arg_type, $new_arg_name) = @_; my @new_arg = [$new_arg_type, $new_arg_name]; push ((@{$this->{ARGS}}), @new_arg); $this->{NB_ARGS}++; $this->{USE_VARGS} = 1 if ($new_arg_name eq "..." ); } # initialize the current library sub lib_init { my ($libname, @func_tab) = @_; my $ret="START_INTERCEPT\n"; foreach (@func_tab){ $ret .= "\t".create_intercept($_); } $ret .="END_INTERCEPT\n"; $ret .= "static void __".$libname."_init (void) __attribute__ ((constructor));\n"; $ret .= "static void __".$libname."_init (void) {\n"; $ret .= "#ifdef EZTRACE_AUTOSTART\n"; $ret .= "\teztrace_start ();\n"; $ret .= "#endif\n"; $ret .= "}\n"; return $ret; } sub lib_conclude { my ($libname) = @_; my $ret = "static void __".$libname."_conclude (void) __attribute__ ((destructor));\n"; $ret .= "static void __".$libname."_conclude (void){\n"; $ret .= "\teztrace_stop ();\n"; $ret .="}\n"; return $ret; } # end of the module 1; __END__ eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_hierarchical_array.h0000644000000000000000000000013213020610460022040 xustar0030 mtime=1480790320.360264651 30 atime=1508138884.212126112 30 ctime=1508162367.817914652 eztrace-1.1-7/src/core/eztrace_hierarchical_array.h0000644000175000017500000000475113020610460023236 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #ifndef EZTRACE_HIERARCHICAL_ARRAY_H #define EZTRACE_HIERARCHICAL_ARRAY_H #include #include "eztrace_convert.h" #include "eztrace_stats_core.h" struct hierarchical_array; struct hierarchical_array_data { struct hierarchical_array *p_array; struct hierarchical_array_data *next; unsigned nb_allocated; unsigned nb_items; void* values; }; struct hierarchical_array { eztrace_counter_id id; unsigned item_size; unsigned nb_items; unsigned nb_allocated; struct hierarchical_array_data *first; struct hierarchical_array_data *last; }; /* return the ith item of a hierarchical array */ static inline void* ITH_ITEM(int index, struct hierarchical_array* p_array) { unsigned i = index; /* todo: start from the end ? */ struct hierarchical_array_data *p_data = p_array->first; while (p_data) { if (i >= p_data->nb_allocated) { /* not in this array, go to the next one */ i = i - p_data->nb_allocated; p_data = p_data->next; } else { return (void*) (p_data->values + (i * p_array->item_size)); } } assert(1); return NULL; } /* Create a new counter whose id is counter_id. This counter contains vectors that consist in * vector_size items. The names of each of the vector item are stores in names */ void hierarchical_array_attach(eztrace_counter_id counter_id, unsigned item_size); /* Allocate counters in a newly created container */ void hierarchical_array_new_container(p_eztrace_container p_cont); /* return the number of items in the array (for a specific container) */ unsigned hierarchical_array_size(p_eztrace_container p_cont, eztrace_counter_id counter_id); /* return the ith items of an array (for a specific container) */ void* hierarchical_array_get_item(p_eztrace_container p_cont, eztrace_counter_id counter_id, unsigned index); /* return a new item of an array (for a specific container) */ void* hierarchical_array_new_item(p_eztrace_container p_cont, eztrace_counter_id counter_id); struct hierarchical_array* hierarchical_array_find( eztrace_counter_id counter_id, p_eztrace_container p_cont); #endif /* EZTRACE_HIERARCHICAL_ARRAY_H */ eztrace-1.1-7/src/core/PaxHeaders.7332/pthread_core.c0000644000000000000000000000013213143047722017154 xustar0030 mtime=1502367698.660456018 30 atime=1508138883.288103035 30 ctime=1508162367.813914303 eztrace-1.1-7/src/core/pthread_core.c0000644000175000017500000000635613143047722020355 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE 1 /* or _BSD_SOURCE or _SVID_SOURCE */ #define _REENTRANT #include #include #include #include "ev_codes.h" #include "eztrace.h" //#define VERBOSE 1 #ifdef VERBOSE #define FUNCTION_NAME fprintf(stderr, "Calling [%s]\n", __FUNCTION__) #else #define FUNCTION_NAME (void) 0 #endif static volatile int __pthread_core_initialized = 0; int (*libpthread_create) (pthread_t * thread, const pthread_attr_t * attr, void *(*start_routine) (void *), void *arg); int (*libpthread_join) (pthread_t th, void **thread_return); void (*libpthread_exit) (void *thread_return); /* this function shall e called by each new thread */ void eztrace_set_alarm(); /* Thread creation/destruction callbacks */ /* Internal structure used for transmitting the function and argument * during pthread_create. */ struct __pthread_create_info_t { void *(*func)(void *); void *arg; }; /* Invoked by pthread_create on the new thread */ static void * __pthread_new_thread(void *arg) { struct __pthread_create_info_t *p_arg = (struct __pthread_create_info_t*) arg; void *(*f)(void *) = p_arg->func; void *__arg = p_arg->arg; free(p_arg); EZTRACE_FORCE_RECORD_EVENT0(EZTRACE_NEW_THREAD); RECORD_HW_COUNTERS(); eztrace_set_alarm(); void *res = (*f)(__arg); EZTRACE_FORCE_RECORD_EVENT0(EZTRACE_END_THREAD); return res; } int pthread_create (pthread_t *__restrict thread, const pthread_attr_t *__restrict attr, void *(*start_routine) (void *), void *__restrict arg) { FUNCTION_NAME; struct __pthread_create_info_t * __args = (struct __pthread_create_info_t*) malloc( sizeof(struct __pthread_create_info_t)); __args->func = start_routine; __args->arg = arg; if (!libpthread_create) INTERCEPT("pthread_create", libpthread_create); /* We do not call directly start_routine since we could not get the actual creation timestamp of * the thread. Let's invoke __pthread_new_thread that will PROF_EVENT the thread and call * start_routine. */ EZTRACE_FORCE_RECORD_EVENT0(EZTRACE_START_THREAD_CREATE); int retval = libpthread_create(thread, attr, __pthread_new_thread, __args); EZTRACE_FORCE_RECORD_EVENT0(EZTRACE_STOP_THREAD_CREATE); return retval; } int pthread_join(pthread_t th, void **thread_return) { FUNCTION_NAME; EZTRACE_FORCE_RECORD_EVENT0(EZTRACE_START_THREAD_JOIN); int ret = libpthread_join(th, thread_return); EZTRACE_FORCE_RECORD_EVENT3(EZTRACE_STOP_THREAD_JOIN, th, thread_return, ret); return ret; } void pthread_exit(void *thread_return) { FUNCTION_NAME; libpthread_exit(thread_return); __builtin_unreachable(); } static void __pthread_core_init(void) __attribute__ ((constructor)); static void __pthread_core_init(void) { INTERCEPT("pthread_create", libpthread_create); INTERCEPT("pthread_join", libpthread_join); INTERCEPT("pthread_exit", libpthread_exit); #ifdef EZTRACE_AUTOSTART eztrace_start (); #endif __pthread_core_initialized = 1; } static void __pthread_core_conclude(void) __attribute__ ((destructor)); static void __pthread_core_conclude(void) { __pthread_core_initialized = 0; eztrace_stop(); } eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_indent_fortran0000644000000000000000000000013213020610460021012 xustar0030 mtime=1480790320.360264651 30 atime=1508138919.172999231 30 ctime=1508162367.841916748 eztrace-1.1-7/src/core/eztrace_indent_fortran0000755000175000017500000000264313020610460022211 0ustar00trahaytrahay00000000000000#!/usr/bin/perl -w use strict; use warnings; #############################################################" package main; sub indent_file( $$ ) { my $input_handle = shift; my $output_handle = shift; my $concatenate=0; my $current_concatenation=""; while(<$input_handle>) { my $currentLine = $_; if($currentLine =~ m/^\s*subroutine.+\(/) { $concatenate=1; $current_concatenation=""; } if($concatenate == 1) { $currentLine=~ s/\n//; $currentLine=~ s/^\s*>//; $currentLine=~ s/^\s*\$//; $currentLine=~ s/^\s+//g; $current_concatenation.=$currentLine; if($currentLine =~ m/\)/) { # end of the subroutine prototype $concatenate=0; $currentLine=$current_concatenation."\n"; } } if($concatenate==0) { printf $output_handle "%s", $currentLine; } } } if(@ARGV < 1) { printf STDERR "Usage: $0 input_file [output_file]\n"; exit 1; } my $output_file; my $input_file=$ARGV[0]; my $input_handle; my $output_handle; if(@ARGV != 2) { $output_handle=*STDOUT; } else { $output_file=$ARGV[1]; open($output_handle, '>', $output_file) or die "Couldn't open $output_file for writing!"; } open($input_handle, '<', $input_file) or die "Couldn't open $input_file for reading!"; indent_file($input_handle, $output_handle); if(@ARGV == 2) { close($output_handle); printf "Output trace: %s\n", $output_file; } close($input_handle); eztrace-1.1-7/src/core/PaxHeaders.7332/input0000644000000000000000000000012613171135477015444 xustar0028 mtime=1508162367.8379164 30 atime=1508162372.166294941 28 ctime=1508162367.8379164 eztrace-1.1-7/src/core/input/0000755000175000017500000000000013171135477016705 5ustar00trahaytrahay00000000000000eztrace-1.1-7/src/core/input/PaxHeaders.7332/example.c.template0000644000000000000000000000013013127366131021117 xustar0030 mtime=1499327577.390774396 30 atime=1508138919.184999532 28 ctime=1508162367.8379164 eztrace-1.1-7/src/core/input/example.c.template0000644000175000017500000000150113127366131022305 0ustar00trahaytrahay00000000000000/* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include "eztrace.h" #include "eztrace_sampling.h" @HEADER_USER@ #include "@HEADER_FILE@" @SAMPLING_FUNCTIONS@ @RECORD_CALLBACKS@ static int module_initialized = 0; @RECORD_COUNTERS@ @RECORD_FUNCTIONS@ START_INTERCEPT @RECORD_INTERCEPTS@ END_INTERCEPT static void __@MODULE@_init (void) __attribute__ ((constructor)); /* Initialize the current library */ static void __@MODULE@_init (void) { DYNAMIC_INTERCEPT_ALL(); /* start event recording */ #ifdef EZTRACE_AUTOSTART eztrace_start (); #endif module_initialized = 1; @POST_INIT@ } static void __@MODULE@_conclude (void) __attribute__ ((destructor)); static void __@MODULE@_conclude (void) { /* stop event recording */ eztrace_stop (); } eztrace-1.1-7/src/core/input/PaxHeaders.7332/example_ev_codes.h.template0000644000000000000000000000013013020610460022760 xustar0030 mtime=1480790320.360264651 30 atime=1508138919.184999532 28 ctime=1508162367.8379164 eztrace-1.1-7/src/core/input/example_ev_codes.h.template0000644000175000017500000000146413020610460024156 0ustar00trahaytrahay00000000000000/* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #ifndef __@MODULE@_EV_CODES_H__ #define __@MODULE@_EV_CODES_H__ /* This file defines the event codes that are used by the example * module. */ #include "ev_codes.h" /* 7-bits event codes prefix. This identifies the module and thus should be * unique. * The 0x0? prefix is reserved for eztrace internal use. Thus you can * use any prefix between 0x80 and 0xff. */ #define @MODULE@_EVENTS_ID USER_MODULE_ID(0x@MODULE_ID@) #define @MODULE@_PREFIX (@MODULE@_EVENTS_ID << NB_BITS_EVENTS) /* Define various event codes used by the example module * The 2 most significant bytes should correspond to the module id, * as below: */ @EVENT_DEFINITION@ #endif /* __@MODULE@_EV_CODES_H__ */ eztrace-1.1-7/src/core/input/PaxHeaders.7332/Makefile.template0000644000000000000000000000013013171135356020762 xustar0030 mtime=1508162286.735036649 30 atime=1508162287.399090933 28 ctime=1508162367.8379164 eztrace-1.1-7/src/core/input/Makefile.template0000644000175000017500000000216313171135356022155 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis # See COPYING in top-level directory. prefix=/home/trahay/Soft/opt/eztrace/master/build/../install exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include BIN = libeztrace-convert-@MODULE@.so libeztrace-@MODULE@.so libeztrace-autostart-@MODULE@.so ldflags=$(LDFLAGS) @CUSTOM_LDFLAGS@ -L${libdir} cflags=$(CFLAGS) @CUSTOM_CFLAGS@ -I${includedir} CONVERT_LDFLAGS=@CONVERT_LDFLAGS@ RECORD_LDFLAGS=@RECORD_LDFLAGS@ all: $(BIN) libeztrace-convert-@MODULE@.so: eztrace_convert_@MODULE@.c @MODULE@_ev_codes.h $(CC) --shared -o libeztrace-convert-@MODULE@.so eztrace_convert_@MODULE@.c -fPIC $(cflags) $(ldflags) $(CONVERT_LDFLAGS) -ldl libeztrace-@MODULE@.so: @MODULE@.c @MODULE@_ev_codes.h $(CC) --shared -o libeztrace-@MODULE@.so @MODULE@.c -fPIC $(cflags) $(ldflags) -Wl,-Bsymbolic $(RECORD_LDFLAGS) -ldl libeztrace-autostart-@MODULE@.so: @MODULE@.c @MODULE@_ev_codes.h $(CC) --shared -o libeztrace-autostart-@MODULE@.so @MODULE@.c -fPIC $(cflags) $(ldflags) -Wl,-Bsymbolic $(RECORD_LDFLAGS) -ldl -DEZTRACE_AUTOSTART clean: rm -f $(BIN) eztrace-1.1-7/src/core/input/PaxHeaders.7332/eztrace_convert_example.c.template0000644000000000000000000000013013114030143024357 xustar0030 mtime=1496330339.264811402 30 atime=1508138919.184999532 28 ctime=1508162367.8379164 eztrace-1.1-7/src/core/input/eztrace_convert_example.c.template0000644000175000017500000001245713114030143025561 0ustar00trahaytrahay00000000000000/* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #include #include #include "eztrace_convert.h" @HEADER_USER@ #include "@HEADER_FILE@" int eztrace_convert_@MODULE@_init(); int handle_@MODULE@_events(eztrace_event_t *ev); int handle_@MODULE@_stats(eztrace_event_t *ev); void print_@MODULE@_stats(); @CONVERT_FUNCTIONS_PROTOTYPES@ /* thread-specific structure */ struct @MODULE@_thread_info_t { struct thread_info_t *p_thread; /* TO COMPLETE: You can add per-thread counters here */ }; static struct @MODULE@_thread_info_t *__register_thread_hook( struct thread_info_t *p_thread) { struct @MODULE@_thread_info_t *ptr = (struct @MODULE@_thread_info_t*) malloc( sizeof(struct @MODULE@_thread_info_t)); ptr->p_thread = p_thread; /* TO COMPLETE: If you added per-thread counters, initialize them here*/ /* add the hook in the thread info structure */ ezt_hook_list_add(&ptr->p_thread->hooks, ptr, (uint8_t) @MODULE@_EVENTS_ID); return ptr; } #define INIT_@MODULE@_THREAD_INFO(p_thread, var) \ struct @MODULE@_thread_info_t *var = (struct @MODULE@_thread_info_t*) \ ezt_hook_list_retrieve_data(&p_thread->hooks, (uint8_t)@MODULE@_EVENTS_ID); \ if(!(var)) { \ var = __register_thread_hook(p_thread); \ } /* Constructor of the plugin. * This function registers the current module to eztrace_convert */ struct eztrace_convert_module @MODULE@_module; void libinit(void) __attribute__ ((constructor)); void libinit(void) { @MODULE@_module.api_version = EZTRACE_API_VERSION; /* Specify the initialization function. * This function will be called once all the plugins are loaded * and the trace is started. * This function usually declared StateTypes, LinkTypes, etc. */ @MODULE@_module.init = eztrace_convert_@MODULE@_init; /* Specify the function to call for handling an event */ @MODULE@_module.handle = handle_@MODULE@_events; /* Specify the function to call for handling an event when * eztrace_stats is called */ @MODULE@_module.handle_stats = handle_@MODULE@_stats; /* Specify the function to call for printinf statistics */ @MODULE@_module.print_stats = print_@MODULE@_stats; /* Specify the module prefix */ @MODULE@_module.module_prefix = @MODULE@_EVENTS_ID; asprintf(&@MODULE@_module.name, "@MODULE@"); asprintf(&@MODULE@_module.description, @MODULE_DESC@); @MODULE@_module.token.data = &@MODULE@_module; /* Register the module to eztrace_convert */ eztrace_convert_register_module(&@MODULE@_module); //printf("module @MODULE@ loaded\n"); } void libfinalize(void) __attribute__ ((destructor)); void libfinalize(void) { //printf("unloading module @MODULE@\n"); } /* * This function will be called once all the plugins are loaded * and the trace is started. * This function usually declared StateTypes, LinkTypes, etc. */ int eztrace_convert_@MODULE@_init() { @CONVERT_INIT@ } /* This function process the EZTRACE_BACKTRACE event that * is recorded once in a while */ int handle_backtrace() { /* wait for the next event. It should be EZTRACE_BACKTRACE_DEPTH */ wait_for_an_event_in_cur_thread(EZTRACE_BACKTRACE_DEPTH); /* the number of frames recorded is a parameter of the event */ int nb_frames; GET_PARAM_PACKED_1(CUR_EV, nb_frames); /* iterate over the frames */ for(int i =0; idata); /* TODO: you can do what you want with the call stack */ free(function); } } /* This function is called by eztrace_convert for each event to * handle. * It shall return 1 if the event was handled successfully or * 0 otherwise. */ int handle_@MODULE@_events(eztrace_event_t *ev) { if(! CUR_TRACE->start) return 0; switch (LITL_READ_GET_CODE(ev)) { @CONVERT_CASE@ case EZTRACE_BACKTRACE: handle_backtrace(); break; default: /* The event was not handled */ return 0; } return 1; } /* This function is called by eztrace_stats for each event to * handle. * It shall return 1 if the event was handled successfully or * 0 otherwise. */ int handle_@MODULE@_stats(eztrace_event_t *ev) { /* By default, use the same function as for eztrace_convert */ return handle_@MODULE@_events(ev); } void print_@MODULE@_stats() { printf("\n@MODULE@:\n"); printf("-------\n"); int i; /* Browse the list of processes */ for (i = 0; i < NB_TRACES; i++) { struct eztrace_container_t *p_process = GET_PROCESS_CONTAINER(i); int j; /* For each process, browse the list of threads */ for(j=0; jnb_children; j++) { struct eztrace_container_t *thread_container = p_process->children[j]; struct thread_info_t *p_thread = (struct thread_info_t*) thread_container->container_info; if(!p_thread) continue; INIT_@MODULE@_THREAD_INFO(p_thread, ptr); printf("\tThread %s\n", thread_container->name); /* TO COMPLETE: you can print per-thread counters here */ } } } @CONVERT_FUNCTIONS_BODY@ eztrace-1.1-7/src/core/input/PaxHeaders.7332/Makefile.template.in0000644000000000000000000000013113020610460021353 xustar0030 mtime=1480790320.360264651 30 atime=1508162286.731036322 29 ctime=1508162365.47371003 eztrace-1.1-7/src/core/input/Makefile.template.in0000644000175000017500000000207313020610460022545 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis # See COPYING in top-level directory. prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ BIN = libeztrace-convert-@MODULE@.so libeztrace-@MODULE@.so libeztrace-autostart-@MODULE@.so ldflags=$(LDFLAGS) @CUSTOM_LDFLAGS@ -L${libdir} cflags=$(CFLAGS) @CUSTOM_CFLAGS@ -I${includedir} CONVERT_LDFLAGS=@CONVERT_LDFLAGS@ RECORD_LDFLAGS=@RECORD_LDFLAGS@ all: $(BIN) libeztrace-convert-@MODULE@.so: eztrace_convert_@MODULE@.c @MODULE@_ev_codes.h $(CC) --shared -o libeztrace-convert-@MODULE@.so eztrace_convert_@MODULE@.c -fPIC $(cflags) $(ldflags) $(CONVERT_LDFLAGS) -ldl libeztrace-@MODULE@.so: @MODULE@.c @MODULE@_ev_codes.h $(CC) --shared -o libeztrace-@MODULE@.so @MODULE@.c -fPIC $(cflags) $(ldflags) -Wl,-Bsymbolic $(RECORD_LDFLAGS) -ldl libeztrace-autostart-@MODULE@.so: @MODULE@.c @MODULE@_ev_codes.h $(CC) --shared -o libeztrace-autostart-@MODULE@.so @MODULE@.c -fPIC $(cflags) $(ldflags) -Wl,-Bsymbolic $(RECORD_LDFLAGS) -ldl -DEZTRACE_AUTOSTART clean: rm -f $(BIN) eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace.preload.in0000644000000000000000000000013213020610460017750 xustar0030 mtime=1480790320.360264651 30 atime=1508162286.803042204 30 ctime=1508162367.805913605 eztrace-1.1-7/src/core/eztrace.preload.in0000755000175000017500000000634313020610460021150 0ustar00trahaytrahay00000000000000#!/bin/bash # Copyright CNRS, INRIA, Universit Bordeaux 1, Tlcom SudParis # See COPYING in top-level directory. debug=n mpi=n show_env=n remove_new_file=no usage() { cat << EOF usage: $0 options OPTIONS: -? Show this message -t "plugin1 plugin2 ... pluginN" Select a list of plugins -o Select the output directory -l Select a plugin directory -f Enable EZTRACE_FLUSH -d Run EZtrace with gdb -e Show environment -p PadicoTM mode -m MPI mode EOF } while getopts 't:o:l:fbdmep' OPTION; do case $OPTION in d) debug=y ;; e) show_env=y ;; m) mpi=y ;; p) padico=y ;; t) modules=$OPTARG export EZTRACE_TRACE=$modules ;; o) output_path=$OPTARG export EZTRACE_TRACE_DIR=$output_path ;; l) eztrace_lib_path=$OPTARG export EZTRACE_LIBRARY_PATH=$eztrace_library_path ;; f) export EZTRACE_FLUSH=1 ;; ?) usage exit 2 ;; esac done # remove the options from the command line shift $(($OPTIND - 1)) prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ bindir=@bindir@ # make sure eztrace libs are available export @LD_LIBRARY_PATH_NAME@=$@LD_LIBRARY_PATH_NAME@:$libdir prog_name=$1 shift new_prog_name=$prog_name # libeztrace should always be preloaded! files=${libdir}/libeztrace-autostart@DYNLIB_EXT@ EZTRACE_LIBRARY_PATH=${EZTRACE_LIBRARY_PATH}:${libdir}/ if [ "x$EZTRACE_TRACE" != x ]; then # only use the specified modules nb_modules=0 for module in $EZTRACE_TRACE do for dir in `echo $EZTRACE_LIBRARY_PATH |sed 's/:/ /g'` do if [ -f ${dir}/libeztrace-autostart-$module@DYNLIB_EXT@ ]; then files="$files:${dir}/libeztrace-autostart-$module@DYNLIB_EXT@" nb_modules=$(($nb_modules + 1)) fi done done if [ $nb_modules -lt 1 ]; then echo "No module were loaded. Please check your EZTRACE_TRACE variable or the -t option are used properly" >&2 exit 1 fi else # use all the available modules for dir in `echo $EZTRACE_LIBRARY_PATH |sed 's/:/ /g'` do for module in `ls $dir/libeztrace-autostart-*@DYNLIB_EXT@ 2>/dev/null` do files="$files:$module" done done fi if [ x$debug = xy ]; then # generate a gdbinit file that will preload all the modules gdbinit_file=`mktemp` echo "set env @LD_PRELOAD_NAME@ $files" > $gdbinit_file echo "set env @LD_LIBRARY_PATH_NAME@ $@LD_LIBRARY_PATH_NAME@" >> $gdbinit_file echo "echo \n" >> $gdbinit_file echo "echo EZTrace: hook loaded\n" >> $gdbinit_file gdb -x $gdbinit_file --args $new_prog_name $* rm $gdbinit_file elif [ x$show_env = xy ]; then remove_new_file=no echo env @LD_PRELOAD_NAME@=$files @LD_LIBRARY_PATH_NAME@=$@LD_LIBRARY_PATH_NAME@ $new_prog_name $* elif [ x$mpi = xy ]; then remove_new_file=no echo env @LD_PRELOAD_NAME@ $files @LD_LIBRARY_PATH_NAME@ $@LD_LIBRARY_PATH_NAME@ $new_prog_name $* elif [ x$padico = xy ]; then remove_new_file=no echo $files $new_prog_name $* else @LD_PRELOAD_NAME@=$files $new_prog_name $* fi if [ "x$remove_new_file" = "xyes" ]; then echo "removing $new_prog_name" rm $new_prog_name fi eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_array.h0000644000000000000000000000013213020610460017342 xustar0030 mtime=1480790320.360264651 30 atime=1508138884.000120818 30 ctime=1508162367.821915002 eztrace-1.1-7/src/core/eztrace_array.h0000644000175000017500000000154613020610460020537 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. */ #ifndef EZTRACE_ARRAY_H #define EZTRACE_ARRAY_H #include struct eztrace_array_t { unsigned item_size; unsigned nb_items; void* values; unsigned nb_allocated; }; /* return the ith value of an array */ #define ITH_VALUE(__i__, __array__) (void*)(((__array__)->values) + ((__i__)*(__array__)->item_size)) /* initialize an array */ void eztrace_array_create(struct eztrace_array_t* p_array, unsigned item_size, unsigned nb_prealloc); /* free an array */ void eztrace_array_free(struct eztrace_array_t* p_array); /* return a new item of an array (for a specific container) */ void* eztrace_array_new_value(struct eztrace_array_t* p_array); #endif /* EZTRACE_ARRAY_H */ eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_convert_core.c0000644000000000000000000000013213143047722020722 xustar0030 mtime=1502367698.660456018 30 atime=1508138883.972120118 30 ctime=1508162367.817914652 eztrace-1.1-7/src/core/eztrace_convert_core.c0000644000175000017500000011344113143047722022115 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _SVID_SOURCE #define _GNU_SOURCE #include #include #include #include #include #include "eztrace_convert.h" #include "eztrace_convert_core.h" #include "eztrace_stats_core.h" #include "eztrace_convert_types.h" #include "ev_codes.h" #include "eztrace_hierarchical_array.h" #include "submodules/ezt_submodule.h" eztrace_event_t ev; /* a thread just processed the current event, let's handl ethe next one */ sem_t job_processed; /* set to 1 if verbose */ int verbose = 0; /* debug level */ int __ezt_debug_level = 0; /* number of traces currently loaded */ int nb_traces = 0; /* number of traces currently started (i.e. that have reached MPI_Init) */ int nb_start = 0; /* array that contains the loaded traces */ struct trace_t *traces = NULL; /* pointer to the trace being processed */ struct trace_t *cur_trace = NULL; /* pointer to the event being processed */ eztrace_event_t *cur_ev = NULL; struct eztrace_event_handler __handler_info; pthread_t *main_thread; sem_t main_thread_sem; static enum eztrace_mode __cur_mode = EZTRACE_CONVERT; struct pthread_core_thread_info_t { double time_join; double time_create; double last_event; struct thread_info_t *p_thread; }; /* add a hook in the process structure in order to store information * about pending parallel sections */ static struct pthread_core_thread_info_t *__register_process_hook(struct thread_info_t *p_thread) { struct pthread_core_thread_info_t *c_info = (struct pthread_core_thread_info_t*) malloc(sizeof(struct pthread_core_thread_info_t)); c_info->p_thread = p_thread; c_info->time_join = 0; c_info->time_create= 0; c_info->last_event = 0; /* add the hook in the thread info structure */ ezt_hook_list_add(&c_info->p_thread->hooks, c_info, (uint8_t)PTHREAD_CORE_EVENTS_ID); return c_info; } /* declare a var variable that points to the process_info structure */ #define INIT_PTHREAD_CORE_THREAD_INFO(p_thread, var) \ struct pthread_core_thread_info_t *var = (struct pthread_core_thread_info_t*) \ ezt_hook_list_retrieve_data(&p_thread->hooks, (uint8_t)PTHREAD_CORE_EVENTS_ID); \ if(!(var)) { \ var = __register_process_hook(p_thread); \ } void eztrace_convert_init(unsigned __nb_traces) { if (traces) /* already initialized */ return; traces = malloc(sizeof(struct trace_t) * __nb_traces); char* ezt_debug=getenv("EZTRACE_DEBUG"); if(ezt_debug) { __ezt_debug_level = atoi(ezt_debug); printf("Debug mode set to %d\n", __ezt_debug_level); } } void eztrace_initialize_gtg() { /* the thread is waiting for something (sem_P, mutex_lock, etc.) */ addContType("CT_Program", NULL, "Program"); addContType("CT_Process", "CT_Program", "Process"); addContType("CT_Thread", "CT_Process", "Thread"); addStateType("ST_Program", "CT_Program", "Program state"); addStateType("ST_Process", "CT_Process", "Process state"); addStateType("ST_Thread", "CT_Thread", "Thread state"); addStateType("ST_User", "CT_Thread", "User state"); /* the thread is blocked */ addEntityValue("STV_FLUSH", "ST_Thread", "EZTrace Flush", GTG_WHITE); /* the thread is blocked */ addEntityValue("STV_Blocked", "ST_Thread", "Blocked", GTG_RED); /* the thread is computing */ addEntityValue("STV_Working", "ST_Thread", "Working", GTG_BLUE); /* the thread is within a critical section (mutex, spinlock, ...) */ addEntityValue("STV_Critical", "ST_Thread", "Critical Section", GTG_GREEN); addEntityValue("STV_User_Event_Green", "ST_User", "User Event", GTG_GREEN); addEntityValue("STV_User_Event_Red", "ST_User", "User Event", GTG_RED); addEntityValue("STV_User_Event_Blue", "ST_User", "User Event", GTG_SEABLUE); addEntityValue("STV_User_Event_Yellow", "ST_User", "User Event", GTG_YELLOW); addEntityValue("STV_User_Event_Pink", "ST_User", "User Event", GTG_PINK); addEntityValue("STV_EZTRACE_SYNC", "ST_Thread", "EZTrace synchronization", GTG_WHITE); addEventType("E_UserEvent", "CT_Thread", "User Event"); addEventType("E_SigSegv", "CT_Thread", "SIGNAL Received"); addContainer(0.00000, "C_Prog", "CT_Program", NULL, "Program", "0"); ezt_submodule_convert_init(); } struct eztrace_event_handler* get_handler_info() { return &__handler_info; } /* call printf if verbose mode is turned on */ #define DPRINTF(...) \ { \ if(verbose) \ printf(__VA_ARGS__); \ } /* set to 1 if the current trace should be skipped next time. * It is mostly useful when a trace starts with a delay (because * of MPI_Comm_spawn for example) */ int skip; int* get_verbose() { return &verbose; } int* get_nb_traces() { return &nb_traces; } int* get_nb_start() { return &nb_start; } struct trace_t* get_traces(int index) { return &traces[index]; } struct trace_t* get_cur_trace() { return cur_trace; } void set_cur_trace(struct trace_t* p_trace) { cur_trace = p_trace; } eztrace_event_t *get_cur_ev() { return cur_ev; } void set_cur_ev(eztrace_event_t * p_ev) { cur_ev = p_ev; } int* get_skip() { return &skip; } void ezt_litl_read_next_event(struct trace_t*p_trace) { litl_read_event_t *p_ev = litl_read_next_event(p_trace->block); if(p_ev) { memcpy(&p_trace->ev, p_ev, sizeof(litl_read_event_t)); p_trace->line_number++; } else { memset(&p_trace->ev, 0, sizeof(litl_read_event_t)); } } void ezt_litl_read_next_thread_event(struct trace_t *p_trace, litl_tid_t thread_id) { litl_read_process_t* process; litl_read_thread_t* thread; int proc, th; for(proc = 0; proc < p_trace->block->nb_processes; proc++) { process = p_trace->block->processes[proc]; for(th = 0; thnb_threads; th++) { thread = process->threads[th]; if(thread->thread_pair->tid == thread_id) { litl_read_event_t *p_ev = litl_read_next_thread_event(p_trace->block, process, thread); if(p_ev) { memcpy(&p_trace->ev, p_ev, sizeof(litl_read_event_t)); p_trace->line_number++; } else { memset(&p_trace->ev, 0, sizeof(litl_read_event_t)); } return; } } } fprintf(stderr, "Error: Cannot find thread %x\n", thread_id); abort(); } /* Find the next event to be handled in a trace * Return 0 if there is no more event in this trace, or 1 otherwise */ int next_ev(int cur_trace_num) { double cur_time = NS_TO_MS(CUR_TIME(cur_trace_num)); ezt_litl_read_next_event(&traces[cur_trace_num]); if (!traces[cur_trace_num].ev.event) { traces[cur_trace_num].done = 1; fprintf(stderr, "no more block for trace #%d\n", cur_trace_num); return 0; } return 1; } /* Find the next event to be handled in a trace * Return 0 if there is no more event in this trace, or 1 otherwise */ int next_thread_ev(int cur_trace_num, litl_tid_t thread_id) { double cur_time = NS_TO_MS(CUR_TIME(cur_trace_num)); ezt_litl_read_next_thread_event(&traces[cur_trace_num], thread_id); if (!traces[cur_trace_num].ev.event) { traces[cur_trace_num].done = 1; fprintf(stderr, "no more block for trace #%d\n", cur_trace_num); return 0; } return 1; } /* Find the next trace event to handle * return the trace id that correspond to the trace to be handled */ static int __get_cur_ev() { int i; uint64_t min_time = -1; int min_trace = -1; int nb_skip=0; /* First, make all the non-started traces progress */ if (NB_START < NB_TRACES) for (i = 0; i < NB_TRACES; i++) if (!get_traces(i)->start) { *get_skip() = 0; return i; } for (i = 0; i < NB_TRACES; i++) { /* Only consider traces that * - have events to be handled * - do not wait for an external event */ #if 0 struct trace_t* cur_trace = get_traces(i); uint64_t cur_time = (uint64_t)((cur_trace->ev->time - cur_trace->start_time) + cur_trace->delay); if ((! cur_trace->done) && (!cur_trace->skip) && (cur_time < min_time)) { min_time = cur_time; min_trace = i; } #else if ((!get_traces(i)->done) && (!get_traces(i)->skip) && (CUR_TIME(i) < min_time)) { min_time = CUR_TIME(i); min_trace = i; } #endif /* reset the skip value so that the trace is not skipped forever */ if (!SKIP) { get_traces(i)->skip = 0; } if(get_traces(i)->skip) nb_skip++; } SKIP = 0; if(min_trace<0 && nb_skip == NB_TRACES) { fprintf(stderr, "Error: deadlock detected in %s\n", __FUNCTION__); abort(); } return min_trace; } /* initialize a container. * if new_container is NULL, a container is malloc'd * Return the address of the new container */ static struct eztrace_container_t* eztrace_create_container( struct eztrace_container_t* new_container, struct eztrace_container_t* parent_container) { if (!new_container) new_container = malloc(sizeof(struct eztrace_container_t)); new_container->parent = parent_container; new_container->nb_children = 0; new_container->children = NULL; new_container->p_trace = NULL; new_container->start_timestamp = 0; new_container->end_timestamp = 0; if (parent_container) { new_container->p_trace = parent_container->p_trace; parent_container->nb_children++; parent_container->children = realloc( parent_container->children, sizeof(struct eztrace_container_t*) * parent_container->nb_children); parent_container->children[parent_container->nb_children - 1] = new_container; } counters_new_container(new_container); hierarchical_array_new_container(new_container); return new_container; } void eztrace_create_containers(int trace_index) { /* initialize the root container */ struct eztrace_container_t *p_container = &get_traces(trace_index)->root_container; eztrace_create_container(p_container, NULL); p_container->container_type = process; p_container->p_trace = get_traces(trace_index); /* create the process_info structure and initialize it */ p_container->container_info = malloc(sizeof(struct process_info_t)); struct process_info_t *p_process = (struct process_info_t *) p_container->container_info; p_process->pid = trace_index; p_process->container = p_container; ezt_hook_list_init(&(p_process->hooks)); } void eztrace_create_ids(int trace_index) { struct eztrace_container_t *p_container = &get_traces(trace_index)->root_container; /* create the id and name strings */ int res __attribute__ ((__unused__)); res = CREATE_PROCESS_ID_STR(p_container->id, p_container->p_trace->trace_id); res = CREATE_PROCESS_NAME_STR(p_container->name, trace_index); } /* create the process corresponding to a trace */ void add_process(int trace_id) { eztrace_create_containers(trace_id); eztrace_create_ids(trace_id); } /* add a thread to the process_info_t structure */ void add_pthread(unsigned int tid) { struct eztrace_container_t *thread_container = eztrace_create_container( NULL, &CUR_TRACE->root_container); struct thread_info_t *p_thread = (struct thread_info_t*) malloc( sizeof(struct thread_info_t)); thread_container->container_type = thread; thread_container->container_info = p_thread; thread_container->start_timestamp = CURRENT; thread_container->end_timestamp = 0; int res __attribute__ ((__unused__)); res = CREATE_THREAD_ID_STR(thread_container->id, CUR_ID, tid); res = CREATE_THREAD_NAME_STR(thread_container->name, CUR_ID, tid); p_thread->tid = tid; p_thread->to_be_killed = 0; p_thread->processing_thread = NULL; p_thread->container = thread_container; p_thread->expected_code = 0; ezt_hook_list_init(&p_thread->hooks); sem_init(&p_thread->to_process, 0, 0); } /* PThread creation/destruction processing */ void new_thread(unsigned int tid) { if (CUR_ID && (NB_TRACES == 1 || CUR_TRACE->start)) { FUNC_NAME; add_pthread(tid); DECLARE_PROCESS_ID_STR(process_id, CUR_INDEX); DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); if (__cur_mode == EZTRACE_CONVERT) { addContainer(CURRENT, thread_id, "CT_Thread", process_id, thread_id, "0"); setState(CURRENT, "ST_Thread", thread_id, "STV_Working"); } } } void handle_new_thread() { new_thread(CUR_THREAD_ID); } void handle_end_thread(void) { FUNC_NAME; if(! CUR_TRACE->start) return; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); struct eztrace_container_t* p_cont = GET_THREAD_CONTAINER(CUR_INDEX, CUR_THREAD_ID); p_cont->end_timestamp = CURRENT; if (__cur_mode == EZTRACE_CONVERT && thread_id) { destroyContainer(CURRENT, thread_id, "CT_Thread"); } } void handle_thread_create(void) { FUNC_NAME; if (NB_TRACES == 1 || CUR_TRACE->start) { add_pthread(CUR_THREAD_ID); DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_PROCESS_ID_STR(process_id, CUR_INDEX); if (__cur_mode == EZTRACE_CONVERT) { addContainer(CURRENT, thread_id, "CT_Thread", process_id, thread_id,"0"); } } } void handle_start_thread_join(void) { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_CORE_THREAD_INFO(p_thread, p_info); assert(p_info->last_event == 0); p_info->last_event = CURRENT; CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_Blocked"); } void handle_stop_thread_join(void) { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_CORE_THREAD_INFO(p_thread, p_info); assert(p_info->last_event > 0); p_info->time_join += CURRENT-p_info->last_event; p_info->last_event = 0; CHANGE() popState(CURRENT, "ST_Thread", thread_id); } void handle_start_thread_create (void) { if (NB_TRACES == 1 || CUR_TRACE->start) { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_CORE_THREAD_INFO(p_thread, p_info); assert(p_info->last_event == 0); p_info->last_event = CURRENT; CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_Blocked"); } } void handle_stop_thread_create (void) { if (NB_TRACES == 1 || CUR_TRACE->start) { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); DECLARE_CUR_THREAD(p_thread); INIT_PTHREAD_CORE_THREAD_INFO(p_thread, p_info); assert(p_info->last_event > 0); p_info->time_create += CURRENT-p_info->last_event; p_info->last_event = 0; CHANGE() popState(CURRENT, "ST_Thread", thread_id); } } void handle_enter_event_red (void) { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); char *name; name = LITL_READ_RAW(CUR_EV)->data; CHANGE() addEvent(CURRENT, "E_UserEvent", thread_id, name); CHANGE() pushState(CURRENT, "ST_User", thread_id, "STV_User_Event_Red"); } void handle_enter_event_blue (void) { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); char *name; name = LITL_READ_RAW(CUR_EV)->data; CHANGE() addEvent(CURRENT, "E_UserEvent", thread_id, name); CHANGE() pushState(CURRENT, "ST_User", thread_id, "STV_User_Event_Blue"); } void handle_enter_event_yellow (void) { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); char *name; name = LITL_READ_RAW(CUR_EV)->data; CHANGE() addEvent(CURRENT, "E_UserEvent", thread_id, name); CHANGE() pushState(CURRENT, "ST_User", thread_id, "STV_User_Event_Yellow"); } void handle_enter_event_green (void) { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); char *name; name = LITL_READ_RAW(CUR_EV)->data; CHANGE() addEvent(CURRENT, "E_UserEvent", thread_id, name); CHANGE() pushState(CURRENT, "ST_User", thread_id, "STV_User_Event_Green"); } void handle_enter_event_pink (void) { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); char *name; name = LITL_READ_RAW(CUR_EV)->data; CHANGE() addEvent(CURRENT, "E_UserEvent", thread_id, name); CHANGE() pushState(CURRENT, "ST_User", thread_id, "STV_User_Event_Pink"); } void handle_leave_event() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); char *name; name = LITL_READ_RAW(CUR_EV)->data; CHANGE() popState(CURRENT, "ST_User", thread_id); } void handle_signal() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); int signo, nb_calls; GET_PARAM_PACKED_2(CUR_EV, signo, nb_calls); char* event_str = NULL; int res __attribute__ ((__unused__)); res = asprintf(&event_str, "Signal %d received. Backtrace:", signo); int i; for (i = 0; i < nb_calls; i++) { // TODO: change to pointers only. As a result, the performance should be improved ezt_litl_read_next_event(CUR_TRACE); assert(LITL_READ_GET_TYPE(CUR_EV) == LITL_TYPE_RAW); char* str = LITL_READ_RAW(CUR_EV)->data; char* tmp = event_str; res = asprintf(&event_str, "%s
[%d] %s", tmp, i, str); free(tmp); } CHANGE() addEvent(CURRENT, "E_SigSegv", thread_id, event_str); free(event_str); } uint64_t add_delay_to_trace(int trace_num, uint64_t old_time, uint64_t new_time, const char* thread_id) { struct trace_t* t = get_traces(trace_num); uint64_t delay = new_time - old_time; t->delay += delay; CHANGE() pushState(NS_TO_MS(old_time), "ST_Thread", thread_id, "STV_EZTRACE_SYNC"); CHANGE() popState(NS_TO_MS(new_time), "ST_Thread", thread_id); return delay; } static struct ezt_list_t module_list; void __core_init(void) __attribute__ ((constructor)); void __core_init(void) { static int module_initialized = 0; if (!module_initialized) { module_initialized = 1; ezt_list_new(&module_list); } } /* This function calls the init handler for all the registered modules */ int __init_modules() { struct ezt_list_token_t *token; ezt_list_foreach(&module_list, token) { struct eztrace_convert_module *p_module = (struct eztrace_convert_module *) token->data; p_module->init(); } return 0; } /* This function calls the handle callback for all the registered modules * It returns 1 if the ev was handled by one module or 0 otherwise */ int __handle_event(eztrace_event_t *ev) { int ret = 0; struct ezt_list_token_t *token; ezt_list_foreach(&module_list, token) { struct eztrace_convert_module *p_module = (struct eztrace_convert_module *) token->data; if (p_module->handle) ret = p_module->handle(ev); /* The module handled the event, let's return directly*/ if (ret) { goto out; } } out: return ret; } static int nb_handled_events = 0; /* This function calls the handle_stats callback for all the registered modules * It returns 1 if the ev was handled by one module or 0 otherwise */ int __handle_stats(eztrace_event_t *ev) { int ret = 0; struct ezt_list_token_t *token; ezt_list_foreach(&module_list, token) { struct eztrace_convert_module *p_module = (struct eztrace_convert_module *) token->data; if (p_module->handle_stats) ret = p_module->handle_stats(ev); /* The module handled the event, let's return directly */ if (ret) { nb_handled_events++; goto out; } } out: return ret; } static void print_pthread_core_stats() { printf("\nPTHREAD_CORE\n"); printf("------------\n"); int i; for(i=0; inb_children; j++) { struct eztrace_container_t* p_thread = p_cont->children[j]; struct thread_info_t *ptr = (struct thread_info_t*)(p_thread->container_info); struct pthread_core_thread_info_t *t_info = (struct pthread_core_thread_info_t*) ezt_hook_list_retrieve_data(&ptr->hooks, (uint8_t)PTHREAD_CORE_EVENTS_ID); if(!t_info) continue; if(t_info->time_join>0 || t_info->time_create >0) { printf("\nThread %s:\n", p_thread->name); printf("\ttime spent in pthread_join : %lf ms\n", t_info->time_join); printf("\ttime spent in pthread_create: %lf ms\n", t_info->time_create); total_time_join += t_info->time_join; total_time_create += t_info->time_create; } } if(total_time_join>0 ||total_time_create>0) { printf("\nTotal for %s\n", p_cont->name); printf("\ttime spent in pthread_join : %lf ms\n", total_time_join); printf("\ttime spent in pthread_create: %lf ms\n", total_time_create); } } } /* This function calls the handle_stats callback for all the registered modules * It returns 1 if the ev was handled by one module or 0 otherwise */ void __print_stats() { struct ezt_list_token_t *token; ezt_list_foreach(&module_list, token) { struct eztrace_convert_module *p_module = (struct eztrace_convert_module *) token->data; if (p_module->print_stats) p_module->print_stats(); } /* printf time_join */ print_pthread_core_stats(); printf("%d events handled\n", nb_handled_events); } void eztrace_convert_list() { struct ezt_list_token_t *token; ezt_list_foreach(&module_list, token) { struct eztrace_convert_module *p_module = (struct eztrace_convert_module *) token->data; printf("%d\t%s", p_module->module_prefix, p_module->name); printf("\t%s\n", p_module->description); } } /* set to 0 if the loading of module should be silent */ int module_verbose = 0; void eztrace_convert_register_module(struct eztrace_convert_module *p_module) { if (p_module->api_version != EZTRACE_API_VERSION) fprintf( stderr, "Warning: module %s uses API version %x, but current version is %x\n", p_module->name, p_module->api_version, EZTRACE_API_VERSION); struct ezt_list_token_t *token; /* Let's check wether another module with the same prefix is already registered */ezt_list_foreach(&module_list, token) { struct eztrace_convert_module *p_mod = (struct eztrace_convert_module *) token->data; if (p_module->module_prefix == p_mod->module_prefix) { fprintf( stderr, "Trying to register a module that is already registered. Module prefix is %x\n", p_mod->module_prefix); return; } } ezt_list_add(&module_list, &p_module->token); if (module_verbose) printf("module %s loaded\n", p_module->name); } char* cur_module_name = NULL; #define SO_STRING DYNLIB_EXT /* return 1 if the filename matches "eztrace_convert_*.so" */ static int filter(const struct dirent *entry) { const char* filename = entry->d_name; /* check wether the string starts with "eztrace-convert-" */ if (strncmp(filename, "libeztrace-convert-", strlen("libeztrace-convert-"))) /* the string doesn't start with "eztrace-convert-" */ return 0; /* check wether the next chars correspond to the module name * that we are looking for */ filename += strlen("libeztrace-convert-"); if (cur_module_name) { if (strncmp(filename, cur_module_name, strlen(cur_module_name))) /* the string doesn't start with "eztrace-convert-" */ return 0; filename += strlen(cur_module_name); } else { filename = entry->d_name + strlen(entry->d_name) - strlen(SO_STRING); } if (strncmp(filename, SO_STRING, strlen(SO_STRING))) /* the string doesn't end with ".so" */ return 0; /* check wether there are remaining chars after .so */ filename += strlen(SO_STRING); if (filename[0]) return 0; return 1; } /* Load a module from a specific libdir * if module_name is NULL, this function loads all the available * modules. * return the number of modules loaded */ static int __load_module_from_libdir(const char*module_name, const char*libdir) { int res __attribute__ ((__unused__)), nb_loaded = 0; /* update the module name we're looking for so that the filter function * can work as expected. */ cur_module_name = (char*) module_name; if (module_name) DPRINTF("Looking for module %s in directory %s\n", module_name, libdir) else DPRINTF("Looking for any module in directory %s\n", libdir) struct dirent **namelist; int n; /* Get the list of files that match the module name in the libdir directory */ n = scandir(libdir, &namelist, filter, alphasort); if (n < 0) perror("scandir"); else { while (n--) { /* Get the full name of the file (path/libname.so) */ char* libname = NULL; res = asprintf(&libname, "%s/%s", libdir, namelist[n]->d_name); /* Open the lib. The constructor of this lib is called and should register * the module by calling eztrace_convert_register_module() */ void* dlret = dlopen(libname, RTLD_NOW); if (!dlret) { fprintf(stderr, "%s\n", dlerror()); } DPRINTF("\tloaded: %s\n", libname) nb_loaded++; free(namelist[n]); if (module_name) { /* the module was loaded, return from the function so that the same module is not loaded again */ free(namelist); goto out; } } free(namelist); } out: return nb_loaded; } /* Search a module and load it. * if module_name is NULL, this function loads all the available * modules. * return the number of modules loaded */ static int __load_all_modules(const char*module_name) { /* number of modules loaded */ int nb_loaded = 0; char* save_ptr = NULL; char* cur_path = NULL; char* lib_path = NULL; /* First, let's try in the default lib_path */ nb_loaded = __load_module_from_libdir(module_name, EZTRACE_LIB_DIR); if (module_name && nb_loaded) { /* the module was loaded, return from the function so that the same module is not loaded again */ goto out; } /* Module not found, let's try the lib_path specified by the user */ lib_path = getenv("EZTRACE_LIBRARY_PATH"); if (!lib_path) { /* No lib_path specify, we can't find any more plugin */ goto out; } /* Iterate over the lib_path specified. * lib_path are separated by ':' */ save_ptr = lib_path; cur_path = strtok_r(lib_path, ":", &save_ptr); while (cur_path) { nb_loaded += __load_module_from_libdir(module_name, cur_path); if (module_name && nb_loaded) { /* the module was loaded, return from the function so that the same module is not loaded again */ goto out; } cur_path = strtok_r(NULL, ":", &save_ptr); } out: return nb_loaded; } void load_modules(int mod_verb) { char* module_list = getenv("EZTRACE_TRACE"); module_verbose = mod_verb; int nb_loaded = 0; char* save_ptr = NULL; char* module = NULL; if (!module_list) { /* no env declares, so let's load everything */ nb_loaded = __load_all_modules(NULL); /* We have loaded the pthread_core module which is not a * 'real' module, so let's decrement nb_loaded */ nb_loaded--; goto out; } DPRINTF("loading modules\n") /* EZTRACE_TRACE is declared. * it should contain modules separated by " ", such * as "mpi coreblas pthread" * Let's iterate over these modules and load them once at a time */ save_ptr = module_list; module = strtok_r(module_list, " ", &save_ptr); while (module) { DPRINTF("loading module %s\n", module); int loaded = __load_all_modules(module); if (!loaded) fprintf(stderr, "Cannot find module '%s'\n", module); nb_loaded += loaded; module = strtok_r(NULL, " ", &save_ptr); } out: if (mod_verb) printf("%d modules loaded\n", nb_loaded); return; } /* Tell the main thread that the current event has been processed */ void set_job_completed() { sem_post(&job_processed); } /* Wait for the next event to handle */ void wait_for_next_job(struct thread_info_t * thread_id) { sem_wait(&thread_id->to_process); } void set_cur_mode(enum eztrace_mode mode) { __cur_mode = mode; } eztrace_mode_t get_mode() { return __cur_mode; } void handle_start_flush() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() pushState(CURRENT, "ST_Thread", thread_id, "STV_FLUSH"); } void handle_stop_flush() { FUNC_NAME; DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); CHANGE() popState(CURRENT, "ST_Thread", thread_id); } int process_one_event(eztrace_event_t *ev) { /* we just woke up, the event to handle is CUR_EV */ int ret = 0; if (__cur_mode == EZTRACE_CONVERT) ret = __handle_event(ev); else ret = __handle_stats(ev); if(!ret) { ret = ezt_submodule_convert_handle(ev); } if (!ret) { switch (LITL_READ_GET_CODE(ev)) { case EZTRACE_START_FLUSH_CODE: handle_start_flush(); ret = 1; break; case EZTRACE_STOP_FLUSH_CODE: handle_stop_flush(); ret = 1; break; /* Handle the pthread_core related codes */ case EZTRACE_NEW_THREAD: /* already processed by the main thread, we can ignore this event */ ret = 1; break; case EZTRACE_END_THREAD: handle_end_thread(); ret = 1; /* this thread won't be used anymore */ return -1; break; case EZTRACE_START_THREAD_JOIN: handle_start_thread_join(); ret = 1; break; case EZTRACE_STOP_THREAD_JOIN: handle_stop_thread_join(); ret = 1; break; case EZTRACE_START_THREAD_CREATE: handle_start_thread_create (); ret = 1; break; case EZTRACE_STOP_THREAD_CREATE: handle_stop_thread_create (); ret = 1; break; case EZTRACE_SIGNAL_RECEIVED: handle_signal(); ret = 1; break; case EZTRACE_ENTER_EVENT_RED: handle_enter_event_red(); ret = 1; break; case EZTRACE_ENTER_EVENT_PINK: handle_enter_event_pink(); ret = 1; break; case EZTRACE_ENTER_EVENT_GREEN: handle_enter_event_green(); ret = 1; break; case EZTRACE_ENTER_EVENT_YELLOW: handle_enter_event_yellow(); ret = 1; break; case EZTRACE_ENTER_EVENT_BLUE: handle_enter_event_blue(); ret = 1; break; case EZTRACE_LEAVE_EVENT: handle_leave_event(); ret = 1; break; default: ret = 0; } } if(ret) { struct eztrace_container_t *p_cont = GET_PROCESS_CONTAINER(CUR_INDEX); p_cont->end_timestamp = CURRENT; struct eztrace_container_t* p_thread = GET_THREAD_CONTAINER(CUR_INDEX, CUR_THREAD_ID); if(p_thread) p_thread->end_timestamp = CURRENT; } if (!ret && NB_START >= NB_TRACES) { /* This event is unknown :-( */ fprintf(stderr, "[%d] unknown event.. %x at time %lf\n", CUR_INDEX, (unsigned) LITL_READ_GET_CODE(ev), CURRENT); abort(); } return ret; } void wait_for_main_thread() { sem_wait(&main_thread_sem); } static int __handle_event_generic(eztrace_event_t *ev) { /* initialize stuff */ static int first_time = 1; if (first_time) { first_time = 0; sem_init(&job_processed, 0, 0); } DECLARE_CUR_THREAD(cur_thread); if (cur_thread) { /* check whether another is waiting for this event */ struct expected_code_t* exp = cur_thread->expected_code; while (exp) { if (exp->code == LITL_READ_GET_CODE(ev)) { /* a thread is waiting for this event */ /* wake up this thread */ sem_post(&exp->semaphore); /* wait until the thread has processed the event */ wait_for_main_thread(); return 1; } else { exp = exp->next; } } } /* we just woke up, the event to handle is CUR_EV */ int ret = process_one_event(ev); ret = ((ret <= 0) ? 0 : 1); if (cur_thread && cur_thread->to_be_killed) { /* the current thread is marked "to be killed" * This means that for processing the current event, we had to block * and create a new thread for handling the following events. Now that * the event is processed, there are two handling threads, so let's * wake up the other thread and destroy the current thread. */ cur_thread->to_be_killed = 0; wake_up_handler_thread(); pthread_exit(NULL); } return ret; } int handle_event(eztrace_event_t *ev) { set_cur_mode(EZTRACE_CONVERT); return __handle_event_generic(ev); } int stats_handle_events(eztrace_event_t *ev) { set_cur_mode(EZTRACE_STATS); return __handle_event_generic(ev); } /* ask the event scheduler to call handle(data) next time trace #trace_index is scheduled */ void ask_for_replay(int trace_index, void (*handle)(void*), void* data); struct __ezt_replay { void (*handle)(void*); void* data; }; struct __ezt_replay *replays = NULL; /* ask the event scheduler to call handle(data) next time trace #trace_index is scheduled * see handle_mpi_stop_waitall in src/modules/mpi/eztrace_convert_mpi.c for an example */ void ask_for_replay(int trace_index, void (*handle)(void*), void* data) { if (!replays) { /* first time this function is called. allocate replays */ int nb_traces = *(get_nb_traces()); replays = malloc(sizeof(struct __ezt_replay) * nb_traces); int i; for (i = 0; i < nb_traces; i++) { replays[i].handle = NULL; replays[i].data = NULL; } } assert(replays[trace_index].handle == NULL); replays[trace_index].handle = handle; replays[trace_index].data = data; } /* execute a replay */ static void __execute_replay(struct __ezt_replay *r) { void (*handle)(void*) = r->handle; void* data = r->data; /* remove the replay so that we don't loop infinitely */ r->handle = NULL; r->data = NULL; /* execute the function */ handle(data); } void* handle_one_event(void* arg __attribute__((unused))) { /* get the next event to process */ __handler_info.cur_trace_nb = __get_cur_ev(); set_cur_trace(get_traces(__handler_info.cur_trace_nb)); set_cur_ev(&get_cur_trace()->ev); int ret = 0; if (replays && replays[__handler_info.cur_trace_nb].handle) { /* execute the replay */ __execute_replay(&replays[__handler_info.cur_trace_nb]); } else { ret = (__cur_mode == EZTRACE_CONVERT) ? handle_event(CUR_EV) : stats_handle_events(CUR_EV); __handler_info.nb_handled += ret; } /* If current event was skipped, do not step forward the trace or this event will be 'lost' */ if (!SKIP && !next_ev(__handler_info.cur_trace_nb)) __handler_info.nb_done++; return NULL; } void* handle_all_events(void* arg) { wait_for_main_thread(); while (__handler_info.nb_done < NB_TRACES) { handle_one_event(arg); } sem_post(&__handler_info.events_processed); return NULL; } void wake_up_handler_thread() { sem_post(&main_thread_sem); } void wait_for_an_event_generic(int trace_index, litl_tid_t thread_id, uint64_t code) { /* This declaration *has to be* before the call to next_ev * since next_ev may change the current thread */ DECLARE_THREAD_INFO(p_thread, trace_index, thread_id); if(thread_id == 0) { if (!next_ev(trace_index)) { fprintf(stderr, "Warning: trace %d ends, but I am waiting for an event !\n", trace_index); return; } } else { if (!next_thread_ev(trace_index, thread_id)) { fprintf(stderr, "Warning: trace %d ends, but I am waiting for an event !\n", trace_index); return; } } if (LITL_READ_GET_CODE(&traces[trace_index].ev) == code) return; /* The current thread expects a specific event, but another code appeared. * (This usually happens due to a race condition between thread when instrumenting) */ /* create another thread for processing the unneeded events */ new_handler_thread(); /* add the {code,semaphore} to the list of expected events */ struct expected_code_t* exp_code = malloc(sizeof(struct expected_code_t)); exp_code->code = code; sem_init(&exp_code->semaphore, 0, 0); exp_code->next = p_thread->expected_code; p_thread->expected_code = exp_code; /* wake up the thread we just created */ wake_up_handler_thread(); /* wait until the processing thread finds our events */ sem_wait(&exp_code->semaphore); /* make sure the event code is the right one */ assert(LITL_READ_GET_CODE(&traces[trace_index].ev) == code); /* remove the {code,semaphore} from the list of expected events */ struct expected_code_t* cur_code, *prev_code; cur_code = p_thread->expected_code; prev_code = NULL; while(cur_code != exp_code) { prev_code = cur_code; cur_code = cur_code->next; } if(!prev_code) { p_thread->expected_code = cur_code->next; } else { prev_code->next = cur_code->next; } free(cur_code); /* Now that the event is processed, there are two handling threads, we need to destroy * the current thread. We can't do this right now (because we need to process the event * we were expecting). So, mark the thread "to be killed" so that someone destroys it * later (this is done in __handle_event_generic) */ p_thread->to_be_killed = 1; } void wait_for_an_event(int trace_index, uint64_t code) { wait_for_an_event_generic(trace_index, 0, code); } void wait_for_an_event_in_cur_thread(uint64_t code) { wait_for_an_event_generic (CUR_INDEX, CUR_THREAD_ID, code); } void new_handler_thread() { DECLARE_CUR_THREAD(p_thread); pthread_t *p_new_thread = malloc(sizeof(pthread_t)); pthread_create(p_new_thread, NULL, handle_all_events, NULL); p_thread->processing_thread = main_thread; main_thread = p_new_thread; } void create_main_thread() { main_thread = malloc(sizeof(pthread_t)); pthread_create(main_thread, NULL, handle_all_events, NULL); } /* destroy a container and its children */ static void __finalize_container(struct eztrace_container_t* p_cont) { if (!p_cont) return; unsigned int i; /* finalize the children */ for (i = 0; i < p_cont->nb_children; i++) { __finalize_container(p_cont->children[i]); free(p_cont->children[i]); } /* finalize the container */ if (p_cont->container_type == thread) { struct thread_info_t *p_thread = (struct thread_info_t*) p_cont->container_info; /* free the pthread pointer */ if (p_thread->processing_thread) { free(p_thread->processing_thread); } /* free the thread hooks */ ezt_hook_list_free(&p_thread->hooks); } else { /* the container is a process */ struct process_info_t *p_process = (struct process_info_t*) p_cont->container_info; ezt_hook_list_free(&p_process->hooks); } free(p_cont->container_info); } void eztrace_convert_finalize() { int i; /* free all the containers */ for (i = 0; i < NB_TRACES; i++) { struct trace_t* cur_trace = get_traces(i); struct eztrace_container_t* cur_cont = &(cur_trace->root_container); __finalize_container(cur_cont); } free(main_thread); } eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_config.h.in0000644000000000000000000000013113053046645020113 xustar0029 mtime=1487687077.29549415 30 atime=1508162286.815043185 30 ctime=1508162367.809913953 eztrace-1.1-7/src/core/eztrace_config.h.in0000644000175000017500000000732613053046645021313 0ustar00trahaytrahay00000000000000/* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * config.h -- Configuration parameters * * Created on: 02 juil. 2011 * Author: Damien Martin-Guillerez * */ #ifndef PPTRACE_CONFIG_H_ #define PPTRACE_CONFIG_H_ #include #include #define PPTRACE_DEBUG_LEVEL_NONE 0 #define PPTRACE_DEBUG_LEVEL_INFO 1 #define PPTRACE_DEBUG_LEVEL_VERBOSE 2 #define PPTRACE_DEBUG_LEVEL_DEBUG 3 #define PPTRACE_DEBUG_LEVEL_ALL 4 #define PPTRACE_BINARY_TYPE_BFD 1 // Requires -lbfd #define PPTRACE_BINARY_TYPE_ELF 2 // Requires -lelf #define PPTRACE_ARCH_TYPE_INTEL 1 // What else? #define PTRACE_TRACE_TYPE_LINUX 1 #define PTRACE_TRACE_TYPE_MACOSX 2 // Not Yet Implemented #define PTRACE_TRACE_TYPE_BSD 3 // Not Yet Implemented #define PPTRACE_ISIZE_TYPE_TRACE 1 #define PPTRACE_ISIZE_TYPE_OPCODE 2 // Requires -lopcodes and binary type bfd #define ENABLE_BIN_INSTRUMENTATION @USE_BIN_INSTRUMENTATION@ #if ENABLE_BIN_INSTRUMENTATION #define ENABLE_BINARY_INSTRUMENTATION 1 #else #undef ENABLE_BINARY_INSTRUMENTATION #endif // Configuration // Syscall dependency #ifndef __PPTRACE_DEBUG_LEVEL #define __PPTRACE_DEBUG_LEVEL 0 #endif // defined __PPTRACE_DEBUG_LEVEL #ifndef __PPTRACE_BINARY_TYPE #define __PPTRACE_BINARY_TYPE @PPTRACE_BINARY_TYPE@ #endif // defined __PPTRACE_BINARY_TYPE #define HAVE_LIBOPCODE @HAVE_LIBOPCODE@ #define HAVE_LIBBACKTRACE @HAVE_LIBBACKTRACE@ #define USE_GETTID @USE_GETTID@ #define DYNLIB_SUFFIX "@DYNLIB_EXT@" #define HAVE_PRCTL_H @HAVE_PRCTL_H@ #ifndef __PPTRACE_USE_PRCTL #if HAVE_PRCTL_H // This flag is set to use prctl for ptrace to allow child to trace its parent on hardened systems // Set it if prtcl.h, the prtcl() function and the PR_SET_PTRACER constant exists #define __PPTRACE_USE_PRCTL #endif /* HAVE_PRCTL_H */ #endif // defined __PPTRACE_USE_PRCTL #ifndef __PPTRACE_ARCH_TYPE #define __PPTRACE_ARCH_TYPE PPTRACE_ARCH_TYPE_INTEL #endif // defined __PPTRACE_ARCH_TYPE #ifndef __PPTRACE_TRACE_TYPE #define __PPTRACE_TRACE_TYPE PTRACE_TRACE_TYPE_LINUX #endif // defined __PPTRACE_TRACE_TYPE #ifndef __PPTRACE_ISIZE_TYPE #define __PPTRACE_ISIZE_TYPE PPTRACE_ISIZE_TYPE_TRACE #endif // defined __PPTRACE_ISIZE_TYPE #if (__PPTRACE_ISIZE_TYPE == PPTRACE_ISIZE_TYPE_OPCODE) && (__PPTRACE_BINARY_TYPE != PPTRACE_BINARY_TYPE_BFD) #undef __PPTRACE_ISIZE_TYPE #define __PPTRACE_ISIZE_TYPE PPTRACE_ISIZE_TYPE_TRACE #endif // (__PPTRACE_ISIZE_TYPE == PPTRACE_ISIZE_TYPE_OPCODE) && (__PPTRACE_BINARY_TYPE != PPTRACE_BINARY_TYPE_BFD) // Obscure internal structures #define PPTRACE_HIJACK_FUNCTION pptrace_hijack_list #define CONC(a,b) a##b #define CONCAT(a, b) CONC(a, b) #define STRINGIFY2(a) # a #define STRINGIFY(a) STRINGIFY2(a) #define PPTRACE_BASENAME PPTRACE_HIJACK_FUNCTION #define PPTRACE_SYMBOL_LIST(module_name) CONCAT(PPTRACE_BASENAME , _ ## module_name) #define PPTRACE_SYMBOL_ALIAS(module_name) STRINGIFY(PPTRACE_SYMBOL_LIST(module_name)) #define PPTRACE_SYMBOL_EXTERNAL(module_name) CONCAT(__ , PPTRACE_SYMBOL_LIST(module_name)) __attribute__ ((unused)) static void __get_pptrace_symbol_external(char*dest, unsigned buffer_size, const char*module_name); /* copy the pptrace external symbol string corresponding to module_name in buffer dest */ __attribute__ ((unused)) static void __get_pptrace_symbol_external(char*dest, unsigned buffer_size, const char*module_name) { char* prefix = STRINGIFY(PPTRACE_SYMBOL_EXTERNAL()); if(buffer_size>strlen(prefix)+strlen(module_name)) { sprintf(dest, "%s%s", prefix, module_name); } else { /* not enough space in the buffer */ dest[0]='\0'; } } #endif /* PPTRACE_CONFIG_H_ */ eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_stack.h0000644000000000000000000000013213020610460017331 xustar0030 mtime=1480790320.360264651 30 atime=1508138886.904193345 30 ctime=1508162367.797912906 eztrace-1.1-7/src/core/eztrace_stack.h0000644000175000017500000000207213020610460020521 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef EZTRACE_STACK_H #define EZTRACE_STACK_H #include "eztrace_list.h" typedef struct ezt_list_t ezt_stack_t; typedef struct ezt_list_token_t ezt_stack_token_t; /* todo: a stack is just like a list, but with different functions */ #define ezt_stack_empty(s) (ezt_list_empty(l)) /* create an empty stack */ static inline void ezt_stack_new(ezt_stack_t *s) { ezt_list_new(s); } /* add a new token to the stack */ static inline void ezt_stack_push(ezt_stack_t *s, ezt_stack_token_t *n) { ezt_list_add(s, n); } /* return a pointer to the token on top of the stack */ static inline ezt_stack_token_t* ezt_stack_get_top(ezt_stack_t *s) { return s->tail; } /* remove the token on top of the stack and return it. */ static inline ezt_stack_token_t* ezt_stack_pop(ezt_stack_t *s) { if (!s->tail) return NULL; ezt_stack_token_t* res = s->tail; ezt_list_remove(res); return res; } #endif /* EZTRACE_STACK_H */ eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_convert_macros.h0000644000000000000000000000013113045067416021265 xustar0029 mtime=1486122766.08222991 30 atime=1508138883.952119618 30 ctime=1508162367.801913255 eztrace-1.1-7/src/core/eztrace_convert_macros.h0000644000175000017500000001352013045067416022456 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef EZTRACE_CONVERT_MACROS_H #define EZTRACE_CONVERT_MACROS_H #include #define VERBOSE (*get_verbose()) #define NB_TRACES (*get_nb_traces()) #define NB_START (*get_nb_start()) #define CUR_TRACE (get_cur_trace()) #define SKIP (*get_skip()) #define STARTED (CUR_TRACE->start != 0) #define CUR_EV (get_cur_ev()) #define CUR_THREAD_ID LITL_READ_GET_TID(&CUR_TRACE->ev) #define CURRENT (double)(((LITL_READ_GET_TIME(&CUR_TRACE->ev) - CUR_TRACE->start_time)+CUR_TRACE->delay)/1000000.0) #define CUR_TIME(i) (uint64_t)((LITL_READ_GET_TIME(&get_traces(i)->ev) - get_traces(i)->start_time) + get_traces(i)->delay) #define NS_TO_MS(ns) ((double)(ns)/1000000.0) #define CUR_RANK (CUR_TRACE->rank) #define CUR_ID (CUR_TRACE->trace_id) #define CUR_INDEX (CUR_TRACE->id) #define FUNC_NAME __func_name(CUR_TRACE->id, CUR_THREAD_ID, CURRENT, __FUNCTION__) extern int __ezt_debug_level; #define EZT_CONVERT_PRINTF(_debug_level_, args...) { \ if(__ezt_debug_level >= _debug_level_) \ fprintf(stderr, ##args); \ } #define CREATE_TRACE_ID_STR(__var__, __trace_index__) \ asprintf (&(__var__), "P#%d", __trace_index__) /* create the process id string */ #define CREATE_PROCESS_ID_STR(__var__, __trace_id__) \ asprintf (&(__var__), "%s", __trace_id__) /* create the thread id string */ #define CREATE_THREAD_ID_STR(__var__, __trace_id__, __tid__) \ asprintf (&(__var__), "%s_T#%u", __trace_id__, __tid__) /* create the process name string */ #define CREATE_PROCESS_NAME_STR(__var__, __trace_index__) \ asprintf (&(__var__), "CT_Process #%d", __trace_index__) /* create the thread name string */ #define CREATE_THREAD_NAME_STR(__var__, __trace_id__, __tid__) \ asprintf (&(__var__), "%s_T#%llu", __trace_id__, (long long unsigned int) __tid__) static inline struct eztrace_container_t * get_thread_cont_from_id( int trace_id, int thread_id); /* get a pointer to container */ static inline struct eztrace_container_t* GET_ROOT_CONTAINER(int trace_index) { struct trace_t* ret = get_traces(trace_index); if (ret) return &ret->root_container; return NULL; } #define GET_PROCESS_CONTAINER(__trace_index__) GET_ROOT_CONTAINER(__trace_index__) #define GET_THREAD_CONTAINER(__trace_index__, __thread_id__) get_thread_cont_from_id(__trace_index__, __thread_id__) /* get a pointer to the info structure */ static inline struct process_info_t* GET_PROCESS_INFO(int trace_index) { struct eztrace_container_t* ret = GET_PROCESS_CONTAINER(trace_index); if (ret) return (struct process_info_t*) (ret->container_info); return NULL; } static inline struct thread_info_t* GET_THREAD_INFO(int trace_index, int thread_id) { struct eztrace_container_t* ret = GET_THREAD_CONTAINER(trace_index, thread_id); if (ret) return (struct thread_info_t*) (ret->container_info); return NULL; } /* get a pointer to the id string */ static inline char* GET_PROCESS_ID_STR(int trace_index) { struct eztrace_container_t* ret = GET_ROOT_CONTAINER(trace_index); if (ret) return ret->id; return NULL; } ; static inline char* GET_THREAD_ID_STR(int trace_index, int thread_id) { struct eztrace_container_t* ret = GET_THREAD_CONTAINER(trace_index, thread_id); if (ret) return ret->id; return NULL; } ; /* get a pointer to the name string */ static inline char* GET_PROCESS_NAME_STR(int trace_index) { struct eztrace_container_t* ret = GET_ROOT_CONTAINER(trace_index); if (ret) return ret->name; return NULL; } ; static inline char* GET_THREAD_NAME_STR(int trace_index, int thread_id) { struct eztrace_container_t* ret = GET_THREAD_CONTAINER(trace_index, thread_id); if (ret) return ret->name; return NULL; } ; /* Same as above, but the variable is declared. */ #define DECLARE_PROCESS_INFO(__var__, __trace_index__) \ struct process_info_t* __var__ = GET_PROCESS_INFO(__trace_index__); #define DECLARE_THREAD_INFO(__var__, __trace_index__, __thread_id__) \ struct thread_info_t* __var__ = GET_THREAD_INFO(__trace_index__, __thread_id__) #define DECLARE_PROCESS_ID_STR(__var__, __trace_index__) \ char* __var__ = GET_PROCESS_ID_STR(__trace_index__) #define DECLARE_PROCESS_NAME_STR(__var__, __trace_index__) \ char* __var__ = GET_PROCESS_NAME_STR(__trace_index__) #define DECLARE_THREAD_ID_STR(__var__, __trace_index__, __thread_id__) \ char *__var__ __attribute__ ((__unused__)); \ __var__ = GET_THREAD_ID_STR(__trace_index__, __thread_id__) #define DECLARE_THREAD_NAME_STR(__var__, __trace_index__, __thread_id__) \ char* __var__ = GET_THREAD_NAME_STR(__trace_index__, __thread_id__) /* declare a var variable that points to the current process */ #define DECLARE_CUR_PROCESS(var) \ struct process_info_t * var = GET_PROCESS_INFO(CUR_INDEX); \ { if(!(var)) handle_new_thread (); } /* declare a var variable that points to the current thread */ #define DECLARE_CUR_THREAD(var) \ struct thread_info_t * var = GET_THREAD_INFO(CUR_INDEX, CUR_THREAD_ID); \ { \ if(!(var)) { \ handle_new_thread (); \ var = GET_THREAD_INFO(CUR_INDEX, CUR_THREAD_ID); \ } \ } /* Use the CHANGE macro before any trace function that modifies a thread/process state. * Otherwise, when MPI_Init is grabbed and the timer reset, the trace will be a mess. */ #define CHANGE() if(CUR_TRACE->start) /* create an identifier for a specific application pointer * This identifier is only valid within the current process. */ #define CREATE_OBJECT_ID(varname, ptr) \ char *varname; \ { \ int __attribute__((unused)) \ ret = asprintf (&varname, \ "%s_ptr_%p", \ GET_PROCESS_ID_STR(CUR_INDEX), \ (app_ptr) ptr); \ } #endif /* EZTRACE_CONVERT_MACROS_H */ eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_loaded.c0000644000000000000000000000013113020610460017446 xustar0030 mtime=1480790320.360264651 30 atime=1508138883.828116521 29 ctime=1508162367.83391605 eztrace-1.1-7/src/core/eztrace_loaded.c0000644000175000017500000000155313020610460020642 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #include #include #include #include "eztrace_convert_core.h" /* This program list the available modules */ static void usage(int argc __attribute__((unused)), char **argv) { fprintf(stderr, "Usage : %s -h \n", argv[0]); } static void parse_args(int argc, char **argv) { int i; for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-h") == 0) { usage(argc, argv); exit(-1); } else if (strcmp(argv[i], "-v") == 0) { printf("Verbose mode turned on\n"); (*get_verbose()) = 1; } } } int main(int argc, char**argv) { /* parse the arguments passed to this program */ parse_args(argc, argv); load_modules(0); eztrace_convert_list(); return 0; } eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_config.h0000644000000000000000000000013113171135356017505 xustar0030 mtime=1508162286.819043512 29 atime=1508162287.45909584 30 ctime=1508162367.797912906 eztrace-1.1-7/src/core/eztrace_config.h0000644000175000017500000000715013171135356020700 0ustar00trahaytrahay00000000000000/* * Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis * See COPYING in top-level directory. * * * config.h -- Configuration parameters * * Created on: 02 juil. 2011 * Author: Damien Martin-Guillerez * */ #ifndef PPTRACE_CONFIG_H_ #define PPTRACE_CONFIG_H_ #include #include #define PPTRACE_DEBUG_LEVEL_NONE 0 #define PPTRACE_DEBUG_LEVEL_INFO 1 #define PPTRACE_DEBUG_LEVEL_VERBOSE 2 #define PPTRACE_DEBUG_LEVEL_DEBUG 3 #define PPTRACE_DEBUG_LEVEL_ALL 4 #define PPTRACE_BINARY_TYPE_BFD 1 // Requires -lbfd #define PPTRACE_BINARY_TYPE_ELF 2 // Requires -lelf #define PPTRACE_ARCH_TYPE_INTEL 1 // What else? #define PTRACE_TRACE_TYPE_LINUX 1 #define PTRACE_TRACE_TYPE_MACOSX 2 // Not Yet Implemented #define PTRACE_TRACE_TYPE_BSD 3 // Not Yet Implemented #define PPTRACE_ISIZE_TYPE_TRACE 1 #define PPTRACE_ISIZE_TYPE_OPCODE 2 // Requires -lopcodes and binary type bfd #define ENABLE_BIN_INSTRUMENTATION 1 #if ENABLE_BIN_INSTRUMENTATION #define ENABLE_BINARY_INSTRUMENTATION 1 #else #undef ENABLE_BINARY_INSTRUMENTATION #endif // Configuration // Syscall dependency #ifndef __PPTRACE_DEBUG_LEVEL #define __PPTRACE_DEBUG_LEVEL 0 #endif // defined __PPTRACE_DEBUG_LEVEL #ifndef __PPTRACE_BINARY_TYPE #define __PPTRACE_BINARY_TYPE 1 #endif // defined __PPTRACE_BINARY_TYPE #define HAVE_LIBOPCODE 1 #define HAVE_LIBBACKTRACE 0 #define USE_GETTID 0 #define DYNLIB_SUFFIX ".so" #define HAVE_PRCTL_H 1 #ifndef __PPTRACE_USE_PRCTL #if HAVE_PRCTL_H // This flag is set to use prctl for ptrace to allow child to trace its parent on hardened systems // Set it if prtcl.h, the prtcl() function and the PR_SET_PTRACER constant exists #define __PPTRACE_USE_PRCTL #endif /* HAVE_PRCTL_H */ #endif // defined __PPTRACE_USE_PRCTL #ifndef __PPTRACE_ARCH_TYPE #define __PPTRACE_ARCH_TYPE PPTRACE_ARCH_TYPE_INTEL #endif // defined __PPTRACE_ARCH_TYPE #ifndef __PPTRACE_TRACE_TYPE #define __PPTRACE_TRACE_TYPE PTRACE_TRACE_TYPE_LINUX #endif // defined __PPTRACE_TRACE_TYPE #ifndef __PPTRACE_ISIZE_TYPE #define __PPTRACE_ISIZE_TYPE PPTRACE_ISIZE_TYPE_TRACE #endif // defined __PPTRACE_ISIZE_TYPE #if (__PPTRACE_ISIZE_TYPE == PPTRACE_ISIZE_TYPE_OPCODE) && (__PPTRACE_BINARY_TYPE != PPTRACE_BINARY_TYPE_BFD) #undef __PPTRACE_ISIZE_TYPE #define __PPTRACE_ISIZE_TYPE PPTRACE_ISIZE_TYPE_TRACE #endif // (__PPTRACE_ISIZE_TYPE == PPTRACE_ISIZE_TYPE_OPCODE) && (__PPTRACE_BINARY_TYPE != PPTRACE_BINARY_TYPE_BFD) // Obscure internal structures #define PPTRACE_HIJACK_FUNCTION pptrace_hijack_list #define CONC(a,b) a##b #define CONCAT(a, b) CONC(a, b) #define STRINGIFY2(a) # a #define STRINGIFY(a) STRINGIFY2(a) #define PPTRACE_BASENAME PPTRACE_HIJACK_FUNCTION #define PPTRACE_SYMBOL_LIST(module_name) CONCAT(PPTRACE_BASENAME , _ ## module_name) #define PPTRACE_SYMBOL_ALIAS(module_name) STRINGIFY(PPTRACE_SYMBOL_LIST(module_name)) #define PPTRACE_SYMBOL_EXTERNAL(module_name) CONCAT(__ , PPTRACE_SYMBOL_LIST(module_name)) __attribute__ ((unused)) static void __get_pptrace_symbol_external(char*dest, unsigned buffer_size, const char*module_name); /* copy the pptrace external symbol string corresponding to module_name in buffer dest */ __attribute__ ((unused)) static void __get_pptrace_symbol_external(char*dest, unsigned buffer_size, const char*module_name) { char* prefix = STRINGIFY(PPTRACE_SYMBOL_EXTERNAL()); if(buffer_size>strlen(prefix)+strlen(module_name)) { sprintf(dest, "%s%s", prefix, module_name); } else { /* not enough space in the buffer */ dest[0]='\0'; } } #endif /* PPTRACE_CONFIG_H_ */ eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_convert_types.h0000644000000000000000000000013213143047722021143 xustar0030 mtime=1502367698.660456018 30 atime=1508138883.432106631 30 ctime=1508162367.805913605 eztrace-1.1-7/src/core/eztrace_convert_types.h0000644000175000017500000000665313143047722022344 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef EZTRACE_CONVERT_TYPES_H #define EZTRACE_CONVERT_TYPES_H #include #include #include "eztrace_types.h" #include "litl_types.h" #include "litl_read.h" #include "eztrace_hook.h" // Define a general event type typedef litl_read_event_t eztrace_event_t; typedef litl_read_trace_t* eztrace_block_t; struct eztrace_convert_module; struct process_info_t; struct thread_info_t; struct trace_t; enum eztrace_mode { EZTRACE_STATS, EZTRACE_CONVERT, }; typedef enum eztrace_mode eztrace_mode_t; /* Describe a plugin */ struct eztrace_convert_module { uint32_t api_version; int (*init)(); int (*handle)(eztrace_event_t* ev); int (*handle_stats)(eztrace_event_t* ev); void (*print_stats)(); uint8_t module_prefix; char* name; char* description; struct ezt_list_token_t token; }; enum container_type_t { process, thread, }; /* contains generic information about a process or a thread */ struct eztrace_container_t { char* id; /* string that identify the object */ char* name; /* string that describes the object */ struct eztrace_container_t *parent; /* parent container */ unsigned nb_children; /* number of children containers */ struct eztrace_container_t **children; /* list of children containers */ enum container_type_t container_type; void* container_info; /* pointer to a process_info_t or thread_info_t */ struct trace_t *p_trace; /* pointer to the trace that describe this process */ struct hierarchical_array* arrays; struct eztrace_counter* counters; double start_timestamp; /* date of creation */ double end_timestamp; /* date of destruction */ }; struct expected_code_t { uint64_t code; sem_t semaphore; struct expected_code_t* next; }; /* Contains information about a thread. */ struct thread_info_t { int tid; /* thread id */ struct eztrace_container_t *container; /* container that corresponds to this thread */ int to_be_killed; struct expected_code_t *expected_code; sem_t to_process; pthread_t *processing_thread; struct ezt_hook_list_t hooks; /* list of hooks */ }; /* Contains information about a process. */ struct process_info_t { int pid; /* process id */ struct eztrace_container_t *container; /* container that corresponds to this process */ struct ezt_hook_list_t hooks; }; struct trace_t { uint64_t start_time; /* first timestamp of the trace */ uint64_t delay; /* if the trace started later than the other ones (ie. comm_spawn) */ char* input_filename; char* trace_id; /* Identifier of the trace in the output file */ eztrace_block_t block; litl_size_t trace_index; eztrace_event_t ev; int id; /* identifier in the traces array */ int rank; /* MPI rank. It may be different from the id */ int start; /* set to 0 until the MPI_Init happen */ int done; /* No more event to handle */ int skip; /* Skip this trace. This is used when we have to wait for another trace to produce an event (mpi_comm_spawn for example) */ int line_number; struct eztrace_container_t root_container; /* process corresponding to the trace */ }; struct eztrace_event_handler { int cur_trace_nb; int nb_done; int nb_handled; sem_t events_processed; }; struct eztrace_archive_info { char* filename; eztrace_block_t block; struct eztrace_archive_info *next; }; #endif /* EZTRACE_CONVERT_TYPES_H */ eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_plugin_generator.in0000644000000000000000000000013213114024125021750 xustar0030 mtime=1496328277.729504266 30 atime=1508162286.719035342 30 ctime=1508162367.809913953 eztrace-1.1-7/src/core/eztrace_plugin_generator.in0000755000175000017500000001570613114024125023153 0ustar00trahaytrahay00000000000000#!/usr/bin/perl -w # Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis # See COPYING in top-level directory. use File::Temp qw/ tempfile tempdir /; use File::Copy; use Getopt::Long; my $prefix; my $exec_prefix; my $libdir; my $includedir; my $bindir; my $create_plugin_options = ""; BEGIN { $prefix="@prefix@"; $exec_prefix="@exec_prefix@"; $libdir="@libdir@"; $includedir="@includedir@"; $bindir="@bindir@"; } sub parse_options { my $backtrace=""; GetOptions ('backtrace|b' => \$backtrace); if($backtrace ne "") { $create_plugin_options .= "-b"; } } parse_options(); my $indent_fortran="$prefix/bin/eztrace_indent_fortran"; # format a source file so that function prototypes # are properly formatted (eg. everything on line line) sub format_source_file( $ ) { my $fname = shift; my $fh; my $filename; my $suffix; if( $fname =~ m/.+\.c$/) { $suffix=".c"; } elsif( $fname =~ m/.+\.cpp$/) { $suffix=".cpp"; } elsif( $fname =~ m/.+\.f$/) { # todo .f77, .f90, .F, etc. $suffix=".f"; } ($fh, $filename) = tempfile(SUFFIX=>$suffix); copy($fname, $filename) or die "Copy failed: $!"; if($suffix eq ".c") { `indent -npsl --line-length10000 $filename`; } if($suffix eq ".cpp") { `indent -npsl --line-length10000 $filename`; } if($suffix eq ".f") { `$indent_fortran $fname $filename`; } return $filename; } # return the prototype of function $fname extracted from $filename sub extract_prototype( $$ ) { my $fname=shift; my $filename=shift; # in some cases, fname main contain (). Remove these parenthesis $fname =~ s/\(\s*\)//; # don't instrument the main function if($fname eq "main") { return ""; } # format the source code my $new_filename=format_source_file($filename); # extract symbols my $program_language; my $symbols=""; if ($new_filename =~ m/.\.c/) { $program_language="C"; $symbols=`ctags --c-kinds=pf --fields=+S -x $new_filename`; } elsif ($new_filename =~ m/.\.cpp/) { $program_language="CPP"; $symbols=`ctags --c++-kinds=pf --fields=+S -x $new_filename`; } elsif ($new_filename =~ m/.\.f/) { $prototype = "void ".$fname."()"; $symbols=`ctags --fortran-kinds=pfis --fields=+S -x $new_filename`; } else { # example: f90, c++, etc. # not implemented printf "Cannot extract information about function %s: file format not supported\n", $fname; printf "\tAssuming the function prototype is void %s()\n", $fname; $prototype = "void ".$fname."()"; unlink($new_filename); return $prototype; } my $fortran_fname=$fname; $fortran_fname=~ s/_$//; my @symbol_list = split('\n', $symbols); foreach $symbol(@symbol_list) { # each line should look like this: # function 22 if($symbol =~ m/^($fname)\s+(function)\s+\d+\s+\S+\s+(.+)/) { # fname was found. return the corresponding prototype ($prototype) = ($symbol =~ m/$fname\s+function\s+\d+\s+\S+\s+(.+)$/); unlink($new_filename); # remove any /* ... */ comment that we might have found $prototype =~ s/\/\*.*\*\///g; return $prototype; } # for fortran files, each line looks like this # subroutine 95 subroutine if($symbol =~ m/^($fortran_fname)\s+subroutine/) { # fname was found. return the corresponding prototype printf "$fname found in a subroutine\n"; ($prototype) = ($symbol =~ m/$fortran_fname\s+subroutine\s+\d+\s+\S+\s+(.+)$/); unlink($new_filename); # remove any /* ... */ comment that we might have found $prototype =~ s/\/\*.*\*\///g; # replace ^subroutine with void $prototype =~ s/^subroutine $fortran_fname/void $fname/; $prototype =~ s/>//g; # cast each parameter to int* $prototype =~ s/\(\s*(\S+)/\(int *$1/; $prototype =~ s/,/, int */g; if($prototype !~ m/\(/) { printf("Proto doesnt contain parenthesis!\n"); $prototype .= "( )"; } return $prototype; } } # not found unlink($new_filename); return ""; } if (@ARGV<1) { printf "Usage: eztrace_plugin_generator \n"; exit 1; } my $input_file=$ARGV[0]; my $input_file_parsed=$input_file; $input_file_parsed =~ s/\//_/g; $input_file_parsed =~ s/-/_/g; $input_file_parsed =~ s/\./_/g; my $output_file=$input_file_parsed.".tpl"; my $plugin_dir="plugin_".$input_file_parsed; my $module_name=$input_file_parsed; $module_name =~ s/\./_/g; open($output_handle, '>', $output_file) or die "Couldn't open $output_file for writing!"; printf $output_handle "BEGIN_MODULE\n"; printf $output_handle "NAME %s\n", $module_name; printf $output_handle "DESC \"Module for the %s program\"\n", $input_file; printf $output_handle "\n"; printf $output_handle "# In this section, insert the #include/#define directives that are needed for\n"; printf $output_handle "# compiling\n"; printf $output_handle "BEGIN_INCLUDE\n"; printf $output_handle "\n"; printf $output_handle "END_INCLUDE\n\n"; printf $output_handle "\n"; printf $output_handle "# In this section, insert the CFLAGS that are needed for compiling\n"; printf $output_handle "BEGIN_CFLAGS\n"; printf $output_handle "\n"; printf $output_handle "END_CFLAGS\n"; printf $output_handle "\n"; printf $output_handle "# In this section, insert the LDFLAGS that are needed for compiling\n"; printf $output_handle "BEGIN_LDFLAGS\n"; printf $output_handle "\n"; printf $output_handle "END_LDFLAGS\n"; printf $output_handle "\n"; my $symbols=`nm --demangle --defined -l $input_file`; my @symbol_list = split('\n', $symbols); my $nb_symbols=0; printf "Creating the plugin script %s\n", $output_file; foreach $symbol(@symbol_list) { if( $symbol =~ m/\s+T\s+(.+)\s+(.+)/ ) { ($fname, $file) = ( $symbol =~ m/\s+T\s+(\S+)\s+(.+):/ ); my $proto=extract_prototype($fname, $file); if ($proto ne "") { $nb_symbols++; printf "\tFound '%s'\n", $proto; printf $output_handle "%s\n\n", $proto; } } } printf $output_handle "END_MODULE\n"; close($output_handle); if ( $nb_symbols == 0) { # No symbol found printf "No symbol found!\n"; printf "Make sure the program contains debugging symbols (ie. compile it with -the -g option)\n"; exit ; } printf "%d symbols found\n", $nb_symbols; printf "\nGenerating the plugin...\n"; printf "\t\$ %s/eztrace_create_plugin %s -o %s %s\n", $bindir, $create_plugin_options, $plugin_dir, $output_file; `$bindir/eztrace_create_plugin $create_plugin_options -o $plugin_dir $output_file`; if ( $? != 0) { die "Plugin creation failed !\n"; } printf "\nCompiling the plugin...\n"; printf "\t\$ make -C %s\n", $plugin_dir; `make -C $plugin_dir`; if ( $? != 0) { die "Compilation failed ! Please fix the ".$output_file." template file and re-run the eztrace_create_plugin command\n"; } printf "\nYou can now use the generated plugin by setting the following environment variables:\n"; printf "\t\$ export EZTRACE_LIBRARY_PATH=\$EZTRACE_LIBRARY_PATH:%s\n", `readlink -f $plugin_dir`; eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_sampling.c0000644000000000000000000000013213020610460020031 xustar0030 mtime=1480790320.360264651 30 atime=1508138883.228101536 30 ctime=1508162367.813914303 eztrace-1.1-7/src/core/eztrace_sampling.c0000644000175000017500000001041713020610460021223 0ustar00trahaytrahay00000000000000#include #include #include #include #include "eztrace_sampling.h" /* perform dest = src+interval on timeval structures */ #define UPDATE_TIMEVAL(dest, src, interval) do {\ (dest).tv_sec = (src).tv_sec + ((interval)/((unsigned)1e6)); \ (dest).tv_usec = (src).tv_usec + ((interval)%((unsigned)1e6)); \ } while(0) #define TIME_DIFF(t1, t2) \ ((t2.tv_sec - t1.tv_sec) * 1000000 + (t2.tv_usec - t1.tv_usec)) #define MAX_SAMPLING_CALLBACKS 100 static struct ezt_sampling_callback_instance callback_instances[MAX_SAMPLING_CALLBACKS]; static int nb_sampling_callbacks = 0; static struct timeval next_call={.tv_sec=0, .tv_usec=0}; struct __ezt_sampling_thread_instance { struct ezt_sampling_callback_instance callback[MAX_SAMPLING_CALLBACKS]; int nb_callbacks; struct timeval next_call; }; static pthread_key_t __ezt_sampling_thread_key; static pthread_once_t once_control; /* Initialize thread-specific data */ struct __ezt_sampling_thread_instance * __ezt_sampling_init_thread() { if(!nb_sampling_callbacks) /* nothing to process */ return NULL; static int first = 1; if(first) /* This is the first thread that is initialized. We need to create the pthread_key */ pthread_key_create(&__ezt_sampling_thread_key, NULL ); first = 0; struct __ezt_sampling_thread_instance * ptr = NULL; /* Allocate the thread-specific data */ ptr = malloc(sizeof(struct __ezt_sampling_thread_instance)); ptr->nb_callbacks = nb_sampling_callbacks; struct timeval cur_time; gettimeofday(&cur_time, NULL); /* copy the callbacks */ unsigned min_interval = callback_instances[0].interval; int i; for(i=0; i< ptr->nb_callbacks; i++) { if(callback_instances[i].interval < min_interval) min_interval = callback_instances[i].interval; ptr->callback[i].callback = callback_instances[i].callback; ptr->callback[i].interval = callback_instances[i].interval; UPDATE_TIMEVAL(ptr->callback[i].last_call, cur_time, 0); ptr->callback[i].plugin_data = NULL; } UPDATE_TIMEVAL(ptr->next_call, cur_time, min_interval); /* set the structure Thread-specific */ (void) pthread_setspecific(__ezt_sampling_thread_key, ptr); return ptr; } /* Calls registered callbacks if needed */ void ezt_sampling_check_callbacks() { if(nb_sampling_callbacks) { struct __ezt_sampling_thread_instance *ptr = NULL; struct timeval cur_time; gettimeofday(&cur_time, NULL ); pthread_once(&once_control, (void (*)(void))__ezt_sampling_init_thread); if ((ptr = pthread_getspecific(__ezt_sampling_thread_key)) == NULL ) { /* First time this thread check for callbacks */ ptr = __ezt_sampling_init_thread(); if (!ptr) { return; } } if(TIME_DIFF(cur_time, ptr->next_call) < 0) { /* we need to call add least one callback */ int i; /* browse the list of registered callbacks */ for(i=0; inb_callbacks; i++) { struct ezt_sampling_callback_instance *callback = &ptr->callback[i]; if(TIME_DIFF(callback->last_call, cur_time) >= (long long)callback->interval) { /* execute the callback */ int ret = callback->callback(callback); if(ret == 0) { /* update the timer */ UPDATE_TIMEVAL(callback->last_call, cur_time, 0); /* update ptr->next_call */ if(TIME_DIFF(cur_time, ptr->next_call) > callback->interval) { /* this callback is the next one */ UPDATE_TIMEVAL(ptr->next_call, cur_time, callback->interval); } } } } } } } /* todo: distinguish thread-specific callbacks from process-specific callbacks * todo: add the possibility to add an alarm */ /* interval: time in microsecond between calls to callback */ void ezt_sampling_register_callback(ezt_sampling_callback_t callback, unsigned interval) { nb_sampling_callbacks++; callback_instances[nb_sampling_callbacks-1].callback = callback; callback_instances[nb_sampling_callbacks-1].interval = interval; callback_instances[nb_sampling_callbacks-1].last_call.tv_sec = 0; callback_instances[nb_sampling_callbacks-1].last_call.tv_usec = 0; struct timeval cur_time; gettimeofday(&cur_time, NULL); if(TIME_DIFF(cur_time, next_call) > interval) { /* this callback is the next one */ UPDATE_TIMEVAL(next_call, cur_time, interval); } } eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace.c0000644000000000000000000000013213171135356016154 xustar0030 mtime=1508162286.791041224 30 atime=1508162287.451095186 30 ctime=1508162367.825915351 eztrace-1.1-7/src/core/eztrace.c0000644000175000017500000001660713171135356017355 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE #include #include #include #include #include #include #include "pptrace.h" #include "eztrace.h" extern int pptrace_debug_level; extern char **environ; void set_launcher_env() { setenv("TESTLAUNCHER", "1", 1); } void unset_launcher_env() { setenv("TESTLAUNCHER", "0", 1); } int file_exists(const char *pathname) { if (access(pathname, F_OK) != -1) { return 1; // file exists } return 0; } int str_ends_with(char *str, char *end) { size_t str_len = strlen(str); size_t end_len = strlen(end); char *str_end = str + str_len - end_len; return strcmp(str_end, end) == 0; } void usage(const char *prog_name) { printf("Usage: %s [OPTION] program [arg1 arg2 ...]\n", prog_name); printf("\t-t \"plugin1 plugin2 ... pluginN\" Select a list of plugins\n"); printf("\t-o Select the output directory\n"); printf("\t-l Select a plugin directory\n"); printf("\t-f Enable EZTRACE_FLUSH\n"); printf("\t-d Debug mode\n"); printf("\t-? -h Display this help and exit\n"); /* todo: add a verbose mode */ } static char* get_env_str(const char* env_name, const char* suffix) { char* tmp = getenv(env_name); int string_length = 1; char* res = NULL; if ((tmp == NULL || tmp[0] == '\0') && suffix == NULL) return NULL; if (tmp && !suffix) return strdup(tmp); if (!tmp && suffix) return strdup(suffix); string_length += strlen(tmp) + strlen(suffix); res = calloc(string_length, sizeof(char)); sprintf(res, "%s%s", tmp, suffix); return res; } /* add to_add to an already allocated string */ static char* add_to_str(char* dest_str, const char* to_add) { int len = strlen(dest_str) + strlen(to_add) + 1; dest_str = realloc(dest_str, len); strcat(dest_str, to_add); return dest_str; } int main(int argc, char **argv) { int debug = 0; int i, j = 0; int test = 0; char* libdir=NULL; char *ezt_library_path = NULL; int nb_opts = 0; // options char *prog_name = NULL; // prog_name void *bin = NULL; int nb_modules = 0; for (i = 1; i < argc; i++) { if (!strcmp(argv[i], "-d")) { debug = 1; nb_opts++; } else if (!strcmp(argv[i], "-p")) { test = 1; nb_opts++; } else if (!strcmp(argv[i], "-t")) { setenv("EZTRACE_TRACE", argv[i + 1], 1); i++; nb_opts += 2; } else if (!strcmp(argv[i], "-o")) { setenv("EZTRACE_TRACE_DIR", argv[i + 1], 1); i++; nb_opts += 2; } else if (!strcmp(argv[i], "-l")) { setenv("EZTRACE_LIBRARY_PATH", argv[i + 1], 1); i++; nb_opts += 2; } else if (!strcmp(argv[i], "-f")) { setenv("EZTRACE_FLUSH", "1", 1); nb_opts++; } else if (!strcmp(argv[i], "-?") || !strcmp(argv[i], "-h")) { usage(argv[0]); return EXIT_SUCCESS; } else if (argv[i][0] == '-' && argv[i][1] == 'v') { nb_opts++; for (j = 1; argv[i][j] == 'v'; j++) pptrace_debug_level++; } else { /* Unknown parameter name. It's probably the program name. We can stop * parsing the parameter list. */ break; } } // list of enabled module char *ezt_trace = get_env_str("EZTRACE_TRACE", ""); if(!test) { int len = strlen(EZTRACE_LIB_DIR); libdir=malloc(sizeof(char)*(len+2)); snprintf(libdir, len+2, ":%s", EZTRACE_LIB_DIR); } // user libs env variable ezt_library_path = get_env_str("EZTRACE_LIBRARY_PATH", libdir); prog_name = argv[nb_opts + 1]; if (prog_name == NULL) { usage(argv[0]); return EXIT_SUCCESS; } // init binary & catch all modules bin = pptrace_prepare_binary(prog_name); if (!bin) { fprintf(stderr, "Unable to load binary %s\n", prog_name); return EXIT_FAILURE; } // modules in ezt_trace if (ezt_trace != NULL) { char *module = strtok(ezt_trace, " "); while (module != NULL && ++nb_modules) module = strtok(NULL, " "); free(ezt_trace); if(nb_modules == 0) { unsetenv("EZTRACE_TRACE"); ezt_trace=NULL; } } char *modules[nb_modules]; if (nb_modules != 0) { // we have to get EZTRACE_TRACE again because we strtok-ed it ezt_trace = get_env_str("EZTRACE_TRACE", ""); char *module = strtok(ezt_trace, " "); i = 0; while (module != NULL) { modules[i++] = module; module = strtok(NULL, " "); } } // dirs in ezt_library_path int nb_dirs = 0; if (ezt_library_path != NULL) { char *dir = strtok(ezt_library_path, ":"); while (dir != NULL && ++nb_dirs) dir = strtok(NULL, ":"); free(ezt_library_path); } char *dirs[nb_dirs]; if (nb_dirs != 0) { // we have to get EZTRACE_LIBRARY_PATH again because we strtok-ed it ezt_library_path = get_env_str("EZTRACE_LIBRARY_PATH",libdir); char *dir = strtok(ezt_library_path, ":"); i = 0; while (dir != NULL) { dirs[i++] = dir; dir = strtok(NULL, ":"); } } // libeztrace should always be preloaded! char *files = NULL; if (test) { fprintf(stderr, "Eztrace test Mode\n"); files = strdup(EZTRACE_ABS_TOP_BUILDDIR); files = add_to_str(files, "src/core/.libs/libeztrace-autostart.so"); } else { files = strdup(EZTRACE_LIB_DIR); files = add_to_str(files, "libeztrace-autostart.so"); } if (pptrace_add_preload(bin, files)) { fprintf(stderr, "Unable to add %s to LD_PRELOAD\n", files); return EXIT_FAILURE; } set_launcher_env(); if (ezt_trace != NULL) { for (i = 0; i < nb_modules; i++) { int module_found=0; for (j = 0; j < nb_dirs; j++) { char *pathname = strdup(dirs[j]); pathname = add_to_str(pathname, "/libeztrace-autostart-"); pathname = add_to_str(pathname, modules[i]); pathname = add_to_str(pathname, ".so"); if (file_exists(pathname)) { module_found=1; if (pptrace_load_module(bin, pathname)) { fprintf(stderr, "Unable to add %s to LD_PRELOAD\n", pathname); return EXIT_FAILURE; } files = add_to_str(files, ":"); files = add_to_str(files, pathname); } free(pathname); } if(!module_found) { fprintf(stderr,"[EZTrace] cannot find module %s\n", modules[i]); } } free(ezt_trace); } else { for (i = 0; i < nb_dirs; i++) { char *pathname = dirs[i]; struct dirent *dirent; DIR *d = opendir(pathname); while ((dirent = readdir(d))) { if (!strncmp(dirent->d_name, "libeztrace-autostart-", 21) && str_ends_with(dirent->d_name, ".so")) { char *file = strdup(pathname); file = add_to_str(file, "/"); file = add_to_str(file, dirent->d_name); if (pptrace_load_module(bin, file)) { fprintf(stderr, "Unable to add %s to LD_PRELOAD\n", file); return EXIT_FAILURE; } files = add_to_str(files, ":"); files = add_to_str(files, file); free(file); } } closedir(d); } } free(ezt_library_path); unset_launcher_env(); // run if (debug) { // TODO: make it configurable char *debugger[5]; debugger[0] = "gdb"; debugger[1] = "-quiet"; debugger[2] = "{name}"; debugger[3] = "{pid}"; debugger[4] = NULL; pptrace_add_debugger(bin, debugger); } if (pptrace_run(bin, argv + nb_opts + 1, environ)) { fprintf(stderr, "Unable to run the target\n"); return EXIT_FAILURE; } return EXIT_SUCCESS; } eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_types.h0000644000000000000000000000013213020610460017370 xustar0030 mtime=1480790320.360264651 30 atime=1508138883.412106132 30 ctime=1508162367.801913255 eztrace-1.1-7/src/core/eztrace_types.h0000644000175000017500000000077413020610460020567 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef EZTRACE_TYPES_H #define EZTRACE_TYPES_H /* This header contains the data types that are used by both eztrace and * eztrace_convert/eztrace_stats */ /* application pointer. This pointer is invalid in the current * process, but its value corresponds to an object in the * application. */ typedef intptr_t app_ptr; #endif/* EZTRACE_TYPES_H */ eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_hierarchical_array.c0000644000000000000000000000013213020610460022033 xustar0030 mtime=1480790320.360264651 30 atime=1508138883.968120018 30 ctime=1508162367.817914652 eztrace-1.1-7/src/core/eztrace_hierarchical_array.c0000644000175000017500000001026613020610460023227 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #include #include #include "eztrace_stats_core.h" #include "eztrace_hierarchical_array.h" #define MAX_ARRAYS 16 #define DEFAULT_ALLOC_NB 128 /* todo: make this dynamic */ static struct hierarchical_array root_arrays[MAX_ARRAYS]; static unsigned nb_arrays = 0; struct hierarchical_array* hierarchical_array_find( eztrace_counter_id counter_id, p_eztrace_container p_cont) { struct hierarchical_array* arrays = root_arrays; if (p_cont) arrays = p_cont->arrays; unsigned int i; for (i = 0; i < nb_arrays; i++) { if (arrays[i].id == counter_id) return &arrays[i]; } return NULL; } static void __hierarchical_array_expand(struct hierarchical_array* p_array, unsigned nb_item_to_alloc) { p_array->nb_allocated += nb_item_to_alloc; /* initialize the new array */ struct hierarchical_array_data* new_array = malloc( sizeof(struct hierarchical_array_data)); new_array->p_array = p_array; new_array->next = NULL; new_array->nb_allocated = nb_item_to_alloc; new_array->nb_items = 0; new_array->values = malloc(p_array->item_size * nb_item_to_alloc); /* insert the new array at the end of p_array */ if (p_array->last) { p_array->last->next = new_array; p_array->last = p_array->last->next; } else { /* the array is empty */ p_array->first = new_array; p_array->last = new_array; } } static void __hierarchical_array_init(struct hierarchical_array* p_array, eztrace_counter_id id, unsigned item_size) { assert(p_array); p_array->id = id; p_array->item_size = item_size; p_array->nb_items = 0; p_array->nb_allocated = 0; p_array->first = NULL; p_array->last = NULL; __hierarchical_array_expand(p_array, DEFAULT_ALLOC_NB); } /* Create a new counter whose id is counter_id. This counter contains vectors that consist in * vector_size items. The names of each of the vector item are stores in names */ void hierarchical_array_attach(eztrace_counter_id counter_id, unsigned item_size) { if (nb_arrays >= MAX_ARRAYS) { fprintf(stderr, "Too many arrays\n"); exit(1); } struct hierarchical_array *cur_array = &root_arrays[nb_arrays]; /* check wether counter_id isn't already used */ if (hierarchical_array_find(counter_id, NULL)) { fprintf(stderr, "Error: Counter %d is already used!\n", counter_id); abort(); } /* initialize the array structure */ __hierarchical_array_init(cur_array, counter_id, item_size); nb_arrays++; } /* Allocate counters in a newly created container */ void hierarchical_array_new_container(p_eztrace_container p_cont) { assert(p_cont); p_cont->arrays = malloc(sizeof(struct hierarchical_array) * nb_arrays); unsigned int i; for (i = 0; i < nb_arrays; i++) { __hierarchical_array_init(&(p_cont->arrays[i]), root_arrays[i].id, root_arrays[i].item_size); } } /* return the number of items in the array (for a specific container) */ unsigned hierarchical_array_size(p_eztrace_container p_cont, eztrace_counter_id counter_id) { struct hierarchical_array* array = hierarchical_array_find(counter_id, p_cont); assert(array); return array->nb_items; } /* return the ith items of an array (for a specific container) */ void* hierarchical_array_get_item(p_eztrace_container p_cont, eztrace_counter_id counter_id, unsigned index) { struct hierarchical_array* array = hierarchical_array_find(counter_id, p_cont); assert(array); assert(array->nb_items > index); return ITH_ITEM(index, array); } /* return a new item of an array (for a specific container) */ void* hierarchical_array_new_item(p_eztrace_container p_cont, eztrace_counter_id counter_id) { struct hierarchical_array* array = hierarchical_array_find(counter_id, p_cont); assert(array); if (array->nb_items >= array->nb_allocated) { /* no space left in the array, expand it */ __hierarchical_array_expand(array, array->nb_allocated); assert(array->nb_items < array->nb_allocated); } void* res = ITH_ITEM(array->nb_items, array); array->nb_items++; return res; } eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_core.c0000644000000000000000000000013213143047722017162 xustar0030 mtime=1502367698.660456018 30 atime=1508138883.260102336 30 ctime=1508162367.809913953 eztrace-1.1-7/src/core/eztrace_core.c0000644000175000017500000004254713143047722020365 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include "ev_codes.h" #include "eztrace.h" #include "eztrace_config.h" #if HAVE_LIBBACKTRACE #include #include #endif static void __eztrace_run_atexit_functions(); static pthread_key_t protect_on; struct __ezt_write_trace __ezt_trace; static void init_recursion_shield() { static int init_done = 0; if (!init_done) { pthread_key_create(&protect_on, NULL); init_done = 1; } } #ifndef EZTRACE_AUTOSTART void eztrace_register_init_routine(eztrace_function_t init_func) { __ezt_trace.init_routines[__ezt_trace.nb_module++] = init_func; } #endif /* EZTRACE_AUTOSTART */ static void __eztrace_set_buffer_size() { char* res = getenv("EZTRACE_BUFFER_SIZE"); if (res) { __ezt_trace.buffer_size = atoi(res); } } static char* __eztrace_get_filedir() { char* res = getenv("EZTRACE_TRACE_DIR"); if (!res) asprintf(&res, "."); return res; } void eztrace_set_filename(char* name) { int total_size = strlen(__eztrace_get_filedir()); total_size += strlen(getenv("USER")); total_size += strlen(name); total_size += 3; /* add 3 chars ('/', '_', '\0') */ if(__ezt_trace.filename) free(__ezt_trace.filename); __ezt_trace.filename = malloc(total_size); sprintf(__ezt_trace.filename, "%s/%s_%s", __eztrace_get_filedir(), getenv("USER"), name); litl_write_set_filename(__ezt_trace.litl_trace, __ezt_trace.filename); } /* return the library name from a symbol string */ static char* get_lib_name(char*symbol) { char* ret; int begin = 0; int end = -1; int i = 0; /* the format of symbol is : '/path/to/libxxx.so (function+0xoffset) [0xaddress]*/ /* so we need to locate the last / and the first ( */ while (symbol[i] != 0) { if (symbol[i] == '/') begin = i + 1; if (symbol[i] == '(') { end = i; break; } i++; } ret = &symbol[begin]; /* replace ( with a \0 */ if (end >= 0) symbol[end] = 0; return ret; } /* return the function name (or library name if the function name is unknown) * from a symbol string. * This function may alter the symbol string. */ static char* get_function_name(char* symbol) { char* ret = symbol; int len = strlen(symbol); int begin=0; int end=0; int i; /* the format of symbol is : 'libxxx.so (function+0xoffset) [0xaddress]*/ /* the goal is to retrieve the function+0xoffset string */ for (i = 0; i < len; i++) { if (symbol[i] == '(') { begin = i; if (symbol[i + 1] == '+' || symbol[i + 1] == ')') { return get_lib_name(symbol); } } if (symbol[i] == ')') { end = i; break; } } if(begin == 0) { return symbol; } ret = &symbol[begin + 1]; symbol[end] = 0; return ret; } void eztrace_error_handler(int signo) { static volatile int shield = 0; /* in case several thread receive signals simultaneously, only the first one * handle it. */ while (shield) ; shield = 1; set_recursion_shield_on(); EZT_PRINTF(0, "[EZTrace] signal %d catched. my pid=%d\n", signo, getpid()); void* buffer[50]; /* get pointers to functions */ int nb_calls = backtrace(buffer, 50); char **functions; functions = backtrace_symbols(buffer, nb_calls); int i; EZTRACE_EVENT_PACKED_2(EZTRACE_SIGNAL_RECEIVED, signo, nb_calls); eztrace_record_backtrace(nb_calls); set_recursion_shield_off(); } void eztrace_signal_handler(int signo) { static volatile int shield = 0; /* in case several thread receive signals simultaneously, only the first one * handle it. */ while (shield) ; shield = 1; EZT_PRINTF(0, "EZTrace received signal %d...\n", signo); if (signo == SIGSEGV) eztrace_error_handler(signo); eztrace_stop(); EZT_PRINTF(0, "Signal handling done\n"); exit(EXIT_FAILURE); //signal(signo, SIG_DFL); } /* when an alarm signal is received, check for sampling information */ void __eztrace_alarm_sighandler(int signo __attribute__((unused))){ ezt_sampling_check_callbacks(); } #ifdef __linux__ long __ezt_alarm_interval = 0; int alarm_enabled = 0; int alarm_set = 0; void eztrace_set_alarm() { if(__ezt_alarm_interval>=0 && alarm_enabled && (! alarm_set)) { alarm_set = 1; struct sigevent sevp; sevp.sigev_notify=SIGEV_THREAD_ID | SIGEV_SIGNAL; sevp.sigev_signo=SIGALRM; sevp.sigev_value.sival_int=0; sevp.sigev_notify_function = NULL; sevp.sigev_notify_attributes=NULL; sevp._sigev_un._tid = CUR_TID; timer_t *t = malloc(sizeof(timer_t)); int ret = timer_create(CLOCK_REALTIME, &sevp, t); if(ret != 0){ perror("timer create failed"); abort(); } struct itimerspec new_value, old_value; new_value.it_interval.tv_sec=0; new_value.it_interval.tv_nsec=__ezt_alarm_interval; new_value.it_value.tv_sec=0; new_value.it_value.tv_nsec=__ezt_alarm_interval; ret = timer_settime(*t,0, &new_value, &old_value); if(ret != 0){ perror("timer settime failed"); abort(); } } } #else void eztrace_set_alarm() { } #endif static void __eztrace_set_sighandler() { char* res = getenv("EZTRACE_NO_SIGNAL_HANDLER"); if (!res || !strncmp(res, "0", 2)) { signal(SIGSEGV, eztrace_signal_handler); signal(SIGINT, eztrace_signal_handler); signal(SIGTERM, eztrace_signal_handler); signal(SIGABRT, eztrace_signal_handler); signal(SIGHUP, eztrace_signal_handler); } #ifdef __linux__ res = getenv("EZTRACE_SIGALARM"); if(res && (strncmp(res, "0", 2) != 0)) { /* convert from ms to ns */ alarm_enabled = 1; __ezt_alarm_interval = atoi(res)*1000000; printf("[EZTrace] Setting an alarm every %d ms\n", atoi(res)); signal(SIGALRM, __eztrace_alarm_sighandler); eztrace_set_alarm(); } #endif } void eztrace_start_() { eztrace_start(); } void eztrace_start() { /* avoid executing this function several times */ if(__ezt_trace.status >= ezt_trace_status_running) return; __ezt_trace.status = ezt_trace_status_uninitialized; __ezt_trace.debug_level = 0; __ezt_trace.buffer_size = (16 * 1024 * 1024); // 16MB char* debug_mode = getenv("EZTRACE_DEBUG"); if (debug_mode) { __ezt_trace.debug_level = atoi(debug_mode); EZT_PRINTF(0, "EZTrace Debug mode enabled (trace level: %d)\n", __ezt_trace.debug_level); } EZT_PRINTF(0, "Starting EZTrace... "); __eztrace_set_buffer_size(); /* make sure eztrace_stop is called when the program stops */ atexit(eztrace_stop); __eztrace_set_sighandler(); char* allow_flush = getenv("EZTRACE_FLUSH"); // start LiTL __ezt_trace.litl_trace = litl_write_init_trace(__ezt_trace.buffer_size); // the recording should be paused, because some further functions, e.g. *_set_filename() can be intercepted by eztrace litl_write_pause_recording(__ezt_trace.litl_trace); litl_write_tid_recording_on(__ezt_trace.litl_trace); if (allow_flush && strncmp(allow_flush, "0", 2)) { litl_write_buffer_flush_on(__ezt_trace.litl_trace); EZT_PRINTF(0, "EZTrace Flush enabled\n"); } eztrace_set_filename("eztrace_log_rank_1"); litl_write_resume_recording(__ezt_trace.litl_trace); init_recursion_shield(); __ezt_trace.status = ezt_trace_status_running; /* the current thread needs to be registered since eztrace won't * intercept any pthread_create for this one */ EZTRACE_EVENT0(EZTRACE_NEW_THREAD); #ifndef EZTRACE_AUTOSTART /* call the initialisation routines that were registered */ int i; for (i = 0; i < __ezt_trace.nb_module; i++) __ezt_trace.init_routines[i](); #endif /* EZTRACE_AUTOSTART */ EZT_PRINTF(0, "done\n"); } void eztrace_stop_() { eztrace_stop(); } void eztrace_stop() { if(__ezt_trace.status >= ezt_trace_status_being_finalized || __ezt_trace.status < ezt_trace_status_running) return; __ezt_trace.status = ezt_trace_status_being_finalized; __eztrace_run_atexit_functions(); EZTRACE_EVENT0(EZTRACE_END_THREAD); __ezt_trace.status = ezt_trace_status_finalized; EZTRACE_FIN_TRACE(); EZT_PRINTF(0, "Stopping EZTrace... saving trace %s\n", __ezt_trace.filename); } void eztrace_silent_start() { eztrace_start(); __ezt_trace.status = ezt_trace_status_paused; } void eztrace_pause() { __ezt_trace.status = ezt_trace_status_paused; } void eztrace_resume() { __ezt_trace.status = ezt_trace_status_running; } void eztrace_enter_event(char *name, enum ezt_color color) { EZTRACE_PROTECT { EZTRACE_PROTECT_ON(); switch (color) { case EZTRACE_RED: litl_write_probe_raw(__ezt_trace.litl_trace, EZTRACE_ENTER_EVENT_RED, strlen(name) + 1, (litl_data_t*) name); break; case EZTRACE_YELLOW: litl_write_probe_raw(__ezt_trace.litl_trace, EZTRACE_ENTER_EVENT_YELLOW, strlen(name) + 1, (litl_data_t*) name); break; case EZTRACE_BLUE: litl_write_probe_raw(__ezt_trace.litl_trace, EZTRACE_ENTER_EVENT_BLUE, strlen(name) + 1, (litl_data_t*) name); break; case EZTRACE_GREEN: litl_write_probe_raw(__ezt_trace.litl_trace, EZTRACE_ENTER_EVENT_GREEN, strlen(name) + 1, (litl_data_t*) name); break; case EZTRACE_PINK: litl_write_probe_raw(__ezt_trace.litl_trace, EZTRACE_ENTER_EVENT_PINK, strlen(name) + 1, (litl_data_t*) name); break; } EZTRACE_PROTECT_OFF(); } } void eztrace_leave_event(char *name) { EZTRACE_EVENT0(EZTRACE_LEAVE_EVENT); } void eztrace_generic(uint32_t code, int nbargs, ...) { int i; va_list args; uint64_t arg_array[9]; va_start(args, nbargs); for (i = 0; i < nbargs; i++) arg_array[i] = va_arg(args, uint64_t); switch (nbargs) { case 0: EZTRACE_EVENT0(code) ; break; case 1: EZTRACE_EVENT1(code, arg_array[0]) ; break; case 2: EZTRACE_EVENT2(code, arg_array[0], arg_array[1]) ; break; case 3: EZTRACE_EVENT3(code, arg_array[0], arg_array[1], arg_array[2]) ; break; case 4: EZTRACE_EVENT4(code, arg_array[0], arg_array[1], arg_array[2], arg_array[3]) ; break; case 5: EZTRACE_EVENT5(code, arg_array[0], arg_array[1], arg_array[2], arg_array[3], arg_array[4]); break; case 6: EZTRACE_EVENT6(code, arg_array[0], arg_array[1], arg_array[2], arg_array[3], arg_array[4], arg_array[5]); break; case 7: EZTRACE_EVENT7(code, arg_array[0], arg_array[1], arg_array[2], arg_array[3], arg_array[4], arg_array[5], arg_array[6]); break; case 8: EZTRACE_EVENT8(code, arg_array[0], arg_array[1], arg_array[2], arg_array[3], arg_array[4], arg_array[5], arg_array[6], arg_array[7]); break; case 9: EZTRACE_EVENT9(code, arg_array[0], arg_array[1], arg_array[2], arg_array[3], arg_array[4], arg_array[5], arg_array[6], arg_array[7], arg_array[8]); break; } } void eztrace_code0(uint32_t code) { EZTRACE_EVENT0(code); } void eztrace_code1(uint32_t code, uint64_t arg1) { EZTRACE_EVENT1(code, arg1); } void eztrace_code2(uint32_t code, uint64_t arg1, uint64_t arg2) { EZTRACE_EVENT2(code, arg1, arg2); } void eztrace_code3(uint32_t code, uint64_t arg1, uint64_t arg2, uint64_t arg3) { EZTRACE_EVENT3(code, arg1, arg2, arg3); } void eztrace_code4(uint32_t code, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4) { EZTRACE_EVENT4(code, arg1, arg2, arg3, arg4); } void eztrace_code5(uint32_t code, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5) { EZTRACE_EVENT5(code, arg1, arg2, arg3, arg4, arg5); } void eztrace_code6(uint32_t code, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5, uint64_t arg6) { EZTRACE_EVENT6(code, arg1, arg2, arg3, arg4, arg5, arg6); } void eztrace_code7(uint32_t code, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5, uint64_t arg6, uint64_t arg7) { EZTRACE_EVENT7(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7); } void eztrace_code8(uint32_t code, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5, uint64_t arg6, uint64_t arg7, uint64_t arg8) { EZTRACE_EVENT8(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); } void eztrace_code9(uint32_t code, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5, uint64_t arg6, uint64_t arg7, uint64_t arg8, uint64_t arg9) { EZTRACE_EVENT9(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); } int recursion_shield_on() { init_recursion_shield(); void* ret = NULL; ret = pthread_getspecific(protect_on); return (ret != NULL); } void set_recursion_shield_on() { init_recursion_shield(); pthread_setspecific(protect_on, (void*) 1); } void set_recursion_shield_off() { pthread_setspecific(protect_on, (void*) NULL); } static void __eztrace_get_function_name_from_pointer_fallback(void* pointer, char *output_str, int buffer_len) { char **functions; functions = backtrace_symbols(pointer, 1); char* ptr = get_function_name(functions[0]); strncpy(output_str, ptr, strlen(ptr)+1); free(functions); } #if HAVE_LIBBACKTRACE __thread struct backtrace_state *backtrace_state = NULL; __thread char current_frame[1024]; static void error_callback(void *data, const char *msg, int errnum) { fprintf(stderr, "ERROR: %s (%d)", msg, errnum); } static int backtrace_callback (void *data, uintptr_t pc, const char *filename, int lineno, const char *function) { if(filename == NULL) { /* cannot find debugging info */ __eztrace_get_function_name_from_pointer_fallback((void*)pc, current_frame, 1024); } else { snprintf(current_frame, 1024, "at %s:%d %s", filename, lineno, function); } return 0; } #endif /* HAVE_LIBBACKTRACE */ /* retrieve the name of the function corresponding to pointer * the collected information is copied into output_str * buffer_len is the maximum number of bytes written to output_str */ static void __eztrace_get_function_name_from_pointer(void* pointer, char *output_str, int buffer_len) { #if HAVE_LIBBACKTRACE if(!backtrace_state) { backtrace_state = backtrace_create_state (NULL, 0, error_callback, NULL); } backtrace_pcinfo (backtrace_state, (uintptr_t)pointer, backtrace_callback, error_callback, NULL); strncpy(output_str, current_frame, strlen(current_frame)+1); #else __eztrace_get_function_name_from_pointer_fallback(pointer, output_str, buffer_len); #endif } /* get information on frame frameid * the collected information is copied into output_str * buffer_len is the maximum number of bytes written to output_str */ void eztrace_get_stack_frame(int frameid, char*output_str, int buffer_len) { void* buffer[frameid+1]; /* get pointers to functions */ int nb_calls = backtrace(buffer, frameid+1); __eztrace_get_function_name_from_pointer(buffer[frameid], output_str, buffer_len); } #define RECORD_BACKTRACES 1 #ifdef RECORD_BACKTRACES /* record events (code=EZTRACE_CALLING_FUNCTION) containing the backtrace */ void eztrace_record_backtrace(int backtrace_depth) { /* the current backtrace looks like this: * 0 - record_backtrace() * 1 - eztrace_callback() * 2 - calling_function * * So, we need to get the name of the function in frame 2. */ void* bt_buffer[backtrace_depth]; /* get pointers to functions */ int nb_calls = backtrace(bt_buffer, backtrace_depth); EZTRACE_EVENT1_PACKED_UNPROTECTED(EZTRACE_BACKTRACE_DEPTH, nb_calls); int i; for (i = 0; i < nb_calls; i++) { char buffer[1024]; __eztrace_get_function_name_from_pointer(bt_buffer[i], buffer, 1024); litl_write_probe_raw(__ezt_trace.litl_trace, EZTRACE_CALLING_FUNCTION, strlen(buffer), buffer); } } void record_backtrace() { EZTRACE_PROTECT { EZTRACE_PROTECT_ON(); eztrace_record_backtrace(15); EZTRACE_PROTECT_OFF(); } } #else void eztrace_record_backtrace(int backtrace_depth) { } void record_backtrace() { } #endif struct eztrace_atexit_token_t { eztrace_atexit_function_t func; void* param; }; struct eztrace_atexit_list_t { struct eztrace_atexit_token_t* list; int nb_allocated; int nb_functions; }; struct eztrace_atexit_list_t* atexit_list = NULL; /* register a function to be called before eztrace_stop. */ void eztrace_atexit(eztrace_atexit_function_t f, void* param) { if(!atexit_list) { /* first time this function is called. Allocate/initialize the atexit_list structure */ atexit_list = malloc(sizeof(struct eztrace_atexit_list_t)); atexit_list->nb_allocated = 10; atexit_list->list = malloc(sizeof(struct eztrace_atexit_token_t) * atexit_list->nb_allocated); atexit_list->nb_functions = 0; } int num = atexit_list->nb_functions++; if(num >= atexit_list->nb_allocated) { /* too many atexit callbacks. We need to expand the array */ atexit_list->nb_allocated *= 2; void* ptr = realloc(atexit_list->list, sizeof(struct eztrace_atexit_token_t)*atexit_list->nb_allocated); assert(ptr); atexit_list->list = ptr; } atexit_list->list[num].func = f; atexit_list->list[num].param = param; } /* run all the atexit callbacks that were registered */ static void __eztrace_run_atexit_functions() { if(atexit_list) { int i; for(i=0; i< atexit_list->nb_functions; i++) { atexit_list->list[i].func(atexit_list->list[i].param); } } } eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_convert_core.h0000644000000000000000000000013213020610460020714 xustar0030 mtime=1480790320.360264651 30 atime=1508138883.908118519 30 ctime=1508162367.801913255 eztrace-1.1-7/src/core/eztrace_convert_core.h0000644000175000017500000001025413020610460022105 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef EZTRACE_CONVERT_CORE_H #define EZTRACE_CONVERT_CORE_H #include "eztrace_convert_types.h" eztrace_mode_t get_mode(); /* return a pointer to the verbose variable */ int* get_verbose(); /* return a pointer to the nb_traces variable */ int* get_nb_traces(); /* return a pointer to the nb_start variable */ int* get_nb_start(); /* return a pointer to trace #index */ struct trace_t* get_traces(int index); /* return a pointer to the trace whose event is being considered */ struct trace_t* get_cur_trace(); /* change the trace whose event is being considered */ void set_cur_trace(struct trace_t* p_trace); /* select convert/stat mode */ void set_cur_mode(enum eztrace_mode mode); /* return a pointer to the current event */ eztrace_event_t *get_cur_ev(); /* change the current event */ void set_cur_ev(eztrace_event_t *p_ev); /* The current event has not been handled, because requires another event (used in MPI_Comm_spawn) */ int* get_skip(); /* PThread creation/destruction processing */ void new_thread(unsigned int tid); /* add a thread to the process_info_t structure */ void add_pthread(unsigned int tid); /* initialize the container structures. */ void eztrace_create_containers(int trace_index); /* initialize the id and name fields of the process container structures */ void eztrace_create_ids(int trace_index); /* Initialize eztrace_convert_core */ void eztrace_convert_init(unsigned nb_traces); /* Initialize GTG (define the default States used in EZTrace) */ void eztrace_initialize_gtg(); /* Finalize eztrace_convert_core */ void eztrace_convert_finalize(); /* load available modules */ void load_modules(int verbose); /* print the list of currently loaded modules */ void eztrace_convert_list(); int __init_modules(); int __handle_event(eztrace_event_t *ev); int __handle_stats(eztrace_event_t *ev); void __print_stats(); void handle_new_thread(); void handle_end_thread(); void handle_thread_create(); void handle_start_thread_join(); void handle_stop_thread_join(); void* handle_one_event(void* arg); int handle_event(eztrace_event_t *ev); void set_job_completed(); void wait_for_next_job(struct thread_info_t * thread_id); /* add a delay to trace trace_num * @param trace_num index of the trace to modify * @param old_time original time in the trace * @param new_time new time in the trace * @param thread_id identifier of the thread that detects the delay */ uint64_t add_delay_to_trace(int trace_num, uint64_t old_time, uint64_t new_time, const char* thread_id); /* In order to avoid some deadlocks that may occur when an event handler handles * several events in a raw (because it records too many parameters to fit in one * call to EZTRACE_EVENT), eztrace_convert is multithreaded. * * In most cases, only one thread is run. However, when a handler needs to wait for * a particular event, it creates a new thread that becomes the main thread. The * previous main thread then blocks on a semaphore until the appropriate event is found. * It can then handle the event. This thread should then call pthread_exit(). */ void create_main_thread(); /* 'duplicate' the main thread. The new main_thread run handle_events. * The 'old' main_thread (ie. the current thread) then has to wait until the * main thread wakes it up. */ void new_handler_thread(); /* Wake up an handler thread */ void wake_up_handler_thread(); /* Wait until the main thread notifies that an event has to be processed * for a particular thread. */ void wait_for_an_event(int trace_index, uint64_t code); void* handle_all_events(void* arg); struct eztrace_event_handler* get_handler_info(); /* Ask the event scheduler to call handle(data) next time trace #trace_index is scheduled * This can be used when the processing of an event has started but has to wait for an * event to happen before resuming the processing. * see handle_mpi_stop_waitall in src/modules/mpi/eztrace_convert_mpi.c for an example */ void ask_for_replay(int trace_index, void (*handle)(void*), void* data); void ezt_litl_read_next_event(struct trace_t*p_trace); #endif /* EZTRACE_CONVERT_CORE_H */ eztrace-1.1-7/src/core/PaxHeaders.7332/Makefile.am0000644000000000000000000000013213050564005016400 xustar0030 mtime=1487071237.246806164 30 atime=1508162219.681811306 30 ctime=1508162367.793912556 eztrace-1.1-7/src/core/Makefile.am0000644000175000017500000001251713050564005017575 0ustar00trahaytrahay00000000000000 # Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis # See COPYING in top-level directory. TLCFLAGS=$(TL_CPPFLAGS) TLLDFLAGS=$(TL_LDFLAGS) TLLIBADD=$(TL_LIB) GTGCFLAGS=$(GTG_CPPFLAGS) GTGLDFLAGS=$(GTG_LDFLAGS) GTGDEPENDENCIES = $(GTG_DEPENDENCIES) GTGLIBADD=$(GTG_LIB) bin_PROGRAMS = eztrace_convert eztrace_avail eztrace_loaded eztrace_stats generated_scripts = eztrace_create_plugin eztrace_plugin_generator eztrace.preload bin_SCRIPTS = $(generated_scripts) function.pm input/Makefile.template eztrace_indent_fortran lib_LTLIBRARIES = libeztrace.la \ libeztrace-autostart.la \ libeztrace-convert-core.la eztrace_CPPFLAGS = -I$(top_srcdir)/src/pptrace/ $(TLCFLAGS) -g -O0 -DEZTRACE_LIB_DIR=\"${libdir}/\" -DEZTRACE_ABS_TOP_BUILDDIR=\"${abs_top_builddir}/\" eztrace_LDFLAGS = -g -O0 $(TLLDFLAGS) #TODO: lbfd is not needed when litl is selected eztrace_LDADD = -L${prefix}/lib -ldl $(TLLIBADD) eztrace_SOURCES = ezt_demangle.c if USE_PPTRACE bin_PROGRAMS += eztrace check_PROGRAMS = eztrace eztrace_SOURCES +=eztrace.c \ ../pptrace/pptrace.c \ ../pptrace/binary.c \ ../pptrace/errors.c \ ../pptrace/hijack.c \ ../pptrace/isize.c \ ../pptrace/memory.c \ ../pptrace/opcodes.c \ ../pptrace/tracing.c eztrace_CPPFLAGS += -DUSE_PPTRACE=1 endif if HAVE_DEMANGLE eztrace_CPPFLAGS += -DHAVE_DEMANGLE eztrace_LDADD += -liberty endif if HAVE_LIBOPCODE eztrace_LDFLAGS+=-lopcodes endif #HAVE_LIBOPCODE #eztrace_LDADD += -lbfd -liberty -lz #eztrace_LDADD += -lbfd -lz eztrace_avail_CPPFLAGS = $(TLCFLAGS) eztrace_avail_LDFLAGS = $(TLLDFLAGS) eztrace_avail_LDADD = -ldl libeztrace-convert-core.la eztrace_avail_SOURCES = eztrace_avail.c eztrace_loaded_CPPFLAGS = $(TLCFLAGS) eztrace_loaded_LDFLAGS = $(TLLDFLAGS) eztrace_loaded_LDADD = -ldl libeztrace-convert-core.la eztrace_loaded_SOURCES = eztrace_loaded.c eztrace_stats_CPPFLAGS = $(TLCFLAGS) eztrace_stats_LDFLAGS = $(TLLDFLAGS) eztrace_stats_LDADD = -ldl libeztrace-convert-core.la $(TLLIBADD) eztrace_stats_SOURCES = eztrace_stats.c eztrace_stats_DEPENDENCIES = libeztrace-convert-core.la eztrace_convert_CPPFLAGS = $(GTGCFLAGS) $(TLCFLAGS) eztrace_convert_LDFLAGS = $(GTGLDFLAGS) $(TLLDFLAGS) eztrace_convert_LDADD = $(GTGLIBADD) -ldl libeztrace-convert-core.la $(TLLIBADD) eztrace_convert_DEPENDENCIES = $(GTGDEPENDENCIES) libeztrace-convert-core.la eztrace_convert_SOURCES = eztrace_convert.c \ eztrace_convert.h \ eztrace_convert_types.h \ eztrace_types.h \ eztrace_convert_macros.h \ eztrace_litl_packed.h \ eztrace_litl.h \ ev_codes.h \ eztrace_hook.h libeztrace_convert_core_la_CPPFLAGS = $(TLCFLAGS) $(GTGCFLAGS) -DEZTRACE_LIB_DIR=\"${libdir}\" -DDYNLIB_EXT=\"${DYNLIB_EXT}\" libeztrace_convert_core_la_LIBADD = -lm -lpthread $(TLLIBADD) $(GTGLIBADD) libeztrace_convert_core_la_LDFLAGS = --no-undefined $(GTGLDFLAGS) $(TLLDFLAGS) libeztrace_convert_core_la_DEPENDENCIES = $(GTGDEPENDENCIES) libeztrace_convert_core_la_SOURCES = eztrace_convert_core.c \ eztrace_stats_core.c \ eztrace_stats_core.h \ eztrace_hierarchical_array.c \ eztrace_hierarchical_array.h \ eztrace_array.c \ eztrace_array.h \ eztrace_types.h \ eztrace_convert_types.h \ eztrace_convert_macros.h \ eztrace_litl_packed.h \ eztrace_litl.h \ eztrace_convert.h \ submodules/ezt_submodule_convert.c \ submodules/ezt_submodule.h \ submodules/ezt_getcpu_convert.c \ submodules/ezt_getcpu.h \ ezt_demangle.c \ ezt_demangle.h if HAVE_DEMANGLE libeztrace_convert_core_la_CPPFLAGS += -DHAVE_DEMANGLE libeztrace_convert_core_la_LIBADD += -liberty endif libeztrace_la_CPPFLAGS = $(TLCFLAGS) $(LIBBACKTRACE_CPPFLAGS) libeztrace_la_LIBADD = -lm -lpthread $(TLLIBADD) $(LIBBACKTRACE_LIB) libeztrace_la_LDFLAGS = --no-undefined $(TLLDFLAGS) $(LIBBACKTRACE_LDFLAGS) libeztrace_la_SOURCES = eztrace_core.c \ eztrace_sampling.c \ pthread_core.c \ submodules/ezt_submodule.c \ submodules/ezt_submodule.h \ submodules/ezt_getcpu.c \ submodules/ezt_getcpu.h libeztrace_autostart_la_CPPFLAGS = $(TLCFLAGS) $(LIBBACKTRACE_CPPFLAGS) libeztrace_autostart_la_CFLAGS = -DEZTRACE_AUTOSTART libeztrace_autostart_la_LIBADD = -lm -lpthread $(TLLIBADD) $(LIBBACKTRACE_LIB) libeztrace_autostart_la_LDFLAGS = --no-undefined $(TLLDFLAGS) $(LIBBACKTRACE_LDFLAGS) libeztrace_autostart_la_SOURCES = eztrace_core.c \ eztrace_sampling.c \ pthread_core.c \ submodules/ezt_submodule.c \ submodules/ezt_submodule.h \ submodules/ezt_getcpu.c \ submodules/ezt_getcpu.h inputdir = $(datadir)/eztrace input_DATA = input/example.c.template\ input/example_ev_codes.h.template\ input/eztrace_convert_example.c.template \ input/Makefile.template EXTRA_DIST = $(input_DATA) eztrace_create_plugin.in eztrace_plugin_generator function.pm eztrace.c.in eztrace.preload.in eztrace_indent_fortran CLEANFILES = $(generated_scripts) eztrace eztrace_config.h include_HEADERS = eztrace.h\ eztrace_litl_packed.h \ eztrace_litl.h \ ../pptrace/pptrace.h \ eztrace_config.h \ ev_codes.h \ eztrace_list.h \ eztrace_stack.h \ eztrace_hook.h \ eztrace_convert.h\ eztrace_convert_core.h\ eztrace_convert_macros.h\ eztrace_sampling.h\ eztrace_types.h \ eztrace_convert_types.h eztrace-1.1-7/src/core/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135253016414 xustar0030 mtime=1508162219.757816884 30 atime=1508162286.567022924 30 ctime=1508162367.805913605 eztrace-1.1-7/src/core/Makefile.in0000644000175000017500000027760013171135253017617 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = eztrace_convert$(EXEEXT) eztrace_avail$(EXEEXT) \ eztrace_loaded$(EXEEXT) eztrace_stats$(EXEEXT) $(am__EXEEXT_1) @USE_PPTRACE_TRUE@am__append_1 = eztrace @USE_PPTRACE_TRUE@check_PROGRAMS = eztrace$(EXEEXT) @USE_PPTRACE_TRUE@am__append_2 = eztrace.c \ @USE_PPTRACE_TRUE@ ../pptrace/pptrace.c \ @USE_PPTRACE_TRUE@ ../pptrace/binary.c \ @USE_PPTRACE_TRUE@ ../pptrace/errors.c \ @USE_PPTRACE_TRUE@ ../pptrace/hijack.c \ @USE_PPTRACE_TRUE@ ../pptrace/isize.c \ @USE_PPTRACE_TRUE@ ../pptrace/memory.c \ @USE_PPTRACE_TRUE@ ../pptrace/opcodes.c \ @USE_PPTRACE_TRUE@ ../pptrace/tracing.c @USE_PPTRACE_TRUE@am__append_3 = -DUSE_PPTRACE=1 @HAVE_DEMANGLE_TRUE@am__append_4 = -DHAVE_DEMANGLE @HAVE_DEMANGLE_TRUE@am__append_5 = -liberty @HAVE_LIBOPCODE_TRUE@am__append_6 = -lopcodes @HAVE_DEMANGLE_TRUE@am__append_7 = -DHAVE_DEMANGLE @HAVE_DEMANGLE_TRUE@am__append_8 = -liberty subdir = src/core ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = eztrace_create_plugin eztrace_plugin_generator \ eztrace.c eztrace.preload eztrace_config.h CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ "$(DESTDIR)$(bindir)" "$(DESTDIR)$(inputdir)" \ "$(DESTDIR)$(includedir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) libeztrace_autostart_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ $(am__DEPENDENCIES_1) am__dirstamp = $(am__leading_dot)dirstamp am_libeztrace_autostart_la_OBJECTS = \ libeztrace_autostart_la-eztrace_core.lo \ libeztrace_autostart_la-eztrace_sampling.lo \ libeztrace_autostart_la-pthread_core.lo \ submodules/libeztrace_autostart_la-ezt_submodule.lo \ submodules/libeztrace_autostart_la-ezt_getcpu.lo libeztrace_autostart_la_OBJECTS = \ $(am_libeztrace_autostart_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libeztrace_autostart_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(libeztrace_autostart_la_CFLAGS) $(CFLAGS) \ $(libeztrace_autostart_la_LDFLAGS) $(LDFLAGS) -o $@ am_libeztrace_convert_core_la_OBJECTS = \ libeztrace_convert_core_la-eztrace_convert_core.lo \ libeztrace_convert_core_la-eztrace_stats_core.lo \ libeztrace_convert_core_la-eztrace_hierarchical_array.lo \ libeztrace_convert_core_la-eztrace_array.lo \ submodules/libeztrace_convert_core_la-ezt_submodule_convert.lo \ submodules/libeztrace_convert_core_la-ezt_getcpu_convert.lo \ libeztrace_convert_core_la-ezt_demangle.lo libeztrace_convert_core_la_OBJECTS = \ $(am_libeztrace_convert_core_la_OBJECTS) libeztrace_convert_core_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libeztrace_convert_core_la_LDFLAGS) \ $(LDFLAGS) -o $@ libeztrace_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ $(am__DEPENDENCIES_1) am_libeztrace_la_OBJECTS = libeztrace_la-eztrace_core.lo \ libeztrace_la-eztrace_sampling.lo \ libeztrace_la-pthread_core.lo \ submodules/libeztrace_la-ezt_submodule.lo \ submodules/libeztrace_la-ezt_getcpu.lo libeztrace_la_OBJECTS = $(am_libeztrace_la_OBJECTS) libeztrace_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libeztrace_la_LDFLAGS) $(LDFLAGS) -o $@ @USE_PPTRACE_TRUE@am__EXEEXT_1 = eztrace$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) am__eztrace_SOURCES_DIST = ezt_demangle.c eztrace.c \ ../pptrace/pptrace.c ../pptrace/binary.c ../pptrace/errors.c \ ../pptrace/hijack.c ../pptrace/isize.c ../pptrace/memory.c \ ../pptrace/opcodes.c ../pptrace/tracing.c @USE_PPTRACE_TRUE@am__objects_1 = eztrace-eztrace.$(OBJEXT) \ @USE_PPTRACE_TRUE@ ../pptrace/eztrace-pptrace.$(OBJEXT) \ @USE_PPTRACE_TRUE@ ../pptrace/eztrace-binary.$(OBJEXT) \ @USE_PPTRACE_TRUE@ ../pptrace/eztrace-errors.$(OBJEXT) \ @USE_PPTRACE_TRUE@ ../pptrace/eztrace-hijack.$(OBJEXT) \ @USE_PPTRACE_TRUE@ ../pptrace/eztrace-isize.$(OBJEXT) \ @USE_PPTRACE_TRUE@ ../pptrace/eztrace-memory.$(OBJEXT) \ @USE_PPTRACE_TRUE@ ../pptrace/eztrace-opcodes.$(OBJEXT) \ @USE_PPTRACE_TRUE@ ../pptrace/eztrace-tracing.$(OBJEXT) am_eztrace_OBJECTS = eztrace-ezt_demangle.$(OBJEXT) $(am__objects_1) eztrace_OBJECTS = $(am_eztrace_OBJECTS) eztrace_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) eztrace_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(eztrace_LDFLAGS) $(LDFLAGS) -o $@ am_eztrace_avail_OBJECTS = eztrace_avail-eztrace_avail.$(OBJEXT) eztrace_avail_OBJECTS = $(am_eztrace_avail_OBJECTS) eztrace_avail_DEPENDENCIES = libeztrace-convert-core.la eztrace_avail_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(eztrace_avail_LDFLAGS) $(LDFLAGS) -o $@ am_eztrace_convert_OBJECTS = \ eztrace_convert-eztrace_convert.$(OBJEXT) eztrace_convert_OBJECTS = $(am_eztrace_convert_OBJECTS) eztrace_convert_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(eztrace_convert_LDFLAGS) $(LDFLAGS) \ -o $@ am_eztrace_loaded_OBJECTS = eztrace_loaded-eztrace_loaded.$(OBJEXT) eztrace_loaded_OBJECTS = $(am_eztrace_loaded_OBJECTS) eztrace_loaded_DEPENDENCIES = libeztrace-convert-core.la eztrace_loaded_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(eztrace_loaded_LDFLAGS) $(LDFLAGS) -o \ $@ am_eztrace_stats_OBJECTS = eztrace_stats-eztrace_stats.$(OBJEXT) eztrace_stats_OBJECTS = $(am_eztrace_stats_OBJECTS) eztrace_stats_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(eztrace_stats_LDFLAGS) $(LDFLAGS) -o $@ SCRIPTS = $(bin_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libeztrace_autostart_la_SOURCES) \ $(libeztrace_convert_core_la_SOURCES) $(libeztrace_la_SOURCES) \ $(eztrace_SOURCES) $(eztrace_avail_SOURCES) \ $(eztrace_convert_SOURCES) $(eztrace_loaded_SOURCES) \ $(eztrace_stats_SOURCES) DIST_SOURCES = $(libeztrace_autostart_la_SOURCES) \ $(libeztrace_convert_core_la_SOURCES) $(libeztrace_la_SOURCES) \ $(am__eztrace_SOURCES_DIST) $(eztrace_avail_SOURCES) \ $(eztrace_convert_SOURCES) $(eztrace_loaded_SOURCES) \ $(eztrace_stats_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(input_DATA) HEADERS = $(include_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/eztrace.c.in \ $(srcdir)/eztrace.preload.in $(srcdir)/eztrace_config.h.in \ $(srcdir)/eztrace_create_plugin.in \ $(srcdir)/eztrace_plugin_generator.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUDA_CFLAGS = @CUDA_CFLAGS@ CUDA_LDFLAGS = @CUDA_LDFLAGS@ CUDA_LIBS = @CUDA_LIBS@ CUDA_ROOT = @CUDA_ROOT@ CUPTI_CFLAGS = @CUPTI_CFLAGS@ CUPTI_LDFLAGS = @CUPTI_LDFLAGS@ CUPTI_LIBS = @CUPTI_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ DYNLIB_EXT = @DYNLIB_EXT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ GTGDIR = @GTGDIR@ GTG_CPPFLAGS = @GTG_CPPFLAGS@ GTG_DEPENDENCIES = @GTG_DEPENDENCIES@ GTG_EXT_CPPFLAGS = @GTG_EXT_CPPFLAGS@ GTG_EXT_LDFLAGS = @GTG_EXT_LDFLAGS@ GTG_EXT_LIB = @GTG_EXT_LIB@ GTG_LDFLAGS = @GTG_LDFLAGS@ GTG_LIB = @GTG_LIB@ GTG_OUT_OF_ORDER = @GTG_OUT_OF_ORDER@ HAVE_ENV = @HAVE_ENV@ HAVE_LIBBACKTRACE = @HAVE_LIBBACKTRACE@ HAVE_LIBOPCODE = @HAVE_LIBOPCODE@ HAVE_PRCTL_H = @HAVE_PRCTL_H@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LD_LIBRARY_PATH_NAME = @LD_LIBRARY_PATH_NAME@ LD_PRELOAD_NAME = @LD_PRELOAD_NAME@ LIBBACKTRACE_CPPFLAGS = @LIBBACKTRACE_CPPFLAGS@ LIBBACKTRACE_LDFLAGS = @LIBBACKTRACE_LDFLAGS@ LIBBACKTRACE_LIB = @LIBBACKTRACE_LIB@ LIBBACKTRACE_ROOT = @LIBBACKTRACE_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LITL_PRINT = @LITL_PRINT@ LITL_ROOT = @LITL_ROOT@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPI_CFLAGS = @MPI_CFLAGS@ MPI_EVENT_ID = @MPI_EVENT_ID@ MPI_INC = @MPI_INC@ MPI_LDFLAGS = @MPI_LDFLAGS@ MPI_MODULE_NAME = @MPI_MODULE_NAME@ MPI_ROOT = @MPI_ROOT@ NM = @NM@ NMEDIT = @NMEDIT@ NVCC = @NVCC@ NVCCFLAGS = @NVCCFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAPIDIR = @PAPIDIR@ PAPI_CPPFLAGS = @PAPI_CPPFLAGS@ PAPI_ENABLED = @PAPI_ENABLED@ PAPI_LDFLAGS = @PAPI_LDFLAGS@ PAPI_LIBDIR = @PAPI_LIBDIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PPTRACE_BINARY_TYPE = @PPTRACE_BINARY_TYPE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STARPU_CFLAGS = @STARPU_CFLAGS@ STARPU_CPPFLAGS = @STARPU_CPPFLAGS@ STARPU_LDFLAGS = @STARPU_LDFLAGS@ STARPU_LIBS = @STARPU_LIBS@ STARPU_ROOT = @STARPU_ROOT@ STRIP = @STRIP@ TARGET_BITS = @TARGET_BITS@ TL_CPPFLAGS = @TL_CPPFLAGS@ TL_EXT_CPPFLAGS = @TL_EXT_CPPFLAGS@ TL_EXT_LDFLAGS = @TL_EXT_LDFLAGS@ TL_EXT_LIB = @TL_EXT_LIB@ TL_LDFLAGS = @TL_LDFLAGS@ TL_LIB = @TL_LIB@ USE_BIN_INSTRUMENTATION = @USE_BIN_INSTRUMENTATION@ USE_CUDADIR_FROM_USER = @USE_CUDADIR_FROM_USER@ USE_GETTID = @USE_GETTID@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ USE_PAPIDIR_FROM_USER = @USE_PAPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ TLCFLAGS = $(TL_CPPFLAGS) TLLDFLAGS = $(TL_LDFLAGS) TLLIBADD = $(TL_LIB) GTGCFLAGS = $(GTG_CPPFLAGS) GTGLDFLAGS = $(GTG_LDFLAGS) GTGDEPENDENCIES = $(GTG_DEPENDENCIES) GTGLIBADD = $(GTG_LIB) generated_scripts = eztrace_create_plugin eztrace_plugin_generator eztrace.preload bin_SCRIPTS = $(generated_scripts) function.pm input/Makefile.template eztrace_indent_fortran lib_LTLIBRARIES = libeztrace.la \ libeztrace-autostart.la \ libeztrace-convert-core.la eztrace_CPPFLAGS = -I$(top_srcdir)/src/pptrace/ $(TLCFLAGS) -g -O0 \ -DEZTRACE_LIB_DIR=\"${libdir}/\" \ -DEZTRACE_ABS_TOP_BUILDDIR=\"${abs_top_builddir}/\" \ $(am__append_3) $(am__append_4) eztrace_LDFLAGS = -g -O0 $(TLLDFLAGS) $(am__append_6) #TODO: lbfd is not needed when litl is selected eztrace_LDADD = -L${prefix}/lib -ldl $(TLLIBADD) $(am__append_5) eztrace_SOURCES = ezt_demangle.c $(am__append_2) #eztrace_LDADD += -lbfd -liberty -lz #eztrace_LDADD += -lbfd -lz eztrace_avail_CPPFLAGS = $(TLCFLAGS) eztrace_avail_LDFLAGS = $(TLLDFLAGS) eztrace_avail_LDADD = -ldl libeztrace-convert-core.la eztrace_avail_SOURCES = eztrace_avail.c eztrace_loaded_CPPFLAGS = $(TLCFLAGS) eztrace_loaded_LDFLAGS = $(TLLDFLAGS) eztrace_loaded_LDADD = -ldl libeztrace-convert-core.la eztrace_loaded_SOURCES = eztrace_loaded.c eztrace_stats_CPPFLAGS = $(TLCFLAGS) eztrace_stats_LDFLAGS = $(TLLDFLAGS) eztrace_stats_LDADD = -ldl libeztrace-convert-core.la $(TLLIBADD) eztrace_stats_SOURCES = eztrace_stats.c eztrace_stats_DEPENDENCIES = libeztrace-convert-core.la eztrace_convert_CPPFLAGS = $(GTGCFLAGS) $(TLCFLAGS) eztrace_convert_LDFLAGS = $(GTGLDFLAGS) $(TLLDFLAGS) eztrace_convert_LDADD = $(GTGLIBADD) -ldl libeztrace-convert-core.la $(TLLIBADD) eztrace_convert_DEPENDENCIES = $(GTGDEPENDENCIES) libeztrace-convert-core.la eztrace_convert_SOURCES = eztrace_convert.c \ eztrace_convert.h \ eztrace_convert_types.h \ eztrace_types.h \ eztrace_convert_macros.h \ eztrace_litl_packed.h \ eztrace_litl.h \ ev_codes.h \ eztrace_hook.h libeztrace_convert_core_la_CPPFLAGS = $(TLCFLAGS) $(GTGCFLAGS) \ -DEZTRACE_LIB_DIR=\"${libdir}\" -DDYNLIB_EXT=\"${DYNLIB_EXT}\" \ $(am__append_7) libeztrace_convert_core_la_LIBADD = -lm -lpthread $(TLLIBADD) \ $(GTGLIBADD) $(am__append_8) libeztrace_convert_core_la_LDFLAGS = --no-undefined $(GTGLDFLAGS) $(TLLDFLAGS) libeztrace_convert_core_la_DEPENDENCIES = $(GTGDEPENDENCIES) libeztrace_convert_core_la_SOURCES = eztrace_convert_core.c \ eztrace_stats_core.c \ eztrace_stats_core.h \ eztrace_hierarchical_array.c \ eztrace_hierarchical_array.h \ eztrace_array.c \ eztrace_array.h \ eztrace_types.h \ eztrace_convert_types.h \ eztrace_convert_macros.h \ eztrace_litl_packed.h \ eztrace_litl.h \ eztrace_convert.h \ submodules/ezt_submodule_convert.c \ submodules/ezt_submodule.h \ submodules/ezt_getcpu_convert.c \ submodules/ezt_getcpu.h \ ezt_demangle.c \ ezt_demangle.h libeztrace_la_CPPFLAGS = $(TLCFLAGS) $(LIBBACKTRACE_CPPFLAGS) libeztrace_la_LIBADD = -lm -lpthread $(TLLIBADD) $(LIBBACKTRACE_LIB) libeztrace_la_LDFLAGS = --no-undefined $(TLLDFLAGS) $(LIBBACKTRACE_LDFLAGS) libeztrace_la_SOURCES = eztrace_core.c \ eztrace_sampling.c \ pthread_core.c \ submodules/ezt_submodule.c \ submodules/ezt_submodule.h \ submodules/ezt_getcpu.c \ submodules/ezt_getcpu.h libeztrace_autostart_la_CPPFLAGS = $(TLCFLAGS) $(LIBBACKTRACE_CPPFLAGS) libeztrace_autostart_la_CFLAGS = -DEZTRACE_AUTOSTART libeztrace_autostart_la_LIBADD = -lm -lpthread $(TLLIBADD) $(LIBBACKTRACE_LIB) libeztrace_autostart_la_LDFLAGS = --no-undefined $(TLLDFLAGS) $(LIBBACKTRACE_LDFLAGS) libeztrace_autostart_la_SOURCES = eztrace_core.c \ eztrace_sampling.c \ pthread_core.c \ submodules/ezt_submodule.c \ submodules/ezt_submodule.h \ submodules/ezt_getcpu.c \ submodules/ezt_getcpu.h inputdir = $(datadir)/eztrace input_DATA = input/example.c.template\ input/example_ev_codes.h.template\ input/eztrace_convert_example.c.template \ input/Makefile.template EXTRA_DIST = $(input_DATA) eztrace_create_plugin.in eztrace_plugin_generator function.pm eztrace.c.in eztrace.preload.in eztrace_indent_fortran CLEANFILES = $(generated_scripts) eztrace eztrace_config.h include_HEADERS = eztrace.h\ eztrace_litl_packed.h \ eztrace_litl.h \ ../pptrace/pptrace.h \ eztrace_config.h \ ev_codes.h \ eztrace_list.h \ eztrace_stack.h \ eztrace_hook.h \ eztrace_convert.h\ eztrace_convert_core.h\ eztrace_convert_macros.h\ eztrace_sampling.h\ eztrace_types.h \ eztrace_convert_types.h all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/core/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/core/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): eztrace_create_plugin: $(top_builddir)/config.status $(srcdir)/eztrace_create_plugin.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ eztrace_plugin_generator: $(top_builddir)/config.status $(srcdir)/eztrace_plugin_generator.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ eztrace.c: $(top_builddir)/config.status $(srcdir)/eztrace.c.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ eztrace.preload: $(top_builddir)/config.status $(srcdir)/eztrace.preload.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ eztrace_config.h: $(top_builddir)/config.status $(srcdir)/eztrace_config.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } submodules/$(am__dirstamp): @$(MKDIR_P) submodules @: > submodules/$(am__dirstamp) submodules/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) submodules/$(DEPDIR) @: > submodules/$(DEPDIR)/$(am__dirstamp) submodules/libeztrace_autostart_la-ezt_submodule.lo: \ submodules/$(am__dirstamp) \ submodules/$(DEPDIR)/$(am__dirstamp) submodules/libeztrace_autostart_la-ezt_getcpu.lo: \ submodules/$(am__dirstamp) \ submodules/$(DEPDIR)/$(am__dirstamp) libeztrace-autostart.la: $(libeztrace_autostart_la_OBJECTS) $(libeztrace_autostart_la_DEPENDENCIES) $(EXTRA_libeztrace_autostart_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_autostart_la_LINK) -rpath $(libdir) $(libeztrace_autostart_la_OBJECTS) $(libeztrace_autostart_la_LIBADD) $(LIBS) submodules/libeztrace_convert_core_la-ezt_submodule_convert.lo: \ submodules/$(am__dirstamp) \ submodules/$(DEPDIR)/$(am__dirstamp) submodules/libeztrace_convert_core_la-ezt_getcpu_convert.lo: \ submodules/$(am__dirstamp) \ submodules/$(DEPDIR)/$(am__dirstamp) libeztrace-convert-core.la: $(libeztrace_convert_core_la_OBJECTS) $(libeztrace_convert_core_la_DEPENDENCIES) $(EXTRA_libeztrace_convert_core_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_convert_core_la_LINK) -rpath $(libdir) $(libeztrace_convert_core_la_OBJECTS) $(libeztrace_convert_core_la_LIBADD) $(LIBS) submodules/libeztrace_la-ezt_submodule.lo: submodules/$(am__dirstamp) \ submodules/$(DEPDIR)/$(am__dirstamp) submodules/libeztrace_la-ezt_getcpu.lo: submodules/$(am__dirstamp) \ submodules/$(DEPDIR)/$(am__dirstamp) libeztrace.la: $(libeztrace_la_OBJECTS) $(libeztrace_la_DEPENDENCIES) $(EXTRA_libeztrace_la_DEPENDENCIES) $(AM_V_CCLD)$(libeztrace_la_LINK) -rpath $(libdir) $(libeztrace_la_OBJECTS) $(libeztrace_la_LIBADD) $(LIBS) install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list ../pptrace/$(am__dirstamp): @$(MKDIR_P) ../pptrace @: > ../pptrace/$(am__dirstamp) ../pptrace/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ../pptrace/$(DEPDIR) @: > ../pptrace/$(DEPDIR)/$(am__dirstamp) ../pptrace/eztrace-pptrace.$(OBJEXT): ../pptrace/$(am__dirstamp) \ ../pptrace/$(DEPDIR)/$(am__dirstamp) ../pptrace/eztrace-binary.$(OBJEXT): ../pptrace/$(am__dirstamp) \ ../pptrace/$(DEPDIR)/$(am__dirstamp) ../pptrace/eztrace-errors.$(OBJEXT): ../pptrace/$(am__dirstamp) \ ../pptrace/$(DEPDIR)/$(am__dirstamp) ../pptrace/eztrace-hijack.$(OBJEXT): ../pptrace/$(am__dirstamp) \ ../pptrace/$(DEPDIR)/$(am__dirstamp) ../pptrace/eztrace-isize.$(OBJEXT): ../pptrace/$(am__dirstamp) \ ../pptrace/$(DEPDIR)/$(am__dirstamp) ../pptrace/eztrace-memory.$(OBJEXT): ../pptrace/$(am__dirstamp) \ ../pptrace/$(DEPDIR)/$(am__dirstamp) ../pptrace/eztrace-opcodes.$(OBJEXT): ../pptrace/$(am__dirstamp) \ ../pptrace/$(DEPDIR)/$(am__dirstamp) ../pptrace/eztrace-tracing.$(OBJEXT): ../pptrace/$(am__dirstamp) \ ../pptrace/$(DEPDIR)/$(am__dirstamp) eztrace$(EXEEXT): $(eztrace_OBJECTS) $(eztrace_DEPENDENCIES) $(EXTRA_eztrace_DEPENDENCIES) @rm -f eztrace$(EXEEXT) $(AM_V_CCLD)$(eztrace_LINK) $(eztrace_OBJECTS) $(eztrace_LDADD) $(LIBS) eztrace_avail$(EXEEXT): $(eztrace_avail_OBJECTS) $(eztrace_avail_DEPENDENCIES) $(EXTRA_eztrace_avail_DEPENDENCIES) @rm -f eztrace_avail$(EXEEXT) $(AM_V_CCLD)$(eztrace_avail_LINK) $(eztrace_avail_OBJECTS) $(eztrace_avail_LDADD) $(LIBS) eztrace_convert$(EXEEXT): $(eztrace_convert_OBJECTS) $(eztrace_convert_DEPENDENCIES) $(EXTRA_eztrace_convert_DEPENDENCIES) @rm -f eztrace_convert$(EXEEXT) $(AM_V_CCLD)$(eztrace_convert_LINK) $(eztrace_convert_OBJECTS) $(eztrace_convert_LDADD) $(LIBS) eztrace_loaded$(EXEEXT): $(eztrace_loaded_OBJECTS) $(eztrace_loaded_DEPENDENCIES) $(EXTRA_eztrace_loaded_DEPENDENCIES) @rm -f eztrace_loaded$(EXEEXT) $(AM_V_CCLD)$(eztrace_loaded_LINK) $(eztrace_loaded_OBJECTS) $(eztrace_loaded_LDADD) $(LIBS) eztrace_stats$(EXEEXT): $(eztrace_stats_OBJECTS) $(eztrace_stats_DEPENDENCIES) $(EXTRA_eztrace_stats_DEPENDENCIES) @rm -f eztrace_stats$(EXEEXT) $(AM_V_CCLD)$(eztrace_stats_LINK) $(eztrace_stats_OBJECTS) $(eztrace_stats_LDADD) $(LIBS) install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f ../pptrace/*.$(OBJEXT) -rm -f submodules/*.$(OBJEXT) -rm -f submodules/*.lo distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@../pptrace/$(DEPDIR)/eztrace-binary.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@../pptrace/$(DEPDIR)/eztrace-errors.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@../pptrace/$(DEPDIR)/eztrace-hijack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@../pptrace/$(DEPDIR)/eztrace-isize.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@../pptrace/$(DEPDIR)/eztrace-memory.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@../pptrace/$(DEPDIR)/eztrace-opcodes.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@../pptrace/$(DEPDIR)/eztrace-pptrace.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@../pptrace/$(DEPDIR)/eztrace-tracing.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eztrace-ezt_demangle.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eztrace-eztrace.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eztrace_avail-eztrace_avail.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eztrace_convert-eztrace_convert.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eztrace_loaded-eztrace_loaded.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eztrace_stats-eztrace_stats.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_autostart_la-eztrace_core.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_autostart_la-eztrace_sampling.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_autostart_la-pthread_core.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_convert_core_la-ezt_demangle.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_convert_core_la-eztrace_array.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_convert_core_la-eztrace_convert_core.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_convert_core_la-eztrace_hierarchical_array.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_convert_core_la-eztrace_stats_core.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_la-eztrace_core.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_la-eztrace_sampling.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeztrace_la-pthread_core.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@submodules/$(DEPDIR)/libeztrace_autostart_la-ezt_getcpu.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@submodules/$(DEPDIR)/libeztrace_autostart_la-ezt_submodule.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@submodules/$(DEPDIR)/libeztrace_convert_core_la-ezt_getcpu_convert.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@submodules/$(DEPDIR)/libeztrace_convert_core_la-ezt_submodule_convert.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@submodules/$(DEPDIR)/libeztrace_la-ezt_getcpu.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@submodules/$(DEPDIR)/libeztrace_la-ezt_submodule.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libeztrace_autostart_la-eztrace_core.lo: eztrace_core.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_la_CFLAGS) $(CFLAGS) -MT libeztrace_autostart_la-eztrace_core.lo -MD -MP -MF $(DEPDIR)/libeztrace_autostart_la-eztrace_core.Tpo -c -o libeztrace_autostart_la-eztrace_core.lo `test -f 'eztrace_core.c' || echo '$(srcdir)/'`eztrace_core.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_autostart_la-eztrace_core.Tpo $(DEPDIR)/libeztrace_autostart_la-eztrace_core.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_core.c' object='libeztrace_autostart_la-eztrace_core.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_la_CFLAGS) $(CFLAGS) -c -o libeztrace_autostart_la-eztrace_core.lo `test -f 'eztrace_core.c' || echo '$(srcdir)/'`eztrace_core.c libeztrace_autostart_la-eztrace_sampling.lo: eztrace_sampling.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_la_CFLAGS) $(CFLAGS) -MT libeztrace_autostart_la-eztrace_sampling.lo -MD -MP -MF $(DEPDIR)/libeztrace_autostart_la-eztrace_sampling.Tpo -c -o libeztrace_autostart_la-eztrace_sampling.lo `test -f 'eztrace_sampling.c' || echo '$(srcdir)/'`eztrace_sampling.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_autostart_la-eztrace_sampling.Tpo $(DEPDIR)/libeztrace_autostart_la-eztrace_sampling.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_sampling.c' object='libeztrace_autostart_la-eztrace_sampling.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_la_CFLAGS) $(CFLAGS) -c -o libeztrace_autostart_la-eztrace_sampling.lo `test -f 'eztrace_sampling.c' || echo '$(srcdir)/'`eztrace_sampling.c libeztrace_autostart_la-pthread_core.lo: pthread_core.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_la_CFLAGS) $(CFLAGS) -MT libeztrace_autostart_la-pthread_core.lo -MD -MP -MF $(DEPDIR)/libeztrace_autostart_la-pthread_core.Tpo -c -o libeztrace_autostart_la-pthread_core.lo `test -f 'pthread_core.c' || echo '$(srcdir)/'`pthread_core.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_autostart_la-pthread_core.Tpo $(DEPDIR)/libeztrace_autostart_la-pthread_core.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pthread_core.c' object='libeztrace_autostart_la-pthread_core.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_la_CFLAGS) $(CFLAGS) -c -o libeztrace_autostart_la-pthread_core.lo `test -f 'pthread_core.c' || echo '$(srcdir)/'`pthread_core.c submodules/libeztrace_autostart_la-ezt_submodule.lo: submodules/ezt_submodule.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_la_CFLAGS) $(CFLAGS) -MT submodules/libeztrace_autostart_la-ezt_submodule.lo -MD -MP -MF submodules/$(DEPDIR)/libeztrace_autostart_la-ezt_submodule.Tpo -c -o submodules/libeztrace_autostart_la-ezt_submodule.lo `test -f 'submodules/ezt_submodule.c' || echo '$(srcdir)/'`submodules/ezt_submodule.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) submodules/$(DEPDIR)/libeztrace_autostart_la-ezt_submodule.Tpo submodules/$(DEPDIR)/libeztrace_autostart_la-ezt_submodule.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='submodules/ezt_submodule.c' object='submodules/libeztrace_autostart_la-ezt_submodule.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_la_CFLAGS) $(CFLAGS) -c -o submodules/libeztrace_autostart_la-ezt_submodule.lo `test -f 'submodules/ezt_submodule.c' || echo '$(srcdir)/'`submodules/ezt_submodule.c submodules/libeztrace_autostart_la-ezt_getcpu.lo: submodules/ezt_getcpu.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_la_CFLAGS) $(CFLAGS) -MT submodules/libeztrace_autostart_la-ezt_getcpu.lo -MD -MP -MF submodules/$(DEPDIR)/libeztrace_autostart_la-ezt_getcpu.Tpo -c -o submodules/libeztrace_autostart_la-ezt_getcpu.lo `test -f 'submodules/ezt_getcpu.c' || echo '$(srcdir)/'`submodules/ezt_getcpu.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) submodules/$(DEPDIR)/libeztrace_autostart_la-ezt_getcpu.Tpo submodules/$(DEPDIR)/libeztrace_autostart_la-ezt_getcpu.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='submodules/ezt_getcpu.c' object='submodules/libeztrace_autostart_la-ezt_getcpu.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_autostart_la_CPPFLAGS) $(CPPFLAGS) $(libeztrace_autostart_la_CFLAGS) $(CFLAGS) -c -o submodules/libeztrace_autostart_la-ezt_getcpu.lo `test -f 'submodules/ezt_getcpu.c' || echo '$(srcdir)/'`submodules/ezt_getcpu.c libeztrace_convert_core_la-eztrace_convert_core.lo: eztrace_convert_core.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_core_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_convert_core_la-eztrace_convert_core.lo -MD -MP -MF $(DEPDIR)/libeztrace_convert_core_la-eztrace_convert_core.Tpo -c -o libeztrace_convert_core_la-eztrace_convert_core.lo `test -f 'eztrace_convert_core.c' || echo '$(srcdir)/'`eztrace_convert_core.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_convert_core_la-eztrace_convert_core.Tpo $(DEPDIR)/libeztrace_convert_core_la-eztrace_convert_core.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_convert_core.c' object='libeztrace_convert_core_la-eztrace_convert_core.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_core_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_convert_core_la-eztrace_convert_core.lo `test -f 'eztrace_convert_core.c' || echo '$(srcdir)/'`eztrace_convert_core.c libeztrace_convert_core_la-eztrace_stats_core.lo: eztrace_stats_core.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_core_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_convert_core_la-eztrace_stats_core.lo -MD -MP -MF $(DEPDIR)/libeztrace_convert_core_la-eztrace_stats_core.Tpo -c -o libeztrace_convert_core_la-eztrace_stats_core.lo `test -f 'eztrace_stats_core.c' || echo '$(srcdir)/'`eztrace_stats_core.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_convert_core_la-eztrace_stats_core.Tpo $(DEPDIR)/libeztrace_convert_core_la-eztrace_stats_core.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_stats_core.c' object='libeztrace_convert_core_la-eztrace_stats_core.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_core_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_convert_core_la-eztrace_stats_core.lo `test -f 'eztrace_stats_core.c' || echo '$(srcdir)/'`eztrace_stats_core.c libeztrace_convert_core_la-eztrace_hierarchical_array.lo: eztrace_hierarchical_array.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_core_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_convert_core_la-eztrace_hierarchical_array.lo -MD -MP -MF $(DEPDIR)/libeztrace_convert_core_la-eztrace_hierarchical_array.Tpo -c -o libeztrace_convert_core_la-eztrace_hierarchical_array.lo `test -f 'eztrace_hierarchical_array.c' || echo '$(srcdir)/'`eztrace_hierarchical_array.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_convert_core_la-eztrace_hierarchical_array.Tpo $(DEPDIR)/libeztrace_convert_core_la-eztrace_hierarchical_array.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_hierarchical_array.c' object='libeztrace_convert_core_la-eztrace_hierarchical_array.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_core_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_convert_core_la-eztrace_hierarchical_array.lo `test -f 'eztrace_hierarchical_array.c' || echo '$(srcdir)/'`eztrace_hierarchical_array.c libeztrace_convert_core_la-eztrace_array.lo: eztrace_array.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_core_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_convert_core_la-eztrace_array.lo -MD -MP -MF $(DEPDIR)/libeztrace_convert_core_la-eztrace_array.Tpo -c -o libeztrace_convert_core_la-eztrace_array.lo `test -f 'eztrace_array.c' || echo '$(srcdir)/'`eztrace_array.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_convert_core_la-eztrace_array.Tpo $(DEPDIR)/libeztrace_convert_core_la-eztrace_array.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_array.c' object='libeztrace_convert_core_la-eztrace_array.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_core_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_convert_core_la-eztrace_array.lo `test -f 'eztrace_array.c' || echo '$(srcdir)/'`eztrace_array.c submodules/libeztrace_convert_core_la-ezt_submodule_convert.lo: submodules/ezt_submodule_convert.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_core_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT submodules/libeztrace_convert_core_la-ezt_submodule_convert.lo -MD -MP -MF submodules/$(DEPDIR)/libeztrace_convert_core_la-ezt_submodule_convert.Tpo -c -o submodules/libeztrace_convert_core_la-ezt_submodule_convert.lo `test -f 'submodules/ezt_submodule_convert.c' || echo '$(srcdir)/'`submodules/ezt_submodule_convert.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) submodules/$(DEPDIR)/libeztrace_convert_core_la-ezt_submodule_convert.Tpo submodules/$(DEPDIR)/libeztrace_convert_core_la-ezt_submodule_convert.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='submodules/ezt_submodule_convert.c' object='submodules/libeztrace_convert_core_la-ezt_submodule_convert.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_core_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o submodules/libeztrace_convert_core_la-ezt_submodule_convert.lo `test -f 'submodules/ezt_submodule_convert.c' || echo '$(srcdir)/'`submodules/ezt_submodule_convert.c submodules/libeztrace_convert_core_la-ezt_getcpu_convert.lo: submodules/ezt_getcpu_convert.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_core_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT submodules/libeztrace_convert_core_la-ezt_getcpu_convert.lo -MD -MP -MF submodules/$(DEPDIR)/libeztrace_convert_core_la-ezt_getcpu_convert.Tpo -c -o submodules/libeztrace_convert_core_la-ezt_getcpu_convert.lo `test -f 'submodules/ezt_getcpu_convert.c' || echo '$(srcdir)/'`submodules/ezt_getcpu_convert.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) submodules/$(DEPDIR)/libeztrace_convert_core_la-ezt_getcpu_convert.Tpo submodules/$(DEPDIR)/libeztrace_convert_core_la-ezt_getcpu_convert.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='submodules/ezt_getcpu_convert.c' object='submodules/libeztrace_convert_core_la-ezt_getcpu_convert.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_core_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o submodules/libeztrace_convert_core_la-ezt_getcpu_convert.lo `test -f 'submodules/ezt_getcpu_convert.c' || echo '$(srcdir)/'`submodules/ezt_getcpu_convert.c libeztrace_convert_core_la-ezt_demangle.lo: ezt_demangle.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_core_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_convert_core_la-ezt_demangle.lo -MD -MP -MF $(DEPDIR)/libeztrace_convert_core_la-ezt_demangle.Tpo -c -o libeztrace_convert_core_la-ezt_demangle.lo `test -f 'ezt_demangle.c' || echo '$(srcdir)/'`ezt_demangle.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_convert_core_la-ezt_demangle.Tpo $(DEPDIR)/libeztrace_convert_core_la-ezt_demangle.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ezt_demangle.c' object='libeztrace_convert_core_la-ezt_demangle.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_convert_core_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_convert_core_la-ezt_demangle.lo `test -f 'ezt_demangle.c' || echo '$(srcdir)/'`ezt_demangle.c libeztrace_la-eztrace_core.lo: eztrace_core.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_la-eztrace_core.lo -MD -MP -MF $(DEPDIR)/libeztrace_la-eztrace_core.Tpo -c -o libeztrace_la-eztrace_core.lo `test -f 'eztrace_core.c' || echo '$(srcdir)/'`eztrace_core.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_la-eztrace_core.Tpo $(DEPDIR)/libeztrace_la-eztrace_core.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_core.c' object='libeztrace_la-eztrace_core.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_la-eztrace_core.lo `test -f 'eztrace_core.c' || echo '$(srcdir)/'`eztrace_core.c libeztrace_la-eztrace_sampling.lo: eztrace_sampling.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_la-eztrace_sampling.lo -MD -MP -MF $(DEPDIR)/libeztrace_la-eztrace_sampling.Tpo -c -o libeztrace_la-eztrace_sampling.lo `test -f 'eztrace_sampling.c' || echo '$(srcdir)/'`eztrace_sampling.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_la-eztrace_sampling.Tpo $(DEPDIR)/libeztrace_la-eztrace_sampling.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_sampling.c' object='libeztrace_la-eztrace_sampling.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_la-eztrace_sampling.lo `test -f 'eztrace_sampling.c' || echo '$(srcdir)/'`eztrace_sampling.c libeztrace_la-pthread_core.lo: pthread_core.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeztrace_la-pthread_core.lo -MD -MP -MF $(DEPDIR)/libeztrace_la-pthread_core.Tpo -c -o libeztrace_la-pthread_core.lo `test -f 'pthread_core.c' || echo '$(srcdir)/'`pthread_core.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeztrace_la-pthread_core.Tpo $(DEPDIR)/libeztrace_la-pthread_core.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pthread_core.c' object='libeztrace_la-pthread_core.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeztrace_la-pthread_core.lo `test -f 'pthread_core.c' || echo '$(srcdir)/'`pthread_core.c submodules/libeztrace_la-ezt_submodule.lo: submodules/ezt_submodule.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT submodules/libeztrace_la-ezt_submodule.lo -MD -MP -MF submodules/$(DEPDIR)/libeztrace_la-ezt_submodule.Tpo -c -o submodules/libeztrace_la-ezt_submodule.lo `test -f 'submodules/ezt_submodule.c' || echo '$(srcdir)/'`submodules/ezt_submodule.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) submodules/$(DEPDIR)/libeztrace_la-ezt_submodule.Tpo submodules/$(DEPDIR)/libeztrace_la-ezt_submodule.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='submodules/ezt_submodule.c' object='submodules/libeztrace_la-ezt_submodule.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o submodules/libeztrace_la-ezt_submodule.lo `test -f 'submodules/ezt_submodule.c' || echo '$(srcdir)/'`submodules/ezt_submodule.c submodules/libeztrace_la-ezt_getcpu.lo: submodules/ezt_getcpu.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT submodules/libeztrace_la-ezt_getcpu.lo -MD -MP -MF submodules/$(DEPDIR)/libeztrace_la-ezt_getcpu.Tpo -c -o submodules/libeztrace_la-ezt_getcpu.lo `test -f 'submodules/ezt_getcpu.c' || echo '$(srcdir)/'`submodules/ezt_getcpu.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) submodules/$(DEPDIR)/libeztrace_la-ezt_getcpu.Tpo submodules/$(DEPDIR)/libeztrace_la-ezt_getcpu.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='submodules/ezt_getcpu.c' object='submodules/libeztrace_la-ezt_getcpu.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libeztrace_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o submodules/libeztrace_la-ezt_getcpu.lo `test -f 'submodules/ezt_getcpu.c' || echo '$(srcdir)/'`submodules/ezt_getcpu.c eztrace-ezt_demangle.o: ezt_demangle.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT eztrace-ezt_demangle.o -MD -MP -MF $(DEPDIR)/eztrace-ezt_demangle.Tpo -c -o eztrace-ezt_demangle.o `test -f 'ezt_demangle.c' || echo '$(srcdir)/'`ezt_demangle.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/eztrace-ezt_demangle.Tpo $(DEPDIR)/eztrace-ezt_demangle.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ezt_demangle.c' object='eztrace-ezt_demangle.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o eztrace-ezt_demangle.o `test -f 'ezt_demangle.c' || echo '$(srcdir)/'`ezt_demangle.c eztrace-ezt_demangle.obj: ezt_demangle.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT eztrace-ezt_demangle.obj -MD -MP -MF $(DEPDIR)/eztrace-ezt_demangle.Tpo -c -o eztrace-ezt_demangle.obj `if test -f 'ezt_demangle.c'; then $(CYGPATH_W) 'ezt_demangle.c'; else $(CYGPATH_W) '$(srcdir)/ezt_demangle.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/eztrace-ezt_demangle.Tpo $(DEPDIR)/eztrace-ezt_demangle.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ezt_demangle.c' object='eztrace-ezt_demangle.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o eztrace-ezt_demangle.obj `if test -f 'ezt_demangle.c'; then $(CYGPATH_W) 'ezt_demangle.c'; else $(CYGPATH_W) '$(srcdir)/ezt_demangle.c'; fi` eztrace-eztrace.o: eztrace.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT eztrace-eztrace.o -MD -MP -MF $(DEPDIR)/eztrace-eztrace.Tpo -c -o eztrace-eztrace.o `test -f 'eztrace.c' || echo '$(srcdir)/'`eztrace.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/eztrace-eztrace.Tpo $(DEPDIR)/eztrace-eztrace.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace.c' object='eztrace-eztrace.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o eztrace-eztrace.o `test -f 'eztrace.c' || echo '$(srcdir)/'`eztrace.c eztrace-eztrace.obj: eztrace.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT eztrace-eztrace.obj -MD -MP -MF $(DEPDIR)/eztrace-eztrace.Tpo -c -o eztrace-eztrace.obj `if test -f 'eztrace.c'; then $(CYGPATH_W) 'eztrace.c'; else $(CYGPATH_W) '$(srcdir)/eztrace.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/eztrace-eztrace.Tpo $(DEPDIR)/eztrace-eztrace.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace.c' object='eztrace-eztrace.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o eztrace-eztrace.obj `if test -f 'eztrace.c'; then $(CYGPATH_W) 'eztrace.c'; else $(CYGPATH_W) '$(srcdir)/eztrace.c'; fi` ../pptrace/eztrace-pptrace.o: ../pptrace/pptrace.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../pptrace/eztrace-pptrace.o -MD -MP -MF ../pptrace/$(DEPDIR)/eztrace-pptrace.Tpo -c -o ../pptrace/eztrace-pptrace.o `test -f '../pptrace/pptrace.c' || echo '$(srcdir)/'`../pptrace/pptrace.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../pptrace/$(DEPDIR)/eztrace-pptrace.Tpo ../pptrace/$(DEPDIR)/eztrace-pptrace.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../pptrace/pptrace.c' object='../pptrace/eztrace-pptrace.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../pptrace/eztrace-pptrace.o `test -f '../pptrace/pptrace.c' || echo '$(srcdir)/'`../pptrace/pptrace.c ../pptrace/eztrace-pptrace.obj: ../pptrace/pptrace.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../pptrace/eztrace-pptrace.obj -MD -MP -MF ../pptrace/$(DEPDIR)/eztrace-pptrace.Tpo -c -o ../pptrace/eztrace-pptrace.obj `if test -f '../pptrace/pptrace.c'; then $(CYGPATH_W) '../pptrace/pptrace.c'; else $(CYGPATH_W) '$(srcdir)/../pptrace/pptrace.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../pptrace/$(DEPDIR)/eztrace-pptrace.Tpo ../pptrace/$(DEPDIR)/eztrace-pptrace.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../pptrace/pptrace.c' object='../pptrace/eztrace-pptrace.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../pptrace/eztrace-pptrace.obj `if test -f '../pptrace/pptrace.c'; then $(CYGPATH_W) '../pptrace/pptrace.c'; else $(CYGPATH_W) '$(srcdir)/../pptrace/pptrace.c'; fi` ../pptrace/eztrace-binary.o: ../pptrace/binary.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../pptrace/eztrace-binary.o -MD -MP -MF ../pptrace/$(DEPDIR)/eztrace-binary.Tpo -c -o ../pptrace/eztrace-binary.o `test -f '../pptrace/binary.c' || echo '$(srcdir)/'`../pptrace/binary.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../pptrace/$(DEPDIR)/eztrace-binary.Tpo ../pptrace/$(DEPDIR)/eztrace-binary.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../pptrace/binary.c' object='../pptrace/eztrace-binary.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../pptrace/eztrace-binary.o `test -f '../pptrace/binary.c' || echo '$(srcdir)/'`../pptrace/binary.c ../pptrace/eztrace-binary.obj: ../pptrace/binary.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../pptrace/eztrace-binary.obj -MD -MP -MF ../pptrace/$(DEPDIR)/eztrace-binary.Tpo -c -o ../pptrace/eztrace-binary.obj `if test -f '../pptrace/binary.c'; then $(CYGPATH_W) '../pptrace/binary.c'; else $(CYGPATH_W) '$(srcdir)/../pptrace/binary.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../pptrace/$(DEPDIR)/eztrace-binary.Tpo ../pptrace/$(DEPDIR)/eztrace-binary.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../pptrace/binary.c' object='../pptrace/eztrace-binary.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../pptrace/eztrace-binary.obj `if test -f '../pptrace/binary.c'; then $(CYGPATH_W) '../pptrace/binary.c'; else $(CYGPATH_W) '$(srcdir)/../pptrace/binary.c'; fi` ../pptrace/eztrace-errors.o: ../pptrace/errors.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../pptrace/eztrace-errors.o -MD -MP -MF ../pptrace/$(DEPDIR)/eztrace-errors.Tpo -c -o ../pptrace/eztrace-errors.o `test -f '../pptrace/errors.c' || echo '$(srcdir)/'`../pptrace/errors.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../pptrace/$(DEPDIR)/eztrace-errors.Tpo ../pptrace/$(DEPDIR)/eztrace-errors.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../pptrace/errors.c' object='../pptrace/eztrace-errors.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../pptrace/eztrace-errors.o `test -f '../pptrace/errors.c' || echo '$(srcdir)/'`../pptrace/errors.c ../pptrace/eztrace-errors.obj: ../pptrace/errors.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../pptrace/eztrace-errors.obj -MD -MP -MF ../pptrace/$(DEPDIR)/eztrace-errors.Tpo -c -o ../pptrace/eztrace-errors.obj `if test -f '../pptrace/errors.c'; then $(CYGPATH_W) '../pptrace/errors.c'; else $(CYGPATH_W) '$(srcdir)/../pptrace/errors.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../pptrace/$(DEPDIR)/eztrace-errors.Tpo ../pptrace/$(DEPDIR)/eztrace-errors.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../pptrace/errors.c' object='../pptrace/eztrace-errors.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../pptrace/eztrace-errors.obj `if test -f '../pptrace/errors.c'; then $(CYGPATH_W) '../pptrace/errors.c'; else $(CYGPATH_W) '$(srcdir)/../pptrace/errors.c'; fi` ../pptrace/eztrace-hijack.o: ../pptrace/hijack.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../pptrace/eztrace-hijack.o -MD -MP -MF ../pptrace/$(DEPDIR)/eztrace-hijack.Tpo -c -o ../pptrace/eztrace-hijack.o `test -f '../pptrace/hijack.c' || echo '$(srcdir)/'`../pptrace/hijack.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../pptrace/$(DEPDIR)/eztrace-hijack.Tpo ../pptrace/$(DEPDIR)/eztrace-hijack.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../pptrace/hijack.c' object='../pptrace/eztrace-hijack.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../pptrace/eztrace-hijack.o `test -f '../pptrace/hijack.c' || echo '$(srcdir)/'`../pptrace/hijack.c ../pptrace/eztrace-hijack.obj: ../pptrace/hijack.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../pptrace/eztrace-hijack.obj -MD -MP -MF ../pptrace/$(DEPDIR)/eztrace-hijack.Tpo -c -o ../pptrace/eztrace-hijack.obj `if test -f '../pptrace/hijack.c'; then $(CYGPATH_W) '../pptrace/hijack.c'; else $(CYGPATH_W) '$(srcdir)/../pptrace/hijack.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../pptrace/$(DEPDIR)/eztrace-hijack.Tpo ../pptrace/$(DEPDIR)/eztrace-hijack.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../pptrace/hijack.c' object='../pptrace/eztrace-hijack.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../pptrace/eztrace-hijack.obj `if test -f '../pptrace/hijack.c'; then $(CYGPATH_W) '../pptrace/hijack.c'; else $(CYGPATH_W) '$(srcdir)/../pptrace/hijack.c'; fi` ../pptrace/eztrace-isize.o: ../pptrace/isize.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../pptrace/eztrace-isize.o -MD -MP -MF ../pptrace/$(DEPDIR)/eztrace-isize.Tpo -c -o ../pptrace/eztrace-isize.o `test -f '../pptrace/isize.c' || echo '$(srcdir)/'`../pptrace/isize.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../pptrace/$(DEPDIR)/eztrace-isize.Tpo ../pptrace/$(DEPDIR)/eztrace-isize.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../pptrace/isize.c' object='../pptrace/eztrace-isize.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../pptrace/eztrace-isize.o `test -f '../pptrace/isize.c' || echo '$(srcdir)/'`../pptrace/isize.c ../pptrace/eztrace-isize.obj: ../pptrace/isize.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../pptrace/eztrace-isize.obj -MD -MP -MF ../pptrace/$(DEPDIR)/eztrace-isize.Tpo -c -o ../pptrace/eztrace-isize.obj `if test -f '../pptrace/isize.c'; then $(CYGPATH_W) '../pptrace/isize.c'; else $(CYGPATH_W) '$(srcdir)/../pptrace/isize.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../pptrace/$(DEPDIR)/eztrace-isize.Tpo ../pptrace/$(DEPDIR)/eztrace-isize.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../pptrace/isize.c' object='../pptrace/eztrace-isize.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../pptrace/eztrace-isize.obj `if test -f '../pptrace/isize.c'; then $(CYGPATH_W) '../pptrace/isize.c'; else $(CYGPATH_W) '$(srcdir)/../pptrace/isize.c'; fi` ../pptrace/eztrace-memory.o: ../pptrace/memory.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../pptrace/eztrace-memory.o -MD -MP -MF ../pptrace/$(DEPDIR)/eztrace-memory.Tpo -c -o ../pptrace/eztrace-memory.o `test -f '../pptrace/memory.c' || echo '$(srcdir)/'`../pptrace/memory.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../pptrace/$(DEPDIR)/eztrace-memory.Tpo ../pptrace/$(DEPDIR)/eztrace-memory.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../pptrace/memory.c' object='../pptrace/eztrace-memory.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../pptrace/eztrace-memory.o `test -f '../pptrace/memory.c' || echo '$(srcdir)/'`../pptrace/memory.c ../pptrace/eztrace-memory.obj: ../pptrace/memory.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../pptrace/eztrace-memory.obj -MD -MP -MF ../pptrace/$(DEPDIR)/eztrace-memory.Tpo -c -o ../pptrace/eztrace-memory.obj `if test -f '../pptrace/memory.c'; then $(CYGPATH_W) '../pptrace/memory.c'; else $(CYGPATH_W) '$(srcdir)/../pptrace/memory.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../pptrace/$(DEPDIR)/eztrace-memory.Tpo ../pptrace/$(DEPDIR)/eztrace-memory.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../pptrace/memory.c' object='../pptrace/eztrace-memory.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../pptrace/eztrace-memory.obj `if test -f '../pptrace/memory.c'; then $(CYGPATH_W) '../pptrace/memory.c'; else $(CYGPATH_W) '$(srcdir)/../pptrace/memory.c'; fi` ../pptrace/eztrace-opcodes.o: ../pptrace/opcodes.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../pptrace/eztrace-opcodes.o -MD -MP -MF ../pptrace/$(DEPDIR)/eztrace-opcodes.Tpo -c -o ../pptrace/eztrace-opcodes.o `test -f '../pptrace/opcodes.c' || echo '$(srcdir)/'`../pptrace/opcodes.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../pptrace/$(DEPDIR)/eztrace-opcodes.Tpo ../pptrace/$(DEPDIR)/eztrace-opcodes.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../pptrace/opcodes.c' object='../pptrace/eztrace-opcodes.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../pptrace/eztrace-opcodes.o `test -f '../pptrace/opcodes.c' || echo '$(srcdir)/'`../pptrace/opcodes.c ../pptrace/eztrace-opcodes.obj: ../pptrace/opcodes.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../pptrace/eztrace-opcodes.obj -MD -MP -MF ../pptrace/$(DEPDIR)/eztrace-opcodes.Tpo -c -o ../pptrace/eztrace-opcodes.obj `if test -f '../pptrace/opcodes.c'; then $(CYGPATH_W) '../pptrace/opcodes.c'; else $(CYGPATH_W) '$(srcdir)/../pptrace/opcodes.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../pptrace/$(DEPDIR)/eztrace-opcodes.Tpo ../pptrace/$(DEPDIR)/eztrace-opcodes.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../pptrace/opcodes.c' object='../pptrace/eztrace-opcodes.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../pptrace/eztrace-opcodes.obj `if test -f '../pptrace/opcodes.c'; then $(CYGPATH_W) '../pptrace/opcodes.c'; else $(CYGPATH_W) '$(srcdir)/../pptrace/opcodes.c'; fi` ../pptrace/eztrace-tracing.o: ../pptrace/tracing.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../pptrace/eztrace-tracing.o -MD -MP -MF ../pptrace/$(DEPDIR)/eztrace-tracing.Tpo -c -o ../pptrace/eztrace-tracing.o `test -f '../pptrace/tracing.c' || echo '$(srcdir)/'`../pptrace/tracing.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../pptrace/$(DEPDIR)/eztrace-tracing.Tpo ../pptrace/$(DEPDIR)/eztrace-tracing.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../pptrace/tracing.c' object='../pptrace/eztrace-tracing.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../pptrace/eztrace-tracing.o `test -f '../pptrace/tracing.c' || echo '$(srcdir)/'`../pptrace/tracing.c ../pptrace/eztrace-tracing.obj: ../pptrace/tracing.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../pptrace/eztrace-tracing.obj -MD -MP -MF ../pptrace/$(DEPDIR)/eztrace-tracing.Tpo -c -o ../pptrace/eztrace-tracing.obj `if test -f '../pptrace/tracing.c'; then $(CYGPATH_W) '../pptrace/tracing.c'; else $(CYGPATH_W) '$(srcdir)/../pptrace/tracing.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../pptrace/$(DEPDIR)/eztrace-tracing.Tpo ../pptrace/$(DEPDIR)/eztrace-tracing.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../pptrace/tracing.c' object='../pptrace/eztrace-tracing.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../pptrace/eztrace-tracing.obj `if test -f '../pptrace/tracing.c'; then $(CYGPATH_W) '../pptrace/tracing.c'; else $(CYGPATH_W) '$(srcdir)/../pptrace/tracing.c'; fi` eztrace_avail-eztrace_avail.o: eztrace_avail.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_avail_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT eztrace_avail-eztrace_avail.o -MD -MP -MF $(DEPDIR)/eztrace_avail-eztrace_avail.Tpo -c -o eztrace_avail-eztrace_avail.o `test -f 'eztrace_avail.c' || echo '$(srcdir)/'`eztrace_avail.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/eztrace_avail-eztrace_avail.Tpo $(DEPDIR)/eztrace_avail-eztrace_avail.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_avail.c' object='eztrace_avail-eztrace_avail.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_avail_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o eztrace_avail-eztrace_avail.o `test -f 'eztrace_avail.c' || echo '$(srcdir)/'`eztrace_avail.c eztrace_avail-eztrace_avail.obj: eztrace_avail.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_avail_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT eztrace_avail-eztrace_avail.obj -MD -MP -MF $(DEPDIR)/eztrace_avail-eztrace_avail.Tpo -c -o eztrace_avail-eztrace_avail.obj `if test -f 'eztrace_avail.c'; then $(CYGPATH_W) 'eztrace_avail.c'; else $(CYGPATH_W) '$(srcdir)/eztrace_avail.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/eztrace_avail-eztrace_avail.Tpo $(DEPDIR)/eztrace_avail-eztrace_avail.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_avail.c' object='eztrace_avail-eztrace_avail.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_avail_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o eztrace_avail-eztrace_avail.obj `if test -f 'eztrace_avail.c'; then $(CYGPATH_W) 'eztrace_avail.c'; else $(CYGPATH_W) '$(srcdir)/eztrace_avail.c'; fi` eztrace_convert-eztrace_convert.o: eztrace_convert.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_convert_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT eztrace_convert-eztrace_convert.o -MD -MP -MF $(DEPDIR)/eztrace_convert-eztrace_convert.Tpo -c -o eztrace_convert-eztrace_convert.o `test -f 'eztrace_convert.c' || echo '$(srcdir)/'`eztrace_convert.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/eztrace_convert-eztrace_convert.Tpo $(DEPDIR)/eztrace_convert-eztrace_convert.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_convert.c' object='eztrace_convert-eztrace_convert.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_convert_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o eztrace_convert-eztrace_convert.o `test -f 'eztrace_convert.c' || echo '$(srcdir)/'`eztrace_convert.c eztrace_convert-eztrace_convert.obj: eztrace_convert.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_convert_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT eztrace_convert-eztrace_convert.obj -MD -MP -MF $(DEPDIR)/eztrace_convert-eztrace_convert.Tpo -c -o eztrace_convert-eztrace_convert.obj `if test -f 'eztrace_convert.c'; then $(CYGPATH_W) 'eztrace_convert.c'; else $(CYGPATH_W) '$(srcdir)/eztrace_convert.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/eztrace_convert-eztrace_convert.Tpo $(DEPDIR)/eztrace_convert-eztrace_convert.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_convert.c' object='eztrace_convert-eztrace_convert.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_convert_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o eztrace_convert-eztrace_convert.obj `if test -f 'eztrace_convert.c'; then $(CYGPATH_W) 'eztrace_convert.c'; else $(CYGPATH_W) '$(srcdir)/eztrace_convert.c'; fi` eztrace_loaded-eztrace_loaded.o: eztrace_loaded.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_loaded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT eztrace_loaded-eztrace_loaded.o -MD -MP -MF $(DEPDIR)/eztrace_loaded-eztrace_loaded.Tpo -c -o eztrace_loaded-eztrace_loaded.o `test -f 'eztrace_loaded.c' || echo '$(srcdir)/'`eztrace_loaded.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/eztrace_loaded-eztrace_loaded.Tpo $(DEPDIR)/eztrace_loaded-eztrace_loaded.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_loaded.c' object='eztrace_loaded-eztrace_loaded.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_loaded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o eztrace_loaded-eztrace_loaded.o `test -f 'eztrace_loaded.c' || echo '$(srcdir)/'`eztrace_loaded.c eztrace_loaded-eztrace_loaded.obj: eztrace_loaded.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_loaded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT eztrace_loaded-eztrace_loaded.obj -MD -MP -MF $(DEPDIR)/eztrace_loaded-eztrace_loaded.Tpo -c -o eztrace_loaded-eztrace_loaded.obj `if test -f 'eztrace_loaded.c'; then $(CYGPATH_W) 'eztrace_loaded.c'; else $(CYGPATH_W) '$(srcdir)/eztrace_loaded.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/eztrace_loaded-eztrace_loaded.Tpo $(DEPDIR)/eztrace_loaded-eztrace_loaded.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_loaded.c' object='eztrace_loaded-eztrace_loaded.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_loaded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o eztrace_loaded-eztrace_loaded.obj `if test -f 'eztrace_loaded.c'; then $(CYGPATH_W) 'eztrace_loaded.c'; else $(CYGPATH_W) '$(srcdir)/eztrace_loaded.c'; fi` eztrace_stats-eztrace_stats.o: eztrace_stats.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_stats_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT eztrace_stats-eztrace_stats.o -MD -MP -MF $(DEPDIR)/eztrace_stats-eztrace_stats.Tpo -c -o eztrace_stats-eztrace_stats.o `test -f 'eztrace_stats.c' || echo '$(srcdir)/'`eztrace_stats.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/eztrace_stats-eztrace_stats.Tpo $(DEPDIR)/eztrace_stats-eztrace_stats.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_stats.c' object='eztrace_stats-eztrace_stats.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_stats_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o eztrace_stats-eztrace_stats.o `test -f 'eztrace_stats.c' || echo '$(srcdir)/'`eztrace_stats.c eztrace_stats-eztrace_stats.obj: eztrace_stats.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_stats_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT eztrace_stats-eztrace_stats.obj -MD -MP -MF $(DEPDIR)/eztrace_stats-eztrace_stats.Tpo -c -o eztrace_stats-eztrace_stats.obj `if test -f 'eztrace_stats.c'; then $(CYGPATH_W) 'eztrace_stats.c'; else $(CYGPATH_W) '$(srcdir)/eztrace_stats.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/eztrace_stats-eztrace_stats.Tpo $(DEPDIR)/eztrace_stats-eztrace_stats.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='eztrace_stats.c' object='eztrace_stats-eztrace_stats.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eztrace_stats_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o eztrace_stats-eztrace_stats.obj `if test -f 'eztrace_stats.c'; then $(CYGPATH_W) 'eztrace_stats.c'; else $(CYGPATH_W) '$(srcdir)/eztrace_stats.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs -rm -rf submodules/.libs submodules/_libs install-inputDATA: $(input_DATA) @$(NORMAL_INSTALL) @list='$(input_DATA)'; test -n "$(inputdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(inputdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(inputdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(inputdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(inputdir)" || exit $$?; \ done uninstall-inputDATA: @$(NORMAL_UNINSTALL) @list='$(input_DATA)'; test -n "$(inputdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(inputdir)'; $(am__uninstall_files_from_dir) install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) check: check-am all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \ $(HEADERS) install-binPROGRAMS: install-libLTLIBRARIES installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(inputdir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f ../pptrace/$(DEPDIR)/$(am__dirstamp) -rm -f ../pptrace/$(am__dirstamp) -rm -f submodules/$(DEPDIR)/$(am__dirstamp) -rm -f submodules/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ clean-libLTLIBRARIES clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ../pptrace/$(DEPDIR) ./$(DEPDIR) submodules/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-includeHEADERS install-inputDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-binSCRIPTS \ install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ../pptrace/$(DEPDIR) ./$(DEPDIR) submodules/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \ uninstall-includeHEADERS uninstall-inputDATA \ uninstall-libLTLIBRARIES .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-binSCRIPTS install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-includeHEADERS install-info \ install-info-am install-inputDATA install-libLTLIBRARIES \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-binPROGRAMS uninstall-binSCRIPTS \ uninstall-includeHEADERS uninstall-inputDATA \ uninstall-libLTLIBRARIES .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_convert.c0000644000000000000000000000013113020610460017676 xustar0030 mtime=1480790320.360264651 30 atime=1508138883.776115223 29 ctime=1508162367.83391605 eztrace-1.1-7/src/core/eztrace_convert.c0000644000175000017500000001246213020610460021073 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE #include #include "ev_codes.h" #include "eztrace_list.h" #include "eztrace_convert.h" #include "eztrace_convert_core.h" #include "eztrace_hook.h" #include "GTG.h" /* name of the output file */ static char *output_filename = "eztrace_output"; static struct eztrace_archive_info *arch_info = NULL, *arch_info_head = NULL; static void usage(int argc __attribute__((unused)), char **argv) { fprintf( stderr, "Usage : %s [-v] [-t PAJE|OTF] [-z] [-o output_filename] input_filename input_filename ... \n", argv[0]); } int compress = 0; static void parse_args(int argc, char **argv) { int i; litl_size_t j; litl_read_trace_t* arch; struct eztrace_archive_info *tmp; for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-o") == 0) output_filename = argv[++i]; else if (strcmp(argv[i], "-v") == 0) VERBOSE = 1; else if (strcmp(argv[i], "-z") == 0) compress = 1; else if (strcmp(argv[i], "-t") == 0) { char* trace_type = argv[++i]; if (strcmp(trace_type, "PAJE") == 0) { printf("Setting trace type to PAJE\n"); setTraceType(PAJE); } else if (strcmp(trace_type, "OTF") == 0) { printf("Setting trace type to OTF\n"); setTraceType(OTF); } else { fprintf(stderr, "Unknown trace type: '%s'\n", trace_type); exit(-1); } } else if (strcmp(argv[i], "-h") == 0) { usage(argc, argv); exit(-1); } else if (argv[i][0] == '-') { fprintf(stderr, "Unknown option %s\n", argv[i]); usage(argc, argv); exit(-1); } else { // count the number of traces including those in archives // open the trace file. Do this here to deal with archives of traces arch = litl_read_open_trace(argv[i]); if (!arch) { perror("litl_read_open_trace:"); exit(-1); } tmp = (struct eztrace_archive_info *) malloc(sizeof(struct eztrace_archive_info)); tmp->block = arch; tmp->filename = argv[i]; tmp->next = NULL; if (arch_info == NULL ) { arch_info = tmp; arch_info_head = arch_info; } else { arch_info->next = tmp; arch_info = arch_info->next; } NB_TRACES += tmp->block->nb_processes; } } if (NB_TRACES < 1) { usage(argc, argv); exit(-1); } // create and initialize traces j = 0; arch_info = arch_info_head; eztrace_convert_init(NB_TRACES); while (arch_info != NULL ) { tmp = arch_info; arch_info = arch_info->next; arch = tmp->block; // init traces for (i = 0; i < tmp->block->nb_processes; i++) { get_traces(i + j)->input_filename = tmp->filename; get_traces(i + j)->block = tmp->block; get_traces(i + j)->trace_index = i; } litl_read_init_processes(arch); j += tmp->block->nb_processes; } } static void __clean_up() { while (arch_info_head != NULL) { arch_info = arch_info_head; arch_info_head = arch_info_head->next; free(arch_info); } } /* * This program should be used to parse the log file generated by LiTL */ int main(int argc, char **argv) { int ret; load_modules(1); setTraceType(PAJE); /* parse the arguments passed to this program */ parse_args(argc, argv); #ifdef GTG_OUT_OF_ORDER ret = initTrace(output_filename, 0, GTG_FLAG_OUTOFORDER); #else ret = initTrace(output_filename, 0, GTG_FLAG_NONE); #endif if (ret != TRACE_SUCCESS) { fprintf(stderr, "fail to initialize GTG\n"); return 1; } if (compress) if (setCompress(9) != TRACE_SUCCESS) fprintf(stderr, "Fail to enable trace compression\n"); eztrace_initialize_gtg(); __init_modules(); int i; /* initialize the traces array */ for (i = 0; i < NB_TRACES; i++) { /* open the trace file */ struct trace_t* cur_trace = get_traces(i); cur_trace->delay = 0; cur_trace->rank = i; cur_trace->id = i; cur_trace->done = 0; cur_trace->skip = 0; cur_trace->line_number = 0; eztrace_create_containers(i); /* if several traces are loaded, this means that MPI was used, * so let's skip all the first events until MPI_Init is detected */ if (NB_TRACES > 1) { cur_trace->start = 0; cur_trace->trace_id = NULL; } else { CREATE_TRACE_ID_STR(cur_trace->trace_id, 0); cur_trace->start = 1; NB_START = 1; addContainer(0.00000, cur_trace->trace_id, "CT_Process", "C_Prog", cur_trace->trace_id, "0"); eztrace_create_ids(cur_trace->rank); } ezt_litl_read_next_event(cur_trace); if (!cur_trace->ev.event) { fprintf(stderr, "no more block ...\n"); break; } cur_trace->start_time = LITL_READ_GET_TIME(&cur_trace->ev); } set_cur_trace(get_traces(0)); set_cur_ev(&get_traces(0)->ev); struct eztrace_event_handler* h_info = NULL; h_info = get_handler_info(); h_info->cur_trace_nb = 0; h_info->nb_done = 0; h_info->nb_handled = 0; sem_init(&h_info->events_processed, 0, 0); /* create the handler thread and wait until it completes */ create_main_thread(); wake_up_handler_thread(); sem_wait(&h_info->events_processed); /* finalize the trace and close the file */ endTrace(); eztrace_convert_finalize(); printf("%d events handled\n", h_info->nb_handled); __clean_up(); return 0; } eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_sampling.h0000644000000000000000000000013213020610460020036 xustar0030 mtime=1480790320.360264651 30 atime=1508138883.300103334 30 ctime=1508162367.801913255 eztrace-1.1-7/src/core/eztrace_sampling.h0000644000175000017500000000253313020610460021230 0ustar00trahaytrahay00000000000000#ifndef EZTRACE_SAMPLING_H #define EZTRACE_SAMPLING_H #include struct ezt_sampling_callback_instance; /* The callback shall return 0 if successfull. * If successfull, eztrace core will wait interval microseconds before invoking * the callback again. * If unsuccessfull, eztrace core may invoke the callback at any time */ typedef int (*ezt_sampling_callback_t)(struct ezt_sampling_callback_instance*instance); /* This structure is passed to sampling callbacks. The callback should not modify any field apart * from plugin_data. */ struct ezt_sampling_callback_instance { ezt_sampling_callback_t callback; unsigned interval; struct timeval last_call; void* plugin_data; }; /* Register a sampling callback * \param callback: the sampling callback * \param interval: time in microsecond between each call to callback * * NB: the interval is thread-specific. Interval corresponds to the minimum * time difference between two calls (within one thread). Please note that * we use a lazy system: the callback is only called if eztrace intercepts a function. * Thus, if the application performs a long computing phase, the callback may not be * called very often. */ void ezt_sampling_register_callback(ezt_sampling_callback_t callback, unsigned interval); void ezt_sampling_check_callbacks(); #endif /* EZTRACE_SAMPLING_H */ eztrace-1.1-7/src/core/PaxHeaders.7332/submodules0000644000000000000000000000013213171135477016464 xustar0030 mtime=1508162367.821915002 30 atime=1508162372.166294941 30 ctime=1508162367.821915002 eztrace-1.1-7/src/core/submodules/0000755000175000017500000000000013171135477017730 5ustar00trahaytrahay00000000000000eztrace-1.1-7/src/core/submodules/PaxHeaders.7332/ezt_submodule_convert.c0000644000000000000000000000013213020610460023305 xustar0030 mtime=1480790320.360264651 30 atime=1508138883.732114124 30 ctime=1508162367.821915002 eztrace-1.1-7/src/core/submodules/ezt_submodule_convert.c0000644000175000017500000000216613020610460024501 0ustar00trahaytrahay00000000000000#include "ezt_submodule.h" #include "ezt_getcpu.h" static int __ezt_nb_submodules = 1; static struct ezt_submodule __ezt_submodules[] = { { .exec_init = NULL, .convert_init = ezt_getcpu_convert_init, .convert_handle = ezt_getcpu_convert_events, .convert_handle_stats = ezt_getcpu_convert_stats, .convert_print_stats = ezt_getcpu_convert_print_stats } }; void ezt_submodule_convert_init() { int i; for(i=0;i<__ezt_nb_submodules; i++) { __ezt_submodules[i].convert_init(); } } int ezt_submodule_convert_handle(eztrace_event_t* ev) { int i; int ret = 0; for(i=0;i<__ezt_nb_submodules; i++) { ret = __ezt_submodules[i].convert_handle(ev); if(ret) return ret; } return ret; } int ezt_submodule_convert_handle_stats(eztrace_event_t* ev) { int i; int ret = 0; for(i=0;i<__ezt_nb_submodules; i++) { ret = __ezt_submodules[i].convert_handle_stats(ev); if(ret) return ret; } return ret; } void ezt_submodule_convert_print_stats() { int i; for(i=0;i<__ezt_nb_submodules; i++) { __ezt_submodules[i].convert_print_stats(); } } eztrace-1.1-7/src/core/submodules/PaxHeaders.7332/ezt_getcpu_convert.c0000644000000000000000000000013213143047722022610 xustar0030 mtime=1502367698.660456018 30 atime=1508138883.952119618 30 ctime=1508162367.821915002 eztrace-1.1-7/src/core/submodules/ezt_getcpu_convert.c0000644000175000017500000000142413143047722024000 0ustar00trahaytrahay00000000000000#include #include "eztrace_convert.h" #include "ezt_submodule.h" #include "ezt_getcpu.h" /* These functions are called post mortem (by eztrace_convert/eztrace_stats) */ int ezt_getcpu_convert_init() { addVarType ("V_CURCPU", "Current CPU", "CT_Thread"); return 0; } int ezt_getcpu_convert_events(eztrace_event_t *ev) { DECLARE_THREAD_ID_STR(thread_id, CUR_INDEX, CUR_THREAD_ID); switch (LITL_READ_GET_CODE(ev)) { case EZT_GETCPU: { /* todo */ FUNC_NAME; int cpu = GET_PARAM(CUR_EV, 1); setVar(CURRENT, "V_CURCPU", thread_id, (double)cpu); break; } default: return 0; } return 1; } int ezt_getcpu_convert_stats(eztrace_event_t *ev __attribute__((unused))) { return 0; } void ezt_getcpu_convert_print_stats() { } eztrace-1.1-7/src/core/submodules/PaxHeaders.7332/ezt_getcpu.h0000644000000000000000000000013213020610460021042 xustar0030 mtime=1480790320.360264651 30 atime=1508138883.548109528 30 ctime=1508162367.813914303 eztrace-1.1-7/src/core/submodules/ezt_getcpu.h0000644000175000017500000000020513020610460022226 0ustar00trahaytrahay00000000000000#ifndef EZT_GETCPU_H #define EZT_GETCPU_H /* initialize the ezt_getcpu module */ void ezt_getcpu_init(); #endif /* EZT_GETCPU_H */ eztrace-1.1-7/src/core/submodules/PaxHeaders.7332/ezt_getcpu.c0000644000000000000000000000013213020610460021035 xustar0030 mtime=1480790320.360264651 30 atime=1508138883.328104035 30 ctime=1508162367.813914303 eztrace-1.1-7/src/core/submodules/ezt_getcpu.c0000644000175000017500000000242713020610460022231 0ustar00trahaytrahay00000000000000#define _GNU_SOURCE #include #include "ezt_submodule.h" #include "eztrace_sampling.h" static int __ezt_use_getcpu = 0; struct cpu_info { int last_cpu; }; int ezt_getcpu_callback(struct ezt_sampling_callback_instance *instance) { struct cpu_info* p = NULL; if(!instance->plugin_data) { /* first time this thread calls this callback. * Let's allocate data */ p = malloc(sizeof(struct cpu_info)); p->last_cpu = -1; instance->plugin_data = p; } p = instance->plugin_data; /* todo: use getcpu instead (getcpu also returns NUMA-related information) */ int cur_cpu = sched_getcpu(); if(cur_cpu != p->last_cpu) { EZTRACE_EVENT1(EZT_GETCPU, cur_cpu); } p->last_cpu = cur_cpu; return 0; } /* initialize the ezt_getcpu module */ void ezt_getcpu_init() { static int initialized = 0; if(initialized) return; initialized = 1; char* str = getenv("EZTRACE_USE_GETCPU"); if(str) { if(strcmp(str, "0")) { char* str2 = getenv("EZTRACE_GETCPU_INTERVAL"); int interval = 10000; if(str2) { interval = atoi(str2); } __ezt_use_getcpu = 1; printf("[EZTrace] module getcpu enabled (sampling every %d us)\n", interval); ezt_sampling_register_callback(ezt_getcpu_callback, interval); } } } eztrace-1.1-7/src/core/submodules/PaxHeaders.7332/ezt_submodule.c0000644000000000000000000000013213020610460021545 xustar0030 mtime=1480790320.360264651 30 atime=1508138883.344104433 30 ctime=1508162367.813914303 eztrace-1.1-7/src/core/submodules/ezt_submodule.c0000644000175000017500000000125013020610460022732 0ustar00trahaytrahay00000000000000#include "ezt_submodule.h" #include "ezt_getcpu.h" static int __ezt_nb_submodules = 1; static struct ezt_submodule __ezt_submodules[] = { { .exec_init = ezt_getcpu_init, .convert_init = NULL, .convert_handle = NULL, .convert_handle_stats = NULL, .convert_print_stats = NULL } }; void ezt_submodule_exec_init() { static int initialized = 0; if(initialized) return; initialized = 1; int i; for(i=0;i<__ezt_nb_submodules; i++) { __ezt_submodules[i].exec_init(); } } static void __ezt_submodule_init(void) __attribute__ ((constructor)); static void __ezt_submodule_init(void) { ezt_submodule_exec_init(); } eztrace-1.1-7/src/core/submodules/PaxHeaders.7332/ezt_submodule.h0000644000000000000000000000013213020610460021552 xustar0030 mtime=1480790320.360264651 30 atime=1508138883.372105133 30 ctime=1508162367.813914303 eztrace-1.1-7/src/core/submodules/ezt_submodule.h0000644000175000017500000000227013020610460022742 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © CNRS, INRIA, Université Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef EZT_SUBMODULE_H #define EZT_SUBMODULE_H #include "eztrace.h" #include "eztrace_convert_types.h" #include "ev_codes.h" #define EZT_SUBMODULE_EVENTS_ID SYSTEM_MODULE_ID(0x10) #define EZT_SUBMODULE_PREFIX GENERATE_SYSTEM_MODULE_PREFIX(EZT_SUBMODULE_EVENTS_ID) struct ezt_submodule { void (*exec_init)(); int (*convert_init)(); int (*convert_handle)(eztrace_event_t* ev); int (*convert_handle_stats)(eztrace_event_t* ev); void (*convert_print_stats)(); }; void ezt_submodule_exec_init(); void ezt_submodule_convert_init(); int ezt_submodule_convert_handle(eztrace_event_t *ev); int ezt_submodule_convert_handle_stats(eztrace_event_t *ev); void ezt_submodule_convert_print_stats(); /* GETCPU submodule */ extern void ezt_getcpu_init(); extern int ezt_getcpu_convert_init(); extern int ezt_getcpu_convert_events(eztrace_event_t *ev); extern int ezt_getcpu_convert_stats(eztrace_event_t *ev); extern void ezt_getcpu_convert_print_stats(); #define EZT_GETCPU (EZT_SUBMODULE_PREFIX | 0X0001) #endif /* EZT_SUBMODULE_H */ eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace.c.in0000644000000000000000000000013213041355201016546 xustar0030 mtime=1485167233.561572635 30 atime=1508162286.787040897 30 ctime=1508162367.805913605 eztrace-1.1-7/src/core/eztrace.c.in0000644000175000017500000001670013041355201017741 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE #include #include #include #include #include #include #include "pptrace.h" #include "eztrace.h" extern int pptrace_debug_level; extern char **environ; void set_launcher_env() { setenv("TESTLAUNCHER", "1", 1); } void unset_launcher_env() { setenv("TESTLAUNCHER", "0", 1); } int file_exists(const char *pathname) { if (access(pathname, F_OK) != -1) { return 1; // file exists } return 0; } int str_ends_with(char *str, char *end) { size_t str_len = strlen(str); size_t end_len = strlen(end); char *str_end = str + str_len - end_len; return strcmp(str_end, end) == 0; } void usage(const char *prog_name) { printf("Usage: %s [OPTION] program [arg1 arg2 ...]\n", prog_name); printf("\t-t \"plugin1 plugin2 ... pluginN\" Select a list of plugins\n"); printf("\t-o Select the output directory\n"); printf("\t-l Select a plugin directory\n"); printf("\t-f Enable EZTRACE_FLUSH\n"); printf("\t-d Debug mode\n"); printf("\t-? -h Display this help and exit\n"); /* todo: add a verbose mode */ } static char* get_env_str(const char* env_name, const char* suffix) { char* tmp = getenv(env_name); int string_length = 1; char* res = NULL; if ((tmp == NULL || tmp[0] == '\0') && suffix == NULL) return NULL; if (tmp && !suffix) return strdup(tmp); if (!tmp && suffix) return strdup(suffix); string_length += strlen(tmp) + strlen(suffix); res = calloc(string_length, sizeof(char)); sprintf(res, "%s%s", tmp, suffix); return res; } /* add to_add to an already allocated string */ static char* add_to_str(char* dest_str, const char* to_add) { int len = strlen(dest_str) + strlen(to_add) + 1; dest_str = realloc(dest_str, len); strcat(dest_str, to_add); return dest_str; } int main(int argc, char **argv) { int debug = 0; int i, j = 0; int test = 0; char* libdir=NULL; char *ezt_library_path = NULL; int nb_opts = 0; // options char *prog_name = NULL; // prog_name void *bin = NULL; int nb_modules = 0; for (i = 1; i < argc; i++) { if (!strcmp(argv[i], "-d")) { debug = 1; nb_opts++; } else if (!strcmp(argv[i], "-p")) { test = 1; nb_opts++; } else if (!strcmp(argv[i], "-t")) { setenv("EZTRACE_TRACE", argv[i + 1], 1); i++; nb_opts += 2; } else if (!strcmp(argv[i], "-o")) { setenv("EZTRACE_TRACE_DIR", argv[i + 1], 1); i++; nb_opts += 2; } else if (!strcmp(argv[i], "-l")) { setenv("EZTRACE_LIBRARY_PATH", argv[i + 1], 1); i++; nb_opts += 2; } else if (!strcmp(argv[i], "-f")) { setenv("EZTRACE_FLUSH", "1", 1); nb_opts++; } else if (!strcmp(argv[i], "-?") || !strcmp(argv[i], "-h")) { usage(argv[0]); return EXIT_SUCCESS; } else if (argv[i][0] == '-' && argv[i][1] == 'v') { nb_opts++; for (j = 1; argv[i][j] == 'v'; j++) pptrace_debug_level++; } else { /* Unknown parameter name. It's probably the program name. We can stop * parsing the parameter list. */ break; } } // list of enabled module char *ezt_trace = get_env_str("EZTRACE_TRACE", ""); if(!test) { int len = strlen(EZTRACE_LIB_DIR); libdir=malloc(sizeof(char)*(len+2)); snprintf(libdir, len+2, ":%s", EZTRACE_LIB_DIR); } // user libs env variable ezt_library_path = get_env_str("EZTRACE_LIBRARY_PATH", libdir); prog_name = argv[nb_opts + 1]; if (prog_name == NULL) { usage(argv[0]); return EXIT_SUCCESS; } // init binary & catch all modules bin = pptrace_prepare_binary(prog_name); if (!bin) { fprintf(stderr, "Unable to load binary %s\n", prog_name); return EXIT_FAILURE; } // modules in ezt_trace if (ezt_trace != NULL) { char *module = strtok(ezt_trace, " "); while (module != NULL && ++nb_modules) module = strtok(NULL, " "); free(ezt_trace); if(nb_modules == 0) { unsetenv("EZTRACE_TRACE"); ezt_trace=NULL; } } char *modules[nb_modules]; if (nb_modules != 0) { // we have to get EZTRACE_TRACE again because we strtok-ed it ezt_trace = get_env_str("EZTRACE_TRACE", ""); char *module = strtok(ezt_trace, " "); i = 0; while (module != NULL) { modules[i++] = module; module = strtok(NULL, " "); } } // dirs in ezt_library_path int nb_dirs = 0; if (ezt_library_path != NULL) { char *dir = strtok(ezt_library_path, ":"); while (dir != NULL && ++nb_dirs) dir = strtok(NULL, ":"); free(ezt_library_path); } char *dirs[nb_dirs]; if (nb_dirs != 0) { // we have to get EZTRACE_LIBRARY_PATH again because we strtok-ed it ezt_library_path = get_env_str("EZTRACE_LIBRARY_PATH",libdir); char *dir = strtok(ezt_library_path, ":"); i = 0; while (dir != NULL) { dirs[i++] = dir; dir = strtok(NULL, ":"); } } // libeztrace should always be preloaded! char *files = NULL; if (test) { fprintf(stderr, "Eztrace test Mode\n"); files = strdup(EZTRACE_ABS_TOP_BUILDDIR); files = add_to_str(files, "src/core/.libs/libeztrace-autostart@DYNLIB_EXT@"); } else { files = strdup(EZTRACE_LIB_DIR); files = add_to_str(files, "libeztrace-autostart@DYNLIB_EXT@"); } if (pptrace_add_preload(bin, files)) { fprintf(stderr, "Unable to add %s to @LD_PRELOAD_NAME@\n", files); return EXIT_FAILURE; } set_launcher_env(); if (ezt_trace != NULL) { for (i = 0; i < nb_modules; i++) { int module_found=0; for (j = 0; j < nb_dirs; j++) { char *pathname = strdup(dirs[j]); pathname = add_to_str(pathname, "/libeztrace-autostart-"); pathname = add_to_str(pathname, modules[i]); pathname = add_to_str(pathname, "@DYNLIB_EXT@"); if (file_exists(pathname)) { module_found=1; if (pptrace_load_module(bin, pathname)) { fprintf(stderr, "Unable to add %s to @LD_PRELOAD_NAME@\n", pathname); return EXIT_FAILURE; } files = add_to_str(files, ":"); files = add_to_str(files, pathname); } free(pathname); } if(!module_found) { fprintf(stderr,"[EZTrace] cannot find module %s\n", modules[i]); } } free(ezt_trace); } else { for (i = 0; i < nb_dirs; i++) { char *pathname = dirs[i]; struct dirent *dirent; DIR *d = opendir(pathname); while ((dirent = readdir(d))) { if (!strncmp(dirent->d_name, "libeztrace-autostart-", 21) && str_ends_with(dirent->d_name, "@DYNLIB_EXT@")) { char *file = strdup(pathname); file = add_to_str(file, "/"); file = add_to_str(file, dirent->d_name); if (pptrace_load_module(bin, file)) { fprintf(stderr, "Unable to add %s to @LD_PRELOAD_NAME@\n", file); return EXIT_FAILURE; } files = add_to_str(files, ":"); files = add_to_str(files, file); free(file); } } closedir(d); } } free(ezt_library_path); unset_launcher_env(); // run if (debug) { // TODO: make it configurable char *debugger[5]; debugger[0] = "gdb"; debugger[1] = "-quiet"; debugger[2] = "{name}"; debugger[3] = "{pid}"; debugger[4] = NULL; pptrace_add_debugger(bin, debugger); } if (pptrace_run(bin, argv + nb_opts + 1, environ)) { fprintf(stderr, "Unable to run the target\n"); return EXIT_FAILURE; } return EXIT_SUCCESS; } eztrace-1.1-7/src/core/PaxHeaders.7332/ezt_demangle.c0000644000000000000000000000013213020610460017140 xustar0030 mtime=1480790320.360264651 30 atime=1508138883.868117521 30 ctime=1508162367.821915002 eztrace-1.1-7/src/core/ezt_demangle.c0000644000175000017500000000156413020610460020335 0ustar00trahaytrahay00000000000000#include #include #if HAVE_DEMANGLE #include const char* ezt_demangle(const char* mangled_str) { /* todo: add an option to get only the function name */ /* get the full function prototype (including parameters and return type) */ char* res_str = cplus_demangle(mangled_str, DMGL_AUTO | DMGL_PARAMS); if(!res_str) { /* demangling failed. return the mangled string */ int len = strlen(mangled_str) + 1; res_str = malloc(sizeof(char*) * len); strncpy(res_str, mangled_str, len); } return res_str; } #else /* HAVE_DEMANGLE */ /* Libiberty is not available, return a copy of the mangled string */ const char* ezt_demangle(const char* mangled_str) { int len = strlen(mangled_str) + 1; char* res_str = malloc(sizeof(char*) * len); strncpy(res_str, mangled_str, len); return res_str; } #endif /* HAVE_DEMANGLE */ eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_litl.h0000644000000000000000000000013213020610460017170 xustar0030 mtime=1480790320.360264651 30 atime=1508138883.420106332 30 ctime=1508162367.793912556 eztrace-1.1-7/src/core/eztrace_litl.h0000644000175000017500000002401513020610460020361 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef __EZTRACE_LITL_H__ #define __EZTRACE_LITL_H__ #include "eztrace.h" #include "litl_read.h" #include "litl_types.h" #include "litl_write.h" #define GET_PARAM(p_ev, num_param) LITL_READ_REGULAR(p_ev)->param[(num_param)] #define GET_NBPARAMS(p_ev) LITL_READ_REGULAR(p_ev)->nb_params #define GET_PARAM_RAW(p_ev, ptr) do { \ memcpy(ptr, LITL_READ_RAW(p_ev)->data, LITL_READ_RAW(p_ev)->size); \ } while(0) #define CHECK_RETVAL(f) do { \ void* retval = NULL; \ if(__ezt_trace.status == ezt_trace_status_running || \ __ezt_trace.status == ezt_trace_status_paused || \ __ezt_trace.status == ezt_trace_status_being_finalized) { \ retval = f; \ if(! retval){ \ fprintf(stderr, "[EZTrace] The buffer for recording events is full. Stop recording. The trace will be truncated\n");\ __ezt_trace.status = ezt_trace_status_stopped; \ } \ } \ } while(0) #define EZTRACE_EVENT_RAW(code, arg1) \ EZTRACE_EVENT_RAW_DATA(code, strlen(arg1) + 1, arg1) #define EZTRACE_EVENT_RAW_DATA(code, nbytes, arg1) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ litl_write_probe_raw(__ezt_trace.litl_trace, code, nbytes, (litl_data_t *) arg1); \ EZTRACE_PROTECT_OFF(); \ } \ } /* create an event without any data */ #define EZTRACE_EVENT0_UNPROTECTED(code) CHECK_RETVAL(litl_write_probe_reg_0(__ezt_trace.litl_trace, code)) /* create an event with one value */ #define EZTRACE_EVENT1_UNPROTECTED(code, arg1) \ CHECK_RETVAL(litl_write_probe_reg_1(__ezt_trace.litl_trace, code, (litl_param_t)arg1)) /* create an event with two value */ #define EZTRACE_EVENT2_UNPROTECTED(code, arg1, arg2) \ CHECK_RETVAL(litl_write_probe_reg_2(__ezt_trace.litl_trace, code, (litl_param_t)arg1, (litl_param_t)arg2)) /* etc. */ #define EZTRACE_EVENT3_UNPROTECTED(code, arg1, arg2, arg3) \ CHECK_RETVAL(litl_write_probe_reg_3(__ezt_trace.litl_trace, code, (litl_param_t) arg1, \ (litl_param_t) arg2, (litl_param_t) arg3)) #define EZTRACE_EVENT4_UNPROTECTED(code, arg1, arg2, arg3, arg4) \ CHECK_RETVAL(litl_write_probe_reg_4(__ezt_trace.litl_trace, code, (litl_param_t) arg1, \ (litl_param_t) arg2, (litl_param_t) arg3, \ (litl_param_t) arg4)) #define EZTRACE_EVENT5_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5) \ CHECK_RETVAL(litl_write_probe_reg_5(__ezt_trace.litl_trace, code, (litl_param_t) arg1, \ (litl_param_t) arg2, (litl_param_t) arg3, \ (litl_param_t) arg4, (litl_param_t) arg5)) #define EZTRACE_EVENT6_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6) \ CHECK_RETVAL(litl_write_probe_reg_6(__ezt_trace.litl_trace, code, (litl_param_t) arg1, \ (litl_param_t) arg2, (litl_param_t) arg3, \ (litl_param_t) arg4, (litl_param_t) arg5, \ (litl_param_t) arg6)) #define EZTRACE_EVENT7_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \ CHECK_RETVAL(litl_write_probe_reg_7(__ezt_trace.litl_trace, code, (litl_param_t) arg1, \ (litl_param_t) arg2, (litl_param_t) arg3, \ (litl_param_t) arg4, (litl_param_t) arg5, \ (litl_param_t) arg6, (litl_param_t) arg7)) #define EZTRACE_EVENT8_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \ CHECK_RETVAL(litl_write_probe_reg_8(__ezt_trace.litl_trace, code, (litl_param_t) arg1, \ (litl_param_t) arg2, (litl_param_t) arg3, \ (litl_param_t) arg4, (litl_param_t) arg5, \ (litl_param_t) arg6, (litl_param_t) arg7, \ (litl_param_t) arg8)) #define EZTRACE_EVENT9_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) \ CHECK_RETVAL(litl_write_probe_reg_9(__ezt_trace.litl_trace, code, (litl_param_t) arg1, \ (litl_param_t) arg2, (litl_param_t) arg3, \ (litl_param_t) arg4, (litl_param_t) arg5, \ (litl_param_t) arg6, (litl_param_t) arg7, \ (litl_param_t) arg8, (litl_param_t) arg9)) #define EZTRACE_EVENT0(code) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ if (__ezt_trace.status != ezt_trace_status_paused) { \ EZTRACE_EVENT0_UNPROTECTED(code); \ } \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT1(code, arg1) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ if (__ezt_trace.status != ezt_trace_status_paused) { \ EZTRACE_EVENT1_UNPROTECTED(code, arg1); \ } \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT2(code, arg1, arg2) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ if (__ezt_trace.status != ezt_trace_status_paused) { \ EZTRACE_EVENT2_UNPROTECTED(code, arg1, arg2); \ } \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT3(code, arg1, arg2, arg3) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ if (__ezt_trace.status != ezt_trace_status_paused) { \ EZTRACE_EVENT3_UNPROTECTED(code, arg1, arg2, arg3); \ } \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT4(code, arg1, arg2, arg3, arg4) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ if (__ezt_trace.status != ezt_trace_status_paused) { \ EZTRACE_EVENT4_UNPROTECTED(code, arg1, arg2, arg3, arg4); \ } \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT5(code, arg1, arg2, arg3, arg4, arg5) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ if (__ezt_trace.status != ezt_trace_status_paused) { \ EZTRACE_EVENT5_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5); \ } \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT6(code, arg1, arg2, arg3, arg4, arg5, arg6) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ if (__ezt_trace.status != ezt_trace_status_paused) { \ EZTRACE_EVENT6_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6); \ } \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT7(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ if (__ezt_trace.status != ezt_trace_status_paused) { \ EZTRACE_EVENT7_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7); \ } \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT8(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ if (__ezt_trace.status != ezt_trace_status_paused) { \ EZTRACE_EVENT8_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); \ } \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_EVENT9(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ if (__ezt_trace.status != ezt_trace_status_paused) { \ EZTRACE_EVENT9_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); \ } \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_FORCE_RECORD_EVENT0(code) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ EZTRACE_EVENT0_UNPROTECTED(code); \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_FORCE_RECORD_EVENT1(code, arg1) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ EZTRACE_EVENT1_UNPROTECTED(code, arg1); \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_FORCE_RECORD_EVENT2(code, arg1, arg2) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ EZTRACE_EVENT2_UNPROTECTED(code, arg1, arg2); \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_FORCE_RECORD_EVENT3(code, arg1, arg2, arg3) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ EZTRACE_EVENT3_UNPROTECTED(code, arg1, arg2, arg3); \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_FORCE_RECORD_EVENT4(code, arg1, arg2, arg3, arg4) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ EZTRACE_EVENT4_UNPROTECTED(code, arg1, arg2, arg3, arg4); \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_FORCE_RECORD_EVENT5(code, arg1, arg2, arg3, arg4, arg5) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ EZTRACE_EVENT5_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5); \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_FORCE_RECORD_EVENT6(code, arg1, arg2, arg3, arg4, arg5, arg6) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ EZTRACE_EVENT6_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6); \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_FORCE_RECORD_EVENT7(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ EZTRACE_EVENT7_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7); \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_FORCE_RECORD_EVENT8(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ EZTRACE_EVENT8_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); \ EZTRACE_PROTECT_OFF(); \ } \ } #define EZTRACE_FORCE_RECORD_EVENT9(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ EZTRACE_EVENT9_UNPROTECTED(code, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); \ EZTRACE_PROTECT_OFF(); \ } \ } #endif /* __EZTRACE_LITL_H__ */ eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_stats.c0000644000000000000000000000013113021260461017357 xustar0030 mtime=1480941873.230043703 30 atime=1508138883.876117721 29 ctime=1508162367.83391605 eztrace-1.1-7/src/core/eztrace_stats.c0000644000175000017500000001012213021260461020543 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE #include #include "ev_codes.h" #include "eztrace_convert_core.h" #include "eztrace_list.h" #include "eztrace_convert.h" #include "eztrace_convert_core.h" #include "eztrace_hook.h" #include "eztrace_stats_core.h" #include "eztrace_litl.h" char* output_path = NULL; static struct eztrace_archive_info *arch_info = NULL, *arch_info_head = NULL; static void usage(int argc __attribute__((unused)), char **argv) { fprintf(stderr, "Usage : %s [-v] input_filename input_filename ... \n", argv[0]); } static void parse_args(int argc, char **argv) { int i; litl_size_t j; litl_read_trace_t* arch; struct eztrace_archive_info *tmp; for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-v") == 0) { VERBOSE = 1; } else if (strcmp(argv[i], "-o") == 0) { output_path = argv[++i]; } else if (strcmp(argv[i], "-h") == 0) { usage(argc, argv); exit(-1); } else { /* count the number of traces including those in archives */ /* open the trace file. Do this here to deal with archives of traces */ arch = litl_read_open_trace(argv[i]); if (!arch) { perror("litl_read_open_trace:"); exit(-1); } tmp = (struct eztrace_archive_info *) malloc(sizeof(struct eztrace_archive_info)); tmp->block = arch; tmp->filename = argv[i]; tmp->next = NULL; if (arch_info == NULL ) { arch_info = tmp; arch_info_head = arch_info; } else { arch_info->next = tmp; arch_info = arch_info->next; } NB_TRACES += tmp->block->nb_processes; } } if (NB_TRACES < 1) { usage(argc, argv); exit(-1); } /* create and initialize traces */ j = 0; arch_info = arch_info_head; eztrace_convert_init(NB_TRACES); while (arch_info != NULL ) { tmp = arch_info; arch_info = arch_info->next; arch = tmp->block; // init traces for (i = 0; i < tmp->block->nb_processes; i++) { get_traces(i + j)->input_filename = tmp->filename; get_traces(i + j)->block = tmp->block; get_traces(i + j)->trace_index = i; } litl_read_init_processes(arch); j += tmp->block->nb_processes; } } static void __clean_up() { while (arch_info_head != NULL) { arch_info = arch_info_head; arch_info_head = arch_info_head->next; free(arch_info); } } /* * This program should be used to parse the log file generated by LiTL */ int main(int argc, char **argv) { set_cur_mode(EZTRACE_STATS); asprintf(&output_path, "./eztrace_stats_%s", getenv("USER")); eztrace_stats_set_output_dir(output_path); load_modules(1); /* parse the arguments passed to this program */ parse_args(argc, argv); if (!output_path) asprintf(&output_path, "./eztrace_stats_%s", getenv("USER")); eztrace_stats_set_output_dir(output_path); __init_modules(); int i; /* initialize the traces array */ for (i = 0; i < NB_TRACES; i++) { /* open the trace file */ get_traces(i)->delay = 0; get_traces(i)->rank = i; get_traces(i)->id = i; get_traces(i)->done = 0; get_traces(i)->skip = 0; eztrace_create_containers(i); /* if several traces are loaded, this means that MPI was used, * so let's skip all the first events until MPI_Init is detected */ if (NB_TRACES > 1) get_traces(i)->start = 0; else { CREATE_TRACE_ID_STR(get_traces(i)->trace_id, 0); get_traces(i)->start = 1; NB_START = 1; eztrace_create_ids(get_traces(i)->rank); } ezt_litl_read_next_event(get_traces(i)); get_traces(i)->start_time = LITL_READ_GET_TIME(&get_traces(i)->ev); } /* todo: 0 or i ? */ set_cur_trace(get_traces(0)); set_cur_ev(&get_traces(i)->ev); struct eztrace_event_handler* handler_info = get_handler_info(); /* OK, let's work ! */ while (handler_info->nb_done < NB_TRACES) { set_cur_mode(EZTRACE_STATS); handle_one_event(NULL); } /* finally, call the print_stats callback for all plugins */ __print_stats(); __clean_up(); return 0; } eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_stats_core.c0000644000000000000000000000013213020610460020365 xustar0030 mtime=1480790320.360264651 30 atime=1508138883.800115822 30 ctime=1508162367.817914652 eztrace-1.1-7/src/core/eztrace_stats_core.c0000644000175000017500000001405513020610460021561 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #define _GNU_SOURCE /* See feature_test_macros(7) */ #include #include #include #include #include #include "eztrace_stats_core.h" #define MAX_COUNTERS 16 struct eztrace_counter { eztrace_counter_id id; unsigned nb_values; double* values; char** value_names; char* name; }; /* todo: make this dynamic */ static struct eztrace_counter root_counters[MAX_COUNTERS]; static unsigned nb_counters = 0; char* __output_stats_dir = NULL; void eztrace_stats_set_output_dir(const char*path) { assert(path); fprintf(stderr, "setting output dir to %s\n", path); asprintf(&__output_stats_dir, "%s", path); int ret = mkdir(path, S_IRWXU); if (ret < 0 && errno != EEXIST) perror("mkdir"); } const char* eztrace_stats_get_output_dir() { return __output_stats_dir; } static struct eztrace_counter* find_counter(eztrace_counter_id counter_id, p_eztrace_container p_cont) { struct eztrace_counter* counter_array = root_counters; if (p_cont) counter_array = p_cont->counters; unsigned int i; for (i = 0; i < nb_counters; i++) { if (counter_array[i].id == counter_id) return &counter_array[i]; } return NULL; } /* Create a new counter whose id is counter_id. This counter contains vectors that consist in * vector_size items. The names of each of the vector item are stores in names */ void attach_counter(eztrace_counter_id counter_id, unsigned vector_size, char**names) { if (nb_counters >= MAX_COUNTERS) { fprintf(stderr, "Too many counters\n"); exit(1); } struct eztrace_counter *cur_counter = &root_counters[nb_counters]; /* check wether counter_id isn't already used */ if (find_counter(counter_id, NULL)) { fprintf(stderr, "Error: Counter %d is already used!\n", counter_id); abort(); } /* initialize the counter structure */ cur_counter->id = counter_id; cur_counter->nb_values = vector_size; cur_counter->values = malloc(sizeof(double) * vector_size); cur_counter->value_names = malloc(sizeof(char*) * vector_size); unsigned int i; /* copy the values names */ for (i = 0; i < vector_size; i++) { asprintf(&(cur_counter->value_names[i]), "%s", names[i]); cur_counter->values[i] = 0; } asprintf(&(cur_counter->name), "Total"); nb_counters++; } /* Return a pointer to the vector item #index from the counter #counter_id of a specific container */ double* get_counter(p_eztrace_container container, eztrace_counter_id counter_id, unsigned index) { struct eztrace_counter* cur_counter = find_counter(counter_id, container); if (cur_counter) return &(cur_counter->values[index]); return NULL; } /* Allocate counters in a newly created container */ void counters_new_container(p_eztrace_container p_cont) { assert(p_cont); p_cont->counters = malloc(sizeof(struct eztrace_counter) * nb_counters); unsigned int i; for (i = 0; i < nb_counters; i++) { p_cont->counters[i].id = root_counters[i].id; p_cont->counters[i].name = root_counters[i].name; p_cont->counters[i].nb_values = root_counters[i].nb_values; p_cont->counters[i].values = malloc( sizeof(double) * p_cont->counters[i].nb_values); p_cont->counters[i].value_names = malloc( sizeof(char*) * p_cont->counters[i].nb_values); unsigned int j; for (j = 0; j < p_cont->counters[i].nb_values; j++) { p_cont->counters[i].values[j] = 0; /* don't copy the value name. So be carefull where freeing it! */ p_cont->counters[i].value_names[j] = root_counters[i].value_names[j]; } } } static void reduce_counters(p_eztrace_container p_cont, eztrace_counter_id counter_id) { if (!p_cont) return; struct eztrace_counter* counter = find_counter(counter_id, p_cont); assert(counter); /* for each sub container, reduce its counters and append them to the local counter */ unsigned int i, j; for (i = 0; i < p_cont->nb_children; i++) { reduce_counters(p_cont->children[i], counter_id); struct eztrace_counter* children_counter = find_counter( counter_id, p_cont->children[i]); assert(children_counter); for (j = 0; j < counter->nb_values; j++) { counter->values[j] += children_counter->values[j]; } } } static void __print_containers_recurse(int depth, eztrace_counter_id id, p_eztrace_container p_cont) { if (!p_cont) return; struct eztrace_counter *counter = find_counter(id, p_cont); assert(counter); /* We assume that the reduction already happened */ unsigned int i; double sum_values = 0; /* compute and print the sum of values */ for (i = 0; i < counter->nb_values; i++) { sum_values += counter->values[i]; } int j = 0; for (j = 0; j < depth; j++) printf(" "); printf("%s -- \t%s: %lf\t", p_cont->name, counter->name, sum_values); /* print each value */ for (i = 0; i < counter->nb_values; i++) { printf("%s: %lf\t", counter->value_names[i], counter->values[i]); } printf("\n"); /* call the container children so that they print their values */ for (i = 0; i < p_cont->nb_children; i++) { __print_containers_recurse(depth + 1, id, p_cont->children[i]); } } static void __print_counter(struct eztrace_counter* counter) { unsigned int j; int i; /* todo: print the total of counters */ for (i = 0; i < NB_TRACES; i++) { /* reduce each trace counter */ p_eztrace_container p_cont = GET_PROCESS_CONTAINER(i); reduce_counters(p_cont, counter->id); struct eztrace_counter* children_counter = find_counter(counter->id, p_cont); assert(children_counter); for (j = 0; j < children_counter->nb_values; j++) { counter->values[j] += children_counter->values[j]; } __print_containers_recurse(0, counter->id, p_cont); } } /* Print the values of a specific counter */ void print_counter(eztrace_counter_id id) { unsigned int i; for (i = 0; i < nb_counters; i++) { if (root_counters[i].id == id) __print_counter(&root_counters[i]); } } eztrace-1.1-7/src/core/PaxHeaders.7332/ev_codes.h0000644000000000000000000000013213143047722016311 xustar0030 mtime=1502367698.656455918 30 atime=1508138883.392105633 30 ctime=1508162367.797912906 eztrace-1.1-7/src/core/ev_codes.h0000644000175000017500000000402113143047722017475 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef __EV_CODES_H__ #define __EV_CODES_H__ #define NB_BITS 24 #define NB_BITS_PREFIX 8 #define NB_BITS_EVENTS (NB_BITS - NB_BITS_PREFIX) #define SYSTEM_MODULE_MASK (0<<(NB_BITS_PREFIX-1)) #define USER_MODULE_MASK (1<<(NB_BITS_PREFIX-1)) #define USER_MODULE_ID(id) (id | USER_MODULE_MASK) #define SYSTEM_MODULE_ID(id) (id | SYSTEM_MODULE_MASK) #define GENERATE_USER_MODULE_PREFIX(id) ((id) << NB_BITS_EVENTS) #define GENERATE_SYSTEM_MODULE_PREFIX(id) ((id) << NB_BITS_EVENTS) #define PTHREAD_CORE_EVENTS_ID 0x00 #define PTHREAD_CORE_PREFIX GENERATE_SYSTEM_MODULE_PREFIX(PTHREAD_CORE_EVENTS_ID) #define USER_CORE_EVENTS_ID 0x08 #define USER_CORE_PREFIX GENERATE_SYSTEM_MODULE_PREFIX(USER_CORE_EVENTS_ID) /* thread creation/destruction */ #define EZTRACE_NEW_THREAD (PTHREAD_CORE_PREFIX | 0x0001) #define EZTRACE_END_THREAD (PTHREAD_CORE_PREFIX | 0x0002) #define EZTRACE_START_THREAD_JOIN (PTHREAD_CORE_PREFIX | 0x0004) #define EZTRACE_STOP_THREAD_JOIN (PTHREAD_CORE_PREFIX | 0x0005) #define EZTRACE_START_THREAD_CREATE (PTHREAD_CORE_PREFIX | 0x0006) #define EZTRACE_STOP_THREAD_CREATE (PTHREAD_CORE_PREFIX | 0x0007) #define EZTRACE_SIGNAL_RECEIVED (PTHREAD_CORE_PREFIX | 0xf000) #define EZTRACE_BACKTRACE_DEPTH (PTHREAD_CORE_PREFIX | 0xf001) #define EZTRACE_CALLING_FUNCTION (PTHREAD_CORE_PREFIX | 0xf002) #define EZTRACE_START_FLUSH_CODE 0xfff5 #define EZTRACE_STOP_FLUSH_CODE 0xfff4 #define EZTRACE_ENTER_EVENT_RED (USER_CORE_PREFIX | 0x0008) #define EZTRACE_ENTER_EVENT_YELLOW (USER_CORE_PREFIX | 0x0010) #define EZTRACE_ENTER_EVENT_BLUE (USER_CORE_PREFIX | 0x0011) #define EZTRACE_ENTER_EVENT_PINK (USER_CORE_PREFIX | 0x0012) #define EZTRACE_ENTER_EVENT_GREEN (USER_CORE_PREFIX | 0x0013) #define EZTRACE_LEAVE_EVENT (USER_CORE_PREFIX | 0x0009) #endif /* __EV_CODES_H__ */ eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_hook.h0000644000000000000000000000013213020610460017164 xustar0030 mtime=1480790320.360264651 30 atime=1508138883.436106732 30 ctime=1508162367.797912906 eztrace-1.1-7/src/core/eztrace_hook.h0000644000175000017500000001005613020610460020355 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef EZTRACE_HOOK_H #define EZTRACE_HOOK_H #include #include "eztrace.h" #include "eztrace_list.h" /* * This file defines a hook mechanism that allow different modules * (ie. eztrace_convert_mpi, eztrace_convert_gomp, etc.) to add * information in EZTrace internal structures. This allows to add * specialized information (such as the current parallel section in * case OpenMP is being used) to any general purpose structure. */ struct ezt_hook_list_t; typedef uint8_t ezt_hook_id_t; struct ezt_hook_t { ezt_hook_id_t hook_id; void* data; struct ezt_hook_list_t* p_hook_list; struct ezt_list_token_t list_token; }; struct ezt_hook_list_t { struct ezt_list_t hook_list; }; /* initialize a hook list */ static inline void ezt_hook_list_init(struct ezt_hook_list_t *p_list); /* free the hook structure. before calling this function, make sure all * the data pointers have been freed. */ static inline void ezt_hook_list_free(struct ezt_hook_list_t *p_list); /* add a new hook to the list. */ static inline void ezt_hook_list_add(struct ezt_hook_list_t *p_list, void*p_data, ezt_hook_id_t hook_id); /* remove a hook from the list. Return 0 if the hook cannot be found in the list */ static inline int ezt_hook_list_remove(struct ezt_hook_list_t *p_list, ezt_hook_id_t hook_id); /* retrive the data corresponding to a hook id or NULL if the hook is not in the list */ static inline void* ezt_hook_list_retrieve_data( struct ezt_hook_list_t *p_hook_list, ezt_hook_id_t hook_id); /* initialize a hook list */ static inline void ezt_hook_list_init(struct ezt_hook_list_t *p_list) { ezt_list_new(&p_list->hook_list); } /* free the hook structure. before calling this function, make sure all * the data pointers have been freed. */ static inline void ezt_hook_list_free(struct ezt_hook_list_t *p_list) { struct ezt_list_token_t *p_token, *temp; ezt_list_foreach_safe(&p_list->hook_list, p_token, temp) { struct ezt_hook_t *p_hook = ezt_container_of(p_token, struct ezt_hook_t, list_token); ezt_list_remove(&p_hook->list_token); if (p_hook->data) free(p_hook->data); free(p_hook); } } /* add a new hook to the list. */ static inline void ezt_hook_list_add(struct ezt_hook_list_t *p_list, void*p_data, ezt_hook_id_t hook_id) { #if DEBUG if( ezt_hook_list_retrieve_data(p_list, hook_id)) { fprintf(stderr, "Trying to add a hook (id %d) in a list that already contains it\n", hook_id); abort(); } #endif /* DEBUG */ struct ezt_hook_t *p_hook = (struct ezt_hook_t*) malloc( sizeof(struct ezt_hook_t)); p_hook->hook_id = hook_id; p_hook->p_hook_list = p_list; p_hook->data = p_data; ezt_list_add(&p_list->hook_list, &p_hook->list_token); return; } /* remove a hook from the list. Return 0 if the hook cannot be found in the list */ static inline int ezt_hook_list_remove(struct ezt_hook_list_t *p_list, ezt_hook_id_t hook_id) { struct ezt_list_token_t *p_token, *temp; ezt_list_foreach_safe(&p_list->hook_list, p_token, temp) { struct ezt_hook_t *p_hook = ezt_container_of(p_token, struct ezt_hook_t, list_token); if (p_hook->hook_id == hook_id) { ezt_list_remove(&p_hook->list_token); free(p_hook); return 1; } } return 0; } /* retrive the data corresponding to a hook id or NULL if the hook is not in the list */ static inline void* ezt_hook_list_retrieve_data(struct ezt_hook_list_t *p_list, ezt_hook_id_t hook_id) { int i = 0; struct ezt_list_token_t *p_token; ezt_list_foreach(&p_list->hook_list, p_token) { i++; struct ezt_hook_t *p_hook = ezt_container_of(p_token, struct ezt_hook_t, list_token); if (p_hook->hook_id == hook_id) return p_hook->data; } return NULL; } #endif /* EZTRACE_HOOK_H */ eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_list.h0000644000000000000000000000013213020610460017177 xustar0030 mtime=1480790320.360264651 30 atime=1508138883.440106831 30 ctime=1508162367.797912906 eztrace-1.1-7/src/core/eztrace_list.h0000644000175000017500000000424013020610460020366 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef EZTRACE_LIST_H #define EZTRACE_LIST_H #include struct ezt_list_t; struct ezt_list_token_t { /* pointer to the user data */ void *data; /* pointer to the list */ struct ezt_list_t *list; /* pointer to the next token in the list */ struct ezt_list_token_t* next; /* pointer to the previous token in the list */ struct ezt_list_token_t* prev; }; struct ezt_list_t { struct ezt_list_token_t *head; struct ezt_list_token_t *tail; int nb_item; }; /* return true if the list is empty */ #define ezt_list_empty(l) ((l)->head == NULL) /* iterate over the list */ #define ezt_list_foreach(l, t) for(t = (l)->head; t != NULL; t = (t)->next) /* same as list_foreach, but supports list modifications * for each iteration, t is the current value (that can be removed from the list) * n is the next value (that should not be modified!) */ #define ezt_list_foreach_safe(l, t, n) for(t = (l)->head, (n) = ((l)->head?t->next:NULL); \ t != NULL; \ t = n, (n) = t?(t)->next:NULL) /* return the first token of the list */ #define ezt_list_get_head(l) ((l)->head) /* return the last token of the list */ #define ezt_list_get_tail(l) ((l)->tail) /* initialize a list */ static inline void ezt_list_new(struct ezt_list_t*l) { l->head = NULL; l->tail = NULL; l->nb_item = 0; } /* add a new token at the list tail */ static inline void ezt_list_add(struct ezt_list_t*l, struct ezt_list_token_t *n) { /* initialize the new token */ n->list = l; n->next = NULL; n->prev = l->tail; if (ezt_list_empty(l)) { l->head = n; } else { l->tail->next = n; } l->tail = n; l->nb_item++; } /* remove a token from the list */ static inline void ezt_list_remove(struct ezt_list_token_t *t) { if (t->prev) t->prev->next = t->next; else t->list->head = t->next; if (t->next) t->next->prev = t->prev; else t->list->tail = t->prev; if (t->list->head && !t->list->tail) abort(); t->list->nb_item--; } #endif /* EZTRACE_LIST_H */ eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace.h0000644000000000000000000000013213143047722016157 xustar0030 mtime=1502367698.660456018 30 atime=1508138883.372105133 30 ctime=1508162367.793912556 eztrace-1.1-7/src/core/eztrace.h0000644000175000017500000002054113143047722017350 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef __EZTRACE_H__ #define __EZTRACE_H__ #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif #include #include #include #include "eztrace_config.h" #include #include #include #if USE_GETTID #include #include /* For SYS_xxx definitions */ #else #include #endif /* USE_GETTID */ #include "eztrace_types.h" #include "eztrace_sampling.h" #include "litl_types.h" #include "litl_write.h" #include "eztrace_litl.h" #include "eztrace_litl_packed.h" #define EZTRACE_API_VERSION 0x00000900 /* start the recording of events */ void eztrace_start(); /* stop recording events and write the trace to the disk */ void eztrace_stop(); /* start eztrace but only record some event (thread creation, mpi_init, mpi communicators creation..)*/ void eztrace_silent_start(); /* pre-defined color for manual instrumentation*/ enum ezt_color { EZTRACE_RED, EZTRACE_BLUE, EZTRACE_GREEN, EZTRACE_YELLOW, EZTRACE_PINK }; /* Stop the recording of events */ void eztrace_pause(); /* Restart the recording of events*/ void eztrace_resume(); /* Manually add one event and choose one color for the display */ void eztrace_enter_event(char *, enum ezt_color); /* Set the end of the event */ void eztrace_leave_event(); /* change the trace filename */ void eztrace_set_filename(char* name); void eztrace_code0(uint32_t code); void eztrace_code1(uint32_t code, uint64_t arg1); void eztrace_code2(uint32_t code, uint64_t arg1, uint64_t arg2); void eztrace_code3(uint32_t code, uint64_t arg1, uint64_t arg2, uint64_t arg3); void eztrace_code4(uint32_t code, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4); void eztrace_code5(uint32_t code, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5); void eztrace_code6(uint32_t code, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5, uint64_t arg6); void eztrace_code7(uint32_t code, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5, uint64_t arg6, uint64_t arg7); void eztrace_code8(uint32_t code, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5, uint64_t arg6, uint64_t arg7, uint64_t arg8); void eztrace_code9(uint32_t code, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5, uint64_t arg6, uint64_t arg7, uint64_t arg8, uint64_t arg9); typedef void (*eztrace_function_t)(void); /* register a callback to be called when the application calls * eztrace_start(). * This function is only usefull when AUTOSTART is disabled */ void eztrace_register_init_routine(eztrace_function_t init_func); typedef void (*eztrace_atexit_function_t)(void*); /* * register a function to be called before eztrace_stop. */ void eztrace_atexit(eztrace_atexit_function_t f, void* param); #define RECORD_HW_COUNTERS() \ { \ ezt_sampling_check_callbacks(); \ } enum ezt_trace_status { ezt_trace_status_uninitialized, ezt_trace_status_running, ezt_trace_status_paused, ezt_trace_status_stopped, ezt_trace_status_being_finalized, /* atexit functions are being called */ ezt_trace_status_finalized, /* event recording has stopped */ }; #define EZT_NB_MODULES_MAX 32 struct __ezt_write_trace { litl_write_trace_t *litl_trace; enum ezt_trace_status status; int debug_level; int buffer_size; char *filename; /* number of init functions to be called when the eztrace_start * is called. */ int nb_module; eztrace_function_t init_routines[EZT_NB_MODULES_MAX]; }; extern struct __ezt_write_trace __ezt_trace; #define EZT_PRINTF(_debug_level_, args...) { \ if(__ezt_trace.debug_level >= _debug_level_) \ fprintf(stderr, ##args); \ } #define FUNCTION_ENTRY \ { \ EZT_PRINTF(1, "Calling [%s]\n", __FUNCTION__); \ RECORD_HW_COUNTERS(); \ } /* current thread id */ #if USE_GETTID #define CUR_TID syscall(SYS_gettid) #else #define CUR_TID pthread_self() #endif /* * Since litl_write_finalize_trace() from LiTL calls litl_write_probe_reg_0() and flush() that use fwrite as well as pthread_mutex_(un)lock, * litl_write_finalize_trace() needs to be protected in order to avoid being intercepted. */ #define EZTRACE_FIN_TRACE() \ { \ EZTRACE_PROTECT { \ EZTRACE_PROTECT_ON(); \ litl_write_finalize_trace(__ezt_trace.litl_trace); \ EZTRACE_PROTECT_OFF(); \ } \ } /* check whether dlsym returned successfully */ #define TREAT_ERROR() \ do { \ char * error; \ if ((error = dlerror()) != NULL) { \ fputs(error, stderr); \ abort(); \ } \ }while(0) /* intercept function func and store its previous value into var */ #define INTERCEPT(func, var) \ do { \ if(var) break; \ void *__handle = RTLD_NEXT; \ var = (typeof(var)) (uintptr_t) dlsym(__handle, func); \ } while(0) /* return the offset of the field MEMBER in a structure TYPE */ #define ezt_offset_of(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) /* Find the global structure's address * It needs : * - ptr: address of intern field * - type: type of the global structure * - member: name of the intern field of the global structure */ #define ezt_container_of(ptr, type, member) \ ((type *)((char *)(__typeof__ (&((type *)0)->member))(ptr)- \ ezt_offset_of(type,member))) /* record an event (code=EZTRACE_CALLING_FUNCTION) with the calling function name */ void record_backtrace(); /* return 1 if an event is being recorded. */ int recursion_shield_on(); void set_recursion_shield_on(); void set_recursion_shield_off(); /* avoid infinite recursion */ #define EZTRACE_PROTECT if(! recursion_shield_on()) /* Set the recursion shield */ #define EZTRACE_PROTECT_ON() set_recursion_shield_on() #define EZTRACE_PROTECT_OFF() set_recursion_shield_off() /* pptrace stuff */ /* The PPTRACE_HIJACK_FUNCTION is an array that contain the list of functions that a module instrument * It is used by pptrace when insering probes in the binary as well as by eztrace.preload */ #define PPTRACE_INTERCEPT_FULL(function, repl, orig) #function " " #orig " " #repl, #define PPTRACE_INTERCEPT(function) #function " orig_" #function " " #function, #define PPTRACE_START_INTERCEPT(module_name) char* PPTRACE_SYMBOL_LIST(module_name) [] = { #define PPTRACE_END_INTERCEPT(module_name) NULL }; extern char** PPTRACE_SYMBOL_EXTERNAL(module_name) __attribute__((alias(PPTRACE_SYMBOL_ALIAS(module_name)))); #define ezt_is_in_launcher() ((getenv("TESTLAUNCHER") != NULL) && (strcmp(getenv("TESTLAUNCHER"), "1") == 0)) /* check wether dlsym returned successfully */ #define DYNAMIC_INTERCEPTION(func, varName, var) \ do { \ var = (void**) dlsym(NULL, varName); \ if(NULL == var) { \ TREAT_ERROR(); \ } \ if(NULL != *var) break; \ *var = (void*) dlsym((void*)-1l, func); \ } while(0) #define DYNAMIC_INTERCEPT_ALL_MODULE(module_name) \ do { \ if (ezt_is_in_launcher()) \ return; \ char __buff[1024]; \ int __i; char *__j; char *__k; void **__sym; \ for(__i = 0; PPTRACE_SYMBOL_LIST(module_name)[__i] != NULL; __i++) { \ strncpy(__buff, PPTRACE_SYMBOL_LIST(module_name)[__i], 1024); \ __buff[1023] = 0; \ __j = strchr(__buff, ' '); \ __k = strchr(__j+1, ' '); \ *__k = 0; *__j = 0; \ DYNAMIC_INTERCEPTION(__buff, (__j+1), __sym); \ *__k = *__j = ' '; \ } \ } while(0) #define START_INTERCEPT_MODULE(module_name) PPTRACE_START_INTERCEPT(module_name) #define END_INTERCEPT_MODULE(module_name) PPTRACE_END_INTERCEPT(module_name) #define DYNAMIC_INTERCEPT_ALL() DYNAMIC_INTERCEPT_ALL_MODULE() #define START_INTERCEPT START_INTERCEPT_MODULE() #define END_INTERCEPT END_INTERCEPT_MODULE() #define INTERCEPT2(func, var) func " " #var " " func, /* record events (code=EZTRACE_CALLING_FUNCTION) containing the backtrace */ void eztrace_record_backtrace(int backtrace_depth); void record_backtrace(); /* get information on frame frameid * the collected information is copied into output_str * buffer_len is the maximum number of bytes written to output_str */ void eztrace_get_stack_frame(int frameid, char *output_str, int buffer_len); #endif /* __EZTRACE_H__ */ eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_create_plugin.in0000644000000000000000000000013113114024037021226 xustar0029 mtime=1496328223.15624376 30 atime=1508162286.707034361 30 ctime=1508162367.809913953 eztrace-1.1-7/src/core/eztrace_create_plugin.in0000755000175000017500000006116013114024037022425 0ustar00trahaytrahay00000000000000#!/usr/bin/perl -w # Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis # See COPYING in top-level directory. my $prefix; my $exec_prefix; my $libdir; my $includedir; my $bindir; BEGIN { $prefix="@prefix@"; $exec_prefix="@exec_prefix@"; $libdir="@libdir@"; $includedir="@includedir@"; $bindir="@bindir@"; $topdatadir="@datadir@"; } use lib "$bindir"; use function; use Getopt::Long; use Pod::Usage; my $gtg_cflags="@GTG_EXT_CPPFLAGS@"; my $gtg_ldflags="@GTG_EXT_LDFLAGS@"; my $tl_cflags="@TL_EXT_CPPFLAGS@"; my $tl_ldflags="@TL_EXT_LDFLAGS@"; my $common_cflags="$gtg_cflags $tl_cflags"; my $common_ldflags=""; my $convert_ldflags="$gtg_ldflags $tl_ldflags"; my $record_ldflags="$tl_ldflags"; my $header_name; my $module_name; my $module_desc; my $module_type="LIBRARY"; my $module_id=99; my $language; my $record_callbacks = ""; my $record_functions = ""; my $sampling_functions = ""; my $post_init = ""; my $record_intercepts = ""; my $record_counters = ""; my $event_definition = ""; my $convert_functions_prototypes = ""; my $convert_case = ""; my $convert_function_body = ""; my $convert_init = ""; my $next_event_id = 0x0001; my $cur_line = 0; my $cur_function; my $cur_event_start_name; my $cur_event_stop_name; my $cur_event_start_code; my $cur_event_stop_code; my $next_gtg_state_id = 0; my $next_gtg_event_id = 0; my %variables; my $include_str=""; my $header_user=""; my $output_dir="output"; my $input_dir="${topdatadir}/eztrace"; my $keep_this_line = 0; sub parse_options { my $man = 0; my $help = 0; my $includedir_str = ""; my $backtrace = ""; GetOptions ('include_dir|I=s' => \$includedir_str, 'output|o=s' => \$output_dir, 'backtrace|b' => \$backtrace, 'help|h' => \$help, man => \$man) or pod2usage(2); pod2usage(1) if $help; pod2usage(-exitstatus => 0, -verbose => 2) if $man; if( $backtrace ne "") { $common_cflags .= " -DRECORD_BACKTRACE"; } # Convert list of include directories to -I option foreach my $dir ( split( ',', $includedir_str ) ) { $common_cflags .= " -I$dir"; } } parse_options(); sub convert_add_prototype( $ ) { my $suffix = shift; $convert_functions_prototypes .= <create_asprintf("opt_value_${ev_code}"); $convert_function_body .= <convert_declare_parameters($cur_event_name); convert_add_prototype($ev_code); convert_add_switch_case($ev_code); $convert_function_body .= <convert_declare_parameters($cur_event_name); convert_add_prototype($ev_code); convert_add_switch_case($ev_code); $convert_function_body .= <convert_declare_parameters($cur_event_name); convert_add_prototype($ev_code); convert_add_switch_case($ev_code); $convert_function_body .= <add_event($cur_event_name); convert_function_push_state($cur_event_name, $state_description); } # Add an LiTL event and the fills the convert file in order to interpret # it as a pop_state # params: # $fname function name sub add_POP_STATE( $ ) { my $fname = shift; new_event($fname); $cur_function->add_event($cur_event_name); convert_function_pop_state($cur_event_name); } # Add an LiTL event and fills the convert file in order to interpret # it as a addEvent # params: # $fname function name # $event_description description of the event in the output trace sub add_EVENT($$) { my $fname = shift; my $event_description = shift; new_event($fname); $cur_function->add_event($cur_event_name); convert_function_event($cur_event_name, $event_description); } # Add an LiTL event and fills the convert file in order to interpret # it as a set_var # params: # $fname function name # $var_name Name of the variable # $var_value Value of the variable sub add_SET_VAR($$$) { my $fname = shift; my $var_name = shift; my $var_value = shift; $var_id = register_var_name($var_name); new_event($fname); $cur_function->add_event($cur_event_name); convert_function_set_var($cur_event_name, $var_id, $var_value); } # Add an LiTL event and fills the convert file in order to interpret # it as a add_var # params: # $fname function name # $var_name Name of the variable # $var_value Value of the variable sub add_ADD_VAR( $$$ ) { my $fname = shift; my $var_name = shift; my $var_value = shift; $var_id = register_var_name($var_name); new_event($fname); $cur_function->add_event($cur_event_name); convert_function_add_var($cur_event_name, $var_id, $var_value); } # Add an LiTL event and fills the convert file in order to interpret # it as a sub_var # params: # $fname function name # $var_name Name of the variable # $var_value Value of the variable sub add_SUB_VAR( $$$ ) { my $fname = shift; my $var_name = shift; my $var_value = shift; $var_id = register_var_name($var_name); new_event($fname); $cur_function->add_event($cur_event_name); convert_function_sub_var($cur_event_name, $var_id, $var_value); } sub write_sampling_function( $$$ ) { my $fname = shift; my $interval = shift; my $code = shift; @liste = split("\n",$code); foreach $instruction (@liste) { if( $instruction =~ m/\s*SAMPLING_RECORD\s*\([^\,]+\s*\,\s*[^\,]+\s*\)/ ) { # detect SAMPLING_RECORD(value, description) # and replace it by: # EZTRACE_RECORD1($event_name, value) ($value, $description) = ($instruction =~ m/\s*SAMPLING_RECORD\s*\(([^\,]+)\s*\,\s*([^\,]+)\s*\)/); new_event($fname); $sampling_functions .= "$`EZTRACE_EVENT_PACKED_1($cur_event_name, $value)$'"; # in the _convert file: # create the prototype (int handle_xxx();) # and add the switch case that calls the processing function convert_add_prototype($cur_event_name); convert_add_switch_case($cur_event_name); # Create the variable during initialisation $convert_init .= <); out: write_sampling_function($fname, $interval, $function_code); } sub handle_function { my $rettype; my $fname=""; my @args; my $nb_arg; $nb_arg=0; my $new_callback = ""; my $new_function; my $function_body=""; $cur_function = Function->new(); $cur_function->set_type($module_type); # retrieve the return type and the function name my $proto_string = ""; do { SWITCH: { /^$/ && do { next; }; /.*\.\.\..*/ && do { $proto_string.=$_; printf "Cannot process Function '%s'\n", $proto_string; return; }; /\(/ && ($fname eq "") && do { # this line contains ( so let's copy the beginning # of the line in the prototype. my $line_len = index($_, "\("); $proto_string .= substr($_, 0, $line_len); # in order to ease the parsing, add a space after each * we find $proto_string =~ s/\*/\* /g; # extract the return type and the function name ($rettype, $fname) = ($proto_string =~ m/^\s*([\S+\s*]+\**)\s+(\S+)\s*$/); substr($_, 0, $line_len, ""); s/\s*\(\s*//; $proto_string = ""; }; /\)/ && do { my $line_len = index($_, "\)"); $proto_string .= substr($_, 0, $line_len); # remove multiple spaces/newlines $proto_string =~ s/\s+/ /g; $proto_string =~ s/\n+/ /g; $proto_string =~ s/^\s*//g; $proto_string =~ s/\s*$//g; goto body; next; }; do { $proto_string .= $_; }; } } while(<>); body: # first, let's fill the Function object $cur_function->set_fname($fname); $cur_function->set_ret_type($rettype); # extract all the parameters for this function and give them # once at a time to the Function class my @params= (split m/,\s*/, $proto_string); my $i; my $nb_param=0; for($i=0; $i<@params; $i++) { my $cur_param = $params[$i]; #remove trailing white spaces $cur_param =~ s/^\s*//g; $cur_param =~ s/\s*$//g; my $arg_name =""; my $arg_type=""; my $suffix=""; # extract [] (if any) if( $cur_param =~ m/((\[\s*\]\s*)+)/) { ($suffix) = ($cur_param =~ m/((\[\s*\]\s*)+)/); $cur_param =~ s/((\[\s*\]\s*)+)/ /g; # convert [] into * (so that we can declare the parameter as "int []a") $suffix =~ s/\[\s*\]/\*/g; } # extract * (if any) if( $cur_param =~ m/((\*\s*)+)/) { ($suffix) = ($cur_param =~ m/((\*\s*)+)/); $cur_param =~ s/((\*\s*)+)/ /g; } # extract the parameter name $arg_name = (split m/\s+/, $cur_param)[-1]; # the remaining is the parameter type $arg_type = $cur_param; # escape special characters in arg_name (eg. []) so that they are not # interpreted during the substitution my $arg_name_pat=quotemeta($arg_name); $arg_type =~ s/\s*$arg_name_pat\s*$//; # add the [] or * that were found $arg_type .= $suffix; if($arg_name ne "" && $arg_type ne "") { $nb_param++; $cur_function->add_arg($arg_type, $arg_name); } } my $begin_detected = 0; while(<>) { SWITCH: { /^$/ && do { next; }; /^\s*BEGIN\s/ && do { $begin_detected = 1; $new_callback = $cur_function->create_callback(); next; }; /^\s*CALL_FUNC/ && do { chomp; $cur_function->add_fcall(); next; }; # handling of states /^\s*PUSH_STATE/ && do { chomp; s/^\s*PUSH_STATE\s*\(\"//; s/\s*\"\)//; s/\s*$//; $state_description=$_; $event = add_PUSH_STATE($fname, $state_description); next; }; /^\s*POP_STATE/ && do { chomp; $event = add_POP_STATE($fname); next; }; /^\s*RECORD_STATE/ && do { chomp; s/^\s*RECORD_STATE\s*\(\"//; s/\s*\"\)//; s/\s*$//; $state_description=$_; # push my $event = add_PUSH_STATE($fname, $state_description); # fcall $cur_function->add_fcall(); # pop $event = add_POP_STATE($fname); next; }; # handling of events /^\s*EVENT/ && do { chomp; s/^\s*EVENT\s*\(\"//; s/\s*\"\)//; s/\s*$//; $event_description=$_; $event = add_EVENT($fname, $event_description); next; }; # handling of variables /^\s*SET_VAR/ && do { chomp; s/^\s*SET_VAR\s*\(\"//; # retrieve the var name $var_name_len = index($_, "\""); if($var_name_len < 0) { printf "line $cur_line: syntax error in SET_VAR\n"; exit(1); } $var_name=substr($_, 0, $var_name_len); # remove the var name and the trailing ", s/^$var_name\",\s*//; # remove the ')' at the end of the line s/\s*\)\s*$//; $var_value=$_; $event = add_SET_VAR($fname, $var_name, $var_value); next; }; /^\s*ADD_VAR/ && do { chomp; s/^\s*ADD_VAR\s*\(\"//; # retrieve the var name $var_name_len = index($_, "\""); if($var_name_len < 0) { printf "line $cur_line: syntax error in ADD_VAR\n"; exit(1); } $var_name=substr($_, 0, $var_name_len); # remove the var name and the trailing ", s/^$var_name\",\s*//; # remove the ')' at the end of the line s/\s*\)\s*$//; $var_value=$_; $event = add_ADD_VAR($fname, $var_name, $var_value); next; }; /^\s*SUB_VAR/ && do { chomp; s/^\s*SUB_VAR\s*\(\"//; # retrieve the var name $var_name_len = index($_, "\""); if($var_name_len < 0) { printf "line $cur_line: syntax error in SUB_VAR\n"; exit(1); } $var_name=substr($_, 0, $var_name_len); # remove the var name and the trailing ", s/^$var_name\",\s*//; # remove the ')' at the end of the line s/\s*\)\s*$//; $var_value=$_; $event = add_SUB_VAR($fname, $var_name, $var_value); next; }; /^\s*END\s/ && do { $new_function = $cur_function->create_function(); goto out; }; if($begin_detected == 0) { # there was only the function prototype # Let's say that the user wants RECORD_STATE printf "\temulate record_state for '$fname'\n"; $new_callback = $cur_function->create_callback(); # push my $event = add_PUSH_STATE($fname, "Doing function $fname"); # fcall $cur_function->add_fcall(); # pop $event = add_POP_STATE($fname); $new_function = $cur_function->create_function(); $keep_this_line = 1; goto out; } printf "line $cur_line: unknown command '$_'\n"; exit 1; } $cur_line++; }; out: $new_intercept = $cur_function->create_intercept(); #declare the counter for backtrace recording $new_counter = $cur_function->create_counter($fname); print "printing new counter for ".$fname."\n".$new_counter."\n"; $record_counters .= "$new_counter\n"; $record_intercepts .= "$new_intercept\n"; $record_callbacks .= "$new_callback\n"; $record_functions .= "$new_function\n"; printf "Function '%s' done\n", $fname; } sub handle_includes { while(<>) { $cur_line++; SWITCH: { /^\s*END_INCLUDE/ && do { return; }; do { $header_user .= $_; }; } } } sub handle_cflags { my $cflags = " "; while(<>) { $cur_line++; SWITCH: { /^\s*END_CFLAGS/ && do { goto end; }; /^\s*#/ && do { next; }; do { $cflags .= $_; }; } } end: $cflags =~ s/\n/ /g; $common_cflags .= $cflags } sub handle_ldflags { my $ldflags = " "; while(<>) { $cur_line++; SWITCH: { /^\s*END_LDFLAGS/ && do { goto end; }; /^\s*#/ && do { next; }; do { $ldflags .= $_; }; } } end: $ldflags =~ s/\n/ /g; $common_ldflags .= $ldflags } while (<>) { $cur_line++; main_loop: if($keep_this_line == 1) { $keep_this_line = 0; } SWITCH: { /^\s*$/ && do { next; }; /^\s*BEGIN_MODULE/ && do { printf "New Module\n"; next; }; /^\s*END_MODULE/ && do { printf "End of Module $module_name\n"; goto end_module; }; /^\s*BEGIN_INCLUDE/ && do { s/^\s*BEGIN_INCLUDE\s*//; # remove trailing whitespaces s/\s*$//; handle_includes; next; }; /^\s*BEGIN_CFLAGS/ && do { s/^\s*BEGIN_CFLAGS\s*//; # remove trailing whitespaces s/\s*$//; handle_cflags; next; }; /^\s*BEGIN_LDFLAGS/ && do { s/^\s*BEGIN_LDFLAGS\s*//; # remove trailing whitespaces s/\s*$//; handle_ldflags; next; }; /^\s*NAME/ && do { s/^\s*NAME\s*//; # remove trailing whitespaces s/\s*$//; chomp; $module_name=$_; if (!$module_name) { print "Choose a name for your module : operation stopped\n"; exit 1; } printf "Module name : '$module_name'\n"; next; }; /^\s*ID/ && do { s/^\s*ID\s*//; # remove trailing whitespaces s/\s*$//; chomp; $module_id=$_; printf "Module id : '$module_id'\n"; next; }; /^\s*DESC/ && do { chomp; s/^\s*DESC\s*//; # remove trailing whitespaces s/\s*$//; $module_desc=$_; printf "Module description : '$module_desc'\n"; next; }; /^\s*LANGUAGE/ && do { chomp; s/^\s*LANGUAGE\s*//; # remove trailing whitespaces s/\s*$//; $language=$_; printf "Language : '$language'\n"; next; }; /^\s*TYPE/ && do { chomp; s/^\s*TYPE\s*//; # remove trailing whitespaces s/\s*$//; my $type=$_; if($type eq "LIBRARY") { printf "Type : library\n"; } elsif($type eq "APPLICATION") { printf "Type : application\n"; } else { printf "line $cur_line: Unknown module type: '$type'\n"; printf "\tfailing back to default ($module_type)\n"; $type = $module_type; } $module_type = $type; next; }; # DEFINE_SAMPLING_FUNCTION(function_name, interval) # code function # END_DEFINE /^\s*DEFINE_SAMPLING_FUNCTION/ && do { chomp; s/^\s*DEFINE_SAMPLING_FUNCTION//; define_sampling_function; next; }; /^\s*\#/ && do { # this is a comment, skip this line next; }; do { chomp; handle_function; if($keep_this_line == 1) { goto main_loop; } next; }; } } sub apply_changes($$) { my $ifile = shift; my $ofile = shift; open(OUTPUT_FILE, "> $ofile") or die "can't open $ofile"; open(INPUT_FILE, "< $ifile") or die "can't open $ifile"; while() { s/\@MODULE\@/$module_name/g; s/\@MODULE_DESC\@/$module_desc/g; s/\@HEADER_FILE\@/$output_header/g; s/\@HEADER_USER\@/$header_user/g; s/\@RECORD_CALLBACKS\@/$record_callbacks/g; s/\@RECORD_COUNTERS\@/$record_counters/g; s/\@RECORD_FUNCTIONS\@/$record_functions/g; s/\@SAMPLING_FUNCTIONS\@/$sampling_functions/g; s/\@POST_INIT\@/$post_init/g; s/\@RECORD_INTERCEPTS\@/$record_intercepts/g; s/\@EVENT_DEFINITION\@/$event_definition/g; s/\@MODULE_ID\@/$module_id/g; s/\@CONVERT_FUNCTIONS_PROTOTYPES\@/$convert_functions_prototypes/g; s/\@CONVERT_FUNCTIONS_BODY\@/$convert_function_body/g; s/\@CONVERT_CASE\@/$convert_case/g; s/\@CONVERT_INIT\@/$convert_init/g; s/\@CUSTOM_CFLAGS\@/$common_cflags/g; s/\@CUSTOM_LDFLAGS\@/$common_ldflags/g; s/\@CONVERT_LDFLAGS\@/$convert_ldflags/g; s/\@RECORD_LDFLAGS\@/$record_ldflags/g; (print OUTPUT_FILE $_); } close(OUTPUT_FILE) or die "can't close $ofile"; close(INPUT_FILE) or die "can't close $ifile"; } end_module: `mkdir -p $output_dir`; my $input_file; my $input_makefile; if($module_type eq "LIBRARY") { $input_file = "${input_dir}/example.c.template"; $input_makefile = "${input_dir}/Makefile.template"; } my $input_eztrace_file="${input_dir}/eztrace_convert_example.c.template"; my $input_header="${input_dir}/example_ev_codes.h.template"; $output_header="${module_name}_ev_codes.h"; $output_eztrace_file="eztrace_convert_${module_name}.c"; $output_file="${module_name}.c"; $output_makefile="Makefile"; apply_changes($input_file, "$output_dir/$output_file"); apply_changes($input_eztrace_file, "$output_dir/$output_eztrace_file"); $cur_event_code=sprintf("0x%x", $next_event_id); $event_definition .= "#define EZTRACE_BACKTRACE (${module_name}_PREFIX | $cur_event_code)\n"; apply_changes($input_header, "$output_dir/$output_header"); apply_changes($input_makefile, "$output_dir/$output_makefile"); __DATA__ =head1 NAME eztrace_create_plugin - Generate EZTrace plugins =head1 SYNOPSIS Generate EZTrace plugins. eztrace_create_plugin [options] file Options: -I, --include_dir include directories -o, --ouput output directory -h, --help brief help message --man full documentation =head1 OPTIONS =over 8 =item B<-I , --include_dir=> Add specific include directories for the compilation of the generated code. =item B<-o , --output=> Select the output directory. =item B<-h --help> Print a brief help message and exits. =item B<--man> Prints the manual page and exits. =back =head1 DESCRIPTION B will read the given input file(s) and do something useful with the contents thereof. =cut eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_convert.h0000644000000000000000000000013113045070145017712 xustar0029 mtime=1486123109.20884254 30 atime=1508138883.828116521 30 ctime=1508162367.801913255 eztrace-1.1-7/src/core/eztrace_convert.h0000644000175000017500000000341113045070145021101 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #ifndef EZTRACE_CONVERT_H #define EZTRACE_CONVERT_H #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include "eztrace_convert_types.h" #include "eztrace_convert_core.h" #include "eztrace_convert_macros.h" /* register a plugin to eztrace_convert */ void eztrace_convert_register_module(struct eztrace_convert_module *p_module); /* Find the next event to be handled in a trace * Return 0 if there is no more event in this trace, or 1 otherwise */ int next_ev(int cur_trace_num); /* add the current thread to the output trace and initialize * all the corresponding structures. */ void new_thread(unsigned int tid); /* retrieve a container that corresponds to a thread id */ static inline struct eztrace_container_t * get_thread_cont_from_id( int trace_id, int thread_id) { struct eztrace_container_t * cont = (&(get_traces(trace_id)->root_container)); unsigned i; for (i = 0; i < cont->nb_children; i++) { struct eztrace_container_t * child_cont = cont->children[i]; struct thread_info_t *ret = (struct thread_info_t *) child_cont->container_info; if (ret->tid == thread_id) return child_cont; } return NULL; } /* if the verbose option is set (when eztrace_convert is invoked) * this prints the name of the current function */ static inline void __func_name(int id, int thread_id, float time, const char* function) { if (VERBOSE) fprintf(stderr, "[%d][%x] [%f] \t%s\n", id, thread_id, time, function); } #endif /* EZTRACE_CONVERT_H */ eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_plugin_generator0000644000000000000000000000013013171135356021355 xustar0030 mtime=1508162286.719035342 30 atime=1508162287.395090606 28 ctime=1508162367.8379164 eztrace-1.1-7/src/core/eztrace_plugin_generator0000644000175000017500000001601013171135356022544 0ustar00trahaytrahay00000000000000#!/usr/bin/perl -w # Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis # See COPYING in top-level directory. use File::Temp qw/ tempfile tempdir /; use File::Copy; use Getopt::Long; my $prefix; my $exec_prefix; my $libdir; my $includedir; my $bindir; my $create_plugin_options = ""; BEGIN { $prefix="/home/trahay/Soft/opt/eztrace/master/build/../install"; $exec_prefix="${prefix}"; $libdir="${exec_prefix}/lib"; $includedir="${prefix}/include"; $bindir="${exec_prefix}/bin"; } sub parse_options { my $backtrace=""; GetOptions ('backtrace|b' => \$backtrace); if($backtrace ne "") { $create_plugin_options .= "-b"; } } parse_options(); my $indent_fortran="$prefix/bin/eztrace_indent_fortran"; # format a source file so that function prototypes # are properly formatted (eg. everything on line line) sub format_source_file( $ ) { my $fname = shift; my $fh; my $filename; my $suffix; if( $fname =~ m/.+\.c$/) { $suffix=".c"; } elsif( $fname =~ m/.+\.cpp$/) { $suffix=".cpp"; } elsif( $fname =~ m/.+\.f$/) { # todo .f77, .f90, .F, etc. $suffix=".f"; } ($fh, $filename) = tempfile(SUFFIX=>$suffix); copy($fname, $filename) or die "Copy failed: $!"; if($suffix eq ".c") { `indent -npsl --line-length10000 $filename`; } if($suffix eq ".cpp") { `indent -npsl --line-length10000 $filename`; } if($suffix eq ".f") { `$indent_fortran $fname $filename`; } return $filename; } # return the prototype of function $fname extracted from $filename sub extract_prototype( $$ ) { my $fname=shift; my $filename=shift; # in some cases, fname main contain (). Remove these parenthesis $fname =~ s/\(\s*\)//; # don't instrument the main function if($fname eq "main") { return ""; } # format the source code my $new_filename=format_source_file($filename); # extract symbols my $program_language; my $symbols=""; if ($new_filename =~ m/.\.c/) { $program_language="C"; $symbols=`ctags --c-kinds=pf --fields=+S -x $new_filename`; } elsif ($new_filename =~ m/.\.cpp/) { $program_language="CPP"; $symbols=`ctags --c++-kinds=pf --fields=+S -x $new_filename`; } elsif ($new_filename =~ m/.\.f/) { $prototype = "void ".$fname."()"; $symbols=`ctags --fortran-kinds=pfis --fields=+S -x $new_filename`; } else { # example: f90, c++, etc. # not implemented printf "Cannot extract information about function %s: file format not supported\n", $fname; printf "\tAssuming the function prototype is void %s()\n", $fname; $prototype = "void ".$fname."()"; unlink($new_filename); return $prototype; } my $fortran_fname=$fname; $fortran_fname=~ s/_$//; my @symbol_list = split('\n', $symbols); foreach $symbol(@symbol_list) { # each line should look like this: # function 22 if($symbol =~ m/^($fname)\s+(function)\s+\d+\s+\S+\s+(.+)/) { # fname was found. return the corresponding prototype ($prototype) = ($symbol =~ m/$fname\s+function\s+\d+\s+\S+\s+(.+)$/); unlink($new_filename); # remove any /* ... */ comment that we might have found $prototype =~ s/\/\*.*\*\///g; return $prototype; } # for fortran files, each line looks like this # subroutine 95 subroutine if($symbol =~ m/^($fortran_fname)\s+subroutine/) { # fname was found. return the corresponding prototype printf "$fname found in a subroutine\n"; ($prototype) = ($symbol =~ m/$fortran_fname\s+subroutine\s+\d+\s+\S+\s+(.+)$/); unlink($new_filename); # remove any /* ... */ comment that we might have found $prototype =~ s/\/\*.*\*\///g; # replace ^subroutine with void $prototype =~ s/^subroutine $fortran_fname/void $fname/; $prototype =~ s/>//g; # cast each parameter to int* $prototype =~ s/\(\s*(\S+)/\(int *$1/; $prototype =~ s/,/, int */g; if($prototype !~ m/\(/) { printf("Proto doesnt contain parenthesis!\n"); $prototype .= "( )"; } return $prototype; } } # not found unlink($new_filename); return ""; } if (@ARGV<1) { printf "Usage: eztrace_plugin_generator \n"; exit 1; } my $input_file=$ARGV[0]; my $input_file_parsed=$input_file; $input_file_parsed =~ s/\//_/g; $input_file_parsed =~ s/-/_/g; $input_file_parsed =~ s/\./_/g; my $output_file=$input_file_parsed.".tpl"; my $plugin_dir="plugin_".$input_file_parsed; my $module_name=$input_file_parsed; $module_name =~ s/\./_/g; open($output_handle, '>', $output_file) or die "Couldn't open $output_file for writing!"; printf $output_handle "BEGIN_MODULE\n"; printf $output_handle "NAME %s\n", $module_name; printf $output_handle "DESC \"Module for the %s program\"\n", $input_file; printf $output_handle "\n"; printf $output_handle "# In this section, insert the #include/#define directives that are needed for\n"; printf $output_handle "# compiling\n"; printf $output_handle "BEGIN_INCLUDE\n"; printf $output_handle "\n"; printf $output_handle "END_INCLUDE\n\n"; printf $output_handle "\n"; printf $output_handle "# In this section, insert the CFLAGS that are needed for compiling\n"; printf $output_handle "BEGIN_CFLAGS\n"; printf $output_handle "\n"; printf $output_handle "END_CFLAGS\n"; printf $output_handle "\n"; printf $output_handle "# In this section, insert the LDFLAGS that are needed for compiling\n"; printf $output_handle "BEGIN_LDFLAGS\n"; printf $output_handle "\n"; printf $output_handle "END_LDFLAGS\n"; printf $output_handle "\n"; my $symbols=`nm --demangle --defined -l $input_file`; my @symbol_list = split('\n', $symbols); my $nb_symbols=0; printf "Creating the plugin script %s\n", $output_file; foreach $symbol(@symbol_list) { if( $symbol =~ m/\s+T\s+(.+)\s+(.+)/ ) { ($fname, $file) = ( $symbol =~ m/\s+T\s+(\S+)\s+(.+):/ ); my $proto=extract_prototype($fname, $file); if ($proto ne "") { $nb_symbols++; printf "\tFound '%s'\n", $proto; printf $output_handle "%s\n\n", $proto; } } } printf $output_handle "END_MODULE\n"; close($output_handle); if ( $nb_symbols == 0) { # No symbol found printf "No symbol found!\n"; printf "Make sure the program contains debugging symbols (ie. compile it with -the -g option)\n"; exit ; } printf "%d symbols found\n", $nb_symbols; printf "\nGenerating the plugin...\n"; printf "\t\$ %s/eztrace_create_plugin %s -o %s %s\n", $bindir, $create_plugin_options, $plugin_dir, $output_file; `$bindir/eztrace_create_plugin $create_plugin_options -o $plugin_dir $output_file`; if ( $? != 0) { die "Plugin creation failed !\n"; } printf "\nCompiling the plugin...\n"; printf "\t\$ make -C %s\n", $plugin_dir; `make -C $plugin_dir`; if ( $? != 0) { die "Compilation failed ! Please fix the ".$output_file." template file and re-run the eztrace_create_plugin command\n"; } printf "\nYou can now use the generated plugin by setting the following environment variables:\n"; printf "\t\$ export EZTRACE_LIBRARY_PATH=\$EZTRACE_LIBRARY_PATH:%s\n", `readlink -f $plugin_dir`; eztrace-1.1-7/src/core/PaxHeaders.7332/eztrace_avail.c0000644000000000000000000000013113020610460017312 xustar0030 mtime=1480790320.360264651 30 atime=1508138883.824116422 29 ctime=1508162367.83391605 eztrace-1.1-7/src/core/eztrace_avail.c0000644000175000017500000000175413020610460020511 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis * See COPYING in top-level directory. */ #include #include #include #include "eztrace_convert_core.h" /* This program list the available modules */ static void usage(int argc __attribute__((unused)), char **argv) { fprintf(stderr, "Usage : %s -h \n", argv[0]); } static void parse_args(int argc, char **argv) { int i; for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-h") == 0) { usage(argc, argv); exit(-1); } else if (strcmp(argv[i], "-v") == 0) { printf("Verbose mode turned on\n"); (*get_verbose()) = 1; } } } int main(int argc, char**argv) { /* clear the EZTRACE_TRACE environment variable so that all the available modules are listed */ unsetenv("EZTRACE_TRACE"); /* parse the arguments passed to this program */ parse_args(argc, argv); load_modules(0); eztrace_convert_list(); return 0; } eztrace-1.1-7/PaxHeaders.7332/compile0000644000000000000000000000013013171135253014201 xustar0029 mtime=1508162219.59780514 29 atime=1508162219.59780514 30 ctime=1508162365.489711426 eztrace-1.1-7/compile0000755000175000017500000001624513171135253015405 0ustar00trahaytrahay00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/PaxHeaders.7332/NEWS0000644000000000000000000000013013045655513013333 xustar0030 mtime=1486314315.890986433 28 atime=1507797543.7308858 30 ctime=1508162365.481710728 eztrace-1.1-7/NEWS0000644000175000017500000000000013045655513014512 0ustar00trahaytrahay00000000000000eztrace-1.1-7/PaxHeaders.7332/config.sub0000644000000000000000000000013213171135253014610 xustar0030 mtime=1508162219.601805434 30 atime=1508162267.709499919 30 ctime=1508162365.493711775 eztrace-1.1-7/config.sub0000755000175000017500000010676313171135253016017 0ustar00trahaytrahay00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2016 Free Software Foundation, Inc. timestamp='2016-11-04' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ kopensolaris*-gnu* | cloudabi*-eabi* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | e2k | epiphany \ | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pru \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pru-* \ | pyramid-* \ | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; asmjs) basic_machine=asmjs-unknown ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; e500v[12]) basic_machine=powerpc-unknown os=$os"spe" ;; e500v[12]-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` os=$os"spe" ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ | -onefs* | -tirtos* | -phoenix* | -fuchsia*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -ios) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: eztrace-1.1-7/PaxHeaders.7332/eztrace.pc.in0000644000000000000000000000013113045655543015226 xustar0030 mtime=1486314339.015512655 30 atime=1508162286.539020636 29 ctime=1508162365.47371003 eztrace-1.1-7/eztrace.pc.in0000644000175000017500000000051113045655543016413 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis # See COPYING in top-level directory. prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: EZTrace Description: EZTrace - easy to use trace generator Version: @VERSION@ Libs: -L${libdir} -leztrace Cflags: -I${includedir}eztrace-1.1-7/PaxHeaders.7332/AUTHORS0000644000000000000000000000012713045655456013720 xustar0029 mtime=1486314286.13438077 29 atime=1507797543.81488853 29 ctime=1508162365.47771038 eztrace-1.1-7/AUTHORS0000644000175000017500000000117613045655456015110 0ustar00trahaytrahay00000000000000main contributors: Franois Trahay -- Project Leader Mathieu Faverge -- external plugins, collaboration with ViTE Franois Rue -- Development and External Relations Damien Martin-Guillerez -- pptrace maintainer, MAC OS X tester Roman Iakymchuk Matias Hastaran occasional/former contributors: Jrme Clet-Ortega (INRIA Bordeaux) Charles Aulagnon (INRIA Bordeaux) Paul-Emile Sublet (Telecom SudParis) Herve Loeffel (Telecom SudParis) Julien Pedron (INRIA Bordeaux) eztrace-1.1-7/PaxHeaders.7332/INSTALL0000644000000000000000000000013213171135253013661 xustar0030 mtime=1508162219.613806314 30 atime=1508162219.613806314 30 ctime=1508162365.481710728 eztrace-1.1-7/INSTALL0000644000175000017500000003661413171135253015062 0ustar00trahaytrahay00000000000000Installation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell command './configure && make && make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the 'README' file for instructions specific to this package. Some packages provide this 'INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The 'configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a 'Makefile' in each directory of the package. It may also create one or more '.h' files containing system-dependent definitions. Finally, it creates a shell script 'config.status' that you can run in the future to recreate the current configuration, and a file 'config.log' containing compiler output (useful mainly for debugging 'configure'). It can also use an optional file (typically called 'config.cache' and enabled with '--cache-file=config.cache' or simply '-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how 'configure' could check whether to do them, and mail diffs or instructions to the address given in the 'README' so they can be considered for the next release. If you are using the cache, and at some point 'config.cache' contains results you don't want to keep, you may remove or edit it. The file 'configure.ac' (or 'configure.in') is used to create 'configure' by a program called 'autoconf'. You need 'configure.ac' if you want to change it or regenerate 'configure' using a newer version of 'autoconf'. The simplest way to compile this package is: 1. 'cd' to the directory containing the package's source code and type './configure' to configure the package for your system. Running 'configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type 'make' to compile the package. 3. Optionally, type 'make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type 'make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the 'make install' phase executed with root privileges. 5. Optionally, type 'make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior 'make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing 'make clean'. To also remove the files that 'configure' created (so you can compile the package for a different kind of computer), type 'make distclean'. There is also a 'make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type 'make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide 'make distcheck', which can by used by developers to test that all other targets like 'make install' and 'make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the 'configure' script does not know about. Run './configure --help' for details on some of the pertinent environment variables. You can give 'configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU 'make'. 'cd' to the directory where you want the object files and executables to go and run the 'configure' script. 'configure' automatically checks for the source code in the directory that 'configure' is in and in '..'. This is known as a "VPATH" build. With a non-GNU 'make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use 'make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple '-arch' options to the compiler but only a single '-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the 'lipo' tool if you have problems. Installation Names ================== By default, 'make install' installs the package's commands under '/usr/local/bin', include files under '/usr/local/include', etc. You can specify an installation prefix other than '/usr/local' by giving 'configure' the option '--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option '--exec-prefix=PREFIX' to 'configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like '--bindir=DIR' to specify different values for particular kinds of files. Run 'configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of '${prefix}', so that specifying just '--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to 'configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the 'make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, 'make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of '${prefix}'. Any directories that were specified during 'configure', but not in terms of '${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the 'DESTDIR' variable. For example, 'make install DESTDIR=/alternate/directory' will prepend '/alternate/directory' before all installation names. The approach of 'DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of '${prefix}' at 'configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving 'configure' the option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'. Some packages pay attention to '--enable-FEATURE' options to 'configure', where FEATURE indicates an optional part of the package. They may also pay attention to '--with-PACKAGE' options, where PACKAGE is something like 'gnu-as' or 'x' (for the X Window System). The 'README' should mention any '--enable-' and '--with-' options that the package recognizes. For packages that use the X Window System, 'configure' can usually find the X include and library files automatically, but if it doesn't, you can use the 'configure' options '--x-includes=DIR' and '--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of 'make' will be. For these packages, running './configure --enable-silent-rules' sets the default to minimal output, which can be overridden with 'make V=1'; while running './configure --disable-silent-rules' sets the default to verbose, which can be overridden with 'make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX 'make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as 'configure' are involved. Use GNU 'make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its '' header file. The option '-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put '/usr/ucb' early in your 'PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in '/usr/bin'. So, if you need '/usr/ucb' in your 'PATH', put it _after_ '/usr/bin'. On Haiku, software installed for all users goes in '/boot/common', not '/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features 'configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, 'configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the '--build=TYPE' option. TYPE can either be a short name for the system type, such as 'sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file 'config.sub' for the possible values of each field. If 'config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option '--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with '--host=TYPE'. Sharing Defaults ================ If you want to set default values for 'configure' scripts to share, you can create a site shell script called 'config.site' that gives default values for variables like 'CC', 'cache_file', and 'prefix'. 'configure' looks for 'PREFIX/share/config.site' if it exists, then 'PREFIX/etc/config.site' if it exists. Or, you can set the 'CONFIG_SITE' environment variable to the location of the site script. A warning: not all 'configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to 'configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the 'configure' command line, using 'VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified 'gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash 'configure' Invocation ====================== 'configure' recognizes the following options to control how it operates. '--help' '-h' Print a summary of all of the options to 'configure', and exit. '--help=short' '--help=recursive' Print a summary of the options unique to this package's 'configure', and exit. The 'short' variant lists options used only in the top level, while the 'recursive' variant lists options also present in any nested packages. '--version' '-V' Print the version of Autoconf used to generate the 'configure' script, and exit. '--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally 'config.cache'. FILE defaults to '/dev/null' to disable caching. '--config-cache' '-C' Alias for '--cache-file=config.cache'. '--quiet' '--silent' '-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to '/dev/null' (any error messages will still be shown). '--srcdir=DIR' Look for the package's source code in directory DIR. Usually 'configure' can determine that directory automatically. '--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. '--no-create' '-n' Run the configure checks, but stop before creating any output files. 'configure' also accepts some other, not widely useful, options. Run 'configure --help' for more details. eztrace-1.1-7/PaxHeaders.7332/Makefile.am0000644000000000000000000000013213045655513014672 xustar0030 mtime=1486314315.890986433 30 atime=1508162206.936888882 30 ctime=1508162365.445707588 eztrace-1.1-7/Makefile.am0000644000175000017500000001076413045655513016071 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis # See COPYING in top-level directory. ACLOCAL_AMFLAGS=-I m4 if AMEXTERNLITL TLCFLAGS=$(TL_CPPFLAGS) TLLDFLAGS=$(TL_LDFLAGS) TLLIBADD=$(TL_LIB) else # AMEXTERNLITL TLCFLAGS = -I$(top_srcdir)/extlib/litl/src -I$(top_builddir)/extlib/litl/src TLLDFLAGS = $(top_builddir)/extlib/litl/src/liblitl.la TLLIBADD=$(TL_LIB) endif # AMINTERNLITL if AMEXTERNGTG GTGCFLAGS=$(GTG_CPPFLAGS) GTGLDFLAGS=$(GTG_LDFLAGS) else # AMEXTERNGTG GTGCFLAGS = -I$(top_srcdir)/extlib/gtg/tools -I$(top_builddir)/extlib/gtg GTGLDFLAGS = $(top_builddir)/extlib/gtg/libgtg.la endif # AMEXTERNGTG SUBDIRS = extlib/ \ src/core/ \ src/modules/omp \ src/modules/mpi \ src/modules/starpu \ src/modules/pthread \ src/modules/stdio \ src/modules/memory \ src/modules/papi \ src/modules/cuda \ test/mpi \ test/openmp \ test/pptrace/automatic \ test/static \ test/stdio \ test/memory \ test/pthread \ test/automake if WITHDOC SUBDIRS += doc endif #WITHDOC pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = eztrace.pc if WITHDOC dist_man_MANS = doc/man/eztrace.1 \ doc/man/eztrace.old.1 \ doc/man/eztrace_avail.1 \ doc/man/eztrace_cc.1 \ doc/man/eztrace_convert.1 \ doc/man/eztrace_create_plugin.1 \ doc/man/eztrace_loaded.1 \ doc/man/eztrace_stats.1 endif #WITHDOC EXTRA_DIST = \ bootstrap \ ChangeLog \ README.stats \ test/mpi/Makefile.am \ test/mpi/mpi_openmp.c \ test/mpi/mpi_ring.c \ test/mpi/mpi_ping.c \ test/mpi/mpi_spawn.c \ test/mpi/persistent.c \ test/mpi/test_mpi.c \ test/mpi/mpi_multiring.c \ test/mpi/waitany.c \ test/mpi/allgather.c \ test/mpi/waitall.c \ test/openmp/Makefile.am \ test/openmp/openmp_simple.c \ test/openmp/openmp_nowait.f \ test/openmp/openmp_nowait_c.c \ test/openmp/test_task.c \ test/pthread/cond.c \ test/pthread/race_cond.c \ test/pthread/dummy_thread.c \ test/pthread/test_pthread.c \ test/pthread/test_sigsegv.c \ test/stdio/stdio.c \ test/memory/memory.c \ test/module_generator/example.tpl \ test/module_generator/example_application/example.c \ test/module_generator/example_application/example.h \ test/module_generator/example_application/main.c \ test/module_generator/example_application/Makefile \ example/README \ example/libexample_eztrace/example.c \ example/libexample_eztrace/example_ev_codes.h \ example/libexample_eztrace/eztrace_convert_example.c \ example/libexample_eztrace/Makefile \ example/libexample_orig/static_example.c \ example/libexample_orig/example.c \ example/libexample_orig/example.h \ example/libexample_orig/main.c \ example/libexample_orig/Makefile \ test/static/Makefile.in \ test/static/static.c \ test/static/staticlib.c \ test/static/staticlib_ev_codes.h \ test/static/eztrace_convert_staticlib.c \ test/pptrace/automatic/binary.c \ test/pptrace/automatic/common.h \ test/pptrace/automatic/errors.c \ test/pptrace/automatic/hijack.c \ test/pptrace/automatic/Makefile.in \ test/pptrace/automatic/opcodes.c \ test/pptrace/automatic/tracing.c \ test/pptrace/automatic/wait_open.c \ test/pptrace/automatic/testcase/Makefile \ test/pptrace/automatic/testcase/titi.c if WITHDOC EXTRA_DIST += doc/user_manual.tex endif #WITHDOC include_HEADERS = src/pptrace/types.h \ src/pptrace/pptrace.h \ src/pptrace/opcodes.h \ src/pptrace/memory.h \ src/pptrace/hijack.h \ src/pptrace/isize.h \ src/pptrace/binary.h \ src/pptrace/errors.h \ src/pptrace/tracing.h \ src/pptrace/os/linux/linux.h \ src/pptrace/os/linux/linux.c \ src/pptrace/arch/bfd.c if X86_64 include_HEADERS += src/pptrace/arch/x86_64/trace.c \ src/pptrace/arch/x86_64/opcode.c \ src/pptrace/arch/x86_64/hijack.c endif # X86_64 if ARM include_HEADERS += src/pptrace/arch/armv7/trace.c \ src/pptrace/arch/armv7/opcode.c endif # ARM include_HEADERS += src/pptrace/cpu/intel.c \ src/pptrace/cpu/arm.c SHELLTESTS = test/pptrace/automatic/errors.test \ test/pptrace/automatic/binary.test \ test/pptrace/automatic/tracing.test \ test/pptrace/automatic/opcodes.test \ test/pptrace/automatic/wait_open.test \ test/pptrace/automatic/hijack.test #TESTS=$(SHELLTESTS) $(CTESTS) eztrace-1.1-7/PaxHeaders.7332/depcomp0000644000000000000000000000013213171135254014203 xustar0030 mtime=1508162220.437866865 30 atime=1508162266.565408712 30 ctime=1508162367.809913953 eztrace-1.1-7/depcomp0000755000175000017500000005601713171135254015406 0ustar00trahaytrahay00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2016-01-11.22; # UTC # Copyright (C) 1999-2017 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/PaxHeaders.7332/Makefile.in0000644000000000000000000000013113171135253014674 xustar0030 mtime=1508162219.637808076 30 atime=1508162286.519019002 29 ctime=1508162365.47371003 eztrace-1.1-7/Makefile.in0000644000175000017500000011214213171135253016065 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright (C) CNRS, INRIA, Universite Bordeaux 1, Telecom SudParis # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @WITHDOC_TRUE@am__append_1 = doc @WITHDOC_TRUE@am__append_2 = doc/user_manual.tex @X86_64_TRUE@am__append_3 = src/pptrace/arch/x86_64/trace.c \ @X86_64_TRUE@ src/pptrace/arch/x86_64/opcode.c \ @X86_64_TRUE@ src/pptrace/arch/x86_64/hijack.c @ARM_TRUE@am__append_4 = src/pptrace/arch/armv7/trace.c \ @ARM_TRUE@ src/pptrace/arch/armv7/opcode.c subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__include_HEADERS_DIST) \ $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = eztrace.pc src/core/input/Makefile.template \ test/pptrace/automatic/Makefile CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(pkgconfigdir)" \ "$(DESTDIR)$(includedir)" NROFF = nroff MANS = $(dist_man_MANS) DATA = $(pkgconfig_DATA) am__include_HEADERS_DIST = src/pptrace/types.h src/pptrace/pptrace.h \ src/pptrace/opcodes.h src/pptrace/memory.h \ src/pptrace/hijack.h src/pptrace/isize.h src/pptrace/binary.h \ src/pptrace/errors.h src/pptrace/tracing.h \ src/pptrace/os/linux/linux.h src/pptrace/os/linux/linux.c \ src/pptrace/arch/bfd.c src/pptrace/arch/x86_64/trace.c \ src/pptrace/arch/x86_64/opcode.c \ src/pptrace/arch/x86_64/hijack.c \ src/pptrace/arch/armv7/trace.c src/pptrace/arch/armv7/opcode.c \ src/pptrace/cpu/intel.c src/pptrace/cpu/arm.c HEADERS = $(include_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = extlib/ src/core/ src/modules/omp src/modules/mpi \ src/modules/starpu src/modules/pthread src/modules/stdio \ src/modules/memory src/modules/papi src/modules/cuda test/mpi \ test/openmp test/pptrace/automatic test/static test/stdio \ test/memory test/pthread test/automake doc am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \ $(srcdir)/eztrace.pc.in \ $(top_srcdir)/src/core/input/Makefile.template.in \ $(top_srcdir)/test/pptrace/automatic/Makefile.in AUTHORS \ COPYING ChangeLog INSTALL NEWS README TODO compile \ config.guess config.sub install-sh ltmain.sh missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUDA_CFLAGS = @CUDA_CFLAGS@ CUDA_LDFLAGS = @CUDA_LDFLAGS@ CUDA_LIBS = @CUDA_LIBS@ CUDA_ROOT = @CUDA_ROOT@ CUPTI_CFLAGS = @CUPTI_CFLAGS@ CUPTI_LDFLAGS = @CUPTI_LDFLAGS@ CUPTI_LIBS = @CUPTI_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ DYNLIB_EXT = @DYNLIB_EXT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ GTGDIR = @GTGDIR@ GTG_CPPFLAGS = @GTG_CPPFLAGS@ GTG_DEPENDENCIES = @GTG_DEPENDENCIES@ GTG_EXT_CPPFLAGS = @GTG_EXT_CPPFLAGS@ GTG_EXT_LDFLAGS = @GTG_EXT_LDFLAGS@ GTG_EXT_LIB = @GTG_EXT_LIB@ GTG_LDFLAGS = @GTG_LDFLAGS@ GTG_LIB = @GTG_LIB@ GTG_OUT_OF_ORDER = @GTG_OUT_OF_ORDER@ HAVE_ENV = @HAVE_ENV@ HAVE_LIBBACKTRACE = @HAVE_LIBBACKTRACE@ HAVE_LIBOPCODE = @HAVE_LIBOPCODE@ HAVE_PRCTL_H = @HAVE_PRCTL_H@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LD_LIBRARY_PATH_NAME = @LD_LIBRARY_PATH_NAME@ LD_PRELOAD_NAME = @LD_PRELOAD_NAME@ LIBBACKTRACE_CPPFLAGS = @LIBBACKTRACE_CPPFLAGS@ LIBBACKTRACE_LDFLAGS = @LIBBACKTRACE_LDFLAGS@ LIBBACKTRACE_LIB = @LIBBACKTRACE_LIB@ LIBBACKTRACE_ROOT = @LIBBACKTRACE_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LITL_PRINT = @LITL_PRINT@ LITL_ROOT = @LITL_ROOT@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPI_CFLAGS = @MPI_CFLAGS@ MPI_EVENT_ID = @MPI_EVENT_ID@ MPI_INC = @MPI_INC@ MPI_LDFLAGS = @MPI_LDFLAGS@ MPI_MODULE_NAME = @MPI_MODULE_NAME@ MPI_ROOT = @MPI_ROOT@ NM = @NM@ NMEDIT = @NMEDIT@ NVCC = @NVCC@ NVCCFLAGS = @NVCCFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAPIDIR = @PAPIDIR@ PAPI_CPPFLAGS = @PAPI_CPPFLAGS@ PAPI_ENABLED = @PAPI_ENABLED@ PAPI_LDFLAGS = @PAPI_LDFLAGS@ PAPI_LIBDIR = @PAPI_LIBDIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PPTRACE_BINARY_TYPE = @PPTRACE_BINARY_TYPE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STARPU_CFLAGS = @STARPU_CFLAGS@ STARPU_CPPFLAGS = @STARPU_CPPFLAGS@ STARPU_LDFLAGS = @STARPU_LDFLAGS@ STARPU_LIBS = @STARPU_LIBS@ STARPU_ROOT = @STARPU_ROOT@ STRIP = @STRIP@ TARGET_BITS = @TARGET_BITS@ TL_CPPFLAGS = @TL_CPPFLAGS@ TL_EXT_CPPFLAGS = @TL_EXT_CPPFLAGS@ TL_EXT_LDFLAGS = @TL_EXT_LDFLAGS@ TL_EXT_LIB = @TL_EXT_LIB@ TL_LDFLAGS = @TL_LDFLAGS@ TL_LIB = @TL_LIB@ USE_BIN_INSTRUMENTATION = @USE_BIN_INSTRUMENTATION@ USE_CUDADIR_FROM_USER = @USE_CUDADIR_FROM_USER@ USE_GETTID = @USE_GETTID@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ USE_PAPIDIR_FROM_USER = @USE_PAPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I m4 @AMEXTERNLITL_FALSE@TLCFLAGS = -I$(top_srcdir)/extlib/litl/src -I$(top_builddir)/extlib/litl/src @AMEXTERNLITL_TRUE@TLCFLAGS = $(TL_CPPFLAGS) @AMEXTERNLITL_FALSE@TLLDFLAGS = $(top_builddir)/extlib/litl/src/liblitl.la @AMEXTERNLITL_TRUE@TLLDFLAGS = $(TL_LDFLAGS) @AMEXTERNLITL_FALSE@TLLIBADD = $(TL_LIB) @AMEXTERNLITL_TRUE@TLLIBADD = $(TL_LIB) @AMEXTERNGTG_FALSE@GTGCFLAGS = -I$(top_srcdir)/extlib/gtg/tools -I$(top_builddir)/extlib/gtg @AMEXTERNGTG_TRUE@GTGCFLAGS = $(GTG_CPPFLAGS) @AMEXTERNGTG_FALSE@GTGLDFLAGS = $(top_builddir)/extlib/gtg/libgtg.la @AMEXTERNGTG_TRUE@GTGLDFLAGS = $(GTG_LDFLAGS) SUBDIRS = extlib/ src/core/ src/modules/omp src/modules/mpi \ src/modules/starpu src/modules/pthread src/modules/stdio \ src/modules/memory src/modules/papi src/modules/cuda test/mpi \ test/openmp test/pptrace/automatic test/static test/stdio \ test/memory test/pthread test/automake $(am__append_1) pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = eztrace.pc @WITHDOC_TRUE@dist_man_MANS = doc/man/eztrace.1 \ @WITHDOC_TRUE@ doc/man/eztrace.old.1 \ @WITHDOC_TRUE@ doc/man/eztrace_avail.1 \ @WITHDOC_TRUE@ doc/man/eztrace_cc.1 \ @WITHDOC_TRUE@ doc/man/eztrace_convert.1 \ @WITHDOC_TRUE@ doc/man/eztrace_create_plugin.1 \ @WITHDOC_TRUE@ doc/man/eztrace_loaded.1 \ @WITHDOC_TRUE@ doc/man/eztrace_stats.1 EXTRA_DIST = bootstrap ChangeLog README.stats test/mpi/Makefile.am \ test/mpi/mpi_openmp.c test/mpi/mpi_ring.c test/mpi/mpi_ping.c \ test/mpi/mpi_spawn.c test/mpi/persistent.c test/mpi/test_mpi.c \ test/mpi/mpi_multiring.c test/mpi/waitany.c \ test/mpi/allgather.c test/mpi/waitall.c \ test/openmp/Makefile.am test/openmp/openmp_simple.c \ test/openmp/openmp_nowait.f test/openmp/openmp_nowait_c.c \ test/openmp/test_task.c test/pthread/cond.c \ test/pthread/race_cond.c test/pthread/dummy_thread.c \ test/pthread/test_pthread.c test/pthread/test_sigsegv.c \ test/stdio/stdio.c test/memory/memory.c \ test/module_generator/example.tpl \ test/module_generator/example_application/example.c \ test/module_generator/example_application/example.h \ test/module_generator/example_application/main.c \ test/module_generator/example_application/Makefile \ example/README example/libexample_eztrace/example.c \ example/libexample_eztrace/example_ev_codes.h \ example/libexample_eztrace/eztrace_convert_example.c \ example/libexample_eztrace/Makefile \ example/libexample_orig/static_example.c \ example/libexample_orig/example.c \ example/libexample_orig/example.h \ example/libexample_orig/main.c \ example/libexample_orig/Makefile test/static/Makefile.in \ test/static/static.c test/static/staticlib.c \ test/static/staticlib_ev_codes.h \ test/static/eztrace_convert_staticlib.c \ test/pptrace/automatic/binary.c \ test/pptrace/automatic/common.h \ test/pptrace/automatic/errors.c \ test/pptrace/automatic/hijack.c \ test/pptrace/automatic/Makefile.in \ test/pptrace/automatic/opcodes.c \ test/pptrace/automatic/tracing.c \ test/pptrace/automatic/wait_open.c \ test/pptrace/automatic/testcase/Makefile \ test/pptrace/automatic/testcase/titi.c $(am__append_2) include_HEADERS = src/pptrace/types.h src/pptrace/pptrace.h \ src/pptrace/opcodes.h src/pptrace/memory.h \ src/pptrace/hijack.h src/pptrace/isize.h src/pptrace/binary.h \ src/pptrace/errors.h src/pptrace/tracing.h \ src/pptrace/os/linux/linux.h src/pptrace/os/linux/linux.c \ src/pptrace/arch/bfd.c $(am__append_3) $(am__append_4) \ src/pptrace/cpu/intel.c src/pptrace/cpu/arm.c SHELLTESTS = test/pptrace/automatic/errors.test \ test/pptrace/automatic/binary.test \ test/pptrace/automatic/tracing.test \ test/pptrace/automatic/opcodes.test \ test/pptrace/automatic/wait_open.test \ test/pptrace/automatic/hijack.test all: all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): eztrace.pc: $(top_builddir)/config.status $(srcdir)/eztrace.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ src/core/input/Makefile.template: $(top_builddir)/config.status $(top_srcdir)/src/core/input/Makefile.template.in cd $(top_builddir) && $(SHELL) ./config.status $@ test/pptrace/automatic/Makefile: $(top_builddir)/config.status $(top_srcdir)/test/pptrace/automatic/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-man1: $(dist_man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(dist_man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(MANS) $(DATA) $(HEADERS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-includeHEADERS install-man \ install-pkgconfigDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-man1 install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-includeHEADERS uninstall-man \ uninstall-pkgconfigDATA uninstall-man: uninstall-man1 .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-libtool cscope cscopelist-am ctags ctags-am dist \ dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ dist-xz dist-zip distcheck distclean distclean-generic \ distclean-libtool distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-includeHEADERS install-info \ install-info-am install-man install-man1 install-pdf \ install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-includeHEADERS uninstall-man uninstall-man1 \ uninstall-pkgconfigDATA .PRECIOUS: Makefile #TESTS=$(SHELLTESTS) $(CTESTS) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/PaxHeaders.7332/bootstrap0000644000000000000000000000013113045655527014602 xustar0029 mtime=1486314327.13123647 30 atime=1508162183.895295768 30 ctime=1508162365.493711775 eztrace-1.1-7/bootstrap0000755000175000017500000000032113045655527015771 0ustar00trahaytrahay00000000000000#!/bin/sh cd extlib/litl && autoreconf -vfi || exit 1 ; cd - cd extlib/gtg && autoreconf -vfi || exit 1 ; cd - cd extlib/opari2/build-frontend && autoreconf -vfi || exit 1 ; cd - autoreconf -vfi ||exit 1 eztrace-1.1-7/PaxHeaders.7332/m40000644000000000000000000000013213171135475013101 xustar0030 mtime=1508162365.453708285 30 atime=1508162367.741908015 30 ctime=1508162365.453708285 eztrace-1.1-7/m4/0000755000175000017500000000000013171135475014345 5ustar00trahaytrahay00000000000000eztrace-1.1-7/m4/PaxHeaders.7332/lt~obsolete.m40000644000000000000000000000013213171135251015762 xustar0030 mtime=1508162217.033617413 30 atime=1508162217.041617998 30 ctime=1508162365.453708285 eztrace-1.1-7/m4/lt~obsolete.m40000644000175000017500000001377413171135251017165 0ustar00trahaytrahay00000000000000# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software # Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) eztrace-1.1-7/m4/PaxHeaders.7332/libtool.m40000644000000000000000000000013213171135250015053 xustar0030 mtime=1508162216.993614492 30 atime=1508162216.997614783 30 ctime=1508162365.449707937 eztrace-1.1-7/m4/libtool.m40000644000175000017500000112617113171135250016253 0ustar00trahaytrahay00000000000000# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 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. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . ]) # serial 58 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_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. 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 ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from 'configure', and 'config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # 'config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain=$ac_aux_dir/ltmain.sh ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the 'libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to 'config.status' so that its # declaration there will have the same value as in 'configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags='_LT_TAGS'dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into 'config.status', and then the shell code to quote escape them in # for loops in 'config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # '#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test 0 = "$lt_write_fail" && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ '$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 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 != $[#] do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try '$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try '$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test yes = "$silent" && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # 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 _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 aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then 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 lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS=$save_LDFLAGS ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -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 lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[[012]][[,.]]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; 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' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test 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\"`' 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 case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], [ if test 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" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script that will find a shell with a builtin # printf (that we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case $ECHO in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [Search for dependent libraries within DIR (or the compiler's sysroot if not specified).])], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([$with_sysroot]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and where our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test no = "$enable_libtool_lock" || 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. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out 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 if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; 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*| \ 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. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) 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" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; 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 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test 0 -eq "$ac_status"; 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 lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test yes = "[$]$2"; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ]) if test yes = "[$]$2"; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n "$lt_cv_sys_max_cmd_len"; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes = "$cross_compiling"; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; 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], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen=dlopen], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) ]) ]) ]) ]) ]) ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links=nottested if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test no = "$hard_links"; then AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", [Define to the sub-directory where libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then # We can hardcode non-existent directories. if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && # 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 # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_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 m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...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 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 test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown 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' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # 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 # 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 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[)]' # 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 shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # 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 ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; 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' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; 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 ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # 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' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; 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*) 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # 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. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no 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' 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' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # 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=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; 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 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 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]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([sys_lib_dlsearch_path_spec], [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_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program that can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$1"; then lt_cv_path_MAGIC_CMD=$ac_dir/"$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac]) MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program that can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test no = "$withval" || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &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 # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # 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. case $host_os in aix[[4-9]]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[[45]]*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # 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'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi]) if test no != "$lt_cv_path_NM"; 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 *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test yes != "$lt_cv_path_mainfest_tool"; 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 AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM=-lm) ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test yes = "$GCC"; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac 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'" # 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'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported 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))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_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 # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; 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 # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test yes = "$GCC"; 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 # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; 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*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; 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) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*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' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to 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. 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' 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' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; 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' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, 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' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; 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' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; 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" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; 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(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in 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(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to 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. 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' 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' 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 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 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 exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' 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 if test yes = "$GCC"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; 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 # 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' else 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' # 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 # 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 else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _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' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-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=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test 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' 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' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; hpux10*) if test 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' 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' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test 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' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS=$save_LDFLAGS]) if test 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' 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' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; 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) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) 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 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' else _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' fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported 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 ;; 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' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test 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' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test 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' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test 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' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' if test 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' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test yes,yes = "$GCC,$enable_shared"; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting $shlibpath_var if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC=$CC AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report what 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 # 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 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 fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC=$lt_save_CC ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; 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 # 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' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # 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 case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done 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 exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' 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 if test yes = "$GXX"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; 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 # 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' else 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' # 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 # 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' # 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 else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _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' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; 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' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-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=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, 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' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _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++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test 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' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test 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' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd* | bitrig*) 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' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; 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_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' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $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' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(GCC, $1)=$GXX _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case @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\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)=$prev$p else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)=$p else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)=$p else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_F77"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && 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 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 fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$G77 _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_F77" AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_FC"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && 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 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 fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_FC" AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # 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'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code=$lt_simple_compile_test_code # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f "$lt_ac_sed" && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test 10 -lt "$lt_ac_count" && break lt_ac_count=`expr $lt_ac_count + 1` if test "$lt_ac_count" -gt "$lt_ac_max"; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine what file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS eztrace-1.1-7/m4/PaxHeaders.7332/ltoptions.m40000644000000000000000000000013213171135251015443 xustar0030 mtime=1508162217.001615074 30 atime=1508162217.005615367 30 ctime=1508162365.449707937 eztrace-1.1-7/m4/ltoptions.m40000644000175000017500000003426213171135251016641 0ustar00trahaytrahay00000000000000# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004-2005, 2007-2009, 2011-2015 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 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option '$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl 'shared' nor 'disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the 'shared' and # 'disable-shared' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the 'static' and # 'disable-static' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the 'fast-install' # and 'disable-fast-install' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_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' # LT_INIT options. # MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac], [pic_mode=m4_default([$1], [default])]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) eztrace-1.1-7/m4/PaxHeaders.7332/ltsugar.m40000644000000000000000000000013113171135251015070 xustar0029 mtime=1508162217.00961566 30 atime=1508162217.013615952 30 ctime=1508162365.449707937 eztrace-1.1-7/m4/ltsugar.m40000644000175000017500000001044013171135251016257 0ustar00trahaytrahay00000000000000# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59, which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) eztrace-1.1-7/m4/PaxHeaders.7332/ltversion.m40000644000000000000000000000013213171135251015435 xustar0030 mtime=1508162217.021616537 30 atime=1508162217.025616829 30 ctime=1508162365.453708285 eztrace-1.1-7/m4/ltversion.m40000644000175000017500000000127313171135251016627 0ustar00trahaytrahay00000000000000# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 4179 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]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.6' macro_revision='2.4.6' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) eztrace-1.1-7/m4/PaxHeaders.7332/pkg.m40000644000000000000000000000013213012560437014173 xustar0030 mtime=1479205151.272727014 30 atime=1508162207.996964546 30 ctime=1508162365.453708285 eztrace-1.1-7/m4/pkg.m40000644000175000017500000001716713012560437015376 0ustar00trahaytrahay00000000000000# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 1 (pkg-config-0.24) # # Copyright © 2004 Scott James Remnant . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) # only at the first occurence in configure.ac, so if the first place # it's called might be skipped (such as if it is within an "if", you # have to call PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])# PKG_CHECK_MODULES # PKG_INSTALLDIR(DIRECTORY) # ------------------------- # Substitutes the variable pkgconfigdir as the location where a module # should install pkg-config .pc files. By default the directory is # $libdir/pkgconfig, but the default can be changed by passing # DIRECTORY. The user can override through the --with-pkgconfigdir # parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([pkgconfigdir], [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, [with_pkgconfigdir=]pkg_default) AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ]) dnl PKG_INSTALLDIR # PKG_NOARCH_INSTALLDIR(DIRECTORY) # ------------------------- # Substitutes the variable noarch_pkgconfigdir as the location where a # module should install arch-independent pkg-config .pc files. By # default the directory is $datadir/pkgconfig, but the default can be # changed by passing DIRECTORY. The user can override through the # --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([noarch-pkgconfigdir], [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, [with_noarch_pkgconfigdir=]pkg_default) AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ]) dnl PKG_NOARCH_INSTALLDIR # PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, # [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # ------------------------------------------- # Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl _PKG_CONFIG([$1], [variable="][$3]["], [$2]) AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])# PKG_CHECK_VAR eztrace-1.1-7/PaxHeaders.7332/test-driver0000644000000000000000000000013213171135254015024 xustar0030 mtime=1508162220.265854213 30 atime=1508162220.265854213 30 ctime=1508162368.781998887 eztrace-1.1-7/test-driver0000755000175000017500000001104013171135254016212 0ustar00trahaytrahay00000000000000#! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2013-07-13.22; # UTC # Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <$log_file 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then tweaked_estatus=1 else tweaked_estatus=$estatus fi case $tweaked_estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report the test outcome and exit status in the logs, so that one can # know whether the test passed or failed simply by looking at the '.log' # file, without the need of also peaking into the corresponding '.trs' # file (automake bug#11814). echo "$res $test_name (exit status: $estatus)" >>$log_file # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/PaxHeaders.7332/configure0000644000000000000000000000013213171135253014534 xustar0030 mtime=1508162219.029763449 30 atime=1508162266.161376532 30 ctime=1508162365.445707588 eztrace-1.1-7/configure0000755000175000017500000304127713171135253015744 0ustar00trahaytrahay00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for eztrace 1.1-7. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: eztrace-devel@lists.gforge.inria.fr about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='eztrace' PACKAGE_TARNAME='eztrace' PACKAGE_VERSION='1.1-7' PACKAGE_STRING='eztrace 1.1-7' PACKAGE_BUGREPORT='eztrace-devel@lists.gforge.inria.fr' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" enable_option_checking=no ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS subdirs WITHDOC_FALSE WITHDOC_TRUE ARM_FALSE ARM_TRUE X86_64_FALSE X86_64_TRUE AMEXTERNGTG_FALSE AMEXTERNGTG_TRUE AMEXTERNLITL_FALSE AMEXTERNLITL_TRUE USE_LITL_FALSE USE_LITL_TRUE USE_STARPU_FALSE USE_STARPU_TRUE USE_PTHREAD_FALSE USE_PTHREAD_TRUE USE_MPI3_FALSE USE_MPI3_TRUE USE_MPI_FALSE USE_MPI_TRUE USE_CUDA_FALSE USE_CUDA_TRUE LD_LIBRARY_PATH_NAME LD_PRELOAD_NAME DYNLIB_EXT USE_PAPI_FALSE USE_PAPI_TRUE PAPI_ENABLED LIBBACKTRACE_LIB LIBBACKTRACE_LDFLAGS LIBBACKTRACE_CPPFLAGS PAPI_LIBDIR PAPI_LDFLAGS PAPI_CPPFLAGS LITL_PRINT OPENMP_FOUND_FALSE OPENMP_FOUND_TRUE GTG_OUT_OF_ORDER_FALSE GTG_OUT_OF_ORDER_TRUE GTG_OUT_OF_ORDER GTG_EXT_LIB GTG_EXT_LDFLAGS GTG_EXT_CPPFLAGS GTG_DEPENDENCIES GTG_LIB GTG_LDFLAGS GTG_CPPFLAGS TL_EXT_LIB TL_EXT_LDFLAGS TL_EXT_CPPFLAGS TL_LIB TL_LDFLAGS TL_CPPFLAGS USE_GETTID NVCCFLAGS NVCC CUPTI_LIBS CUPTI_LDFLAGS CUPTI_CFLAGS CUDA_LIBS CUDA_LDFLAGS CUDA_CFLAGS USE_CUDADIR_FROM_USER CUDA_ROOT HAVE_LATEXMK_FALSE HAVE_LATEXMK_TRUE LATEXMK HAVE_PDFLATEX_FALSE HAVE_PDFLATEX_TRUE PDFLATEX GTGDIR MPI_EVENT_ID MPI_MODULE_NAME USE_MPIDIR_FROM_USER MPI_LDFLAGS MPI_CFLAGS MPI_INC MPI_ROOT USE_PAPIDIR_FROM_USER PAPIDIR LITL_ROOT STARPU_LDFLAGS STARPU_CPPFLAGS STARPU_LIBS STARPU_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG STARPU_ROOT TARGET_BITS HAVE_PRCTL_H USE_BIN_INSTRUMENTATION ENABLE_BIN_INSTRUMENTATION_FALSE ENABLE_BIN_INSTRUMENTATION_TRUE PPTRACE_BINARY_TYPE USE_PPTRACE_FALSE USE_PPTRACE_TRUE HAVE_LIBOPCODE_FALSE HAVE_LIBOPCODE_TRUE HAVE_LIBOPCODE HAVE_LIBBACKTRACE LIBBACKTRACE_ROOT HAVE_LIBBFD_FALSE HAVE_LIBBFD_TRUE LIBOBJS HAVE_DEMANGLE_FALSE HAVE_DEMANGLE_TRUE HAVE_ENV PERL MPICC CXXCPP CPP LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBTOOL am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX ac_ct_FC FCFLAGS FC am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock enable_demangle with_doc enable_pptrace with_libbacktrace with_starpu with_litl enable_openmp with_papi with_mpi with_mpi_include with_mpi_cflags with_mpi_ldflags with_mpi_module_name with_mpi_event_id with_gtg with_cuda enable_gettid ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS FC FCFLAGS CXX CXXFLAGS CCC LT_SYS_LIBRARY_PATH CPP CXXCPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR STARPU_CFLAGS STARPU_LIBS' ac_subdirs_all='extlib/opari2 extlib/litl' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures eztrace 1.1-7 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/eztrace] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of eztrace 1.1-7:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-demangle Enable demangle --enable-pptrace Enable pptrace --enable-openmp Enable OpenMP --enable-gettid Use syscall(SYS_gettid) to get the thread ID instead of pthread_self(). This however costs a system call for each trace entry Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-doc Generate documentation --with-libbacktrace= Use libbacktrace --with-starpu= generate traces for StarPU --with-litl= or = generate LiTL traces [ARG=yes] --with-papi= PAPI --with-mpi= Use a specific MPI installation --with-mpi-include= Use a specific MPI header --with-mpi-cflags= Use a specific CFLAGS when compiling MPI files --with-mpi-ldflags= Use a specific LDFLAGS when compiling MPI files --with-mpi-module-name= Change the name of the MPI module --with-mpi-event-id=id> Change the ID of the MPI events --with-gtg= path to libgtg --with-cuda= Use a specific CUDA installation Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory FC Fortran compiler command FCFLAGS Fortran compiler flags CXX C++ compiler command CXXFLAGS C++ compiler flags LT_SYS_LIBRARY_PATH User-defined run-time library search path. CPP C preprocessor CXXCPP C++ preprocessor PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path STARPU_CFLAGS C compiler flags for STARPU, overriding pkg-config STARPU_LIBS linker flags for STARPU, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF eztrace configure 1.1-7 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_fc_try_compile LINENO # --------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_fc_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_fc_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_fc_try_compile # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link # ac_fn_fc_try_link LINENO # ------------------------ # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_fc_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_fc_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_fc_try_link # ac_fn_cxx_check_decl LINENO SYMBOL VAR INCLUDES # ----------------------------------------------- # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR # accordingly. ac_fn_cxx_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack as_decl_name=`echo $2|sed 's/ *(.*//'` as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 $as_echo_n "checking whether $as_decl_name is declared... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { #ifndef $as_decl_name #ifdef __cplusplus (void) $as_decl_use; #else (void) $as_decl_name; #endif #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_decl # ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES # --------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_cxx_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## -------------------------------------------------- ## ## Report this to eztrace-devel@lists.gforge.inria.fr ## ## -------------------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_header_mongrel # ac_fn_cxx_check_type LINENO TYPE VAR INCLUDES # --------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_cxx_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_type # ac_fn_c_find_uintX_t LINENO BITS VAR # ------------------------------------ # Finds an unsigned integer type with width BITS, setting cache variable VAR # accordingly. ac_fn_c_find_uintX_t () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5 $as_echo_n "checking for uint$2_t... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" # Order is important - never check a type that is potentially smaller # than half of the expected target width. for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \ 'unsigned long long int' 'unsigned short int' 'unsigned char'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : case $ac_type in #( uint$2_t) : eval "$3=yes" ;; #( *) : eval "$3=\$ac_type" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if eval test \"x\$"$3"\" = x"no"; then : else break fi done fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_find_uintX_t # ac_fn_cxx_try_run LINENO # ------------------------ # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_cxx_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_run # ac_fn_cxx_check_func LINENO FUNC VAR # ------------------------------------ # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_cxx_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by eztrace $as_me 1.1-7, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.15' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='eztrace' VERSION='1.1-7' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a pax tar archive" >&5 $as_echo_n "checking how to create a pax tar archive... " >&6; } # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_pax-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do { echo "$as_me:$LINENO: $_am_tar --version" >&5 ($_am_tar --version) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && break done am__tar="$_am_tar --format=posix -chf - "'"$$tardir"' am__tar_="$_am_tar --format=posix -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x pax -w "$$tardir"' am__tar_='pax -L -x pax -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H pax -L' am__tar_='find "$tardir" -print | cpio -o -H pax -L' am__untar='cpio -i -H pax -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_pax}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -rf conftest.dir if test -s conftest.tar; then { echo "$as_me:$LINENO: $am__untar &5 ($am__untar &5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 (cat conftest.dir/file) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } grep GrepMe conftest.dir/file >/dev/null 2>&1 && break fi done rm -rf conftest.dir if ${am_cv_prog_tar_pax+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_prog_tar_pax=$_am_tool fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_pax" >&5 $as_echo "$am_cv_prog_tar_pax" >&6; } # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # Checks for programs. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor xlf90 f90 pgf90 pghpf epcf90 g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_FC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$FC"; then ac_cv_prog_FC="$FC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_FC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi FC=$ac_cv_prog_FC if test -n "$FC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FC" >&5 $as_echo "$FC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$FC" && break done fi if test -z "$FC"; then ac_ct_FC=$FC for ac_prog in gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor xlf90 f90 pgf90 pghpf epcf90 g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_FC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_FC"; then ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_FC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_FC=$ac_cv_prog_ac_ct_FC if test -n "$ac_ct_FC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FC" >&5 $as_echo "$ac_ct_FC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_FC" && break done if test "x$ac_ct_FC" = x; then FC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac FC=$ac_ct_FC fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done rm -f a.out # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran compiler" >&5 $as_echo_n "checking whether we are using the GNU Fortran compiler... " >&6; } if ${ac_cv_fc_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me #endif end _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_fc_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_compiler_gnu" >&5 $as_echo "$ac_cv_fc_compiler_gnu" >&6; } ac_ext=$ac_save_ext ac_test_FCFLAGS=${FCFLAGS+set} ac_save_FCFLAGS=$FCFLAGS FCFLAGS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $FC accepts -g" >&5 $as_echo_n "checking whether $FC accepts -g... " >&6; } if ${ac_cv_prog_fc_g+:} false; then : $as_echo_n "(cached) " >&6 else FCFLAGS=-g cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : ac_cv_prog_fc_g=yes else ac_cv_prog_fc_g=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_g" >&5 $as_echo "$ac_cv_prog_fc_g" >&6; } if test "$ac_test_FCFLAGS" = set; then FCFLAGS=$ac_save_FCFLAGS elif test $ac_cv_prog_fc_g = yes; then if test "x$ac_cv_fc_compiler_gnu" = xyes; then FCFLAGS="-g -O2" else FCFLAGS="-g" fi else if test "x$ac_cv_fc_compiler_gnu" = xyes; then FCFLAGS="-O2" else FCFLAGS= fi fi if test $ac_compiler_gnu = yes; then GFC=yes else GFC= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.6' macro_revision='2.4.6' ltmain=$ac_aux_dir/ltmain.sh # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # 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'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n "$lt_cv_sys_max_cmd_len"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # 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. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac 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'" # 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'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported 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))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 $as_echo "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 $as_echo_n "checking for a working dd... " >&6; } if ${ac_cv_path_lt_DD+:} false; then : $as_echo_n "(cached) " >&6 else printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in dd; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue 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 $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 $as_echo "$ac_cv_path_lt_DD" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 $as_echo_n "checking how to truncate binary pipes... " >&6; } if ${lt_cv_truncate_bin+:} false; then : $as_echo_n "(cached) " >&6 else 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" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 $as_echo "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; 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-%%"` } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || 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. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; 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 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then 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*| \ 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. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) 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" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; 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 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # 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 lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[012][,.]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; 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' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # 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$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done func_stripname_cnf () { case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; esac } # func_stripname_cnf # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else pic_mode=default fi # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac else enable_fast_install=yes fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 $as_echo_n "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. if test "${with_aix_soname+set}" = set; then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else if ${lt_cv_with_aix_soname+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 $as_echo "$with_aix_soname" >&6; } 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 # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o func_cc_basename $compiler cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/${ac_tool_prefix}file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-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). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test no = "$hard_links"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $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' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$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' archive_expsym_cmds='$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' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; 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" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; 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 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to 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. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`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' 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 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 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 exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='$wl-f,' 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. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; 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 # 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' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; 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 hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' $wl-bernotok' allow_undefined_flag=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$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. archive_expsym_cmds="$archive_expsym_cmds"'~$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 archive_expsym_cmds="$archive_expsym_cmds"'~$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 archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $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=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi link_all_deplibs=no else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' else archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$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' archive_expsym_cmds='$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' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='$wl-z,text' allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...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 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 test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # 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 # 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 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)' # 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 shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # 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 ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; 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' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; 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 ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # 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' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; 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. hardcode_libdir_flag_spec='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # 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. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no 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' 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' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # 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=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; 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 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 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # 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, )" && test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; 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_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen=shl_load else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen=dlopen else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi fi fi fi fi fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report what library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && 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 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 fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu CC=$lt_save_CC if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu else _lt_caught_CXX_error=yes fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC func_cc_basename $compiler cc_basename=$func_cc_basename_result 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 lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_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 archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$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' hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # 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 case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done 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 exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='$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. hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no ;; esac if test yes = "$GXX"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; 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 # 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' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec_CXX='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; 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. no_undefined_flag_CXX='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$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 else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' $wl-bernotok' allow_undefined_flag_CXX=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes archive_expsym_cmds_CXX='$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. archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$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 archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$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 archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $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=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='$wl--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$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... archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $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' else ld_shlibs_CXX=no fi ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds_CXX="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" if test yes != "$lt_cv_apple_cc_single_mod"; then archive_cmds_CXX="\$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" archive_expsym_cmds_CXX="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 ld_shlibs_CXX=no fi ;; os2*) hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_minus_L_CXX=yes allow_undefined_flag_CXX=unsupported shrext_cmds=.dll archive_cmds_CXX='$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' archive_expsym_cmds_CXX='$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' old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes_CXX=yes ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; hpux9*) hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='$wl-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$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' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then archive_cmds_CXX='$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' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='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++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then archive_cmds_CXX='$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 archive_cmds_CXX='$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 link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='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' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$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 archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='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`"' old_archive_cmds_CXX='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' archive_cmds_CXX='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' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$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 hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' whole_archive_flag_spec_CXX='$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++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$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 hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='$wl-E' whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='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' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' archive_cmds_CXX='$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' hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$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' archive_expsym_cmds_CXX='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' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' case $host in osf3*) archive_cmds_CXX='$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' ;; *) archive_cmds_CXX='$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 hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='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' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$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. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; then no_undefined_flag_CXX=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' archive_expsym_cmds_CXX='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' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' archive_expsym_cmds_CXX='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' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='$wl-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$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 # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='$wl-z,text' allow_undefined_flag_CXX='$wl-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && can_build_shared=no GCC_CXX=$GXX LD_CXX=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; 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 "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX=$prev$p else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX=$prev$p else postdeps_CXX="${postdeps_CXX} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$predep_objects_CXX"; then predep_objects_CXX=$p else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX=$p else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi lt_prog_compiler_pic_CXX='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_CXX='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test no = "$hard_links"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to 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. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$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' else export_symbols_cmds_CXX='`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' fi ;; pw32*) export_symbols_cmds_CXX=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs_CXX=no ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # 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 # 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 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)' # 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 shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; 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' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; 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' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; 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 ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # 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' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; 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. hardcode_libdir_flag_spec_CXX='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # 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. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no 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' 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' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # 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=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; 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 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 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test yes = "$hardcode_automatic_CXX"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct_CXX" && # 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, CXX)" && test no != "$hardcode_minus_L_CXX"; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test relink = "$hardcode_action_CXX" || test yes = "$inherit_rpath_CXX"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi archive_cmds_need_lc_FC=no allow_undefined_flag_FC= always_export_symbols_FC=no archive_expsym_cmds_FC= export_dynamic_flag_spec_FC= hardcode_direct_FC=no hardcode_direct_absolute_FC=no hardcode_libdir_flag_spec_FC= hardcode_libdir_separator_FC= hardcode_minus_L_FC=no hardcode_automatic_FC=no inherit_rpath_FC=no module_cmds_FC= module_expsym_cmds_FC= link_all_deplibs_FC=unknown old_archive_cmds_FC=$old_archive_cmds reload_flag_FC=$reload_flag reload_cmds_FC=$reload_cmds no_undefined_flag_FC= whole_archive_flag_spec_FC= enable_shared_with_static_runtimes_FC=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o objext_FC=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_FC"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu compiler_FC=$CC func_cc_basename $compiler cc_basename=$func_cc_basename_result if test -n "$compiler"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && 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 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 fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } GCC_FC=$ac_cv_fc_compiler_gnu LD_FC=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_FC= postdep_objects_FC= predeps_FC= postdeps_FC= compiler_lib_search_path_FC= cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; 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 "$compiler_lib_search_path_FC"; then compiler_lib_search_path_FC=$prev$p else compiler_lib_search_path_FC="${compiler_lib_search_path_FC} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_FC"; then postdeps_FC=$prev$p else postdeps_FC="${postdeps_FC} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$predep_objects_FC"; then predep_objects_FC=$p else predep_objects_FC="$predep_objects_FC $p" fi else if test -z "$postdep_objects_FC"; then postdep_objects_FC=$p else postdep_objects_FC="$postdep_objects_FC $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling FC test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case " $postdeps_FC " in *" -lc "*) archive_cmds_need_lc_FC=no ;; esac compiler_lib_search_dirs_FC= if test -n "${compiler_lib_search_path_FC}"; then compiler_lib_search_dirs_FC=`echo " ${compiler_lib_search_path_FC}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_FC= lt_prog_compiler_pic_FC= lt_prog_compiler_static_FC= if test yes = "$GCC"; then lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_static_FC='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_FC='-Bstatic' fi lt_prog_compiler_pic_FC='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_FC='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic_FC='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_FC='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_FC='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_FC='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_FC= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic_FC='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_FC=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_FC='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_FC=-Kconform_pic fi ;; *) lt_prog_compiler_pic_FC='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl_FC='-Xlinker ' if test -n "$lt_prog_compiler_pic_FC"; then lt_prog_compiler_pic_FC="-Xcompiler $lt_prog_compiler_pic_FC" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_FC='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_FC='-Bstatic' else lt_prog_compiler_static_FC='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_FC='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl_FC='-Wl,-Wl,,' lt_prog_compiler_pic_FC='-PIC' lt_prog_compiler_static_FC='-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). lt_prog_compiler_pic_FC='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_FC='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_FC='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_FC='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_FC='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_FC='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_FC='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-fPIC' lt_prog_compiler_static_FC='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='--shared' lt_prog_compiler_static_FC='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl_FC='-Wl,-Wl,,' lt_prog_compiler_pic_FC='-PIC' lt_prog_compiler_static_FC='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-fPIC' lt_prog_compiler_static_FC='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-fpic' lt_prog_compiler_static_FC='-Bstatic' ;; ccc*) lt_prog_compiler_wl_FC='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_FC='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-qpic' lt_prog_compiler_static_FC='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' lt_prog_compiler_wl_FC='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' lt_prog_compiler_wl_FC='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' lt_prog_compiler_wl_FC='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-fPIC' lt_prog_compiler_static_FC='-static' ;; *Portland\ Group*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-fpic' lt_prog_compiler_static_FC='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_FC='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_FC='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_FC='-non_shared' ;; rdos*) lt_prog_compiler_static_FC='-non_shared' ;; solaris*) lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl_FC='-Qoption ld ';; *) lt_prog_compiler_wl_FC='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl_FC='-Qoption ld ' lt_prog_compiler_pic_FC='-PIC' lt_prog_compiler_static_FC='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_FC='-Kconform_pic' lt_prog_compiler_static_FC='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' ;; unicos*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_can_build_shared_FC=no ;; uts4*) lt_prog_compiler_pic_FC='-pic' lt_prog_compiler_static_FC='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_FC=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_FC= ;; *) lt_prog_compiler_pic_FC="$lt_prog_compiler_pic_FC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_FC+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_FC=$lt_prog_compiler_pic_FC fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_FC" >&5 $as_echo "$lt_cv_prog_compiler_pic_FC" >&6; } lt_prog_compiler_pic_FC=$lt_cv_prog_compiler_pic_FC # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_FC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_FC works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_FC works... " >&6; } if ${lt_cv_prog_compiler_pic_works_FC+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_FC=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_FC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_FC=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_FC" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_FC" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works_FC"; then case $lt_prog_compiler_pic_FC in "" | " "*) ;; *) lt_prog_compiler_pic_FC=" $lt_prog_compiler_pic_FC" ;; esac else lt_prog_compiler_pic_FC= lt_prog_compiler_can_build_shared_FC=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_FC eval lt_tmp_static_flag=\"$lt_prog_compiler_static_FC\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_FC+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_FC=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_FC=yes fi else lt_cv_prog_compiler_static_works_FC=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_FC" >&5 $as_echo "$lt_cv_prog_compiler_static_works_FC" >&6; } if test yes = "$lt_cv_prog_compiler_static_works_FC"; then : else lt_prog_compiler_static_FC= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_FC+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_FC=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_FC=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5 $as_echo "$lt_cv_prog_compiler_c_o_FC" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_FC+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_FC=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_FC=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5 $as_echo "$lt_cv_prog_compiler_c_o_FC" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o_FC" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test no = "$hard_links"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag_FC= always_export_symbols_FC=no archive_cmds_FC= archive_expsym_cmds_FC= compiler_needs_object_FC=no enable_shared_with_static_runtimes_FC=no export_dynamic_flag_spec_FC= export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic_FC=no hardcode_direct_FC=no hardcode_direct_absolute_FC=no hardcode_libdir_flag_spec_FC= hardcode_libdir_separator_FC= hardcode_minus_L_FC=no hardcode_shlibpath_var_FC=unsupported inherit_rpath_FC=no link_all_deplibs_FC=unknown module_cmds_FC= module_expsym_cmds_FC= old_archive_from_new_cmds_FC= old_archive_from_expsyms_cmds_FC= thread_safe_flag_spec_FC= whole_archive_flag_spec_FC= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_FC= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms_FC='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs_FC=no ;; esac ld_shlibs_FC=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir' export_dynamic_flag_spec_FC='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_FC=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec_FC= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs_FC=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_FC='' ;; m68k) archive_cmds_FC='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_minus_L_FC=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_FC=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_FC='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs_FC=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, FC) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_FC='-L$libdir' export_dynamic_flag_spec_FC='$wl--export-all-symbols' allow_undefined_flag_FC=unsupported always_export_symbols_FC=no enable_shared_with_static_runtimes_FC=yes export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_FC='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_FC='$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... archive_expsym_cmds_FC='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $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' else ld_shlibs_FC=no fi ;; haiku*) archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs_FC=yes ;; os2*) hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_minus_L_FC=yes allow_undefined_flag_FC=unsupported shrext_cmds=.dll archive_cmds_FC='$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' archive_expsym_cmds_FC='$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' old_archive_From_new_cmds_FC='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes_FC=yes ;; interix[3-9]*) hardcode_direct_FC=no hardcode_shlibpath_var_FC=no hardcode_libdir_flag_spec_FC='$wl-rpath,$libdir' export_dynamic_flag_spec_FC='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_FC='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 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" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec_FC='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec_FC='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec_FC= 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 whole_archive_flag_spec_FC='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_FC=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec_FC='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_FC=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds_FC='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) export_dynamic_flag_spec_FC='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec_FC='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir' archive_cmds_FC='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs_FC=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_FC='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs_FC=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_FC=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs_FC=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir' archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_FC=no fi ;; esac ;; sunos4*) archive_cmds_FC='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_FC=yes hardcode_shlibpath_var_FC=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_FC=no fi ;; esac if test no = "$ld_shlibs_FC"; then runpath_var= hardcode_libdir_flag_spec_FC= export_dynamic_flag_spec_FC= whole_archive_flag_spec_FC= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_FC=unsupported always_export_symbols_FC=yes archive_expsym_cmds_FC='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_FC=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_FC=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to 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. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_FC='$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' else export_symbols_cmds_FC='`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' 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 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 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 exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_FC='' hardcode_direct_FC=yes hardcode_direct_absolute_FC=yes hardcode_libdir_separator_FC=':' link_all_deplibs_FC=yes file_list_spec_FC='$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. hardcode_direct_FC=no hardcode_direct_absolute_FC=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_FC=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_FC=yes hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_libdir_separator_FC= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; 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 # 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' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec_FC='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_FC=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_FC='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__FC+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_fc_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__FC=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__FC"; then lt_cv_aix_libpath__FC=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__FC"; then lt_cv_aix_libpath__FC=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__FC fi hardcode_libdir_flag_spec_FC='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_FC='$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 else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec_FC='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag_FC="-z nodefs" archive_expsym_cmds_FC="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__FC+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_fc_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__FC=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__FC"; then lt_cv_aix_libpath__FC=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__FC"; then lt_cv_aix_libpath__FC=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__FC fi hardcode_libdir_flag_spec_FC='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_FC=' $wl-bernotok' allow_undefined_flag_FC=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_FC='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_FC='$convenience' fi archive_cmds_need_lc_FC=yes archive_expsym_cmds_FC='$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. archive_expsym_cmds_FC="$archive_expsym_cmds_FC"'~$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 archive_expsym_cmds_FC="$archive_expsym_cmds_FC"'~$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 archive_expsym_cmds_FC="$archive_expsym_cmds_FC"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds_FC="$archive_expsym_cmds_FC"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_FC='' ;; m68k) archive_cmds_FC='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_minus_L_FC=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec_FC=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec_FC=' ' allow_undefined_flag_FC=unsupported always_export_symbols_FC=yes file_list_spec_FC='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds_FC='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds_FC='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $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=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, FC)='true' enable_shared_with_static_runtimes_FC=yes exclude_expsyms_FC='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds_FC='chmod 644 $oldlib' postlink_cmds_FC='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec_FC=' ' allow_undefined_flag_FC=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds_FC='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds_FC='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_FC='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes_FC=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_FC=no hardcode_direct_FC=no hardcode_automatic_FC=yes hardcode_shlibpath_var_FC=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec_FC='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' compiler_needs_object_FC=yes else whole_archive_flag_spec_FC='' fi link_all_deplibs_FC=yes allow_undefined_flag_FC=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds_FC="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds_FC="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds_FC="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds_FC="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs_FC=no fi ;; dgux*) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_shlibpath_var_FC=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_FC='-R$libdir' hardcode_direct_FC=yes hardcode_shlibpath_var_FC=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_FC=yes hardcode_minus_L_FC=yes hardcode_shlibpath_var_FC=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_FC='-R$libdir' hardcode_direct_FC=yes hardcode_shlibpath_var_FC=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds_FC='$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' else archive_cmds_FC='$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' fi hardcode_libdir_flag_spec_FC='$wl+b $wl$libdir' hardcode_libdir_separator_FC=: hardcode_direct_FC=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_FC=yes export_dynamic_flag_spec_FC='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds_FC='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_FC='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec_FC='$wl+b $wl$libdir' hardcode_libdir_separator_FC=: hardcode_direct_FC=yes hardcode_direct_absolute_FC=yes export_dynamic_flag_spec_FC='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_FC=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds_FC='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_FC='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_FC='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds_FC='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_FC='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_FC='$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 hardcode_libdir_flag_spec_FC='$wl+b $wl$libdir' hardcode_libdir_separator_FC=: case $host_cpu in hppa*64*|ia64*) hardcode_direct_FC=no hardcode_shlibpath_var_FC=no ;; *) hardcode_direct_FC=yes hardcode_direct_absolute_FC=yes export_dynamic_flag_spec_FC='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_FC=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat > conftest.$ac_ext <<_ACEOF subroutine foo end _ACEOF if ac_fn_fc_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds_FC='$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 link_all_deplibs_FC=no else archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc_FC='no' hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir' hardcode_libdir_separator_FC=: inherit_rpath_FC=yes link_all_deplibs_FC=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs_FC=yes archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_FC='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_FC='-R$libdir' hardcode_direct_FC=yes hardcode_shlibpath_var_FC=no ;; newsos6) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_FC=yes hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir' hardcode_libdir_separator_FC=: hardcode_shlibpath_var_FC=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct_FC=yes hardcode_shlibpath_var_FC=no hardcode_direct_absolute_FC=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_FC='$wl-rpath,$libdir' export_dynamic_flag_spec_FC='$wl-E' else archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_FC='$wl-rpath,$libdir' fi else ld_shlibs_FC=no fi ;; os2*) hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_minus_L_FC=yes allow_undefined_flag_FC=unsupported shrext_cmds=.dll archive_cmds_FC='$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' archive_expsym_cmds_FC='$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' old_archive_From_new_cmds_FC='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes_FC=yes ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag_FC=' $wl-expect_unresolved $wl\*' archive_cmds_FC='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag_FC=' -expect_unresolved \*' archive_cmds_FC='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc_FC='no' hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir' hardcode_libdir_separator_FC=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag_FC=' $wl-expect_unresolved $wl\*' archive_cmds_FC='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir' else allow_undefined_flag_FC=' -expect_unresolved \*' archive_cmds_FC='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds_FC='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_FC='-rpath $libdir' fi archive_cmds_need_lc_FC='no' hardcode_libdir_separator_FC=: ;; solaris*) no_undefined_flag_FC=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds_FC='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds_FC='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds_FC='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec_FC='-R$libdir' hardcode_shlibpath_var_FC=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec_FC='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec_FC='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs_FC=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_FC='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_FC='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_direct_FC=yes hardcode_minus_L_FC=yes hardcode_shlibpath_var_FC=no ;; sysv4) case $host_vendor in sni) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_FC=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_FC='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_FC='$CC -r -o $output$reload_objs' hardcode_direct_FC=no ;; motorola) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_FC=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_FC=no ;; sysv4.3*) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_FC=no export_dynamic_flag_spec_FC='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_FC=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_FC=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_FC='$wl-z,text' archive_cmds_need_lc_FC=no hardcode_shlibpath_var_FC=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds_FC='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_FC='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='$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 # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_FC='$wl-z,text' allow_undefined_flag_FC='$wl-z,nodefs' archive_cmds_need_lc_FC=no hardcode_shlibpath_var_FC=no hardcode_libdir_flag_spec_FC='$wl-R,$libdir' hardcode_libdir_separator_FC=':' link_all_deplibs_FC=yes export_dynamic_flag_spec_FC='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds_FC='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_FC='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_shlibpath_var_FC=no ;; *) ld_shlibs_FC=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec_FC='$wl-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_FC" >&5 $as_echo "$ld_shlibs_FC" >&6; } test no = "$ld_shlibs_FC" && can_build_shared=no with_gnu_ld_FC=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_FC" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_FC=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds_FC in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_FC+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_FC pic_flag=$lt_prog_compiler_pic_FC compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_FC allow_undefined_flag_FC= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_FC=no else lt_cv_archive_cmds_need_lc_FC=yes fi allow_undefined_flag_FC=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_FC" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_FC" >&6; } archive_cmds_need_lc_FC=$lt_cv_archive_cmds_need_lc_FC ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # 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 # 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 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)' # 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 shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; 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' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; 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' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; 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 ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # 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' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; 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. hardcode_libdir_flag_spec_FC='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_FC\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_FC\"" cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_fc_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # 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. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no 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' 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' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # 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=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; 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 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 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_FC= if test -n "$hardcode_libdir_flag_spec_FC" || test -n "$runpath_var_FC" || test yes = "$hardcode_automatic_FC"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct_FC" && # 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, FC)" && test no != "$hardcode_minus_L_FC"; then # Linking always hardcodes the temporary library directory. hardcode_action_FC=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_FC=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_FC=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_FC" >&5 $as_echo "$hardcode_action_FC" >&6; } if test relink = "$hardcode_action_FC" || test yes = "$inherit_rpath_FC"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_FC" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_config_commands="$ac_config_commands libtool" # Only expand once: F77=$FC FFLAGS=$FCFLAGS # Extract the first word of "mpicc", so it can be a program name with args. set dummy mpicc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MPICC+:} false; then : $as_echo_n "(cached) " >&6 else case $MPICC in [\\/]* | ?:[\\/]*) ac_cv_path_MPICC="$MPICC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MPICC="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MPICC=$ac_cv_path_MPICC if test -n "$MPICC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MPICC" >&5 $as_echo "$MPICC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PERL+:} false; then : $as_echo_n "(cached) " >&6 else case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 $as_echo "$PERL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi #AC_CHECK_PROG(PERL,perl,yes,missing -- the perl scripting language) # crappy hack: of the macros AC_PROG_{CC,CXX,F77,FC}, only the # first expanded one will check for object file extension etc, # and fail if that doesn't work. if test x$FC = x; then as_fn_error $? "A Fortran compiler is required" "$LINENO" 5 fi cxx_enable=yes if test x$CXX = x; then cxx_enable=no fi # Correct install paths if test x"$prefix" = x -o x"$prefix" = "xNONE"; then : prefix="/usr/local" fi if test x"$exec_prefix" = x -o x"$exec_prefix" = "xNONE"; then : exec_prefix="\${prefix}" fi if test "$docdir" = "\${datarootdir}/doc/\${PACKAGE_TARNAME}"; then : docdir="\${datarootdir}/doc/eztrace" fi top_build_dir=`pwd` get_abs_dirname() { # $1 : relative filename cd $1 && \ pwd &&\ cd - > /dev/null } abs_srcdir=$(get_abs_dirname $srcdir) # Checks for libraries. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlsym in -ldl" >&5 $as_echo_n "checking for dlsym in -ldl... " >&6; } if ${ac_cv_lib_dl_dlsym+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlsym (); int main () { return dlsym (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_dl_dlsym=yes else ac_cv_lib_dl_dlsym=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlsym" >&5 $as_echo "$ac_cv_lib_dl_dlsym" >&6; } if test "x$ac_cv_lib_dl_dlsym" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBDL 1 _ACEOF LIBS="-ldl $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 $as_echo_n "checking for cos in -lm... " >&6; } if ${ac_cv_lib_m_cos+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char cos (); int main () { return cos (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_m_cos=yes else ac_cv_lib_m_cos=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 $as_echo "$ac_cv_lib_m_cos" >&6; } if test "x$ac_cv_lib_m_cos" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBM 1 _ACEOF LIBS="-lm $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 $as_echo_n "checking for pthread_create in -lpthread... " >&6; } if ${ac_cv_lib_pthread_pthread_create+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_create (); int main () { return pthread_create (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_pthread_pthread_create=yes else ac_cv_lib_pthread_pthread_create=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5 $as_echo "$ac_cv_lib_pthread_pthread_create" >&6; } if test "x$ac_cv_lib_pthread_pthread_create" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBPTHREAD 1 _ACEOF LIBS="-lpthread $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_spin_lock in -lpthread" >&5 $as_echo_n "checking for pthread_spin_lock in -lpthread... " >&6; } if ${ac_cv_lib_pthread_pthread_spin_lock+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_spin_lock (); int main () { return pthread_spin_lock (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_pthread_pthread_spin_lock=yes else ac_cv_lib_pthread_pthread_spin_lock=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_spin_lock" >&5 $as_echo "$ac_cv_lib_pthread_pthread_spin_lock" >&6; } if test "x$ac_cv_lib_pthread_pthread_spin_lock" = xyes; then : have_full_pthread=yes else have_full_pthread=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for deflate in -lz" >&5 $as_echo_n "checking for deflate in -lz... " >&6; } if ${ac_cv_lib_z_deflate+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char deflate (); int main () { return deflate (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_z_deflate=yes else ac_cv_lib_z_deflate=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_deflate" >&5 $as_echo "$ac_cv_lib_z_deflate" >&6; } if test "x$ac_cv_lib_z_deflate" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBZ 1 _ACEOF LIBS="-lz $LIBS" fi # Check the OS type os_type=`uname -s` if test "x$os_type" = "xLinux" ; then # Linux { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: OS: Linux" >&5 $as_echo "$as_me: WARNING: OS: Linux" >&2;} CFLAGS="$CFLAGS -DHAVE_LINUX -Wno-unused-parameter -Wno-unused-value" DYNLIB_EXT=".so" LD_PRELOAD_NAME="LD_PRELOAD" LD_LIBRARY_PATH_NAME="LD_LIBRARY_PATH" elif test "x$os_type" = "xDarwin" ; then # Mac OS { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: OS: Mac OS" >&5 $as_echo "$as_me: WARNING: OS: Mac OS" >&2;} CFLAGS="$CFLAGS -DHAVE_DARWIN" DYNLIB_EXT=".dylib" LD_PRELOAD_NAME="DYLD_INSERT_LIBRARIES" LD_LIBRARY_PATH_NAME="DYLD_LIBRARY_PATH" else # unknown OS, let's try Linux { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unknown OS: falling back to Linux" >&5 $as_echo "$as_me: WARNING: unknown OS: falling back to Linux" >&2;} CFLAGS="$CFLAGS -DHAVE_LINUX" DYNLIB_EXT=".so" LD_PRELOAD_NAME="LD_PRELOAD" LD_LIBRARY_PATH_NAME="LD_LIBRARY_PATH" fi # Check the architecture type case "$host" in x86_64-*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined(__x86_64__) && defined (__ILP32__) x32_test #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "x32_test" >/dev/null 2>&1; then : SUBARCH='x32' else SUBARCH='64' fi rm -f conftest* if test "$SUBARCH" = "64" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ARCH: X86_64" >&5 $as_echo "$as_me: WARNING: ARCH: X86_64" >&2;} arch_str="X86_64" else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unsupported x86_64 architecture. Some features will be disabled" >&5 $as_echo "$as_me: WARNING: unsupported x86_64 architecture. Some features will be disabled" >&2;} fi ;; armv7|arm*-*gnueabihf) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ARCH: ARM" >&5 $as_echo "$as_me: WARNING: ARCH: ARM" >&2;} arch_str="ARM" CFLAGS="$CFLAGS -marm" ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unknown architecture: falling back to x86_64" >&5 $as_echo "$as_me: WARNING: unknown architecture: falling back to x86_64" >&2;} ;; esac # Check for a library with a particular LDFLAGS # this LDFLAGS is not set in the 'final' LDFLAGS # This is usefull if only a small part of your program # needs this library # # example: #CHECK_LIB_LDFLAGS([gtg], # [setTraceType], # "$GTG_LDFLAGS", # , # AC_MSG_ERROR([cannot find libgtg])) # Check for a library with a particular LDFLAGS # this LDFLAGS is not set in the 'final' LDFLAGS # This is usefull if only a small part of your program # needs this library # # example: #CHECK_LIB_TRYLINK("$GTG_LDFLAGS", # [#include "GTG.h"], # [gtg_container_t c;], # [enable_gtg=yes], # AC_MSG_ERROR([cannot find libgtg])) # Check for a header with a particular CPPFLAGS # this CPPFLAGS is not set in the 'final' CPPFLAGS # This is usefull if only a small part of your program # needs this header # # example: # CHECK_HEADER_CPPFLAGS([GTGBasic1.h], # , # "$GTG_CPPFLAGS", # AC_MSG_ERROR([cannot find headers for gtg])) # Checks for programs # Extract the first word of "env", so it can be a program name with args. set dummy env; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_HAVE_ENV+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$HAVE_ENV"; then ac_cv_prog_HAVE_ENV="$HAVE_ENV" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_HAVE_ENV="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_HAVE_ENV" && ac_cv_prog_HAVE_ENV="no" fi fi HAVE_ENV=$ac_cv_prog_HAVE_ENV if test -n "$HAVE_ENV"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_ENV" >&5 $as_echo "$HAVE_ENV" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test x$HAVE_ENV = xno ; then as_fn_error $? "Cannot find env" "$LINENO" 5 fi # Checks for header files. # this is needed because demangle.h and string.h have confliting versions of the basename function ac_fn_cxx_check_decl "$LINENO" "basename" "ac_cv_have_decl_basename" "#include " if test "x$ac_cv_have_decl_basename" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_BASENAME $ac_have_decl _ACEOF for ac_header in fcntl.h limits.h malloc.h stdint.h stdlib.h string.h sys/time.h unistd.h sys/syscall.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_cxx_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done have_demangle=yes # demangle stuff use_demangle=yes # Check whether --enable-demangle was given. if test "${enable_demangle+set}" = set; then : enableval=$enable_demangle; fi if test "x$enable_demangle" = xno; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: Demangling explicitly disabled" >&5 $as_echo "Demangling explicitly disabled" >&6; } use_demangle=no fi have_demangle=no if test x$use_demangle = xyes ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cplus_demangle in -liberty" >&5 $as_echo_n "checking for cplus_demangle in -liberty... " >&6; } if ${ac_cv_lib_iberty_cplus_demangle+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-liberty $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char cplus_demangle (); int main () { return cplus_demangle (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_iberty_cplus_demangle=yes else ac_cv_lib_iberty_cplus_demangle=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_iberty_cplus_demangle" >&5 $as_echo "$ac_cv_lib_iberty_cplus_demangle" >&6; } if test "x$ac_cv_lib_iberty_cplus_demangle" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBIBERTY 1 _ACEOF LIBS="-liberty $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bfd_demangle in -lbfd" >&5 $as_echo_n "checking for bfd_demangle in -lbfd... " >&6; } if ${ac_cv_lib_bfd_bfd_demangle+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbfd $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char bfd_demangle (); int main () { return bfd_demangle (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_bfd_bfd_demangle=yes else ac_cv_lib_bfd_bfd_demangle=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bfd_bfd_demangle" >&5 $as_echo "$ac_cv_lib_bfd_bfd_demangle" >&6; } if test "x$ac_cv_lib_bfd_bfd_demangle" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBBFD 1 _ACEOF LIBS="-lbfd $LIBS" fi ac_fn_cxx_check_header_mongrel "$LINENO" "demangle.h" "ac_cv_header_demangle_h" "$ac_includes_default" if test "x$ac_cv_header_demangle_h" = xyes; then : else have_demangle=no fi #AC_CHECK_LIB([iberty], [cplus_demangle], , have_demangle=no) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bfd_release in -lbfd" >&5 $as_echo_n "checking for bfd_release in -lbfd... " >&6; } if ${ac_cv_lib_bfd_bfd_release+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbfd $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char bfd_release (); int main () { return bfd_release (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_bfd_bfd_release=yes else ac_cv_lib_bfd_bfd_release=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bfd_bfd_release" >&5 $as_echo "$ac_cv_lib_bfd_bfd_release" >&6; } if test "x$ac_cv_lib_bfd_bfd_release" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBBFD 1 _ACEOF LIBS="-lbfd $LIBS" fi fi if test "x$have_demangle" = xyes; then HAVE_DEMANGLE_TRUE= HAVE_DEMANGLE_FALSE='#' else HAVE_DEMANGLE_TRUE='#' HAVE_DEMANGLE_FALSE= fi # Checks for typedefs, structures, and compiler characteristics. ac_fn_cxx_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi ac_fn_c_find_uintX_t "$LINENO" "64" "ac_cv_c_uint64_t" case $ac_cv_c_uint64_t in #( no|yes) ;; #( *) $as_echo "#define _UINT64_T 1" >>confdefs.h cat >>confdefs.h <<_ACEOF #define uint64_t $ac_cv_c_uint64_t _ACEOF ;; esac # Checks for library functions. for ac_header in stdlib.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STDLIB_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 $as_echo_n "checking for GNU libc compatible malloc... " >&6; } if ${ac_cv_func_malloc_0_nonnull+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_malloc_0_nonnull=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *malloc (); #endif int main () { return ! malloc (0); ; return 0; } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : ac_cv_func_malloc_0_nonnull=yes else ac_cv_func_malloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 $as_echo "$ac_cv_func_malloc_0_nonnull" >&6; } if test $ac_cv_func_malloc_0_nonnull = yes; then : $as_echo "#define HAVE_MALLOC 1" >>confdefs.h else $as_echo "#define HAVE_MALLOC 0" >>confdefs.h case " $LIBOBJS " in *" malloc.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS malloc.$ac_objext" ;; esac $as_echo "#define malloc rpl_malloc" >>confdefs.h fi for ac_func in atexit do : ac_fn_cxx_check_func "$LINENO" "atexit" "ac_cv_func_atexit" if test "x$ac_cv_func_atexit" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_ATEXIT 1 _ACEOF fi done build_doc=no # Check whether --with-doc was given. if test "${with_doc+set}" = set; then : withval=$with_doc; if test x$withval != xno ; then build_doc=yes fi else build_doc=no fi if test "x$build_doc" = "xyes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: Documentation will be generated" >&5 $as_echo "Documentation will be generated" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: Documentation will not be generated" >&5 $as_echo "Documentation will not be generated" >&6; } fi # pptrace stuff use_pptrace=yes binary_instrumentation=no # Check whether --enable-pptrace was given. if test "${enable_pptrace+set}" = set; then : enableval=$enable_pptrace; fi if test "x$enable_pptrace" = xno; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: PPTrace explicitly disabled" >&5 $as_echo "PPTrace explicitly disabled" >&6; } use_pptrace=no fi if test "x$use_pptrace" = xyes; then pptrace_lib_found=yes#no pptrace_binary_type=1 have_libbfd=yes { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bfd_release in -lbfd" >&5 $as_echo_n "checking for bfd_release in -lbfd... " >&6; } if ${ac_cv_lib_bfd_bfd_release+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbfd $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char bfd_release (); int main () { return bfd_release (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_bfd_bfd_release=yes else ac_cv_lib_bfd_bfd_release=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bfd_bfd_release" >&5 $as_echo "$ac_cv_lib_bfd_bfd_release" >&6; } if test "x$ac_cv_lib_bfd_bfd_release" = xyes; then : pptrace_binary_type=1 else have_libbfd=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for deflate in -lz" >&5 $as_echo_n "checking for deflate in -lz... " >&6; } if ${ac_cv_lib_z_deflate+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char deflate (); int main () { return deflate (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_z_deflate=yes else ac_cv_lib_z_deflate=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_deflate" >&5 $as_echo "$ac_cv_lib_z_deflate" >&6; } if test "x$ac_cv_lib_z_deflate" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBZ 1 _ACEOF LIBS="-lz $LIBS" else have_libbfd fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bfd_get_section_by_name in -lbfd" >&5 $as_echo_n "checking for bfd_get_section_by_name in -lbfd... " >&6; } if ${ac_cv_lib_bfd_bfd_get_section_by_name+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbfd $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char bfd_get_section_by_name (); int main () { return bfd_get_section_by_name (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_bfd_bfd_get_section_by_name=yes else ac_cv_lib_bfd_bfd_get_section_by_name=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bfd_bfd_get_section_by_name" >&5 $as_echo "$ac_cv_lib_bfd_bfd_get_section_by_name" >&6; } if test "x$ac_cv_lib_bfd_bfd_get_section_by_name" = xyes; then : have_libbfd=no fi ac_fn_cxx_check_header_mongrel "$LINENO" "bfd.h" "ac_cv_header_bfd_h" "$ac_includes_default" if test "x$ac_cv_header_bfd_h" = xyes; then : else have_libbfd=no fi # check if the arch/OS is supported by pptrace if test "x$arch_str" = "xX86_64" || test "x$arch_str" = "xARM" ; then if test "x$os_type" = "xLinux" ; then use_pptrace=yes binary_instrumentation=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: The target OS is not supported by pptrace. The instrumentation will be limited to shared libraries" >&5 $as_echo "$as_me: WARNING: The target OS is not supported by pptrace. The instrumentation will be limited to shared libraries" >&2;} binary_instrumentation=no fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: The target architecture is not supported by pptrace. The instrumentation will be limited to shared libraries" >&5 $as_echo "$as_me: WARNING: The target architecture is not supported by pptrace. The instrumentation will be limited to shared libraries" >&2;} binary_instrumentation=no fi if test "$have_libbfd" = yes; then HAVE_LIBBFD_TRUE= HAVE_LIBBFD_FALSE='#' else HAVE_LIBBFD_TRUE='#' HAVE_LIBBFD_FALSE= fi if test "x$use_pptrace" = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: PPTrace enabled" >&5 $as_echo "PPTrace enabled" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: PPTrace cannot be installed" >&5 $as_echo "PPTrace cannot be installed" >&6; } fi fi if test $binary_instrumentation = yes ; then # since binutils-2.29, the prototype of disassembler changed cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { disassembler(NULL); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : disassembler_old_api=yes else disassembler_old_api=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test "$disassembler_old_api" = yes; then $as_echo "#define HAVE_BINUTILS_2_28_OR_OLDER 1" >>confdefs.h fi fi use_libbacktrace=yes # Check whether --with-libbacktrace was given. if test "${with_libbacktrace+set}" = set; then : withval=$with_libbacktrace; if test x$withval != xno; then # use specified path libbacktracedir=$withval { $as_echo "$as_me:${as_lineno-$LINENO}: result: libbacktrace using $libbactracedir" >&5 $as_echo "libbacktrace using $libbactracedir" >&6; } LIBBACKTRACE_ROOT=$libbacktracedir else use_libbacktrace=no fi else use_libbacktrace=no fi HAVE_LIBBACKTRACE=0 if test $use_libbacktrace = yes ; then LIBBACKTRACE_CPPFLAGS=-I${libbacktracedir}/include LIBBACKTRACE_LDFLAGS="-L${libbacktracedir}/lib -Wl,-rpath,${libbacktracedir}/lib" LIBBACKTRACE_LIB=-lbacktrace save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS "$LIBBACKTRACE_CPPFLAGS"" for ac_header in libbacktrace/backtrace.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "libbacktrace/backtrace.h" "ac_cv_header_libbacktrace_backtrace_h" "$ac_includes_default" if test "x$ac_cv_header_libbacktrace_backtrace_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBBACKTRACE_BACKTRACE_H 1 _ACEOF use_libbactrace=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot find backtrace.h" >&5 $as_echo "$as_me: WARNING: cannot find backtrace.h" >&2;} fi done CPPFLAGS="$save_CPPFLAGS" if test x$use_libbacktrace = xyes ; then save_LDFLAGS="$LDFLAGS" save_LIBS="$LIBS" LDFLAGS="$LDFLAGS "$LIBBACKTRACE_LDFLAGS"" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for backtrace_full in -lbacktrace" >&5 $as_echo_n "checking for backtrace_full in -lbacktrace... " >&6; } if ${ac_cv_lib_backtrace_backtrace_full+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbacktrace $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char backtrace_full (); int main () { return backtrace_full (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_backtrace_backtrace_full=yes else ac_cv_lib_backtrace_backtrace_full=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_backtrace_backtrace_full" >&5 $as_echo "$ac_cv_lib_backtrace_backtrace_full" >&6; } if test "x$ac_cv_lib_backtrace_backtrace_full" = xyes; then : HAVE_LIBBACKTRACE=1 libbacktrace_found=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: libbacktrace found." >&5 $as_echo "libbacktrace found." >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot find libbacktrace" >&5 $as_echo "$as_me: WARNING: cannot find libbacktrace" >&2;} HAVE_LIBBACKTRACE=0 libbacktrace_found=no fi LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for disassembler in -lopcodes" >&5 $as_echo_n "checking for disassembler in -lopcodes... " >&6; } if ${ac_cv_lib_opcodes_disassembler+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lopcodes $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char disassembler (); int main () { return disassembler (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_opcodes_disassembler=yes else ac_cv_lib_opcodes_disassembler=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_opcodes_disassembler" >&5 $as_echo "$ac_cv_lib_opcodes_disassembler" >&6; } if test "x$ac_cv_lib_opcodes_disassembler" = xyes; then : libopcode_found=yes HAVE_LIBOPCODE=1 { $as_echo "$as_me:${as_lineno-$LINENO}: result: libopcode found." >&5 $as_echo "libopcode found." >&6; } else libopcode_found=no fi if test "$libopcode_found" = yes; then HAVE_LIBOPCODE_TRUE= HAVE_LIBOPCODE_FALSE='#' else HAVE_LIBOPCODE_TRUE='#' HAVE_LIBOPCODE_FALSE= fi if test "$use_pptrace" = yes; then USE_PPTRACE_TRUE= USE_PPTRACE_FALSE='#' else USE_PPTRACE_TRUE='#' USE_PPTRACE_FALSE= fi PPTRACE_BINARY_TYPE=1 if test "$binary_instrumentation" = yes; then ENABLE_BIN_INSTRUMENTATION_TRUE= ENABLE_BIN_INSTRUMENTATION_FALSE='#' else ENABLE_BIN_INSTRUMENTATION_TRUE='#' ENABLE_BIN_INSTRUMENTATION_FALSE= fi if test "$binary_instrumentation" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Binary instrumentation is ENABLED" >&5 $as_echo "$as_me: WARNING: Binary instrumentation is ENABLED" >&2;} USE_BIN_INSTRUMENTATION=1 else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Binary instrumentation is DISABLED" >&5 $as_echo "$as_me: WARNING: Binary instrumentation is DISABLED" >&2;} USE_BIN_INSTRUMENTATION=0 fi ac_fn_cxx_check_header_mongrel "$LINENO" "sys/prctl.h" "ac_cv_header_sys_prctl_h" "$ac_includes_default" if test "x$ac_cv_header_sys_prctl_h" = xyes; then : ac_fn_cxx_check_func "$LINENO" "prctl" "ac_cv_func_prctl" if test "x$ac_cv_func_prctl" = xyes; then : have_prctl_h=1 else have_prctl_h=0 fi else have_prctl_h=0 fi HAVE_PRCTL_H=$have_prctl_h # -m32 & -m64 flags for tests { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -m32 and -m64" >&5 $as_echo_n "checking whether $CC supports -m32 and -m64... " >&6; } _save_cflags="$CFLAGS" _save_ldflags="$LDFLAGS" CFLAGS="$CFLAGS -m32" LDFLAGS="$LDFLAGS -m32" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { printf("Hello, World!\n"); return 0;} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : m32_flag=yes else m32_flag=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext; CFLAGS="$_save_cflags -m64" LDFLAGS="$_save_ldflags -m64" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main(void) { printf("Hello, World!\n"); return 0;} _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : m64_flag=yes else m64_flag=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext; CFLAGS="$_save_cflags" LDFLAGS="$_save_ldflags" if test "x$m64_flag" = "xyes"; then if test "x$m32_flag" = "xyes"; then available_target_bits="32 64" supported_mXX_flags="-m32 -m64" else available_target_bits="64" supported_mXX_flags="-m64" fi else if test "x$m32_flag" = "xyes"; then available_target_bits="32" supported_mXX_flags="-m32" else available_target_bits="" supported_mXX_flags="" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: supports $supported_mXX_flags" >&5 $as_echo "supports $supported_mXX_flags" >&6; } TARGET_BITS=$available_target_bits use_starpu=yes # Check whether --with-starpu was given. if test "${with_starpu+set}" = set; then : withval=$with_starpu; if test x$withval != xno; then # use specified path starpudir=$withval { $as_echo "$as_me:${as_lineno-$LINENO}: result: starpu using $starpudir" >&5 $as_echo "starpu using $starpudir" >&6; } STARPU_ROOT=$starpudir PKG_CONFIG_PATH=${PKG_CONFIG_PATH}${PKG_CONFIG_PATH:+:}${starpudir}/lib/pkgconfig else use_starpu=no fi else use_starpu=no fi if test x$use_starpu = xyes ; then use_starpu=no for STARPU in starpu-1.3 starpu-1.2 starpu-1.1 do if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for STARPU" >&5 $as_echo_n "checking for STARPU... " >&6; } if test -n "$STARPU_CFLAGS"; then pkg_cv_STARPU_CFLAGS="$STARPU_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$STARPU\""; } >&5 ($PKG_CONFIG --exists --print-errors "$STARPU") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_STARPU_CFLAGS=`$PKG_CONFIG --cflags "$STARPU" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$STARPU_LIBS"; then pkg_cv_STARPU_LIBS="$STARPU_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$STARPU\""; } >&5 ($PKG_CONFIG --exists --print-errors "$STARPU") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_STARPU_LIBS=`$PKG_CONFIG --libs "$STARPU" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then STARPU_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$STARPU" 2>&1` else STARPU_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$STARPU" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$STARPU_PKG_ERRORS" >&5 starpu_found=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } starpu_found=no else STARPU_CFLAGS=$pkg_cv_STARPU_CFLAGS STARPU_LIBS=$pkg_cv_STARPU_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } starpu_found=yes fi if test x$starpu_found = xyes then break; fi done STARPU_CPPFLAGS=$STARPU_CFLAGS STARPU_LDFLAGS=$STARPU_LIBS #check for starpu headers save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS "$STARPU_CPPFLAGS"" for ac_header in starpu.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "starpu.h" "ac_cv_header_starpu_h" "$ac_includes_default" if test "x$ac_cv_header_starpu_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STARPU_H 1 _ACEOF use_starpu=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot find starpu.h" >&5 $as_echo "$as_me: WARNING: cannot find starpu.h" >&2;} fi done CPPFLAGS="$save_CPPFLAGS" if test x$use_starpu = xyes ; then save_LDFLAGS="$LDFLAGS" save_LIBS="$LIBS" LDFLAGS="$LDFLAGS "$STARPU_LDFLAGS"" as_ac_Lib=`$as_echo "ac_cv_lib_$STARPU''_starpu_task_submit" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for starpu_task_submit in -l$STARPU" >&5 $as_echo_n "checking for starpu_task_submit in -l$STARPU... " >&6; } if eval \${$as_ac_Lib+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-l$STARPU $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char starpu_task_submit (); int main () { return starpu_task_submit (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : eval "$as_ac_Lib=yes" else eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : use_starpu=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot find libstarpu" >&5 $as_echo "$as_me: WARNING: cannot find libstarpu" >&2;} use_starpu=no fi LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" fi fi use_litl=yes use_extern_litl=no LITL_PRINT=${top_build_dir}/extlib/litl/utils/litl_print # Check whether --with-litl was given. if test "${with_litl+set}" = set; then : withval=$with_litl; if test x$withval != xno; then use_litl=yes if test x$withval = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # use specified path use_extern_litl=yes litldir=$withval { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes using $litldir" >&5 $as_echo "yes using $litldir" >&6; } LITL_ROOT=$litldir LITL_PRINT=$litldir/bin/litl_print fi else use_litl=no as_fn_error $? "\"LiTL is required for eztrace\"" "$LINENO" 5 fi fi # --> LiTL if test x$use_extern_litl = xyes; then # use an external installation of LiTL extern_litl_found=yes use_intern_litl=no use_extern_litl=yes TL_CPPFLAGS="${TL_CPPFLAGS} -I${litldir}/include" TL_LDFLAGS="${TL_LDFLAGS} -L${litldir}/lib -Wl,-rpath,${litldir}/lib" TL_LIB="-llitl" TL_EXT_CPPFLAGS="$TL_CPPFLAGS" TL_EXT_LDFLAGS="$TL_LDFLAGS" TL_EXT_LIB="$TL_LIB" else # use the LiTL version shipped with eztrace extern_litl_found=no use_intern_litl=yes use_extern_litl=no litl_parent_dir=`pwd` litl_dir="extlib/litl" { $as_echo "$as_me:${as_lineno-$LINENO}: configuring in litl_dir ($litl_parent_dir/$litl_dir)" >&5 $as_echo "$as_me: configuring in litl_dir ($litl_parent_dir/$litl_dir)" >&6;} if test "$srcdir" != "."; then : test -d "$litl_dir" || mkdir -p "$litl_dir" || as_fn_error $? "cannot create $litl_dir" "$LINENO" 5 fi case $srcdir in .) litl_srcdir="$srcdir" ;; /*) litl_srcdir="$srcdir/$litl_dir" ;; *) litl_srcdir="../../$srcdir/$litl_dir" ;; esac litl_conf_cmd="$litl_srcdir/configure" litl_conf_args="$litl_conf_args --prefix=\"$prefix\" --exec-prefix=\"$exec_prefix\" --bindir=\"$bindir\" --libdir=\"$libdir\" --includedir=\"$includedir\" --docdir=\"$docdir/litl\" $TLFLAGS --cache-file=\"/dev/null\" --srcdir=\"$litl_srcdir\"" if test "x$build_doc" = "xyes" ; then litl_conf_args="$litl_conf_args --with-doc=\"$build_doc\"" fi { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $litl_conf_cmd $litl_conf_args" >&5 $as_echo "$as_me: running $SHELL $litl_conf_cmd $litl_conf_args" >&6;} cd $litl_dir eval "$SHELL '$litl_conf_cmd' $litl_conf_args" if test $? != "0"; then : as_fn_error $? "$litl_conf_cmd failed for $litl_dir" "$LINENO" 5 fi cd $litl_parent_dir if test x"$TLLIB" = x; then : TLLIB="-llitl" fi TL_CPPFLAGS="$TL_CPPFLAGS -I${abs_srcdir}/extlib/litl/src -I${top_build_dir}/extlib/litl/src" TL_LDFLAGS="${top_build_dir}/extlib/litl/src/liblitl.la" TL_LIB="" TL_EXT_CPPFLAGS="-I${prefix}/include/" TL_EXT_LDFLAGS="-L${prefix}/lib/" TL_EXT_LIB="-llitl" fi #TL_LIB="-llitl" if test x$extern_litl_found = xyes ; then CPPFLAGS="${CPPFLAGS} ${TL_CPPFLAGS}" LDFLAGS="${LDFLAGS} ${TL_LDFLAGS}" ac_fn_cxx_check_header_mongrel "$LINENO" "litl_types.h" "ac_cv_header_litl_types_h" "$ac_includes_default" if test "x$ac_cv_header_litl_types_h" = xyes; then : else as_fn_error $? "cannot find headers for LiTL" "$LINENO" 5 fi ac_fn_cxx_check_header_mongrel "$LINENO" "litl_write.h" "ac_cv_header_litl_write_h" "$ac_includes_default" if test "x$ac_cv_header_litl_write_h" = xyes; then : else as_fn_error $? "cannot find headers for LiTL" "$LINENO" 5 fi ac_fn_cxx_check_header_mongrel "$LINENO" "litl_read.h" "ac_cv_header_litl_read_h" "$ac_includes_default" if test "x$ac_cv_header_litl_read_h" = xyes; then : else as_fn_error $? "cannot find headers for LiTL" "$LINENO" 5 fi fi # <-- LiTL L_CPPFLAGS="${TL_CPPFLAGS} -DUSE_LITL -DRECORD_PACKED_EVENTS" L_EXT_CPPFLAGS="${TL_EXT_CPPFLAGS} -DUSE_LITL -DRECORD_PACKED_EVENTS" # by default tid recording is enabled LiTL TID_RECORDING_ENABLED=yes if test "x$TID_RECORDING_ENABLED" = xyes ; then CFLAGS="$CFLAGS -DTID_RECORDING_ENABLED" TL_CPPFLAGS="${TL_CPPFLAGS} -DTID_RECORDING_ENABLED" TL_EXT_CPPFLAGS="${TL_EXT_CPPFLAGS} -DTID_RECORDING_ENABLED" fi use_openmp=yes # Check whether --enable-openmp was given. if test "${enable_openmp+set}" = set; then : enableval=$enable_openmp; fi if test "x$enable_openmp" = xno; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: OpenMP explicitly disabled" >&5 $as_echo "OpenMP explicitly disabled" >&6; } use_openmp=no fi if test "x$use_openmp" = xyes; then # check for openmp save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS "-fopenmp"" for ac_header in omp.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "omp.h" "ac_cv_header_omp_h" "$ac_includes_default" if test "x$ac_cv_header_omp_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_OMP_H 1 _ACEOF openmp_found=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot find omp.h" >&5 $as_echo "$as_me: WARNING: cannot find omp.h" >&2;} fi done CPPFLAGS="$save_CPPFLAGS" fi use_papi=yes # Check whether --with-papi was given. if test "${with_papi+set}" = set; then : withval=$with_papi; if test x$withval != xno; then use_papi=yes if test x$withval = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } use_papi_from_system=yes else # use specified path use_papi_from_system=no papidir=$withval { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes using $papidir" >&5 $as_echo "yes using $papidir" >&6; } PAPIDIR=$papidir fi else use_papi=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi USE_PAPIDIR_FROM_USER=$use_papi_from_system if test x$use_papi_from_system = xno; then PAPI_LIBDIR=$papidir/lib PAPI_CPPFLAGS="-I$papidir/include/" PAPI_LDFLAGS="-L${PAPI_LIBDIR} -Xlinker -rpath=${PAPI_LIBDIR}" elif test x$use_papi = xyes ; then if test -d "/usr/include/papi" ; then PAPI_CPPFLAGS="-I/usr/include/papi/" fi if test -d "/usr/lib/PAPI" ; then PAPI_LIBDIR=/usr/lib/papi PAPI_LDFLAGS="-L/usr/lib/papi -Xlinker -rpath=/usr/lib/papi" fi fi enable_papi=no if test x$use_papi = xyes ; then save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $PAPI_CPPFLAGS" save_LDFLAGS="$LDFLAGS" save_LIBS="$LIBS" LDFLAGS="$LDFLAGS $PAPI_LDFLAGS -lpapi" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { PAPI_event_info_t plop; ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : enable_papi=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot find PAPI lib" >&5 $as_echo "$as_me: WARNING: cannot find PAPI lib" >&2;} fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" CPPFLAGS="$save_CPPFLAGS" if test x$enable_papi = xyes; then enable_papi=no save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS "$PAPI_CPPFLAGS"" for ac_header in papi.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "papi.h" "ac_cv_header_papi_h" "$ac_includes_default" if test "x$ac_cv_header_papi_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_PAPI_H 1 _ACEOF enable_papi=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot find headers for PAPI" >&5 $as_echo "$as_me: WARNING: cannot find headers for PAPI" >&2;} fi done CPPFLAGS="$save_CPPFLAGS" fi if test x$enable_papi = xyes; then CFLAGS="$CFLAGS -DUSE_PAPI" fi fi # MPI stuff MPI_ROOT= MPI_INC= use_mpi=yes use_mpi3=no use_mpi_from_system=yes # Check whether --with-mpi was given. if test "${with_mpi+set}" = set; then : withval=$with_mpi; if test x$withval != xno; then if test x$withval = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } use_mpi_from_system=yes else # use specified path use_mpi_from_system=no mpidir=$withval { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using MPI installation: $mpidir" >&5 $as_echo "Using MPI installation: $mpidir" >&6; } MPI_ROOT=$mpidir MPI_ROOT=$mpidir fi else # either --without-mpi or --with-mpi=no is set use_mpi=no fi fi # Check whether --with-mpi-include was given. if test "${with_mpi_include+set}" = set; then : withval=$with_mpi_include; if test x$withval != xno; then if test x$withval = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } use_mpi_from_system=yes else # use specified path use_mpi_from_system=no mpidir=$withval { $as_echo "$as_me:${as_lineno-$LINENO}: result: MPI include directory: $mpidir" >&5 $as_echo "MPI include directory: $mpidir" >&6; } MPI_INC=$mpidir MPI_INC=$mpidir fi fi fi if test x$MPI_INC != x; then # use the value supplied by --with-mpi-include MPI_CFLAGS="-I$MPI_INC/" CPPFLAGS="${CPPFLAGS} $MPI_CFLAGS" FCFLAGS="${FCFLAGS} $MPI_CFLAGS" elif test x$MPI_ROOT != x; then # use the value supplied by --with-mpi MPI_CFLAGS="-I$MPI_ROOT/include/" CPPFLAGS="${CPPFLAGS} $MPI_CFLAGS" FCFLAGS="${FCFLAGS} $MPI_CFLAGS" fi mpi_cflags= # Check whether --with-mpi-cflags was given. if test "${with_mpi_cflags+set}" = set; then : withval=$with_mpi_cflags; if test "x$withval" != "xno"; then # use specified path mpi_cflags=$withval MPI_CFLAGS="$mpi_ldflags" CPPFLAGS="${CPPFLAGS} $mpi_cflags" { $as_echo "$as_me:${as_lineno-$LINENO}: result: MPI CFLAGS: $mpi_cflags" >&5 $as_echo "MPI CFLAGS: $mpi_cflags" >&6; } MPI_CFLAGS=mpi_cflags fi fi mpi_ldflags= # Check whether --with-mpi-ldflags was given. if test "${with_mpi_ldflags+set}" = set; then : withval=$with_mpi_ldflags; if test "x$withval" != "xno"; then # use specified path mpi_ldflags=$withval { $as_echo "$as_me:${as_lineno-$LINENO}: result: MPI LDFLAGS: $mpi_ldflags" >&5 $as_echo "MPI LDFLAGS: $mpi_ldflags" >&6; } MPI_LDFLAGS=mpi_ldflags fi fi MPI_LDFLAGS="-lmpi" if test "x$mpi_ldflags" != "x"; then # use the value supplied by --with-mpi-include MPI_LDFLAGS="$mpi_ldflags" elif test x$MPI_ROOT != x; then # use the value supplied by --with-mpi MPI_LDFLAGS="-L$MPI_ROOT/lib -lmpi" fi if test $use_mpi = yes ; then USE_MPIDIR_FROM_USER=$use_mpi_from_system # MPI header ac_fn_cxx_check_header_mongrel "$LINENO" "mpi.h" "ac_cv_header_mpi_h" "$ac_includes_default" if test "x$ac_cv_header_mpi_h" = xyes; then : enable_mpi=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot find headers for MPI" >&5 $as_echo "$as_me: WARNING: cannot find headers for MPI" >&2;} fi if test $enable_mpi = yes ; then ac_fn_cxx_check_decl "$LINENO" "MPI_Ibarrier" "ac_cv_have_decl_MPI_Ibarrier" "#include " if test "x$ac_cv_have_decl_MPI_Ibarrier" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_MPI_IBARRIER $ac_have_decl _ACEOF if test $ac_have_decl = 1; then : use_mpi3=yes else use_mpi3=no fi fi else enable_mpi=no fi mpi_module_name=mpi # Check whether --with-mpi-module-name was given. if test "${with_mpi_module_name+set}" = set; then : withval=$with_mpi_module_name; if test x$withval != x; then mpi_module_name=$withval { $as_echo "$as_me:${as_lineno-$LINENO}: result: Changing the name of the MPI module to $mpi_module_name" >&5 $as_echo "Changing the name of the MPI module to $mpi_module_name" >&6; } else # either --without-mpi or --with-mpi=no is set { $as_echo "$as_me:${as_lineno-$LINENO}: result: Please provide a name to the --with-mpi-module-name option" >&5 $as_echo "Please provide a name to the --with-mpi-module-name option" >&6; } fi fi mpi_event_id=4 # Check whether --with-mpi-event-id was given. if test "${with_mpi_event_id+set}" = set; then : withval=$with_mpi_event_id; if test x$withval != x; then mpi_event_id=$withval { $as_echo "$as_me:${as_lineno-$LINENO}: result: Changing the ID of MPI events $mpi_event_id" >&5 $as_echo "Changing the ID of MPI events $mpi_event_id" >&6; } else # either --without-mpi or --with-mpi=no is set { $as_echo "$as_me:${as_lineno-$LINENO}: result: Please provide an ID to the --with-mpi-event-id option" >&5 $as_echo "Please provide an ID to the --with-mpi-event-id option" >&6; } fi fi MPI_CFLAGS=$MPI_CFLAGS MPI_LDFLAGS=$MPI_LDFLAGS MPI_MODULE_NAME=$mpi_module_name MPI_EVENT_ID=$mpi_event_id # GTG stuff use_extern_gtg=no # Check whether --with-gtg was given. if test "${with_gtg+set}" = set; then : withval=$with_gtg; if test x$withval != xno; then if test x$withval = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # use specified path use_extern_gtg=yes gtgdir=$withval { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes using $gtgdir" >&5 $as_echo "yes using $gtgdir" >&6; } GTGDIR=$gtgdir fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "Cannot find GTG" "$LINENO" 5 fi fi if test x$use_extern_gtg = xyes; then GTG_CPPFLAGS="${CPPFLAGS} -I$gtgdir/include/" GTG_LDFLAGS="${LDFLAGS} -L$gtgdir/lib/" GTG_DEPENDENCIES="" GTG_LIB="-lgtg" GTG_EXT_CPPFLAGS="${GTG_CPPFLAGS}" GTG_EXT_LDFLAGS="$GTGLDFLAGS" GTG_EXT_LIB="-lgtg" save_LDFLAGS="$LDFLAGS" save_LIBS="$LIBS" LDFLAGS="$LDFLAGS "$GTG_LDFLAGS"" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setTraceType in -lgtg" >&5 $as_echo_n "checking for setTraceType in -lgtg... " >&6; } if ${ac_cv_lib_gtg_setTraceType+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgtg $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char setTraceType (); int main () { return setTraceType (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_gtg_setTraceType=yes else ac_cv_lib_gtg_setTraceType=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gtg_setTraceType" >&5 $as_echo "$ac_cv_lib_gtg_setTraceType" >&6; } if test "x$ac_cv_lib_gtg_setTraceType" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBGTG 1 _ACEOF LIBS="-lgtg $LIBS" else as_fn_error $? "cannot find libgtg" "$LINENO" 5 fi LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" save_LDFLAGS="$LDFLAGS" save_LIBS="$LIBS" LDFLAGS="$LDFLAGS "$GTG_LDFLAGS"" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gtg_record in -lgtg" >&5 $as_echo_n "checking for gtg_record in -lgtg... " >&6; } if ${ac_cv_lib_gtg_gtg_record+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgtg $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gtg_record (); int main () { return gtg_record (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_gtg_gtg_record=yes else ac_cv_lib_gtg_gtg_record=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gtg_gtg_record" >&5 $as_echo "$ac_cv_lib_gtg_gtg_record" >&6; } if test "x$ac_cv_lib_gtg_gtg_record" = xyes; then : GTG_OUT_OF_ORDER=1 else GTG_OUT_OF_ORDER=0 fi LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS "$GTG_CPPFLAGS"" for ac_header in GTG.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "GTG.h" "ac_cv_header_GTG_h" "$ac_includes_default" if test "x$ac_cv_header_GTG_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GTG_H 1 _ACEOF else as_fn_error $? "cannot find headers for gtg" "$LINENO" 5 fi done CPPFLAGS="$save_CPPFLAGS" else GTG_OUT_OF_ORDER=1 gtg_parent_dir=`pwd` gtg_dir="extlib/gtg" { $as_echo "$as_me:${as_lineno-$LINENO}: configuring in gtg_dir ($gtg_parent_dir/$gtg_dir)" >&5 $as_echo "$as_me: configuring in gtg_dir ($gtg_parent_dir/$gtg_dir)" >&6;} if test "$srcdir" != "."; then : test -d "$gtg_dir" || mkdir -p "$gtg_dir" || as_fn_error $? "cannot create $gtg_dir" "$LINENO" 5 fi case $srcdir in .) gtg_srcdir="$srcdir" ;; /*) gtg_srcdir="$srcdir/$gtg_dir" ;; *) gtg_srcdir="../../$srcdir/$gtg_dir" ;; esac gtg_conf_cmd="$gtg_srcdir/configure" gtg_conf_args="$gtg_conf_args --prefix=\"$prefix\" --exec-prefix=\"$exec_prefix\" --bindir=\"$bindir\" --libdir=\"$libdir\" --includedir=\"$includedir\" --docdir=\"$docdir/gtg\" $GTGFLAGS --cache-file=\"/dev/null\" --srcdir=\"$gtg_srcdir\" --with-mpi=no" FC=$FC F77=$F77 if test "x$build_doc" = "xyes" ; then gtg_conf_args="$gtg_conf_args --with-doc=\"$build_doc\"" fi { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $gtg_conf_cmd $gtg_conf_args" >&5 $as_echo "$as_me: running $SHELL $gtg_conf_cmd $gtg_conf_args" >&6;} cd $gtg_dir eval "$SHELL '$gtg_conf_cmd' $gtg_conf_args" if test $? != "0"; then : as_fn_error $? "$gtg_conf_cmd failed for $gtg_dir" "$LINENO" 5 fi cd $gtg_parent_dir GTG_CPPFLAGS="$GTG_CPPFLAGS -I${abs_srcdir}/${gtg_dir}/inc -I${top_build_dir}/${gtg_dir}/inc" GTG_LDFLAGS="${top_build_dir}/${gtg_dir}/src/libgtg.la" GTG_DEPENDENCIES="$GTG_LDFLAGS" GTG_LIB="" GTG_EXT_CPPFLAGS="-I${prefix}/include" GTG_EXT_LDFLAGS="-L${prefix}/lib" GTG_EXT_LIB="-lgtg" fi if test "$GTG_OUT_OF_ORDER" = "1" ; then GTG_CPPFLAGS="${GTG_CPPFLAGS} -DGTG_OUT_OF_ORDER" GTG_EXT_CPPFLAGS="${GTG_EXT_CPPFLAGS} -DGTG_OUT_OF_ORDER" fi # Check for presence of pdfLaTeX # Extract the first word of "pdflatex", so it can be a program name with args. set dummy pdflatex; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_PDFLATEX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$PDFLATEX"; then ac_cv_prog_PDFLATEX="$PDFLATEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_PDFLATEX="pdflatex" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi PDFLATEX=$ac_cv_prog_PDFLATEX if test -n "$PDFLATEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PDFLATEX" >&5 $as_echo "$PDFLATEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$PDFLATEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to create PDF version of the user manual -- pdflatex is missing!" >&5 $as_echo "$as_me: WARNING: Unable to create PDF version of the user manual -- pdflatex is missing!" >&2;} fi if test -n "$PDFLATEX"; then HAVE_PDFLATEX_TRUE= HAVE_PDFLATEX_FALSE='#' else HAVE_PDFLATEX_TRUE='#' HAVE_PDFLATEX_FALSE= fi # Check for presence of latexmk # Extract the first word of "latexmk", so it can be a program name with args. set dummy latexmk; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LATEXMK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LATEXMK"; then ac_cv_prog_LATEXMK="$LATEXMK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LATEXMK="latexmk" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LATEXMK=$ac_cv_prog_LATEXMK if test -n "$LATEXMK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LATEXMK" >&5 $as_echo "$LATEXMK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$LATEXMK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to create PDF version of the user manual -- latemk is missing!" >&5 $as_echo "$as_me: WARNING: Unable to create PDF version of the user manual -- latemk is missing!" >&2;} fi if test -n "$LATEXMK"; then HAVE_LATEXMK_TRUE= HAVE_LATEXMK_FALSE='#' else HAVE_LATEXMK_TRUE='#' HAVE_LATEXMK_FALSE= fi # CUDA stuff CUDA_ROOT=/usr/local/cuda use_cuda=yes use_cuda_from_system=yes # Check whether --with-cuda was given. if test "${with_cuda+set}" = set; then : withval=$with_cuda; if test x$withval != xno; then if test x$withval = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } use_cuda_from_system=yes else # use specified path use_cuda_from_system=no cudadir=$withval { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes using $cudadir" >&5 $as_echo "yes using $cudadir" >&6; } CUDA_ROOT=$cudadir CUDA_ROOT=$cudadir fi else # either --without-cuda or --with-cuda=no is set use_cuda=no fi fi enable_cuda=yes if test $use_cuda = yes ; then CUDA_INC=${CUDA_ROOT}/include CUDA_CFLAGS="-I${CUDA_INC}" CUDA_LIBS="-lcudart" CUDA_LDFLAGS="-L${CUDA_ROOT}/lib -Wl,-rpath -Wl,${CUDA_ROOT}/lib" if test x$CUPTI_ROOT = x ; then CUPTI_ROOT="${CUDA_ROOT}/extras/CUPTI" fi CUPTI_INC=${CUPTI_ROOT}/include CUPTI_CFLAGS="-I${CUPTI_INC}" CUPTI_LIBS="-lcupti" CUPTI_LDFLAGS="-L${CUPTI_ROOT}/lib -Wl,-rpath -Wl,${CUPTI_ROOT}/lib" # 64-bits systems CUDA_LDFLAGS="${CUDA_LDFLAGS} -L${CUDA_ROOT}/lib64 -Wl,-rpath -Wl,${CUDA_ROOT}/lib64" CUPTI_LDFLAGS="${CUPTI_LDFLAGS} -L${CUPTI_ROOT}/lib64 -Wl,-rpath -Wl,${CUPTI_ROOT}/lib64 ${CUDA_LDFLAGS}" NVCC="${CUDA_ROOT}/bin/nvcc" USE_CUDADIR_FROM_USER=$use_cuda_from_system # CUDA compiler { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CUDA compiler in $CUDA_ROOT/bin" >&5 $as_echo_n "checking for CUDA compiler in $CUDA_ROOT/bin... " >&6; } if test -x "${NVCC}" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: nvcc not found" >&5 $as_echo "nvcc not found" >&6; } enable_cuda=no fi fi if test $enable_cuda = yes ; then # CUDA header { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CUDA header in $CUDA_INC" >&5 $as_echo_n "checking for CUDA header in $CUDA_INC... " >&6; } if test -f "${CUDA_INC}/cuda.h" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: cuda.h not found" >&5 $as_echo "cuda.h not found" >&6; } enable_cuda=no fi fi if test $enable_cuda = yes ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CUPTI header in $CUPTI_INC" >&5 $as_echo_n "checking for CUPTI header in $CUPTI_INC... " >&6; } if test -f "${CUPTI_INC}/cupti.h" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: cupti.h not found" >&5 $as_echo "cupti.h not found" >&6; } enable_cuda=no fi fi if test $enable_cuda = yes ; then save_LDFLAGS="$LDFLAGS" save_LIBS="$LIBS" LDFLAGS="$LDFLAGS "$CUDA_LDFLAGS"" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cudaMalloc in -lcudart" >&5 $as_echo_n "checking for cudaMalloc in -lcudart... " >&6; } if ${ac_cv_lib_cudart_cudaMalloc+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcudart $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char cudaMalloc (); int main () { return cudaMalloc (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_cudart_cudaMalloc=yes else ac_cv_lib_cudart_cudaMalloc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cudart_cudaMalloc" >&5 $as_echo "$ac_cv_lib_cudart_cudaMalloc" >&6; } if test "x$ac_cv_lib_cudart_cudaMalloc" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBCUDART 1 _ACEOF LIBS="-lcudart $LIBS" else as_fn_error $? "cannot find libcudart" "$LINENO" 5 fi LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" save_LDFLAGS="$LDFLAGS" save_LIBS="$LIBS" LDFLAGS="$LDFLAGS "$CUPTI_LDFLAGS"" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cuptiSubscribe in -lcupti" >&5 $as_echo_n "checking for cuptiSubscribe in -lcupti... " >&6; } if ${ac_cv_lib_cupti_cuptiSubscribe+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcupti $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char cuptiSubscribe (); int main () { return cuptiSubscribe (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_cupti_cuptiSubscribe=yes else ac_cv_lib_cupti_cuptiSubscribe=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cupti_cuptiSubscribe" >&5 $as_echo "$ac_cv_lib_cupti_cuptiSubscribe" >&6; } if test "x$ac_cv_lib_cupti_cuptiSubscribe" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBCUPTI 1 _ACEOF LIBS="-lcupti $LIBS" else as_fn_error $? "cannot find libcupti" "$LINENO" 5 fi LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" else use_cuda=no enable_cuda=no fi if test x$enable_cuda != xyes ; then CUDA_INC= CUDA_CFLAGS= CUDA_LDFLAGS= CUDA_LIBS= CUPTI_INC= CUPTI_CFLAGS= CUPTI_LDFLAGS= CUPTI_LIBS= NVCC= NVCCFLAGS= fi # Check whether --enable-gettid was given. if test "${enable_gettid+set}" = set; then : enableval=$enable_gettid; fi USE_GETTID=0 if test "x$enable_gettid" = xyes; then USE_GETTID=1 # AC_DEFINE([USE_GETTID], [1], [Use gettid]) fi # cppflags for compiling eztrace # cppflags for compiling an application that uses eztrace # cppflags for compiling eztrace # cppflags for compiling an application that uses eztrace if test "$GTG_OUT_OF_ORDER" = "1" ; then GTG_OUT_OF_ORDER_TRUE= GTG_OUT_OF_ORDER_FALSE='#' else GTG_OUT_OF_ORDER_TRUE='#' GTG_OUT_OF_ORDER_FALSE= fi if test "x$openmp_found" = xyes; then OPENMP_FOUND_TRUE= OPENMP_FOUND_FALSE='#' else OPENMP_FOUND_TRUE='#' OPENMP_FOUND_FALSE= fi PAPI_ENABLED="$enable_api" if test "$enable_papi" = yes; then USE_PAPI_TRUE= USE_PAPI_FALSE='#' else USE_PAPI_TRUE='#' USE_PAPI_FALSE= fi if test "$enable_cuda" = yes; then USE_CUDA_TRUE= USE_CUDA_FALSE='#' else USE_CUDA_TRUE='#' USE_CUDA_FALSE= fi if test "$enable_mpi" = yes; then USE_MPI_TRUE= USE_MPI_FALSE='#' else USE_MPI_TRUE='#' USE_MPI_FALSE= fi if test "$use_mpi3" = yes; then USE_MPI3_TRUE= USE_MPI3_FALSE='#' else USE_MPI3_TRUE='#' USE_MPI3_FALSE= fi if test "$have_full_pthread" = yes; then USE_PTHREAD_TRUE= USE_PTHREAD_FALSE='#' else USE_PTHREAD_TRUE='#' USE_PTHREAD_FALSE= fi if test "$use_starpu" = yes; then USE_STARPU_TRUE= USE_STARPU_FALSE='#' else USE_STARPU_TRUE='#' USE_STARPU_FALSE= fi if test "x$use_litl" = xyes; then USE_LITL_TRUE= USE_LITL_FALSE='#' else USE_LITL_TRUE='#' USE_LITL_FALSE= fi if test "x$use_extern_litl" = xyes; then AMEXTERNLITL_TRUE= AMEXTERNLITL_FALSE='#' else AMEXTERNLITL_TRUE='#' AMEXTERNLITL_FALSE= fi if test "x$use_extern_gtg" = xyes; then AMEXTERNGTG_TRUE= AMEXTERNGTG_FALSE='#' else AMEXTERNGTG_TRUE='#' AMEXTERNGTG_FALSE= fi if test "x$arch_str" = "xX86_64"; then X86_64_TRUE= X86_64_FALSE='#' else X86_64_TRUE='#' X86_64_FALSE= fi if test "x$arch_str" = "xARM"; then ARM_TRUE= ARM_FALSE='#' else ARM_TRUE='#' ARM_FALSE= fi if test "$build_doc" = "yes"; then WITHDOC_TRUE= WITHDOC_FALSE='#' else WITHDOC_TRUE='#' WITHDOC_FALSE= fi subdirs="$subdirs extlib/opari2 extlib/litl" ac_config_files="$ac_config_files Makefile eztrace.pc extlib/Makefile src/core/Makefile src/modules/omp/Makefile src/modules/mpi/Makefile src/modules/cuda/Makefile src/modules/pthread/Makefile src/modules/stdio/Makefile src/modules/memory/Makefile src/modules/papi/Makefile src/modules/starpu/Makefile src/core/eztrace_create_plugin src/core/eztrace_plugin_generator src/core/input/Makefile.template src/modules/omp/eztrace_cc test/mpi/Makefile test/openmp/Makefile src/core/eztrace.c src/core/eztrace.preload src/core/eztrace_config.h test/static/Makefile test/stdio/Makefile test/memory/Makefile test/pthread/Makefile test/automake/Makefile test/automake/testcommon.h test/pptrace/automatic/Makefile doc/Makefile src/modules/omp/pomp-lib-dummy/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_DEMANGLE_TRUE}" && test -z "${HAVE_DEMANGLE_FALSE}"; then as_fn_error $? "conditional \"HAVE_DEMANGLE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBBFD_TRUE}" && test -z "${HAVE_LIBBFD_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBBFD\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBOPCODE_TRUE}" && test -z "${HAVE_LIBOPCODE_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBOPCODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_PPTRACE_TRUE}" && test -z "${USE_PPTRACE_FALSE}"; then as_fn_error $? "conditional \"USE_PPTRACE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_BIN_INSTRUMENTATION_TRUE}" && test -z "${ENABLE_BIN_INSTRUMENTATION_FALSE}"; then as_fn_error $? "conditional \"ENABLE_BIN_INSTRUMENTATION\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_PDFLATEX_TRUE}" && test -z "${HAVE_PDFLATEX_FALSE}"; then as_fn_error $? "conditional \"HAVE_PDFLATEX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LATEXMK_TRUE}" && test -z "${HAVE_LATEXMK_FALSE}"; then as_fn_error $? "conditional \"HAVE_LATEXMK\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTG_OUT_OF_ORDER_TRUE}" && test -z "${GTG_OUT_OF_ORDER_FALSE}"; then as_fn_error $? "conditional \"GTG_OUT_OF_ORDER\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${OPENMP_FOUND_TRUE}" && test -z "${OPENMP_FOUND_FALSE}"; then as_fn_error $? "conditional \"OPENMP_FOUND\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_PAPI_TRUE}" && test -z "${USE_PAPI_FALSE}"; then as_fn_error $? "conditional \"USE_PAPI\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_CUDA_TRUE}" && test -z "${USE_CUDA_FALSE}"; then as_fn_error $? "conditional \"USE_CUDA\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_MPI_TRUE}" && test -z "${USE_MPI_FALSE}"; then as_fn_error $? "conditional \"USE_MPI\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_MPI3_TRUE}" && test -z "${USE_MPI3_FALSE}"; then as_fn_error $? "conditional \"USE_MPI3\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_PTHREAD_TRUE}" && test -z "${USE_PTHREAD_FALSE}"; then as_fn_error $? "conditional \"USE_PTHREAD\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_STARPU_TRUE}" && test -z "${USE_STARPU_FALSE}"; then as_fn_error $? "conditional \"USE_STARPU\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_LITL_TRUE}" && test -z "${USE_LITL_FALSE}"; then as_fn_error $? "conditional \"USE_LITL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMEXTERNLITL_TRUE}" && test -z "${AMEXTERNLITL_FALSE}"; then as_fn_error $? "conditional \"AMEXTERNLITL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMEXTERNGTG_TRUE}" && test -z "${AMEXTERNGTG_FALSE}"; then as_fn_error $? "conditional \"AMEXTERNGTG\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${X86_64_TRUE}" && test -z "${X86_64_FALSE}"; then as_fn_error $? "conditional \"X86_64\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ARM_TRUE}" && test -z "${ARM_FALSE}"; then as_fn_error $? "conditional \"ARM\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WITHDOC_TRUE}" && test -z "${WITHDOC_FALSE}"; then as_fn_error $? "conditional \"WITHDOC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by eztrace $as_me 1.1-7, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ eztrace config.status 1.1-7 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' LD_FC='`$ECHO "$LD_FC" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_FC='`$ECHO "$reload_flag_FC" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_FC='`$ECHO "$reload_cmds_FC" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_FC='`$ECHO "$old_archive_cmds_FC" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' compiler_FC='`$ECHO "$compiler_FC" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' GCC_FC='`$ECHO "$GCC_FC" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_FC='`$ECHO "$lt_prog_compiler_no_builtin_flag_FC" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_FC='`$ECHO "$lt_prog_compiler_pic_FC" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_FC='`$ECHO "$lt_prog_compiler_wl_FC" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_FC='`$ECHO "$lt_prog_compiler_static_FC" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_FC='`$ECHO "$lt_cv_prog_compiler_c_o_FC" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_FC='`$ECHO "$archive_cmds_need_lc_FC" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_FC='`$ECHO "$enable_shared_with_static_runtimes_FC" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_FC='`$ECHO "$export_dynamic_flag_spec_FC" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_FC='`$ECHO "$whole_archive_flag_spec_FC" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_FC='`$ECHO "$compiler_needs_object_FC" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_FC='`$ECHO "$old_archive_from_new_cmds_FC" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_FC='`$ECHO "$old_archive_from_expsyms_cmds_FC" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_FC='`$ECHO "$archive_cmds_FC" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_FC='`$ECHO "$archive_expsym_cmds_FC" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_FC='`$ECHO "$module_cmds_FC" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_FC='`$ECHO "$module_expsym_cmds_FC" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_FC='`$ECHO "$with_gnu_ld_FC" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_FC='`$ECHO "$allow_undefined_flag_FC" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_FC='`$ECHO "$no_undefined_flag_FC" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_FC='`$ECHO "$hardcode_libdir_flag_spec_FC" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_FC='`$ECHO "$hardcode_libdir_separator_FC" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_FC='`$ECHO "$hardcode_direct_FC" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_FC='`$ECHO "$hardcode_direct_absolute_FC" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_FC='`$ECHO "$hardcode_minus_L_FC" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_FC='`$ECHO "$hardcode_shlibpath_var_FC" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_FC='`$ECHO "$hardcode_automatic_FC" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_FC='`$ECHO "$inherit_rpath_FC" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_FC='`$ECHO "$link_all_deplibs_FC" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_FC='`$ECHO "$always_export_symbols_FC" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_FC='`$ECHO "$export_symbols_cmds_FC" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_FC='`$ECHO "$exclude_expsyms_FC" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_FC='`$ECHO "$include_expsyms_FC" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_FC='`$ECHO "$prelink_cmds_FC" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_FC='`$ECHO "$postlink_cmds_FC" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_FC='`$ECHO "$file_list_spec_FC" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_FC='`$ECHO "$hardcode_action_FC" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_FC='`$ECHO "$compiler_lib_search_dirs_FC" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_FC='`$ECHO "$predep_objects_FC" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_FC='`$ECHO "$postdep_objects_FC" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' predeps_FC='`$ECHO "$predeps_FC" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_FC='`$ECHO "$postdeps_FC" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_FC='`$ECHO "$compiler_lib_search_path_FC" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ LD_FC \ reload_flag_CXX \ reload_flag_FC \ compiler_CXX \ compiler_FC \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_no_builtin_flag_FC \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_pic_FC \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_wl_FC \ lt_prog_compiler_static_CXX \ lt_prog_compiler_static_FC \ lt_cv_prog_compiler_c_o_CXX \ lt_cv_prog_compiler_c_o_FC \ export_dynamic_flag_spec_CXX \ export_dynamic_flag_spec_FC \ whole_archive_flag_spec_CXX \ whole_archive_flag_spec_FC \ compiler_needs_object_CXX \ compiler_needs_object_FC \ with_gnu_ld_CXX \ with_gnu_ld_FC \ allow_undefined_flag_CXX \ allow_undefined_flag_FC \ no_undefined_flag_CXX \ no_undefined_flag_FC \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_flag_spec_FC \ hardcode_libdir_separator_CXX \ hardcode_libdir_separator_FC \ exclude_expsyms_CXX \ exclude_expsyms_FC \ include_expsyms_CXX \ include_expsyms_FC \ file_list_spec_CXX \ file_list_spec_FC \ compiler_lib_search_dirs_CXX \ compiler_lib_search_dirs_FC \ predep_objects_CXX \ predep_objects_FC \ postdep_objects_CXX \ postdep_objects_FC \ predeps_CXX \ predeps_FC \ postdeps_CXX \ postdeps_FC \ compiler_lib_search_path_CXX \ compiler_lib_search_path_FC; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path \ reload_cmds_CXX \ reload_cmds_FC \ old_archive_cmds_CXX \ old_archive_cmds_FC \ old_archive_from_new_cmds_CXX \ old_archive_from_new_cmds_FC \ old_archive_from_expsyms_cmds_CXX \ old_archive_from_expsyms_cmds_FC \ archive_cmds_CXX \ archive_cmds_FC \ archive_expsym_cmds_CXX \ archive_expsym_cmds_FC \ module_cmds_CXX \ module_cmds_FC \ module_expsym_cmds_CXX \ module_expsym_cmds_FC \ export_symbols_cmds_CXX \ export_symbols_cmds_FC \ prelink_cmds_CXX \ prelink_cmds_FC \ postlink_cmds_CXX \ postlink_cmds_FC; 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=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "eztrace.pc") CONFIG_FILES="$CONFIG_FILES eztrace.pc" ;; "extlib/Makefile") CONFIG_FILES="$CONFIG_FILES extlib/Makefile" ;; "src/core/Makefile") CONFIG_FILES="$CONFIG_FILES src/core/Makefile" ;; "src/modules/omp/Makefile") CONFIG_FILES="$CONFIG_FILES src/modules/omp/Makefile" ;; "src/modules/mpi/Makefile") CONFIG_FILES="$CONFIG_FILES src/modules/mpi/Makefile" ;; "src/modules/cuda/Makefile") CONFIG_FILES="$CONFIG_FILES src/modules/cuda/Makefile" ;; "src/modules/pthread/Makefile") CONFIG_FILES="$CONFIG_FILES src/modules/pthread/Makefile" ;; "src/modules/stdio/Makefile") CONFIG_FILES="$CONFIG_FILES src/modules/stdio/Makefile" ;; "src/modules/memory/Makefile") CONFIG_FILES="$CONFIG_FILES src/modules/memory/Makefile" ;; "src/modules/papi/Makefile") CONFIG_FILES="$CONFIG_FILES src/modules/papi/Makefile" ;; "src/modules/starpu/Makefile") CONFIG_FILES="$CONFIG_FILES src/modules/starpu/Makefile" ;; "src/core/eztrace_create_plugin") CONFIG_FILES="$CONFIG_FILES src/core/eztrace_create_plugin" ;; "src/core/eztrace_plugin_generator") CONFIG_FILES="$CONFIG_FILES src/core/eztrace_plugin_generator" ;; "src/core/input/Makefile.template") CONFIG_FILES="$CONFIG_FILES src/core/input/Makefile.template" ;; "src/modules/omp/eztrace_cc") CONFIG_FILES="$CONFIG_FILES src/modules/omp/eztrace_cc" ;; "test/mpi/Makefile") CONFIG_FILES="$CONFIG_FILES test/mpi/Makefile" ;; "test/openmp/Makefile") CONFIG_FILES="$CONFIG_FILES test/openmp/Makefile" ;; "src/core/eztrace.c") CONFIG_FILES="$CONFIG_FILES src/core/eztrace.c" ;; "src/core/eztrace.preload") CONFIG_FILES="$CONFIG_FILES src/core/eztrace.preload" ;; "src/core/eztrace_config.h") CONFIG_FILES="$CONFIG_FILES src/core/eztrace_config.h" ;; "test/static/Makefile") CONFIG_FILES="$CONFIG_FILES test/static/Makefile" ;; "test/stdio/Makefile") CONFIG_FILES="$CONFIG_FILES test/stdio/Makefile" ;; "test/memory/Makefile") CONFIG_FILES="$CONFIG_FILES test/memory/Makefile" ;; "test/pthread/Makefile") CONFIG_FILES="$CONFIG_FILES test/pthread/Makefile" ;; "test/automake/Makefile") CONFIG_FILES="$CONFIG_FILES test/automake/Makefile" ;; "test/automake/testcommon.h") CONFIG_FILES="$CONFIG_FILES test/automake/testcommon.h" ;; "test/pptrace/automatic/Makefile") CONFIG_FILES="$CONFIG_FILES test/pptrace/automatic/Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "src/modules/omp/pomp-lib-dummy/Makefile") CONFIG_FILES="$CONFIG_FILES src/modules/omp/pomp-lib-dummy/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # 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 # 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. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # The names of the tagged configurations supported by this script. available_tags='CXX FC ' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # 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$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; 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-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: FC # The linker used to build libraries. LD=$lt_LD_FC # How to create reloadable object files. reload_flag=$lt_reload_flag_FC reload_cmds=$lt_reload_cmds_FC # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_FC # A language specific compiler. CC=$lt_compiler_FC # Is the compiler the GNU compiler? with_gcc=$GCC_FC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_FC # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_FC # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_FC # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_FC # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_FC # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_FC # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_FC # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_FC # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_FC # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_FC # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_FC # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_FC # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_FC archive_expsym_cmds=$lt_archive_expsym_cmds_FC # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_FC module_expsym_cmds=$lt_module_expsym_cmds_FC # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_FC # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_FC # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_FC # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_FC # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_FC # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_FC # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_FC # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_FC # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_FC # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_FC # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_FC # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_FC # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_FC # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_FC # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_FC # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_FC # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_FC # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_FC # Specify filename containing input files. file_list_spec=$lt_file_list_spec_FC # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_FC # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_FC # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_FC postdep_objects=$lt_postdep_objects_FC predeps=$lt_predeps_FC postdeps=$lt_postdeps_FC # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_FC # ### END LIBTOOL TAG CONFIG: FC _LT_EOF ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi # # CONFIG_SUBDIRS section. # if test "$no_recursion" != yes; then # Remove --cache-file, --srcdir, and --disable-option-checking arguments # so they do not pile up. ac_sub_configure_args= ac_prev= eval "set x $ac_configure_args" shift for ac_arg do if test -n "$ac_prev"; then ac_prev= continue fi case $ac_arg in -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \ | --c=*) ;; --config-cache | -C) ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ;; --disable-option-checking) ;; *) case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_sub_configure_args " '$ac_arg'" ;; esac done # Always prepend --prefix to ensure using the same prefix # in subdir configurations. ac_arg="--prefix=$prefix" case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" # Pass --silent if test "$silent" = yes; then ac_sub_configure_args="--silent $ac_sub_configure_args" fi # Always prepend --disable-option-checking to silence warnings, since # different subdirs can have different --enable and --with options. ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args" ac_popdir=`pwd` for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue # Do not complain, so a configure script can configure whichever # parts of a large source tree are present. test -d "$srcdir/$ac_dir" || continue ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)" $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5 $as_echo "$ac_msg" >&6 as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" # Check for guested configure; otherwise get Cygnus style configure. if test -f "$ac_srcdir/configure.gnu"; then ac_sub_configure=$ac_srcdir/configure.gnu elif test -f "$ac_srcdir/configure"; then ac_sub_configure=$ac_srcdir/configure elif test -f "$ac_srcdir/configure.in"; then # This should be Cygnus configure. ac_sub_configure=$ac_aux_dir/configure else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5 $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} ac_sub_configure= fi # The recursion is here. if test -n "$ac_sub_configure"; then # Make the cache file name correct relative to the subdirectory. case $cache_file in [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; *) # Relative name. ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 $as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} # The eval makes quoting arguments work. eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5 fi cd "$ac_popdir" done fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi eztrace-1.1-7/PaxHeaders.7332/extlib0000644000000000000000000000013213171135477014052 xustar0030 mtime=1508162367.249865043 30 atime=1508162367.741908015 30 ctime=1508162367.249865043 eztrace-1.1-7/extlib/0000755000175000017500000000000013171135477015316 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/PaxHeaders.7332/opari20000644000000000000000000000013213171135477015246 xustar0030 mtime=1508162367.689903473 30 atime=1508162367.741908015 30 ctime=1508162367.689903473 eztrace-1.1-7/extlib/opari2/0000755000175000017500000000000013171135477016512 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/PaxHeaders.7332/aclocal.m40000644000000000000000000000013213171135243017152 xustar0030 mtime=1508162211.417210043 30 atime=1508162211.537218693 30 ctime=1508162367.293868886 eztrace-1.1-7/extlib/opari2/aclocal.m40000644000175000017500000007155313171135243020354 0ustar00trahaytrahay00000000000000# generated automatically by aclocal 1.15.1 -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.15.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.15.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([vendor/common/build-config/m4/ac_scorep_compiler_and_flags.m4]) m4_include([vendor/common/build-config/m4/ac_scorep_doxygen.m4]) m4_include([vendor/common/build-config/m4/ac_scorep_svn_controlled.m4]) m4_include([vendor/common/build-config/m4/ac_scorep_sys_detection.m4]) m4_include([vendor/common/build-config/m4/ac_scorep_toplevel_args.m4]) m4_include([vendor/common/build-config/m4/ac_scorep_uncrustify.m4]) m4_include([vendor/common/build-config/m4/ac_scorep_version_and_revision.m4]) m4_include([vendor/common/build-config/m4/status.m4]) eztrace-1.1-7/extlib/opari2/PaxHeaders.7332/test0000644000000000000000000000013213171135477016225 xustar0030 mtime=1508162367.713905569 30 atime=1508162367.741908015 30 ctime=1508162367.713905569 eztrace-1.1-7/extlib/opari2/test/0000755000175000017500000000000013171135477017471 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/test/PaxHeaders.7332/data0000644000000000000000000000013212617055645017140 xustar0030 mtime=1446796197.922458326 30 atime=1508162367.741908015 30 ctime=1508162367.641899281 eztrace-1.1-7/extlib/opari2/test/data/0000755000175000017500000000000012617055645020404 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/jacobi0000644000000000000000000000013212537532722020364 xustar0030 mtime=1434367442.759821559 30 atime=1508162367.741908015 30 ctime=1508162367.641899281 eztrace-1.1-7/extlib/opari2/test/data/jacobi/0000755000175000017500000000000012537532722021630 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/test/data/jacobi/PaxHeaders.7332/C++0000644000000000000000000000013212537532722020674 xustar0030 mtime=1434367442.787821205 30 atime=1508162367.741908015 30 ctime=1508162367.641899281 eztrace-1.1-7/extlib/opari2/test/data/jacobi/C++/0000755000175000017500000000000012537532722022140 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/test/data/jacobi/C++/PaxHeaders.7332/main.cpp0000644000000000000000000000013112537514551022400 xustar0030 mtime=1434360169.064487222 29 atime=1507797543.82288879 30 ctime=1508162367.641899281 eztrace-1.1-7/extlib/opari2/test/data/jacobi/C++/main.cpp0000644000175000017500000001266712537514551023604 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ #include #include #include #include #include #ifdef _OPENMP #include #else #include #endif #include "jacobi.h" #define U( j, i ) data.afU[ ( ( j ) - data.iRowFirst ) * data.iCols + ( i ) ] #define F( j, i ) data.afF[ ( ( j ) - data.iRowFirst ) * data.iCols + ( i ) ] using namespace std; // setting values, init mpi, omp etc void Init( JacobiData &data, int & argc, char** argv ) { int ITERATIONS = 5; char* env = getenv( "ITERATIONS" ); if ( env ) { int iterations = atoi( env ); if ( iterations > 0 ) { ITERATIONS = iterations; } else { printf( "Ignoring invalid ITERATIONS=%s!\n", env ); } } #ifdef _OPENMP printf( "Jacobi %d OpenMP-%u thread(s)\n", omp_get_max_threads(), _OPENMP ); #else printf( "Jacobi (serial)\n" ); #endif // default medium data.iCols = 2000; data.iRows = 2000; data.fAlpha = 0.8; data.fRelax = 1.0; data.fTolerance = 1e-10; data.iIterMax = ITERATIONS; cout << "\n-> matrix size: " << data.iCols << "x" << data.iRows << "\n-> alpha: " << data.fAlpha << "\n-> relax: " << data.fRelax << "\n-> tolerance: " << data.fTolerance << "\n-> iterations: " << data.iIterMax << endl << endl; // MPI values, set to defaults to avoid data inconsistency data.iMyRank = 0; data.iNumProcs = 1; data.iRowFirst = 0; data.iRowLast = data.iRows - 1; // memory allocation for serial & omp data.afU = new double[ data.iRows * data.iCols ]; data.afF = new double[ data.iRows * data.iCols ]; // calculate dx and dy data.fDx = 2.0 / ( data.iCols - 1 ); data.fDy = 2.0 / ( data.iRows - 1 ); data.iIterCount = 0; return; } // final cleanup routines void Finish( JacobiData &data ) { delete[] data.afU; delete[] data.afF; return; } // print result summary void PrintResults( const JacobiData &data ) { if ( data.iMyRank == 0 ) { cout << " Number of iterations : " << data.iIterCount << endl; cout << " Residual : " << data.fResidual << endl; cout << " Solution Error : " << data.fError << endl; cout << " Elapsed Time : " << data.fTimeStop - data.fTimeStart << endl; cout << " MFlops : " << 0.000013 * data.iIterCount * ( data.iCols - 2 ) * ( data.iRows - 2 ) / ( data.fTimeStop - data.fTimeStart ) << endl; } return; } // Initializes matrix // Assumes exact solution is u(x,y) = (1-x^2)*(1-y^2) void InitializeMatrix( JacobiData &data ) { /* Initilize initial condition and RHS */ #pragma omp parallel for for ( int j = data.iRowFirst; j <= data.iRowLast; j++ ) { for ( int i = 0; i < data.iCols; i++ ) { int xx = ( int )( -1.0 + data.fDx * i ); int yy = ( int )( -1.0 + data.fDy * j ); int xx2 = xx * xx; int yy2 = yy * yy; U( j, i ) = 0.0; F( j, i ) = -data.fAlpha * ( 1.0 - xx2 ) * ( 1.0 - yy2 ) + 2.0 * ( -2.0 + xx2 + yy2 ); } } } // Checks error between numerical and exact solution void CheckError( JacobiData &data ) { double error = 0.0; for ( int j = data.iRowFirst; j <= data.iRowLast; j++ ) { if ( ( data.iMyRank != 0 && j == data.iRowFirst ) || ( data.iMyRank != data.iNumProcs - 1 && j == data.iRowLast ) ) { continue; } for ( int i = 0; i < data.iCols; i++ ) { double xx = -1.0 + data.fDx * i; double yy = -1.0 + data.fDy * j; double temp = U( j, i ) - ( 1.0 - xx * xx ) * ( 1.0 - yy * yy ); error += temp * temp; } } data.fError = sqrt( error ) / ( data.iCols * data.iRows ); } double get_wtime() { #ifdef _OPENMP return omp_get_wtime(); #else struct timeval tp; gettimeofday( &tp, 0 ); return tp.tv_sec + ( tp.tv_usec * 1.0e-6 ); #endif } int main( int argc, char** argv ) { int retVal = 0; // return value JacobiData myData; // sets default values or reads from stdin // inits MPI and OpenMP if needed // distribute MPI data, calculate MPI bounds Init( myData, argc, argv ); if ( myData.afU && myData.afF ) { // matrix init InitializeMatrix( myData ); // starting timer myData.fTimeStart = get_wtime(); // running calculations Jacobi( myData ); // stopping timer myData.fTimeStop = get_wtime(); // error checking CheckError( myData ); // print result summary PrintResults( myData ); } else { cout << " Memory allocation failed ...\n"; retVal = -1; } // cleanup Finish( myData ); return retVal; } eztrace-1.1-7/extlib/opari2/test/data/jacobi/C++/PaxHeaders.7332/jacobi_test_2.out0000644000000000000000000000013012537514551024207 xustar0029 mtime=1434360169.06848717 29 atime=1507797543.82288879 30 ctime=1508162367.637898931 eztrace-1.1-7/extlib/opari2/test/data/jacobi/C++/jacobi_test_2.out0000644000175000017500000000333412537514551025403 0ustar00trahaytrahay00000000000000 2: begin parallel 2: enter for 2: enter implicit barrier of parallelfor 2: exit implicit barrier of parallelfor 2: exit for 2: end parallel 2: begin parallel 2: enter for 2: enter implicit barrier of for 2: exit implicit barrier of for 2: exit for 2: enter for 2: enter implicit barrier of for 2: exit implicit barrier of for 2: exit for 2: enter implicit barrier of parallel 2: exit implicit barrier of parallel 2: end parallel 2: begin parallel 2: enter for 2: enter implicit barrier of for 2: exit implicit barrier of for 2: exit for 2: enter for 2: enter implicit barrier of for 2: exit implicit barrier of for 2: exit for 2: enter implicit barrier of parallel 2: exit implicit barrier of parallel 2: end parallel 2: begin parallel 2: enter for 2: enter implicit barrier of for 2: exit implicit barrier of for 2: exit for 2: enter for 2: enter implicit barrier of for 2: exit implicit barrier of for 2: exit for 2: enter implicit barrier of parallel 2: exit implicit barrier of parallel 2: end parallel 2: begin parallel 2: enter for 2: enter implicit barrier of for 2: exit implicit barrier of for 2: exit for 2: enter for 2: enter implicit barrier of for 2: exit implicit barrier of for 2: exit for 2: enter implicit barrier of parallel 2: exit implicit barrier of parallel 2: end parallel 2: begin parallel 2: enter for 2: enter implicit barrier of for 2: exit implicit barrier of for 2: exit for 2: enter for 2: enter implicit barrier of for 2: exit implicit barrier of for 2: exit for 2: enter implicit barrier of parallel 2: exit implicit barrier of parallel 2: end parallel eztrace-1.1-7/extlib/opari2/test/data/jacobi/C++/PaxHeaders.7332/jacobi_test_3.out0000644000000000000000000000013012537514551024210 xustar0029 mtime=1434360169.06848717 29 atime=1507797543.82288879 30 ctime=1508162367.633898582 eztrace-1.1-7/extlib/opari2/test/data/jacobi/C++/jacobi_test_3.out0000644000175000017500000000333412537514551025404 0ustar00trahaytrahay00000000000000 3: begin parallel 3: enter for 3: enter implicit barrier of parallelfor 3: exit implicit barrier of parallelfor 3: exit for 3: end parallel 3: begin parallel 3: enter for 3: enter implicit barrier of for 3: exit implicit barrier of for 3: exit for 3: enter for 3: enter implicit barrier of for 3: exit implicit barrier of for 3: exit for 3: enter implicit barrier of parallel 3: exit implicit barrier of parallel 3: end parallel 3: begin parallel 3: enter for 3: enter implicit barrier of for 3: exit implicit barrier of for 3: exit for 3: enter for 3: enter implicit barrier of for 3: exit implicit barrier of for 3: exit for 3: enter implicit barrier of parallel 3: exit implicit barrier of parallel 3: end parallel 3: begin parallel 3: enter for 3: enter implicit barrier of for 3: exit implicit barrier of for 3: exit for 3: enter for 3: enter implicit barrier of for 3: exit implicit barrier of for 3: exit for 3: enter implicit barrier of parallel 3: exit implicit barrier of parallel 3: end parallel 3: begin parallel 3: enter for 3: enter implicit barrier of for 3: exit implicit barrier of for 3: exit for 3: enter for 3: enter implicit barrier of for 3: exit implicit barrier of for 3: exit for 3: enter implicit barrier of parallel 3: exit implicit barrier of parallel 3: end parallel 3: begin parallel 3: enter for 3: enter implicit barrier of for 3: exit implicit barrier of for 3: exit for 3: enter for 3: enter implicit barrier of for 3: exit implicit barrier of for 3: exit for 3: enter implicit barrier of parallel 3: exit implicit barrier of parallel 3: end parallel eztrace-1.1-7/extlib/opari2/test/data/jacobi/C++/PaxHeaders.7332/jacobi_test_1.out0000644000000000000000000000013012537514551024206 xustar0029 mtime=1434360169.06848717 29 atime=1507797543.82288879 30 ctime=1508162367.633898582 eztrace-1.1-7/extlib/opari2/test/data/jacobi/C++/jacobi_test_1.out0000644000175000017500000000333412537514551025402 0ustar00trahaytrahay00000000000000 1: begin parallel 1: enter for 1: enter implicit barrier of parallelfor 1: exit implicit barrier of parallelfor 1: exit for 1: end parallel 1: begin parallel 1: enter for 1: enter implicit barrier of for 1: exit implicit barrier of for 1: exit for 1: enter for 1: enter implicit barrier of for 1: exit implicit barrier of for 1: exit for 1: enter implicit barrier of parallel 1: exit implicit barrier of parallel 1: end parallel 1: begin parallel 1: enter for 1: enter implicit barrier of for 1: exit implicit barrier of for 1: exit for 1: enter for 1: enter implicit barrier of for 1: exit implicit barrier of for 1: exit for 1: enter implicit barrier of parallel 1: exit implicit barrier of parallel 1: end parallel 1: begin parallel 1: enter for 1: enter implicit barrier of for 1: exit implicit barrier of for 1: exit for 1: enter for 1: enter implicit barrier of for 1: exit implicit barrier of for 1: exit for 1: enter implicit barrier of parallel 1: exit implicit barrier of parallel 1: end parallel 1: begin parallel 1: enter for 1: enter implicit barrier of for 1: exit implicit barrier of for 1: exit for 1: enter for 1: enter implicit barrier of for 1: exit implicit barrier of for 1: exit for 1: enter implicit barrier of parallel 1: exit implicit barrier of parallel 1: end parallel 1: begin parallel 1: enter for 1: enter implicit barrier of for 1: exit implicit barrier of for 1: exit for 1: enter for 1: enter implicit barrier of for 1: exit implicit barrier of for 1: exit for 1: enter implicit barrier of parallel 1: exit implicit barrier of parallel 1: end parallel eztrace-1.1-7/extlib/opari2/test/data/jacobi/C++/PaxHeaders.7332/jacobi.cpp0000644000000000000000000000013012537514551022702 xustar0029 mtime=1434360169.06848717 29 atime=1507797543.82288879 30 ctime=1508162367.637898931 eztrace-1.1-7/extlib/opari2/test/data/jacobi/C++/jacobi.cpp0000644000175000017500000000631612537514551024101 0ustar00trahaytrahay00000000000000/* ****************************************************************** * Subroutine HelmholtzJ * Solves poisson equation on rectangular grid assuming : * (1) Uniform discretization in each direction, and * (2) Dirichlect boundary conditions * * Jacobi method is used in this routine * * Input : n,m Number of grid points in the X/Y directions * dx,dy Grid spacing in the X/Y directions * alpha Helmholtz eqn. coefficient * omega Relaxation factor * f(n,m) Right hand side function * u(n,m) Dependent variable/Solution * tolerance Tolerance for iterative solver * maxit Maximum number of iterations * * Output : u(n,m) - Solution ***************************************************************** */ #include #include #include #include "jacobi.h" using namespace std; #define U( j, i ) afU[ ( ( j ) - data.iRowFirst ) * data.iCols + ( i ) ] #define F( j, i ) afF[ ( ( j ) - data.iRowFirst ) * data.iCols + ( i ) ] #define UOLD( j, i ) uold[ ( ( j ) - data.iRowFirst ) * data.iCols + ( i ) ] void Jacobi( JacobiData &data ) { /*use local pointers for performance reasons*/ double* afU, * afF; afU = data.afU; afF = data.afF; double* uold = new double[ data.iCols * data.iRows ]; if ( uold ) { double ax = 1.0 / ( data.fDx * data.fDx ); /* X-direction coef */ double ay = 1.0 / ( data.fDy * data.fDy ); /* Y_direction coef */ double b = -2.0 * ( ax + ay ) - data.fAlpha; /* Central coeff */ double residual = 10.0 * data.fTolerance; while ( data.iIterCount < data.iIterMax && residual > data.fTolerance ) { residual = 0.0; /* copy new solution into old */ #pragma omp parallel { #pragma omp for for ( int j = 1; j < data.iRows - 1; j++ ) { for ( int i = 1; i < data.iCols - 1; i++ ) { UOLD( j, i ) = U( j, i ); } } double fLRes; /* compute stencil, residual and update */ #pragma omp for reduction(+:residual) for ( int j = data.iRowFirst + 1; j <= data.iRowLast - 1; j++ ) { for ( int i = 1; i < data.iCols - 1; i++ ) { fLRes = ( ax * ( UOLD( j, i - 1 ) + UOLD( j, i + 1 ) ) + ay * ( UOLD( j - 1, i ) + UOLD( j + 1, i ) ) + b * UOLD( j, i ) - F( j, i ) ) / b; /* update solution */ U( j, i ) = UOLD( j, i ) - data.fRelax * fLRes; /* accumulate residual error */ residual += fLRes * fLRes; } } } /* end omp parallel */ /* error check */ data.iIterCount++; residual = sqrt( residual ) / ( data.iCols * data.iRows ); } /* while */ data.fResidual = residual; delete[] uold; } else { cerr << "Error: cant allocate memory\n"; Finish( data ); exit( 1 ); } } eztrace-1.1-7/extlib/opari2/test/data/jacobi/C++/PaxHeaders.7332/jacobi.h0000644000000000000000000000013012537514551022347 xustar0029 mtime=1434360169.06848717 29 atime=1507797543.82288879 30 ctime=1508162367.637898931 eztrace-1.1-7/extlib/opari2/test/data/jacobi/C++/jacobi.h0000644000175000017500000000161612537514551023544 0ustar00trahaytrahay00000000000000#ifndef _JACOBI_H #define _JACOBI_H struct JacobiData { // input data int iRows; int iCols; int iRowFirst; int iRowLast; int iIterMax; double fAlpha; double fRelax; double fTolerance; // calculated dx & dy double fDx; double fDy; // pointers to the allocated memory double* afU; double* afF; // start and end timestamps double fTimeStart; double fTimeStop; // calculated residual (output jacobi) double fResidual; // effective interation count (output jacobi) int iIterCount; // calculated error (output error_check) double fError; // MPI-Variables int iMyRank; // current process rank (number) int iNumProcs; // how many processes }; // jacobi calculation routine void Jacobi( JacobiData &data ); // final cleanup routines void Finish( JacobiData &data ); #endif eztrace-1.1-7/extlib/opari2/test/data/jacobi/C++/PaxHeaders.7332/jacobi_test_0.out0000644000000000000000000000013012537514551024205 xustar0029 mtime=1434360169.06848717 29 atime=1507797543.82288879 30 ctime=1508162367.633898582 eztrace-1.1-7/extlib/opari2/test/data/jacobi/C++/jacobi_test_0.out0000644000175000017500000000374412537514551025406 0ustar00trahaytrahay00000000000000 0: init 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of parallelfor 0: exit implicit barrier of parallelfor 0: exit for 0: end parallel 0: join parallel 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of for 0: exit implicit barrier of for 0: exit for 0: enter for 0: enter implicit barrier of for 0: exit implicit barrier of for 0: exit for 0: enter implicit barrier of parallel 0: exit implicit barrier of parallel 0: end parallel 0: join parallel 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of for 0: exit implicit barrier of for 0: exit for 0: enter for 0: enter implicit barrier of for 0: exit implicit barrier of for 0: exit for 0: enter implicit barrier of parallel 0: exit implicit barrier of parallel 0: end parallel 0: join parallel 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of for 0: exit implicit barrier of for 0: exit for 0: enter for 0: enter implicit barrier of for 0: exit implicit barrier of for 0: exit for 0: enter implicit barrier of parallel 0: exit implicit barrier of parallel 0: end parallel 0: join parallel 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of for 0: exit implicit barrier of for 0: exit for 0: enter for 0: enter implicit barrier of for 0: exit implicit barrier of for 0: exit for 0: enter implicit barrier of parallel 0: exit implicit barrier of parallel 0: end parallel 0: join parallel 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of for 0: exit implicit barrier of for 0: exit for 0: enter for 0: enter implicit barrier of for 0: exit implicit barrier of for 0: exit for 0: enter implicit barrier of parallel 0: exit implicit barrier of parallel 0: end parallel 0: join parallel 0: finalize eztrace-1.1-7/extlib/opari2/test/data/jacobi/PaxHeaders.7332/F770000644000000000000000000000013212617055645020732 xustar0030 mtime=1446796197.918458201 30 atime=1508162367.741908015 30 ctime=1508162367.629898232 eztrace-1.1-7/extlib/opari2/test/data/jacobi/F77/0000755000175000017500000000000012617055645022176 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/test/data/jacobi/F77/PaxHeaders.7332/jacobi_test_2.out0000644000000000000000000000013112537514551024243 xustar0030 mtime=1434360169.048487426 29 atime=1507797543.82288879 30 ctime=1508162367.629898232 eztrace-1.1-7/extlib/opari2/test/data/jacobi/F77/jacobi_test_2.out0000644000175000017500000000330612537514551025435 0ustar00trahaytrahay00000000000000 2: begin parallel 2: enter for 2: enter implicit barrier of paralleldo 2: exit implicit barrier of paralleldo 2: exit for 2: end parallel 2: begin parallel 2: enter for 2: enter implicit barrier of do 2: exit implicit barrier of do 2: exit for 2: enter for 2: enter implicit barrier of do 2: exit implicit barrier of do 2: exit for 2: enter implicit barrier of parallel 2: exit implicit barrier of parallel 2: end parallel 2: begin parallel 2: enter for 2: enter implicit barrier of do 2: exit implicit barrier of do 2: exit for 2: enter for 2: enter implicit barrier of do 2: exit implicit barrier of do 2: exit for 2: enter implicit barrier of parallel 2: exit implicit barrier of parallel 2: end parallel 2: begin parallel 2: enter for 2: enter implicit barrier of do 2: exit implicit barrier of do 2: exit for 2: enter for 2: enter implicit barrier of do 2: exit implicit barrier of do 2: exit for 2: enter implicit barrier of parallel 2: exit implicit barrier of parallel 2: end parallel 2: begin parallel 2: enter for 2: enter implicit barrier of do 2: exit implicit barrier of do 2: exit for 2: enter for 2: enter implicit barrier of do 2: exit implicit barrier of do 2: exit for 2: enter implicit barrier of parallel 2: exit implicit barrier of parallel 2: end parallel 2: begin parallel 2: enter for 2: enter implicit barrier of do 2: exit implicit barrier of do 2: exit for 2: enter for 2: enter implicit barrier of do 2: exit implicit barrier of do 2: exit for 2: enter implicit barrier of parallel 2: exit implicit barrier of parallel 2: end parallel eztrace-1.1-7/extlib/opari2/test/data/jacobi/F77/PaxHeaders.7332/main.f0000644000000000000000000000013112617055645022101 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.82288879 30 ctime=1508162367.625897883 eztrace-1.1-7/extlib/opari2/test/data/jacobi/F77/main.f0000644000175000017500000001007712617055645023276 0ustar00trahaytrahay00000000000000 program main ************************************************************ * program to solve a finite difference * discretization of Helmholtz equation : * (d2/dx2)u + (d2/dy2)u - alpha u = f * using Jacobi iterative method. * * Modified: Sanjiv Shah, Kuck and Associates, Inc. (KAI), 1998 * Author: Joseph Robicheaux, Kuck and Associates, Inc. (KAI), 1998 * * Directives are used in this code to achieve paralleism. * All do loops are parallized with default 'static' scheduling. * * Input : n - grid dimension in x direction * m - grid dimension in y direction * alpha - Helmholtz constant (always greater than 0.0) * tol - error tolerance for iterative solver * relax - Successice over relaxation parameter * mits - Maximum iterations for iterative solver * * On output * : u(n,m) - Dependent variable (solutions) * : f(n,m) - Right hand side function ************************************************************* implicit none integer n,m,mits double precision tol,relax,alpha common /idat/ n,m,mits common /fdat/tol,alpha,relax * * Fix input for test cases * n=2000 m=2000 alpha=0.8 relax=1 tol=1e-10 mits=5 * * Calls a driver routine * call driver stop end subroutine driver ( ) ************************************************************* * Subroutine driver () * This is where the arrays are allocated and initialzed. * * Working varaibles/arrays * dx - grid spacing in x direction * dy - grid spacing in y direction ************************************************************* implicit none double precision omp_get_wtime integer n,m,mits double precision tol,relax,alpha double precision r0 double precision c0 common /idat/ n,m,mits common /fdat/tol,alpha,relax double precision u(n,m),f(n,m),dx,dy * Initialize data call initialize (n,m,alpha,dx,dy,u,f) * Solve Helmholtz equation r0 = omp_get_wtime() call jacobi (n,m,dx,dy,alpha,relax,u,f,tol,mits) r0 = omp_get_wtime() - r0 write (*,'(a,f12.6)') ' elapsed time usage ', r0 write (*,'(a,f12.6)') ' MFlop/s ', & 1d-6*mits*(m-2d0)*(n-2d0)*13d0 / r0 * Check error between exact solution call error_check (n,m,alpha,dx,dy,u,f) return end subroutine initialize (n,m,alpha,dx,dy,u,f) ****************************************************** * Initializes data * Assumes exact solution is u(x,y) = (1-x^2)*(1-y^2) * ****************************************************** implicit none integer n,m double precision u(n,m),f(n,m),dx,dy,alpha integer i,j, xx,yy double precision PI parameter (PI=3.1415926) dx = 2.0 / (n-1) dy = 2.0 / (m-1) * Initilize initial condition and RHS C$omp parallel do private(i,j) do j = 1,m do i = 1,n xx = -1.0 + dx * dble(i-1) ! -1 < x < 1 yy = -1.0 + dy * dble(j-1) ! -1 < y < 1 u(i,j) = 0.0 f(i,j) = -alpha *(1.0-xx*xx)*(1.0-yy*yy) & - 2.0*(1.0-xx*xx)-2.0*(1.0-yy*yy) enddo enddo C$omp end parallel do return end subroutine error_check (n,m,alpha,dx,dy,u,f) implicit none ************************************************************ * Checks error between numerical and exact solution * ************************************************************ integer n,m double precision u(n,m),f(n,m),dx,dy,alpha integer i,j double precision xx,yy,temp,error dx = 2.0 / (n-1) dy = 2.0 / (m-1) error = 0.0 do j = 1,m do i = 1,n xx = -1.0d0 + dx * dble(i-1) yy = -1.0d0 + dy * dble(j-1) temp = u(i,j) - (1.0-xx*xx)*(1.0-yy*yy) error = error + temp*temp enddo enddo error = sqrt(error)/dble(n*m) print *, 'Solution Error : ',error return end eztrace-1.1-7/extlib/opari2/test/data/jacobi/F77/PaxHeaders.7332/jacobi_test_3.out0000644000000000000000000000013112537514551024244 xustar0030 mtime=1434360169.048487426 29 atime=1507797543.82288879 30 ctime=1508162367.625897883 eztrace-1.1-7/extlib/opari2/test/data/jacobi/F77/jacobi_test_3.out0000644000175000017500000000330612537514551025436 0ustar00trahaytrahay00000000000000 3: begin parallel 3: enter for 3: enter implicit barrier of paralleldo 3: exit implicit barrier of paralleldo 3: exit for 3: end parallel 3: begin parallel 3: enter for 3: enter implicit barrier of do 3: exit implicit barrier of do 3: exit for 3: enter for 3: enter implicit barrier of do 3: exit implicit barrier of do 3: exit for 3: enter implicit barrier of parallel 3: exit implicit barrier of parallel 3: end parallel 3: begin parallel 3: enter for 3: enter implicit barrier of do 3: exit implicit barrier of do 3: exit for 3: enter for 3: enter implicit barrier of do 3: exit implicit barrier of do 3: exit for 3: enter implicit barrier of parallel 3: exit implicit barrier of parallel 3: end parallel 3: begin parallel 3: enter for 3: enter implicit barrier of do 3: exit implicit barrier of do 3: exit for 3: enter for 3: enter implicit barrier of do 3: exit implicit barrier of do 3: exit for 3: enter implicit barrier of parallel 3: exit implicit barrier of parallel 3: end parallel 3: begin parallel 3: enter for 3: enter implicit barrier of do 3: exit implicit barrier of do 3: exit for 3: enter for 3: enter implicit barrier of do 3: exit implicit barrier of do 3: exit for 3: enter implicit barrier of parallel 3: exit implicit barrier of parallel 3: end parallel 3: begin parallel 3: enter for 3: enter implicit barrier of do 3: exit implicit barrier of do 3: exit for 3: enter for 3: enter implicit barrier of do 3: exit implicit barrier of do 3: exit for 3: enter implicit barrier of parallel 3: exit implicit barrier of parallel 3: end parallel eztrace-1.1-7/extlib/opari2/test/data/jacobi/F77/PaxHeaders.7332/jacobi.f0000644000000000000000000000013112537514551022401 xustar0030 mtime=1434360169.048487426 29 atime=1507797543.82288879 30 ctime=1508162367.629898232 eztrace-1.1-7/extlib/opari2/test/data/jacobi/F77/jacobi.f0000644000175000017500000000454112537514551023575 0ustar00trahaytrahay00000000000000 subroutine jacobi (n,m,dx,dy,alpha,omega,u,f,tol,maxit) ****************************************************************** * Subroutine HelmholtzJ * Solves poisson equation on rectangular grid assuming : * (1) Uniform discretization in each direction, and * (2) Dirichlect boundary conditions * * Jacobi method is used in this routine * * Input : n,m Number of grid points in the X/Y directions * dx,dy Grid spacing in the X/Y directions * alpha Helmholtz eqn. coefficient * omega Relaxation factor * f(n,m) Right hand side function * u(n,m) Dependent variable/Solution * tol Tolerance for iterative solver * maxit Maximum number of iterations * * Output : u(n,m) - Solution ***************************************************************** implicit none integer n,m,maxit double precision dx,dy,f(n,m),u(n,m),alpha, tol,omega * * Local variables * integer i,j,k,k_local double precision error,resid,rsum,ax,ay,b double precision error_local, uold(n,m) real ta,tb,tc,td,te,ta1,ta2,tb1,tb2,tc1,tc2,td1,td2 real te1,te2 * * Initialize coefficients ax = 1.0/(dx*dx) ! X-direction coef ay = 1.0/(dy*dy) ! Y-direction coef b = -2.0/(dx*dx)-2.0/(dy*dy) - alpha ! Central coeff error = 10.0 * tol k = 1 do while (k.le.maxit .and. error.gt. tol) error = 0.0 * Copy new solution into old C$omp parallel private(j,i) C$omp do do j=1,m do i=1,n uold(i,j) = u(i,j) enddo enddo C$omp end do * Compute stencil, residual, & update C$omp do reduction(+:error) do j = 2,m-1 do i = 2,n-1 * Evaluate residual resid = (ax*(uold(i-1,j) + uold(i+1,j)) & + ay*(uold(i,j-1) + uold(i,j+1)) & + b * uold(i,j) - f(i,j))/b * Update solution u(i,j) = uold(i,j) - omega * resid * Accumulate residual error error = error + resid*resid end do enddo C$omp end do C$omp end parallel * Error check k = k + 1 error = sqrt(error)/dble(n*m) * enddo ! End iteration loop * print *, 'Total Number of Iterations ', k print *, 'Residual ', error return end eztrace-1.1-7/extlib/opari2/test/data/jacobi/F77/PaxHeaders.7332/jacobi_test_1.out0000644000000000000000000000013112537514551024242 xustar0030 mtime=1434360169.048487426 29 atime=1507797543.82288879 30 ctime=1508162367.625897883 eztrace-1.1-7/extlib/opari2/test/data/jacobi/F77/jacobi_test_1.out0000644000175000017500000000330612537514551025434 0ustar00trahaytrahay00000000000000 1: begin parallel 1: enter for 1: enter implicit barrier of paralleldo 1: exit implicit barrier of paralleldo 1: exit for 1: end parallel 1: begin parallel 1: enter for 1: enter implicit barrier of do 1: exit implicit barrier of do 1: exit for 1: enter for 1: enter implicit barrier of do 1: exit implicit barrier of do 1: exit for 1: enter implicit barrier of parallel 1: exit implicit barrier of parallel 1: end parallel 1: begin parallel 1: enter for 1: enter implicit barrier of do 1: exit implicit barrier of do 1: exit for 1: enter for 1: enter implicit barrier of do 1: exit implicit barrier of do 1: exit for 1: enter implicit barrier of parallel 1: exit implicit barrier of parallel 1: end parallel 1: begin parallel 1: enter for 1: enter implicit barrier of do 1: exit implicit barrier of do 1: exit for 1: enter for 1: enter implicit barrier of do 1: exit implicit barrier of do 1: exit for 1: enter implicit barrier of parallel 1: exit implicit barrier of parallel 1: end parallel 1: begin parallel 1: enter for 1: enter implicit barrier of do 1: exit implicit barrier of do 1: exit for 1: enter for 1: enter implicit barrier of do 1: exit implicit barrier of do 1: exit for 1: enter implicit barrier of parallel 1: exit implicit barrier of parallel 1: end parallel 1: begin parallel 1: enter for 1: enter implicit barrier of do 1: exit implicit barrier of do 1: exit for 1: enter for 1: enter implicit barrier of do 1: exit implicit barrier of do 1: exit for 1: enter implicit barrier of parallel 1: exit implicit barrier of parallel 1: end parallel eztrace-1.1-7/extlib/opari2/test/data/jacobi/F77/PaxHeaders.7332/jacobi_test_0.out0000644000000000000000000000013112537514551024241 xustar0030 mtime=1434360169.048487426 29 atime=1507797543.82288879 30 ctime=1508162367.629898232 eztrace-1.1-7/extlib/opari2/test/data/jacobi/F77/jacobi_test_0.out0000644000175000017500000000371612537514551025440 0ustar00trahaytrahay00000000000000 0: init 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of paralleldo 0: exit implicit barrier of paralleldo 0: exit for 0: end parallel 0: join parallel 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of do 0: exit implicit barrier of do 0: exit for 0: enter for 0: enter implicit barrier of do 0: exit implicit barrier of do 0: exit for 0: enter implicit barrier of parallel 0: exit implicit barrier of parallel 0: end parallel 0: join parallel 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of do 0: exit implicit barrier of do 0: exit for 0: enter for 0: enter implicit barrier of do 0: exit implicit barrier of do 0: exit for 0: enter implicit barrier of parallel 0: exit implicit barrier of parallel 0: end parallel 0: join parallel 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of do 0: exit implicit barrier of do 0: exit for 0: enter for 0: enter implicit barrier of do 0: exit implicit barrier of do 0: exit for 0: enter implicit barrier of parallel 0: exit implicit barrier of parallel 0: end parallel 0: join parallel 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of do 0: exit implicit barrier of do 0: exit for 0: enter for 0: enter implicit barrier of do 0: exit implicit barrier of do 0: exit for 0: enter implicit barrier of parallel 0: exit implicit barrier of parallel 0: end parallel 0: join parallel 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of do 0: exit implicit barrier of do 0: exit for 0: enter for 0: enter implicit barrier of do 0: exit implicit barrier of do 0: exit for 0: enter implicit barrier of parallel 0: exit implicit barrier of parallel 0: end parallel 0: join parallel 0: finalize eztrace-1.1-7/extlib/opari2/test/data/jacobi/PaxHeaders.7332/F0000644000000000000000000000013112537532722020550 xustar0029 mtime=1434367442.75182166 30 atime=1508162367.741908015 30 ctime=1508162367.613896836 eztrace-1.1-7/extlib/opari2/test/data/jacobi/F/0000755000175000017500000000000012537532722022015 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/test/data/jacobi/F/PaxHeaders.7332/jacobi.F900000644000000000000000000000013112537514551022334 xustar0030 mtime=1434360169.060487273 29 atime=1507797543.82288879 30 ctime=1508162367.609896486 eztrace-1.1-7/extlib/opari2/test/data/jacobi/F/jacobi.F900000644000175000017500000001013512537514551023524 0ustar00trahaytrahay00000000000000module JacobiMod use VariableDef implicit none contains subroutine Jacobi(myData) implicit none !******************************************************************** ! Subroutine HelmholtzJ * ! Solves poisson equation on rectangular grid assuming : * ! (1) Uniform discretization in each direction, and * ! (2) Dirichlect boundary conditions * ! Jacobi method is used in this routine * ! * ! Input : n,m Number of grid points in the X/Y directions * ! dx,dy Grid spacing in the X/Y directions * ! alpha Helmholtz eqn. coefficient * ! omega Relaxation factor * ! myData%afF(n,m) Right hand side function * ! myData%afU(n,m) Dependent variable/Solution * ! tol Tolerance for iterative solver * ! maxit Maximum number of iterations * ! * ! Output : myData%afU(n,m) - Solution * !******************************************************************** !.. Formal Arguments .. type(JacobiData), intent(inout) :: myData !.. Local Scalars .. integer :: i, j, iErr double precision :: ax, ay, b, residual, fLRes, tmpResd !.. Local Arrays .. double precision, allocatable :: uold(:,:) !.. Intrinsic Functions .. intrinsic DBLE, SQRT allocate(uold (0 : myData%iCols -1, 0 : myData%iRows -1)) ! ... Executable Statements ... ! Initialize coefficients if (allocated(uold)) then ax = 1.0d0 / (myData%fDx * myData%fDx) ! X-direction coef ay = 1.0d0 / (myData%fDx * myData%fDx) ! Y-direction coef b = -2.0d0 * (ax + ay) - myData%fAlpha ! Central coeff residual = 10.0d0 * myData%fTolerance do while (myData%iIterCount < myData%iIterMax .and. residual > myData%fTolerance) residual = 0.0d0 ! Copy new solution into old !$omp parallel private(fLRes, tmpResd, i) !$omp do do j = 1, myData%iRows - 2 do i = 1, myData%iCols - 2 uold(i, j) = myData%afU(i, j) end do end do !$omp end do !$omp do reduction(+:residual) ! Compute stencil, residual, & update do j = myData%iRowFirst + 1, myData%iRowLast - 1 do i = 1, myData%iCols - 2 ! Evaluate residual fLRes = (ax * (uold(i-1, j) + uold(i+1, j)) & + ay * (uold(i, j-1) + uold(i, j+1)) & + b * uold(i, j) - myData%afF(i, j)) / b ! Update solution myData%afU(i, j) = uold(i, j) - myData%fRelax * fLRes ! Accumulate residual error residual = residual + fLRes * fLRes end do end do !$omp end do !$omp end parallel ! Error check myData%iIterCount = myData%iIterCount + 1 residual = SQRT(residual) / DBLE(myData%iCols * myData%iRows) ! End iteration loop end do myData%fResidual = residual deallocate(uold) else write (*,*) 'Error: cant allocate memory' call Finish(myData) stop end if end subroutine Jacobi end module JacobiMod eztrace-1.1-7/extlib/opari2/test/data/jacobi/F/PaxHeaders.7332/jacobi_test_2.out0000644000000000000000000000013112537514551024065 xustar0030 mtime=1434360169.060487273 29 atime=1507797543.82288879 30 ctime=1508162367.609896486 eztrace-1.1-7/extlib/opari2/test/data/jacobi/F/jacobi_test_2.out0000644000175000017500000000330612537514551025257 0ustar00trahaytrahay00000000000000 2: begin parallel 2: enter for 2: enter implicit barrier of paralleldo 2: exit implicit barrier of paralleldo 2: exit for 2: end parallel 2: begin parallel 2: enter for 2: enter implicit barrier of do 2: exit implicit barrier of do 2: exit for 2: enter for 2: enter implicit barrier of do 2: exit implicit barrier of do 2: exit for 2: enter implicit barrier of parallel 2: exit implicit barrier of parallel 2: end parallel 2: begin parallel 2: enter for 2: enter implicit barrier of do 2: exit implicit barrier of do 2: exit for 2: enter for 2: enter implicit barrier of do 2: exit implicit barrier of do 2: exit for 2: enter implicit barrier of parallel 2: exit implicit barrier of parallel 2: end parallel 2: begin parallel 2: enter for 2: enter implicit barrier of do 2: exit implicit barrier of do 2: exit for 2: enter for 2: enter implicit barrier of do 2: exit implicit barrier of do 2: exit for 2: enter implicit barrier of parallel 2: exit implicit barrier of parallel 2: end parallel 2: begin parallel 2: enter for 2: enter implicit barrier of do 2: exit implicit barrier of do 2: exit for 2: enter for 2: enter implicit barrier of do 2: exit implicit barrier of do 2: exit for 2: enter implicit barrier of parallel 2: exit implicit barrier of parallel 2: end parallel 2: begin parallel 2: enter for 2: enter implicit barrier of do 2: exit implicit barrier of do 2: exit for 2: enter for 2: enter implicit barrier of do 2: exit implicit barrier of do 2: exit for 2: enter implicit barrier of parallel 2: exit implicit barrier of parallel 2: end parallel eztrace-1.1-7/extlib/opari2/test/data/jacobi/F/PaxHeaders.7332/main.F900000644000000000000000000000013112537514551022031 xustar0030 mtime=1434360169.060487273 29 atime=1507797543.82288879 30 ctime=1508162367.613896836 eztrace-1.1-7/extlib/opari2/test/data/jacobi/F/main.F900000644000175000017500000001713612537514551023231 0ustar00trahaytrahay00000000000000program MAIN !*********************************************************************** ! program to solve a finite difference * ! discretization of Helmholtz equation : * ! (d2/dx2)u + (d2/dy2)u - alpha u = f * ! using Jacobi iterative method. * ! * ! Modified: Abdelali Malih, Aachen University (RWTH), 2007 * ! Modified: Sanjiv Shah, Kuck and Associates, Inc. (KAI), 1998 * ! Author : Joseph Robicheaux, Kuck and Associates, Inc. (KAI), 1998 * ! * ! Directives are used in this code to achieve paralleism. * ! All do loops are parallized with default 'static' scheduling. * ! * ! Input : n - grid dimension in x direction * ! m - grid dimension in y direction * ! alpha - Helmholtz constant (always greater than 0.0) * ! tol - error tolerance for iterative solver * ! relax - Successice over relaxation parameter * ! mits - Maximum iterations for iterative solver * ! * ! On output * ! : u(n,m) - Dependent variable (solutions) * ! : f(n,m) - Right hand side function * !*********************************************************************** use VariableDef use JacobiMod #ifdef _OPENMP use omp_lib #endif implicit none double precision get_wtime TYPE(JacobiData) :: myData ! sets default values or reads from stdin ! * inits MPI and OpenMP if needed ! * distribute MPI data, calculate MPI bounds ! */ call Init(mydata) if ( allocated(myData%afU) .and. allocated(myData%afF) ) then ! /* matrix init */ call InitializeMatrix(myData) ! /* starting timer */ mydata%fTimeStart = get_wtime() ! /* running calculations */ call Jacobi(myData) ! /* stopping timer */ mydata%fTimeStop = get_wtime() ! /* error checking */ call CheckError(myData) ! /* print result summary */ call PrintResults(myData) else write (*,*) " Memory allocation failed ...\n" end if ! /* cleanup */ call Finish(myData) end program MAIN subroutine Init (myData) use VariableDef use omp_lib implicit none type(JacobiData), intent(inout) :: myData character(len=8) :: env = ' ' integer :: ITERATIONS = 5 integer :: iErr, i call get_environment_variable("ITERATIONS", env) if (len_trim(env) > 0) then read(env,*,iostat=iErr) i if ((iErr == 0) .and. (i > 0)) then ITERATIONS=i else print*, "Ignoring ITERATIONS=", env endif endif #ifdef _OPENMP write (6,*) 'Jacobi', omp_get_max_threads(), 'OpenMP-', _OPENMP, ' thread(s)' #else write (6,*) 'Jacobi (serial)' #endif !/* default medium */ myData%iCols = 2000 myData%iRows = 2000 myData%fAlpha = 0.8 myData%fRelax = 1.0 myData%fTolerance = 1e-10 myData%iIterMax = ITERATIONS write (*,327) "-> matrix size: ", myData%iCols, myData%iRows write (*,329) "-> alpha: " , myData%fAlpha write (*,329) "-> relax: ", myData%fRelax write (*,329) "-> tolerance: ", myData%fTolerance write (*,328) "-> iterations: ", myData%iIterMax flush(6) 327 format (A22, I10, ' x ', I10) 328 format (A22, I10) 329 format (A22, F10.6) ! /* MPI values, set to defaults to avoid data inconsistency */ myData%iMyRank = 0 myData%iNumProcs = 1 myData%iRowFirst = 0 myData%iRowLast = myData%iRows - 1 ! /* memory allocation for serial & omp */ allocate(myData%afU (0 : myData%iCols -1, 0 : myData%iRows -1)) allocate(myData%afF (0 : myData%iCols -1, 0 : myData%iRows -1)) ! /* calculate dx and dy */ myData%fDx = 2.0d0 / DBLE(myData%iCols - 1) myData%fDy = 2.0d0 / DBLE(myData%iRows - 1) myData%iIterCount = 0 end subroutine Init subroutine InitializeMatrix (myData) !********************************************************************* ! Initializes data * ! Assumes exact solution is u(x,y) = (1-x^2)*(1-y^2) * ! * !********************************************************************* use VariableDef implicit none type(JacobiData), intent(inout) :: myData !.. Local Scalars .. integer :: i, j, xx, yy !.. Intrinsic Functions .. intrinsic DBLE ! Initilize initial condition and RHS !$omp parallel do private (j, i, xx, yy) do j = myData%iRowFirst, myData%iRowLast do i = 0, myData%iCols -1 xx = INT(-1.0 + myData%fDx*DBLE(i)) ! -1 < x < 1 yy = INT(-1.0 + myData%fDy*DBLE(j)) ! -1 < y < 1 myData%afU(i, j) = 0.0d0 myData%afF(i, j) = - myData%fAlpha * (1.0d0 - DBLE(xx*xx)) & * (1.0d0 - DBLE(yy*yy)) - 2.0d0 * (1.0d0 - DBLE(xx*xx)) & - 2.0d0 * (1.0d0 - DBLE(yy*yy)) end do end do !$omp end parallel do end subroutine InitializeMatrix subroutine Finish(myData) use VariableDef implicit none integer :: iErr type(JacobiData), intent(inout) :: myData deallocate (myData%afU) deallocate (myData%afF) end subroutine Finish subroutine PrintResults(myData) use VariableDef implicit none type(JacobiData), intent(inout) :: myData if (myData%iMyRank == 0) then write (*,328) " Number of iterations : ", myData%iIterCount write (*,329) " Residual : ", myData%fResidual write (*,329) " Solution Error : ", myData%fError write (*,330) " Elapsed Time : ", & myData%fTimeStop - myData%fTimeStart write (*,330) " MFlops/s : ", & 0.000013 * DBLE (myData%iIterCount) & * DBLE((myData%iCols - 2) * (myData%iRows - 2)) & / (myData%fTimeStop - myData%fTimeStart) flush(6) 328 format (A, I8) 329 format (A, F15.12) 330 format (A, F15.6) end if end subroutine PrintResults subroutine CheckError(myData) use VariableDef implicit none type(JacobiData), intent(inout) :: myData !.. Local Scalars .. integer :: i, j, iErr double precision :: error, temp, xx, yy !.. Intrinsic Functions .. intrinsic DBLE, SQRT ! ... Executable Statements ... error = 0.0d0 do j = myData%iRowFirst, myData%iRowLast do i = 0, myData%iCols -1 xx = -1.0d0 + myData%fDx * DBLE(i) yy = -1.0d0 + myData%fDy * DBLE(j) temp = myData%afU(i, j) - (1.0d0-xx*xx)*(1.0d0-yy*yy) error = error + temp*temp end do end do myData%fError = sqrt(error) / DBLE(myData%iCols * myData%iRows) end subroutine CheckError double precision function get_wtime() #ifdef _OPENMP use omp_lib get_wtime = omp_get_wtime() #else real, dimension(2) :: tarray get_wtime = dtime(tarray) #endif return end function get_wtime eztrace-1.1-7/extlib/opari2/test/data/jacobi/F/PaxHeaders.7332/jacobi_test_3.out0000644000000000000000000000013112537514551024066 xustar0030 mtime=1434360169.060487273 29 atime=1507797543.82288879 30 ctime=1508162367.589894738 eztrace-1.1-7/extlib/opari2/test/data/jacobi/F/jacobi_test_3.out0000644000175000017500000000330612537514551025260 0ustar00trahaytrahay00000000000000 3: begin parallel 3: enter for 3: enter implicit barrier of paralleldo 3: exit implicit barrier of paralleldo 3: exit for 3: end parallel 3: begin parallel 3: enter for 3: enter implicit barrier of do 3: exit implicit barrier of do 3: exit for 3: enter for 3: enter implicit barrier of do 3: exit implicit barrier of do 3: exit for 3: enter implicit barrier of parallel 3: exit implicit barrier of parallel 3: end parallel 3: begin parallel 3: enter for 3: enter implicit barrier of do 3: exit implicit barrier of do 3: exit for 3: enter for 3: enter implicit barrier of do 3: exit implicit barrier of do 3: exit for 3: enter implicit barrier of parallel 3: exit implicit barrier of parallel 3: end parallel 3: begin parallel 3: enter for 3: enter implicit barrier of do 3: exit implicit barrier of do 3: exit for 3: enter for 3: enter implicit barrier of do 3: exit implicit barrier of do 3: exit for 3: enter implicit barrier of parallel 3: exit implicit barrier of parallel 3: end parallel 3: begin parallel 3: enter for 3: enter implicit barrier of do 3: exit implicit barrier of do 3: exit for 3: enter for 3: enter implicit barrier of do 3: exit implicit barrier of do 3: exit for 3: enter implicit barrier of parallel 3: exit implicit barrier of parallel 3: end parallel 3: begin parallel 3: enter for 3: enter implicit barrier of do 3: exit implicit barrier of do 3: exit for 3: enter for 3: enter implicit barrier of do 3: exit implicit barrier of do 3: exit for 3: enter implicit barrier of parallel 3: exit implicit barrier of parallel 3: end parallel eztrace-1.1-7/extlib/opari2/test/data/jacobi/F/PaxHeaders.7332/jacobi_test_1.out0000644000000000000000000000013112537514551024064 xustar0030 mtime=1434360169.060487273 29 atime=1507797543.82288879 30 ctime=1508162367.597895437 eztrace-1.1-7/extlib/opari2/test/data/jacobi/F/jacobi_test_1.out0000644000175000017500000000330612537514551025256 0ustar00trahaytrahay00000000000000 1: begin parallel 1: enter for 1: enter implicit barrier of paralleldo 1: exit implicit barrier of paralleldo 1: exit for 1: end parallel 1: begin parallel 1: enter for 1: enter implicit barrier of do 1: exit implicit barrier of do 1: exit for 1: enter for 1: enter implicit barrier of do 1: exit implicit barrier of do 1: exit for 1: enter implicit barrier of parallel 1: exit implicit barrier of parallel 1: end parallel 1: begin parallel 1: enter for 1: enter implicit barrier of do 1: exit implicit barrier of do 1: exit for 1: enter for 1: enter implicit barrier of do 1: exit implicit barrier of do 1: exit for 1: enter implicit barrier of parallel 1: exit implicit barrier of parallel 1: end parallel 1: begin parallel 1: enter for 1: enter implicit barrier of do 1: exit implicit barrier of do 1: exit for 1: enter for 1: enter implicit barrier of do 1: exit implicit barrier of do 1: exit for 1: enter implicit barrier of parallel 1: exit implicit barrier of parallel 1: end parallel 1: begin parallel 1: enter for 1: enter implicit barrier of do 1: exit implicit barrier of do 1: exit for 1: enter for 1: enter implicit barrier of do 1: exit implicit barrier of do 1: exit for 1: enter implicit barrier of parallel 1: exit implicit barrier of parallel 1: end parallel 1: begin parallel 1: enter for 1: enter implicit barrier of do 1: exit implicit barrier of do 1: exit for 1: enter for 1: enter implicit barrier of do 1: exit implicit barrier of do 1: exit for 1: enter implicit barrier of parallel 1: exit implicit barrier of parallel 1: end parallel eztrace-1.1-7/extlib/opari2/test/data/jacobi/F/PaxHeaders.7332/VariableDef.f900000644000000000000000000000013212537514551023312 xustar0030 mtime=1434360169.056487323 30 atime=1507797543.826888919 30 ctime=1508162367.589894738 eztrace-1.1-7/extlib/opari2/test/data/jacobi/F/VariableDef.f900000644000175000017500000000216412537514551024504 0ustar00trahaytrahay00000000000000module VariableDef implicit none TYPE JacobiData integer :: iRows integer :: iCols integer :: iRowFirst integer :: iRowLast integer :: iIterMax double precision :: fAlpha double precision :: fRelax double precision :: fTolerance ! /* calculated dx & dy */ double precision :: fDx double precision :: fDy ! /* pointers to the allocated memory */ double precision, allocatable :: afU(:,:) double precision, allocatable :: afF(:,:) ! /* start and end timestamps */ double precision :: fTimeStart double precision :: fTimeStop ! /* calculated residual (output jacobi) */ double precision :: fResidual ! /* effective interation count (output jacobi) */ integer :: iIterCount ! /* calculated error (output error_check) */ double precision :: fError ! /* MPI-Variables */ integer :: iMyRank !/* current process rank (number) */ integer :: iNumProcs !/* how many processes */ END TYPE JacobiData end module VariableDef eztrace-1.1-7/extlib/opari2/test/data/jacobi/F/PaxHeaders.7332/jacobi_test_0.out0000644000000000000000000000013212537514551024064 xustar0030 mtime=1434360169.060487273 30 atime=1507797543.826888919 30 ctime=1508162367.601895787 eztrace-1.1-7/extlib/opari2/test/data/jacobi/F/jacobi_test_0.out0000644000175000017500000000371612537514551025262 0ustar00trahaytrahay00000000000000 0: init 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of paralleldo 0: exit implicit barrier of paralleldo 0: exit for 0: end parallel 0: join parallel 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of do 0: exit implicit barrier of do 0: exit for 0: enter for 0: enter implicit barrier of do 0: exit implicit barrier of do 0: exit for 0: enter implicit barrier of parallel 0: exit implicit barrier of parallel 0: end parallel 0: join parallel 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of do 0: exit implicit barrier of do 0: exit for 0: enter for 0: enter implicit barrier of do 0: exit implicit barrier of do 0: exit for 0: enter implicit barrier of parallel 0: exit implicit barrier of parallel 0: end parallel 0: join parallel 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of do 0: exit implicit barrier of do 0: exit for 0: enter for 0: enter implicit barrier of do 0: exit implicit barrier of do 0: exit for 0: enter implicit barrier of parallel 0: exit implicit barrier of parallel 0: end parallel 0: join parallel 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of do 0: exit implicit barrier of do 0: exit for 0: enter for 0: enter implicit barrier of do 0: exit implicit barrier of do 0: exit for 0: enter implicit barrier of parallel 0: exit implicit barrier of parallel 0: end parallel 0: join parallel 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of do 0: exit implicit barrier of do 0: exit for 0: enter for 0: enter implicit barrier of do 0: exit implicit barrier of do 0: exit for 0: enter implicit barrier of parallel 0: exit implicit barrier of parallel 0: end parallel 0: join parallel 0: finalize eztrace-1.1-7/extlib/opari2/test/data/jacobi/PaxHeaders.7332/C0000644000000000000000000000013212537532722020546 xustar0030 mtime=1434367442.767821457 30 atime=1508162367.741908015 30 ctime=1508162367.621897533 eztrace-1.1-7/extlib/opari2/test/data/jacobi/C/0000755000175000017500000000000012537532722022012 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/test/data/jacobi/C/PaxHeaders.7332/jacobi.c0000644000000000000000000000013112537514551022215 xustar0029 mtime=1434360169.03248763 30 atime=1507797543.826888919 30 ctime=1508162367.617897184 eztrace-1.1-7/extlib/opari2/test/data/jacobi/C/jacobi.c0000644000175000017500000000645612537514551023420 0ustar00trahaytrahay00000000000000/* ****************************************************************** * Subroutine HelmholtzJ * Solves poisson equation on rectangular grid assuming : * (1) Uniform discretization in each direction, and * (2) Dirichlect boundary conditions * * Jacobi method is used in this routine * * Input : n,m Number of grid points in the X/Y directions * dx,dy Grid spacing in the X/Y directions * alpha Helmholtz eqn. coefficient * omega Relaxation factor * f(n,m) Right hand side function * u(n,m) Dependent variable/Solution * tolerance Tolerance for iterative solver * maxit Maximum number of iterations * * Output : u(n,m) - Solution ***************************************************************** */ #include #include #include #include "jacobi.h" #define U( j, i ) afU[ ( ( j ) - data->iRowFirst ) * data->iCols + ( i ) ] #define F( j, i ) afF[ ( ( j ) - data->iRowFirst ) * data->iCols + ( i ) ] #define UOLD( j, i ) uold[ ( ( j ) - data->iRowFirst ) * data->iCols + ( i ) ] void Jacobi( struct JacobiData* data ) { /*use local pointers for performance reasons*/ double* afU, * afF; int i, j; double fLRes; double ax, ay, b, residual, tmpResd; double* uold = ( double* )malloc( data->iCols * data->iRows * sizeof( double ) ); afU = data->afU; afF = data->afF; if ( uold ) { ax = 1.0 / ( data->fDx * data->fDx ); /* X-direction coef */ ay = 1.0 / ( data->fDy * data->fDy ); /* Y_direction coef */ b = -2.0 * ( ax + ay ) - data->fAlpha; /* Central coeff */ residual = 10.0 * data->fTolerance; while ( data->iIterCount < data->iIterMax && residual > data->fTolerance ) { residual = 0.0; /* copy new solution into old */ #pragma omp parallel { #pragma omp for private(j, i) for ( j = 1; j < data->iRows - 1; j++ ) { for ( i = 1; i < data->iCols - 1; i++ ) { UOLD( j, i ) = U( j, i ); } } /* compute stencil, residual and update */ #pragma omp for private(j, i, fLRes) reduction(+:residual) for ( j = data->iRowFirst + 1; j <= data->iRowLast - 1; j++ ) { for ( i = 1; i <= data->iCols - 2; i++ ) { fLRes = ( ax * ( UOLD( j, i - 1 ) + UOLD( j, i + 1 ) ) + ay * ( UOLD( j - 1, i ) + UOLD( j + 1, i ) ) + b * UOLD( j, i ) - F( j, i ) ) / b; /* update solution */ U( j, i ) = UOLD( j, i ) - data->fRelax * fLRes; /* accumulate residual error */ residual += fLRes * fLRes; } } } /* end omp parallel */ /* error check */ ( data->iIterCount )++; residual = sqrt( residual ) / ( data->iCols * data->iRows ); } /* while */ data->fResidual = residual; free( uold ); } else { fprintf( stderr, "Error: cant allocate memory\n" ); Finish( data ); exit( 1 ); } } eztrace-1.1-7/extlib/opari2/test/data/jacobi/C/PaxHeaders.7332/jacobi_test_2.out0000644000000000000000000000013112537514551024062 xustar0029 mtime=1434360169.03248763 30 atime=1507797543.826888919 30 ctime=1508162367.617897184 eztrace-1.1-7/extlib/opari2/test/data/jacobi/C/jacobi_test_2.out0000644000175000017500000000333412537514551025255 0ustar00trahaytrahay00000000000000 2: begin parallel 2: enter for 2: enter implicit barrier of parallelfor 2: exit implicit barrier of parallelfor 2: exit for 2: end parallel 2: begin parallel 2: enter for 2: enter implicit barrier of for 2: exit implicit barrier of for 2: exit for 2: enter for 2: enter implicit barrier of for 2: exit implicit barrier of for 2: exit for 2: enter implicit barrier of parallel 2: exit implicit barrier of parallel 2: end parallel 2: begin parallel 2: enter for 2: enter implicit barrier of for 2: exit implicit barrier of for 2: exit for 2: enter for 2: enter implicit barrier of for 2: exit implicit barrier of for 2: exit for 2: enter implicit barrier of parallel 2: exit implicit barrier of parallel 2: end parallel 2: begin parallel 2: enter for 2: enter implicit barrier of for 2: exit implicit barrier of for 2: exit for 2: enter for 2: enter implicit barrier of for 2: exit implicit barrier of for 2: exit for 2: enter implicit barrier of parallel 2: exit implicit barrier of parallel 2: end parallel 2: begin parallel 2: enter for 2: enter implicit barrier of for 2: exit implicit barrier of for 2: exit for 2: enter for 2: enter implicit barrier of for 2: exit implicit barrier of for 2: exit for 2: enter implicit barrier of parallel 2: exit implicit barrier of parallel 2: end parallel 2: begin parallel 2: enter for 2: enter implicit barrier of for 2: exit implicit barrier of for 2: exit for 2: enter for 2: enter implicit barrier of for 2: exit implicit barrier of for 2: exit for 2: enter implicit barrier of parallel 2: exit implicit barrier of parallel 2: end parallel eztrace-1.1-7/extlib/opari2/test/data/jacobi/C/PaxHeaders.7332/main.c0000644000000000000000000000013112537514551021712 xustar0029 mtime=1434360169.03248763 30 atime=1507797543.826888919 30 ctime=1508162367.617897184 eztrace-1.1-7/extlib/opari2/test/data/jacobi/C/main.c0000644000175000017500000001346312537514551023111 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ #include #include #include #include #ifdef _OPENMP #include #else #include #endif #include "jacobi.h" #define U( j, i ) data->afU[ ( ( j ) - data->iRowFirst ) * data->iCols + ( i ) ] #define F( j, i ) data->afF[ ( ( j ) - data->iRowFirst ) * data->iCols + ( i ) ] /* * setting values, init mpi, omp etc */ void Init( struct JacobiData* data, int* argc, char** argv ) { int i; int block_lengths[ 8 ]; int ITERATIONS = 5; char* env = getenv( "ITERATIONS" ); if ( env ) { int iterations = atoi( env ); if ( iterations > 0 ) { ITERATIONS = iterations; } else { printf( "Ignoring invalid ITERATIONS=%s!\n", env ); } } #ifdef _OPENMP printf( "Jacobi %d OpenMP-%u thread(s)\n", omp_get_max_threads(), _OPENMP ); #else printf( "Jacobi (serial)\n" ); #endif /* default medium */ data->iCols = 2000; data->iRows = 2000; data->fAlpha = 0.8; data->fRelax = 1.0; data->fTolerance = 1e-10; data->iIterMax = ITERATIONS; printf( "\n-> matrix size: %dx%d" "\n-> alpha: %f" "\n-> relax: %f" "\n-> tolerance: %f" "\n-> iterations: %d \n\n", data->iCols, data->iRows, data->fAlpha, data->fRelax, data->fTolerance, data->iIterMax ); /* MPI values, set to defaults to avoid data inconsistency */ data->iMyRank = 0; data->iNumProcs = 1; data->iRowFirst = 0; data->iRowLast = data->iRows - 1; /* memory allocation for serial & omp */ data->afU = ( double* )malloc( data->iRows * data->iCols * sizeof( double ) ); data->afF = ( double* )malloc( data->iRows * data->iCols * sizeof( double ) ); /* calculate dx and dy */ data->fDx = 2.0 / ( data->iCols - 1 ); data->fDy = 2.0 / ( data->iRows - 1 ); data->iIterCount = 0; return; } /* * final cleanup routines */ void Finish( struct JacobiData* data ) { free( data->afU ); free( data->afF ); return; } /* * print result summary */ void PrintResults( const struct JacobiData* data ) { if ( data->iMyRank == 0 ) { printf( " Number of iterations : %d\n", data->iIterCount ); printf( " Residual : %le\n", data->fResidual ); printf( " Solution Error : %1.12lf\n", data->fError ); printf( " Elapsed Time : %5.7lf\n", data->fTimeStop - data->fTimeStart ); printf( " MFlops : %6.6lf\n", 0.000013 * data->iIterCount * ( data->iCols - 2 ) * ( data->iRows - 2 ) / ( data->fTimeStop - data->fTimeStart ) ); } return; } /* * Initializes matrix * Assumes exact solution is u(x,y) = (1-x^2)*(1-y^2) */ void InitializeMatrix( struct JacobiData* data ) { int i, j, xx, yy, xx2, yy2; /* Initialize initial condition and RHS */ #pragma omp parallel for private(i, j, xx, yy, xx2, yy2) for ( j = data->iRowFirst; j <= data->iRowLast; j++ ) { for ( i = 0; i < data->iCols; i++ ) { xx = ( int )( -1.0 + data->fDx * i ); yy = ( int )( -1.0 + data->fDy * j ); xx2 = xx * xx; yy2 = yy * yy; U( j, i ) = 0.0; F( j, i ) = -data->fAlpha * ( 1.0 - xx2 ) * ( 1.0 - yy2 ) + 2.0 * ( -2.0 + xx2 + yy2 ); } } } /* * Checks error between numerical and exact solution */ void CheckError( struct JacobiData* data ) { double error = 0.0; int i, j; double xx, yy, temp; for ( j = data->iRowFirst; j <= data->iRowLast; j++ ) { if ( ( data->iMyRank != 0 && j == data->iRowFirst ) || ( data->iMyRank != data->iNumProcs - 1 && j == data->iRowLast ) ) { continue; } for ( i = 0; i < data->iCols; i++ ) { xx = -1.0 + data->fDx * i; yy = -1.0 + data->fDy * j; temp = U( j, i ) - ( 1.0 - xx * xx ) * ( 1.0 - yy * yy ); error += temp * temp; } } data->fError = sqrt( error ) / ( data->iCols * data->iRows ); return; } double get_wtime() { #ifdef _OPENMP return omp_get_wtime(); #else struct timeval tp; gettimeofday( &tp, 0 ); return tp.tv_sec + ( tp.tv_usec * 1.0e-6 ); #endif } int main( int argc, char** argv ) { int retVal = 0; /* return value */ struct JacobiData myData; /* sets default values or reads from stdin * inits MPI and OpenMP if needed * distribute MPI data, calculate MPI bounds */ Init( &myData, &argc, argv ); if ( myData.afU && myData.afF ) { /* matrix init */ InitializeMatrix( &myData ); /* starting timer */ myData.fTimeStart = get_wtime(); /* running calculations */ Jacobi( &myData ); /* stopping timer */ myData.fTimeStop = get_wtime(); /* error checking */ CheckError( &myData ); /* print result summary */ PrintResults( &myData ); } else { printf( " Memory allocation failed ...\n" ); retVal = -1; } /* cleanup */ Finish( &myData ); return retVal; } eztrace-1.1-7/extlib/opari2/test/data/jacobi/C/PaxHeaders.7332/jacobi_test_3.out0000644000000000000000000000013112537514551024063 xustar0029 mtime=1434360169.03248763 30 atime=1507797543.826888919 30 ctime=1508162367.613896836 eztrace-1.1-7/extlib/opari2/test/data/jacobi/C/jacobi_test_3.out0000644000175000017500000000333412537514551025256 0ustar00trahaytrahay00000000000000 3: begin parallel 3: enter for 3: enter implicit barrier of parallelfor 3: exit implicit barrier of parallelfor 3: exit for 3: end parallel 3: begin parallel 3: enter for 3: enter implicit barrier of for 3: exit implicit barrier of for 3: exit for 3: enter for 3: enter implicit barrier of for 3: exit implicit barrier of for 3: exit for 3: enter implicit barrier of parallel 3: exit implicit barrier of parallel 3: end parallel 3: begin parallel 3: enter for 3: enter implicit barrier of for 3: exit implicit barrier of for 3: exit for 3: enter for 3: enter implicit barrier of for 3: exit implicit barrier of for 3: exit for 3: enter implicit barrier of parallel 3: exit implicit barrier of parallel 3: end parallel 3: begin parallel 3: enter for 3: enter implicit barrier of for 3: exit implicit barrier of for 3: exit for 3: enter for 3: enter implicit barrier of for 3: exit implicit barrier of for 3: exit for 3: enter implicit barrier of parallel 3: exit implicit barrier of parallel 3: end parallel 3: begin parallel 3: enter for 3: enter implicit barrier of for 3: exit implicit barrier of for 3: exit for 3: enter for 3: enter implicit barrier of for 3: exit implicit barrier of for 3: exit for 3: enter implicit barrier of parallel 3: exit implicit barrier of parallel 3: end parallel 3: begin parallel 3: enter for 3: enter implicit barrier of for 3: exit implicit barrier of for 3: exit for 3: enter for 3: enter implicit barrier of for 3: exit implicit barrier of for 3: exit for 3: enter implicit barrier of parallel 3: exit implicit barrier of parallel 3: end parallel eztrace-1.1-7/extlib/opari2/test/data/jacobi/C/PaxHeaders.7332/jacobi_test_1.out0000644000000000000000000000013112537514551024061 xustar0029 mtime=1434360169.03248763 30 atime=1507797543.826888919 30 ctime=1508162367.613896836 eztrace-1.1-7/extlib/opari2/test/data/jacobi/C/jacobi_test_1.out0000644000175000017500000000333412537514551025254 0ustar00trahaytrahay00000000000000 1: begin parallel 1: enter for 1: enter implicit barrier of parallelfor 1: exit implicit barrier of parallelfor 1: exit for 1: end parallel 1: begin parallel 1: enter for 1: enter implicit barrier of for 1: exit implicit barrier of for 1: exit for 1: enter for 1: enter implicit barrier of for 1: exit implicit barrier of for 1: exit for 1: enter implicit barrier of parallel 1: exit implicit barrier of parallel 1: end parallel 1: begin parallel 1: enter for 1: enter implicit barrier of for 1: exit implicit barrier of for 1: exit for 1: enter for 1: enter implicit barrier of for 1: exit implicit barrier of for 1: exit for 1: enter implicit barrier of parallel 1: exit implicit barrier of parallel 1: end parallel 1: begin parallel 1: enter for 1: enter implicit barrier of for 1: exit implicit barrier of for 1: exit for 1: enter for 1: enter implicit barrier of for 1: exit implicit barrier of for 1: exit for 1: enter implicit barrier of parallel 1: exit implicit barrier of parallel 1: end parallel 1: begin parallel 1: enter for 1: enter implicit barrier of for 1: exit implicit barrier of for 1: exit for 1: enter for 1: enter implicit barrier of for 1: exit implicit barrier of for 1: exit for 1: enter implicit barrier of parallel 1: exit implicit barrier of parallel 1: end parallel 1: begin parallel 1: enter for 1: enter implicit barrier of for 1: exit implicit barrier of for 1: exit for 1: enter for 1: enter implicit barrier of for 1: exit implicit barrier of for 1: exit for 1: enter implicit barrier of parallel 1: exit implicit barrier of parallel 1: end parallel eztrace-1.1-7/extlib/opari2/test/data/jacobi/C/PaxHeaders.7332/jacobi.h0000644000000000000000000000013112537514551022222 xustar0029 mtime=1434360169.03248763 30 atime=1507797543.826888919 30 ctime=1508162367.621897533 eztrace-1.1-7/extlib/opari2/test/data/jacobi/C/jacobi.h0000644000175000017500000000167012537514551023416 0ustar00trahaytrahay00000000000000#ifndef _JACOBI_H #define _JACOBI_H struct JacobiData { /* input data */ int iRows; int iCols; int iRowFirst; int iRowLast; int iIterMax; double fAlpha; double fRelax; double fTolerance; /* calculated dx & dy */ double fDx; double fDy; /* pointers to the allocated memory */ double* afU; double* afF; /* start and end timestamps */ double fTimeStart; double fTimeStop; /* calculated residual (output jacobi) */ double fResidual; /* effective interation count (output jacobi) */ int iIterCount; /* calculated error (output error_check) */ double fError; /* MPI-Variables */ int iMyRank; /* current process rank (number) */ int iNumProcs; /* how many processes */ }; /* jacobi calculation routine */ void Jacobi( struct JacobiData* data ); /* final cleanup routines */ void Finish( struct JacobiData* data ); #endif eztrace-1.1-7/extlib/opari2/test/data/jacobi/C/PaxHeaders.7332/jacobi_test_0.out0000644000000000000000000000013112537514551024060 xustar0029 mtime=1434360169.03248763 30 atime=1507797543.826888919 30 ctime=1508162367.613896836 eztrace-1.1-7/extlib/opari2/test/data/jacobi/C/jacobi_test_0.out0000644000175000017500000000374412537514551025260 0ustar00trahaytrahay00000000000000 0: init 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of parallelfor 0: exit implicit barrier of parallelfor 0: exit for 0: end parallel 0: join parallel 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of for 0: exit implicit barrier of for 0: exit for 0: enter for 0: enter implicit barrier of for 0: exit implicit barrier of for 0: exit for 0: enter implicit barrier of parallel 0: exit implicit barrier of parallel 0: end parallel 0: join parallel 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of for 0: exit implicit barrier of for 0: exit for 0: enter for 0: enter implicit barrier of for 0: exit implicit barrier of for 0: exit for 0: enter implicit barrier of parallel 0: exit implicit barrier of parallel 0: end parallel 0: join parallel 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of for 0: exit implicit barrier of for 0: exit for 0: enter for 0: enter implicit barrier of for 0: exit implicit barrier of for 0: exit for 0: enter implicit barrier of parallel 0: exit implicit barrier of parallel 0: end parallel 0: join parallel 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of for 0: exit implicit barrier of for 0: exit for 0: enter for 0: enter implicit barrier of for 0: exit implicit barrier of for 0: exit for 0: enter implicit barrier of parallel 0: exit implicit barrier of parallel 0: end parallel 0: join parallel 0: fork parallel 0: begin parallel 0: enter for 0: enter implicit barrier of for 0: exit implicit barrier of for 0: exit for 0: enter for 0: enter implicit barrier of for 0: exit implicit barrier of for 0: exit for 0: enter implicit barrier of parallel 0: exit implicit barrier of parallel 0: end parallel 0: join parallel 0: finalize eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test7.f90.out0000644000000000000000000000013212617055645021411 xustar0030 mtime=1446796197.922458326 30 atime=1507797543.826888919 30 ctime=1508162367.561892293 eztrace-1.1-7/extlib/opari2/test/data/test7.f90.out0000644000175000017500000000636512617055645022612 0ustar00trahaytrahay00000000000000 #line 1 "test7.f90" ! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Tests user instrumentation directives. program test7 include 'test7.f90.opari.inc' call POMP2_Init() #line 22 "test7.f90" call POMP2_Off() #line 24 "test7.f90" call POMP2_Begin(pomp2_region_1) #line 26 "test7.f90" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_2,& pomp_if, pomp_num_threads, pomp2_old_task, & "62*regionType=parallel*sscl=test7.f90:27:27*escl=test7.f90:0:0**" ) #line 27 "test7.f90" !$omp parallel & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_2) #line 28 "test7.f90" i = 1 call POMP2_Implicit_barrier_enter(pomp2_region_2, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_2, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_2) #line 29 "test7.f90" !$omp end parallel call POMP2_Parallel_join(pomp2_region_2, pomp2_old_task) #line 30 "test7.f90" call POMP2_End(pomp2_region_1) #line 32 "test7.f90" call POMP2_On() #line 34 "test7.f90" #line 36 "test7.f90" !$omp parallel i = 2 !$omp end parallel #line 40 "test7.f90" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_3,& pomp_if, pomp_num_threads, pomp2_old_task, & "62*regionType=parallel*sscl=test7.f90:41:41*escl=test7.f90:0:0**" ) #line 41 "test7.f90" !$omp parallel & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_3) #line 42 "test7.f90" i = 3 call POMP2_Implicit_barrier_enter(pomp2_region_3, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_3, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_3) #line 43 "test7.f90" !$omp end parallel call POMP2_Parallel_join(pomp2_region_3, pomp2_old_task) #line 44 "test7.f90" call POMP2_Finalize() #line 46 "test7.f90" end program test7 subroutine POMP2_Init_regions_000() include 'test7.f90.opari.inc' call POMP2_Assign_handle( pomp2_region_1, & "81*regionType=region*sscl=test7.f90:25:25*escl=test7.f90:31:31*userRegionName=foo**" ) call POMP2_Assign_handle( pomp2_region_2, & "64*regionType=parallel*sscl=test7.f90:27:27*escl=test7.f90:29:29**" ) call POMP2_Assign_handle( pomp2_region_3, & "64*regionType=parallel*sscl=test7.f90:41:41*escl=test7.f90:43:43**" ) end eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test5.c.opari.inc.out0000644000000000000000000000013212617055645023114 xustar0030 mtime=1446796197.918458201 30 atime=1507797543.826888919 30 ctime=1508162367.525889149 eztrace-1.1-7/extlib/opari2/test/data/test5.c.opari.inc.out0000644000175000017500000000105412617055645024303 0ustar00trahaytrahay00000000000000#include #define POMP2_DLIST_00001 shared(pomp2_region_1) static POMP2_Region_handle pomp2_region_1 = NULL; #define POMP2_DLIST_00002 shared(pomp2_region_2) static POMP2_Region_handle pomp2_region_2 = NULL; void POMP2_Init_regions_000() { POMP2_Assign_handle( &pomp2_region_1, "84*regionType=parallelfor*sscl=test5.c:31:39*escl=test5.c:43:43*scheduleType=dynamic**" ); POMP2_Assign_handle( &pomp2_region_2, "107*regionType=parallelsections*sscl=test5.c:45:45*escl=test5.c:59:59*hasIf=1*hasNumThreads=1*hasReduction=1**" ); } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test1.f90.opari.inc.out0000644000000000000000000000013212617055645023264 xustar0030 mtime=1446796197.918458201 30 atime=1507797543.826888919 30 ctime=1508162367.461883559 eztrace-1.1-7/extlib/opari2/test/data/test1.f90.opari.inc.out0000644000175000017500000000106612617055645024456 0ustar00trahaytrahay00000000000000 INTEGER( KIND=8 ) :: pomp2_region_1 INTEGER( KIND=8 ) :: pomp2_region_2 INTEGER( KIND=8 ) :: pomp2_region_3 INTEGER( KIND=8 ) :: pomp2_region_4 integer ( kind=4 ) :: pomp2_lib_get_max_threads logical :: pomp2_test_lock integer ( kind=4 ) :: pomp2_test_nest_lock integer ( kind=8 ) :: pomp2_old_task, pomp2_new_task logical :: pomp_if integer ( kind=4 ) :: pomp_num_threads common /cb000/ pomp2_region_1,& pomp2_region_2,& pomp2_region_3,& pomp2_region_4 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test3.c0000644000000000000000000000013212617055645020423 xustar0030 mtime=1446796197.918458201 30 atime=1507797543.826888919 30 ctime=1508162367.501887053 eztrace-1.1-7/extlib/opari2/test/data/test3.c0000644000175000017500000000447012617055645021617 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * * Testfile for automated testing of OPARI2 * * @authors Bernd Mohr, Peter Philippen * * @brief Special tests for code blocks and nested parallel regions/loops. */ #include #ifdef _OPENMP #include #endif int main() { int i, j; int k = 0; #pragma omp parallel { #pragma omp for for (i=0; i<4; ++i) { k++; } } #pragma omp parallel #pragma omp for for (i=0; i<4; ++i) { k++; } #pragma omp parallel { #pragma omp master for (i=0; i<4; ++i) k++; } #pragma omp parallel { #pragma omp single for (i=0; i<4; ++i) k++; } #pragma omp parallel #pragma omp critical for (i=0; i<4; ++i) k++; // ***************************************** // * Testing of nested parallelism * // ***************************************** #pragma omp parallel { #pragma omp parallel { #pragma omp parallel { #pragma omp for nowait for (i=0; i<4; ++i) { printf("do %d\n", i); } } } } // ***************************************** // * Testing of nested for loops * // ***************************************** #pragma omp parallel { #pragma omp for nowait for (i=0; i<4; ++i) { for (j=0; j<4; ++j) { printf("do %d\n", i); } } #pragma omp for nowait for (i=0; i<4; ++i) { for (j=0; j<4; ++j) { for (k=0; k<4; ++k) { printf("do %d\n", i); } } } #pragma omp for nowait for (i=0; i<4; ++i) for (j=0; j<4; ++j) printf("do %d\n", i); #pragma omp for nowait for (i=0; i<4; ++i) for (j=0; j<4; ++j) for (k=0; k<4; ++k) printf("do %d\n", i); #pragma omp for nowait for (i=0; i<4; ++i) for (j=0; j<4; ++j) { printf("do %d\n", i); } } } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test1.f.opari.inc.out0000644000000000000000000000013212617055645023113 xustar0030 mtime=1446796197.918458201 30 atime=1507797543.826888919 30 ctime=1508162367.449882512 eztrace-1.1-7/extlib/opari2/test/data/test1.f.opari.inc.out0000644000175000017500000000112512617055645024301 0ustar00trahaytrahay00000000000000 INTEGER*8 pomp2_region_1 INTEGER*8 pomp2_region_2 INTEGER*8 pomp2_region_3 INTEGER*8 pomp2_region_4 INTEGER*8 pomp2_region_5 INTEGER*8 pomp2_region_6 integer*4 pomp2_lib_get_max_threads logical pomp2_test_lock integer*4 pomp2_test_nest_lock integer*8 pomp2_old_task, pomp2_new_task logical pomp_if integer*4 pomp_num_threads common /cb000/ pomp2_region_1, & pomp2_region_2, & pomp2_region_3, & pomp2_region_4, & pomp2_region_5, & pomp2_region_6 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test6.c.opari.inc.out0000644000000000000000000000013212617055645023115 xustar0030 mtime=1446796197.918458201 30 atime=1507797543.826888919 30 ctime=1508162367.545890896 eztrace-1.1-7/extlib/opari2/test/data/test6.c.opari.inc.out0000644000175000017500000000010212617055645024275 0ustar00trahaytrahay00000000000000#include void POMP2_Init_regions_000() { } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test4.f900000644000000000000000000000013212617055645020600 xustar0030 mtime=1446796197.918458201 30 atime=1507797543.826888919 30 ctime=1508162367.521888799 eztrace-1.1-7/extlib/opari2/test/data/test4.f900000644000175000017500000000236412617055645021774 0ustar00trahaytrahay00000000000000! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test the nowait and untied clauses. program test4 integer i real a(5,5), b(5,5), c(5,5) !$omp parallel write(*,*) "parallel" !$omp do do i=1,4 write(*,*) "do nowait",i enddo !$omp enddo nowait !$omp sections !$omp section write(*,*) "section nowait 1" !$omp section write(*,*) "section nowait 2" !$omp end sections nowait !$omp single write(*,*) "single nowait" !$omp end single nowait !$omp workshare a = b + c !$omp end workshare nowait !$omp task untied write(*,*) "task" !$omp end task !$omp end parallel end program test4 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test1_a.f900000644000000000000000000000013212617055645021075 xustar0030 mtime=1446796197.918458201 30 atime=1507797543.826888919 30 ctime=1508162367.473884607 eztrace-1.1-7/extlib/opari2/test/data/test1_a.f900000644000175000017500000000557112617055645022274 0ustar00trahaytrahay00000000000000! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test the parsers ability to insert a necessary include statement at the right places. module functions_module interface function if0(a, & ! ) a=b b ) ! end function integer(kind=4) :: if0, a end function if0 end interface interface subroutine is1(a) integer :: a end subroutine is1 end interface contains integer(kind=4) function mf0(a, & ! ) a=b b ) ! end function ! integer functionkind THIS IS TOO EVIL FOR NOW, WILL TAKE CARE OF LATER ! functionkind = 4 write (*,*) "function mf0" mf0 = 5 return end function mf0 subroutine ms0 write (*,*) "subroutine ms0" end subroutine ms0 end module mmm module module1 use functions_module contains subroutine r1() write (*,*) "Subroutine 1" call f1() end subroutine r1 end module module1 integer function f0() implicit & none double precision :: d write (*,*) "function f0" f0 = 5 return end function f0 subroutine s0 write (*,*) "subroutine s0" end subroutine s0 integer function f1(a) !interface use mmm integer :: a, result write (*,*) "function f1" f1 = a return end function f1 subroutine s1(a) integer :: a write (*,*) "subroutine s1" write (*,*) "keyword interface inside a string" call ss1() contains subroutine ss1() write (*,*) "subroutine ss1" end subroutine ss1 end subroutine s1 program otest use mmm use rename_test, bar => foo integer :: i, f0, f1, function function = 0 write (*,*) 'program otest' i = f0() i = f1(2) i = mf0() call s0 call s1(4) call ms0 end program otest eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test6.f900000644000000000000000000000013212617055645020602 xustar0030 mtime=1446796197.922458326 30 atime=1507797543.826888919 30 ctime=1508162367.549891245 eztrace-1.1-7/extlib/opari2/test/data/test6.f900000644000175000017500000000514012617055645021771 0ustar00trahaytrahay00000000000000! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test that the insertion of wrapper functions works correctly, but ONLY on supported functions. program test6 use omp_lib integer (kind=omp_lock_kind) lock1 integer (kind=omp_nest_lock_kind) lock2 integer (kind=omp_sched_kind) sched integer mod ! ************************************************** ! * Should be replaced by wrapper functions * ! * regardless of "distractions" * ! ************************************************** call omp_init_lock(lock1); call omp_init_nest_lock(lock2) call omp_set_lock(lock1); write(*,*) "omp_set_lock(lock1)" call omp_set_nest_lock(lock2) ! omp_set_nest_lock(lock2); call omp_unset_lock(lock1); !omp_unset_lock(lock1); call omp_unset_nest_lock(lock2) !$ mod = omp_test_lock(lock1) !$ mod = omp_test_nest_lock(lock2) !P$ mod = omp_test_lock(lock1) !P$ mod = omp_test_nest_lock(lock2) call omp_destroy_lock(lock1) call omp_destroy_nest_lock(lock2) ! ************************************************** ! * Not now, but planned for the future! * ! ************************************************** call omp_set_num_threads(4) call omp_set_dynamic(.true.) call omp_set_schedule(omp_sched_static, 1) call omp_set_nested(.true.) call omp_set_max_active_levels(2) ! ************************************************** ! * No replacement beyond this point! * ! ************************************************** ! call omp_init_lock(i) write(*,*) "omp_init_lock(i)", 'omp_init_lock(i)' ! call omp_init_lock(i) write(*,*) "omp_init_lock(i)""test", """omp_init_lock(i)", "omp_init_lock(i)""", """", """""""", & "omp_init_lock(i) ",& ! ",& " + call omp_init_lock(i)" ! call omp_init_lock(i) ! call omp_init_lock(i) ! call omp_init_lock(i) ; call omp_set_lock(i) ! write(*,*) "call omp_init_lock(i)" ; call omp_init_lock(i) !$C99 call omp_init_lock(i) !$DOMP call omp_init_lock(i) end program test6 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test1.c0000644000000000000000000000013212617055645020421 xustar0030 mtime=1446796197.918458201 30 atime=1507797543.826888919 30 ctime=1508162367.449882512 eztrace-1.1-7/extlib/opari2/test/data/test1.c0000644000175000017500000000341512617055645021613 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * * Testfile for automated testing of OPARI2 * * @authors Bernd Mohr, Peter Philippen * * @brief Test the parsers ability to find directives and filter strings and comments. */ #include #ifdef _OPENMP #include //just testing #endif int main() { printf("before...\n"); //************************************************ //* The following pragmas should be instrumented * //************************************************ #pragma omp parallel {{ printf("parallel 1...\n"); }} //end # /*complicated*/ pragma \ omp \ /*more*/ parallel { printf("parallel 2...\n"); } //************************************** //* The following should be ignored * //************************************** //#pragma omp parallel { //printf("parallel 1...\n"); } /* #pragma omp parallel { printf("parallel 1...\n"); } */ { printf("#pragma omp parallel"); // printf("#pragma omp parallel"); /* printf("#pragma omp parallel");*/ /* printf("#pragma omp parallel"); */ printf("\" and continuation \ in the next line #pragma omp parallel\" \ and especially strange escape character usage\\ n"); } printf("after...\n"); } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test7.f.opari.inc.out0000644000000000000000000000013212617055645023121 xustar0030 mtime=1446796197.922458326 30 atime=1507797543.826888919 30 ctime=1508162367.557891944 eztrace-1.1-7/extlib/opari2/test/data/test7.f.opari.inc.out0000644000175000017500000000063012617055645024307 0ustar00trahaytrahay00000000000000 INTEGER*8 pomp2_region_1 INTEGER*8 pomp2_region_2 INTEGER*8 pomp2_region_3 integer*4 pomp2_lib_get_max_threads logical pomp2_test_lock integer*4 pomp2_test_nest_lock integer*8 pomp2_old_task, pomp2_new_task logical pomp_if integer*4 pomp_num_threads common /cb000/ pomp2_region_1, & pomp2_region_2, & pomp2_region_3 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test2.f.opari.inc.out0000644000000000000000000000013212617055645023114 xustar0030 mtime=1446796197.918458201 30 atime=1507797543.826888919 30 ctime=1508162367.485885655 eztrace-1.1-7/extlib/opari2/test/data/test2.f.opari.inc.out0000644000175000017500000000233112617055645024302 0ustar00trahaytrahay00000000000000 INTEGER*8 pomp2_region_1 INTEGER*8 pomp2_region_2 INTEGER*8 pomp2_region_3 INTEGER*8 pomp2_region_4 INTEGER*8 pomp2_region_5 INTEGER*8 pomp2_region_6 INTEGER*8 pomp2_region_7 INTEGER*8 pomp2_region_8 INTEGER*8 pomp2_region_9 INTEGER*8 pomp2_region_10 INTEGER*8 pomp2_region_11 INTEGER*8 pomp2_region_12 INTEGER*8 pomp2_region_13 INTEGER*8 pomp2_region_14 INTEGER*8 pomp2_region_15 INTEGER*8 pomp2_region_16 integer*4 pomp2_lib_get_max_threads logical pomp2_test_lock integer*4 pomp2_test_nest_lock integer*8 pomp2_old_task, pomp2_new_task logical pomp_if integer*4 pomp_num_threads common /cb000/ pomp2_region_1, & pomp2_region_2, & pomp2_region_3, & pomp2_region_4, & pomp2_region_5, & pomp2_region_6, & pomp2_region_7, & pomp2_region_8, & pomp2_region_9, & pomp2_region_10, & pomp2_region_11, & pomp2_region_12, & pomp2_region_13, & pomp2_region_14, & pomp2_region_15, & pomp2_region_16 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test7.c0000644000000000000000000000013212617055645020427 xustar0030 mtime=1446796197.922458326 30 atime=1507797543.826888919 30 ctime=1508162367.549891245 eztrace-1.1-7/extlib/opari2/test/data/test7.c0000644000175000017500000000246112617055645021621 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * * Testfile for automated testing of OPARI2 * * @authors Bernd Mohr, Peter Philippen * * @brief Tests user instrumentation directives and selective instrumentation. */ int main() { int i; int b = 1; #pragma pomp inst init #pragma pomp inst off #pragma pomp inst begin(foo) #pragma omp parallel i = 1; #pragma pomp inst on #pragma pomp noinstrument #pragma omp parallel i = 2; #pragma pomp instrument #pragma omp parallel i = 3; if (b) { #pragma pomp inst altend(foo) return 0; } #pragma omp parallel { #pragma pomp inst begin(phase1) i = 4; #pragma omp barrier i = 5; #pragma pomp inst end(phase1) } if (b) { #pragma pomp inst altend(foo) return 0; } #pragma pomp inst end(foo) #pragma pomp inst finalize return 0; } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test8.f.out0000644000000000000000000000013212617055645021241 xustar0030 mtime=1446796197.922458326 30 atime=1507797543.826888919 30 ctime=1508162367.573893341 eztrace-1.1-7/extlib/opari2/test/data/test8.f.out0000644000175000017500000002561512617055645022441 0ustar00trahaytrahay00000000000000 #line 1 "test8.f" ! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Tests whether specific clauses are found and inserted into the CTC string. program test8 include 'test8.f.opari.inc' integer i integer k integer, save :: j #line 25 "test8.f" !$omp threadprivate(j) pomp_num_threads = 4 pomp_if = ( k.eq.0 ) call POMP2_Parallel_fork(pomp2_region_1, &pomp_if, pomp_num_threads, pomp2_old_task, &"98*regionType=parallel*sscl=test8.f:27:27*escl=test8.f:0:0*"// &"hasIf=1*hasNumThreads=1*hasReduction=1**" ) #line 27 "test8.f" !$omp parallel reduction(+:k) !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_1) #line 28 "test8.f" write(*,*) "parallel" call POMP2_Do_enter(pomp2_region_2, &"105*regionType=do*sscl=test8.f:30:30*escl=test8.f:0:0*hasRe"// &"duction=1*scheduleType=dynamic,5*hasCollapse=1**" ) #line 30 "test8.f" !$omp do reduction(+:k) schedule(dynamic, 5) collapse(1) do i=1,4 write(*,*) "do",i k = k + 1 enddo #line 35 "test8.f" !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_2, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_2, pomp2_old_task) call POMP2_Do_exit(pomp2_region_2) #line 36 "test8.f" call POMP2_Sections_enter(pomp2_region_3, &"73*regionType=sections*sscl=test8.f:37:37*escl=test8.f:0:0*"// &"numSections=0**" ) #line 37 "test8.f" !$omp sections reduction(+:k) #line 38 "test8.f" !$omp section call POMP2_Section_begin(pomp2_region_3, &"73*regionType=sections*sscl=test8.f:37:37*escl=test8.f:0:0*"// &"numSections=0**" ) #line 39 "test8.f" write(*,*) "section 1" call POMP2_Section_end(pomp2_region_3) #line 40 "test8.f" !$omp section call POMP2_Section_begin(pomp2_region_3, &"73*regionType=sections*sscl=test8.f:37:37*escl=test8.f:0:0*"// &"numSections=1**" ) #line 41 "test8.f" write(*,*) "section 2" call POMP2_Section_end(pomp2_region_3) #line 42 "test8.f" !$omp end sections nowait call POMP2_Implicit_barrier_enter(pomp2_region_3, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_3, pomp2_old_task) call POMP2_Sections_exit(pomp2_region_3) #line 43 "test8.f" call POMP2_Implicit_barrier_enter(pomp2_region_1, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_1, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_1) #line 44 "test8.f" !$omp end parallel call POMP2_Parallel_join(pomp2_region_1, pomp2_old_task) #line 45 "test8.f" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_4, &pomp_if, pomp_num_threads, pomp2_old_task, &"59*regionType=parallel*sscl=test8.f:46:46*escl=test8.f:0:0*"// &"*" ) #line 46 "test8.f" !$omp parallel !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_4) #line 47 "test8.f" pomp_if = .true. if (pomp_if) then call POMP2_Task_create_begin(pomp2_region_5, pomp2_new_task, &pomp2_old_task, &pomp_if, &"67*regionType=task*sscl=test8.f:47:47*escl=test8.f:0:0*hasU"// &"ntied=1**" ) end if #line 47 "test8.f" !$omp task !$omp& if(pomp_if) firstprivate(pomp2_new_task, pomp_if) if (pomp_if) then call POMP2_Task_begin(pomp2_region_5, pomp2_new_task) end if #line 48 "test8.f" write(*,*) "task" if (pomp_if) then call POMP2_Task_end(pomp2_region_5) end if #line 49 "test8.f" !$omp end task if (pomp_if) then call POMP2_Task_create_end(pomp2_region_5, pomp2_old_task) end if #line 50 "test8.f" call POMP2_Implicit_barrier_enter(pomp2_region_4, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_4, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_4) #line 50 "test8.f" !$omp end parallel call POMP2_Parallel_join(pomp2_region_4, pomp2_old_task) #line 51 "test8.f" pomp_num_threads = 4 pomp_if = ( .true. ) call POMP2_Parallel_fork(pomp2_region_6, &pomp_if, pomp_num_threads, pomp2_old_task, &"155*regionType=paralleldo*sscl=test8.f:52:53*escl=test8.f:0"// &":0*hasIf=1*hasNumThreads=1*hasReduction=1*scheduleType=stat"// &"ic,chunkif*hasCollapse=1*hasOrdered=1**" ) #line 52 "test8.f" !$omp parallel reduction(+:k) !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_6) call POMP2_Do_enter(pomp2_region_6, &"155*regionType=paralleldo*sscl=test8.f:52:53*escl=test8.f:0"// &":0*hasIf=1*hasNumThreads=1*hasReduction=1*scheduleType=stat"// &"ic,chunkif*hasCollapse=1*hasOrdered=1**" ) #line 52 "test8.f" !$omp do !$omp+ schedule(static,chunkif) collapse(1) ordered do i=1,4 call POMP2_Ordered_enter(pomp2_region_7, &"58*regionType=ordered*sscl=test8.f:55:55*escl=test8.f:0:0**"// &"" ) #line 55 "test8.f" !$omp ordered call POMP2_Ordered_begin(pomp2_region_7) #line 56 "test8.f" write(*,*) "do",i call POMP2_Ordered_end(pomp2_region_7) #line 57 "test8.f" !$omp end ordered call POMP2_Ordered_exit(pomp2_region_7) #line 58 "test8.f" k = k + 1 enddo !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_6, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_6, pomp2_old_task) call POMP2_Do_exit(pomp2_region_6) call POMP2_Parallel_end(pomp2_region_6) !$omp end parallel call POMP2_Parallel_join(pomp2_region_6, pomp2_old_task) #line 61 "test8.f" pomp_num_threads = 4 pomp_if = ( (i+k)>5 ) call POMP2_Parallel_fork(pomp2_region_8, &pomp_if, pomp_num_threads, pomp2_old_task, &"106*regionType=parallelsections*sscl=test8.f:62:62*escl=tes"// &"t8.f:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ) #line 62 "test8.f" !$omp parallel reduction(+:k) !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_8) call POMP2_Sections_enter(pomp2_region_8) #line 62 "test8.f" !$omp sections #line 63 "test8.f" !$omp section call POMP2_Section_begin(pomp2_region_8, &"106*regionType=parallelsections*sscl=test8.f:62:62*escl=tes"// &"t8.f:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ) #line 64 "test8.f" write(*,*) "section 1" call POMP2_Section_end(pomp2_region_8) #line 65 "test8.f" !$omp section call POMP2_Section_begin(pomp2_region_8, &"106*regionType=parallelsections*sscl=test8.f:62:62*escl=tes"// &"t8.f:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ) #line 66 "test8.f" write(*,*) "section 2" call POMP2_Section_end(pomp2_region_8) !$omp end sections nowait call POMP2_Implicit_barrier_enter(pomp2_region_8, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_8, pomp2_old_task) call POMP2_Sections_exit(pomp2_region_8) call POMP2_Parallel_end(pomp2_region_8) !$omp end parallel call POMP2_Parallel_join(pomp2_region_8, pomp2_old_task) #line 68 "test8.f" pomp_num_threads = 4 pomp_if = ( .true. ) call POMP2_Parallel_fork(pomp2_region_9, &pomp_if, pomp_num_threads, pomp2_old_task, &"107*regionType=parallelworkshare*sscl=test8.f:69:69*escl=te"// &"st8.f:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ) #line 69 "test8.f" !$omp parallel reduction(+:k) !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_9) call POMP2_Workshare_enter(pomp2_region_9, &"107*regionType=parallelworkshare*sscl=test8.f:69:69*escl=te"// &"st8.f:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ) #line 69 "test8.f" !$omp workshare write(*,*) "workshare" !$omp end workshare nowait call POMP2_Implicit_barrier_enter(pomp2_region_9, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_9, pomp2_old_task) call POMP2_Workshare_exit(pomp2_region_9) call POMP2_Parallel_end(pomp2_region_9) !$omp end parallel call POMP2_Parallel_join(pomp2_region_9, pomp2_old_task) #line 72 "test8.f" end program test2 subroutine POMP2_Init_regions_000() include 'test8.f.opari.inc' call POMP2_Assign_handle( pomp2_region_1, &"100*regionType=parallel*sscl=test8.f:27:27*escl=test8.f:44:"// &"44*hasIf=1*hasNumThreads=1*hasReduction=1**" ) call POMP2_Assign_handle( pomp2_region_2, &"107*regionType=do*sscl=test8.f:30:30*escl=test8.f:35:35*has"// &"Reduction=1*scheduleType=dynamic,5*hasCollapse=1**" ) call POMP2_Assign_handle( pomp2_region_3, &"75*regionType=sections*sscl=test8.f:37:37*escl=test8.f:42:4"// &"2*numSections=2**" ) call POMP2_Assign_handle( pomp2_region_4, &"61*regionType=parallel*sscl=test8.f:46:46*escl=test8.f:50:5"// &"0**" ) call POMP2_Assign_handle( pomp2_region_5, &"69*regionType=task*sscl=test8.f:47:47*escl=test8.f:49:49*ha"// &"sUntied=1**" ) call POMP2_Assign_handle( pomp2_region_6, &"157*regionType=paralleldo*sscl=test8.f:52:53*escl=test8.f:6"// &"0:60*hasIf=1*hasNumThreads=1*hasReduction=1*scheduleType=st"// &"atic,chunkif*hasCollapse=1*hasOrdered=1**" ) call POMP2_Assign_handle( pomp2_region_7, &"60*regionType=ordered*sscl=test8.f:55:55*escl=test8.f:57:57"// &"**" ) call POMP2_Assign_handle( pomp2_region_8, &"108*regionType=parallelsections*sscl=test8.f:62:62*escl=tes"// &"t8.f:67:67*hasIf=1*hasNumThreads=1*hasReduction=1**" ) call POMP2_Assign_handle( pomp2_region_9, &"109*regionType=parallelworkshare*sscl=test8.f:69:69*escl=te"// &"st8.f:71:71*hasIf=1*hasNumThreads=1*hasReduction=1**" ) end eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test1_a.f0000644000000000000000000000013212617055645020724 xustar0030 mtime=1446796197.918458201 30 atime=1507797543.826888919 30 ctime=1508162367.473884607 eztrace-1.1-7/extlib/opari2/test/data/test1_a.f0000644000175000017500000000310012617055645022105 0ustar00trahaytrahay00000000000000! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test the parsers ability to insert a necessary include statement at the right places. integer function f0() implicit &none double precision :: d write (*,*) "function f0" f0 = 5 return end function f0 subroutine s0 write (*,*) "subroutine s0" end subroutine s0 integer function f1(a) !interface integer :: a, result write (*,*) "function f1" f1 = a return end function f1 recursive subroutine s1(a) integer :: a write (*,*) "subroutine s1" write (*,*) "keyword interface inside a string" call ss1() entry ss1() write (*,*) "entry ss1" end subroutine s1 program otest integer :: i, f0, f1, function function = 0 write (*,*) 'program otest' i = f0() i = f1(2) call s0 call s1(4) end program otest eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test1.c.out0000644000000000000000000000013212617055645021227 xustar0030 mtime=1446796197.918458201 30 atime=1507797543.826888919 30 ctime=1508162367.449882512 eztrace-1.1-7/extlib/opari2/test/data/test1.c.out0000644000175000017500000000635212617055645022424 0ustar00trahaytrahay00000000000000 #include "test1.c.opari.inc" #line 1 "test1.c" /* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * * Testfile for automated testing of OPARI2 * * @authors Bernd Mohr, Peter Philippen * * @brief Test the parsers ability to find directives and filter strings and comments. */ #include #ifdef _OPENMP #endif int main() { printf("before...\n"); //************************************************ //* The following pragmas should be instrumented * //************************************************ { int pomp_num_threads = omp_get_max_threads(); int pomp_if = 1; POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_1, pomp_if, pomp_num_threads, &pomp2_old_task, "58*regionType=parallel*sscl=test1.c:34:34*escl=test1.c:0:0**" ); #line 34 "test1.c" #pragma omp parallel POMP2_DLIST_00001 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_1 ); #line 35 "test1.c" {{ printf("parallel 1...\n"); }} { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_1, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_1, pomp2_old_task ); } POMP2_Parallel_end( &pomp2_region_1 ); } POMP2_Parallel_join( &pomp2_region_1, pomp2_old_task ); } #line 37 "test1.c" //end { int pomp_num_threads = omp_get_max_threads(); int pomp_if = 1; POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_2, pomp_if, pomp_num_threads, &pomp2_old_task, "58*regionType=parallel*sscl=test1.c:39:41*escl=test1.c:0:0**" ); #line 39 "test1.c" # pragma \ omp \ parallel POMP2_DLIST_00002 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_2 ); #line 42 "test1.c" { printf("parallel 2...\n"); } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_2, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_2, pomp2_old_task ); } POMP2_Parallel_end( &pomp2_region_2 ); } POMP2_Parallel_join( &pomp2_region_2, pomp2_old_task ); } #line 45 "test1.c" //************************************** //* The following should be ignored * //************************************** //#pragma omp parallel { //printf("parallel 1...\n"); } /* #pragma omp parallel { printf("parallel 1...\n"); } */ { printf("#pragma omp parallel"); // printf("#pragma omp parallel"); /* printf("#pragma omp parallel");*/ /* printf("#pragma omp parallel"); */ printf("\" and continuation \ in the next line #pragma omp parallel\" \ and especially strange escape character usage\\ n"); } printf("after...\n"); } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test1_a.f.opari.inc.out0000644000000000000000000000013212537514551023410 xustar0030 mtime=1434360169.148486149 30 atime=1507797543.826888919 30 ctime=1508162367.589894738 eztrace-1.1-7/extlib/opari2/test/data/test1_a.f.opari.inc.out0000644000175000017500000000015612537514551024601 0ustar00trahaytrahay00000000000000 integer*4 pomp2_lib_get_max_threads logical pomp2_test_lock integer*4 pomp2_test_nest_lock eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test5.c.out0000644000000000000000000000013212617055645021233 xustar0030 mtime=1446796197.918458201 30 atime=1507797543.826888919 30 ctime=1508162367.529889498 eztrace-1.1-7/extlib/opari2/test/data/test5.c.out0000644000175000017500000001065112617055645022425 0ustar00trahaytrahay00000000000000 #include "test5.c.opari.inc" #line 1 "test5.c" /* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * * Testfile for automated testing of OPARI2 * * @authors Bernd Mohr, Peter Philippen * * @brief Test the splitting of combined parallel clauses. */ #include int t; #line 25 "test5.c" #pragma omp threadprivate(t) int main() { int i, j, k, l; l=0; { int pomp_num_threads = omp_get_max_threads(); int pomp_if = 1; POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_1, pomp_if, pomp_num_threads, &pomp2_old_task, "82*regionType=parallelfor*sscl=test5.c:31:39*escl=test5.c:0:0*scheduleType=dynamic**" ); #line 31 "test5.c" #pragma omp parallel \ private(i,j) \ POMP2_DLIST_00001 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_1 ); { POMP2_For_enter( &pomp2_region_1, "82*regionType=parallelfor*sscl=test5.c:31:39*escl=test5.c:0:0*scheduleType=dynamic**" ); #line 31 "test5.c" #pragma omp \ for \ lastprivate(k) \ lastprivate \ ( \ l \ ) schedule(dynamic \ ) nowait for(i=0; i<4;++i) { printf("parallel for %d\n", i); k+=i; } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_1, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_1, pomp2_old_task ); } POMP2_For_exit( &pomp2_region_1 ); } POMP2_Parallel_end( &pomp2_region_1 ); } POMP2_Parallel_join( &pomp2_region_1, pomp2_old_task ); } #line 44 "test5.c" { int pomp_num_threads = 2; int pomp_if = (int)( k ); POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_2, pomp_if, pomp_num_threads, &pomp2_old_task, "105*regionType=parallelsections*sscl=test5.c:45:45*escl=test5.c:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ); #line 45 "test5.c" #pragma omp parallel firstprivate(j) default(shared) copyin(t) reduction(+:l) POMP2_DLIST_00002 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_2 ); { POMP2_Sections_enter( &pomp2_region_2, "105*regionType=parallelsections*sscl=test5.c:45:45*escl=test5.c:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ); #line 45 "test5.c" #pragma omp sections lastprivate(i) nowait { #line 47 "test5.c" #pragma omp section { POMP2_Section_begin( &pomp2_region_2, "105*regionType=parallelsections*sscl=test5.c:45:45*escl=test5.c:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ); #line 48 "test5.c" { printf("Section 1\n"); } POMP2_Section_end( &pomp2_region_2 ); } #line 51 "test5.c" #pragma omp section { POMP2_Section_begin( &pomp2_region_2, "105*regionType=parallelsections*sscl=test5.c:45:45*escl=test5.c:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ); #line 52 "test5.c" { printf("Section 2\n"); } POMP2_Section_end( &pomp2_region_2 ); } #line 55 "test5.c" #pragma omp section { POMP2_Section_begin( &pomp2_region_2, "105*regionType=parallelsections*sscl=test5.c:45:45*escl=test5.c:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ); #line 56 "test5.c" { printf("Section 3\n"); } POMP2_Section_end( &pomp2_region_2 ); } #line 59 "test5.c" } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_2, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_2, pomp2_old_task ); } POMP2_Sections_exit( &pomp2_region_2 ); } POMP2_Parallel_end( &pomp2_region_2 ); } POMP2_Parallel_join( &pomp2_region_2, pomp2_old_task ); } #line 60 "test5.c" } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test8.f90.out0000644000000000000000000000013112617055645021411 xustar0030 mtime=1446796197.922458326 30 atime=1507797543.826888919 29 ctime=1508162367.58189404 eztrace-1.1-7/extlib/opari2/test/data/test8.f90.out0000644000175000017500000002562312617055645022611 0ustar00trahaytrahay00000000000000 #line 1 "test8.f90" ! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Tests whether specific clauses are found and inserted into the CTC string. program test8 include 'test8.f90.opari.inc' integer i integer k integer, save :: j #line 25 "test8.f90" !$omp threadprivate(j) pomp_num_threads = 4 pomp_if = ( k.eq.0 ) call POMP2_Parallel_fork(pomp2_region_1,& pomp_if, pomp_num_threads, pomp2_old_task, & "101*regionType=parallel*sscl=test8.f90:27:27*escl=test8.f90:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ) #line 27 "test8.f90" !$omp parallel reduction(+:k) & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_1) #line 28 "test8.f90" write(*,*) "parallel" call POMP2_Do_enter(pomp2_region_2, & "108*regionType=do*sscl=test8.f90:30:30*escl=test8.f90:0:0*hasReduction=1*scheduleType=dynamic,5*hasCollapse=1**" ) #line 30 "test8.f90" !$omp do reduction(+:k) schedule(dynamic, 5) collapse(1) do i=1,4 write(*,*) "do",i k = k + 1 enddo #line 35 "test8.f90" !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_2, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_2, pomp2_old_task) call POMP2_Do_exit(pomp2_region_2) #line 36 "test8.f90" call POMP2_Sections_enter(pomp2_region_3, & "76*regionType=sections*sscl=test8.f90:37:37*escl=test8.f90:0:0*numSections=0**" ) #line 37 "test8.f90" !$omp sections reduction(+:k) #line 38 "test8.f90" !$omp section call POMP2_Section_begin(pomp2_region_3, & "76*regionType=sections*sscl=test8.f90:37:37*escl=test8.f90:0:0*numSections=0**" ) #line 39 "test8.f90" write(*,*) "section 1" call POMP2_Section_end(pomp2_region_3) #line 40 "test8.f90" !$omp section call POMP2_Section_begin(pomp2_region_3, & "76*regionType=sections*sscl=test8.f90:37:37*escl=test8.f90:0:0*numSections=1**" ) #line 41 "test8.f90" write(*,*) "section 2" call POMP2_Section_end(pomp2_region_3) #line 42 "test8.f90" !$omp end sections nowait call POMP2_Implicit_barrier_enter(pomp2_region_3, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_3, pomp2_old_task) call POMP2_Sections_exit(pomp2_region_3) #line 43 "test8.f90" call POMP2_Implicit_barrier_enter(pomp2_region_1, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_1, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_1) #line 44 "test8.f90" !$omp end parallel call POMP2_Parallel_join(pomp2_region_1, pomp2_old_task) #line 45 "test8.f90" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_4,& pomp_if, pomp_num_threads, pomp2_old_task, & "62*regionType=parallel*sscl=test8.f90:46:46*escl=test8.f90:0:0**" ) #line 46 "test8.f90" !$omp parallel & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_4) #line 47 "test8.f90" pomp_if = .true. if (pomp_if) then call POMP2_Untied_task_create_begin(pomp2_region_5, pomp2_new_task, & pomp2_old_task, & pomp_if, & "70*regionType=task*sscl=test8.f90:47:47*escl=test8.f90:0:0*hasUntied=1**" ) end if #line 47 "test8.f90" !$omp task untied if(pomp_if) firstprivate(pomp2_new_task, pomp_if) if (pomp_if) then call POMP2_Untied_task_begin(pomp2_region_5, pomp2_new_task) end if #line 48 "test8.f90" write(*,*) "task" if (pomp_if) then call POMP2_Untied_task_end(pomp2_region_5) end if #line 49 "test8.f90" !$omp end task if (pomp_if) then call POMP2_Untied_task_create_end(pomp2_region_5, pomp2_old_task) end if #line 50 "test8.f90" call POMP2_Implicit_barrier_enter(pomp2_region_4, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_4, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_4) #line 50 "test8.f90" !$omp end parallel call POMP2_Parallel_join(pomp2_region_4, pomp2_old_task) #line 51 "test8.f90" pomp_num_threads = 4 pomp_if = ( .true. ) call POMP2_Parallel_fork(pomp2_region_6,& pomp_if, pomp_num_threads, pomp2_old_task, & "158*regionType=paralleldo*sscl=test8.f90:52:52*escl=test8.f90:0:0*hasIf=1*hasNumThreads=1*hasReduction=1*scheduleType=static,chunkif*hasCollapse=1*hasOrdered=1**" ) #line 52 "test8.f90" !$omp parallel reduction(+:k) & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_6) call POMP2_Do_enter(pomp2_region_6, & "158*regionType=paralleldo*sscl=test8.f90:52:52*escl=test8.f90:0:0*hasIf=1*hasNumThreads=1*hasReduction=1*scheduleType=static,chunkif*hasCollapse=1*hasOrdered=1**" ) #line 52 "test8.f90" !$omp do schedule(static,chunkif) collapse(1) ordered do i=1,4 call POMP2_Ordered_enter(pomp2_region_7, & "61*regionType=ordered*sscl=test8.f90:54:54*escl=test8.f90:0:0**" ) #line 54 "test8.f90" !$omp ordered call POMP2_Ordered_begin(pomp2_region_7) #line 55 "test8.f90" write(*,*) "do",i call POMP2_Ordered_end(pomp2_region_7) #line 56 "test8.f90" !$omp end ordered call POMP2_Ordered_exit(pomp2_region_7) #line 57 "test8.f90" k = k + 1 enddo !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_6, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_6, pomp2_old_task) call POMP2_Do_exit(pomp2_region_6) call POMP2_Parallel_end(pomp2_region_6) !$omp end parallel call POMP2_Parallel_join(pomp2_region_6, pomp2_old_task) #line 60 "test8.f90" pomp_num_threads = 4 pomp_if = ( (i+k)>5 ) call POMP2_Parallel_fork(pomp2_region_8,& pomp_if, pomp_num_threads, pomp2_old_task, & "109*regionType=parallelsections*sscl=test8.f90:61:61*escl=test8.f90:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ) #line 61 "test8.f90" !$omp parallel reduction(+:k) & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_8) call POMP2_Sections_enter(pomp2_region_8) #line 61 "test8.f90" !$omp sections #line 62 "test8.f90" !$omp section call POMP2_Section_begin(pomp2_region_8, & "109*regionType=parallelsections*sscl=test8.f90:61:61*escl=test8.f90:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ) #line 63 "test8.f90" write(*,*) "section 1" call POMP2_Section_end(pomp2_region_8) #line 64 "test8.f90" !$omp section call POMP2_Section_begin(pomp2_region_8, & "109*regionType=parallelsections*sscl=test8.f90:61:61*escl=test8.f90:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ) #line 65 "test8.f90" write(*,*) "section 2" call POMP2_Section_end(pomp2_region_8) !$omp end sections nowait call POMP2_Implicit_barrier_enter(pomp2_region_8, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_8, pomp2_old_task) call POMP2_Sections_exit(pomp2_region_8) call POMP2_Parallel_end(pomp2_region_8) !$omp end parallel call POMP2_Parallel_join(pomp2_region_8, pomp2_old_task) #line 67 "test8.f90" pomp_num_threads = 4 pomp_if = ( .true. ) call POMP2_Parallel_fork(pomp2_region_9,& pomp_if, pomp_num_threads, pomp2_old_task, & "110*regionType=parallelworkshare*sscl=test8.f90:68:68*escl=test8.f90:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ) #line 68 "test8.f90" !$omp parallel reduction(+:k) & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_9) call POMP2_Workshare_enter(pomp2_region_9, & "110*regionType=parallelworkshare*sscl=test8.f90:68:68*escl=test8.f90:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ) #line 68 "test8.f90" !$omp workshare write(*,*) "workshare" !$omp end workshare nowait call POMP2_Implicit_barrier_enter(pomp2_region_9, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_9, pomp2_old_task) call POMP2_Workshare_exit(pomp2_region_9) call POMP2_Parallel_end(pomp2_region_9) !$omp end parallel call POMP2_Parallel_join(pomp2_region_9, pomp2_old_task) #line 71 "test8.f90" end program test8 subroutine POMP2_Init_regions_000() include 'test8.f90.opari.inc' call POMP2_Assign_handle( pomp2_region_1, & "103*regionType=parallel*sscl=test8.f90:27:27*escl=test8.f90:44:44*hasIf=1*hasNumThreads=1*hasReduction=1**" ) call POMP2_Assign_handle( pomp2_region_2, & "110*regionType=do*sscl=test8.f90:30:30*escl=test8.f90:35:35*hasReduction=1*scheduleType=dynamic,5*hasCollapse=1**" ) call POMP2_Assign_handle( pomp2_region_3, & "78*regionType=sections*sscl=test8.f90:37:37*escl=test8.f90:42:42*numSections=2**" ) call POMP2_Assign_handle( pomp2_region_4, & "64*regionType=parallel*sscl=test8.f90:46:46*escl=test8.f90:50:50**" ) call POMP2_Assign_handle( pomp2_region_5, & "72*regionType=task*sscl=test8.f90:47:47*escl=test8.f90:49:49*hasUntied=1**" ) call POMP2_Assign_handle( pomp2_region_6, & "160*regionType=paralleldo*sscl=test8.f90:52:52*escl=test8.f90:59:59*hasIf=1*hasNumThreads=1*hasReduction=1*scheduleType=static,chunkif*hasCollapse=1*hasOrdered=1**" ) call POMP2_Assign_handle( pomp2_region_7, & "63*regionType=ordered*sscl=test8.f90:54:54*escl=test8.f90:56:56**" ) call POMP2_Assign_handle( pomp2_region_8, & "111*regionType=parallelsections*sscl=test8.f90:61:61*escl=test8.f90:66:66*hasIf=1*hasNumThreads=1*hasReduction=1**" ) call POMP2_Assign_handle( pomp2_region_9, & "112*regionType=parallelworkshare*sscl=test8.f90:68:68*escl=test8.f90:70:70*hasIf=1*hasNumThreads=1*hasReduction=1**" ) end eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test3.f.opari.inc.out0000644000000000000000000000013212617055645023115 xustar0030 mtime=1446796197.918458201 30 atime=1507797543.826888919 30 ctime=1508162367.505887402 eztrace-1.1-7/extlib/opari2/test/data/test3.f.opari.inc.out0000644000175000017500000000223012617055645024301 0ustar00trahaytrahay00000000000000 INTEGER*8 pomp2_region_1 INTEGER*8 pomp2_region_2 INTEGER*8 pomp2_region_3 INTEGER*8 pomp2_region_4 INTEGER*8 pomp2_region_5 INTEGER*8 pomp2_region_6 INTEGER*8 pomp2_region_7 INTEGER*8 pomp2_region_8 INTEGER*8 pomp2_region_9 INTEGER*8 pomp2_region_10 INTEGER*8 pomp2_region_11 INTEGER*8 pomp2_region_12 INTEGER*8 pomp2_region_13 INTEGER*8 pomp2_region_14 INTEGER*8 pomp2_region_15 integer*4 pomp2_lib_get_max_threads logical pomp2_test_lock integer*4 pomp2_test_nest_lock integer*8 pomp2_old_task, pomp2_new_task logical pomp_if integer*4 pomp_num_threads common /cb000/ pomp2_region_1, & pomp2_region_2, & pomp2_region_3, & pomp2_region_4, & pomp2_region_5, & pomp2_region_6, & pomp2_region_7, & pomp2_region_8, & pomp2_region_9, & pomp2_region_10, & pomp2_region_11, & pomp2_region_12, & pomp2_region_13, & pomp2_region_14, & pomp2_region_15 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test2.c.out0000644000000000000000000000013112617055645021227 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83088905 30 ctime=1508162367.477884957 eztrace-1.1-7/extlib/opari2/test/data/test2.c.out0000644000175000017500000001764212617055645022431 0ustar00trahaytrahay00000000000000 #include "test2.c.opari.inc" #line 1 "test2.c" /* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * * Testfile for automated testing of OPARI2 * * @authors Bernd Mohr, Peter Philippen * * @brief Test the basic instrumentation of all directives. */ #include #ifdef _OPENMP #endif int j; #line 28 "test2.c" #pragma omp threadprivate(j) int main() { int i; int k = 0; { int pomp_num_threads = omp_get_max_threads(); int pomp_if = 1; POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_1, pomp_if, pomp_num_threads, &pomp2_old_task, "58*regionType=parallel*sscl=test2.c:34:34*escl=test2.c:0:0**" ); #line 34 "test2.c" #pragma omp parallel POMP2_DLIST_00001 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_1 ); #line 35 "test2.c" { printf("parallel\n"); { POMP2_For_enter( &pomp2_region_2, "53*regionType=for*sscl=test2.c:38:38*escl=test2.c:0:0**" ); #line 38 "test2.c" #pragma omp for nowait for(i=0; i<4; ++i) { printf("for %d\n", i); k++; } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_2, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_2, pomp2_old_task ); } POMP2_For_exit( &pomp2_region_2 ); } #line 43 "test2.c" { POMP2_Flush_enter( &pomp2_region_3, "55*regionType=flush*sscl=test2.c:44:44*escl=test2.c:0:0**" ); #line 44 "test2.c" #pragma omp flush(k) POMP2_Flush_exit( &pomp2_region_3 ); } #line 45 "test2.c" { POMP2_Task_handle pomp2_old_task; POMP2_Barrier_enter( &pomp2_region_4, &pomp2_old_task, "57*regionType=barrier*sscl=test2.c:46:46*escl=test2.c:0:0**" ); #line 46 "test2.c" #pragma omp barrier POMP2_Barrier_exit( &pomp2_region_4, pomp2_old_task ); } #line 47 "test2.c" { POMP2_For_enter( &pomp2_region_5, "66*regionType=for*sscl=test2.c:48:48*escl=test2.c:0:0*hasOrdered=1**" ); #line 48 "test2.c" #pragma omp for ordered nowait for(i=0; i<4; ++i) { { POMP2_Ordered_enter( &pomp2_region_6, "57*regionType=ordered*sscl=test2.c:50:50*escl=test2.c:0:0**" ); #line 50 "test2.c" #pragma omp ordered { POMP2_Ordered_begin( &pomp2_region_6 ); #line 51 "test2.c" { printf("for %d\n", i); } POMP2_Ordered_end( &pomp2_region_6 ); } POMP2_Ordered_exit( &pomp2_region_6 ); } #line 54 "test2.c" } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_5, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_5, pomp2_old_task ); } POMP2_For_exit( &pomp2_region_5 ); } #line 55 "test2.c" { POMP2_Sections_enter( &pomp2_region_7, "72*regionType=sections*sscl=test2.c:56:56*escl=test2.c:0:0*numSections=0**" ); #line 56 "test2.c" #pragma omp sections nowait { #line 58 "test2.c" #pragma omp section { POMP2_Section_begin( &pomp2_region_7, "72*regionType=sections*sscl=test2.c:56:56*escl=test2.c:0:0*numSections=0**" ); #line 59 "test2.c" printf("section 1\n"); POMP2_Section_end( &pomp2_region_7 ); } #line 60 "test2.c" #pragma omp section { POMP2_Section_begin( &pomp2_region_7, "72*regionType=sections*sscl=test2.c:56:56*escl=test2.c:0:0*numSections=1**" ); #line 61 "test2.c" { printf("section 2\n"); } POMP2_Section_end( &pomp2_region_7 ); } #line 62 "test2.c" } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_7, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_7, pomp2_old_task ); } POMP2_Sections_exit( &pomp2_region_7 ); } #line 63 "test2.c" #line 64 "test2.c" #pragma omp master { POMP2_Master_begin( &pomp2_region_8, "56*regionType=master*sscl=test2.c:64:64*escl=test2.c:0:0**" ); #line 65 "test2.c" { printf("master\n"); } POMP2_Master_end( &pomp2_region_8 ); } #line 68 "test2.c" { POMP2_Critical_enter( &pomp2_region_9, "58*regionType=critical*sscl=test2.c:69:69*escl=test2.c:0:0**" ); #line 69 "test2.c" #pragma omp critical { POMP2_Critical_begin( &pomp2_region_9 ); #line 70 "test2.c" { printf("critical\n"); } POMP2_Critical_end( &pomp2_region_9 ); } POMP2_Critical_exit( &pomp2_region_9 ); } #line 73 "test2.c" { POMP2_Critical_enter( &pomp2_region_10, "78*regionType=critical*sscl=test2.c:74:74*escl=test2.c:0:0*criticalName=foobar**" ); #line 74 "test2.c" #pragma omp critical(foobar) { POMP2_Critical_begin( &pomp2_region_10 ); #line 75 "test2.c" { printf("critical(foobar)\n"); } POMP2_Critical_end( &pomp2_region_10 ); } POMP2_Critical_exit( &pomp2_region_10 ); } #line 78 "test2.c" { POMP2_Atomic_enter( &pomp2_region_11, "56*regionType=atomic*sscl=test2.c:79:79*escl=test2.c:0:0**" ); #line 79 "test2.c" #pragma omp atomic /* -------------- */ /* do this atomic */ i += 1; POMP2_Atomic_exit( &pomp2_region_11 ); } #line 83 "test2.c" /* -------------- */ { POMP2_Single_enter( &pomp2_region_12, "56*regionType=single*sscl=test2.c:85:85*escl=test2.c:0:0**" ); #line 85 "test2.c" #pragma omp single nowait { POMP2_Single_begin( &pomp2_region_12 ); #line 86 "test2.c" { printf("single\n"); } POMP2_Single_end( &pomp2_region_12 ); } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_12, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_12, pomp2_old_task ); } POMP2_Single_exit( &pomp2_region_12 ); } #line 89 "test2.c" } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_1, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_1, pomp2_old_task ); } POMP2_Parallel_end( &pomp2_region_1 ); } POMP2_Parallel_join( &pomp2_region_1, pomp2_old_task ); } #line 90 "test2.c" { int pomp_num_threads = omp_get_max_threads(); int pomp_if = 1; POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_13, pomp_if, pomp_num_threads, &pomp2_old_task, "58*regionType=parallel*sscl=test2.c:91:91*escl=test2.c:0:0**" ); #line 91 "test2.c" #pragma omp parallel POMP2_DLIST_00013 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_13 ); #line 92 "test2.c" { { int pomp_if = 1; { POMP2_Task_handle pomp2_old_task; POMP2_Task_handle pomp2_new_task; if (pomp_if) POMP2_Task_create_begin( &pomp2_region_14, &pomp2_new_task, &pomp2_old_task, pomp_if, "54*regionType=task*sscl=test2.c:93:93*escl=test2.c:0:0**" ); #line 93 "test2.c" #pragma omp task POMP2_DLIST_00014 if(pomp_if) firstprivate(pomp2_new_task, pomp_if) { if (pomp_if) POMP2_Task_begin( &pomp2_region_14, pomp2_new_task ); #line 94 "test2.c" { printf("task\n"); } if (pomp_if) POMP2_Task_end( &pomp2_region_14 ); } if (pomp_if) POMP2_Task_create_end( &pomp2_region_14, pomp2_old_task ); } } #line 97 "test2.c" { POMP2_Task_handle pomp2_old_task; POMP2_Taskwait_begin( &pomp2_region_15, &pomp2_old_task, "58*regionType=taskwait*sscl=test2.c:98:98*escl=test2.c:0:0**" ); #line 98 "test2.c" #pragma omp taskwait POMP2_Taskwait_end( &pomp2_region_15, pomp2_old_task ); } #line 99 "test2.c" } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_13, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_13, pomp2_old_task ); } POMP2_Parallel_end( &pomp2_region_13 ); } POMP2_Parallel_join( &pomp2_region_13, pomp2_old_task ); } #line 100 "test2.c" // #pragma omp this should be ignored by opari and the compiler // #pragma this too } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test2.c0000644000000000000000000000013112617055645020421 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83088905 30 ctime=1508162367.473884607 eztrace-1.1-7/extlib/opari2/test/data/test2.c0000644000175000017500000000350212617055645021611 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * * Testfile for automated testing of OPARI2 * * @authors Bernd Mohr, Peter Philippen * * @brief Test the basic instrumentation of all directives. */ #include #ifdef _OPENMP #include #endif int j; #pragma omp threadprivate(j) int main() { int i; int k = 0; #pragma omp parallel { printf("parallel\n"); #pragma omp for for(i=0; i<4; ++i) { printf("for %d\n", i); k++; } #pragma omp flush(k) #pragma omp barrier #pragma omp for ordered for(i=0; i<4; ++i) { #pragma omp ordered { printf("for %d\n", i); } } #pragma omp sections { #pragma omp section printf("section 1\n"); #pragma omp section { printf("section 2\n"); } } #pragma omp master { printf("master\n"); } #pragma omp critical { printf("critical\n"); } #pragma omp critical(foobar) { printf("critical(foobar)\n"); } #pragma omp atomic /* -------------- */ /* do this atomic */ i += 1; /* -------------- */ #pragma omp single { printf("single\n"); } } #pragma omp parallel { #pragma omp task { printf("task\n"); } #pragma omp taskwait } // #pragma omp this should be ignored by opari and the compiler // #pragma this too } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test3.f90.opari.inc.out0000644000000000000000000000013112617055645023265 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83088905 30 ctime=1508162367.509887752 eztrace-1.1-7/extlib/opari2/test/data/test3.f90.opari.inc.out0000644000175000017500000000266012617055645024461 0ustar00trahaytrahay00000000000000 INTEGER( KIND=8 ) :: pomp2_region_1 INTEGER( KIND=8 ) :: pomp2_region_2 INTEGER( KIND=8 ) :: pomp2_region_3 INTEGER( KIND=8 ) :: pomp2_region_4 INTEGER( KIND=8 ) :: pomp2_region_5 INTEGER( KIND=8 ) :: pomp2_region_6 INTEGER( KIND=8 ) :: pomp2_region_7 INTEGER( KIND=8 ) :: pomp2_region_8 INTEGER( KIND=8 ) :: pomp2_region_9 INTEGER( KIND=8 ) :: pomp2_region_10 INTEGER( KIND=8 ) :: pomp2_region_11 INTEGER( KIND=8 ) :: pomp2_region_12 INTEGER( KIND=8 ) :: pomp2_region_13 INTEGER( KIND=8 ) :: pomp2_region_14 INTEGER( KIND=8 ) :: pomp2_region_15 INTEGER( KIND=8 ) :: pomp2_region_16 integer ( kind=4 ) :: pomp2_lib_get_max_threads logical :: pomp2_test_lock integer ( kind=4 ) :: pomp2_test_nest_lock integer ( kind=8 ) :: pomp2_old_task, pomp2_new_task logical :: pomp_if integer ( kind=4 ) :: pomp_num_threads common /cb000/ pomp2_region_1,& pomp2_region_2,& pomp2_region_3,& pomp2_region_4,& pomp2_region_5,& pomp2_region_6,& pomp2_region_7,& pomp2_region_8,& pomp2_region_9,& pomp2_region_10,& pomp2_region_11,& pomp2_region_12,& pomp2_region_13,& pomp2_region_14,& pomp2_region_15,& pomp2_region_16 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test7.f.out0000644000000000000000000000013112617055645021237 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.83088905 30 ctime=1508162367.557891944 eztrace-1.1-7/extlib/opari2/test/data/test7.f.out0000644000175000017500000000641412617055645022434 0ustar00trahaytrahay00000000000000 #line 1 "test7.f" ! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Tests user instrumentation directives and selective instrumentation. program test7 include 'test7.f.opari.inc' call POMP2_Init() #line 22 "test7.f" call POMP2_Off() #line 24 "test7.f" call POMP2_Begin(pomp2_region_1) #line 26 "test7.f" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_2, &pomp_if, pomp_num_threads, pomp2_old_task, &"59*regionType=parallel*sscl=test7.f:27:27*escl=test7.f:0:0*"// &"*" ) #line 27 "test7.f" !$omp parallel !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_2) #line 28 "test7.f" i = 1 call POMP2_Implicit_barrier_enter(pomp2_region_2, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_2, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_2) #line 29 "test7.f" !$omp end parallel call POMP2_Parallel_join(pomp2_region_2, pomp2_old_task) #line 30 "test7.f" call POMP2_End(pomp2_region_1) #line 32 "test7.f" call POMP2_On() #line 34 "test7.f" #line 36 "test7.f" !$omp parallel i = 2 !$omp end parallel #line 40 "test7.f" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_3, &pomp_if, pomp_num_threads, pomp2_old_task, &"59*regionType=parallel*sscl=test7.f:41:41*escl=test7.f:0:0*"// &"*" ) #line 41 "test7.f" !$omp parallel !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_3) #line 42 "test7.f" i = 3 call POMP2_Implicit_barrier_enter(pomp2_region_3, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_3, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_3) #line 43 "test7.f" !$omp end parallel call POMP2_Parallel_join(pomp2_region_3, pomp2_old_task) #line 44 "test7.f" call POMP2_Finalize() #line 46 "test7.f" end program test7 subroutine POMP2_Init_regions_000() include 'test7.f.opari.inc' call POMP2_Assign_handle( pomp2_region_1, &"78*regionType=region*sscl=test7.f:25:25*escl=test7.f:31:31*"// &"userRegionName=foo**" ) call POMP2_Assign_handle( pomp2_region_2, &"61*regionType=parallel*sscl=test7.f:27:27*escl=test7.f:29:2"// &"9**" ) call POMP2_Assign_handle( pomp2_region_3, &"61*regionType=parallel*sscl=test7.f:41:41*escl=test7.f:43:4"// &"3**" ) end eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test8.f900000644000000000000000000000013112617055645020603 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.83088905 30 ctime=1508162367.577893691 eztrace-1.1-7/extlib/opari2/test/data/test8.f900000644000175000017500000000347312617055645022002 0ustar00trahaytrahay00000000000000! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Tests whether specific clauses are found and inserted into the CTC string. program test8 integer i integer k integer, save :: j !$omp threadprivate(j) !$omp parallel if(k.eq.0) num_threads(4) reduction(+:k) write(*,*) "parallel" !$omp do reduction(+:k) schedule(dynamic, 5) collapse(1) do i=1,4 write(*,*) "do",i k = k + 1 enddo !$omp end do !$omp sections reduction(+:k) !$omp section write(*,*) "section 1" !$omp section write(*,*) "section 2" !$omp end sections !$omp end parallel !$omp parallel !$omp task untied write(*,*) "task" !$omp end task !$omp end parallel !$omp parallel do num_threads(4) reduction(+:k) schedule(static,chunkif) collapse(1) ordered if(.true.) do i=1,4 !$omp ordered write(*,*) "do",i !$omp end ordered k = k + 1 enddo !$omp end parallel do !$omp parallel sections if((i+k)>5) num_threads(4) reduction(+:k) !$omp section write(*,*) "section 1" !$omp section write(*,*) "section 2" !$omp end parallel sections !$omp parallel workshare if(.true.) num_threads(4) reduction(+:k) write(*,*) "workshare" !$omp end parallel workshare end program test8 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test5.f900000644000000000000000000000013112617055645020600 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83088905 30 ctime=1508162367.537890197 eztrace-1.1-7/extlib/opari2/test/data/test5.f900000644000175000017500000000324612617055645021775 0ustar00trahaytrahay00000000000000! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test the splitting of combined parallel clauses. program test5 integer i,j,k,m logical l integer, dimension(10,10) :: AA, BB, CC integer, save :: t !$omp threadprivate(t) !$omp parallel & !parallel !$omp & do & !do !$omp & lastprivate(k) & !comment !$omp & private(i,j), & !schedule !$omp & lastprivate & !$omp & ( & !$omp & l & !comment inside argument !$omp & ), schedule(dynamic & !$omp & ) do i=1,4 write(*,*) "parallel do ", i k=k+i end do !$omp end parallel do if(k .gt. 0) l = .true. !$omp parallel sections if(l) num_threads(2) default(shared) & !$omp &firstprivate(j) lastprivate(i) copyin(t) reduction(+:l) !$omp section write(*,*) "section1" !$omp section write(*,*) "section2" !$omp section write(*,*) "section3" !$omp end parallel sections !$omp parallel workshare AA = BB BB = CC !$omp end parallel workshare end program test5 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test8.c0000644000000000000000000000013112617055645020427 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.83088905 30 ctime=1508162367.561892293 eztrace-1.1-7/extlib/opari2/test/data/test8.c0000644000175000017500000000351112617055645021617 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * * Testfile for automated testing of OPARI2 * * @authors Bernd Mohr, Peter Philippen * * @brief Tests whether specific clauses are found and inserted into the CTC string. */ #include #ifdef _OPENMP #include #endif int j; #pragma omp threadprivate(j) int main() { int i = 5; int k = 0; #pragma omp parallel if(k==0) num_threads(4) reduction(+:k) { printf( "parallel\n" ); #pragma omp for reduction(+:k) schedule(dynamic, 5 ) collapse(1) for ( i = 0; i < 4; ++i ) { printf( "for %d\n", i ); k++; } #pragma omp sections reduction(+:k) { #pragma omp section printf( "section 1\n" ); #pragma omp section { printf( "section 2\n" ); } } } #pragma omp parallel { #pragma omp task if(true) untied { printf( "task\n" ); } } } #pragma omp parallel for num_threads(4) reduction(+:k) schedule(static,chunkif) collapse(1) ordered if(1) for ( i = 0; i < 4; ++i ) { #pragma omp ordered printf( "for %d\n", i ); k++; } #pragma omp parallel sections if((i+k)>5) num_threads(4) reduction(+:k) { #pragma omp section printf( "section 1\n" ); #pragma omp section { printf( "section 2\n" ); } } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test8.c.out0000644000000000000000000000013112617055645021235 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.83088905 30 ctime=1508162367.569892992 eztrace-1.1-7/extlib/opari2/test/data/test8.c.out0000644000175000017500000002041212617055645022424 0ustar00trahaytrahay00000000000000 #include "test8.c.opari.inc" #line 1 "test8.c" /* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * * Testfile for automated testing of OPARI2 * * @authors Bernd Mohr, Peter Philippen * * @brief Tests whether specific clauses are found and inserted into the CTC string. */ #include #ifdef _OPENMP #endif int j; #line 28 "test8.c" #pragma omp threadprivate(j) int main() { int i = 5; int k = 0; { int pomp_num_threads = 4; int pomp_if = (int)( k==0 ); POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_1, pomp_if, pomp_num_threads, &pomp2_old_task, "97*regionType=parallel*sscl=test8.c:36:36*escl=test8.c:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ); #line 36 "test8.c" #pragma omp parallel reduction(+:k) POMP2_DLIST_00001 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_1 ); #line 37 "test8.c" { printf( "parallel\n" ); { POMP2_For_enter( &pomp2_region_2, "105*regionType=for*sscl=test8.c:40:40*escl=test8.c:0:0*hasReduction=1*scheduleType=dynamic,5*hasCollapse=1**" ); #line 40 "test8.c" #pragma omp for reduction(+:k) schedule(dynamic, 5 ) collapse(1) nowait for ( i = 0; i < 4; ++i ) { printf( "for %d\n", i ); k++; } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_2, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_2, pomp2_old_task ); } POMP2_For_exit( &pomp2_region_2 ); } #line 46 "test8.c" { POMP2_Sections_enter( &pomp2_region_3, "87*regionType=sections*sscl=test8.c:47:47*escl=test8.c:0:0*numSections=0*hasReduction=1**" ); #line 47 "test8.c" #pragma omp sections reduction(+:k) nowait { #line 49 "test8.c" #pragma omp section { POMP2_Section_begin( &pomp2_region_3, "87*regionType=sections*sscl=test8.c:47:47*escl=test8.c:0:0*numSections=0*hasReduction=1**" ); #line 50 "test8.c" printf( "section 1\n" ); POMP2_Section_end( &pomp2_region_3 ); } #line 51 "test8.c" #pragma omp section { POMP2_Section_begin( &pomp2_region_3, "87*regionType=sections*sscl=test8.c:47:47*escl=test8.c:0:0*numSections=1*hasReduction=1**" ); #line 52 "test8.c" { printf( "section 2\n" ); } POMP2_Section_end( &pomp2_region_3 ); } #line 54 "test8.c" } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_3, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_3, pomp2_old_task ); } POMP2_Sections_exit( &pomp2_region_3 ); } #line 55 "test8.c" } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_1, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_1, pomp2_old_task ); } POMP2_Parallel_end( &pomp2_region_1 ); } POMP2_Parallel_join( &pomp2_region_1, pomp2_old_task ); } #line 56 "test8.c" { int pomp_num_threads = omp_get_max_threads(); int pomp_if = 1; POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_4, pomp_if, pomp_num_threads, &pomp2_old_task, "58*regionType=parallel*sscl=test8.c:57:57*escl=test8.c:0:0**" ); #line 57 "test8.c" #pragma omp parallel POMP2_DLIST_00004 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_4 ); #line 58 "test8.c" { { int pomp_if = (int)( true ); { POMP2_Task_handle pomp2_old_task; POMP2_Task_handle pomp2_new_task; if (pomp_if) POMP2_Untied_task_create_begin( &pomp2_region_5, &pomp2_new_task, &pomp2_old_task, pomp_if, "74*regionType=task*sscl=test8.c:59:59*escl=test8.c:0:0*hasIf=1*hasUntied=1**" ); #line 59 "test8.c" #pragma omp task untied POMP2_DLIST_00005 if(pomp_if) firstprivate(pomp2_new_task, pomp_if) { if (pomp_if) POMP2_Untied_task_begin( &pomp2_region_5, pomp2_new_task ); #line 60 "test8.c" { printf( "task\n" ); } if (pomp_if) POMP2_Untied_task_end( &pomp2_region_5 ); } if (pomp_if) POMP2_Untied_task_create_end( &pomp2_region_5, pomp2_old_task ); } } #line 63 "test8.c" } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_4, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_4, pomp2_old_task ); } POMP2_Parallel_end( &pomp2_region_4 ); } POMP2_Parallel_join( &pomp2_region_4, pomp2_old_task ); } #line 64 "test8.c" } { int pomp_num_threads = 4; int pomp_if = (int)( 1 ); POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_6, pomp_if, pomp_num_threads, &pomp2_old_task, "155*regionType=parallelfor*sscl=test8.c:66:66*escl=test8.c:0:0*hasIf=1*hasNumThreads=1*hasReduction=1*scheduleType=static,chunkif*hasCollapse=1*hasOrdered=1**" ); #line 66 "test8.c" #pragma omp parallel reduction(+:k) POMP2_DLIST_00006 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_6 ); { POMP2_For_enter( &pomp2_region_6, "155*regionType=parallelfor*sscl=test8.c:66:66*escl=test8.c:0:0*hasIf=1*hasNumThreads=1*hasReduction=1*scheduleType=static,chunkif*hasCollapse=1*hasOrdered=1**" ); #line 66 "test8.c" #pragma omp for schedule(static,chunkif) collapse(1) ordered nowait for ( i = 0; i < 4; ++i ) { { POMP2_Ordered_enter( &pomp2_region_7, "57*regionType=ordered*sscl=test8.c:69:69*escl=test8.c:0:0**" ); #line 69 "test8.c" #pragma omp ordered { POMP2_Ordered_begin( &pomp2_region_7 ); #line 70 "test8.c" printf( "for %d\n", i ); POMP2_Ordered_end( &pomp2_region_7 ); } POMP2_Ordered_exit( &pomp2_region_7 ); } #line 71 "test8.c" k++; } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_6, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_6, pomp2_old_task ); } POMP2_For_exit( &pomp2_region_6 ); } POMP2_Parallel_end( &pomp2_region_6 ); } POMP2_Parallel_join( &pomp2_region_6, pomp2_old_task ); } #line 74 "test8.c" { int pomp_num_threads = 4; int pomp_if = (int)( (i+k)>5 ); POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_8, pomp_if, pomp_num_threads, &pomp2_old_task, "105*regionType=parallelsections*sscl=test8.c:75:75*escl=test8.c:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ); #line 75 "test8.c" #pragma omp parallel reduction(+:k) POMP2_DLIST_00008 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_8 ); { POMP2_Sections_enter( &pomp2_region_8, "105*regionType=parallelsections*sscl=test8.c:75:75*escl=test8.c:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ); #line 75 "test8.c" #pragma omp sections nowait { #line 77 "test8.c" #pragma omp section { POMP2_Section_begin( &pomp2_region_8, "105*regionType=parallelsections*sscl=test8.c:75:75*escl=test8.c:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ); #line 78 "test8.c" printf( "section 1\n" ); POMP2_Section_end( &pomp2_region_8 ); } #line 79 "test8.c" #pragma omp section { POMP2_Section_begin( &pomp2_region_8, "105*regionType=parallelsections*sscl=test8.c:75:75*escl=test8.c:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ); #line 80 "test8.c" { printf( "section 2\n" ); } POMP2_Section_end( &pomp2_region_8 ); } #line 82 "test8.c" } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_8, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_8, pomp2_old_task ); } POMP2_Sections_exit( &pomp2_region_8 ); } POMP2_Parallel_end( &pomp2_region_8 ); } POMP2_Parallel_join( &pomp2_region_8, pomp2_old_task ); } #line 83 "test8.c" eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test6.c0000644000000000000000000000013112617055645020425 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83088905 30 ctime=1508162367.545890896 eztrace-1.1-7/extlib/opari2/test/data/test6.c0000644000175000017500000000504712617055645021623 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * * Testfile for automated testing of OPARI2 * * @authors Bernd Mohr, Peter Philippen * * @brief Test that the insertion of wrapper functions works correctly, but ONLY on supported functions. */ #include int main() { omp_lock_t lock1; omp_nest_lock_t lock2; omp_sched_t sched; int mod; //************************************************** //* Should be replaced by wrapper functions * //* regardless of "distractions" * //************************************************** omp_init_lock(&lock1); omp_init_nest_lock(&lock2); omp_set_lock(&lock1); omp_set_nest_lock(&lock2); // omp_set_nest_lock(&lock2); omp_unset_lock(&lock1); /*omp_unset_lock(&lock1);*/ omp_unset_nest_lock(&lock2); omp_test_lock(&lock1);/* omp_test_lock(&lock1); */ omp_test_nest_lock(&lock2); omp_destroy_lock(&lock1); omp_destroy_nest_lock(&lock2); //************************************************** //* Not now, but planned for the future! * //************************************************** omp_set_num_threads(4); omp_set_dynamic(0); omp_set_schedule(omp_sched_static, 1); omp_set_nested(0); omp_set_max_active_levels(2); //************************************************** //* No replacement beyond this point! * //************************************************** omp_get_num_threads(); omp_get_max_threads(); omp_get_thread_num(); omp_get_num_procs(); omp_in_parallel(); omp_get_nested(); omp_get_dynamic(); omp_get_schedule(&sched, &mod); omp_get_thread_limit(); omp_get_max_active_levels(); omp_get_level(); omp_get_ancestor_thread_num(0); omp_get_team_size(0); omp_get_active_level(); omp_get_wtime(); omp_get_wtick(); // omp_init_lock(i) /* -- omp_init_lock(i) -- */ /* -- omp_init_lock(i) -- */ printf("omp_init_lock(i) \n"); // omp_init_lock(i) printf("omp_init_lock(i)\"test\"omp_init_lock(i)omp_init_lock(i)\"\"\"\n"); } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test4.c.opari.inc.out0000644000000000000000000000013012617055645023111 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83088905 29 ctime=1508162367.51788845 eztrace-1.1-7/extlib/opari2/test/data/test4.c.opari.inc.out0000644000175000017500000000200012617055645024272 0ustar00trahaytrahay00000000000000#include #define POMP2_DLIST_00001 shared(pomp2_region_1,pomp2_region_2,pomp2_region_3,pomp2_region_4) static POMP2_Region_handle pomp2_region_1 = NULL; static POMP2_Region_handle pomp2_region_2 = NULL; static POMP2_Region_handle pomp2_region_3 = NULL; static POMP2_Region_handle pomp2_region_4 = NULL; #define POMP2_DLIST_00005 shared(pomp2_region_5) static POMP2_Region_handle pomp2_region_5 = NULL; void POMP2_Init_regions_000() { POMP2_Assign_handle( &pomp2_region_1, "60*regionType=parallel*sscl=test4.c:30:30*escl=test4.c:55:55**" ); POMP2_Assign_handle( &pomp2_region_2, "55*regionType=for*sscl=test4.c:33:33*escl=test4.c:36:36**" ); POMP2_Assign_handle( &pomp2_region_3, "74*regionType=sections*sscl=test4.c:38:38*escl=test4.c:44:44*numSections=2**" ); POMP2_Assign_handle( &pomp2_region_4, "58*regionType=single*sscl=test4.c:46:46*escl=test4.c:49:49**" ); POMP2_Assign_handle( &pomp2_region_5, "68*regionType=task*sscl=test4.c:51:51*escl=test4.c:54:54*hasUntied=1**" ); } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test2.f90.out0000644000000000000000000000013112617055645021403 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83088905 30 ctime=1508162367.501887053 eztrace-1.1-7/extlib/opari2/test/data/test2.f90.out0000644000175000017500000002551512617055645022603 0ustar00trahaytrahay00000000000000 #line 1 "test2.f90" ! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test the basic instrumentation of all directives. program test2 include 'test2.f90.opari.inc' integer i integer k integer, save :: j #line 25 "test2.f90" !$omp threadprivate(j) pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_1,& pomp_if, pomp_num_threads, pomp2_old_task, & "62*regionType=parallel*sscl=test2.f90:27:27*escl=test2.f90:0:0**" ) #line 27 "test2.f90" !$omp parallel & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_1) #line 28 "test2.f90" write(*,*) "parallel" call POMP2_Do_enter(pomp2_region_2, & "56*regionType=do*sscl=test2.f90:29:29*escl=test2.f90:0:0**" ) #line 29 "test2.f90" !$omp do do i=1,4 write(*,*) "do",i enddo #line 33 "test2.f90" !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_2, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_2, pomp2_old_task) call POMP2_Do_exit(pomp2_region_2) #line 34 "test2.f90" call POMP2_Flush_enter(pomp2_region_3, & "59*regionType=flush*sscl=test2.f90:35:35*escl=test2.f90:0:0**" ) #line 35 "test2.f90" !$omp flush(k) call POMP2_Flush_exit(pomp2_region_3) #line 36 "test2.f90" call POMP2_Do_enter(pomp2_region_4, & "69*regionType=do*sscl=test2.f90:37:37*escl=test2.f90:0:0*hasOrdered=1**" ) #line 37 "test2.f90" !$omp do ordered do i=1,4 call POMP2_Ordered_enter(pomp2_region_5, & "61*regionType=ordered*sscl=test2.f90:39:39*escl=test2.f90:0:0**" ) #line 39 "test2.f90" !$omp ordered call POMP2_Ordered_begin(pomp2_region_5) #line 40 "test2.f90" write(*,*) "do",i call POMP2_Ordered_end(pomp2_region_5) #line 41 "test2.f90" !$omp end ordered call POMP2_Ordered_exit(pomp2_region_5) #line 42 "test2.f90" enddo #line 43 "test2.f90" !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_4, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_4, pomp2_old_task) call POMP2_Do_exit(pomp2_region_4) #line 44 "test2.f90" call POMP2_Barrier_enter(pomp2_region_6, pomp2_old_task, & "61*regionType=barrier*sscl=test2.f90:45:45*escl=test2.f90:0:0**" ) #line 45 "test2.f90" !$omp barrier call POMP2_Barrier_exit(pomp2_region_6, pomp2_old_task) #line 46 "test2.f90" call POMP2_Sections_enter(pomp2_region_7, & "76*regionType=sections*sscl=test2.f90:47:47*escl=test2.f90:0:0*numSections=0**" ) #line 47 "test2.f90" !$omp sections #line 48 "test2.f90" !$omp section call POMP2_Section_begin(pomp2_region_7, & "76*regionType=sections*sscl=test2.f90:47:47*escl=test2.f90:0:0*numSections=0**" ) #line 49 "test2.f90" write(*,*) "section 1" call POMP2_Section_end(pomp2_region_7) #line 50 "test2.f90" !$omp section call POMP2_Section_begin(pomp2_region_7, & "76*regionType=sections*sscl=test2.f90:47:47*escl=test2.f90:0:0*numSections=1**" ) #line 51 "test2.f90" write(*,*) "section 2" call POMP2_Section_end(pomp2_region_7) #line 52 "test2.f90" !$omp end sections nowait call POMP2_Implicit_barrier_enter(pomp2_region_7, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_7, pomp2_old_task) call POMP2_Sections_exit(pomp2_region_7) #line 53 "test2.f90" #line 54 "test2.f90" !$omp master call POMP2_Master_begin(pomp2_region_8, & "60*regionType=master*sscl=test2.f90:54:54*escl=test2.f90:0:0**" ) #line 55 "test2.f90" write(*,*) "master" call POMP2_Master_end(pomp2_region_8) #line 56 "test2.f90" !$omp end master call POMP2_Critical_enter(pomp2_region_9, & "62*regionType=critical*sscl=test2.f90:58:58*escl=test2.f90:0:0**" ) #line 58 "test2.f90" !$omp critical call POMP2_Critical_begin(pomp2_region_9) #line 59 "test2.f90" write(*,*) "critical" call POMP2_Critical_end(pomp2_region_9) #line 60 "test2.f90" !$omp end critical call POMP2_Critical_exit(pomp2_region_9) #line 61 "test2.f90" call POMP2_Critical_enter(pomp2_region_10, & "82*regionType=critical*sscl=test2.f90:62:62*escl=test2.f90:0:0*criticalName=foobar**" ) #line 62 "test2.f90" !$omp critical(foobar) call POMP2_Critical_begin(pomp2_region_10) #line 63 "test2.f90" write(*,*) "critical(foobar)" call POMP2_Critical_end(pomp2_region_10) #line 64 "test2.f90" !$omp end critical(foobar) call POMP2_Critical_exit(pomp2_region_10) #line 65 "test2.f90" call POMP2_Atomic_enter(pomp2_region_11, & "60*regionType=atomic*sscl=test2.f90:66:66*escl=test2.f90:0:0**" ) #line 66 "test2.f90" !$omp atomic ! do this atomic i = i + 1 call POMP2_Atomic_exit(pomp2_region_11) #line 69 "test2.f90" call POMP2_Single_enter(pomp2_region_12, & "60*regionType=single*sscl=test2.f90:70:70*escl=test2.f90:0:0**" ) #line 70 "test2.f90" !$omp single call POMP2_Single_begin(pomp2_region_12) #line 71 "test2.f90" write(*,*) "single" call POMP2_Single_end(pomp2_region_12) #line 72 "test2.f90" !$omp end single nowait call POMP2_Implicit_barrier_enter(pomp2_region_12, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_12, pomp2_old_task) call POMP2_Single_exit(pomp2_region_12) #line 73 "test2.f90" call POMP2_Workshare_enter(pomp2_region_13, & "63*regionType=workshare*sscl=test2.f90:74:74*escl=test2.f90:0:0**" ) #line 74 "test2.f90" !$omp workshare a = b + c #line 76 "test2.f90" !$omp end workshare nowait call POMP2_Implicit_barrier_enter(pomp2_region_13, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_13, pomp2_old_task) call POMP2_Workshare_exit(pomp2_region_13) #line 77 "test2.f90" call POMP2_Implicit_barrier_enter(pomp2_region_1, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_1, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_1) #line 78 "test2.f90" !$omp end parallel call POMP2_Parallel_join(pomp2_region_1, pomp2_old_task) #line 79 "test2.f90" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_14,& pomp_if, pomp_num_threads, pomp2_old_task, & "62*regionType=parallel*sscl=test2.f90:80:80*escl=test2.f90:0:0**" ) #line 80 "test2.f90" !$omp parallel & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_14) #line 81 "test2.f90" pomp_if = .true. if (pomp_if) then call POMP2_Task_create_begin(pomp2_region_15, pomp2_new_task, & pomp2_old_task, & pomp_if, & "58*regionType=task*sscl=test2.f90:81:81*escl=test2.f90:0:0**" ) end if #line 81 "test2.f90" !$omp task if(pomp_if) firstprivate(pomp2_new_task, pomp_if) if (pomp_if) then call POMP2_Task_begin(pomp2_region_15, pomp2_new_task) end if #line 82 "test2.f90" write(*,*) "task" if (pomp_if) then call POMP2_Task_end(pomp2_region_15) end if #line 83 "test2.f90" !$omp end task if (pomp_if) then call POMP2_Task_create_end(pomp2_region_15, pomp2_old_task) end if #line 84 "test2.f90" call POMP2_Taskwait_begin(pomp2_region_16, pomp2_old_task, & "62*regionType=taskwait*sscl=test2.f90:85:85*escl=test2.f90:0:0**" ) #line 85 "test2.f90" !$omp taskwait call POMP2_Taskwait_end(pomp2_region_16, pomp2_old_task) #line 86 "test2.f90" call POMP2_Implicit_barrier_enter(pomp2_region_14, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_14, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_14) #line 86 "test2.f90" !$omp end parallel call POMP2_Parallel_join(pomp2_region_14, pomp2_old_task) #line 87 "test2.f90" ! $ omp this should be ignored by opari and the compiler ! $ this too end program test2 subroutine POMP2_Init_regions_000() include 'test2.f90.opari.inc' call POMP2_Assign_handle( pomp2_region_1, & "64*regionType=parallel*sscl=test2.f90:27:27*escl=test2.f90:78:78**" ) call POMP2_Assign_handle( pomp2_region_2, & "58*regionType=do*sscl=test2.f90:29:29*escl=test2.f90:33:33**" ) call POMP2_Assign_handle( pomp2_region_3, & "59*regionType=flush*sscl=test2.f90:35:35*escl=test2.f90:0:0**" ) call POMP2_Assign_handle( pomp2_region_4, & "71*regionType=do*sscl=test2.f90:37:37*escl=test2.f90:43:43*hasOrdered=1**" ) call POMP2_Assign_handle( pomp2_region_5, & "63*regionType=ordered*sscl=test2.f90:39:39*escl=test2.f90:41:41**" ) call POMP2_Assign_handle( pomp2_region_6, & "61*regionType=barrier*sscl=test2.f90:45:45*escl=test2.f90:0:0**" ) call POMP2_Assign_handle( pomp2_region_7, & "78*regionType=sections*sscl=test2.f90:47:47*escl=test2.f90:52:52*numSections=2**" ) call POMP2_Assign_handle( pomp2_region_8, & "62*regionType=master*sscl=test2.f90:54:54*escl=test2.f90:56:56**" ) call POMP2_Assign_handle( pomp2_region_9, & "64*regionType=critical*sscl=test2.f90:58:58*escl=test2.f90:60:60**" ) call POMP2_Assign_handle( pomp2_region_10, & "84*regionType=critical*sscl=test2.f90:62:62*escl=test2.f90:64:64*criticalName=foobar**" ) call POMP2_Assign_handle( pomp2_region_11, & "62*regionType=atomic*sscl=test2.f90:66:66*escl=test2.f90:68:68**" ) call POMP2_Assign_handle( pomp2_region_12, & "62*regionType=single*sscl=test2.f90:70:70*escl=test2.f90:72:72**" ) call POMP2_Assign_handle( pomp2_region_13, & "65*regionType=workshare*sscl=test2.f90:74:74*escl=test2.f90:76:76**" ) call POMP2_Assign_handle( pomp2_region_14, & "64*regionType=parallel*sscl=test2.f90:80:80*escl=test2.f90:86:86**" ) call POMP2_Assign_handle( pomp2_region_15, & "60*regionType=task*sscl=test2.f90:81:81*escl=test2.f90:83:83**" ) call POMP2_Assign_handle( pomp2_region_16, & "62*regionType=taskwait*sscl=test2.f90:85:85*escl=test2.f90:0:0**" ) end eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test1.f90.out0000644000000000000000000000013112617055645021402 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83088905 30 ctime=1508162367.469884258 eztrace-1.1-7/extlib/opari2/test/data/test1.f90.out0000644000175000017500000001103512617055645022572 0ustar00trahaytrahay00000000000000 #line 1 "test1.f90" ! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test the parsers ability to find directives and filter strings and comments. program test1 !************************************************ !* The following pragmas should be instrumented * !************************************************ include 'test1.f90.opari.inc' pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_1,& pomp_if, pomp_num_threads, pomp2_old_task, & "62*regionType=parallel*sscl=test1.f90:24:24*escl=test1.f90:0:0**" ) #line 24 "test1.f90" !$omp parallel & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_1) #line 25 "test1.f90" call POMP2_Barrier_enter(pomp2_region_2, pomp2_old_task, & "61*regionType=barrier*sscl=test1.f90:25:25*escl=test1.f90:0:0**" ) #line 25 "test1.f90" !$omp barrier call POMP2_Barrier_exit(pomp2_region_2, pomp2_old_task) #line 26 "test1.f90" call POMP2_Implicit_barrier_enter(pomp2_region_1, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_1, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_1) #line 26 "test1.f90" !$omp end parallel call POMP2_Parallel_join(pomp2_region_1, pomp2_old_task) #line 27 "test1.f90" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_3,& pomp_if, pomp_num_threads, pomp2_old_task, & "62*regionType=parallel*sscl=test1.f90:28:29*escl=test1.f90:0:0**" ) #line 28 "test1.f90" !$omp parallel & !$omp& default(shared) & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_3) #line 30 "test1.f90" call POMP2_Implicit_barrier_enter(pomp2_region_3, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_3, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_3) #line 30 "test1.f90" !$omp end & !$omp& parallel call POMP2_Parallel_join(pomp2_region_3, pomp2_old_task) #line 32 "test1.f90" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_4,& pomp_if, pomp_num_threads, pomp2_old_task, & "62*regionType=parallel*sscl=test1.f90:33:34*escl=test1.f90:0:0**" ) #line 33 "test1.f90" !$omp parallel & !$omp& default(shared) & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_4) #line 35 "test1.f90" call POMP2_Implicit_barrier_enter(pomp2_region_4, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_4, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_4) #line 35 "test1.f90" !$omp end & !$omp& parallel call POMP2_Parallel_join(pomp2_region_4, pomp2_old_task) #line 37 "test1.f90" !************************************** !* The following should be ignored * !************************************** ! comment $omp ! comment !$omp parallel !!$omp mo ! $ omp parallel write(*,*) "!$omp parallel" write(*,*) """!$omp parallel""" end program test1 subroutine POMP2_Init_regions_000() include 'test1.f90.opari.inc' call POMP2_Assign_handle( pomp2_region_1, & "64*regionType=parallel*sscl=test1.f90:24:24*escl=test1.f90:26:26**" ) call POMP2_Assign_handle( pomp2_region_2, & "61*regionType=barrier*sscl=test1.f90:25:25*escl=test1.f90:0:0**" ) call POMP2_Assign_handle( pomp2_region_3, & "64*regionType=parallel*sscl=test1.f90:28:29*escl=test1.f90:30:31**" ) call POMP2_Assign_handle( pomp2_region_4, & "64*regionType=parallel*sscl=test1.f90:33:34*escl=test1.f90:35:36**" ) end eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test5.f90.out0000644000000000000000000000013112617055645021406 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83088905 30 ctime=1508162367.541890546 eztrace-1.1-7/extlib/opari2/test/data/test5.f90.out0000644000175000017500000001370412617055645022603 0ustar00trahaytrahay00000000000000 #line 1 "test5.f90" ! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test the splitting of combined parallel clauses. program test5 include 'test5.f90.opari.inc' integer i,j,k,m logical l integer, dimension(10,10) :: AA, BB, CC integer, save :: t #line 26 "test5.f90" !$omp threadprivate(t) pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_1,& pomp_if, pomp_num_threads, pomp2_old_task, & "85*regionType=paralleldo*sscl=test5.f90:29:37*escl=test5.f90:0:0*scheduleType=dynamic**" ) #line 29 "test5.f90" !$omp parallel & !$omp & private(i,j) & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_1) call POMP2_Do_enter(pomp2_region_1, & "85*regionType=paralleldo*sscl=test5.f90:29:37*escl=test5.f90:0:0*scheduleType=dynamic**" ) #line 29 "test5.f90" !$omp do & !$omp & lastprivate(k) & !$omp & lastprivate & !$omp & ( & !$omp & l & !$omp & ) schedule(dynamic & !$omp & ) do i=1,4 write(*,*) "parallel do ", i k=k+i end do !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_1, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_1, pomp2_old_task) call POMP2_Do_exit(pomp2_region_1) call POMP2_Parallel_end(pomp2_region_1) !$omp end parallel call POMP2_Parallel_join(pomp2_region_1, pomp2_old_task) #line 43 "test5.f90" if(k .gt. 0) l = .true. pomp_num_threads = 2 pomp_if = ( l ) call POMP2_Parallel_fork(pomp2_region_2,& pomp_if, pomp_num_threads, pomp2_old_task, & "109*regionType=parallelsections*sscl=test5.f90:45:46*escl=test5.f90:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ) #line 45 "test5.f90" !$omp parallel default(shared) & !$omp &firstprivate(j) copyin(t) reduction(+:l) & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_2) call POMP2_Sections_enter(pomp2_region_2) #line 45 "test5.f90" !$omp sections & !$omp & lastprivate(i) #line 47 "test5.f90" !$omp section call POMP2_Section_begin(pomp2_region_2, & "109*regionType=parallelsections*sscl=test5.f90:45:46*escl=test5.f90:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ) #line 48 "test5.f90" write(*,*) "section1" call POMP2_Section_end(pomp2_region_2) #line 49 "test5.f90" !$omp section call POMP2_Section_begin(pomp2_region_2, & "109*regionType=parallelsections*sscl=test5.f90:45:46*escl=test5.f90:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ) #line 50 "test5.f90" write(*,*) "section2" call POMP2_Section_end(pomp2_region_2) #line 51 "test5.f90" !$omp section call POMP2_Section_begin(pomp2_region_2, & "109*regionType=parallelsections*sscl=test5.f90:45:46*escl=test5.f90:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ) #line 52 "test5.f90" write(*,*) "section3" call POMP2_Section_end(pomp2_region_2) !$omp end sections nowait call POMP2_Implicit_barrier_enter(pomp2_region_2, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_2, pomp2_old_task) call POMP2_Sections_exit(pomp2_region_2) call POMP2_Parallel_end(pomp2_region_2) !$omp end parallel call POMP2_Parallel_join(pomp2_region_2, pomp2_old_task) #line 54 "test5.f90" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_3,& pomp_if, pomp_num_threads, pomp2_old_task, & "71*regionType=parallelworkshare*sscl=test5.f90:55:55*escl=test5.f90:0:0**" ) #line 55 "test5.f90" !$omp parallel & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_3) call POMP2_Workshare_enter(pomp2_region_3, & "71*regionType=parallelworkshare*sscl=test5.f90:55:55*escl=test5.f90:0:0**" ) #line 55 "test5.f90" !$omp workshare AA = BB BB = CC !$omp end workshare nowait call POMP2_Implicit_barrier_enter(pomp2_region_3, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_3, pomp2_old_task) call POMP2_Workshare_exit(pomp2_region_3) call POMP2_Parallel_end(pomp2_region_3) !$omp end parallel call POMP2_Parallel_join(pomp2_region_3, pomp2_old_task) #line 59 "test5.f90" end program test5 subroutine POMP2_Init_regions_000() include 'test5.f90.opari.inc' call POMP2_Assign_handle( pomp2_region_1, & "87*regionType=paralleldo*sscl=test5.f90:29:37*escl=test5.f90:42:42*scheduleType=dynamic**" ) call POMP2_Assign_handle( pomp2_region_2, & "111*regionType=parallelsections*sscl=test5.f90:45:46*escl=test5.f90:53:53*hasIf=1*hasNumThreads=1*hasReduction=1**" ) call POMP2_Assign_handle( pomp2_region_3, & "73*regionType=parallelworkshare*sscl=test5.f90:55:55*escl=test5.f90:58:58**" ) end eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test7.c.opari.inc.out0000644000000000000000000000013112617055645023115 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.83088905 30 ctime=1508162367.553891594 eztrace-1.1-7/extlib/opari2/test/data/test7.c.opari.inc.out0000644000175000017500000000232512617055645024307 0ustar00trahaytrahay00000000000000#include static POMP2_Region_handle pomp2_region_1 = NULL; #define POMP2_DLIST_00002 shared(pomp2_region_2) static POMP2_Region_handle pomp2_region_2 = NULL; #define POMP2_DLIST_00003 shared(pomp2_region_3) static POMP2_Region_handle pomp2_region_3 = NULL; #define POMP2_DLIST_00004 shared(pomp2_region_4,pomp2_region_5,pomp2_region_6) static POMP2_Region_handle pomp2_region_4 = NULL; static POMP2_Region_handle pomp2_region_5 = NULL; static POMP2_Region_handle pomp2_region_6 = NULL; void POMP2_Init_regions_000() { POMP2_Assign_handle( &pomp2_region_1, "77*regionType=region*sscl=test7.c:30:30*escl=test7.c:64:64*userRegionName=foo**" ); POMP2_Assign_handle( &pomp2_region_2, "60*regionType=parallel*sscl=test7.c:32:32*escl=test7.c:33:33**" ); POMP2_Assign_handle( &pomp2_region_3, "60*regionType=parallel*sscl=test7.c:42:42*escl=test7.c:43:43**" ); POMP2_Assign_handle( &pomp2_region_4, "60*regionType=parallel*sscl=test7.c:50:50*escl=test7.c:57:57**" ); POMP2_Assign_handle( &pomp2_region_5, "80*regionType=region*sscl=test7.c:52:52*escl=test7.c:56:56*userRegionName=phase1**" ); POMP2_Assign_handle( &pomp2_region_6, "57*regionType=barrier*sscl=test7.c:54:54*escl=test7.c:0:0**" ); } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test5.f90.opari.inc.out0000644000000000000000000000013112617055645023267 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83088905 30 ctime=1508162367.541890546 eztrace-1.1-7/extlib/opari2/test/data/test5.f90.opari.inc.out0000644000175000017500000000075512617055645024466 0ustar00trahaytrahay00000000000000 INTEGER( KIND=8 ) :: pomp2_region_1 INTEGER( KIND=8 ) :: pomp2_region_2 INTEGER( KIND=8 ) :: pomp2_region_3 integer ( kind=4 ) :: pomp2_lib_get_max_threads logical :: pomp2_test_lock integer ( kind=4 ) :: pomp2_test_nest_lock integer ( kind=8 ) :: pomp2_old_task, pomp2_new_task logical :: pomp_if integer ( kind=4 ) :: pomp_num_threads common /cb000/ pomp2_region_1,& pomp2_region_2,& pomp2_region_3 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test8.c.opari.inc.out0000644000000000000000000000013112617055645023116 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.83088905 30 ctime=1508162367.561892293 eztrace-1.1-7/extlib/opari2/test/data/test8.c.opari.inc.out0000644000175000017500000000357112617055645024314 0ustar00trahaytrahay00000000000000#include #define POMP2_DLIST_00001 shared(pomp2_region_1,pomp2_region_2,pomp2_region_3) static POMP2_Region_handle pomp2_region_1 = NULL; static POMP2_Region_handle pomp2_region_2 = NULL; static POMP2_Region_handle pomp2_region_3 = NULL; #define POMP2_DLIST_00004 shared(pomp2_region_4) static POMP2_Region_handle pomp2_region_4 = NULL; #define POMP2_DLIST_00005 shared(pomp2_region_5) static POMP2_Region_handle pomp2_region_5 = NULL; #define POMP2_DLIST_00006 shared(pomp2_region_6,pomp2_region_7) static POMP2_Region_handle pomp2_region_6 = NULL; static POMP2_Region_handle pomp2_region_7 = NULL; #define POMP2_DLIST_00008 shared(pomp2_region_8) static POMP2_Region_handle pomp2_region_8 = NULL; void POMP2_Init_regions_000() { POMP2_Assign_handle( &pomp2_region_1, "99*regionType=parallel*sscl=test8.c:36:36*escl=test8.c:55:55*hasIf=1*hasNumThreads=1*hasReduction=1**" ); POMP2_Assign_handle( &pomp2_region_2, "107*regionType=for*sscl=test8.c:40:40*escl=test8.c:45:45*hasReduction=1*scheduleType=dynamic,5*hasCollapse=1**" ); POMP2_Assign_handle( &pomp2_region_3, "89*regionType=sections*sscl=test8.c:47:47*escl=test8.c:54:54*numSections=2*hasReduction=1**" ); POMP2_Assign_handle( &pomp2_region_4, "60*regionType=parallel*sscl=test8.c:57:57*escl=test8.c:63:63**" ); POMP2_Assign_handle( &pomp2_region_5, "76*regionType=task*sscl=test8.c:59:59*escl=test8.c:62:62*hasIf=1*hasUntied=1**" ); POMP2_Assign_handle( &pomp2_region_6, "157*regionType=parallelfor*sscl=test8.c:66:66*escl=test8.c:73:73*hasIf=1*hasNumThreads=1*hasReduction=1*scheduleType=static,chunkif*hasCollapse=1*hasOrdered=1**" ); POMP2_Assign_handle( &pomp2_region_7, "59*regionType=ordered*sscl=test8.c:69:69*escl=test8.c:70:70**" ); POMP2_Assign_handle( &pomp2_region_8, "107*regionType=parallelsections*sscl=test8.c:75:75*escl=test8.c:82:82*hasIf=1*hasNumThreads=1*hasReduction=1**" ); } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test1.c.opari.inc.out0000644000000000000000000000013112617055645023107 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83088905 30 ctime=1508162367.449882512 eztrace-1.1-7/extlib/opari2/test/data/test1.c.opari.inc.out0000644000175000017500000000074412617055645024304 0ustar00trahaytrahay00000000000000#include #define POMP2_DLIST_00001 shared(pomp2_region_1) static POMP2_Region_handle pomp2_region_1 = NULL; #define POMP2_DLIST_00002 shared(pomp2_region_2) static POMP2_Region_handle pomp2_region_2 = NULL; void POMP2_Init_regions_000() { POMP2_Assign_handle( &pomp2_region_1, "60*regionType=parallel*sscl=test1.c:34:34*escl=test1.c:37:37**" ); POMP2_Assign_handle( &pomp2_region_2, "60*regionType=parallel*sscl=test1.c:39:41*escl=test1.c:44:44**" ); } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test2.c.opari.inc.out0000644000000000000000000000013112617055645023110 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83088905 30 ctime=1508162367.477884957 eztrace-1.1-7/extlib/opari2/test/data/test2.c.opari.inc.out0000644000175000017500000000541312617055645024303 0ustar00trahaytrahay00000000000000#include #define POMP2_DLIST_00001 shared(pomp2_region_1,pomp2_region_2,pomp2_region_3,pomp2_region_4,pomp2_region_5,pomp2_region_6,pomp2_region_7,pomp2_region_8,pomp2_region_9,pomp2_region_10,pomp2_region_11,pomp2_region_12) static POMP2_Region_handle pomp2_region_1 = NULL; static POMP2_Region_handle pomp2_region_2 = NULL; static POMP2_Region_handle pomp2_region_3 = NULL; static POMP2_Region_handle pomp2_region_4 = NULL; static POMP2_Region_handle pomp2_region_5 = NULL; static POMP2_Region_handle pomp2_region_6 = NULL; static POMP2_Region_handle pomp2_region_7 = NULL; static POMP2_Region_handle pomp2_region_8 = NULL; static POMP2_Region_handle pomp2_region_9 = NULL; static POMP2_Region_handle pomp2_region_10 = NULL; static POMP2_Region_handle pomp2_region_11 = NULL; static POMP2_Region_handle pomp2_region_12 = NULL; #define POMP2_DLIST_00013 shared(pomp2_region_13,pomp2_region_15) static POMP2_Region_handle pomp2_region_13 = NULL; #define POMP2_DLIST_00014 shared(pomp2_region_14) static POMP2_Region_handle pomp2_region_14 = NULL; static POMP2_Region_handle pomp2_region_15 = NULL; void POMP2_Init_regions_000() { POMP2_Assign_handle( &pomp2_region_1, "60*regionType=parallel*sscl=test2.c:34:34*escl=test2.c:89:89**" ); POMP2_Assign_handle( &pomp2_region_2, "55*regionType=for*sscl=test2.c:38:38*escl=test2.c:42:42**" ); POMP2_Assign_handle( &pomp2_region_3, "55*regionType=flush*sscl=test2.c:44:44*escl=test2.c:0:0**" ); POMP2_Assign_handle( &pomp2_region_4, "57*regionType=barrier*sscl=test2.c:46:46*escl=test2.c:0:0**" ); POMP2_Assign_handle( &pomp2_region_5, "68*regionType=for*sscl=test2.c:48:48*escl=test2.c:54:54*hasOrdered=1**" ); POMP2_Assign_handle( &pomp2_region_6, "59*regionType=ordered*sscl=test2.c:50:50*escl=test2.c:53:53**" ); POMP2_Assign_handle( &pomp2_region_7, "74*regionType=sections*sscl=test2.c:56:56*escl=test2.c:62:62*numSections=2**" ); POMP2_Assign_handle( &pomp2_region_8, "58*regionType=master*sscl=test2.c:64:64*escl=test2.c:67:67**" ); POMP2_Assign_handle( &pomp2_region_9, "60*regionType=critical*sscl=test2.c:69:69*escl=test2.c:72:72**" ); POMP2_Assign_handle( &pomp2_region_10, "80*regionType=critical*sscl=test2.c:74:74*escl=test2.c:77:77*criticalName=foobar**" ); POMP2_Assign_handle( &pomp2_region_11, "58*regionType=atomic*sscl=test2.c:79:79*escl=test2.c:82:82**" ); POMP2_Assign_handle( &pomp2_region_12, "58*regionType=single*sscl=test2.c:85:85*escl=test2.c:88:88**" ); POMP2_Assign_handle( &pomp2_region_13, "60*regionType=parallel*sscl=test2.c:91:91*escl=test2.c:99:99**" ); POMP2_Assign_handle( &pomp2_region_14, "56*regionType=task*sscl=test2.c:93:93*escl=test2.c:96:96**" ); POMP2_Assign_handle( &pomp2_region_15, "58*regionType=taskwait*sscl=test2.c:98:98*escl=test2.c:0:0**" ); } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test3.f900000644000000000000000000000013112617055645020576 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83088905 30 ctime=1508162367.505887402 eztrace-1.1-7/extlib/opari2/test/data/test3.f900000644000175000017500000000402512617055645021767 0ustar00trahaytrahay00000000000000! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Special tests for end pragma substitution and nested parallel regions/loops. program test3 integer i, j, k !$OMP parallel !$OMP do do 12,i = 1,8 a=a+1 12 continue !$OMP end parallel !$OMP parallel do do 13,i = 1,8 a=a+1 13 continue !$OMP parallel !$OMP do do 14,i = 1,8 a=a+1 14 continue !$OMP atomic me = me + omp_get_thread_num() !$OMP end parallel !$OMP parallel do do 15,i = 1,8 15 a=a+1 !$OMP parallel private(me,glob) me = omp_get_thread_num() !$OMP end parallel ! ********************** ! * nested parallelism * ! ********************** !$omp parallel !$omp parallel !$omp parallel !$omp parallel do do i = 1,8 a=a+1 enddo !$omp end parallel do !$omp end parallel !$omp end parallel !$omp end parallel ! ******************************************* ! * end pragma substitution in nested loops * ! ******************************************* !$OMP parallel do do 16, i = 1,8 do 16, j = 1,8 a=a+1 16 continue do 17,i = 1,8 !$OMP parallel do do 18, j = 1,8 a=a+1 18 continue 17 continue !$omp parallel do do if (a .gt. 0) then exit endif enddo !$OMP parallel do loopLabel: do i = 1,8 a=a+1 end do loopLabel end program test3 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test1_a.f.out0000644000000000000000000000013112617055645021531 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83088905 30 ctime=1508162367.473884607 eztrace-1.1-7/extlib/opari2/test/data/test1_a.f.out0000644000175000017500000000341112617055645022720 0ustar00trahaytrahay00000000000000 #line 1 "test1_a.f" ! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test the parsers ability to insert a necessary include statement at the right places. integer function f0() implicit &none include 'test1_a.f.opari.inc' double precision :: d write (*,*) "function f0" f0 = 5 return end function f0 subroutine s0 include 'test1_a.f.opari.inc' write (*,*) "subroutine s0" end subroutine s0 integer function f1(a) !interface include 'test1_a.f.opari.inc' integer :: a, result write (*,*) "function f1" f1 = a return end function f1 recursive subroutine s1(a) include 'test1_a.f.opari.inc' integer :: a write (*,*) "subroutine s1" write (*,*) "keyword interface inside a string" call ss1() entry ss1() write (*,*) "entry ss1" end subroutine s1 program otest integer :: i, f0, f1, function include 'test1_a.f.opari.inc' function = 0 write (*,*) 'program otest' i = f0() i = f1(2) call s0 call s1(4) end program otest eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test8.f0000644000000000000000000000013112617055645020432 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.83088905 30 ctime=1508162367.569892992 eztrace-1.1-7/extlib/opari2/test/data/test8.f0000644000175000017500000000360712617055645021630 0ustar00trahaytrahay00000000000000! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Tests whether specific clauses are found and inserted into the CTC string. program test8 integer i integer k integer, save :: j !$omp threadprivate(j) !$omp parallel if(k.eq.0) num_threads(4) reduction(+:k) write(*,*) "parallel" !$omp do reduction(+:k) schedule(dynamic, 5) collapse(1) do i=1,4 write(*,*) "do",i k = k + 1 enddo !$omp end do !$omp sections reduction(+:k) !$omp section write(*,*) "section 1" !$omp section write(*,*) "section 2" !$omp end sections !$omp end parallel !$omp parallel !$omp task untied write(*,*) "task" !$omp end task !$omp end parallel !$omp parallel do num_threads(4) reduction(+:k) !$omp+ schedule(static,chunkif) collapse(1) ordered if(.true.) do i=1,4 !$omp ordered write(*,*) "do",i !$omp end ordered k = k + 1 enddo !$omp end parallel do !$omp parallel sections if((i+k)>5) num_threads(4) reduction(+:k) !$omp section write(*,*) "section 1" !$omp section write(*,*) "section 2" !$omp end parallel sections !$omp parallel workshare if(.true.) num_threads(4) reduction(+:k) write(*,*) "workshare" !$omp end parallel workshare end program test2 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test8.f90.opari.inc.out0000644000000000000000000000013112617055645023272 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.83088905 30 ctime=1508162367.577893691 eztrace-1.1-7/extlib/opari2/test/data/test8.f90.opari.inc.out0000644000175000017500000000164312617055645024466 0ustar00trahaytrahay00000000000000 INTEGER( KIND=8 ) :: pomp2_region_1 INTEGER( KIND=8 ) :: pomp2_region_2 INTEGER( KIND=8 ) :: pomp2_region_3 INTEGER( KIND=8 ) :: pomp2_region_4 INTEGER( KIND=8 ) :: pomp2_region_5 INTEGER( KIND=8 ) :: pomp2_region_6 INTEGER( KIND=8 ) :: pomp2_region_7 INTEGER( KIND=8 ) :: pomp2_region_8 INTEGER( KIND=8 ) :: pomp2_region_9 integer ( kind=4 ) :: pomp2_lib_get_max_threads logical :: pomp2_test_lock integer ( kind=4 ) :: pomp2_test_nest_lock integer ( kind=8 ) :: pomp2_old_task, pomp2_new_task logical :: pomp_if integer ( kind=4 ) :: pomp_num_threads common /cb000/ pomp2_region_1,& pomp2_region_2,& pomp2_region_3,& pomp2_region_4,& pomp2_region_5,& pomp2_region_6,& pomp2_region_7,& pomp2_region_8,& pomp2_region_9 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test6.f90.out0000644000000000000000000000013112617055645021407 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.83088905 30 ctime=1508162367.549891245 eztrace-1.1-7/extlib/opari2/test/data/test6.f90.out0000644000175000017500000000526112617055645022603 0ustar00trahaytrahay00000000000000 #line 1 "test6.f90" ! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test that the insertion of wrapper functions works correctly, but ONLY on supported functions. program test6 use omp_lib include 'test6.f90.opari.inc' integer (kind=omp_lock_kind) lock1 integer (kind=omp_nest_lock_kind) lock2 integer (kind=omp_sched_kind) sched integer mod ! ************************************************** ! * Should be replaced by wrapper functions * ! * regardless of "distractions" * ! ************************************************** call POMP2_Init_lock(lock1); call POMP2_Init_nest_lock(lock2) call POMP2_Set_lock(lock1); write(*,*) "omp_set_lock(lock1)" call POMP2_Set_nest_lock(lock2) ! omp_set_nest_lock(lock2); call POMP2_Unset_lock(lock1); !omp_unset_lock(lock1); call POMP2_Unset_nest_lock(lock2) !$ mod = POMP2_Test_lock(lock1) !$ mod = POMP2_Test_nest_lock(lock2) mod = POMP2_Test_lock(lock1) mod = POMP2_Test_nest_lock(lock2) call POMP2_Destroy_lock(lock1) call POMP2_Destroy_nest_lock(lock2) ! ************************************************** ! * Not now, but planned for the future! * ! ************************************************** call omp_set_num_threads(4) call omp_set_dynamic(.true.) call omp_set_schedule(omp_sched_static, 1) call omp_set_nested(.true.) call omp_set_max_active_levels(2) ! ************************************************** ! * No replacement beyond this point! * ! ************************************************** ! call omp_init_lock(i) write(*,*) "omp_init_lock(i)", 'omp_init_lock(i)' ! call omp_init_lock(i) write(*,*) "omp_init_lock(i)""test", """omp_init_lock(i)", "omp_init_lock(i)""", """", """""""", & "omp_init_lock(i) ",& ! ",& " + call omp_init_lock(i)" ! call omp_init_lock(i) ! call omp_init_lock(i) ! call omp_init_lock(i) ; call omp_set_lock(i) ! write(*,*) "call omp_init_lock(i)" ; call omp_init_lock(i) !$C99 call omp_init_lock(i) !$DOMP call omp_init_lock(i) end program test6 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test5.c0000644000000000000000000000013112617055645020424 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83088905 30 ctime=1508162367.521888799 eztrace-1.1-7/extlib/opari2/test/data/test5.c0000644000175000017500000000304512617055645021616 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * * Testfile for automated testing of OPARI2 * * @authors Bernd Mohr, Peter Philippen * * @brief Test the splitting of combined parallel clauses. */ #include int t; #pragma omp threadprivate(t) int main() { int i, j, k, l; l=0; #pragma omp parallel /* parallel */ \ for /* for */ \ lastprivate(k) /* for */ \ private(i,j), /* parallel */ \ lastprivate /* for */ \ ( /* for */ \ l /* for */ \ ), schedule(dynamic /* for */ \ ) for(i=0; i<4;++i) { printf("parallel for %d\n", i); k+=i; } #pragma omp parallel sections if(k) num_threads(2) lastprivate(i) firstprivate(j) default(shared) copyin(t) reduction(+:l) { #pragma omp section { printf("Section 1\n"); } #pragma omp section { printf("Section 2\n"); } #pragma omp section { printf("Section 3\n"); } } } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test5.f.out0000644000000000000000000000013112617055645021235 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83088905 30 ctime=1508162367.537890197 eztrace-1.1-7/extlib/opari2/test/data/test5.f.out0000644000175000017500000001344112617055645022430 0ustar00trahaytrahay00000000000000 #line 1 "test5.f" ! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test the splitting of combined parallel clauses. program test5 include 'test5.f.opari.inc' integer i,j,k,m logical l integer, dimension(10,10) :: AA, BB, CC integer, save :: t #line 26 "test5.f" !$omp threadprivate(t) pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_1, &pomp_if, pomp_num_threads, pomp2_old_task, &"82*regionType=paralleldo*sscl=test5.f:29:37*escl=test5.f:0:"// &"0*scheduleType=dynamic**" ) #line 29 "test5.f" !$omp parallel !$omp+ private(i,j) !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_1) call POMP2_Do_enter(pomp2_region_1, &"82*regionType=paralleldo*sscl=test5.f:29:37*escl=test5.f:0:"// &"0*scheduleType=dynamic**" ) #line 29 "test5.f" !$omp do !$omp+ lastprivate(k) !$omp+ lastprivate !$omp+ ( !$omp+ l !$omp+ ) schedule(dynamic !$omp+ ) do i=1,4 write(*,*) "parallel do ", i k=k+i end do !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_1, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_1, pomp2_old_task) call POMP2_Do_exit(pomp2_region_1) call POMP2_Parallel_end(pomp2_region_1) !$omp end parallel call POMP2_Parallel_join(pomp2_region_1, pomp2_old_task) #line 43 "test5.f" if(k .gt. 0) l = .true. pomp_num_threads = 2 pomp_if = ( l ) call POMP2_Parallel_fork(pomp2_region_2, &pomp_if, pomp_num_threads, pomp2_old_task, &"106*regionType=parallelsections*sscl=test5.f:45:46*escl=tes"// &"t5.f:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ) #line 45 "test5.f" !$omp parallel default(shared) !$omp+ firstprivate(j) copyin(t) reduction(+:l) !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_2) call POMP2_Sections_enter(pomp2_region_2) #line 45 "test5.f" !$omp sections !$omp+ lastprivate(i) #line 47 "test5.f" !$omp section call POMP2_Section_begin(pomp2_region_2, &"106*regionType=parallelsections*sscl=test5.f:45:46*escl=tes"// &"t5.f:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ) #line 48 "test5.f" write(*,*) "section1" call POMP2_Section_end(pomp2_region_2) #line 49 "test5.f" !$omp section call POMP2_Section_begin(pomp2_region_2, &"106*regionType=parallelsections*sscl=test5.f:45:46*escl=tes"// &"t5.f:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ) #line 50 "test5.f" write(*,*) "section2" call POMP2_Section_end(pomp2_region_2) #line 51 "test5.f" !$omp section call POMP2_Section_begin(pomp2_region_2, &"106*regionType=parallelsections*sscl=test5.f:45:46*escl=tes"// &"t5.f:0:0*hasIf=1*hasNumThreads=1*hasReduction=1**" ) #line 52 "test5.f" write(*,*) "section3" call POMP2_Section_end(pomp2_region_2) !$omp end sections nowait call POMP2_Implicit_barrier_enter(pomp2_region_2, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_2, pomp2_old_task) call POMP2_Sections_exit(pomp2_region_2) call POMP2_Parallel_end(pomp2_region_2) !$omp end parallel call POMP2_Parallel_join(pomp2_region_2, pomp2_old_task) #line 54 "test5.f" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_3, &pomp_if, pomp_num_threads, pomp2_old_task, &"68*regionType=parallelworkshare*sscl=test5.f:55:55*escl=tes"// &"t5.f:0:0**" ) #line 55 "test5.f" !$omp parallel !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_3) call POMP2_Workshare_enter(pomp2_region_3, &"68*regionType=parallelworkshare*sscl=test5.f:55:55*escl=tes"// &"t5.f:0:0**" ) #line 55 "test5.f" !$omp workshare AA = BB BB = CC !$omp end workshare nowait call POMP2_Implicit_barrier_enter(pomp2_region_3, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_3, pomp2_old_task) call POMP2_Workshare_exit(pomp2_region_3) call POMP2_Parallel_end(pomp2_region_3) !$omp end parallel call POMP2_Parallel_join(pomp2_region_3, pomp2_old_task) #line 59 "test5.f" end program test5 subroutine POMP2_Init_regions_000() include 'test5.f.opari.inc' call POMP2_Assign_handle( pomp2_region_1, &"84*regionType=paralleldo*sscl=test5.f:29:37*escl=test5.f:42"// &":42*scheduleType=dynamic**" ) call POMP2_Assign_handle( pomp2_region_2, &"108*regionType=parallelsections*sscl=test5.f:45:46*escl=tes"// &"t5.f:53:53*hasIf=1*hasNumThreads=1*hasReduction=1**" ) call POMP2_Assign_handle( pomp2_region_3, &"70*regionType=parallelworkshare*sscl=test5.f:55:55*escl=tes"// &"t5.f:58:58**" ) end eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test3.c.opari.inc.out0000644000000000000000000000013112617055645023111 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83088905 30 ctime=1508162367.501887053 eztrace-1.1-7/extlib/opari2/test/data/test3.c.opari.inc.out0000644000175000017500000000744512617055645024313 0ustar00trahaytrahay00000000000000#include #define POMP2_DLIST_00001 shared(pomp2_region_1,pomp2_region_2) static POMP2_Region_handle pomp2_region_1 = NULL; static POMP2_Region_handle pomp2_region_2 = NULL; #define POMP2_DLIST_00003 shared(pomp2_region_3,pomp2_region_4) static POMP2_Region_handle pomp2_region_3 = NULL; static POMP2_Region_handle pomp2_region_4 = NULL; #define POMP2_DLIST_00005 shared(pomp2_region_5,pomp2_region_6) static POMP2_Region_handle pomp2_region_5 = NULL; static POMP2_Region_handle pomp2_region_6 = NULL; #define POMP2_DLIST_00007 shared(pomp2_region_7,pomp2_region_8) static POMP2_Region_handle pomp2_region_7 = NULL; static POMP2_Region_handle pomp2_region_8 = NULL; #define POMP2_DLIST_00009 shared(pomp2_region_9,pomp2_region_10) static POMP2_Region_handle pomp2_region_9 = NULL; static POMP2_Region_handle pomp2_region_10 = NULL; #define POMP2_DLIST_00011 shared(pomp2_region_11) static POMP2_Region_handle pomp2_region_11 = NULL; #define POMP2_DLIST_00012 shared(pomp2_region_12) static POMP2_Region_handle pomp2_region_12 = NULL; #define POMP2_DLIST_00013 shared(pomp2_region_13,pomp2_region_14) static POMP2_Region_handle pomp2_region_13 = NULL; static POMP2_Region_handle pomp2_region_14 = NULL; #define POMP2_DLIST_00015 shared(pomp2_region_15,pomp2_region_16,pomp2_region_17,pomp2_region_18,pomp2_region_19,pomp2_region_20) static POMP2_Region_handle pomp2_region_15 = NULL; static POMP2_Region_handle pomp2_region_16 = NULL; static POMP2_Region_handle pomp2_region_17 = NULL; static POMP2_Region_handle pomp2_region_18 = NULL; static POMP2_Region_handle pomp2_region_19 = NULL; static POMP2_Region_handle pomp2_region_20 = NULL; void POMP2_Init_regions_000() { POMP2_Assign_handle( &pomp2_region_1, "60*regionType=parallel*sscl=test3.c:32:32*escl=test3.c:39:39**" ); POMP2_Assign_handle( &pomp2_region_2, "55*regionType=for*sscl=test3.c:34:34*escl=test3.c:38:38**" ); POMP2_Assign_handle( &pomp2_region_3, "60*regionType=parallel*sscl=test3.c:41:41*escl=test3.c:46:46**" ); POMP2_Assign_handle( &pomp2_region_4, "55*regionType=for*sscl=test3.c:42:42*escl=test3.c:46:46**" ); POMP2_Assign_handle( &pomp2_region_5, "60*regionType=parallel*sscl=test3.c:48:48*escl=test3.c:53:53**" ); POMP2_Assign_handle( &pomp2_region_6, "58*regionType=master*sscl=test3.c:50:50*escl=test3.c:52:52**" ); POMP2_Assign_handle( &pomp2_region_7, "60*regionType=parallel*sscl=test3.c:55:55*escl=test3.c:59:59**" ); POMP2_Assign_handle( &pomp2_region_8, "58*regionType=single*sscl=test3.c:57:57*escl=test3.c:58:58**" ); POMP2_Assign_handle( &pomp2_region_9, "60*regionType=parallel*sscl=test3.c:61:61*escl=test3.c:63:63**" ); POMP2_Assign_handle( &pomp2_region_10, "60*regionType=critical*sscl=test3.c:62:62*escl=test3.c:63:63**" ); POMP2_Assign_handle( &pomp2_region_11, "60*regionType=parallel*sscl=test3.c:69:69*escl=test3.c:81:81**" ); POMP2_Assign_handle( &pomp2_region_12, "60*regionType=parallel*sscl=test3.c:71:71*escl=test3.c:80:80**" ); POMP2_Assign_handle( &pomp2_region_13, "60*regionType=parallel*sscl=test3.c:73:73*escl=test3.c:79:79**" ); POMP2_Assign_handle( &pomp2_region_14, "55*regionType=for*sscl=test3.c:75:75*escl=test3.c:78:78**" ); POMP2_Assign_handle( &pomp2_region_15, "62*regionType=parallel*sscl=test3.c:87:87*escl=test3.c:121:121**" ); POMP2_Assign_handle( &pomp2_region_16, "55*regionType=for*sscl=test3.c:89:89*escl=test3.c:94:94**" ); POMP2_Assign_handle( &pomp2_region_17, "57*regionType=for*sscl=test3.c:96:96*escl=test3.c:103:103**" ); POMP2_Assign_handle( &pomp2_region_18, "59*regionType=for*sscl=test3.c:105:105*escl=test3.c:108:108**" ); POMP2_Assign_handle( &pomp2_region_19, "59*regionType=for*sscl=test3.c:110:110*escl=test3.c:114:114**" ); POMP2_Assign_handle( &pomp2_region_20, "59*regionType=for*sscl=test3.c:116:116*escl=test3.c:120:120**" ); } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test7.f900000644000000000000000000000013112617055645020602 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.83088905 30 ctime=1508162367.561892293 eztrace-1.1-7/extlib/opari2/test/data/test7.f900000644000175000017500000000203312617055645021770 0ustar00trahaytrahay00000000000000! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Tests user instrumentation directives. program test7 !$POMP INST INIT !$POMP INST OFF !$POMP INST BEGIN(foo) !$OMP PARALLEL i = 1 !$OMP end PARALLEL !$POMP INST END(foo) !$POMP INST ON !$POMP NOINSTRUMENT !$OMP PARALLEL i = 2 !$OMP end PARALLEL !$POMP INSTRUMENT !$OMP PARALLEL i = 3 !$OMP end PARALLEL !$POMP INST FINALIZE end program test7 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test1.f.out0000644000000000000000000000013112617055645021231 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83088905 30 ctime=1508162367.457883209 eztrace-1.1-7/extlib/opari2/test/data/test1.f.out0000644000175000017500000001350312617055645022423 0ustar00trahaytrahay00000000000000 #line 1 "test1.f" ! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test the parsers ability to find directives and filter strings and comments. program test1 include 'test1.f.opari.inc' integer a !************************************************ !* The following pragmas should be instrumented * !************************************************ pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_1, &pomp_if, pomp_num_threads, pomp2_old_task, &"59*regionType=parallel*sscl=test1.f:25:25*escl=test1.f:0:0*"// &"*" ) #line 25 "test1.f" c$omp parallel !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_1) #line 26 "test1.f" call POMP2_Barrier_enter(pomp2_region_2, pomp2_old_task, &"58*regionType=barrier*sscl=test1.f:26:26*escl=test1.f:0:0**"// &"" ) #line 26 "test1.f" *$omp barrier call POMP2_Barrier_exit(pomp2_region_2, pomp2_old_task) #line 27 "test1.f" call POMP2_Barrier_enter(pomp2_region_3, pomp2_old_task, &"58*regionType=barrier*sscl=test1.f:27:27*escl=test1.f:0:0**"// &"" ) #line 27 "test1.f" !$omp barrier call POMP2_Barrier_exit(pomp2_region_3, pomp2_old_task) #line 28 "test1.f" call POMP2_Implicit_barrier_enter(pomp2_region_1, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_1, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_1) #line 28 "test1.f" !$omp end parallel call POMP2_Parallel_join(pomp2_region_1, pomp2_old_task) #line 29 "test1.f" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_4, &pomp_if, pomp_num_threads, pomp2_old_task, &"59*regionType=parallel*sscl=test1.f:30:31*escl=test1.f:0:0*"// &"*" ) #line 30 "test1.f" !$omp parallel !$omp& default(shared) !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_4) #line 32 "test1.f" call POMP2_Implicit_barrier_enter(pomp2_region_4, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_4, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_4) #line 32 "test1.f" !$omp end !$omp+ parallel call POMP2_Parallel_join(pomp2_region_4, pomp2_old_task) #line 34 "test1.f" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_5, &pomp_if, pomp_num_threads, pomp2_old_task, &"59*regionType=parallel*sscl=test1.f:35:36*escl=test1.f:0:0*"// &"*" ) #line 35 "test1.f" !$omp parallel !$omp& default(shared) !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_5) #line 37 "test1.f" call POMP2_Implicit_barrier_enter(pomp2_region_5, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_5, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_5) #line 37 "test1.f" !$omp end !$omp+ !$omp+ parallel call POMP2_Parallel_join(pomp2_region_5, pomp2_old_task) #line 40 "test1.f" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_6, &pomp_if, pomp_num_threads, pomp2_old_task, &"59*regionType=parallel*sscl=test1.f:41:42*escl=test1.f:0:0*"// &"*" ) #line 41 "test1.f" !$omp parallel !$omp&private(a) !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_6) #line 43 "test1.f" call POMP2_Implicit_barrier_enter(pomp2_region_6, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_6, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_6) #line 46 "test1.f" !$omp end !$omp¶llel call POMP2_Parallel_join(pomp2_region_6, pomp2_old_task) #line 48 "test1.f" !************************************** !* The following should be ignored * !************************************** c $omp no !!$omp mo c comment ! $omp parallel write(*,*) "!$omp parallel" write(*,*) """!$omp parallel""" end program test1 subroutine POMP2_Init_regions_000() include 'test1.f.opari.inc' call POMP2_Assign_handle( pomp2_region_1, &"61*regionType=parallel*sscl=test1.f:25:25*escl=test1.f:28:2"// &"8**" ) call POMP2_Assign_handle( pomp2_region_2, &"58*regionType=barrier*sscl=test1.f:26:26*escl=test1.f:0:0**"// &"" ) call POMP2_Assign_handle( pomp2_region_3, &"58*regionType=barrier*sscl=test1.f:27:27*escl=test1.f:0:0**"// &"" ) call POMP2_Assign_handle( pomp2_region_4, &"61*regionType=parallel*sscl=test1.f:30:31*escl=test1.f:32:3"// &"3**" ) call POMP2_Assign_handle( pomp2_region_5, &"61*regionType=parallel*sscl=test1.f:35:36*escl=test1.f:37:3"// &"9**" ) call POMP2_Assign_handle( pomp2_region_6, &"61*regionType=parallel*sscl=test1.f:41:42*escl=test1.f:46:4"// &"7**" ) end eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test6.f.out0000644000000000000000000000013112617055645021236 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.83088905 30 ctime=1508162367.549891245 eztrace-1.1-7/extlib/opari2/test/data/test6.f.out0000644000175000017500000000547612617055645022442 0ustar00trahaytrahay00000000000000 #line 1 "test6.f" ! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test that the insertion of wrapper functions works correctly, but ONLY on supported functions. program test6 include 'omp_lib.h' include 'test6.f.opari.inc' integer (kind=omp_lock_kind) lock1 integer (kind=omp_nest_lock_kind) lock2 integer (kind=omp_sched_kind) sched integer mod ! ************************************************** ! * Should be replaced by wrapper functions * ! * regardless of "distractions" * ! ************************************************** call POMP2_Init_lock(lock1); call POMP2_Init_nest_lock(lock2) call POMP2_Set_lock(lock1); write(*,*) "omp_set_lock(lock1)" call POMP2_Set_nest_lock(lock2) ! omp_set_nest_lock(lock2); call POMP2_Unset_lock(lock1); !omp_unset_lock(lock1); call POMP2_Unset_nest_lock(lock2) !$ mod = POMP2_Test_lock(lock1) *$ mod = POMP2_Test_nest_lock(lock2) mod = POMP2_Test_lock(lock1) mod = POMP2_Test_nest_lock(lock2) call POMP2_Destroy_lock(lock1) call POMP2_Destroy_nest_lock(lock2) ! ************************************************** ! * Not now, but planned for the future! * ! ************************************************** call omp_set_num_threads(4) call omp_set_dynamic(.true.) call omp_set_schedule(omp_sched_static, 1) call omp_set_nested(.true.) call omp_set_max_active_levels(2) ! ************************************************** ! * No replacement beyond this point! * ! ************************************************** ! call omp_init_lock(i) c call omp_init_lock(i) * call omp_init_lock(i) write(*,*) "omp_init_lock(i)", 'omp_init_lock(i)' ! call omp_init_lock(i) write(*,*) "omp_init_lock(i)""test", """omp_init_lock(i)", &"omp_init_lock(i)""", """", """""""","omp_init_lock(i) ", ! ",& & " + call omp_init_lock(i)" ! call omp_init_lock(i) ! call omp_init_lock(i) ! call omp_init_lock(i) ; call omp_set_lock(i) ! write(*,*) "call omp_init_lock(i)" ; call omp_init_lock(i) end program test6 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test6.f.opari.inc.out0000644000000000000000000000013112537514551023114 xustar0030 mtime=1434360169.152486098 29 atime=1507797543.83488918 30 ctime=1508162367.589894738 eztrace-1.1-7/extlib/opari2/test/data/test6.f.opari.inc.out0000644000175000017500000000015612537514551024306 0ustar00trahaytrahay00000000000000 integer*4 pomp2_lib_get_max_threads logical pomp2_test_lock integer*4 pomp2_test_nest_lock eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test7.c.out0000644000000000000000000000013112617055645021234 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.83488918 30 ctime=1508162367.557891944 eztrace-1.1-7/extlib/opari2/test/data/test7.c.out0000644000175000017500000000763412617055645022436 0ustar00trahaytrahay00000000000000 #include "test7.c.opari.inc" #line 1 "test7.c" /* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * * Testfile for automated testing of OPARI2 * * @authors Bernd Mohr, Peter Philippen * * @brief Tests user instrumentation directives and selective instrumentation. */ int main() { int i; int b = 1; POMP2_Init(); #line 27 "test7.c" POMP2_Off(); #line 29 "test7.c" POMP2_Begin(&pomp2_region_1); #line 31 "test7.c" { int pomp_num_threads = omp_get_max_threads(); int pomp_if = 1; POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_2, pomp_if, pomp_num_threads, &pomp2_old_task, "58*regionType=parallel*sscl=test7.c:32:32*escl=test7.c:0:0**" ); #line 32 "test7.c" #pragma omp parallel POMP2_DLIST_00002 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_2 ); #line 33 "test7.c" i = 1; { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_2, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_2, pomp2_old_task ); } POMP2_Parallel_end( &pomp2_region_2 ); } POMP2_Parallel_join( &pomp2_region_2, pomp2_old_task ); } #line 34 "test7.c" POMP2_On(); #line 36 "test7.c" #line 38 "test7.c" #pragma omp parallel i = 2; #line 41 "test7.c" { int pomp_num_threads = omp_get_max_threads(); int pomp_if = 1; POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_3, pomp_if, pomp_num_threads, &pomp2_old_task, "58*regionType=parallel*sscl=test7.c:42:42*escl=test7.c:0:0**" ); #line 42 "test7.c" #pragma omp parallel POMP2_DLIST_00003 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_3 ); #line 43 "test7.c" i = 3; { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_3, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_3, pomp2_old_task ); } POMP2_Parallel_end( &pomp2_region_3 ); } POMP2_Parallel_join( &pomp2_region_3, pomp2_old_task ); } #line 44 "test7.c" if (b) { POMP2_End(&pomp2_region_1); #line 47 "test7.c" return 0; } { int pomp_num_threads = omp_get_max_threads(); int pomp_if = 1; POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_4, pomp_if, pomp_num_threads, &pomp2_old_task, "58*regionType=parallel*sscl=test7.c:50:50*escl=test7.c:0:0**" ); #line 50 "test7.c" #pragma omp parallel POMP2_DLIST_00004 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_4 ); #line 51 "test7.c" { POMP2_Begin(&pomp2_region_5); #line 53 "test7.c" i = 4; { POMP2_Task_handle pomp2_old_task; POMP2_Barrier_enter( &pomp2_region_6, &pomp2_old_task, "57*regionType=barrier*sscl=test7.c:54:54*escl=test7.c:0:0**" ); #line 54 "test7.c" #pragma omp barrier POMP2_Barrier_exit( &pomp2_region_6, pomp2_old_task ); } #line 55 "test7.c" i = 5; POMP2_End(&pomp2_region_5); #line 57 "test7.c" } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_4, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_4, pomp2_old_task ); } POMP2_Parallel_end( &pomp2_region_4 ); } POMP2_Parallel_join( &pomp2_region_4, pomp2_old_task ); } #line 58 "test7.c" if (b) { POMP2_End(&pomp2_region_1); #line 61 "test7.c" return 0; } POMP2_End(&pomp2_region_1); #line 65 "test7.c" POMP2_Finalize(); #line 67 "test7.c" return 0; } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test7.f0000644000000000000000000000013112617055645020431 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.83488918 30 ctime=1508162367.557891944 eztrace-1.1-7/extlib/opari2/test/data/test7.f0000644000175000017500000000210212617055645021614 0ustar00trahaytrahay00000000000000! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Tests user instrumentation directives and selective instrumentation. program test7 C$POMP INST INIT *$POMP INST OFF !$POMP INST BEGIN(foo) !$OMP PARALLEL i = 1 !$OMP end PARALLEL CPOMP$ INST END(foo) *POMP$ INST ON !POMP$ NOINSTRUMENT !$OMP PARALLEL i = 2 !$OMP END PARALLEL !$POMP INSTRUMENT !$OMP PARALLEL i = 3 !$OMP end PARALLEL !$POMP INST FINALIZE end program test7 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test4.f.opari.inc.out0000644000000000000000000000013012617055645023114 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83488918 29 ctime=1508162367.51788845 eztrace-1.1-7/extlib/opari2/test/data/test4.f.opari.inc.out0000644000175000017500000000112512617055645024304 0ustar00trahaytrahay00000000000000 INTEGER*8 pomp2_region_1 INTEGER*8 pomp2_region_2 INTEGER*8 pomp2_region_3 INTEGER*8 pomp2_region_4 INTEGER*8 pomp2_region_5 INTEGER*8 pomp2_region_6 integer*4 pomp2_lib_get_max_threads logical pomp2_test_lock integer*4 pomp2_test_nest_lock integer*8 pomp2_old_task, pomp2_new_task logical pomp_if integer*4 pomp_num_threads common /cb000/ pomp2_region_1, & pomp2_region_2, & pomp2_region_3, & pomp2_region_4, & pomp2_region_5, & pomp2_region_6 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test1.f0000644000000000000000000000013112617055645020423 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83488918 30 ctime=1508162367.449882512 eztrace-1.1-7/extlib/opari2/test/data/test1.f0000644000175000017500000000303112617055645021610 0ustar00trahaytrahay00000000000000! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test the parsers ability to find directives and filter strings and comments. program test1 integer a !************************************************ !* The following pragmas should be instrumented * !************************************************ c$OMP PARALLEL *$oMp BaRrIeR !$OmP Barrier !$omp end parallel !$OmP parallel !$OmP& default(shared) !$OmP end !$OmP+ parallel !$OmP parallel !$OmP& default(shared) !$OmP end !$OmP+ !$OmP+ parallel !$omp parallel !comment will be deleted !more comment, which will be deleted !$omp&private(a) !and some more comment... !$omp end !$omp¶llel !************************************** !* The following should be ignored * !************************************** c $omp no !!$omp mo c comment ! $omp parallel write(*,*) "!$omp parallel" write(*,*) """!$omp parallel""" end program test1 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test4.c0000644000000000000000000000013012617055645020422 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83488918 29 ctime=1508162367.51788845 eztrace-1.1-7/extlib/opari2/test/data/test4.c0000644000175000017500000000231212617055645021611 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * * Testfile for automated testing of OPARI2 * * @authors Bernd Mohr, Peter Philippen * * @brief Test the nowait and untied clauses */ #include #ifdef _OPENMP #include #endif int main() { int i; #pragma omp parallel { printf("parallel\n"); #pragma omp for nowait for(i=0; i<4; ++i) { printf("for nowait %d\n", i); } #pragma omp sections nowait { #pragma omp section printf("section nowait 1\n"); #pragma omp section { printf("section nowait 2\n"); } } #pragma omp single nowait { printf("single nowait\n"); } #pragma omp task untied { printf("task untied\n"); } } } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test2.f90.opari.inc.out0000644000000000000000000000013112617055645023264 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83488918 30 ctime=1508162367.497886703 eztrace-1.1-7/extlib/opari2/test/data/test2.f90.opari.inc.out0000644000175000017500000000266012617055645024460 0ustar00trahaytrahay00000000000000 INTEGER( KIND=8 ) :: pomp2_region_1 INTEGER( KIND=8 ) :: pomp2_region_2 INTEGER( KIND=8 ) :: pomp2_region_3 INTEGER( KIND=8 ) :: pomp2_region_4 INTEGER( KIND=8 ) :: pomp2_region_5 INTEGER( KIND=8 ) :: pomp2_region_6 INTEGER( KIND=8 ) :: pomp2_region_7 INTEGER( KIND=8 ) :: pomp2_region_8 INTEGER( KIND=8 ) :: pomp2_region_9 INTEGER( KIND=8 ) :: pomp2_region_10 INTEGER( KIND=8 ) :: pomp2_region_11 INTEGER( KIND=8 ) :: pomp2_region_12 INTEGER( KIND=8 ) :: pomp2_region_13 INTEGER( KIND=8 ) :: pomp2_region_14 INTEGER( KIND=8 ) :: pomp2_region_15 INTEGER( KIND=8 ) :: pomp2_region_16 integer ( kind=4 ) :: pomp2_lib_get_max_threads logical :: pomp2_test_lock integer ( kind=4 ) :: pomp2_test_nest_lock integer ( kind=8 ) :: pomp2_old_task, pomp2_new_task logical :: pomp_if integer ( kind=4 ) :: pomp_num_threads common /cb000/ pomp2_region_1,& pomp2_region_2,& pomp2_region_3,& pomp2_region_4,& pomp2_region_5,& pomp2_region_6,& pomp2_region_7,& pomp2_region_8,& pomp2_region_9,& pomp2_region_10,& pomp2_region_11,& pomp2_region_12,& pomp2_region_13,& pomp2_region_14,& pomp2_region_15,& pomp2_region_16 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test4.f90.opari.inc.out0000644000000000000000000000013112617055645023266 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83488918 30 ctime=1508162367.521888799 eztrace-1.1-7/extlib/opari2/test/data/test4.f90.opari.inc.out0000644000175000017500000000131012617055645024451 0ustar00trahaytrahay00000000000000 INTEGER( KIND=8 ) :: pomp2_region_1 INTEGER( KIND=8 ) :: pomp2_region_2 INTEGER( KIND=8 ) :: pomp2_region_3 INTEGER( KIND=8 ) :: pomp2_region_4 INTEGER( KIND=8 ) :: pomp2_region_5 INTEGER( KIND=8 ) :: pomp2_region_6 integer ( kind=4 ) :: pomp2_lib_get_max_threads logical :: pomp2_test_lock integer ( kind=4 ) :: pomp2_test_nest_lock integer ( kind=8 ) :: pomp2_old_task, pomp2_new_task logical :: pomp_if integer ( kind=4 ) :: pomp_num_threads common /cb000/ pomp2_region_1,& pomp2_region_2,& pomp2_region_3,& pomp2_region_4,& pomp2_region_5,& pomp2_region_6 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test4.f90.out0000644000000000000000000000013112617055645021405 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83488918 30 ctime=1508162367.521888799 eztrace-1.1-7/extlib/opari2/test/data/test4.f90.out0000644000175000017500000001210612617055645022575 0ustar00trahaytrahay00000000000000 #line 1 "test4.f90" ! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test the nowait and untied clauses. program test4 include 'test4.f90.opari.inc' integer i real a(5,5), b(5,5), c(5,5) pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_1,& pomp_if, pomp_num_threads, pomp2_old_task, & "62*regionType=parallel*sscl=test4.f90:25:25*escl=test4.f90:0:0**" ) #line 25 "test4.f90" !$omp parallel & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_1) #line 26 "test4.f90" write(*,*) "parallel" call POMP2_Do_enter(pomp2_region_2, & "56*regionType=do*sscl=test4.f90:27:27*escl=test4.f90:0:0**" ) #line 27 "test4.f90" !$omp do do i=1,4 write(*,*) "do nowait",i enddo #line 31 "test4.f90" !$omp enddo nowait call POMP2_Do_exit(pomp2_region_2) #line 32 "test4.f90" call POMP2_Sections_enter(pomp2_region_3, & "76*regionType=sections*sscl=test4.f90:33:33*escl=test4.f90:0:0*numSections=0**" ) #line 33 "test4.f90" !$omp sections #line 34 "test4.f90" !$omp section call POMP2_Section_begin(pomp2_region_3, & "76*regionType=sections*sscl=test4.f90:33:33*escl=test4.f90:0:0*numSections=0**" ) #line 35 "test4.f90" write(*,*) "section nowait 1" call POMP2_Section_end(pomp2_region_3) #line 36 "test4.f90" !$omp section call POMP2_Section_begin(pomp2_region_3, & "76*regionType=sections*sscl=test4.f90:33:33*escl=test4.f90:0:0*numSections=1**" ) #line 37 "test4.f90" write(*,*) "section nowait 2" call POMP2_Section_end(pomp2_region_3) #line 38 "test4.f90" !$omp end sections nowait call POMP2_Sections_exit(pomp2_region_3) #line 39 "test4.f90" call POMP2_Single_enter(pomp2_region_4, & "60*regionType=single*sscl=test4.f90:40:40*escl=test4.f90:0:0**" ) #line 40 "test4.f90" !$omp single call POMP2_Single_begin(pomp2_region_4) #line 41 "test4.f90" write(*,*) "single nowait" call POMP2_Single_end(pomp2_region_4) #line 42 "test4.f90" !$omp end single nowait call POMP2_Single_exit(pomp2_region_4) #line 43 "test4.f90" call POMP2_Workshare_enter(pomp2_region_5, & "63*regionType=workshare*sscl=test4.f90:44:44*escl=test4.f90:0:0**" ) #line 44 "test4.f90" !$omp workshare a = b + c #line 46 "test4.f90" !$omp end workshare nowait call POMP2_Workshare_exit(pomp2_region_5) #line 47 "test4.f90" pomp_if = .true. if (pomp_if) then call POMP2_Untied_task_create_begin(pomp2_region_6, pomp2_new_task, & pomp2_old_task, & pomp_if, & "70*regionType=task*sscl=test4.f90:48:48*escl=test4.f90:0:0*hasUntied=1**" ) end if #line 48 "test4.f90" !$omp task untied if(pomp_if) firstprivate(pomp2_new_task, pomp_if) if (pomp_if) then call POMP2_Untied_task_begin(pomp2_region_6, pomp2_new_task) end if #line 49 "test4.f90" write(*,*) "task" if (pomp_if) then call POMP2_Untied_task_end(pomp2_region_6) end if #line 50 "test4.f90" !$omp end task if (pomp_if) then call POMP2_Untied_task_create_end(pomp2_region_6, pomp2_old_task) end if #line 51 "test4.f90" call POMP2_Implicit_barrier_enter(pomp2_region_1, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_1, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_1) #line 52 "test4.f90" !$omp end parallel call POMP2_Parallel_join(pomp2_region_1, pomp2_old_task) #line 53 "test4.f90" end program test4 subroutine POMP2_Init_regions_000() include 'test4.f90.opari.inc' call POMP2_Assign_handle( pomp2_region_1, & "64*regionType=parallel*sscl=test4.f90:25:25*escl=test4.f90:52:52**" ) call POMP2_Assign_handle( pomp2_region_2, & "58*regionType=do*sscl=test4.f90:27:27*escl=test4.f90:31:31**" ) call POMP2_Assign_handle( pomp2_region_3, & "78*regionType=sections*sscl=test4.f90:33:33*escl=test4.f90:38:38*numSections=2**" ) call POMP2_Assign_handle( pomp2_region_4, & "62*regionType=single*sscl=test4.f90:40:40*escl=test4.f90:42:42**" ) call POMP2_Assign_handle( pomp2_region_5, & "65*regionType=workshare*sscl=test4.f90:44:44*escl=test4.f90:46:46**" ) call POMP2_Assign_handle( pomp2_region_6, & "72*regionType=task*sscl=test4.f90:48:48*escl=test4.f90:50:50*hasUntied=1**" ) end eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test4.f.out0000644000000000000000000000013112617055645021234 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83488918 30 ctime=1508162367.521888799 eztrace-1.1-7/extlib/opari2/test/data/test4.f.out0000644000175000017500000001207512617055645022431 0ustar00trahaytrahay00000000000000 #line 1 "test4.f" ! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test the nowait and untied clauses. program test4 include 'test4.f.opari.inc' integer i real a(5,5), b(5,5), c(5,5) pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_1, &pomp_if, pomp_num_threads, pomp2_old_task, &"59*regionType=parallel*sscl=test4.f:25:25*escl=test4.f:0:0*"// &"*" ) #line 25 "test4.f" !$omp parallel !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_1) #line 26 "test4.f" write(*,*) "parallel" call POMP2_Do_enter(pomp2_region_2, &"53*regionType=do*sscl=test4.f:27:27*escl=test4.f:0:0**" ) #line 27 "test4.f" !$omp do do i=1,4 write(*,*) "do nowait",i enddo #line 31 "test4.f" !$omp enddo nowait call POMP2_Do_exit(pomp2_region_2) #line 32 "test4.f" call POMP2_Sections_enter(pomp2_region_3, &"73*regionType=sections*sscl=test4.f:33:33*escl=test4.f:0:0*"// &"numSections=0**" ) #line 33 "test4.f" !$omp sections #line 34 "test4.f" !$omp section call POMP2_Section_begin(pomp2_region_3, &"73*regionType=sections*sscl=test4.f:33:33*escl=test4.f:0:0*"// &"numSections=0**" ) #line 35 "test4.f" write(*,*) "section nowait 1" call POMP2_Section_end(pomp2_region_3) #line 36 "test4.f" !$omp section call POMP2_Section_begin(pomp2_region_3, &"73*regionType=sections*sscl=test4.f:33:33*escl=test4.f:0:0*"// &"numSections=1**" ) #line 37 "test4.f" write(*,*) "section nowait 2" call POMP2_Section_end(pomp2_region_3) #line 38 "test4.f" !$omp end sections nowait call POMP2_Sections_exit(pomp2_region_3) #line 39 "test4.f" call POMP2_Single_enter(pomp2_region_4, &"57*regionType=single*sscl=test4.f:40:40*escl=test4.f:0:0**""// &" ) #line 40 "test4.f" !$omp single call POMP2_Single_begin(pomp2_region_4) #line 41 "test4.f" write(*,*) "single nowait" call POMP2_Single_end(pomp2_region_4) #line 42 "test4.f" !$omp end single nowait call POMP2_Single_exit(pomp2_region_4) #line 43 "test4.f" call POMP2_Workshare_enter(pomp2_region_5, &"60*regionType=workshare*sscl=test4.f:44:44*escl=test4.f:0:0"// &"**" ) #line 44 "test4.f" !$omp workshare a = b + c #line 46 "test4.f" !$omp end workshare nowait call POMP2_Workshare_exit(pomp2_region_5) #line 47 "test4.f" pomp_if = .true. if (pomp_if) then call POMP2_Task_create_begin(pomp2_region_6, pomp2_new_task, &pomp2_old_task, &pomp_if, &"67*regionType=task*sscl=test4.f:48:48*escl=test4.f:0:0*hasU"// &"ntied=1**" ) end if #line 48 "test4.f" !$omp task !$omp& if(pomp_if) firstprivate(pomp2_new_task, pomp_if) if (pomp_if) then call POMP2_Task_begin(pomp2_region_6, pomp2_new_task) end if #line 49 "test4.f" write(*,*) "task" if (pomp_if) then call POMP2_Task_end(pomp2_region_6) end if #line 50 "test4.f" !$omp end task if (pomp_if) then call POMP2_Task_create_end(pomp2_region_6, pomp2_old_task) end if #line 51 "test4.f" call POMP2_Implicit_barrier_enter(pomp2_region_1, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_1, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_1) #line 52 "test4.f" !$omp end parallel call POMP2_Parallel_join(pomp2_region_1, pomp2_old_task) #line 53 "test4.f" end program test4 subroutine POMP2_Init_regions_000() include 'test4.f.opari.inc' call POMP2_Assign_handle( pomp2_region_1, &"61*regionType=parallel*sscl=test4.f:25:25*escl=test4.f:52:5"// &"2**" ) call POMP2_Assign_handle( pomp2_region_2, &"55*regionType=do*sscl=test4.f:27:27*escl=test4.f:31:31**" ) call POMP2_Assign_handle( pomp2_region_3, &"75*regionType=sections*sscl=test4.f:33:33*escl=test4.f:38:3"// &"8*numSections=2**" ) call POMP2_Assign_handle( pomp2_region_4, &"59*regionType=single*sscl=test4.f:40:40*escl=test4.f:42:42*"// &"*" ) call POMP2_Assign_handle( pomp2_region_5, &"62*regionType=workshare*sscl=test4.f:44:44*escl=test4.f:46:"// &"46**" ) call POMP2_Assign_handle( pomp2_region_6, &"69*regionType=task*sscl=test4.f:48:48*escl=test4.f:50:50*ha"// &"sUntied=1**" ) end eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test4.f0000644000000000000000000000013012617055645020425 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83488918 29 ctime=1508162367.51788845 eztrace-1.1-7/extlib/opari2/test/data/test4.f0000644000175000017500000000244712617055645021625 0ustar00trahaytrahay00000000000000! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test the nowait and untied clauses. program test4 integer i real a(5,5), b(5,5), c(5,5) !$omp parallel write(*,*) "parallel" !$omp do do i=1,4 write(*,*) "do nowait",i enddo !$omp enddo nowait !$omp sections !$omp section write(*,*) "section nowait 1" !$omp section write(*,*) "section nowait 2" !$omp end sections nowait !$omp single write(*,*) "single nowait" !$omp end single nowait !$omp workshare a = b + c !$omp end workshare nowait !$omp task untied write(*,*) "task" !$omp end task !$omp end parallel end program test4 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test2.f900000644000000000000000000000013112617055645020575 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83488918 30 ctime=1508162367.493886354 eztrace-1.1-7/extlib/opari2/test/data/test2.f900000644000175000017500000000341012617055645021763 0ustar00trahaytrahay00000000000000! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test the basic instrumentation of all directives. program test2 integer i integer k integer, save :: j !$omp threadprivate(j) !$omp parallel write(*,*) "parallel" !$omp do do i=1,4 write(*,*) "do",i enddo !$omp end do !$omp flush(k) !$omp do ordered do i=1,4 !$omp ordered write(*,*) "do",i !$omp end ordered enddo !$omp end do !$omp barrier !$omp sections !$omp section write(*,*) "section 1" !$omp section write(*,*) "section 2" !$omp end sections !$omp master write(*,*) "master" !$omp end master !$omp critical write(*,*) "critical" !$omp end critical !$omp critical(foobar) write(*,*) "critical(foobar)" !$omp end critical(foobar) !$omp atomic ! do this atomic i = i + 1 !$omp single write(*,*) "single" !$omp end single !$omp workshare a = b + c !$omp end workshare !$omp end parallel !$omp parallel !$omp task write(*,*) "task" !$omp end task !$omp taskwait !$omp end parallel ! $ omp this should be ignored by opari and the compiler ! $ this too end program test2 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test2.f.out0000644000000000000000000000013112617055645021232 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83488918 30 ctime=1508162367.489886004 eztrace-1.1-7/extlib/opari2/test/data/test2.f.out0000644000175000017500000002566412617055645022437 0ustar00trahaytrahay00000000000000 #line 1 "test2.f" ! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test the basic instrumentation of all directives. program test2 include 'test2.f.opari.inc' integer i integer k integer, save :: j #line 25 "test2.f" !$omp threadprivate(j) pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_1, &pomp_if, pomp_num_threads, pomp2_old_task, &"59*regionType=parallel*sscl=test2.f:27:27*escl=test2.f:0:0*"// &"*" ) #line 27 "test2.f" !$omp parallel !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_1) #line 28 "test2.f" write(*,*) "parallel" call POMP2_Do_enter(pomp2_region_2, &"53*regionType=do*sscl=test2.f:30:30*escl=test2.f:0:0**" ) #line 30 "test2.f" !$omp do do i=1,4 write(*,*) "do",i k = k + 1 enddo #line 35 "test2.f" !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_2, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_2, pomp2_old_task) call POMP2_Do_exit(pomp2_region_2) #line 36 "test2.f" call POMP2_Flush_enter(pomp2_region_3, &"56*regionType=flush*sscl=test2.f:37:37*escl=test2.f:0:0**" "// &") #line 37 "test2.f" !$omp flush(k) call POMP2_Flush_exit(pomp2_region_3) #line 38 "test2.f" call POMP2_Barrier_enter(pomp2_region_4, pomp2_old_task, &"58*regionType=barrier*sscl=test2.f:39:39*escl=test2.f:0:0**"// &"" ) #line 39 "test2.f" !$omp barrier call POMP2_Barrier_exit(pomp2_region_4, pomp2_old_task) #line 40 "test2.f" call POMP2_Do_enter(pomp2_region_5, &"66*regionType=do*sscl=test2.f:41:41*escl=test2.f:0:0*hasOrd"// &"ered=1**" ) #line 41 "test2.f" !$omp do ordered do i=1,4 call POMP2_Ordered_enter(pomp2_region_6, &"58*regionType=ordered*sscl=test2.f:43:43*escl=test2.f:0:0**"// &"" ) #line 43 "test2.f" !$omp ordered call POMP2_Ordered_begin(pomp2_region_6) #line 44 "test2.f" write(*,*) "do",i call POMP2_Ordered_end(pomp2_region_6) #line 45 "test2.f" !$omp end ordered call POMP2_Ordered_exit(pomp2_region_6) #line 46 "test2.f" enddo #line 47 "test2.f" !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_5, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_5, pomp2_old_task) call POMP2_Do_exit(pomp2_region_5) #line 48 "test2.f" call POMP2_Sections_enter(pomp2_region_7, &"73*regionType=sections*sscl=test2.f:49:49*escl=test2.f:0:0*"// &"numSections=0**" ) #line 49 "test2.f" !$omp sections #line 50 "test2.f" !$omp section call POMP2_Section_begin(pomp2_region_7, &"73*regionType=sections*sscl=test2.f:49:49*escl=test2.f:0:0*"// &"numSections=0**" ) #line 51 "test2.f" write(*,*) "section 1" call POMP2_Section_end(pomp2_region_7) #line 52 "test2.f" !$omp section call POMP2_Section_begin(pomp2_region_7, &"73*regionType=sections*sscl=test2.f:49:49*escl=test2.f:0:0*"// &"numSections=1**" ) #line 53 "test2.f" write(*,*) "section 2" call POMP2_Section_end(pomp2_region_7) #line 54 "test2.f" !$omp end sections nowait call POMP2_Implicit_barrier_enter(pomp2_region_7, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_7, pomp2_old_task) call POMP2_Sections_exit(pomp2_region_7) #line 55 "test2.f" #line 56 "test2.f" !$omp master call POMP2_Master_begin(pomp2_region_8, &"57*regionType=master*sscl=test2.f:56:56*escl=test2.f:0:0**""// &" ) #line 57 "test2.f" write(*,*) "master" call POMP2_Master_end(pomp2_region_8) #line 58 "test2.f" !$omp end master call POMP2_Critical_enter(pomp2_region_9, &"59*regionType=critical*sscl=test2.f:60:60*escl=test2.f:0:0*"// &"*" ) #line 60 "test2.f" !$omp critical call POMP2_Critical_begin(pomp2_region_9) #line 61 "test2.f" write(*,*) "critical" call POMP2_Critical_end(pomp2_region_9) #line 62 "test2.f" !$omp end critical call POMP2_Critical_exit(pomp2_region_9) #line 63 "test2.f" call POMP2_Critical_enter(pomp2_region_10, &"79*regionType=critical*sscl=test2.f:64:64*escl=test2.f:0:0*"// &"criticalName=foobar**" ) #line 64 "test2.f" !$omp critical(foobar) call POMP2_Critical_begin(pomp2_region_10) #line 65 "test2.f" write(*,*) "critical(foobar)" call POMP2_Critical_end(pomp2_region_10) #line 66 "test2.f" !$omp end critical(foobar) call POMP2_Critical_exit(pomp2_region_10) #line 67 "test2.f" ! do this atomic call POMP2_Atomic_enter(pomp2_region_11, &"57*regionType=atomic*sscl=test2.f:69:69*escl=test2.f:0:0**""// &" ) #line 69 "test2.f" !$omp atomic i = i + 1 call POMP2_Atomic_exit(pomp2_region_11) #line 71 "test2.f" call POMP2_Single_enter(pomp2_region_12, &"57*regionType=single*sscl=test2.f:72:72*escl=test2.f:0:0**""// &" ) #line 72 "test2.f" !$omp single call POMP2_Single_begin(pomp2_region_12) #line 73 "test2.f" write(*,*) "single" call POMP2_Single_end(pomp2_region_12) #line 74 "test2.f" !$omp end single nowait call POMP2_Implicit_barrier_enter(pomp2_region_12, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_12, pomp2_old_task) call POMP2_Single_exit(pomp2_region_12) #line 75 "test2.f" call POMP2_Workshare_enter(pomp2_region_13, &"60*regionType=workshare*sscl=test2.f:76:76*escl=test2.f:0:0"// &"**" ) #line 76 "test2.f" !$omp workshare a = b + c #line 78 "test2.f" !$omp end workshare nowait call POMP2_Implicit_barrier_enter(pomp2_region_13, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_13, pomp2_old_task) call POMP2_Workshare_exit(pomp2_region_13) #line 79 "test2.f" call POMP2_Implicit_barrier_enter(pomp2_region_1, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_1, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_1) #line 80 "test2.f" !$omp end parallel call POMP2_Parallel_join(pomp2_region_1, pomp2_old_task) #line 81 "test2.f" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_14, &pomp_if, pomp_num_threads, pomp2_old_task, &"59*regionType=parallel*sscl=test2.f:82:82*escl=test2.f:0:0*"// &"*" ) #line 82 "test2.f" !$omp parallel !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_14) #line 83 "test2.f" pomp_if = .true. if (pomp_if) then call POMP2_Task_create_begin(pomp2_region_15, pomp2_new_task, &pomp2_old_task, &pomp_if, &"55*regionType=task*sscl=test2.f:83:83*escl=test2.f:0:0**" ) end if #line 83 "test2.f" !$omp task !$omp& if(pomp_if) firstprivate(pomp2_new_task, pomp_if) if (pomp_if) then call POMP2_Task_begin(pomp2_region_15, pomp2_new_task) end if #line 84 "test2.f" write(*,*) "task" if (pomp_if) then call POMP2_Task_end(pomp2_region_15) end if #line 85 "test2.f" !$omp end task if (pomp_if) then call POMP2_Task_create_end(pomp2_region_15, pomp2_old_task) end if #line 86 "test2.f" #line 87 "test2.f" !$omp this should be ignored by opari and the compiler call POMP2_Taskwait_begin(pomp2_region_16, pomp2_old_task, &"59*regionType=taskwait*sscl=test2.f:90:90*escl=test2.f:0:0*"// &"*" ) #line 90 "test2.f" !$omp taskwait call POMP2_Taskwait_end(pomp2_region_16, pomp2_old_task) #line 91 "test2.f" call POMP2_Implicit_barrier_enter(pomp2_region_14, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_14, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_14) #line 91 "test2.f" !$omp end parallel call POMP2_Parallel_join(pomp2_region_14, pomp2_old_task) #line 92 "test2.f" ! $ omp this should be ignored by opari and the compiler ! $ this too end program test2 subroutine POMP2_Init_regions_000() include 'test2.f.opari.inc' call POMP2_Assign_handle( pomp2_region_1, &"61*regionType=parallel*sscl=test2.f:27:27*escl=test2.f:80:8"// &"0**" ) call POMP2_Assign_handle( pomp2_region_2, &"55*regionType=do*sscl=test2.f:30:30*escl=test2.f:35:35**" ) call POMP2_Assign_handle( pomp2_region_3, &"56*regionType=flush*sscl=test2.f:37:37*escl=test2.f:0:0**" "// &") call POMP2_Assign_handle( pomp2_region_4, &"58*regionType=barrier*sscl=test2.f:39:39*escl=test2.f:0:0**"// &"" ) call POMP2_Assign_handle( pomp2_region_5, &"68*regionType=do*sscl=test2.f:41:41*escl=test2.f:47:47*hasO"// &"rdered=1**" ) call POMP2_Assign_handle( pomp2_region_6, &"60*regionType=ordered*sscl=test2.f:43:43*escl=test2.f:45:45"// &"**" ) call POMP2_Assign_handle( pomp2_region_7, &"75*regionType=sections*sscl=test2.f:49:49*escl=test2.f:54:5"// &"4*numSections=2**" ) call POMP2_Assign_handle( pomp2_region_8, &"59*regionType=master*sscl=test2.f:56:56*escl=test2.f:58:58*"// &"*" ) call POMP2_Assign_handle( pomp2_region_9, &"61*regionType=critical*sscl=test2.f:60:60*escl=test2.f:62:6"// &"2**" ) call POMP2_Assign_handle( pomp2_region_10, &"81*regionType=critical*sscl=test2.f:64:64*escl=test2.f:66:6"// &"6*criticalName=foobar**" ) call POMP2_Assign_handle( pomp2_region_11, &"59*regionType=atomic*sscl=test2.f:69:69*escl=test2.f:70:70*"// &"*" ) call POMP2_Assign_handle( pomp2_region_12, &"59*regionType=single*sscl=test2.f:72:72*escl=test2.f:74:74*"// &"*" ) call POMP2_Assign_handle( pomp2_region_13, &"62*regionType=workshare*sscl=test2.f:76:76*escl=test2.f:78:"// &"78**" ) call POMP2_Assign_handle( pomp2_region_14, &"61*regionType=parallel*sscl=test2.f:82:82*escl=test2.f:91:9"// &"1**" ) call POMP2_Assign_handle( pomp2_region_15, &"57*regionType=task*sscl=test2.f:83:83*escl=test2.f:85:85**""// &" ) call POMP2_Assign_handle( pomp2_region_16, &"59*regionType=taskwait*sscl=test2.f:90:90*escl=test2.f:0:0*"// &"*" ) end eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test8.f.opari.inc.out0000644000000000000000000000013112617055645023121 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.83488918 30 ctime=1508162367.573893341 eztrace-1.1-7/extlib/opari2/test/data/test8.f.opari.inc.out0000644000175000017500000000142212617055645024310 0ustar00trahaytrahay00000000000000 INTEGER*8 pomp2_region_1 INTEGER*8 pomp2_region_2 INTEGER*8 pomp2_region_3 INTEGER*8 pomp2_region_4 INTEGER*8 pomp2_region_5 INTEGER*8 pomp2_region_6 INTEGER*8 pomp2_region_7 INTEGER*8 pomp2_region_8 INTEGER*8 pomp2_region_9 integer*4 pomp2_lib_get_max_threads logical pomp2_test_lock integer*4 pomp2_test_nest_lock integer*8 pomp2_old_task, pomp2_new_task logical pomp_if integer*4 pomp_num_threads common /cb000/ pomp2_region_1, & pomp2_region_2, & pomp2_region_3, & pomp2_region_4, & pomp2_region_5, & pomp2_region_6, & pomp2_region_7, & pomp2_region_8, & pomp2_region_9 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test3.f0000644000000000000000000000013112617055645020425 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83488918 30 ctime=1508162367.501887053 eztrace-1.1-7/extlib/opari2/test/data/test3.f0000644000175000017500000000367412617055645021627 0ustar00trahaytrahay00000000000000! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Special tests for end pragma substitution and nested parallel regions/loops. program test3 integer i, j, k c$OMP parallel c$OMP do do 12,i = 1,8 a=a+1 12 continue c$OMP end parallel c$OMP parallel do do 13,i = 1,8 a=a+1 13 continue c$OMP parallel c$OMP do do 14,i = 1,8 a=a+1 14 continue c$OMP atomic me = me + omp_get_thread_num() c$OMP end parallel c$OMP parallel do do 15,i = 1,8 15 a=a+1 c$OMP parallel private(me,glob) me = omp_get_thread_num() c$OMP end parallel ! ********************** ! * nested parallelism * ! ********************** !$omp parallel !$omp parallel !$omp parallel !$omp parallel do do i = 1,8 a=a+1 end do !$omp end parallel do !$omp end parallel !$omp end parallel !$omp end parallel ! ******************************************* ! * end pragma substitution in nested loops * ! ******************************************* c$OMP parallel do do 16, i = 1,8 do 16, j = 1,8 a=a+1 16 continue do 17,i = 1,8 c$OMP parallel do do 18, j = 1,8 a=a+1 18 continue 17 continue c$omp parallel do do if (a .gt. 0) then exit endif enddo end program test3 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test2.f0000644000000000000000000000013112617055645020424 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83488918 30 ctime=1508162367.485885655 eztrace-1.1-7/extlib/opari2/test/data/test2.f0000644000175000017500000000364112617055645021620 0ustar00trahaytrahay00000000000000! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test the basic instrumentation of all directives. program test2 integer i integer k integer, save :: j !$omp threadprivate(j) !$omp parallel write(*,*) "parallel" !$omp do do i=1,4 write(*,*) "do",i k = k + 1 enddo !$omp end do !$omp flush(k) !$omp barrier !$omp do ordered do i=1,4 !$omp ordered write(*,*) "do",i !$omp end ordered enddo !$omp end do !$omp sections !$omp section write(*,*) "section 1" !$omp section write(*,*) "section 2" !$omp end sections !$omp master write(*,*) "master" !$omp end master !$omp critical write(*,*) "critical" !$omp end critical !$omp critical(foobar) write(*,*) "critical(foobar)" !$omp end critical(foobar) ! do this atomic !$omp atomic i = i + 1 !$omp single write(*,*) "single" !$omp end single !$omp workshare a = b + c !$omp end workshare !$omp end parallel !$omp parallel !$omp task write(*,*) "task" !$omp end task !$omp this should be ignored by opari and the compiler !$this line will be deleted !$omp taskwait !$omp end parallel ! $ omp this should be ignored by opari and the compiler ! $ this too end program test2 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test3.f90.out0000644000000000000000000000013012617055645021403 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83488918 29 ctime=1508162367.51788845 eztrace-1.1-7/extlib/opari2/test/data/test3.f90.out0000644000175000017500000004056512617055645022606 0ustar00trahaytrahay00000000000000 #line 1 "test3.f90" ! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Special tests for end pragma substitution and nested parallel regions/loops. program test3 include 'test3.f90.opari.inc' integer i, j, k pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_1,& pomp_if, pomp_num_threads, pomp2_old_task, & "62*regionType=parallel*sscl=test3.f90:23:23*escl=test3.f90:0:0**" ) #line 23 "test3.f90" !$omp parallel & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_1) #line 24 "test3.f90" call POMP2_Do_enter(pomp2_region_2, & "56*regionType=do*sscl=test3.f90:24:24*escl=test3.f90:0:0**" ) #line 24 "test3.f90" !$omp do do 12,i = 1,8 a=a+1 12 continue #line 28 "test3.f90" !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_2, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_2, pomp2_old_task) call POMP2_Do_exit(pomp2_region_2) #line 29 "test3.f90" call POMP2_Implicit_barrier_enter(pomp2_region_1, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_1, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_1) #line 28 "test3.f90" !$omp end parallel call POMP2_Parallel_join(pomp2_region_1, pomp2_old_task) #line 29 "test3.f90" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_3,& pomp_if, pomp_num_threads, pomp2_old_task, & "64*regionType=paralleldo*sscl=test3.f90:30:30*escl=test3.f90:0:0**" ) #line 30 "test3.f90" !$omp parallel & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_3) call POMP2_Do_enter(pomp2_region_3, & "64*regionType=paralleldo*sscl=test3.f90:30:30*escl=test3.f90:0:0**" ) #line 30 "test3.f90" !$omp do do 13,i = 1,8 a=a+1 13 continue !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_3, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_3, pomp2_old_task) call POMP2_Do_exit(pomp2_region_3) call POMP2_Parallel_end(pomp2_region_3) !$omp end parallel call POMP2_Parallel_join(pomp2_region_3, pomp2_old_task) #line 36 "test3.f90" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_4,& pomp_if, pomp_num_threads, pomp2_old_task, & "62*regionType=parallel*sscl=test3.f90:35:35*escl=test3.f90:0:0**" ) #line 35 "test3.f90" !$omp parallel & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_4) #line 36 "test3.f90" call POMP2_Do_enter(pomp2_region_5, & "56*regionType=do*sscl=test3.f90:36:36*escl=test3.f90:0:0**" ) #line 36 "test3.f90" !$omp do do 14,i = 1,8 a=a+1 14 continue #line 40 "test3.f90" !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_5, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_5, pomp2_old_task) call POMP2_Do_exit(pomp2_region_5) #line 41 "test3.f90" call POMP2_Atomic_enter(pomp2_region_6, & "60*regionType=atomic*sscl=test3.f90:40:40*escl=test3.f90:0:0**" ) #line 40 "test3.f90" !$omp atomic me = me + omp_get_thread_num() call POMP2_Atomic_exit(pomp2_region_6) #line 42 "test3.f90" call POMP2_Implicit_barrier_enter(pomp2_region_4, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_4, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_4) #line 42 "test3.f90" !$omp end parallel call POMP2_Parallel_join(pomp2_region_4, pomp2_old_task) #line 43 "test3.f90" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_7,& pomp_if, pomp_num_threads, pomp2_old_task, & "64*regionType=paralleldo*sscl=test3.f90:44:44*escl=test3.f90:0:0**" ) #line 44 "test3.f90" !$omp parallel & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_7) call POMP2_Do_enter(pomp2_region_7, & "64*regionType=paralleldo*sscl=test3.f90:44:44*escl=test3.f90:0:0**" ) #line 44 "test3.f90" !$omp do do 15,i = 1,8 15 a=a+1 !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_7, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_7, pomp2_old_task) call POMP2_Do_exit(pomp2_region_7) call POMP2_Parallel_end(pomp2_region_7) !$omp end parallel call POMP2_Parallel_join(pomp2_region_7, pomp2_old_task) #line 48 "test3.f90" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_8,& pomp_if, pomp_num_threads, pomp2_old_task, & "62*regionType=parallel*sscl=test3.f90:47:47*escl=test3.f90:0:0**" ) #line 47 "test3.f90" !$omp parallel private(me,glob) & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_8) #line 48 "test3.f90" me = omp_get_thread_num() call POMP2_Implicit_barrier_enter(pomp2_region_8, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_8, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_8) #line 49 "test3.f90" !$omp end parallel call POMP2_Parallel_join(pomp2_region_8, pomp2_old_task) #line 50 "test3.f90" ! ********************** ! * nested parallelism * ! ********************** pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_9,& pomp_if, pomp_num_threads, pomp2_old_task, & "62*regionType=parallel*sscl=test3.f90:55:55*escl=test3.f90:0:0**" ) #line 55 "test3.f90" !$omp parallel & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_9) #line 56 "test3.f90" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_10,& pomp_if, pomp_num_threads, pomp2_old_task, & "62*regionType=parallel*sscl=test3.f90:56:56*escl=test3.f90:0:0**" ) #line 56 "test3.f90" !$omp parallel & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_10) #line 57 "test3.f90" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_11,& pomp_if, pomp_num_threads, pomp2_old_task, & "62*regionType=parallel*sscl=test3.f90:57:57*escl=test3.f90:0:0**" ) #line 57 "test3.f90" !$omp parallel & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_11) #line 58 "test3.f90" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_12,& pomp_if, pomp_num_threads, pomp2_old_task, & "64*regionType=paralleldo*sscl=test3.f90:58:58*escl=test3.f90:0:0**" ) #line 58 "test3.f90" !$omp parallel & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_12) call POMP2_Do_enter(pomp2_region_12, & "64*regionType=paralleldo*sscl=test3.f90:58:58*escl=test3.f90:0:0**" ) #line 58 "test3.f90" !$omp do do i = 1,8 a=a+1 enddo !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_12, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_12, pomp2_old_task) call POMP2_Do_exit(pomp2_region_12) call POMP2_Parallel_end(pomp2_region_12) !$omp end parallel call POMP2_Parallel_join(pomp2_region_12, pomp2_old_task) #line 63 "test3.f90" call POMP2_Implicit_barrier_enter(pomp2_region_11, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_11, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_11) #line 63 "test3.f90" !$omp end parallel call POMP2_Parallel_join(pomp2_region_11, pomp2_old_task) #line 64 "test3.f90" call POMP2_Implicit_barrier_enter(pomp2_region_10, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_10, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_10) #line 64 "test3.f90" !$omp end parallel call POMP2_Parallel_join(pomp2_region_10, pomp2_old_task) #line 65 "test3.f90" call POMP2_Implicit_barrier_enter(pomp2_region_9, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_9, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_9) #line 65 "test3.f90" !$omp end parallel call POMP2_Parallel_join(pomp2_region_9, pomp2_old_task) #line 66 "test3.f90" ! ******************************************* ! * end pragma substitution in nested loops * ! ******************************************* pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_13,& pomp_if, pomp_num_threads, pomp2_old_task, & "64*regionType=paralleldo*sscl=test3.f90:71:71*escl=test3.f90:0:0**" ) #line 71 "test3.f90" !$omp parallel & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_13) call POMP2_Do_enter(pomp2_region_13, & "64*regionType=paralleldo*sscl=test3.f90:71:71*escl=test3.f90:0:0**" ) #line 71 "test3.f90" !$omp do do 16, i = 1,8 do 16, j = 1,8 a=a+1 16 continue !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_13, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_13, pomp2_old_task) call POMP2_Do_exit(pomp2_region_13) call POMP2_Parallel_end(pomp2_region_13) !$omp end parallel call POMP2_Parallel_join(pomp2_region_13, pomp2_old_task) #line 78 "test3.f90" do 17,i = 1,8 pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_14,& pomp_if, pomp_num_threads, pomp2_old_task, & "64*regionType=paralleldo*sscl=test3.f90:78:78*escl=test3.f90:0:0**" ) #line 78 "test3.f90" !$omp parallel & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_14) call POMP2_Do_enter(pomp2_region_14, & "64*regionType=paralleldo*sscl=test3.f90:78:78*escl=test3.f90:0:0**" ) #line 78 "test3.f90" !$omp do do 18, j = 1,8 a=a+1 18 continue !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_14, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_14, pomp2_old_task) call POMP2_Do_exit(pomp2_region_14) call POMP2_Parallel_end(pomp2_region_14) !$omp end parallel call POMP2_Parallel_join(pomp2_region_14, pomp2_old_task) #line 83 "test3.f90" 17 continue pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_15,& pomp_if, pomp_num_threads, pomp2_old_task, & "64*regionType=paralleldo*sscl=test3.f90:84:84*escl=test3.f90:0:0**" ) #line 84 "test3.f90" !$omp parallel & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_15) call POMP2_Do_enter(pomp2_region_15, & "64*regionType=paralleldo*sscl=test3.f90:84:84*escl=test3.f90:0:0**" ) #line 84 "test3.f90" !$omp do do if (a .gt. 0) then exit endif enddo !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_15, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_15, pomp2_old_task) call POMP2_Do_exit(pomp2_region_15) call POMP2_Parallel_end(pomp2_region_15) !$omp end parallel call POMP2_Parallel_join(pomp2_region_15, pomp2_old_task) #line 92 "test3.f90" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_16,& pomp_if, pomp_num_threads, pomp2_old_task, & "64*regionType=paralleldo*sscl=test3.f90:91:91*escl=test3.f90:0:0**" ) #line 91 "test3.f90" !$omp parallel & !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) & !$omp if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_16) call POMP2_Do_enter(pomp2_region_16, & "64*regionType=paralleldo*sscl=test3.f90:91:91*escl=test3.f90:0:0**" ) #line 91 "test3.f90" !$omp do loopLabel: do i = 1,8 a=a+1 end do loopLabel !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_16, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_16, pomp2_old_task) call POMP2_Do_exit(pomp2_region_16) call POMP2_Parallel_end(pomp2_region_16) !$omp end parallel call POMP2_Parallel_join(pomp2_region_16, pomp2_old_task) #line 97 "test3.f90" end program test3 subroutine POMP2_Init_regions_000() include 'test3.f90.opari.inc' call POMP2_Assign_handle( pomp2_region_1, & "64*regionType=parallel*sscl=test3.f90:23:23*escl=test3.f90:28:28**" ) call POMP2_Assign_handle( pomp2_region_2, & "58*regionType=do*sscl=test3.f90:24:24*escl=test3.f90:28:28**" ) call POMP2_Assign_handle( pomp2_region_3, & "66*regionType=paralleldo*sscl=test3.f90:30:30*escl=test3.f90:35:35**" ) call POMP2_Assign_handle( pomp2_region_4, & "64*regionType=parallel*sscl=test3.f90:35:35*escl=test3.f90:42:42**" ) call POMP2_Assign_handle( pomp2_region_5, & "58*regionType=do*sscl=test3.f90:36:36*escl=test3.f90:40:40**" ) call POMP2_Assign_handle( pomp2_region_6, & "62*regionType=atomic*sscl=test3.f90:40:40*escl=test3.f90:41:41**" ) call POMP2_Assign_handle( pomp2_region_7, & "66*regionType=paralleldo*sscl=test3.f90:44:44*escl=test3.f90:47:47**" ) call POMP2_Assign_handle( pomp2_region_8, & "64*regionType=parallel*sscl=test3.f90:47:47*escl=test3.f90:49:49**" ) call POMP2_Assign_handle( pomp2_region_9, & "64*regionType=parallel*sscl=test3.f90:55:55*escl=test3.f90:65:65**" ) call POMP2_Assign_handle( pomp2_region_10, & "64*regionType=parallel*sscl=test3.f90:56:56*escl=test3.f90:64:64**" ) call POMP2_Assign_handle( pomp2_region_11, & "64*regionType=parallel*sscl=test3.f90:57:57*escl=test3.f90:63:63**" ) call POMP2_Assign_handle( pomp2_region_12, & "66*regionType=paralleldo*sscl=test3.f90:58:58*escl=test3.f90:62:62**" ) call POMP2_Assign_handle( pomp2_region_13, & "66*regionType=paralleldo*sscl=test3.f90:71:71*escl=test3.f90:77:77**" ) call POMP2_Assign_handle( pomp2_region_14, & "66*regionType=paralleldo*sscl=test3.f90:78:78*escl=test3.f90:82:82**" ) call POMP2_Assign_handle( pomp2_region_15, & "66*regionType=paralleldo*sscl=test3.f90:84:84*escl=test3.f90:91:91**" ) call POMP2_Assign_handle( pomp2_region_16, & "66*regionType=paralleldo*sscl=test3.f90:91:91*escl=test3.f90:96:96**" ) end eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test1.f900000644000000000000000000000013112617055645020574 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83488918 30 ctime=1508162367.457883209 eztrace-1.1-7/extlib/opari2/test/data/test1.f900000644000175000017500000000261712617055645021772 0ustar00trahaytrahay00000000000000! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test the parsers ability to find directives and filter strings and comments. program test1 !************************************************ !* The following pragmas should be instrumented * !************************************************ !$OMP PARALLEL !$OmP BaRRiEr !$omp end parallel !$OmP parallel & !$OmP& default(shared) !$OmP end & !$OmP& parallel !$OmP parallel & !$OmP& default(shared) !$OmP end & ! some comment !$OmP& parallel !************************************** !* The following should be ignored * !************************************** ! comment $omp ! comment !$omp parallel !!$omp mo ! $ omp parallel write(*,*) "!$omp parallel" write(*,*) """!$omp parallel""" end program test1 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test6.c.out0000644000000000000000000000013112617055645021233 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83488918 30 ctime=1508162367.549891245 eztrace-1.1-7/extlib/opari2/test/data/test6.c.out0000644000175000017500000000513212617055645022424 0ustar00trahaytrahay00000000000000 #include "test6.c.opari.inc" #line 1 "test6.c" /* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * * Testfile for automated testing of OPARI2 * * @authors Bernd Mohr, Peter Philippen * * @brief Test that the insertion of wrapper functions works correctly, but ONLY on supported functions. */ int main() { omp_lock_t lock1; omp_nest_lock_t lock2; omp_sched_t sched; int mod; //************************************************** //* Should be replaced by wrapper functions * //* regardless of "distractions" * //************************************************** POMP2_Init_lock(&lock1); POMP2_Init_nest_lock(&lock2); POMP2_Set_lock(&lock1); POMP2_Set_nest_lock(&lock2); // omp_set_nest_lock(&lock2); POMP2_Unset_lock(&lock1); /*omp_unset_lock(&lock1);*/ POMP2_Unset_nest_lock(&lock2); POMP2_Test_lock(&lock1);/* omp_test_lock(&lock1); */ POMP2_Test_nest_lock(&lock2); POMP2_Destroy_lock(&lock1); POMP2_Destroy_nest_lock(&lock2); //************************************************** //* Not now, but planned for the future! * //************************************************** omp_set_num_threads(4); omp_set_dynamic(0); omp_set_schedule(omp_sched_static, 1); omp_set_nested(0); omp_set_max_active_levels(2); //************************************************** //* No replacement beyond this point! * //************************************************** omp_get_num_threads(); omp_get_max_threads(); omp_get_thread_num(); omp_get_num_procs(); omp_in_parallel(); omp_get_nested(); omp_get_dynamic(); omp_get_schedule(&sched, &mod); omp_get_thread_limit(); omp_get_max_active_levels(); omp_get_level(); omp_get_ancestor_thread_num(0); omp_get_team_size(0); omp_get_active_level(); omp_get_wtime(); omp_get_wtick(); // omp_init_lock(i) /* -- omp_init_lock(i) -- */ /* -- omp_init_lock(i) -- */ printf("omp_init_lock(i) \n"); // omp_init_lock(i) printf("omp_init_lock(i)\"test\"omp_init_lock(i)omp_init_lock(i)\"\"\"\n"); } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test3.c.out0000644000000000000000000000013112617055645021230 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83488918 30 ctime=1508162367.501887053 eztrace-1.1-7/extlib/opari2/test/data/test3.c.out0000644000175000017500000002725312617055645022431 0ustar00trahaytrahay00000000000000 #include "test3.c.opari.inc" #line 1 "test3.c" /* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * * Testfile for automated testing of OPARI2 * * @authors Bernd Mohr, Peter Philippen * * @brief Special tests for code blocks and nested parallel regions/loops. */ #include #ifdef _OPENMP #endif int main() { int i, j; int k = 0; { int pomp_num_threads = omp_get_max_threads(); int pomp_if = 1; POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_1, pomp_if, pomp_num_threads, &pomp2_old_task, "58*regionType=parallel*sscl=test3.c:32:32*escl=test3.c:0:0**" ); #line 32 "test3.c" #pragma omp parallel POMP2_DLIST_00001 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_1 ); #line 33 "test3.c" { { POMP2_For_enter( &pomp2_region_2, "53*regionType=for*sscl=test3.c:34:34*escl=test3.c:0:0**" ); #line 34 "test3.c" #pragma omp for nowait for (i=0; i<4; ++i) { k++; } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_2, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_2, pomp2_old_task ); } POMP2_For_exit( &pomp2_region_2 ); } #line 39 "test3.c" } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_1, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_1, pomp2_old_task ); } POMP2_Parallel_end( &pomp2_region_1 ); } POMP2_Parallel_join( &pomp2_region_1, pomp2_old_task ); } #line 40 "test3.c" { int pomp_num_threads = omp_get_max_threads(); int pomp_if = 1; POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_3, pomp_if, pomp_num_threads, &pomp2_old_task, "58*regionType=parallel*sscl=test3.c:41:41*escl=test3.c:0:0**" ); #line 41 "test3.c" #pragma omp parallel POMP2_DLIST_00003 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_3 ); #line 42 "test3.c" { POMP2_For_enter( &pomp2_region_4, "53*regionType=for*sscl=test3.c:42:42*escl=test3.c:0:0**" ); #line 42 "test3.c" #pragma omp for nowait for (i=0; i<4; ++i) { k++; } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_4, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_4, pomp2_old_task ); } POMP2_For_exit( &pomp2_region_4 ); } #line 47 "test3.c" { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_3, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_3, pomp2_old_task ); } POMP2_Parallel_end( &pomp2_region_3 ); } POMP2_Parallel_join( &pomp2_region_3, pomp2_old_task ); } #line 47 "test3.c" { int pomp_num_threads = omp_get_max_threads(); int pomp_if = 1; POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_5, pomp_if, pomp_num_threads, &pomp2_old_task, "58*regionType=parallel*sscl=test3.c:48:48*escl=test3.c:0:0**" ); #line 48 "test3.c" #pragma omp parallel POMP2_DLIST_00005 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_5 ); #line 49 "test3.c" { #line 50 "test3.c" #pragma omp master { POMP2_Master_begin( &pomp2_region_6, "56*regionType=master*sscl=test3.c:50:50*escl=test3.c:0:0**" ); #line 51 "test3.c" for (i=0; i<4; ++i) k++; POMP2_Master_end( &pomp2_region_6 ); } #line 53 "test3.c" } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_5, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_5, pomp2_old_task ); } POMP2_Parallel_end( &pomp2_region_5 ); } POMP2_Parallel_join( &pomp2_region_5, pomp2_old_task ); } #line 54 "test3.c" { int pomp_num_threads = omp_get_max_threads(); int pomp_if = 1; POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_7, pomp_if, pomp_num_threads, &pomp2_old_task, "58*regionType=parallel*sscl=test3.c:55:55*escl=test3.c:0:0**" ); #line 55 "test3.c" #pragma omp parallel POMP2_DLIST_00007 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_7 ); #line 56 "test3.c" { { POMP2_Single_enter( &pomp2_region_8, "56*regionType=single*sscl=test3.c:57:57*escl=test3.c:0:0**" ); #line 57 "test3.c" #pragma omp single nowait { POMP2_Single_begin( &pomp2_region_8 ); #line 58 "test3.c" for (i=0; i<4; ++i) k++; POMP2_Single_end( &pomp2_region_8 ); } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_8, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_8, pomp2_old_task ); } POMP2_Single_exit( &pomp2_region_8 ); } #line 59 "test3.c" } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_7, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_7, pomp2_old_task ); } POMP2_Parallel_end( &pomp2_region_7 ); } POMP2_Parallel_join( &pomp2_region_7, pomp2_old_task ); } #line 60 "test3.c" { int pomp_num_threads = omp_get_max_threads(); int pomp_if = 1; POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_9, pomp_if, pomp_num_threads, &pomp2_old_task, "58*regionType=parallel*sscl=test3.c:61:61*escl=test3.c:0:0**" ); #line 61 "test3.c" #pragma omp parallel POMP2_DLIST_00009 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_9 ); #line 62 "test3.c" { POMP2_Critical_enter( &pomp2_region_10, "58*regionType=critical*sscl=test3.c:62:62*escl=test3.c:0:0**" ); #line 62 "test3.c" #pragma omp critical { POMP2_Critical_begin( &pomp2_region_10 ); #line 63 "test3.c" for (i=0; i<4; ++i) k++; POMP2_Critical_end( &pomp2_region_10 ); } POMP2_Critical_exit( &pomp2_region_10 ); } #line 64 "test3.c" { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_9, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_9, pomp2_old_task ); } POMP2_Parallel_end( &pomp2_region_9 ); } POMP2_Parallel_join( &pomp2_region_9, pomp2_old_task ); } #line 64 "test3.c" // ***************************************** // * Testing of nested parallelism * // ***************************************** { int pomp_num_threads = omp_get_max_threads(); int pomp_if = 1; POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_11, pomp_if, pomp_num_threads, &pomp2_old_task, "58*regionType=parallel*sscl=test3.c:69:69*escl=test3.c:0:0**" ); #line 69 "test3.c" #pragma omp parallel POMP2_DLIST_00011 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_11 ); #line 70 "test3.c" { { int pomp_num_threads = omp_get_max_threads(); int pomp_if = 1; POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_12, pomp_if, pomp_num_threads, &pomp2_old_task, "58*regionType=parallel*sscl=test3.c:71:71*escl=test3.c:0:0**" ); #line 71 "test3.c" #pragma omp parallel POMP2_DLIST_00012 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_12 ); #line 72 "test3.c" { { int pomp_num_threads = omp_get_max_threads(); int pomp_if = 1; POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_13, pomp_if, pomp_num_threads, &pomp2_old_task, "58*regionType=parallel*sscl=test3.c:73:73*escl=test3.c:0:0**" ); #line 73 "test3.c" #pragma omp parallel POMP2_DLIST_00013 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_13 ); #line 74 "test3.c" { { POMP2_For_enter( &pomp2_region_14, "53*regionType=for*sscl=test3.c:75:75*escl=test3.c:0:0**" ); #line 75 "test3.c" #pragma omp for nowait for (i=0; i<4; ++i) { printf("do %d\n", i); } POMP2_For_exit( &pomp2_region_14 ); } #line 79 "test3.c" } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_13, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_13, pomp2_old_task ); } POMP2_Parallel_end( &pomp2_region_13 ); } POMP2_Parallel_join( &pomp2_region_13, pomp2_old_task ); } #line 80 "test3.c" } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_12, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_12, pomp2_old_task ); } POMP2_Parallel_end( &pomp2_region_12 ); } POMP2_Parallel_join( &pomp2_region_12, pomp2_old_task ); } #line 81 "test3.c" } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_11, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_11, pomp2_old_task ); } POMP2_Parallel_end( &pomp2_region_11 ); } POMP2_Parallel_join( &pomp2_region_11, pomp2_old_task ); } #line 82 "test3.c" // ***************************************** // * Testing of nested for loops * // ***************************************** { int pomp_num_threads = omp_get_max_threads(); int pomp_if = 1; POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_15, pomp_if, pomp_num_threads, &pomp2_old_task, "58*regionType=parallel*sscl=test3.c:87:87*escl=test3.c:0:0**" ); #line 87 "test3.c" #pragma omp parallel POMP2_DLIST_00015 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_15 ); #line 88 "test3.c" { { POMP2_For_enter( &pomp2_region_16, "53*regionType=for*sscl=test3.c:89:89*escl=test3.c:0:0**" ); #line 89 "test3.c" #pragma omp for nowait for (i=0; i<4; ++i) { for (j=0; j<4; ++j) { printf("do %d\n", i); } } POMP2_For_exit( &pomp2_region_16 ); } #line 95 "test3.c" { POMP2_For_enter( &pomp2_region_17, "53*regionType=for*sscl=test3.c:96:96*escl=test3.c:0:0**" ); #line 96 "test3.c" #pragma omp for nowait for (i=0; i<4; ++i) { for (j=0; j<4; ++j) { for (k=0; k<4; ++k) { printf("do %d\n", i); } } } POMP2_For_exit( &pomp2_region_17 ); } #line 104 "test3.c" { POMP2_For_enter( &pomp2_region_18, "55*regionType=for*sscl=test3.c:105:105*escl=test3.c:0:0**" ); #line 105 "test3.c" #pragma omp for nowait for (i=0; i<4; ++i) for (j=0; j<4; ++j) printf("do %d\n", i); POMP2_For_exit( &pomp2_region_18 ); } #line 109 "test3.c" { POMP2_For_enter( &pomp2_region_19, "55*regionType=for*sscl=test3.c:110:110*escl=test3.c:0:0**" ); #line 110 "test3.c" #pragma omp for nowait for (i=0; i<4; ++i) for (j=0; j<4; ++j) for (k=0; k<4; ++k) printf("do %d\n", i); POMP2_For_exit( &pomp2_region_19 ); } #line 115 "test3.c" { POMP2_For_enter( &pomp2_region_20, "55*regionType=for*sscl=test3.c:116:116*escl=test3.c:0:0**" ); #line 116 "test3.c" #pragma omp for nowait for (i=0; i<4; ++i) for (j=0; j<4; ++j) { printf("do %d\n", i); } POMP2_For_exit( &pomp2_region_20 ); } #line 121 "test3.c" } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_15, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_15, pomp2_old_task ); } POMP2_Parallel_end( &pomp2_region_15 ); } POMP2_Parallel_join( &pomp2_region_15, pomp2_old_task ); } #line 122 "test3.c" } eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test3.f.out0000644000000000000000000000013112617055645021233 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83488918 30 ctime=1508162367.505887402 eztrace-1.1-7/extlib/opari2/test/data/test3.f.out0000644000175000017500000003611012617055645022424 0ustar00trahaytrahay00000000000000 #line 1 "test3.f" ! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Special tests for end pragma substitution and nested parallel regions/loops. program test3 include 'test3.f.opari.inc' integer i, j, k pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_1, &pomp_if, pomp_num_threads, pomp2_old_task, &"59*regionType=parallel*sscl=test3.f:23:23*escl=test3.f:0:0*"// &"*" ) #line 23 "test3.f" c$omp parallel !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_1) #line 24 "test3.f" call POMP2_Do_enter(pomp2_region_2, &"53*regionType=do*sscl=test3.f:24:24*escl=test3.f:0:0**" ) #line 24 "test3.f" c$omp do do 12,i = 1,8 a=a+1 12 continue #line 28 "test3.f" !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_2, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_2, pomp2_old_task) call POMP2_Do_exit(pomp2_region_2) #line 29 "test3.f" call POMP2_Implicit_barrier_enter(pomp2_region_1, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_1, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_1) #line 28 "test3.f" c$omp end parallel call POMP2_Parallel_join(pomp2_region_1, pomp2_old_task) #line 29 "test3.f" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_3, &pomp_if, pomp_num_threads, pomp2_old_task, &"61*regionType=paralleldo*sscl=test3.f:30:30*escl=test3.f:0:"// &"0**" ) #line 30 "test3.f" c$omp parallel !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_3) call POMP2_Do_enter(pomp2_region_3, &"61*regionType=paralleldo*sscl=test3.f:30:30*escl=test3.f:0:"// &"0**" ) #line 30 "test3.f" c$omp do do 13,i = 1,8 a=a+1 13 continue !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_3, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_3, pomp2_old_task) call POMP2_Do_exit(pomp2_region_3) call POMP2_Parallel_end(pomp2_region_3) !$omp end parallel call POMP2_Parallel_join(pomp2_region_3, pomp2_old_task) #line 36 "test3.f" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_4, &pomp_if, pomp_num_threads, pomp2_old_task, &"59*regionType=parallel*sscl=test3.f:35:35*escl=test3.f:0:0*"// &"*" ) #line 35 "test3.f" c$omp parallel !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_4) #line 36 "test3.f" call POMP2_Do_enter(pomp2_region_5, &"53*regionType=do*sscl=test3.f:36:36*escl=test3.f:0:0**" ) #line 36 "test3.f" c$omp do do 14,i = 1,8 a=a+1 14 continue #line 40 "test3.f" !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_5, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_5, pomp2_old_task) call POMP2_Do_exit(pomp2_region_5) #line 41 "test3.f" call POMP2_Atomic_enter(pomp2_region_6, &"57*regionType=atomic*sscl=test3.f:40:40*escl=test3.f:0:0**""// &" ) #line 40 "test3.f" c$omp atomic me = me + omp_get_thread_num() call POMP2_Atomic_exit(pomp2_region_6) #line 42 "test3.f" call POMP2_Implicit_barrier_enter(pomp2_region_4, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_4, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_4) #line 42 "test3.f" c$omp end parallel call POMP2_Parallel_join(pomp2_region_4, pomp2_old_task) #line 43 "test3.f" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_7, &pomp_if, pomp_num_threads, pomp2_old_task, &"61*regionType=paralleldo*sscl=test3.f:44:44*escl=test3.f:0:"// &"0**" ) #line 44 "test3.f" c$omp parallel !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_7) call POMP2_Do_enter(pomp2_region_7, &"61*regionType=paralleldo*sscl=test3.f:44:44*escl=test3.f:0:"// &"0**" ) #line 44 "test3.f" c$omp do do 15,i = 1,8 15 a=a+1 !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_7, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_7, pomp2_old_task) call POMP2_Do_exit(pomp2_region_7) call POMP2_Parallel_end(pomp2_region_7) !$omp end parallel call POMP2_Parallel_join(pomp2_region_7, pomp2_old_task) #line 48 "test3.f" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_8, &pomp_if, pomp_num_threads, pomp2_old_task, &"59*regionType=parallel*sscl=test3.f:47:47*escl=test3.f:0:0*"// &"*" ) #line 47 "test3.f" c$omp parallel private(me,glob) !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_8) #line 48 "test3.f" me = omp_get_thread_num() call POMP2_Implicit_barrier_enter(pomp2_region_8, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_8, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_8) #line 49 "test3.f" c$omp end parallel call POMP2_Parallel_join(pomp2_region_8, pomp2_old_task) #line 50 "test3.f" ! ********************** ! * nested parallelism * ! ********************** pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_9, &pomp_if, pomp_num_threads, pomp2_old_task, &"59*regionType=parallel*sscl=test3.f:55:55*escl=test3.f:0:0*"// &"*" ) #line 55 "test3.f" !$omp parallel !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_9) #line 56 "test3.f" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_10, &pomp_if, pomp_num_threads, pomp2_old_task, &"59*regionType=parallel*sscl=test3.f:56:56*escl=test3.f:0:0*"// &"*" ) #line 56 "test3.f" !$omp parallel !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_10) #line 57 "test3.f" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_11, &pomp_if, pomp_num_threads, pomp2_old_task, &"59*regionType=parallel*sscl=test3.f:57:57*escl=test3.f:0:0*"// &"*" ) #line 57 "test3.f" !$omp parallel !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_11) #line 58 "test3.f" pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_12, &pomp_if, pomp_num_threads, pomp2_old_task, &"61*regionType=paralleldo*sscl=test3.f:58:58*escl=test3.f:0:"// &"0**" ) #line 58 "test3.f" !$omp parallel !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_12) call POMP2_Do_enter(pomp2_region_12, &"61*regionType=paralleldo*sscl=test3.f:58:58*escl=test3.f:0:"// &"0**" ) #line 58 "test3.f" !$omp do do i = 1,8 a=a+1 end do !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_12, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_12, pomp2_old_task) call POMP2_Do_exit(pomp2_region_12) call POMP2_Parallel_end(pomp2_region_12) !$omp end parallel call POMP2_Parallel_join(pomp2_region_12, pomp2_old_task) #line 63 "test3.f" call POMP2_Implicit_barrier_enter(pomp2_region_11, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_11, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_11) #line 63 "test3.f" !$omp end parallel call POMP2_Parallel_join(pomp2_region_11, pomp2_old_task) #line 64 "test3.f" call POMP2_Implicit_barrier_enter(pomp2_region_10, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_10, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_10) #line 64 "test3.f" !$omp end parallel call POMP2_Parallel_join(pomp2_region_10, pomp2_old_task) #line 65 "test3.f" call POMP2_Implicit_barrier_enter(pomp2_region_9, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_9, pomp2_old_task) call POMP2_Parallel_end(pomp2_region_9) #line 65 "test3.f" !$omp end parallel call POMP2_Parallel_join(pomp2_region_9, pomp2_old_task) #line 66 "test3.f" ! ******************************************* ! * end pragma substitution in nested loops * ! ******************************************* pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_13, &pomp_if, pomp_num_threads, pomp2_old_task, &"61*regionType=paralleldo*sscl=test3.f:70:70*escl=test3.f:0:"// &"0**" ) #line 70 "test3.f" c$omp parallel !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_13) call POMP2_Do_enter(pomp2_region_13, &"61*regionType=paralleldo*sscl=test3.f:70:70*escl=test3.f:0:"// &"0**" ) #line 70 "test3.f" c$omp do do 16, i = 1,8 do 16, j = 1,8 a=a+1 16 continue !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_13, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_13, pomp2_old_task) call POMP2_Do_exit(pomp2_region_13) call POMP2_Parallel_end(pomp2_region_13) !$omp end parallel call POMP2_Parallel_join(pomp2_region_13, pomp2_old_task) #line 77 "test3.f" do 17,i = 1,8 pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_14, &pomp_if, pomp_num_threads, pomp2_old_task, &"61*regionType=paralleldo*sscl=test3.f:77:77*escl=test3.f:0:"// &"0**" ) #line 77 "test3.f" c$omp parallel !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_14) call POMP2_Do_enter(pomp2_region_14, &"61*regionType=paralleldo*sscl=test3.f:77:77*escl=test3.f:0:"// &"0**" ) #line 77 "test3.f" c$omp do do 18, j = 1,8 a=a+1 18 continue !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_14, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_14, pomp2_old_task) call POMP2_Do_exit(pomp2_region_14) call POMP2_Parallel_end(pomp2_region_14) !$omp end parallel call POMP2_Parallel_join(pomp2_region_14, pomp2_old_task) #line 82 "test3.f" 17 continue pomp_num_threads = pomp2_lib_get_max_threads() pomp_if = .true. call POMP2_Parallel_fork(pomp2_region_15, &pomp_if, pomp_num_threads, pomp2_old_task, &"61*regionType=paralleldo*sscl=test3.f:83:83*escl=test3.f:0:"// &"0**" ) #line 83 "test3.f" c$omp parallel !$omp& firstprivate(pomp2_old_task) private(pomp2_new_task) !$omp& if(pomp_if) num_threads(pomp_num_threads) call POMP2_Parallel_begin(pomp2_region_15) call POMP2_Do_enter(pomp2_region_15, &"61*regionType=paralleldo*sscl=test3.f:83:83*escl=test3.f:0:"// &"0**" ) #line 83 "test3.f" c$omp do do if (a .gt. 0) then exit endif enddo !$omp end do nowait call POMP2_Implicit_barrier_enter(pomp2_region_15, pomp2_old_task) !$omp barrier call POMP2_Implicit_barrier_exit(pomp2_region_15, pomp2_old_task) call POMP2_Do_exit(pomp2_region_15) call POMP2_Parallel_end(pomp2_region_15) !$omp end parallel call POMP2_Parallel_join(pomp2_region_15, pomp2_old_task) #line 90 "test3.f" end program test3 subroutine POMP2_Init_regions_000() include 'test3.f.opari.inc' call POMP2_Assign_handle( pomp2_region_1, &"61*regionType=parallel*sscl=test3.f:23:23*escl=test3.f:28:2"// &"8**" ) call POMP2_Assign_handle( pomp2_region_2, &"55*regionType=do*sscl=test3.f:24:24*escl=test3.f:28:28**" ) call POMP2_Assign_handle( pomp2_region_3, &"63*regionType=paralleldo*sscl=test3.f:30:30*escl=test3.f:35"// &":35**" ) call POMP2_Assign_handle( pomp2_region_4, &"61*regionType=parallel*sscl=test3.f:35:35*escl=test3.f:42:4"// &"2**" ) call POMP2_Assign_handle( pomp2_region_5, &"55*regionType=do*sscl=test3.f:36:36*escl=test3.f:40:40**" ) call POMP2_Assign_handle( pomp2_region_6, &"59*regionType=atomic*sscl=test3.f:40:40*escl=test3.f:41:41*"// &"*" ) call POMP2_Assign_handle( pomp2_region_7, &"63*regionType=paralleldo*sscl=test3.f:44:44*escl=test3.f:47"// &":47**" ) call POMP2_Assign_handle( pomp2_region_8, &"61*regionType=parallel*sscl=test3.f:47:47*escl=test3.f:49:4"// &"9**" ) call POMP2_Assign_handle( pomp2_region_9, &"61*regionType=parallel*sscl=test3.f:55:55*escl=test3.f:65:6"// &"5**" ) call POMP2_Assign_handle( pomp2_region_10, &"61*regionType=parallel*sscl=test3.f:56:56*escl=test3.f:64:6"// &"4**" ) call POMP2_Assign_handle( pomp2_region_11, &"61*regionType=parallel*sscl=test3.f:57:57*escl=test3.f:63:6"// &"3**" ) call POMP2_Assign_handle( pomp2_region_12, &"63*regionType=paralleldo*sscl=test3.f:58:58*escl=test3.f:62"// &":62**" ) call POMP2_Assign_handle( pomp2_region_13, &"63*regionType=paralleldo*sscl=test3.f:70:70*escl=test3.f:76"// &":76**" ) call POMP2_Assign_handle( pomp2_region_14, &"63*regionType=paralleldo*sscl=test3.f:77:77*escl=test3.f:81"// &":81**" ) call POMP2_Assign_handle( pomp2_region_15, &"63*regionType=paralleldo*sscl=test3.f:83:83*escl=test3.f:89"// &":89**" ) end eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test5.f.opari.inc.out0000644000000000000000000000013112617055645023116 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83488918 30 ctime=1508162367.533889848 eztrace-1.1-7/extlib/opari2/test/data/test5.f.opari.inc.out0000644000175000017500000000063012617055645024305 0ustar00trahaytrahay00000000000000 INTEGER*8 pomp2_region_1 INTEGER*8 pomp2_region_2 INTEGER*8 pomp2_region_3 integer*4 pomp2_lib_get_max_threads logical pomp2_test_lock integer*4 pomp2_test_nest_lock integer*8 pomp2_old_task, pomp2_new_task logical pomp_if integer*4 pomp_num_threads common /cb000/ pomp2_region_1, & pomp2_region_2, & pomp2_region_3 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test5.f0000644000000000000000000000013112617055645020427 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83488918 30 ctime=1508162367.529889498 eztrace-1.1-7/extlib/opari2/test/data/test5.f0000644000175000017500000000303312617055645021616 0ustar00trahaytrahay00000000000000! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test the splitting of combined parallel clauses. program test5 integer i,j,k,m logical l integer, dimension(10,10) :: AA, BB, CC integer, save :: t !$omp threadprivate(t) !$omp parallel !$omp+ do !$omp+ lastprivate(k) !$omp+ private(i,j), !$omp+ lastprivate !$omp+ ( !$omp+ l !random comment !$omp+ ), schedule(dynamic !$omp+ ) do i=1,4 write(*,*) "parallel do ", i k=k+i end do !$omp end parallel do if(k .gt. 0) l = .true. !$omp parallel sections if(l) num_threads(2) default(shared) !$omp+ firstprivate(j) lastprivate(i) copyin(t) reduction(+:l) !$omp section write(*,*) "section1" !$omp section write(*,*) "section2" !$omp section write(*,*) "section3" !$omp end parallel sections !$omp parallel workshare AA = BB BB = CC !$omp end parallel workshare end program test5 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test6.f90.opari.inc.out0000644000000000000000000000013112537514551023265 xustar0030 mtime=1434360169.140486251 29 atime=1507797543.83488918 30 ctime=1508162367.589894738 eztrace-1.1-7/extlib/opari2/test/data/test6.f90.opari.inc.out0000644000175000017500000000021112537514551024447 0ustar00trahaytrahay00000000000000 integer ( kind=4 ) :: pomp2_lib_get_max_threads logical :: pomp2_test_lock integer ( kind=4 ) :: pomp2_test_nest_lock eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test6.f0000644000000000000000000000013112617055645020430 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.83488918 30 ctime=1508162367.549891245 eztrace-1.1-7/extlib/opari2/test/data/test6.f0000644000175000017500000000536112617055645021625 0ustar00trahaytrahay00000000000000! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test that the insertion of wrapper functions works correctly, but ONLY on supported functions. program test6 include 'omp_lib.h' integer (kind=omp_lock_kind) lock1 integer (kind=omp_nest_lock_kind) lock2 integer (kind=omp_sched_kind) sched integer mod ! ************************************************** ! * Should be replaced by wrapper functions * ! * regardless of "distractions" * ! ************************************************** call omp_init_lock(lock1); call omp_init_nest_lock(lock2) call omp_set_lock(lock1); write(*,*) "omp_set_lock(lock1)" call omp_set_nest_lock(lock2) ! omp_set_nest_lock(lock2); call omp_unset_lock(lock1); !omp_unset_lock(lock1); call omp_unset_nest_lock(lock2) !$ mod = omp_test_lock(lock1) *$ mod = omp_test_nest_lock(lock2) !P$ mod = omp_test_lock(lock1) cP$ mod = omp_test_nest_lock(lock2) call omp_destroy_lock(lock1) call omp_destroy_nest_lock(lock2) ! ************************************************** ! * Not now, but planned for the future! * ! ************************************************** call omp_set_num_threads(4) call omp_set_dynamic(.true.) call omp_set_schedule(omp_sched_static, 1) call omp_set_nested(.true.) call omp_set_max_active_levels(2) ! ************************************************** ! * No replacement beyond this point! * ! ************************************************** ! call omp_init_lock(i) c call omp_init_lock(i) * call omp_init_lock(i) write(*,*) "omp_init_lock(i)", 'omp_init_lock(i)' ! call omp_init_lock(i) write(*,*) "omp_init_lock(i)""test", """omp_init_lock(i)", &"omp_init_lock(i)""", """", """""""","omp_init_lock(i) ", ! ",& & " + call omp_init_lock(i)" ! call omp_init_lock(i) ! call omp_init_lock(i) ! call omp_init_lock(i) ; call omp_set_lock(i) ! write(*,*) "call omp_init_lock(i)" ; call omp_init_lock(i) end program test6 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test7.f90.opari.inc.out0000644000000000000000000000013112617055645023271 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.83488918 30 ctime=1508162367.561892293 eztrace-1.1-7/extlib/opari2/test/data/test7.f90.opari.inc.out0000644000175000017500000000075512617055645024470 0ustar00trahaytrahay00000000000000 INTEGER( KIND=8 ) :: pomp2_region_1 INTEGER( KIND=8 ) :: pomp2_region_2 INTEGER( KIND=8 ) :: pomp2_region_3 integer ( kind=4 ) :: pomp2_lib_get_max_threads logical :: pomp2_test_lock integer ( kind=4 ) :: pomp2_test_nest_lock integer ( kind=8 ) :: pomp2_old_task, pomp2_new_task logical :: pomp_if integer ( kind=4 ) :: pomp_num_threads common /cb000/ pomp2_region_1,& pomp2_region_2,& pomp2_region_3 eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test1_a.f90.opari.inc.out0000644000000000000000000000013112537514551023560 xustar0030 mtime=1434360169.148486149 29 atime=1507797543.83888931 30 ctime=1508162367.585894389 eztrace-1.1-7/extlib/opari2/test/data/test1_a.f90.opari.inc.out0000644000175000017500000000021112537514551024742 0ustar00trahaytrahay00000000000000 integer ( kind=4 ) :: pomp2_lib_get_max_threads logical :: pomp2_test_lock integer ( kind=4 ) :: pomp2_test_nest_lock eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test1_a.f90.out0000644000000000000000000000013112617055645021702 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83888931 30 ctime=1508162367.473884607 eztrace-1.1-7/extlib/opari2/test/data/test1_a.f90.out0000644000175000017500000000634612617055645023103 0ustar00trahaytrahay00000000000000 #line 1 "test1_a.f90" ! * This file is part of the Score-P software (http://www.score-p.org) ! * ! * Copyright (c) 2009-2011, ! * RWTH Aachen University, Germany ! * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ! * Technische Universitaet Dresden, Germany ! * University of Oregon, Eugene, USA ! * Forschungszentrum Juelich GmbH, Germany ! * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ! * Technische Universitaet Muenchen, Germany ! * ! * See the COPYING file in the package base directory for details. ! * ! * Testfile for automated testing of OPARI2 ! * ! * @authors Bernd Mohr, Peter Philippen ! * ! * @brief Test the parsers ability to insert a necessary include statement at the right places. module functions_module interface function if0(a, & ! ) a=b b ) ! end function integer(kind=4) :: if0, a end function if0 end interface interface subroutine is1(a) integer :: a end subroutine is1 end interface contains integer(kind=4) function mf0(a, & ! ) a=b b ) ! end function ! integer functionkind THIS IS TOO EVIL FOR NOW, WILL TAKE CARE OF LATER ! functionkind = 4 include 'test1_a.f90.opari.inc' write (*,*) "function mf0" mf0 = 5 return end function mf0 subroutine ms0 include 'test1_a.f90.opari.inc' write (*,*) "subroutine ms0" end subroutine ms0 end module mmm module module1 use functions_module contains subroutine r1() include 'test1_a.f90.opari.inc' write (*,*) "Subroutine 1" call f1() end subroutine r1 end module module1 integer function f0() implicit & none include 'test1_a.f90.opari.inc' double precision :: d write (*,*) "function f0" f0 = 5 return end function f0 subroutine s0 include 'test1_a.f90.opari.inc' write (*,*) "subroutine s0" end subroutine s0 integer function f1(a) !interface use mmm include 'test1_a.f90.opari.inc' integer :: a, result write (*,*) "function f1" f1 = a return end function f1 subroutine s1(a) include 'test1_a.f90.opari.inc' integer :: a write (*,*) "subroutine s1" write (*,*) "keyword interface inside a string" call ss1() contains subroutine ss1() include 'test1_a.f90.opari.inc' write (*,*) "subroutine ss1" end subroutine ss1 end subroutine s1 program otest use mmm use rename_test, bar => foo integer :: i, f0, f1, function include 'test1_a.f90.opari.inc' function = 0 write (*,*) 'program otest' i = f0() i = f1(2) i = mf0() call s0 call s1(4) call ms0 end program otest eztrace-1.1-7/extlib/opari2/test/data/PaxHeaders.7332/test4.c.out0000644000000000000000000000013012617055645021230 xustar0030 mtime=1446796197.918458201 29 atime=1507797543.83888931 29 ctime=1508162367.51788845 eztrace-1.1-7/extlib/opari2/test/data/test4.c.out0000644000175000017500000000721012617055645022421 0ustar00trahaytrahay00000000000000 #include "test4.c.opari.inc" #line 1 "test4.c" /* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * * Testfile for automated testing of OPARI2 * * @authors Bernd Mohr, Peter Philippen * * @brief Test the nowait and untied clauses */ #include #ifdef _OPENMP #endif int main() { int i; { int pomp_num_threads = omp_get_max_threads(); int pomp_if = 1; POMP2_Task_handle pomp2_old_task; POMP2_Parallel_fork(&pomp2_region_1, pomp_if, pomp_num_threads, &pomp2_old_task, "58*regionType=parallel*sscl=test4.c:30:30*escl=test4.c:0:0**" ); #line 30 "test4.c" #pragma omp parallel POMP2_DLIST_00001 firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) { POMP2_Parallel_begin( &pomp2_region_1 ); #line 31 "test4.c" { printf("parallel\n"); { POMP2_For_enter( &pomp2_region_2, "53*regionType=for*sscl=test4.c:33:33*escl=test4.c:0:0**" ); #line 33 "test4.c" #pragma omp for nowait for(i=0; i<4; ++i) { printf("for nowait %d\n", i); } POMP2_For_exit( &pomp2_region_2 ); } #line 37 "test4.c" { POMP2_Sections_enter( &pomp2_region_3, "72*regionType=sections*sscl=test4.c:38:38*escl=test4.c:0:0*numSections=0**" ); #line 38 "test4.c" #pragma omp sections nowait { #line 40 "test4.c" #pragma omp section { POMP2_Section_begin( &pomp2_region_3, "72*regionType=sections*sscl=test4.c:38:38*escl=test4.c:0:0*numSections=0**" ); #line 41 "test4.c" printf("section nowait 1\n"); POMP2_Section_end( &pomp2_region_3 ); } #line 42 "test4.c" #pragma omp section { POMP2_Section_begin( &pomp2_region_3, "72*regionType=sections*sscl=test4.c:38:38*escl=test4.c:0:0*numSections=1**" ); #line 43 "test4.c" { printf("section nowait 2\n"); } POMP2_Section_end( &pomp2_region_3 ); } #line 44 "test4.c" } POMP2_Sections_exit( &pomp2_region_3 ); } #line 45 "test4.c" { POMP2_Single_enter( &pomp2_region_4, "56*regionType=single*sscl=test4.c:46:46*escl=test4.c:0:0**" ); #line 46 "test4.c" #pragma omp single nowait { POMP2_Single_begin( &pomp2_region_4 ); #line 47 "test4.c" { printf("single nowait\n"); } POMP2_Single_end( &pomp2_region_4 ); } POMP2_Single_exit( &pomp2_region_4 ); } #line 50 "test4.c" { int pomp_if = 1; { POMP2_Task_handle pomp2_old_task; POMP2_Task_handle pomp2_new_task; if (pomp_if) POMP2_Untied_task_create_begin( &pomp2_region_5, &pomp2_new_task, &pomp2_old_task, pomp_if, "66*regionType=task*sscl=test4.c:51:51*escl=test4.c:0:0*hasUntied=1**" ); #line 51 "test4.c" #pragma omp task untied POMP2_DLIST_00005 if(pomp_if) firstprivate(pomp2_new_task, pomp_if) { if (pomp_if) POMP2_Untied_task_begin( &pomp2_region_5, pomp2_new_task ); #line 52 "test4.c" { printf("task untied\n"); } if (pomp_if) POMP2_Untied_task_end( &pomp2_region_5 ); } if (pomp_if) POMP2_Untied_task_create_end( &pomp2_region_5, pomp2_old_task ); } } #line 55 "test4.c" } { POMP2_Task_handle pomp2_old_task; POMP2_Implicit_barrier_enter( &pomp2_region_1, &pomp2_old_task ); #pragma omp barrier POMP2_Implicit_barrier_exit( &pomp2_region_1, pomp2_old_task ); } POMP2_Parallel_end( &pomp2_region_1 ); } POMP2_Parallel_join( &pomp2_region_1, pomp2_old_task ); } #line 56 "test4.c" } eztrace-1.1-7/extlib/opari2/test/PaxHeaders.7332/replacePaths_f77.awk0000644000000000000000000000013112617055645022105 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.83888931 30 ctime=1508162367.437881463 eztrace-1.1-7/extlib/opari2/test/replacePaths_f77.awk0000755000175000017500000000554012617055645023304 0ustar00trahaytrahay00000000000000# This file is part of the Score-P software (http://www.score-p.org) # # Copyright (c) 2009-2011, # * RWTH Aachen University, Germany # * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany # * Technische Universitaet Dresden, Germany # * University of Oregon, Eugene, USA # * Forschungszentrum Juelich GmbH, Germany # * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany # * Technische Universitaet Muenchen, Germany # # See the COPYING file in the package base directory for details. { if(match($0,"sscl=")){ line = " " for(i = 1; i <= NF; i++){ source = $i if(match($i,"\"//")){ # opari2 splits the ctc-string into multiple lines, for # comparison to reference data we put this into one line while(match(source, "\"//")){ # this is nasty, by getting a new line, we have to reset # the record counter i to 1 so we don't miss the closing # bracket at the end of the last line getline i = 1 sub(" \"", "", $1) source = source $1 sub("\"//&\"", "", source) } # remove full path gsub("escl=([^/]*/)*","escl=",source) gsub("sscl=([^/]*/)*","sscl=",source) # remove old length sub("\"[0-9]*","\"", source) # insert new length sub("\"", "\""length(source)-2, source) line = line " " source } else{ line = line " " $i } } # now for fortran77 we split the line again while(length(line) > 66){ subline = substr(line, 1, 66) print subline"\"//" line = " &\"" substr(line, 67) } print line # splitindex = match(line,"Type=")+5 # print "splitindex=" splitindex "for " line # lineRepl = substr(line, 0, splintindex-1) "\"//\n &\"" substr(line, splitindex) # line = lineRepl # print lineRepl } else if(match($0,"POMP2_Init_regions")){ #remove the timestamp based region identifier gsub("Init_regions_[0-9_]+","Init_regions_000",$0) print $0 } else if(match($0,"#line")){ #remove the path from the line numbering gsub("/([^/]*/)*","",$0) print $0 } # else if(match($0,"get_max_threads")){ #remove timestamp based function specifier # gsub("pomp_get_max_threads[0-9_]*", "pomp_get_max_threads000", $0) # print $0 # } else if(match($0,"/cb")){ #remove timestamp based common block identifier gsub("cb[0-9_]*", "cb000", $0) print $0 } else{ print $0 } } eztrace-1.1-7/extlib/opari2/test/PaxHeaders.7332/jacobi_c_test.sh.in0000644000000000000000000000013112617055645022034 xustar0030 mtime=1446796197.922458326 30 atime=1508162292.575515465 29 ctime=1508162367.70990522 eztrace-1.1-7/extlib/opari2/test/jacobi_c_test.sh.in0000644000175000017500000000465412617055645023235 0ustar00trahaytrahay00000000000000#!/bin/sh set -e opari_dir=`pwd` test_dir="../test/tmp" mkdir -p ${test_dir} test_data_dir=@abs_srcdir@/data CC="@CC@" INCDIR=. OPARI2=@abs_builddir@/../build-frontend/opari2 OPARI2_CONFIG="@abs_builddir@/../build-frontend/opari2-config --config=@abs_builddir@/../build-frontend/opari2_config.dat" LDFLAGS="-lm -L@abs_builddir@/../build-frontend/.libs -lpomp" OPENMP="@OPENMP_CFLAGS@" CFLAGS="@CFLAGS@" NM="`$OPARI2_CONFIG --nm`" rm -rf $test_dir/jacobi/C mkdir -p $test_dir/jacobi/C mkdir -p $test_dir/jacobi/C/opari2 cp -r $test_data_dir/jacobi/C/jacobi.c $test_dir/jacobi/C/ cp -r $test_data_dir/jacobi/C/jacobi.h $test_dir/jacobi/C/ cp -r $test_data_dir/jacobi/C/main.c $test_dir/jacobi/C/ cp @abs_srcdir@/../include/opari2/pomp2_lib.h $test_dir/jacobi/C/opari2 cd $test_dir/jacobi/C # instrument $OPARI2 main.c $OPARI2 jacobi.c # compile $CC -I$INCDIR $OPENMP $CFLAGS -c main.mod.c $CC -I$INCDIR $OPENMP $CFLAGS -c jacobi.mod.c #build $NM jacobi.mod.o main.mod.o | @EGREP@ -i "T \.{0,1}_{0,2}pomp2_init_regions" | `$OPARI2_CONFIG --awk-cmd` -f `$OPARI2_CONFIG --awk-script`> pomp_init_file.c $CC -I$INCDIR -c pomp_init_file.c $CC $OPENMP $CFLAGS pomp_init_file.o jacobi.mod.o main.mod.o $LDFLAGS -o jacobi$EXEEXT #run OMP_NUM_THREADS=4 ./jacobi$EXEEXT 2>jacobi_test.out grep 0: jacobi_test.out > jacobi_test_0 grep 1: jacobi_test.out > jacobi_test_1 grep 2: jacobi_test.out > jacobi_test_2 grep 3: jacobi_test.out > jacobi_test_3 if diff $test_data_dir/jacobi/C/jacobi_test_0.out jacobi_test_0 > /dev/null then true else echo "-------- ERROR: in program output --------" diff $test_data_dir/jacobi/C/jacobi_test_0.out jacobi_test_0 cd $opari_dir exit fi if diff $test_data_dir/jacobi/C/jacobi_test_1.out jacobi_test_1 > /dev/null then true else echo "-------- ERROR: in program output --------" diff $test_data_dir/jacobi/C/jacobi_test_1.out jacobi_test_1 cd $opari_dir exit fi if diff $test_data_dir/jacobi/C/jacobi_test_2.out jacobi_test_2 > /dev/null then true else echo "-------- ERROR: in program output --------" diff $test_data_dir/jacobi/C/jacobi_test_2.out jacobi_test_2 cd $opari_dir exit fi if diff $test_data_dir/jacobi/C/jacobi_test_3.out jacobi_test_3 > /dev/null then true else echo "-------- ERROR: in program output --------" diff $test_data_dir/jacobi/C/jacobi_test_3.out jacobi_test_3 cd $opari_dir exit fi cd $opari_dir eztrace-1.1-7/extlib/opari2/test/PaxHeaders.7332/jacobi_c++_test.sh.in0000644000000000000000000000013112617055645022162 xustar0030 mtime=1446796197.922458326 30 atime=1508162292.591516781 29 ctime=1508162367.70990522 eztrace-1.1-7/extlib/opari2/test/jacobi_c++_test.sh.in0000644000175000017500000000475312617055645023363 0ustar00trahaytrahay00000000000000#!/bin/sh set -e opari_dir=`pwd` test_dir="../test/tmp" mkdir -p ${test_dir} test_data_dir=@abs_srcdir@/data CXX="@CXX@" CC="@CC@" INCDIR=. OPARI2=@abs_builddir@/../build-frontend/opari2 OPARI2_CONFIG="@abs_builddir@/../build-frontend/opari2-config --config=@abs_builddir@/../build-frontend/opari2_config.dat" LDFLAGS="-lm -L@abs_builddir@/../build-frontend/.libs -lpomp" OPENMP="@OPENMP_CFLAGS@" CXXFLAGS="@CXXFLAGS@" rm -rf $test_dir/jacobi/C++ mkdir -p $test_dir/jacobi/C++ mkdir -p $test_dir/jacobi/C++/opari2 cp -r $test_data_dir/jacobi/C++/jacobi.cpp $test_dir/jacobi/C++/ cp -r $test_data_dir/jacobi/C++/jacobi.h $test_dir/jacobi/C++/ cp -r $test_data_dir/jacobi/C++/main.cpp $test_dir/jacobi/C++/ cp @abs_srcdir@/../include/opari2/pomp2_lib.h $test_dir/jacobi/C++/opari2/ cd $test_dir/jacobi/C++ #make instrument $OPARI2 main.cpp $OPARI2 jacobi.cpp #make compile $CXX -I$INCDIR $OPENMP $CXXFLAGS -c main.mod.cpp $CXX -I$INCDIR $OPENMP $CXXFLAGS -c jacobi.mod.cpp #make build @NM@ jacobi.mod.o main.mod.o | @EGREP@ -i "T \.{0,1}_{0,2}pomp2_init_regions" | `$OPARI2_CONFIG --awk-cmd` -f `$OPARI2_CONFIG --awk-script` > pomp_init_file.c $CC -I$INCDIR -c pomp_init_file.c $CXX $OPENMP $CXXFLAGS pomp_init_file.o jacobi.mod.o main.mod.o $LDFLAGS -o jacobi.$EXEEXT #make run OMP_NUM_THREADS=4 ./jacobi.$EXEEXT 2>jacobi_test.out grep 0: jacobi_test.out > jacobi_test_0 grep 1: jacobi_test.out > jacobi_test_1 grep 2: jacobi_test.out > jacobi_test_2 grep 3: jacobi_test.out > jacobi_test_3 if diff $test_data_dir/jacobi/C++/jacobi_test_0.out jacobi_test_0 > /dev/null then true else echo "-------- ERROR: in program output --------" diff $test_data_dir/jacobi/C++/jacobi_test_0.out jacobi_test_0 cd $opari_dir exit fi if diff $test_data_dir/jacobi/C++/jacobi_test_1.out jacobi_test_1 > /dev/null then true else echo "-------- ERROR: in program output --------" diff $test_data_dir/jacobi/C++/jacobi_test_1.out jacobi_test_1 cd $opari_dir exit fi if diff $test_data_dir/jacobi/C++/jacobi_test_2.out jacobi_test_2 > /dev/null then true else echo "-------- ERROR: in program output --------" diff $test_data_dir/jacobi/C++/jacobi_test_2.out jacobi_test_2 cd $opari_dir exit fi if diff $test_data_dir/jacobi/C++/jacobi_test_3.out jacobi_test_3 > /dev/null then true else echo "-------- ERROR: in program output --------" diff $test_data_dir/jacobi/C++/jacobi_test_3.out jacobi_test_3 cd $opari_dir exit fi cd $opari_dir eztrace-1.1-7/extlib/opari2/test/PaxHeaders.7332/f90_test.sh.in0000644000000000000000000000013212537514551020677 xustar0030 mtime=1434360169.168485895 30 atime=1508162288.827207806 30 ctime=1508162367.309870283 eztrace-1.1-7/extlib/opari2/test/f90_test.sh.in0000755000175000017500000000373012537514551022074 0ustar00trahaytrahay00000000000000#!/bin/sh # This file is part of the Score-P software (http://www.score-p.org) # # Copyright (c) 2009-2011, # * RWTH Aachen University, Germany # * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany # * Technische Universitaet Dresden, Germany # * University of Oregon, Eugene, USA # * Forschungszentrum Juelich GmbH, Germany # * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany # * Technische Universitaet Muenchen, Germany # # See the COPYING file in the package base directory for details. opari_dir=`pwd` test_dir="../test/tmp" mkdir -p ${test_dir} test_data_dir=@abs_srcdir@/data sed=@SED@ awk=@AWK@ cp $test_data_dir/test*.f90 $test_dir/ if [ ! -f $test_dir/replacePaths_f90.awk ]; then cp $test_data_dir/../replacePaths_f90.awk $test_dir/ fi cd $test_dir for file in test*.f90 do echo " $file ..." base=`basename $file .f90` $opari_dir/opari2 --untied=keep,no-warn $file || exit # Replace the full path in the line numbering # in the source files `$awk -f replacePaths_f90.awk $base.mod.F90 > $base.mod.F90.tmp` `mv $base.mod.F90.tmp $base.mod.F90` # Replace the full paths and unify timestamp based region identifiers # in the include files `$awk -f replacePaths_f90.awk $base.f90.opari.inc > $base.f90.opari.inc.tmp` `mv $base.f90.opari.inc.tmp $base.f90.opari.inc` if diff -u $test_data_dir/$base.f90.out $base.mod.F90 > /dev/null then true else echo "-------- ERROR: unexpected change in transformed program --------" diff -u $test_data_dir/$base.f90.out $base.mod.F90 error="true" continue fi if diff -u $test_data_dir/$base.f90.opari.inc.out $base.f90.opari.inc > /dev/null then true else echo "-------- ERROR: unexpected change in opari include file --------" diff -u $test_data_dir/$base.f90.opari.inc.out $base.f90.opari.inc error="true" continue fi done cd $opari_dir if [ "$error" = "true" ] then exit -1 fi eztrace-1.1-7/extlib/opari2/test/PaxHeaders.7332/jacobi_f90_test.sh.in0000644000000000000000000000013212617055645022211 xustar0030 mtime=1446796197.922458326 30 atime=1508162292.603517768 30 ctime=1508162367.713905569 eztrace-1.1-7/extlib/opari2/test/jacobi_f90_test.sh.in0000644000175000017500000000505212617055645023402 0ustar00trahaytrahay00000000000000#!/bin/sh set -e opari_dir=`pwd` test_dir="../test/tmp" mkdir -p ${test_dir} test_data_dir=@abs_srcdir@/data CC="@CC@" FC="@FC@" INCDIR=. OPARI2=@abs_builddir@/../build-frontend/opari2 OPARI2_CONFIG="@abs_builddir@/../build-frontend/opari2-config --config=@abs_builddir@/../build-frontend/opari2_config.dat" LDFLAGS="-lm -L@abs_builddir@/../build-frontend/.libs -lpomp" FCFLAGS="@FCFLAGS@" OPENMP="@OPENMP_CFLAGS@" rm -rf $test_dir/jacobi/F mkdir -p $test_dir/jacobi/F cp -r $test_data_dir/jacobi/F/jacobi.F90 $test_dir/jacobi/F cp -r $test_data_dir/jacobi/F/main.F90 $test_dir/jacobi/F cp -r $test_data_dir/jacobi/F/VariableDef.f90 $test_dir/jacobi/F #cp @srcdir@/../src/pomp-lib-dummy/pomp_lib.h $test_dir/jacobi/F/ #cp @srcdir@/../src/pomp-lib-dummy/opari_omp.h $test_dir/jacobi/F/ cd $test_dir/jacobi/F #make instrument $OPARI2 main.F90 $OPARI2 jacobi.F90 $OPARI2 VariableDef.f90 #make compile $FC -I$INCDIR $OPENMP $FCFLAGS -c VariableDef.mod.F90 $FC -I$INCDIR $OPENMP $FCFLAGS -c jacobi.mod.F90 $FC -I$INCDIR $OPENMP $FCFLAGS -c main.mod.F90 #make build @NM@ jacobi.mod.o main.mod.o | @EGREP@ -i "T \.{0,1}_{0,2}pomp2_init_regions" | `$OPARI2_CONFIG --awk-cmd` -f `$OPARI2_CONFIG --awk-script`> pomp_init_file.c $CC -I$INCDIR -c pomp_init_file.c $FC $OPENMP $FCFLAGS pomp_init_file.o jacobi.mod.o main.mod.o VariableDef.mod.o $LDFLAGS -o jacobi$EXEEXT #make run OMP_NUM_THREADS=4 ./jacobi$EXEEXT 2>jacobi_test.out grep 0: jacobi_test.out > jacobi_test_0 grep 1: jacobi_test.out > jacobi_test_1 grep 2: jacobi_test.out > jacobi_test_2 grep 3: jacobi_test.out > jacobi_test_3 if diff $test_data_dir/jacobi/F/jacobi_test_0.out jacobi_test_0 > /dev/null then true else echo "-------- ERROR: in program output --------" diff $test_data_dir/jacobi/F/jacobi_test_0.out jacobi_test_0 cd $opari_dir exit fi if diff $test_data_dir/jacobi/F/jacobi_test_1.out jacobi_test_1 > /dev/null then true else echo "-------- ERROR: in program output --------" diff $test_data_dir/jacobi/F/jacobi_test_1.out jacobi_test_1 cd $opari_dir exit fi if diff $test_data_dir/jacobi/F/jacobi_test_2.out jacobi_test_2 > /dev/null then true else echo "-------- ERROR: in program output --------" diff $test_data_dir/jacobi/F/jacobi_test_2.out jacobi_test_2 cd $opari_dir exit fi if diff $test_data_dir/jacobi/F/jacobi_test_3.out jacobi_test_3 > /dev/null then true else echo "-------- ERROR: in program output --------" diff $test_data_dir/jacobi/F/jacobi_test_3.out jacobi_test_3 cd $opari_dir exit fi cd $opari_dir eztrace-1.1-7/extlib/opari2/test/PaxHeaders.7332/replacePaths_f90.awk0000644000000000000000000000013112617055645022100 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.83888931 30 ctime=1508162367.441881812 eztrace-1.1-7/extlib/opari2/test/replacePaths_f90.awk0000755000175000017500000000470612617055645023302 0ustar00trahaytrahay00000000000000# This file is part of the Score-P software (http://www.score-p.org) # # Copyright (c) 2009-2011, # * RWTH Aachen University, Germany # * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany # * Technische Universitaet Dresden, Germany # * University of Oregon, Eugene, USA # * Forschungszentrum Juelich GmbH, Germany # * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany # * Technische Universitaet Muenchen, Germany # # See the COPYING file in the package base directory for details. { if(match($0,"sscl=")){ line = " " for(i = 1; i <= NF; i++){ source = $i if(match($i,"\"//&")){ # ^\"")){ # opari2 splits the ctc-string into multiple lines, for # comparison to reference data we put this into one line while(match(source, "\"//&")){ # this is nasty, by getting a new line, we have to reset # the record counter i to 1 so we don't miss the closing # bracket at the end of the last line getline i = 1 sub(" \"", "", $1) source = source $1 sub("\"//&\"", "", source) } #remove full path gsub("escl=([^/]*/)*","escl=",source) gsub("sscl=([^/]*/)*","sscl=",source) #remove old length sub("\"[0-9]*","\"", source) #insert new length sub("\"", "\""length(source)-2, source) line = line " " source } else{ line = line " " $i } } print line } else if(match($0,"POMP2_Init_regions")){ #remove the timestamp based region identifier gsub("Init_regions_[0-9_]+","Init_regions_000",$0) print $0 } else if(match($0,"#line")){ #remove the path from the line numbering gsub("/([^/]*/)*","",$0) print $0 } # else if(match($0,"get_max_threads")){ #remove timestamp based function specifier # gsub("pomp_get_max_threads[0-9_]*", "pomp_get_max_threads000", $0) # print $0 # } else if(match($0,"/cb")){ #remove timestamp based common block identifier gsub("cb[0-9_]*", "cb000", $0) print $0 } else{ print $0 } } eztrace-1.1-7/extlib/opari2/test/PaxHeaders.7332/replacePaths_c.awk0000644000000000000000000000013112617055645021724 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.83888931 30 ctime=1508162367.437881463 eztrace-1.1-7/extlib/opari2/test/replacePaths_c.awk0000755000175000017500000000261312617055645023121 0ustar00trahaytrahay00000000000000# This file is part of the Score-P software (http://www.score-p.org) # # Copyright (c) 2009-2011, # * RWTH Aachen University, Germany # * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany # * Technische Universitaet Dresden, Germany # * University of Oregon, Eugene, USA # * Forschungszentrum Juelich GmbH, Germany # * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany # * Technische Universitaet Muenchen, Germany # # See the COPYING file in the package base directory for details. { if(match($0,"sscl=")){ line = " " for(i = 1; i <= NF; i++){ if(match($i,"^\"")){ #remove full path gsub("escl=([^/]*/)*","escl=",$i) gsub("sscl=([^/]*/)*","sscl=",$i) #remove old length sub("\"[0-9]*","\"", $i) #insert new length sub("\"", "\""length($i)-2, $i) } line = line " " $i } print line } else if(match($0,"POMP2_Init_regions")){ #remove the timestamp based region identifier gsub("Init_regions_[0-9_]+","Init_regions_000",$0) print $0 } else if(match($0,"#line")){ #remove the path from the line numbering gsub("/([^/]*/)*","",$0) print $0 } else{ print $0 } } eztrace-1.1-7/extlib/opari2/test/PaxHeaders.7332/jacobi_f77_test.sh.in0000644000000000000000000000013212617055645022216 xustar0030 mtime=1446796197.922458326 30 atime=1508162292.619519084 30 ctime=1508162367.713905569 eztrace-1.1-7/extlib/opari2/test/jacobi_f77_test.sh.in0000644000175000017500000000442412617055645023411 0ustar00trahaytrahay00000000000000#!/bin/sh set -e opari_dir=`pwd` test_dir="../test/tmp" mkdir -p ${test_dir} test_data_dir=@abs_srcdir@/data CC="@CC@" F77="@F77@" INCDIR=. OPARI2=@abs_builddir@/../build-frontend/opari2 OPARI2_CONFIG="@abs_builddir@/../build-frontend/opari2-config --config=@abs_builddir@/../build-frontend/opari2_config.dat" LDFLAGS="-lm -L@abs_builddir@/../build-frontend/.libs -lpomp" FFLAGS="@FFLAGS@" OPENMP="@OPENMP_CFLAGS@" rm -rf $test_dir/jacobi/F77 mkdir -p $test_dir/jacobi/F77 cp -r $test_data_dir/jacobi/F77/jacobi.f $test_dir/jacobi/F77 cp -r $test_data_dir/jacobi/F77/main.f $test_dir/jacobi/F77 cd $test_dir/jacobi/F77 #make instrument $OPARI2 main.f $OPARI2 jacobi.f #make compile $F77 -I$INCDIR $OPENMP $FFLAGS -c jacobi.mod.F $F77 -I$INCDIR $OPENMP $FFLAGS -c main.mod.F #make build @NM@ jacobi.mod.o main.mod.o | @EGREP@ -i "T \.{0,1}_{0,2}pomp2_init_regions" | `$OPARI2_CONFIG --awk-cmd` -f `$OPARI2_CONFIG --awk-script`> pomp_init_file.c $CC -I$INCDIR -c pomp_init_file.c $F77 $OPENMP $FFLAGS pomp_init_file.o jacobi.mod.o main.mod.o $LDFLAGS -o jacobi$EXEEXT #make run OMP_NUM_THREADS=4 ./jacobi$EXEEXT 2>jacobi_test.out grep 0: jacobi_test.out > jacobi_test_0 grep 1: jacobi_test.out > jacobi_test_1 grep 2: jacobi_test.out > jacobi_test_2 grep 3: jacobi_test.out > jacobi_test_3 if diff $test_data_dir/jacobi/F77/jacobi_test_0.out jacobi_test_0 > /dev/null then true else echo "-------- ERROR: in program output --------" diff $test_data_dir/jacobi/F77/jacobi_test_0.out jacobi_test_0 cd $opari_dir exit fi if diff $test_data_dir/jacobi/F77/jacobi_test_1.out jacobi_test_1 > /dev/null then true else echo "-------- ERROR: in program output --------" diff $test_data_dir/jacobi/F77/jacobi_test_1.out jacobi_test_1 cd $opari_dir exit fi if diff $test_data_dir/jacobi/F77/jacobi_test_2.out jacobi_test_2 > /dev/null then true else echo "-------- ERROR: in program output --------" diff $test_data_dir/jacobi/F77/jacobi_test_2.out jacobi_test_2 cd $opari_dir exit fi if diff $test_data_dir/jacobi/F77/jacobi_test_3.out jacobi_test_3 > /dev/null then true else echo "-------- ERROR: in program output --------" diff $test_data_dir/jacobi/F77/jacobi_test_3.out jacobi_test_3 cd $opari_dir exit fi cd $opari_dir eztrace-1.1-7/extlib/opari2/test/PaxHeaders.7332/Makefile.inc.am0000644000000000000000000000013113126724465021106 xustar0030 mtime=1499179317.708328983 30 atime=1508162206.672870078 29 ctime=1508162367.70590487 eztrace-1.1-7/extlib/opari2/test/Makefile.inc.am0000644000175000017500000000177013126724465022303 0ustar00trahaytrahay00000000000000# This file is part of the Score-P software (http://www.score-p.org) # # Copyright (c) 2009-2011, # * RWTH Aachen University, Germany # * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany # * Technische Universitaet Dresden, Germany # * University of Oregon, Eugene, USA # * Forschungszentrum Juelich GmbH, Germany # * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany # * Technische Universitaet Muenchen, Germany # # See the COPYING file in the package base directory for details. ## -*- mode: makefile -*- #check_PROGRAMS += #TESTS += $(SRC_ROOT)test/c_test.sh TESTS += $(SRC_ROOT)test/f90_test.sh TESTS += $(SRC_ROOT)test/f77_test.sh if OPENMP_SUPPORTED TESTS += $(SRC_ROOT)test/jacobi_c_test.sh TESTS += $(SRC_ROOT)test/jacobi_c++_test.sh if FORTRAN_SUPPORT_ALLOCATABLE if SCOREP_HAVE_FC TESTS += $(SRC_ROOT)test/jacobi_f90_test.sh endif if SCOREP_HAVE_F77 TESTS += $(SRC_ROOT)test/jacobi_f77_test.sh endif endif endif eztrace-1.1-7/extlib/opari2/test/PaxHeaders.7332/f77_test.sh.in0000644000000000000000000000013212617055645020707 xustar0030 mtime=1446796197.922458326 30 atime=1508162288.843209116 30 ctime=1508162367.309870283 eztrace-1.1-7/extlib/opari2/test/f77_test.sh.in0000755000175000017500000000363412617055645022107 0ustar00trahaytrahay00000000000000#!/bin/sh # This file is part of the Score-P software (http://www.score-p.org) # # Copyright (c) 2009-2011, # * RWTH Aachen University, Germany # * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany # * Technische Universitaet Dresden, Germany # * University of Oregon, Eugene, USA # * Forschungszentrum Juelich GmbH, Germany # * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany # * Technische Universitaet Muenchen, Germany # # See the COPYING file in the package base directory for details. opari_dir=`pwd` test_dir="../test/tmp" mkdir -p ${test_dir} test_data_dir=@abs_srcdir@/data sed=@SED@ awk=@AWK@ cp $test_data_dir/test*.f $test_dir/ if [ ! -f $test_dir/replacePaths_f77.awk ]; then cp $test_data_dir/../replacePaths_f77.awk $test_dir/ fi cd $test_dir for file in test*.f do echo " $file ..." base=`basename $file .f` $opari_dir/opari2 $file || exit # Replace the full path in the line numbering # in the source files `$awk -f replacePaths_f77.awk $base.mod.F > $base.mod.F.tmp` `mv $base.mod.F.tmp $base.mod.F` # Replace the full paths and unify timestamp based region identifiers # in the include files `$awk -f replacePaths_f77.awk $base.f.opari.inc > $base.f.opari.inc.tmp` `mv $base.f.opari.inc.tmp $base.f.opari.inc` if diff -u $test_data_dir/$base.f.out $base.mod.F > /dev/null then true else echo "-------- ERROR: unexpected change in transformed program --------" diff -u $test_data_dir/$base.f.out $base.mod.F error="true" continue fi if diff -u $test_data_dir/$base.f.opari.inc.out $base.f.opari.inc > /dev/null then true else echo "-------- ERROR: unexpected change in opari include file --------" diff -u $test_data_dir/$base.f.opari.inc.out $base.f.opari.inc error="true" continue fi done cd $opari_dir if [ "$error" = "true" ] then exit -1 fi eztrace-1.1-7/extlib/opari2/test/PaxHeaders.7332/c_test.sh.in0000644000000000000000000000013212537514551020523 xustar0030 mtime=1434360169.168485895 30 atime=1508162288.811206495 30 ctime=1508162367.305869934 eztrace-1.1-7/extlib/opari2/test/c_test.sh.in0000644000175000017500000000371612537514551021721 0ustar00trahaytrahay00000000000000#!/bin/sh # This file is part of the Score-P software (http://www.score-p.org) # # Copyright (c) 2009-2011, # * RWTH Aachen University, Germany # * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany # * Technische Universitaet Dresden, Germany # * University of Oregon, Eugene, USA # * Forschungszentrum Juelich GmbH, Germany # * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany # * Technische Universitaet Muenchen, Germany # # See the COPYING file in the package base directory for details. opari_dir=`pwd` test_dir="../test/tmp" mkdir -p ${test_dir} test_data_dir=@abs_srcdir@/data sed=@SED@ awk=@AWK@ echo $test_data_dir echo $test_dir cp $test_data_dir/test?.c $test_dir/ if [ ! -f $test_dir/replacePaths_c.awk ]; then cp $test_data_dir/../replacePaths_c.awk $test_dir/ fi cd $test_dir for file in test?.c do echo " $file ..." base=`basename $file .c` $opari_dir/opari2 --untied=keep,no-warn $file || exit # Replace the full path in the line numbering # in the source files `$awk -f replacePaths_c.awk $base.mod.c > $base.mod.c.tmp` `mv $base.mod.c.tmp $base.mod.c` # Replace the full paths and unify timestamp based region identifiers # in the include files `$awk -f replacePaths_c.awk $base.c.opari.inc > $base.c.opari.inc.tmp` `mv $base.c.opari.inc.tmp $base.c.opari.inc` if diff -u $test_data_dir/$base.c.out $base.mod.c > /dev/null then true else echo "-------- ERROR: unexpected change in transformed program --------" diff -u $test_data_dir/$base.c.out $base.mod.c error="true" continue fi if diff -u $test_data_dir/$base.c.opari.inc.out $base.c.opari.inc > /dev/null then true else echo "-------- ERROR: unexpected change in opari include file --------" diff -u $test_data_dir/$base.c.opari.inc.out $base.c.opari.inc error="true" continue fi done cd $opari_dir if [ "$error" = "true" ] then exit -1 fi eztrace-1.1-7/extlib/opari2/PaxHeaders.7332/doc0000644000000000000000000000013213171135477016013 xustar0030 mtime=1508162367.281867838 30 atime=1508162367.741908015 30 ctime=1508162367.281867838 eztrace-1.1-7/extlib/opari2/doc/0000755000175000017500000000000013171135477017257 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/doc/PaxHeaders.7332/example0000644000000000000000000000013013171135477017444 xustar0029 mtime=1508162367.70990522 30 atime=1508162367.741908015 29 ctime=1508162367.70990522 eztrace-1.1-7/extlib/opari2/doc/example/0000755000175000017500000000000013171135477020712 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/doc/example/PaxHeaders.7332/example.f0000644000000000000000000000013212617055645021327 xustar0030 mtime=1446796197.898457576 30 atime=1508138918.400979951 30 ctime=1508162367.441881812 eztrace-1.1-7/extlib/opari2/doc/example/example.f0000644000175000017500000000051612617055645022520 0ustar00trahaytrahay00000000000000 PROGRAM EXAMPLE INTEGER i, lsum, sum sum = 0 !$omp parallel private(i, lsum) reduction(+:sum) lsum = 0 !$omp do do i=1,20 lsum = lsum + i enddo !$omp end do write(*,*) "LOCAL SUM: ", lsum sum = sum + lsum !$omp end parallel write(*,*) "TOTAL SUM: ", sum END eztrace-1.1-7/extlib/opari2/doc/example/PaxHeaders.7332/example.c0000644000000000000000000000013112537514551021320 xustar0029 mtime=1434360169.51648145 30 atime=1508138918.400979951 30 ctime=1508162367.441881812 eztrace-1.1-7/extlib/opari2/doc/example/example.c0000644000175000017500000000054012537514551022507 0ustar00trahaytrahay00000000000000#include int main(int argc, char** argv){ int i, lsum, sum; sum = 0; #pragma omp parallel private(i, lsum) reduction(+:sum) { lsum = 0; #pragma omp for for(i = 0; i < 21; i++) { lsum += i; } printf("local sum: %d\n", lsum); sum += lsum; } printf("total sum: %d\n", sum); return 0; } eztrace-1.1-7/extlib/opari2/doc/example/PaxHeaders.7332/Makefile.in0000644000000000000000000000013112617055645021571 xustar0030 mtime=1446796197.894457451 30 atime=1508162292.631520071 29 ctime=1508162367.70990522 eztrace-1.1-7/extlib/opari2/doc/example/Makefile.in0000644000175000017500000000547312617055645022772 0ustar00trahaytrahay00000000000000###################################################### # Compiler # ###################################################### CC=@CC@ FORTRAN=@F77@ OPENMP_C_FLAG=@OPENMP_CFLAGS@ OPENMP_F_FLAG=@OPENMP_FFLAGS@ ###################################################### # OPARI & DUMMY LIBRARY # ###################################################### POMP_INC=-I@abs_srcdir@/../../include POMPLIBDIR=@abs_builddir@/../../build-frontend/.libs/ POMPLIB=-L${POMPLIBDIR} -lpomp BINDIR=@prefix@/bin OPARI=$(BINDIR)/opari2 OPARI2_CONFIG=$(BINDIR)/opari2-config # We need to make sure that we use the right versions # of nm, awk and grep. opari2-config returns the right # commands with the necessary options. NM=`$(OPARI2_CONFIG) --nm` AWK=`$(OPARI2_CONFIG) --awk-cmd` AWK_SCRIPT=`$(OPARI2_CONFIG) --awk-script` GREP=`$(OPARI2_CONFIG) --egrep` all: c fortran ###################################################### # C EXAMPLE # ###################################################### c: example_c example_c_inst # Build without instrumentation example_c: example.c $(CC) $(OPENMP_C_FLAG) $? -o $@ # Linking step example_c_inst: example_c.mod.o pompregions_c.o $(CC) $(OPENMP_C_FLAG) $? $(POMPLIB) -o $@ pompregions_c.o : pompregions_c.c $(CC) $(POMP_INC) -c $? -o $@ # Use nm to find the initialization functions in the # object file of the instrumented user code. Then the # awk script generates these functions. pompregions_c.c : example_c.mod.o $(NM) example_c.mod.o | $(GREP) -i POMP2_Init_regions | $(GREP) " [TD] " | $(AWK) -f $(AWK_SCRIPT) > pompregions_c.c example_c.mod.o: example.mod.c $(CC) $(OPENMP_C_FLAG) $(POMP_INC) -c $? -o $@ example.mod.c: example.c $(OPARI) example.c ###################################################### # FORTRAN EXAMPLE # ###################################################### fortran: example_f example_f_inst # Build without instrumentation example_f: example.f $(FORTRAN) $(OPENMP_F_FLAG) $? -o $@ # Linking step example_f_inst: example_f.mod.o pompregions_f.o $(FORTRAN) $(OPENMP_F_FLAG) $? $(POMPLIB) -o $@ pompregions_f.o : pompregions_f.c $(CC) $(POMP_INC) -c $? -o $@ # Use nm to find the initialization functions in the # object file of the instrumented user code. Then the # awk script generates these functions. pompregions_f.c : example_f.mod.o $(NM) example_f.mod.o | $(GREP) -i POMP2_Init_regions | $(AWK) -f $(AWK_SCRIPT) > pompregions_f.c example_f.mod.o : example.mod.F $(FORTRAN) $(OPENMP_F_FLAG) -c -o $@ $? example.mod.F: example.f $(OPARI) example.f ###################################################### clean: rm -rf example_? rm -rf example_?_inst rm -rf example.mod.? rm -rf example.?.opari.inc rm -rf pompregions_?.c rm -rf *.o eztrace-1.1-7/extlib/opari2/doc/PaxHeaders.7332/example_user_instrumentation0000644000000000000000000000013013171135477024025 xustar0029 mtime=1508162367.70990522 30 atime=1508162367.741908015 29 ctime=1508162367.70990522 eztrace-1.1-7/extlib/opari2/doc/example_user_instrumentation/0000755000175000017500000000000013171135477025273 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/doc/example_user_instrumentation/PaxHeaders.7332/example_user_instrument0000644000000000000000000000013212617055645031012 xustar0030 mtime=1446796197.898457576 30 atime=1508138918.412980251 30 ctime=1508162367.441881812 eztrace-1.1-7/extlib/opari2/doc/example_user_instrumentation/example_user_instrumentation.c0000644000175000017500000000067512617055645033465 0ustar00trahaytrahay00000000000000#include int foo() { int i = 0; #pragma pomp inst begin(foo) //usefull work could be done here which changes i printf( "Hello from foo.\n" ); if ( i == 0 ) { #pragma pomp inst altend(foo) return 42; } //other work might be done here return i; #pragma pomp inst end(foo) } int main( int argc, char** argv ) { #pragma pomp inst init printf( "Hello from main.\n" ); foo(); return 0; } eztrace-1.1-7/extlib/opari2/doc/example_user_instrumentation/PaxHeaders.7332/example_user_instrument0000644000000000000000000000013212617055645031012 xustar0030 mtime=1446796197.898457576 30 atime=1508138918.412980251 30 ctime=1508162367.445882162 eztrace-1.1-7/extlib/opari2/doc/example_user_instrumentation/example_user_instrumentation.f0000644000175000017500000000061612617055645033463 0ustar00trahaytrahay00000000000000 SUBROUTINE FOO INTEGER i !$POMP INST BEGIN(FOO) WRITE (*,*) 'Hello from FOO.' ! work is done here if (i.eq.0) THEN !$POMP INST ALTEND(FOO) RETURN END IF ! other work is done here !$POMP INST END(FOO) END PROGRAM EXAMPLE_USER_INSTRUMENTATION !$POMP INST INIT WRITE (*,*) 'Hello from PROGRAM.' CALL FOO() END eztrace-1.1-7/extlib/opari2/doc/example_user_instrumentation/PaxHeaders.7332/Makefile.in0000644000000000000000000000013112617055645026152 xustar0030 mtime=1446796197.898457576 30 atime=1508162292.651521716 29 ctime=1508162367.70990522 eztrace-1.1-7/extlib/opari2/doc/example_user_instrumentation/Makefile.in0000644000175000017500000000666112617055645027353 0ustar00trahaytrahay00000000000000###################################################### # Compiler # ###################################################### CC=@CC@ FORTRAN=@F77@ OPENMP_C_FLAG=@OPENMP_CFLAGS@ OPENMP_F_FLAG=@OPENMP_FFLAGS@ ###################################################### # OPARI & DUMMY LIBRARY # ###################################################### POMP_INC=-I@abs_srcdir@/../../include POMPLIBDIR=@abs_builddir@/../../build-frontend/.libs/ POMPLIB=-L${POMPLIBDIR} -lpomp BINDIR=@prefix@/bin OPARI=$(BINDIR)/opari2 OPARI2_CONFIG=$(BINDIR)/opari2-config # We need to make sure that we use the right versions # of nm, awk and grep. opari2-config returns the right # commands with the necessary options. NM=`$(OPARI2_CONFIG) --nm` AWK=`$(OPARI2_CONFIG) --awk-cmd` AWK_SCRIPT=`$(OPARI2_CONFIG) --awk-script` GREP=`$(OPARI2_CONFIG) --egrep` all: c fortran ###################################################### # C EXAMPLE # ###################################################### c: example_user_instrumentation_c example_user_instrumentation_c_inst # Build without instrumentation example_user_instrumentation_c: example_user_instrumentation.c $(CC) $(OPENMP_C_FLAG) $? -o $@ # Linking step example_user_instrumentation_c_inst: example_user_instrumentation_c.mod.o pompregions_c.o $(CC) $(OPENMP_C_FLAG) $? $(POMPLIB) -o $@ pompregions_c.o : pompregions_c.c $(CC) $(POMP_INC) -c $? -o $@ # Use nm to find the initialization functions in the # object file of the instrumented user code. Then the # awk script generates these functions. pompregions_c.c : example_user_instrumentation_c.mod.o $(NM) example_user_instrumentation_c.mod.o | $(GREP) -i POMP2_Init_regions | $(GREP) " [TD] " | $(AWK) -f $(AWK_SCRIPT) > pompregions_c.c example_user_instrumentation_c.mod.o: example_user_instrumentation.mod.c $(CC) $(OPENMP_C_FLAG) $(POMP_INC) -c $? -o $@ example_user_instrumentation.mod.c: example_user_instrumentation.c $(OPARI) example_user_instrumentation.c ###################################################### # FORTRAN EXAMPLE # ###################################################### fortran: example_user_instrumentation_f example_user_instrumentation_f_inst # Build without instrumentation example_user_instrumentation_f: example_user_instrumentation.f $(FORTRAN) $(OPENMP_F_FLAG) $? -o $@ # Linking step example_user_instrumentation_f_inst: example_user_instrumentation_f.mod.o pompregions_f.o $(FORTRAN) $(OPENMP_F_FLAG) $? $(POMPLIB) -o $@ pompregions_f.o : pompregions_f.c $(CC) $(POMP_INC) -c $? -o $@ # Use nm to find the initialization functions in the # object file of the instrumented user code. Then the # awk script generates these functions. pompregions_f.c : example_user_instrumentation_f.mod.o $(NM) example_user_instrumentation_f.mod.o | $(GREP) -i POMP2_Init_regions | $(AWK) -f $(AWK_SCRIPT) > pompregions_f.c example_user_instrumentation_f.mod.o : example_user_instrumentation.mod.F $(FORTRAN) $(OPENMP_F_FLAG) -c -o $@ $? example_user_instrumentation.mod.F: example_user_instrumentation.f $(OPARI) example_user_instrumentation.f ###################################################### clean: rm -rf example_user_instrumentation_? rm -rf example_user_instrumentation_?_inst rm -rf example_user_instrumentation.mod.? rm -rf example_user_instrumentation.?.opari.inc rm -rf pompregions_?.c rm -rf *.o eztrace-1.1-7/extlib/opari2/doc/PaxHeaders.7332/doxygen-dev0000644000000000000000000000013213171135477020244 xustar0030 mtime=1508162367.297869235 30 atime=1508162367.741908015 30 ctime=1508162367.297869235 eztrace-1.1-7/extlib/opari2/doc/doxygen-dev/0000755000175000017500000000000013171135477021510 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/doc/doxygen-dev/PaxHeaders.7332/doxygen-dev.cfg.in0000644000000000000000000000013112617055645023641 xustar0030 mtime=1446796197.894457451 29 atime=1507797543.84288944 30 ctime=1508162367.301869584 eztrace-1.1-7/extlib/opari2/doc/doxygen-dev/doxygen-dev.cfg.in0000644000175000017500000017502112617055645025037 0ustar00trahaytrahay00000000000000# Doxyfile 1.5.8 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all # text before the first occurrence of this tag. Doxygen uses libiconv (or the # iconv built into libc) for the transcoding. See # http://www.gnu.org/software/libiconv for the list of possible encodings. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = @PACKAGE_NAME@ # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. # automatically set by make, see target doxygen-project-number. #PROJECT_NUMBER = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = @abs_top_builddir@/doxygen-dev-doc/@PACKAGE_NAME@ # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, # Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, # Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), # Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, # Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, # Spanish, Swedish, and Ukrainian. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = YES # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. STRIP_FROM_PATH = @abs_top_srcdir@ # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like regular Qt-style comments # (thus requiring an explicit @brief command for a brief description.) JAVADOC_AUTOBRIEF = NO # If the QT_AUTOBRIEF tag is set to YES then Doxygen will # interpret the first line (until the first dot) of a Qt-style # comment as the brief description. If set to NO, the comments # will behave just like regular Qt-style comments (thus requiring # an explicit \brief command for a brief description.) QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 8 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java # sources only. Doxygen will then generate output that is more tailored for # Java. For instance, namespaces will be presented as packages, qualified # scopes will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources only. Doxygen will then generate output that is more tailored for # Fortran. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for # VHDL. OPTIMIZE_OUTPUT_VHDL = NO # Doxygen selects the parser to use depending on the extension of the files it parses. # With this tag you can assign which parser to use for a given extension. # Doxygen has a built-in mapping, but you can override or extend it using this tag. # The format is ext=language, where ext is a file extension, and language is one of # the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, # Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat # .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), # use: inc=Fortran f=C EXTENSION_MAPPING = # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should # set this tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. # func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. # Doxygen will parse them like normal C++ but will assume all classes use public # instead of private inheritance when no explicit protection keyword is present. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate getter # and setter methods for a property. Setting this option to YES (the default) # will make doxygen to replace the get and set methods by a property in the # documentation. This will only work if the methods are indeed getting or # setting a simple type. If this is not the case, or you want to show the # methods anyway, you should set this option to NO. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum # is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically # be useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. TYPEDEF_HIDES_STRUCT = NO # The SYMBOL_CACHE_SIZE determines the size of the internal cache use to # determine which symbols to keep in memory and which to flush to disk. # When the cache is full, less often used symbols will be written to disk. # For small to medium size projects (<1000 input files) the default value is # probably good enough. For larger projects a too small cache size can cause # doxygen to be busy swapping symbols to and from disk most of the time # causing a significant performance penality. # If the system has enough physical memory increasing the cache will improve the # performance by keeping more symbols in memory. Note that the value works on # a logarithmic scale so increasing the size by one will rougly double the # memory usage. The cache size is given by this formula: # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, # corresponding to a cache size of 2^16 = 65536 symbols SYMBOL_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = NO # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base # name of the file that contains the anonymous namespace. By default # anonymous namespace are hidden. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the # hierarchy of group names into alphabetical order. If set to NO (the default) # the group names will appear in their defined order. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES # If the sources in your project are distributed over multiple directories # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy # in the documentation. The default is NO. SHOW_DIRECTORIES = NO # Set the SHOW_FILES tag to NO to disable the generation of the Files page. # This will remove the Files entry from the Quick Index and from the # Folder Tree View (if specified). The default is YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the # Namespaces page. # This will remove the Namespaces entry from the Quick Index # and from the Folder Tree View (if specified). The default is YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command , where is the value of # the FILE_VERSION_FILTER tag, and is the name of an input file # provided by doxygen. Whatever the program writes to standard output # is used as the file version. See the manual for examples. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by # doxygen. The layout file controls the global structure of the generated output files # in an output format independent way. The create the layout file that represents # doxygen's defaults, run doxygen with the -l option. You can optionally specify a # file name after the option, if omitted DoxygenLayout.xml will be used as the name # of the layout file. LAYOUT_FILE = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be abled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = @abs_top_srcdir@/src # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is # also the default input encoding. Doxygen uses libiconv (or the iconv built # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for # the list of possible encodings. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 FILE_PATTERNS = # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. Note that the wildcards are matched # against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* EXCLUDE_PATTERNS = */.svn* # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = @abs_top_srcdir@/doc/doxygen/images # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. # If FILTER_PATTERNS is specified, this tag will be # ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. # Doxygen will compare the file name with each pattern and apply the # filter if there is a match. # The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER # is applied to all files. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = NO # If the REFERENCES_RELATION tag is set to YES # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = NO # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will # link to the source code. # Otherwise they will link to the documentation. REFERENCES_LINK_SOURCE = YES # If the USE_HTAGS tag is set to YES then the references to source code # will point to the HTML generated by the htags(1) tool instead of doxygen # built-in source browser. The htags tool is part of GNU's global source # tagging system (see http://www.gnu.org/software/global/global.html). You # will need version 4.8.6 or higher. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = YES # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = #@abs_top_srcdir@/doc/doxygen/config/header.html # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = #@abs_top_srcdir@/doc/doxygen/config/footer.html # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet. Note that doxygen will try to copy # the style sheet file to the HTML output directory, so don't put your own # stylesheet in the HTML output directory as well, or it will be erased! HTML_STYLESHEET = #@abs_top_srcdir@/doc/doxygen/config/style.css # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. For this to work a browser that supports # JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox # Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). HTML_DYNAMIC_SECTIONS = NO # If the GENERATE_DOCSET tag is set to YES, additional index files # will be generated that can be used as input for Apple's Xcode 3 # integrated development environment, introduced with OSX 10.5 (Leopard). # To create a documentation set, doxygen will generate a Makefile in the # HTML output directory. Running make will produce the docset in that # directory and running "make install" will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find # it at startup. # See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. GENERATE_DOCSET = NO # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the # feed. A documentation feed provides an umbrella under which multiple # documentation sets from a single provider (such as a company or product suite) # can be grouped. DOCSET_FEEDNAME = "Doxygen generated docs" # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that # should uniquely identify the documentation set bundle. This should be a # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen # will append .docset to the name. DOCSET_BUNDLE_ID = org.doxygen.Project # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING # is used to encode HtmlHelp index (hhk), content (hhc) and project file # content. CHM_INDEX_ENCODING = # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER # are set, an additional index file will be generated that can be used as input for # Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated # HTML documentation. GENERATE_QHP = NO # If the QHG_LOCATION tag is specified, the QCH_FILE tag can # be used to specify the file name of the resulting .qch file. # The path specified is relative to the HTML output folder. QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#namespace QHP_NAMESPACE = # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#virtual-folders QHP_VIRTUAL_FOLDER = doc # If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. # For more information please see # http://doc.trolltech.com/qthelpproject.html#custom-filters QHP_CUST_FILTER_NAME = # The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see # Qt Help Project / Custom Filters. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's # filter section matches. # Qt Help Project / Filter Attributes. QHP_SECT_FILTER_ATTRS = # If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can # be used to specify the location of Qt's qhelpgenerator. # If non-empty doxygen will try to run qhelpgenerator on the generated # .qhp file. QHG_LOCATION = # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. # If the tag value is set to FRAME, a side panel will be generated # containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are # probably better off using the HTML help feature. Other possible values # for this tag are: HIERARCHIES, which will generate the Groups, Directories, # and Class Hierarchy pages using a tree view instead of an ordered list; # ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which # disables this behavior completely. For backwards compatibility with previous # releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE # respectively. GENERATE_TREEVIEW = YES # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 # Use this tag to change the font size of Latex formulas included # as images in the HTML documentation. The default is 10. Note that # when you change the font size after a successful doxygen run you need # to manually remove any form_*.png images from the HTML output directory # to force them to be regenerated. FORMULA_FONTSIZE = 10 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = NO # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = pdf # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = #@abs_top_srcdir@/doc/doxygen/config/header.tex # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = YES # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = YES # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. # This is useful # if you want to understand what is going on. # On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_DEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the := operator # instead of the = operator. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line, have an all uppercase name, and do not end with a semicolon. Such # function macros are typically used for boiler-plate code, and will confuse # the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. # Optionally an initial location of the external documentation # can be added for each tagfile. The format of a tag file without # this location is as follows: # # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths or # URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) # If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. TAGFILES = @abs_top_builddir@/doxygen-dev-doc/otf2/tags/otf2.tag=../../otf2/html \ @abs_top_builddir@/doxygen-dev-doc/opari2/tags/opari2.tag=../../opari2/html # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = @abs_top_builddir@/doxygen-dev-doc/@PACKAGE_NAME@/tags/@PACKAGE_NAME@.tag # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option is superseded by the HAVE_DOT option below. This is only a # fallback. It is recommended to install and use dot, since it yields more # powerful graphs. CLASS_DIAGRAMS = YES # You can define message sequence charts within doxygen comments using the \msc # command. Doxygen will then run the mscgen tool (see # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the # documentation. The MSCGEN_PATH tag allows you to specify the directory where # the mscgen tool resides. If left empty the tool is assumed to be found in the # default search path. MSCGEN_PATH = # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = @have_dot@ # By default doxygen will write a font called FreeSans.ttf to the output # directory and reference it in all dot files that doxygen generates. This # font does not include all possible unicode characters however, so when you need # these (or just want a differently looking font) you can specify the font name # using DOT_FONTNAME. You need need to make sure dot is able to find the font, # which can be done by putting it in a standard location or by setting the # DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory # containing the font. DOT_FONTNAME = FreeSans # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. # The default size is 10pt. DOT_FONTSIZE = 10 # By default doxygen will tell dot to use the output directory to look for the # FreeSans.ttf font (which doxygen will put there itself). If you specify a # different font using DOT_FONTNAME you can set the path where dot # can find it using this tag. DOT_FONTPATH = # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = YES # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT options are set to YES then # doxygen will generate a call dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable call graphs # for selected functions only using the \callgraph command. CALL_GRAPH = YES # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then # doxygen will generate a caller dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable caller # graphs for selected functions only using the \callergraph command. CALLER_GRAPH = YES # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # nodes that will be shown in the graph. If the number of nodes in a graph # becomes larger than this value, doxygen will truncate the graph, which is # visualized by representing a node as a red box. Note that doxygen if the # number of direct children of the root node in a graph is already larger than # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. DOT_GRAPH_MAX_NODES = 50 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that the size of a graph can be further restricted by # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, because dot on Windows does not # seem to support this out of the box. Warning: Depending on the platform used, # enabling this option may lead to badly anti-aliased labels on the edges of # a graph (i.e. they become hard to read). DOT_TRANSPARENT = NO # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Options related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO eztrace-1.1-7/extlib/opari2/doc/PaxHeaders.7332/doxygen-user0000644000000000000000000000013213171135477020444 xustar0030 mtime=1508162367.445882162 30 atime=1508162367.741908015 30 ctime=1508162367.445882162 eztrace-1.1-7/extlib/opari2/doc/doxygen-user/0000755000175000017500000000000013171135477021710 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/doc/doxygen-user/PaxHeaders.7332/opari2_usage.dox.in0000644000000000000000000000013112617055645024223 xustar0030 mtime=1446796197.894457451 29 atime=1508162318.84970542 30 ctime=1508162367.445882162 eztrace-1.1-7/extlib/opari2/doc/doxygen-user/opari2_usage.dox.in0000644000175000017500000001022212617055645025410 0ustar00trahaytrahay00000000000000Usage: opari2 [OPTION] ... infile [outfile] with following options and parameters: [--f77|--f90|--c|--c++] [OPTIONAL] Specifies the programming language of the input source file. This option is only necessary if the automatic language detection based on the input file suffix fails. [--nosrc] [OPTIONAL] If specified, OPARI2 does not generate #line constructs, which allow to preserve the original source file and line number information, in the transformation process. This option might be necessary if the OpenMP compiler does not understand #line constructs. The default is to generate #line constructs. [--nodecl] [OPTIONAL] Disables the generation of POMP2_DLISTXXXXX macros. These are used in the parallel directives of the instrumentation to make the region handles shared. By using this option the shared clause is used directly on the parallel directive with the resprective region handles. [--tpd] [OPTIONAL] Adds the clause 'copyin()' to any parallel construct. This allows to pass data from the creating thread to its children. The variable is declared externally in all files, so it needs to be defined by the pomp library. [--disable=] [OPTIONAL] Disable the instrumentation of manually-annotated POMP regions or the more fine-grained OpenMP constructs such as !$OMP ATOMIC. is a comma separated list of the constructs for which the instrumentation should be disabled. Accepted tokens are atomic, critical, master, flush, single, ordered or locks (as well as sync to disable all of them) or regions. [--task= Special treatment for the task directive abort|warn|remove] abort: Stop instrumentation with an error message when encountering a task directive. warn: Resume but print a warning. remove: Remove all task directives. [--untied= Special treatment for the untied task attribute. abort|keep|no-warn] The default beavior is to remove the untied attribute, thus making all tasks tied, and print out a warning. abort: Stop instrumentation with an error message when encountering a task directive with the untied attribute. keep: Do not remove the untied attribute. no-warn: Do not print out a warning. [--tpd-mangling= [OPTIONAL] If programming languages are mixed gnu|intel|sun|pgi| (C and Fortran), the needs to use ibm|cray] the Fortran mangled name also in C files. This option specifies to use the mangling scheme of the gnu, intel, sun, pgi or ibm compiler. The default is to use the mangling scheme of the compiler used to build opari2. [--version] [OPTIONAL] Prints version information. [--help] [OPTIONAL] Prints this help text. infile Input file name. [outfile] [OPTIONAL] Output file name. If not specified, opari2 uses the name infile.mod.suffix if the input file is called infile.suffix. Report bugs to . eztrace-1.1-7/extlib/opari2/doc/doxygen-user/PaxHeaders.7332/doxygen-user-component.cfg.in0000644000000000000000000000013112537514551026236 xustar0030 mtime=1434360169.508481552 29 atime=1507797543.84288944 30 ctime=1508162367.305869934 eztrace-1.1-7/extlib/opari2/doc/doxygen-user/doxygen-user-component.cfg.in0000644000175000017500000000213712537514551027431 0ustar00trahaytrahay00000000000000# The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = "Opari 2" # The INPUT tag can be used to specify the files and/or directories that # contain documented source files. You may enter file names like "myfile.cpp" # or directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = doc/doxygen-user \ @abs_top_srcdir@/doc/doxygen-user \ @abs_top_srcdir@/include/opari2 \ @abs_top_srcdir@/src/pomp-lib-dummy/pomp2_region_info.h # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the stylesheet and background images according to # this color. Hue is specified as an angle on a colorwheel, see # http://en.wikipedia.org/wiki/Hue for more information. For instance the # value 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is # blue, 300 purple, and 360 is red again. The allowed range is 0 to 359. HTML_COLORSTYLE_HUE = 199 eztrace-1.1-7/extlib/opari2/PaxHeaders.7332/README0000644000000000000000000000013012617055645016203 xustar0030 mtime=1446796197.894457451 29 atime=1507797543.84288944 29 ctime=1508162367.32587168 eztrace-1.1-7/extlib/opari2/README0000644000175000017500000000066712617055645017405 0ustar00trahaytrahay00000000000000OPARI2 ------ OPARI2 is a source-to-source instrumentation tool for OpenMP and hybrid codes. To build OPARI2 you usually just need to do ./configure make make install Please have a look at INSTALL for further configure and build options. After make install you will find html and pdf documentation as well as usage examples under $(prefix)/share/doc/opari. Have fun! Please report bugs to . eztrace-1.1-7/extlib/opari2/PaxHeaders.7332/configure.ac0000644000000000000000000000013213012560437017601 xustar0030 mtime=1479205151.272727014 30 atime=1508162209.821095231 30 ctime=1508162367.293868886 eztrace-1.1-7/extlib/opari2/configure.ac0000644000175000017500000000575413012560437021003 0ustar00trahaytrahay00000000000000AC_PREREQ([2.68]) AC_INIT([opari2], m4_esyscmd_s([vendor/common/build-config/generate-package-version.sh build-config/VERSION]), [scorep-bugs@groups.tu-dresden.de]) #echo "cross_compiling = $cross_compiling" AC_SCOREP_REVISION AC_SCOREP_TOPLEVEL_ARGS ## Packages that do manual configuration or use the install program might need ## to tell configure where to find some other shell scripts by calling ## AC_CONFIG_AUX_DIR, though the default places it looks are correct for most ## cases. ## Need to be called early on configure.ac because other macros search tools ## in this directory. AC_CONFIG_AUX_DIR([build-config]) ## Packages that use aclocal should declare where local macros can be found ## using AC_CONFIG_MACRO_DIR. AC_CONFIG_MACRO_DIR([vendor/common/build-config/m4]) ## Set the default installation prefix to /opt/opari2 instead of /usr/local AC_PREFIX_DEFAULT([/opt/opari2]) ## Call not before AC_CONFIG_MACRO_DIR AM_INIT_AUTOMAKE([foreign color-tests 1.11.1 -Wall tar-pax]) AM_SILENT_RULES([yes]) # don't detect and load defaults in nested configures (e.g. otf2) if test ! -n "$ac_scorep_platform_data_provided" -o "x${ac_scorep_platform_data_provided}" = "xno"; then # $ac_scorep_cross_compiling, $ac_scorep_platform are set here AC_SCOREP_DETECT_PLATFORMS AC_SCOREP_WITH_NOCROSS_COMPILER_SUITE # determine arguments for subdir configures args="`$AWK -f $srcdir/vendor/common/build-config/process_arguments.awk \ $ac_scorep_compilers_backend \ $ac_scorep_compilers_frontend \ user_provided_configure_args`" else AC_MSG_NOTICE([platform data provided by toplevel configure.]) # determine arguments for subdir configures args="`$AWK -f $srcdir/vendor/common/build-config/process_arguments.awk \ user_provided_configure_args`" fi AC_SCOREP_SVN_CONTROLLED AC_SCOREP_UNCRUSTIFY AC_SCOREP_DOXYGEN ## Autoconf supports changing the names of programs when installing them. In ## order to use these transformations, configure.ac must call the macro ## AC_ARG_PROGRAM. # implicitly called by ? #AC_ARG_PROGRAM # used for EXTRA_DIST in Makefile.am AM_CONDITIONAL([CROSS_BUILD], [test "x${ac_scorep_cross_compiling}" = "xyes"]) # handle external package's subdir configures #AC_CONFIG_SUBDIR_CUSTOM([vendor/otf2], [${args} ac_scorep_platform=${ac_scorep_platform} ac_scorep_platform_data_provided=yes ac_scorep_cross_compiling=${ac_scorep_cross_compiling}]) # handle own package's subdir configures AC_CONFIG_SUBDIR_CUSTOM([build-frontend], [${args} ac_scorep_platform=${ac_scorep_platform}]) #sed is needed for check target AC_PROG_SED AC_CONFIG_FILES([Makefile]) AC_CONFIG_FILES([test/c_test.sh], [chmod +x test/c_test.sh]) AC_CONFIG_FILES([test/f90_test.sh], [chmod +x test/f90_test.sh]) AC_CONFIG_FILES([test/f77_test.sh], [chmod +x test/f77_test.sh]) AC_CONFIG_FILES([build-frontend/pomp2-parse-init-regions.awk:src/pomp-lib-dummy/pomp2_parse_init_regions.awk.in]) AC_OUTPUT eztrace-1.1-7/extlib/opari2/PaxHeaders.7332/src0000644000000000000000000000013213171135477016035 xustar0030 mtime=1508162367.689903473 30 atime=1508162367.741908015 30 ctime=1508162367.689903473 eztrace-1.1-7/extlib/opari2/src/0000755000175000017500000000000013171135477017301 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/src/PaxHeaders.7332/opari0000644000000000000000000000013213171135477017147 xustar0030 mtime=1508162367.733907316 30 atime=1508162367.741908015 30 ctime=1508162367.733907316 eztrace-1.1-7/extlib/opari2/src/opari/0000755000175000017500000000000013171135477020413 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/src/opari/PaxHeaders.7332/ompragma.h0000644000000000000000000000013212617055645021202 xustar0030 mtime=1446796197.914458076 30 atime=1508138876.619936502 30 ctime=1508162367.725906617 eztrace-1.1-7/extlib/opari2/src/opari/ompragma.h0000644000175000017500000001614312617055645022376 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ /** @internal * * @file ompragma.h * @status alpha * * @maintainer Dirk Schmidl * * @authors Bernd Mohr * Dirk Schmidl * Peter Philippen * * @brief This file contains the declaration of the classes used * to store pragmas. The base class is \e OMPragma from * which the classes \e OMPragma_C and \e OMPragma_F are * derived to treat language specific issues. */ #ifndef OMPRAGMA_H #define OMPRAGMA_H #include using std::string; #include using std::vector; /** @brief Class to store and manipulate openmp pragma related data*/ class OMPragma { public: /** initialize pragma */ OMPragma( const string& f, int l, int pl, int pp, bool a ) : filename( f ), lineno( l ), pline( pl ), ppos( pp ), asd( a ) { } /** find and store the pragma name */ void find_name(); /** @brief Removes all unnecessary commas. */ void remove_commas(); /** @brief Returns the arguments of a clause. */ virtual string find_arguments( unsigned& line, string::size_type& pos, bool remove, string clause ) = 0; /** is a nowait clause present?*/ bool is_nowait(); /** is a copyprivate clause present*/ bool has_copypriv(); /** returns value in brackets, if present, "" otherwise*/ string find_sub_name(); /** add a nowait to a directive*/ virtual void add_nowait() = 0; /** evaluate if there is a num_threads clause and store the arguments*/ bool find_numthreads(); /** evaluate if there is an if clause and store the arguments*/ bool find_if(); /** evaluate if there is an ordered clause and store the arguments*/ bool find_ordered(); /** evaluate if there is a schedule clause */ bool find_schedule( string* reg_arg_schedule ); /** evaluate if there is a reduction clause */ bool find_reduction(); /** evaluate if there is a collapse clause */ bool find_collapse(); /** evalueate if there is an untied clause present?*/ bool find_untied( bool disableUntied ); /** is the default data sharing changed, i.e. is default(none) or default(private) present*/ bool changed_default(); /** add descriptors at the right place*/ virtual void add_descr( int n ) = 0; /** split compined parallel worksharing constructs in two seperate statement split compined parallel worksharing constructs in two seperate statements*/ virtual OMPragma* split_combined() = 0; virtual ~ OMPragma() { } /** filename */ string filename; /** line number */ int lineno; /** current parsing line */ unsigned pline; /** current parsing position*/ string::size_type ppos; /** compiler allowes defines on pragma lines?*/ bool asd; /** pragma name*/ string name; /** argument of the num_threads clause*/ string arg_num_threads; /** argument of the if clause*/ string arg_if; /** argument of the reduction clause*/ string arg_reduction; /** argument of the schedule clause*/ string arg_schedule; /** argument of the collapse clause*/ string arg_collapse; /** all lines*/ vector lines; private: virtual string find_next_word() = 0; virtual bool find_word( const string word, unsigned& line, string::size_type& pos ) = 0; }; /** @brief data and functions for the fortran specific issues of pragma handling*/ class OMPragmaF : public OMPragma { public: /** creates an OMPragmaF object*/ OMPragmaF( const string& f, int l, int p, const string& line, int pomp, bool a ) : OMPragma( f, l, 0, p, a ), slen( 5 + pomp ) { lines.push_back( line ); sentinel = pomp ? "$pomp" : "$omp"; } virtual string find_arguments( unsigned& line, string::size_type& pos, bool remove, string clause ); virtual void add_nowait(); virtual void add_descr( int n ); virtual OMPragma* split_combined(); private: virtual string find_next_word(); virtual bool find_word( const string word, unsigned& line, string::size_type& pos ); void remove_empties(); string sentinel; int slen; }; /** @brief data and functions for the C specific issues of pragma handling*/ class OMPragmaC : public OMPragma { public: /** creates an OMPragmaC object*/ OMPragmaC( const string& f, int l, int pl, int pp, vector& stmts, bool a ) : OMPragma( f, l, pl, pp, a ) { lines.swap( stmts ); } virtual string find_arguments( unsigned& line, string::size_type& pos, bool remove, string clause ); virtual void add_nowait(); virtual void add_descr( int n ); virtual OMPragma* split_combined(); private: virtual string find_next_word(); virtual bool find_word( const string word, unsigned& line, string::size_type& pos ); void remove_empties(); }; #endif eztrace-1.1-7/extlib/opari2/src/opari/PaxHeaders.7332/common.h0000644000000000000000000000013212617055645020667 xustar0030 mtime=1446796197.914458076 30 atime=1508138876.895943395 30 ctime=1508162367.721906267 eztrace-1.1-7/extlib/opari2/src/opari/common.h0000644000175000017500000000343212617055645022060 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ /** @internal * * @file common.h * @status beta * * @maintainer Dirk Schmidl * * @authors Bernd Mohr * Dirk Schmidl * Peter Philippen * @brief Functions to handle parallel regions. Including the creation * and initialization of region handles. */ #ifndef COMMON_H #define COMMON_H #include const std::string region_id_prefix( "pomp2_region_" ); #endif /* COMMON_H */ eztrace-1.1-7/extlib/opari2/src/opari/PaxHeaders.7332/opari2.cc0000644000000000000000000000013212617055645020731 xustar0030 mtime=1446796197.914458076 30 atime=1508138876.631936802 30 ctime=1508162367.729906966 eztrace-1.1-7/extlib/opari2/src/opari/opari2.cc0000644000175000017500000004212612617055645022125 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ /** @internal * * @file opari2.cc * @status beta * * @maintainer Dirk Schmidl * * @authors Bernd Mohr * Dirk Schmidl * Peter Philippen * * @brief This File containes the opari main function. It is used * to handle input arguments and open input and output * files. Afterwards the function process_c_or_cxx or * process_fortran is called, depending on the file type * or provided arguments. */ #include #include using std::ifstream; using std::ofstream; #include using std::cout; using std::cerr; #include using std::sprintf; using std::remove; #include using std::strcmp; using std::strrchr; using std::strncpy; using std::strcat; using std::strlen; #include using std::exit; #include #include #include #include "opari2.h" #include "handler.h" string pomp_tpd; bool copytpd = false; bool task_abort = false; bool task_warn = false; bool task_remove = false; bool untied_abort = false; bool untied_keep = false; bool untied_no_warn = false; namespace { char* out_filename = 0; } void print_usage_information( char* prog ) { std::string usage = #include "opari2_usage.h" ; cerr << prog << "\n\n" << usage << std::endl; } void cleanup_and_exit() { if ( out_filename ) { remove( out_filename ); } exit( 1 ); } #define SCOREP_STR_( str ) #str #define SCOREP_STR( str ) SCOREP_STR_( str ) #define POMP_TPD_MANGLED FORTRAN_MANGLED( pomp_tpd ) /** @brief Main function to read and handle arguments, open files and call * appropriate process function.*/ int main( int argc, char* argv[] ) { // -- parse options int a = 1; Language lang = L_NA; bool keepSrcInfo = true; bool addSharedDecl = true; bool errFlag = false; char* infile = 0; const char* disabled = 0; pomp_tpd = SCOREP_STR( POMP_TPD_MANGLED ); int retval = gettimeofday( &compiletime, NULL ); assert( retval == 0 ); while ( a < argc && argv[ a ][ 0 ] == '-' ) { if ( strcmp( argv[ a ], "--f77" ) == 0 ) { lang = L_F77; } else if ( strcmp( argv[ a ], "--f90" ) == 0 ) { lang = L_F90; } else if ( strcmp( argv[ a ], "--c++" ) == 0 ) { lang = L_CXX; } else if ( strcmp( argv[ a ], "--c" ) == 0 ) { lang = L_C; } else if ( strcmp( argv[ a ], "--version" ) == 0 ) { std::cout << "opari version " << PACKAGE_VERSION << std::endl; return 0; } else if ( strcmp( argv[ a ], "--help" ) == 0 ) { print_usage_information( argv[ 0 ] ); return 0; } else if ( strcmp( argv[ a ], "--nosrc" ) == 0 ) { keepSrcInfo = false; } else if ( strcmp( argv[ a ], "--nodecl" ) == 0 ) { addSharedDecl = false; } else if ( strcmp( argv[ a ], "--tpd" ) == 0 ) { copytpd = true; } else if ( strncmp( argv[ a ], "--tpd-mangling=", 15 ) == 0 ) { char* tpd_arg = strchr( argv[ a ], '=' ); if ( tpd_arg != NULL ) { tpd_arg++; if ( strcmp( tpd_arg, "gnu" ) == 0 || strcmp( tpd_arg, "sun" ) == 0 || strcmp( tpd_arg, "intel" ) == 0 || strcmp( tpd_arg, "pgi" ) == 0 || strcmp( tpd_arg, "cray" ) == 0 ) { pomp_tpd = "pomp_tpd_"; } else if ( strcmp( tpd_arg, "ibm" ) == 0 ) { pomp_tpd = "pomp_tpd"; } else { cerr << "ERROR: unknown option for --tpd-mangling\n"; errFlag = true; } } else { cerr << "ERROR: missing value for option --tpd-mangling\n"; errFlag = true; } } else if ( strncmp( argv[ a ], "--task=", 7 ) == 0 ) { char* token = strtok( argv[ a ], "=" ); token = strtok( NULL, "," ); while ( token != NULL ) { if ( strcmp( token, "abort" ) == 0 ) { task_abort = true; } else if ( strcmp( token, "warn" ) == 0 ) { task_warn = true; } else if ( strcmp( token, "remove" ) == 0 ) { task_remove = true; } else { cerr << "ERROR: unknown option \"" << token << "\" for --task\n"; errFlag = true; } token = strtok( NULL, "," ); } } else if ( strncmp( argv[ a ], "--untied=", 9 ) == 0 ) { char* token = strtok( argv[ a ], "=" ); token = strtok( NULL, "," ); do { if ( strcmp( token, "abort" ) == 0 ) { untied_abort = true; } else if ( strcmp( token, "no-warn" ) == 0 ) { untied_no_warn = true; } else if ( strcmp( token, "keep" ) == 0 ) { untied_keep = true; } else { cerr << "ERROR: unknown option \"" << token << "\" for --untied\n"; errFlag = true; } token = strtok( NULL, "," ); } while ( token != NULL ); } else if ( strncmp( argv[ a ], "--disable", 9 ) == 0 ) { if ( strlen( argv[ a ] ) > 9 ) { disabled = strchr( argv[ a ], '=' ); if ( disabled != NULL ) { disabled++; if ( set_disabled( disabled ) ) { errFlag = true; } } else { cerr << "ERROR: missing value for option -disable\n"; errFlag = true; } } //*** Deprecated options that are still active due to compatibility reasons else { cerr << "WARNING: Option \"--disable \" is deprecated please use --disable= for future compatibilty.\n"; if ( ( a + 1 ) < argc ) { disabled = argv[ ++a ]; if ( set_disabled( disabled ) ) { errFlag = true; } } else { cerr << "ERROR: missing value for option -disable\n"; errFlag = true; } } } else if ( strcmp( argv[ a ], "-disable" ) == 0 ) { cerr << "WARNING: Option -disable is deprecated please use --disable= for future compatibilty.\n"; if ( ( a + 1 ) < argc ) { disabled = argv[ ++a ]; if ( set_disabled( disabled ) ) { errFlag = true; } } else { cerr << "ERROR: missing value for option -disable\n"; errFlag = true; } } else if ( strcmp( argv[ a ], "--tpd-mangling" ) == 0 ) { if ( ( a + 1 ) < argc ) { cerr << "WARNING: Option \"--tpd-mangling \" is deprecated please use \"--tpd-mangling=\" for future compatibilty.\n"; a++; if ( strcmp( argv[ a ], "gnu" ) == 0 || strcmp( argv[ a ], "sun" ) == 0 || strcmp( argv[ a ], "intel" ) == 0 || strcmp( argv[ a ], "pgi" ) == 0 || strcmp( argv[ a ], "cray" ) == 0 ) { pomp_tpd = "pomp_tpd_"; } else if ( strcmp( argv[ a ], "ibm" ) == 0 ) { pomp_tpd = "pomp_tpd"; } else { cerr << "ERROR: unknown option for --tpd-mangling\n"; errFlag = true; } } else { cerr << "ERROR: missing value for option --tpd-mangling\n"; errFlag = true; } } else if ( strcmp( argv[ a ], "-nosrc" ) == 0 ) { cerr << "WARNING: Option \"-nosrc\" is deprecated, please use \"--nosrc\" for future compatibilty.\n"; keepSrcInfo = false; } else if ( strcmp( argv[ a ], "-nodecl" ) == 0 ) { cerr << "WARNING: Option \"-nodecl\" is deprecated, please use \"--nodecl\" for future compatibilty.\n"; addSharedDecl = false; } else if ( strcmp( argv[ a ], "-f77" ) == 0 ) { cerr << "WARNING: Option \"-f77\" is deprecated, please use \"--f77\" for future compatibilty.\n"; lang = L_F77; } else if ( strcmp( argv[ a ], "-f90" ) == 0 ) { cerr << "WARNING: Option \"-f90\" is deprecated, please use \"--f90\" for future compatibilty.\n"; lang = L_F90; } else if ( strcmp( argv[ a ], "-c++" ) == 0 ) { cerr << "WARNING: Option \"-c++\" is deprecated, please use \"--c++\" for future compatibilty.\n"; lang = L_CXX; } else if ( strcmp( argv[ a ], "-c" ) == 0 ) { cerr << "WARNING: Option \"-c\" is deprecated, please use \"--c\" for future compatibilty.\n"; lang = L_C; } else if ( strcmp( argv[ a ], "-rcfile" ) == 0 ) { cerr << "WARNING: Option \"-rcfile\" is deprecated and ignored.\n"; } else if ( strcmp( argv[ a ], "-table" ) == 0 ) { cerr << "WARNING: Option \"-table\" is deprecated and ignored.\n"; } //*** End of deprecated options else { cerr << "ERROR: unknown option " << argv[ a ] << "\n"; errFlag = true; } ++a; } // -- parse file arguments ifstream is; ofstream os; switch ( argc - a ) { case 2: if ( strcmp( argv[ a + 1 ], "-" ) == 0 ) { os.std::ostream::rdbuf( cout.rdbuf() ); } else { os.open( argv[ a + 1 ] ); if ( !os ) { cerr << "ERROR: cannot open output file " << argv[ a + 1 ] << "\n"; errFlag = true; } os << "\n"; out_filename = argv[ a + 1 ]; } /*NOBREAK*/ case 1: if ( *argv[ a ] != '/' ) { int pathlength; pathlength = 10; infile = new char[ pathlength ]; while ( !getcwd( infile, pathlength ) ) { pathlength += 10; delete[] infile; infile = new char[ pathlength ]; } pathlength += strlen( argv[ a ] ) + 1; delete[] infile; infile = new char[ pathlength ]; if ( !getcwd( infile, pathlength ) ) { cerr << "ERROR: cannot determine path of input file " << infile << "\n"; exit( -1 ); } infile = strcat( infile, "/" ); infile = strcat( infile, argv[ a ] ); } else { infile = new char[ strlen( argv[ a ] ) + 1 ]; strcpy( infile, argv[ a ] ); } is.open( infile ); if ( !is ) { cerr << "ERROR: cannot open input file " << infile << "\n"; errFlag = true; } break; default: errFlag = true; break; } if ( !errFlag && infile && lang == L_NA ) { const char* dot = strrchr( infile, '.' ); if ( dot != 0 && dot[ 1 ] ) { switch ( dot[ 1 ] ) { case 'f': case 'F': lang = dot[ 2 ] == '9' ? L_F90 : L_F77; break; case 'c': case 'C': lang = dot[ 2 ] ? L_CXX : L_C; break; } } } if ( !errFlag && infile && lang == L_NA ) { cerr << "ERROR: cannot determine input file language\n"; errFlag = true; } // generate output file name if necessary if ( !errFlag && ( a + 1 ) == argc ) { out_filename = new char[ strlen( infile ) + 5 ]; char* dot = ( char* )strrchr( infile, '.' ); if ( dot != 0 ) { sprintf( out_filename, "%.*s.mod%s", ( int )( dot - infile ), infile, dot ); if ( keepSrcInfo && ( lang & L_FORTRAN ) ) { dot = strrchr( out_filename, '.' ); *( ++dot ) = 'F'; } os.open( out_filename ); if ( !os ) { cerr << "ERROR: cannot open output file " << out_filename << "\n"; errFlag = true; } os << "\n"; } else { cerr << "ERROR: cannot generate output file name\n"; errFlag = true; } } // print usage and die on error if ( errFlag ) { print_usage_information( argv[ 0 ] ); exit( 1 ); } // generate opari include file name char* incfile = 0; char* incfileNoPath = 0; if ( lang & L_FORTRAN ) { // only need base filename without path for include statement // in Fortran files const char* dirsep = strrchr( infile, '/' ); if ( dirsep ) { incfileNoPath = new char[ strlen( dirsep ) + 12 ]; sprintf( incfileNoPath, "%s.opari.inc", dirsep + 1 ); } else { incfileNoPath = new char[ strlen( infile ) + 13 ]; sprintf( incfileNoPath, "%s.opari.inc", infile ); } } incfile = new char[ strlen( infile ) + 12 ]; sprintf( incfile, "%s.opari.inc", infile ); // transform do_transform = true; init_handler( infile, lang, keepSrcInfo ); if ( lang & L_FORTRAN ) { /*in Fortran no Underscore is needed*/ pomp_tpd = "pomp_tpd"; if ( keepSrcInfo ) { os << "#line 1 \"" << infile << "\"" << "\n"; } process_fortran( is, infile, os, addSharedDecl, incfileNoPath, lang ); } else { // include file filenames are relative to base file -> need base filename const char* dirsep = strrchr( incfile, '/' ); if ( dirsep ) { os << "#include \"" << ( dirsep + 1 ) << "\"" << "\n"; } else { os << "#include \"" << incfile << "\"" << "\n"; } if ( keepSrcInfo ) { os << "#line 1 \"" << infile << "\"" << "\n"; } process_c_or_cxx( is, infile, os, addSharedDecl ); } finalize_handler( incfile, incfileNoPath, os ); delete[] infile; delete[] incfile; delete[] incfileNoPath; return 0; } eztrace-1.1-7/extlib/opari2/src/opari/PaxHeaders.7332/process_omp.cc0000644000000000000000000000013212617055645022066 xustar0030 mtime=1446796197.914458076 30 atime=1508138876.595935903 30 ctime=1508162367.729906966 eztrace-1.1-7/extlib/opari2/src/opari/process_omp.cc0000644000175000017500000000623712617055645023265 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ /** @internal * * @file process_omp.cc * @status beta * * @maintainer Dirk Schmidl * * @authors Bernd Mohr * Dirk Schmidl * Peter Philippen * * @brief This file contains only the function process_pragma, which * parses OpenMP pragmas and calls corresponding pragma handlers.*/ #include #include #ifdef EBUG using std::cerr; # include using std::setw; # endif #include "opari2.h" #include "handler.h" /** @brief Search for the pragma type and other info and call the matching handler*/ void process_pragma( OMPragma* p, ostream& os, bool* hasEnd, bool* isFor ) { # ifdef EBUG for ( unsigned i = 0; i < p->lines.size(); ++i ) { cerr << setw( 3 ) << p->lineno + i << ":O" << ( i ? "+" : " " ) << ": " << p->lines[ i ] << "\n"; } # endif //search for the pragma name p->find_name(); if ( do_transform || p->name == "instrument" ) { if ( hasEnd ) { *hasEnd = ( p->name != "barrier" && p->name != "noinstrument" && p->name != "flush" && p->name != "threadprivate" && /*p->name != "ordered" && */ p->name != "taskwait" && #if defined( __GNUC__ ) && ( __GNUC__ < 3 ) p->name.substr( 0, 4 ) != "inst" ); #else p->name.compare( 0, 4, "inst" ) != 0 ); #endif } if ( isFor ) { *isFor = ( p->name == "for" || p->name == "parallelfor" ); } phandler_t handler = find_handler( p->name ); handler( p, os ); } else { for ( unsigned i = 0; i < p->lines.size(); ++i ) { os << p->lines[ i ] << "\n"; } } delete p; } eztrace-1.1-7/extlib/opari2/src/opari/PaxHeaders.7332/handler.cc0000644000000000000000000000013213064510330021132 xustar0030 mtime=1490194648.647388404 30 atime=1508138876.571935304 30 ctime=1508162367.721906267 eztrace-1.1-7/extlib/opari2/src/opari/handler.cc0000644000175000017500000014720213064510330022327 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ /** @internal * * @file handler.cc * @status alpha * * @maintainer Dirk Schmidl * * @authors Bernd Mohr * Dirk Schmidl * Peter Philippen * * @brief This file contains all functions to instrument and print * pragmas.*/ #include #include using std::vector; #include using std::map; #include using std::stack; #include using std::cerr; #include using std::ifstream; using std::ofstream; #include using std::string; using std::getline; #include using std::exit; #include using std::strcmp; #include using std::toupper; #include "handler.h" #include "ompregion.h" #include "common.h" /* * global data */ namespace { class File { public: /*File( const string& n, int f, int l, Language la ) : name( n ), first( f ), last( l ), lang( la ) { }*/ string name; unsigned first, last; Language lang; }; typedef map htab; htab table; vector regions; stack regStack; OMPRegion* atomicRegion = 0; Language lang = L_NA; bool keepSrcInfo = false; const char* infile = ""; } bool do_transform = true; /* * local utility functions and data */ namespace { enum constructs { C_NONE = 0x0000, C_ATOMIC = 0x0001, C_CRITICAL = 0x0002, C_MASTER = 0x0004, C_SINGLE = 0x0008, C_LOCKS = 0x0010, C_FLUSH = 0x0020, C_TASK = 0x0040, C_ORDERED = 0x0080, C_SYNC = 0x00FF, C_OMP = 0x0FFF, C_REGION = 0x1000, C_ALL = 0xFFFF }; unsigned enabled = C_ALL; // & ~C_TASK; unsigned string2construct( const string& str ) { switch ( str[ 0 ] ) { case 'a': if ( str == "atomic" ) { return C_ATOMIC; } break; case 'c': if ( str == "critical" ) { return C_CRITICAL; } break; case 'f': if ( str == "flush" ) { return C_FLUSH; } break; case 'l': if ( str == "locks" ) { return C_LOCKS; } break; case 'm': if ( str == "master" ) { return C_MASTER; } break; case 'o': if ( str == "omp" ) { return C_OMP; } else if ( str == "ordered" ) { return C_ORDERED; } break; case 'r': if ( str == "region" ) { return C_REGION; } break; case 's': if ( str == "single" ) { return C_SINGLE; } if ( str == "sync" ) { return C_SYNC; } break; case 't': if ( str == "task" ) { return C_TASK; } break; } return C_NONE; } void generate_num_threads( ostream& os, OMPragma* p, OMPRegion* r ) { if ( lang & L_FORTRAN ) { if ( r->has_num_threads ) { os << " pomp_num_threads = " << p->arg_num_threads << "\n"; } else { os << " pomp_num_threads = pomp2_lib_get_max_threads()\n"; } } else { if ( r->has_num_threads ) { os << " int pomp_num_threads = " << p->arg_num_threads << ";\n"; } else { os << " int pomp_num_threads = omp_get_max_threads();\n"; } } } void generate_if( ostream& os, OMPragma* p, OMPRegion* r ) { if ( lang & L_FORTRAN ) { if ( r->has_if ) { os << " pomp_if = ( " << p->arg_if << " )\n"; } else { os << " pomp_if = .true.\n"; } } else { if ( r->has_if ) { os << " int pomp_if = (int)( " << p->arg_if << " );\n"; } else { os << " int pomp_if = 1;\n"; } } } void generate_call( const char* event, const char* type, int id, ostream& os, OMPRegion* r ) { char c1 = toupper( type[ 0 ] ); string ctc_string; if ( lang & L_FORTRAN ) { if ( strcmp( type, "task" ) == 0 || strcmp( type, "untied_task" ) == 0 ) { os << " if (pomp_if) then\n"; } os << " call POMP2_" << c1 << ( type + 1 ) << "_" << event << "(" << region_id_prefix << id; if ( strstr( type, "task" ) != NULL && strcmp( type, "taskwait" ) != 0 && strcmp( event, "begin" ) == 0 ) { os << ", pomp2_new_task"; } if ( r != NULL ) { if ( lang & L_F77 ) { os << ",\n &" << r->generate_ctc_string( lang ) << " "; } else { os << ", &\n " << r->generate_ctc_string( lang ) << " "; } } os << ")\n"; if ( strcmp( type, "task" ) == 0 || strcmp( type, "untied_task" ) == 0 ) { os << " end if\n"; } } else { if ( strcmp( event, "begin" ) == 0 || strcmp( event, "fork" ) == 0 || strcmp( event, "enter" ) == 0 ) { os << "{ "; } if ( strcmp( type, "task" ) == 0 || strcmp( type, "untied_task" ) == 0 ) { os << "if (pomp_if)"; } os << " POMP2_" << c1 << ( type + 1 ) << "_" << event << "( &" << region_id_prefix << id; if ( strstr( type, "task" ) != NULL && strcmp( type, "taskwait" ) != 0 && strcmp( event, "begin" ) == 0 ) { os << ", pomp2_new_task"; } if ( r != NULL ) { os << ", " << r->generate_ctc_string( lang ) << " "; } os << " );"; if ( strcmp( event, "end" ) == 0 ) { os << " }"; } os << "\n"; if ( strcmp( event, "join" ) == 0 || strcmp( event, "exit" ) == 0 ) { os << " }\n"; } if(r != NULL) { r->generate_lineno_hint(os); } } } void generate_call_save_task_id( const char* event, const char* type, int id, ostream& os, OMPRegion* r ) { char c1 = toupper( type[ 0 ] ); string ctc_string; if ( lang & L_FORTRAN ) { if ( strcmp( type, "task_create" ) == 0 || strcmp( type, "untied_task_create" ) == 0 ) { os << " if (pomp_if) then\n"; } os << " call POMP2_" << c1 << ( type + 1 ) << "_" << event << "(" << region_id_prefix << id; if ( ( strcmp( type, "task_create" ) == 0 ) || ( strcmp( type, "untied_task_create" ) == 0 ) ) { os << ", pomp2_new_task"; if ( lang & L_F77 ) { os << ",\n &pomp2_old_task"; } else { os << ", &\n pomp2_old_task"; } } else { os << ", pomp2_old_task"; } if ( r != NULL ) { if ( lang & L_F77 ) { if ( r->name == "task" ) { os << ", \n &pomp_if"; } os << ",\n &" << r->generate_ctc_string( lang ) << " "; } else { if ( r->name == "task" ) { os << ", &\n pomp_if"; } os << ", &\n " << r->generate_ctc_string( lang ) << " "; } } os << ")\n"; if ( strcmp( type, "task_create" ) == 0 || strcmp( type, "untied_task_create" ) == 0 ) { os << " end if\n"; } } else { os << "{ POMP2_Task_handle pomp2_old_task;\n"; if ( ( strcmp( type, "task_create" ) == 0 ) || ( strcmp( type, "untied_task_create" ) == 0 ) ) { os << " POMP2_Task_handle pomp2_new_task;\n"; } if ( strcmp( type, "task_create" ) == 0 || strcmp( type, "untied_task_create" ) == 0 ) { os << "if (pomp_if)"; } os << " POMP2_" << c1 << ( type + 1 ) << "_" << event << "( &" << region_id_prefix << id; if ( ( strcmp( type, "task_create" ) == 0 ) || ( strcmp( type, "untied_task_create" ) == 0 ) ) { os << ", &pomp2_new_task"; } os << ", &pomp2_old_task"; if ( r != NULL ) { if ( r->name == "task" ) { os << ", pomp_if"; } os << ", " << r->generate_ctc_string( lang ) << " "; } os << " );\n"; } } void generate_call_restore_task_id( const char* event, const char* type, int id, ostream& os ) { char c1 = toupper( type[ 0 ] ); string ctc_string; if ( lang & L_FORTRAN ) { if ( strcmp( type, "task_create" ) == 0 || strcmp( type, "untied_task_create" ) == 0 ) { os << " if (pomp_if) then\n"; } os << " call POMP2_" << c1 << ( type + 1 ) << "_" << event << "(" << region_id_prefix << id; os << ", pomp2_old_task" << ")\n"; if ( strcmp( type, "task_create" ) == 0 || strcmp( type, "untied_task_create" ) == 0 ) { os << " end if\n"; } } else { if ( strcmp( type, "task_create" ) == 0 || strcmp( type, "untied_task_create" ) == 0 ) { os << "if (pomp_if)"; } os << " POMP2_" << c1 << ( type + 1 ) << "_" << event << "( &" << region_id_prefix << id; os << ", pomp2_old_task ); }\n"; } } /** @brief Instrument an OpenMP Fork. The pomp_num_threads variable is * used to pass the number of requested threads for the * parallel region to the POMP library. It is either the * result of omp_get_max_threads() or of the num_threads() * clause, if present.*/ void generate_fork_call( const char* event, const char* type, int id, ostream& os, OMPragma* p, OMPRegion* r ) { char c1 = toupper( type[ 0 ] ); if ( lang & L_C_OR_CXX ) { os << "{\n"; } generate_num_threads( os, p, r ); generate_if( os, p, r ); if ( lang & L_FORTRAN ) { os << " call POMP2_" << c1 << ( type + 1 ) << "_" << event << "(" << region_id_prefix << id; if ( lang & L_F77 ) { os << ",\n &pomp_if, pomp_num_threads, pomp2_old_task"; if ( r != NULL ) { os << ",\n &" << r->generate_ctc_string( lang ) << " "; } } else { os << ",&\n pomp_if, pomp_num_threads, pomp2_old_task"; if ( r != NULL ) { os << ", &\n " << r->generate_ctc_string( lang ) << " "; } } os << ")\n"; } else { os << " POMP2_Task_handle pomp2_old_task;\n"; os << " POMP2_" << c1 << ( type + 1 ) << "_" << event << "(&" << region_id_prefix << id << ", pomp_if, pomp_num_threads, " << "&pomp2_old_task"; if ( r != 0 ) { os << ", " << r->generate_ctc_string( lang ) << " "; } os << ");\n"; } } /** @brief Generate the OpenMP pragma. */ void generate_pragma( const char* p, ostream& os ) { if ( lang & L_FORTRAN ) { os << "!$omp " << p << "\n"; } else { os << "#pragma omp " << p << "\n"; } } void generate_barrier( int n, ostream& os ) { generate_call_save_task_id( "enter", "implicit_barrier", n, os, NULL ); generate_pragma( "barrier", os ); generate_call_restore_task_id( "exit", "implicit_barrier", n, os ); } /**@brief Print the OpenMP Pragma. Insert num_threads clause, if * needed to pass pomp_num_therads to the OpenMP runtime. The * num_threads clause, if it was presend, may not appear here * again, since it would be evaluated twice and it may have * side effects.*/ void print_pragma( OMPragma* p, ostream& os ) { if ( p->lines.size() && keepSrcInfo ) { // print original source location information reset pragma os << "#line " << p->lineno << " \"" << infile << "\"" << "\n"; } // print pragma text for ( unsigned i = 0; i < p->lines.size(); ++i ) { os << p->lines[ i ] << "\n"; } } void print_pragma_task( OMPragma* p, ostream& os ) { if ( p->lines.size() && keepSrcInfo ) { // print original source location information reset pragma os << "#line " << p->lineno << " \"" << infile << "\"" << "\n"; } if ( p->name.find( "parallel" ) != string::npos && p->name.find( "end" ) == string::npos ) { // print pragma text or parallel constructs for ( unsigned i = 0; i < p->lines.size() - 1; ++i ) { os << p->lines[ i ] << "\n"; } if ( lang & L_FORTRAN ) { if ( lang & L_F77 ) { if ( copytpd ) { os << p->lines.back() << "\n"; os << "!$omp& firstprivate(pomp2_old_task) private(pomp2_new_task)\n"; os << "!$omp& if(pomp_if) num_threads(pomp_num_threads) copyin(" << pomp_tpd << ")\n"; if ( p->changed_default() ) { os << "!$omp& shared(/" << "cb" << compiletime.tv_sec << compiletime.tv_usec << "/)\n"; } } else { os << p->lines.back() << "\n"; os << "!$omp& firstprivate(pomp2_old_task) private(pomp2_new_task)\n"; os << "!$omp& if(pomp_if) num_threads(pomp_num_threads) \n"; if ( p->changed_default() ) { os << "!$omp& shared(/" << "cb" << compiletime.tv_sec << compiletime.tv_usec << "/)\n"; } } } else { if ( copytpd ) { os << p->lines.back() << " &\n"; os << " !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) &\n"; os << " !$omp if(pomp_if) num_threads(pomp_num_threads) copyin(" << pomp_tpd << ")"; if ( p->changed_default() ) { os << " &\n !$omp shared(/" << "cb" << compiletime.tv_sec << compiletime.tv_usec << "/)"; } os << "\n"; } else { os << p->lines.back() << " &\n"; os << " !$omp firstprivate(pomp2_old_task) private(pomp2_new_task) &\n"; os << " !$omp if(pomp_if) num_threads(pomp_num_threads)"; if ( p->changed_default() ) { os << " &\n !$omp shared(/" << "cb" << compiletime.tv_sec << compiletime.tv_usec << "/)"; } os << "\n"; } } } else { if ( copytpd ) { os << p->lines.back(); os << " firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads) copyin(" << pomp_tpd << ")"; if ( lang & L_FORTRAN ) { os << " private(pomp2_new_task)"; } os << "\n"; } else { os << p->lines.back(); os << " firstprivate(pomp2_old_task) if(pomp_if) num_threads(pomp_num_threads)"; if ( lang & L_FORTRAN ) { os << " private(pomp2_new_task)"; } os << "\n"; } } } else if ( p->name.find( "task" ) != string::npos && p->name.find( "end" ) == string::npos ) { // print pragma text or parallel constructs for ( unsigned i = 0; i < p->lines.size() - 1; ++i ) { os << p->lines[ i ] << "\n"; } if ( lang & L_F77 ) { os << p->lines.back() << "\n"; os << "!$omp& if(pomp_if) firstprivate(pomp2_new_task, pomp_if)\n"; if ( p->changed_default() ) { os << "!$omp& shared(/" << "cb" << compiletime.tv_sec << compiletime.tv_usec << "/)\n "; } } else if ( lang & L_FORTRAN ) { os << p->lines.back(); os << " if(pomp_if) firstprivate(pomp2_new_task, pomp_if)"; if ( p->changed_default() ) { os << "&\n !$omp shared(/" << "cb" << compiletime.tv_sec << compiletime.tv_usec << "/)"; } os << "\n"; } else { os << p->lines.back(); os << " if(pomp_if) firstprivate(pomp2_new_task, pomp_if)\n"; } } else { // print pragma text for ( unsigned i = 0; i < p->lines.size(); ++i ) { os << p->lines[ i ] << "\n"; } } } void print_pragma_plain( OMPragma* p, ostream& os ) { for ( unsigned i = 0; i < p->lines.size(); ++i ) { os << p->lines[ i ] << "\n"; } } void reset_src_info( OMPragma* p, ostream& os ) { os << "#line " << p->lineno + p->lines.size() << " \"" << infile << "\"" << "\n"; } OMPRegion* REnter( OMPragma* p, bool new_outer = false ) { OMPRegion* r = new OMPRegion( p->name, p->filename, p->lineno, p->lineno + p->lines.size() - 1, new_outer ); regions.push_back( r ); regStack.push( r ); return r; } OMPRegion* RTop( OMPragma* p ) { if ( regStack.empty() ) { cerr << infile << ":" << p->lineno << "663: ERROR: unbalanced pragma/directive nesting\n"; cleanup_and_exit(); } else { return regStack.top(); } return 0; } int RExit( OMPragma* p, bool end_outer = false ) { OMPRegion* r = RTop( p ); #if defined( __GNUC__ ) && ( __GNUC__ < 3 ) if ( p->name[ 0 ] != '$' && p->name.substr( 3 ) != r->name ) { #else if ( p->name[ 0 ] != '$' && p->name.compare( 3, string::npos, r->name ) != 0 ) { #endif cerr << infile << ":" << r->begin_first_line << ": ERROR: missing end" << r->name << " directive for " << r->name << " directive\n"; cerr << infile << ":" << p->lineno << ": ERROR: non-matching " << p->name << " directive\n"; cleanup_and_exit(); } if ( p->lines.size() ) { r->end_first_line = p->lineno; r->end_last_line = p->lineno + p->lines.size() - 1; } else { // C/C++ $END$ pragma r->end_first_line = r->end_last_line = p->lineno - p->pline; } if ( end_outer ) { r->finish(); } regStack.pop(); return r->id; } } /** @brief OpenMP pragma transformation functions*/ namespace { void h_parallel( OMPragma* p, ostream& os ) { OMPRegion* r = REnter( p, true ); int n = r->id; p->add_descr( n ); r->has_num_threads = p->find_numthreads(); r->has_if = p->find_if(); r->has_reduction = p->find_reduction(); r->has_schedule = p->find_schedule( &( r->arg_schedule ) ); generate_fork_call( "fork", "parallel", n, os, p, r ); print_pragma_task( p, os ); generate_call( "begin", "parallel", n, os, NULL ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } void h_endparallel( OMPragma* p, ostream& os ) { int n = RExit( p, true ); generate_barrier( n, os ); generate_call( "end", "parallel", n, os, NULL ); print_pragma( p, os ); generate_call_restore_task_id( "join", "parallel", n, os ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } void h_for( OMPragma* p, ostream& os ) { OMPRegion* r = REnter( p ); int n = r->id; if ( !p->is_nowait() ) { p->add_nowait(); r->noWaitAdded = true; } r->has_reduction = p->find_reduction(); r->has_schedule = p->find_schedule( &( r->arg_schedule ) ); r->has_collapse = p->find_collapse(); r->has_ordered = p->find_ordered(); generate_call( "enter", "for", n, os, r ); print_pragma( p, os ); } void h_endfor( OMPragma* p, ostream& os ) { OMPRegion* r = RTop( p ); int n = RExit( p ); if ( r->noWaitAdded ) { generate_barrier( n, os ); } generate_call( "exit", "for", n, os, NULL ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } void h_do( OMPragma* p, ostream& os ) { OMPRegion* r = REnter( p ); int n = r->id; r->has_ordered = p->find_ordered(); r->has_collapse = p->find_collapse(); r->has_schedule = p->find_schedule( &( r->arg_schedule ) ); r->has_reduction = p->find_reduction(); generate_call( "enter", "do", n, os, r ); print_pragma( p, os ); } void h_enddo( OMPragma* p, ostream& os ) { int n = RExit( p ); if ( p->is_nowait() ) { print_pragma( p, os ); } else { p->add_nowait(); print_pragma( p, os ); generate_barrier( n, os ); } generate_call( "exit", "do", n, os, NULL ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } void h_sections_c( OMPragma* p, ostream& os ) { OMPRegion* r = REnter( p ); int n = r->id; if ( !p->is_nowait() ) { p->add_nowait(); r->noWaitAdded = true; } r->has_reduction = p->find_reduction(); generate_call( "enter", "sections", n, os, r ); print_pragma( p, os ); } void h_section_c( OMPragma* p, ostream& os ) { OMPRegion* r = RTop( p ); OMPRegion* s = new OMPRegion( *r, p->name, p->filename, p->lineno, p->lineno + p->lines.size() - 1 ); regStack.push( s ); if ( r->num_sections ) { print_pragma_plain( p, os ); } else { print_pragma( p, os ); } generate_call( "begin", "section", r->id, os, r ); if ( keepSrcInfo ) { reset_src_info( p, os ); } r->num_sections++; } void h_endsection_c( OMPragma* p, ostream& os ) { OMPRegion* r = RTop( p ); generate_call( "end", "section", r->id, os, NULL ); if ( keepSrcInfo ) { reset_src_info( p, os ); } regStack.pop(); } void h_endsections_c( OMPragma* p, ostream& os ) { OMPRegion* r = RTop( p ); int n = RExit( p ); if ( r->noWaitAdded ) { generate_barrier( n, os ); } generate_call( "exit", "sections", n, os, NULL ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } void h_sections( OMPragma* p, ostream& os ) { OMPRegion* r = REnter( p ); int n = r->id; generate_call( "enter", "sections", n, os, r ); print_pragma( p, os ); } void h_section( OMPragma* p, ostream& os ) { OMPRegion* r = RTop( p ); if ( r->num_sections ) { // close last section if necessary generate_call( "end", "section", r->id, os, NULL ); } print_pragma( p, os ); generate_call( "begin", "section", r->id, os, r ); if ( keepSrcInfo ) { reset_src_info( p, os ); } ++( r->num_sections ); } void h_endsections( OMPragma* p, ostream& os ) { int n = RExit( p ); generate_call( "end", "section", n, os, NULL ); if ( p->is_nowait() ) { print_pragma( p, os ); } else { p->add_nowait(); print_pragma( p, os ); generate_barrier( n, os ); } generate_call( "exit", "sections", n, os, NULL ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } void h_single_c( OMPragma* p, ostream& os ) { OMPRegion* r = REnter( p ); int n = r->id; if ( !p->is_nowait() ) { if ( !p->has_copypriv() ) { p->add_nowait(); } r->noWaitAdded = true; } if ( enabled & C_SINGLE ) { generate_call( "enter", "single", n, os, r ); } print_pragma( p, os ); if ( enabled & C_SINGLE ) { generate_call( "begin", "single", n, os, NULL ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } } void h_endsingle_c( OMPragma* p, ostream& os ) { OMPRegion* r = RTop( p ); int n = RExit( p ); if ( enabled & C_SINGLE ) { generate_call( "end", "single", n, os, NULL ); } if ( r->noWaitAdded ) { generate_barrier( n, os ); } if ( enabled & C_SINGLE ) { generate_call( "exit", "single", n, os, NULL ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } } void h_single( OMPragma* p, ostream& os ) { OMPRegion* r = REnter( p ); int n = r->id; if ( enabled & C_SINGLE ) { generate_call( "enter", "single", n, os, r ); } print_pragma( p, os ); if ( enabled & C_SINGLE ) { generate_call( "begin", "single", n, os, NULL ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } } void h_endsingle( OMPragma* p, ostream& os ) { int n = RExit( p ); if ( enabled & C_SINGLE ) { generate_call( "end", "single", n, os, NULL ); } if ( p->is_nowait() ) { print_pragma( p, os ); } else { if ( !p->has_copypriv() ) { p->add_nowait(); } print_pragma( p, os ); generate_barrier( n, os ); } if ( enabled & C_SINGLE ) { generate_call( "exit", "single", n, os, NULL ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } } void h_master( OMPragma* p, ostream& os ) { OMPRegion* r = REnter( p ); int n = r->id; print_pragma( p, os ); if ( enabled & C_MASTER ) { generate_call( "begin", "master", n, os, r ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } } void h_endmaster_c( OMPragma* p, ostream& os ) { int n = RExit( p ); if ( enabled & C_MASTER ) { generate_call( "end", "master", n, os, NULL ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } } void h_endmaster( OMPragma* p, ostream& os ) { int n = RExit( p ); if ( enabled & C_MASTER ) { generate_call( "end", "master", n, os, NULL ); } print_pragma( p, os ); } void h_critical( OMPragma* p, ostream& os ) { OMPRegion* r = REnter( p ); int n = r->id; r->sub_name = p->find_sub_name(); if ( enabled & C_CRITICAL ) { generate_call( "enter", "critical", n, os, r ); } print_pragma( p, os ); if ( enabled & C_CRITICAL ) { generate_call( "begin", "critical", n, os, NULL ); } if ( keepSrcInfo ) { reset_src_info( p, os ); } } void h_endcritical( OMPragma* p, ostream& os ) { OMPRegion* r = RTop( p ); int n = RExit( p ); if ( p->name[ 0 ] != '$' ) { string cname = p->find_sub_name(); if ( cname != r->sub_name ) { cerr << infile << ":" << r->begin_first_line << ": ERROR: missing end critical(" << r->sub_name << ") directive\n"; cerr << infile << ":" << p->lineno << ": ERROR: non-matching end critical(" << cname << ") directive\n"; cleanup_and_exit(); } } if ( enabled & C_CRITICAL ) { generate_call( "end", "critical", n, os, NULL ); } print_pragma( p, os ); if ( enabled & C_CRITICAL ) { generate_call( "exit", "critical", n, os, NULL ); } if ( keepSrcInfo ) { reset_src_info( p, os ); } } void h_parallelfor( OMPragma* p, ostream& os ) { OMPRegion* r = REnter( p, true ); int n = r->id; p->add_descr( n ); r->has_num_threads = p->find_numthreads(); r->has_if = p->find_if(); r->has_reduction = p->find_reduction(); r->has_schedule = p->find_schedule( &( r->arg_schedule ) ); r->has_ordered = p->find_ordered(); r->has_collapse = p->find_collapse(); OMPragma* forPragma = p->split_combined(); forPragma->add_nowait(); generate_fork_call( "fork", "parallel", n, os, p, r ); print_pragma_task( p, os ); generate_call( "begin", "parallel", n, os, NULL ); generate_call( "enter", "for", n, os, r ); print_pragma( forPragma, os ); // #omp for nowait delete forPragma; } void h_endparallelfor( OMPragma* p, ostream& os ) { int n = RExit( p, true ); generate_barrier( n, os ); generate_call( "exit", "for", n, os, NULL ); generate_call( "end", "parallel", n, os, NULL ); generate_call_restore_task_id( "join", "parallel", n, os ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } void h_paralleldo( OMPragma* p, ostream& os ) { OMPRegion* r = REnter( p, true ); int n = r->id; p->add_descr( n ); r->has_num_threads = p->find_numthreads(); r->has_if = p->find_if(); r->has_reduction = p->find_reduction(); r->has_schedule = p->find_schedule( &( r->arg_schedule ) ); r->has_ordered = p->find_ordered(); r->has_collapse = p->find_collapse(); generate_fork_call( "fork", "parallel", n, os, p, r ); OMPragma* doPragma = p->split_combined(); print_pragma_task( p, os ); generate_call( "begin", "parallel", n, os, NULL ); generate_call( "enter", "do", n, os, r ); print_pragma( doPragma, os ); // #omp do delete doPragma; } void h_endparalleldo( OMPragma* p, ostream& os ) { int n = RExit( p, true ); generate_pragma( "end do nowait", os ); generate_barrier( n, os ); generate_call( "exit", "do", n, os, NULL ); generate_call( "end", "parallel", n, os, NULL ); generate_pragma( "end parallel", os ); generate_call_restore_task_id( "join", "parallel", n, os ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } void h_parallelsections_c( OMPragma* p, ostream& os ) { OMPRegion* r = REnter( p, true ); int n = r->id; p->add_descr( n ); r->has_num_threads = p->find_numthreads(); r->has_if = p->find_if(); r->has_reduction = p->find_reduction(); OMPragma* secPragma = p->split_combined(); secPragma->add_nowait(); generate_fork_call( "fork", "parallel", n, os, p, r ); print_pragma_task( p, os ); generate_call( "begin", "parallel", n, os, NULL ); generate_call( "enter", "sections", n, os, r ); print_pragma( secPragma, os ); // #omp sections delete secPragma; } void h_endparallelsections_c( OMPragma* p, ostream& os ) { int n = RExit( p, true ); generate_barrier( n, os ); generate_call( "exit", "sections", n, os, NULL ); generate_call( "end", "parallel", n, os, NULL ); generate_call_restore_task_id( "join", "parallel", n, os ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } void h_parallelsections( OMPragma* p, ostream& os ) { OMPRegion* r = REnter( p, true ); int n = r->id; p->add_descr( n ); r->has_num_threads = p->find_numthreads(); r->has_if = p->find_if(); r->has_reduction = p->find_reduction(); OMPragma* secPragma = p->split_combined(); generate_fork_call( "fork", "parallel", n, os, p, r ); print_pragma_task( p, os ); // #omp parallel generate_call( "begin", "parallel", n, os, NULL ); generate_call( "enter", "sections", n, os, NULL ); print_pragma( secPragma, os ); // #omp sections delete secPragma; } void h_endparallelsections( OMPragma* p, ostream& os ) { int n = RExit( p, true ); generate_call( "end", "section", n, os, NULL ); generate_pragma( "end sections nowait", os ); generate_barrier( n, os ); generate_call( "exit", "sections", n, os, NULL ); generate_call( "end", "parallel", n, os, NULL ); generate_pragma( "end parallel", os ); generate_call_restore_task_id( "join", "parallel", n, os ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } void h_barrier( OMPragma* p, ostream& os ) { OMPRegion* r = new OMPRegion( p->name, p->filename, p->lineno, p->lineno + p->lines.size() - 1 ); int n = r->id; regions.push_back( r ); generate_call_save_task_id( "enter", "barrier", n, os, r ); print_pragma( p, os ); generate_call_restore_task_id( "exit", "barrier", n, os ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } void h_flush( OMPragma* p, ostream& os ) { OMPRegion* r = new OMPRegion( p->name, p->filename, p->lineno, p->lineno + p->lines.size() - 1 ); int n = r->id; regions.push_back( r ); generate_call( "enter", "flush", n, os, r ); print_pragma( p, os ); generate_call( "exit", "flush", n, os, NULL ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } void h_atomic( OMPragma* p, ostream& os ) { OMPRegion* r = new OMPRegion( p->name, p->filename, p->lineno, p->lineno + p->lines.size() - 1 ); int n = r->id; regions.push_back( r ); if ( enabled & C_ATOMIC ) { generate_call( "enter", "atomic", n, os, r ); } print_pragma( p, os ); atomicRegion = r; } /*2.0*/ void h_workshare( OMPragma* p, ostream& os ) { OMPRegion* r = REnter( p ); int n = r->id; generate_call( "enter", "workshare", n, os, r ); print_pragma( p, os ); } /*2.0*/ void h_endworkshare( OMPragma* p, ostream& os ) { int n = RExit( p ); if ( p->is_nowait() ) { print_pragma( p, os ); generate_call( "exit", "workshare", n, os, NULL ); } else { p->add_nowait(); print_pragma( p, os ); generate_barrier( n, os ); generate_call( "exit", "workshare", n, os, NULL ); } if ( keepSrcInfo ) { reset_src_info( p, os ); } } /*2.0*/ void h_parallelworkshare( OMPragma* p, ostream& os ) { OMPRegion* r = REnter( p, true ); int n = r->id; p->add_descr( n ); r->has_num_threads = p->find_numthreads(); r->has_if = p->find_if(); r->has_reduction = p->find_reduction(); generate_fork_call( "fork", "parallel", n, os, p, r ); OMPragma* wsPragma = p->split_combined(); print_pragma_task( p, os ); // #omp parallel generate_call( "begin", "parallel", n, os, NULL ); generate_call( "enter", "workshare", n, os, r ); print_pragma( wsPragma, os ); // #omp workshare delete wsPragma; } /*2.0*/ void h_endparallelworkshare( OMPragma* p, ostream& os ) { int n = RExit( p, true ); generate_pragma( "end workshare nowait", os ); generate_barrier( n, os ); generate_call( "exit", "workshare", n, os, NULL ); generate_call( "end", "parallel", n, os, NULL ); generate_pragma( "end parallel", os ); generate_call_restore_task_id( "join", "parallel", n, os ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } /*2.5*/ void h_ordered( OMPragma* p, ostream& os ) { OMPRegion* r = REnter( p ); int n = r->id; if ( enabled & C_ORDERED ) { generate_call( "enter", "ordered", n, os, r ); } print_pragma( p, os ); if ( enabled & C_ORDERED ) { generate_call( "begin", "ordered", n, os, NULL ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } } /*2.5*/ void h_endordered( OMPragma* p, ostream& os ) { int n = RExit( p ); if ( enabled & C_ORDERED ) { generate_call( "end", "ordered", n, os, NULL ); } print_pragma( p, os ); if ( enabled & C_ORDERED ) { generate_call( "exit", "ordered", n, os, NULL ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } } /*3.0*/ void h_task( OMPragma* p, ostream& os ) { OMPRegion* r = REnter( p, true ); int n = r->id; const char* inner_call, * outer_call; p->add_descr( n ); r->has_if = p->find_if(); r->has_untied = p->find_untied( untied_keep ); outer_call = "task_create"; inner_call = "task"; if ( task_abort ) { cerr << infile << ":" << r->begin_first_line << ":\n" << "ERROR: Tasks are not allowed with this configuration." << std::endl; cleanup_and_exit(); } if ( task_warn ) { cerr << infile << ":" << r->begin_first_line << ":\n" << "WARNING: Tasks may not be supported by the measurement system." << std::endl; } if ( r->has_untied ) { if ( untied_abort ) { cerr << infile << ":" << r->begin_first_line << ":\n" << "ERROR: Untied tasks are not allowed with this configuration." << std::endl; cleanup_and_exit(); } if ( !untied_no_warn ) { cerr << infile << ":" << r->begin_first_line << ":\n" << "WARNING: untied tasks may not be supported by the measurement system.\n" << " All untied tasks are now made tied.\n" << " Please consider using --untied=abort|keep|no-warn" << std::endl; } if ( untied_keep ) { outer_call = "untied_task_create"; inner_call = "untied_task"; } } if ( !task_remove ) { if ( lang & L_C_OR_CXX ) { os << "{\n"; } generate_if( os, p, r ); generate_call_save_task_id( "begin", outer_call, n, os, r ); print_pragma_task( p, os ); generate_call( "begin", inner_call, n, os, NULL ); } else { os << "//!!! Removed task directive due to user option \"--task=remove\"!" << std::endl; } if ( keepSrcInfo ) { reset_src_info( p, os ); } } /*3.0*/ void h_endtask( OMPragma* p, ostream& os ) { OMPRegion* r = RTop( p ); int n = RExit( p, true ); const char* inner_call, * outer_call; if ( r->has_untied && untied_keep ) { outer_call = "untied_task_create"; inner_call = "untied_task"; } else { outer_call = "task_create"; inner_call = "task"; } if ( !task_remove ) { generate_call( "end", inner_call, n, os, NULL ); print_pragma( p, os ); generate_call_restore_task_id( "end", outer_call, n, os ); if ( lang & L_C_OR_CXX ) { os << "}\n"; } } if ( keepSrcInfo ) { reset_src_info( p, os ); } } /*3.0*/ void h_taskwait( OMPragma* p, ostream& os ) { OMPRegion* r = new OMPRegion( p->name, p->filename, p->lineno, p->lineno + p->lines.size() - 1 ); int n = r->id; regions.push_back( r ); generate_call_save_task_id( "begin", "taskwait", n, os, r ); print_pragma( p, os ); generate_call_restore_task_id( "end", "taskwait", n, os ); if ( keepSrcInfo ) { reset_src_info( p, os ); } } /*INST*/ void h_instrument( OMPragma* p, ostream& os ) { do_transform = true; if ( keepSrcInfo ) { reset_src_info( p, os ); } } /*INST*/ void h_noinstrument( OMPragma* p, ostream& os ) { do_transform = false; if ( keepSrcInfo ) { reset_src_info( p, os ); } } /*INST*/ void h_inst( OMPragma* p, ostream& os ) { char c1 = toupper( p->name.substr( 4 )[ 0 ] ); if ( lang & L_FORTRAN ) { os << " call POMP2_" << c1 << p->name.substr( 5 ) << "()\n"; } else { os << "POMP2_" << c1 << p->name.substr( 5 ) << "();\n"; } if ( keepSrcInfo ) { reset_src_info( p, os ); } } /*INST*/ void h_instbegin( OMPragma* p, ostream& os ) { OMPRegion* r = REnter( p ); int n = r->id; r->name = "region"; r->sub_name = p->find_sub_name(); if ( lang & L_FORTRAN ) { os << " call POMP2_Begin(" << region_id_prefix << n << ")\n"; } else { os << "POMP2_Begin(&" << region_id_prefix << n << ");\n"; } if ( keepSrcInfo ) { reset_src_info( p, os ); } } /*INST*/ void h_instaltend( OMPragma* p, ostream& os ) { OMPRegion* r = RTop( p ); string cname = p->find_sub_name(); if ( cname != r->sub_name ) { cerr << infile << ":" << r->begin_first_line << ": ERROR: missing inst end(" << r->sub_name << ") pragma/directive\n"; cerr << infile << ":" << p->lineno << ": ERROR: non-matching inst end(" << cname << ") pragma/directive\n"; cleanup_and_exit(); } if ( lang & L_FORTRAN ) { os << " call POMP2_End(" << region_id_prefix << r->id << ")\n"; } else { os << "POMP2_End(&" << region_id_prefix << r->id << ");\n"; } if ( keepSrcInfo ) { reset_src_info( p, os ); } } /*INST*/ void h_instend( OMPragma* p, ostream& os ) { p->name = "endregion"; OMPRegion* r = RTop( p ); string cname = p->find_sub_name(); int n = RExit( p ); if ( cname != r->sub_name ) { cerr << infile << ":" << r->begin_first_line << ": ERROR: missing inst end(" << r->sub_name << ") pragma/directive\n"; cerr << infile << ":" << p->lineno << ": ERROR: non-matching inst end(" << cname << ") pragma/directive\n"; cleanup_and_exit(); } if ( lang & L_FORTRAN ) { os << " call POMP2_End(" << region_id_prefix << n << ")\n"; } else { os << "POMP2_End(&" << region_id_prefix << n << ");\n"; } if ( keepSrcInfo ) { reset_src_info( p, os ); } } void h_cxx_end( OMPragma* p, ostream& os ) { if ( atomicRegion ) { if ( enabled & C_ATOMIC ) { extra_handler( p->lineno - p->pline, os ); } } else { OMPRegion* r = RTop( p ); phandler_t handler = find_handler( "end" + r->name ); handler( p, os ); } } } /** @brief External interface functions*/ void init_handler( const char* inf, Language l, bool g ) { // remember environment lang = l; keepSrcInfo = g; infile = inf; // init handler table if ( enabled & C_OMP ) { if ( lang & L_FORTRAN ) { table[ "do" ] = h_do; table[ "enddo" ] = h_enddo; table[ "workshare" ] = h_workshare; /*2.0*/ table[ "endworkshare" ] = h_endworkshare; /*2.0*/ table[ "sections" ] = h_sections; table[ "section" ] = h_section; table[ "endsections" ] = h_endsections; table[ "single" ] = h_single; table[ "endsingle" ] = h_endsingle; if ( enabled & C_MASTER ) { table[ "master" ] = h_master; table[ "endmaster" ] = h_endmaster; } table[ "paralleldo" ] = h_paralleldo; table[ "endparalleldo" ] = h_endparalleldo; table[ "parallelsections" ] = h_parallelsections; table[ "endparallelsections" ] = h_endparallelsections; table[ "parallelworkshare" ] = h_parallelworkshare; /*2.0*/ table[ "endparallelworkshare" ] = h_endparallelworkshare; /*2.0*/ } else { table[ "for" ] = h_for; table[ "endfor" ] = h_endfor; table[ "sections" ] = h_sections_c; table[ "section" ] = h_section_c; table[ "endsection" ] = h_endsection_c; table[ "endsections" ] = h_endsections_c; table[ "single" ] = h_single_c; table[ "endsingle" ] = h_endsingle_c; table[ "master" ] = h_master; // F version OK here table[ "endmaster" ] = h_endmaster_c; // but not here table[ "parallelfor" ] = h_parallelfor; table[ "endparallelfor" ] = h_endparallelfor; table[ "parallelsections" ] = h_parallelsections_c; table[ "endparallelsections" ] = h_endparallelsections_c; table[ "$END$" ] = h_cxx_end; } table[ "parallel" ] = h_parallel; table[ "endparallel" ] = h_endparallel; table[ "critical" ] = h_critical; table[ "endcritical" ] = h_endcritical; table[ "barrier" ] = h_barrier; if ( enabled & C_FLUSH ) { table[ "flush" ] = h_flush; } table[ "atomic" ] = h_atomic; table[ "ordered" ] = h_ordered; table[ "endordered" ] = h_endordered; table[ "task" ] = h_task; table[ "endtask" ] = h_endtask; table[ "taskwait" ] = h_taskwait; } if ( enabled & C_REGION ) { table[ "instbegin" ] = h_instbegin; /*INST*/ table[ "instaltend" ] = h_instaltend; /*INST*/ table[ "instend" ] = h_instend; /*INST*/ } table[ "instinit" ] = h_inst; /*INST*/ table[ "instfinalize" ] = h_inst; /*INST*/ table[ "inston" ] = h_inst; /*INST*/ table[ "instoff" ] = h_inst; /*INST*/ table[ "instrument" ] = h_instrument; /*INST*/ table[ "noinstrument" ] = h_noinstrument; /*INST*/ } void finalize_handler( const char* incfile, char* incfileNoPath, ostream& os ) { // check region stack if ( !regStack.empty() ) { cerr << "ERROR: unbalanced pragma/directive nesting\n"; print_regstack_top(); cleanup_and_exit(); } // generate opari include file ofstream incs( incfile ); if ( !incs ) { cerr << "ERROR: cannot open opari include file " << incfile << "\n"; exit( 1 ); } if ( lang & L_FORTRAN ) { if ( regions.size() ) { for ( unsigned i = 0; i < regions.size(); ++i ) { regions[ i ]->generate_descr_f( incs, lang ); } } OMPRegion::generate_init_handle_calls_f( os, incfileNoPath ); OMPRegion::finalize_descrs( incs, lang ); } else { if ( lang & L_C ) { OMPRegion::generate_header_c( incs ); } else { OMPRegion::generate_header_cxx( incs ); } if ( regions.size() ) { for ( unsigned i = 0; i < regions.size(); ++i ) { regions[ i ]->generate_descr_c( incs ); } } if ( lang & L_C ) { OMPRegion::generate_init_handle_calls_c( incs ); } else { OMPRegion::generate_init_handle_calls_cxx( incs ); } } } phandler_t find_handler( const string& pragma ) { htab::iterator it = table.find( pragma ); if ( it != table.end() ) { return it->second; } else { return print_pragma; } } void extra_handler( int lineno, ostream& os ) { if ( atomicRegion ) { atomicRegion->end_first_line = lineno; atomicRegion->end_last_line = lineno; generate_call( "exit", "atomic", atomicRegion->id, os, NULL ); if ( keepSrcInfo ) { os << "#line " << ( lineno + 1 ) << " \"" << infile << "\"" << "\n"; } atomicRegion = 0; } } bool set_disabled( const string& constructs ) { string::size_type pos = 0; string::size_type last = 0; unsigned c; string s; do { pos = constructs.find_first_of( ",", last ); if ( pos < string::npos ) { s = constructs.substr( last, pos - last ); if ( ( c = string2construct( s ) ) == C_NONE ) { cerr << "ERROR: unknown value \'" << s << "\' for option --disable\n"; return true; } else { enabled &= ~c; } last = pos + 1; } } while ( pos < string::npos ); s = constructs.substr( last ); if ( ( c = string2construct( s ) ) == C_NONE ) { cerr << "ERROR: unknown value \'" << s << "\' for option --disable\n"; return true; } else { enabled &= ~c; } return false; } bool instrument_locks() { return enabled & C_LOCKS; } bool genLineStmts() { return keepSrcInfo; } void print_regstack_top() { OMPRegion* rt = regStack.top(); cerr << " near OpenMP " << rt->name << " construct at " << rt->file_name << ":" << rt->begin_first_line; if ( rt->begin_first_line != rt->begin_last_line ) { cerr << "-" << rt->begin_last_line << "\n"; } else { cerr << "\n"; } } eztrace-1.1-7/extlib/opari2/src/opari/PaxHeaders.7332/process_f.cc0000644000000000000000000000013212617055645021520 xustar0030 mtime=1446796197.914458076 30 atime=1508138876.595935903 30 ctime=1508162367.729906966 eztrace-1.1-7/extlib/opari2/src/opari/process_f.cc0000644000175000017500000010264512617055645022717 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ /** @internal * * @file process_f.cc * @status beta * * @maintainer Dirk Schmidl * * @authors Bernd Mohr * Dirk Schmidl * Peter Philippen * * @brief Functions to parse fortran files are collected here*/ #include #include using std::cerr; #include using std::vector; #include using std::stack; #include using std::tolower; using std::toupper; #include using std::getline; #include using std::transform; using std::sort; #include using std::greater; #include using std::strlen; using std::remove_if; #ifdef EBUG # include using std::setw; #endif #include "opari2.h" #include "handler.h" enum Loop_type { TYPE_NO_OMP = 0x00, TYPE_OMP_LOOP = 0x01, TYPE_OMP_PARLOOP = 0x02 }; /** @brief information about loops*/ typedef struct { /** is OpenMP loop? */ Loop_type is_omp; /** loop label */ string label; } LoopDescriptionT; enum Line_type { NORMAL_LINE = 0x00, PRAGMA_PARSTART = 0x01, PRAGMA_PAREND = 0x02, PRAGMA_LOOPSTART = 0x03, PRAGMA_LOOPEND = 0x04, PRAGMA_PARLOOPSTART = 0x05, PRAGMA_PARLOOPEND = 0x06, UNKNOWN_LINE = 0x07, PRAGMA_UNKNOWN = 0x08 }; namespace { void look_for( const string& lowline, const char* word, vector& positions ) { string::size_type s = 0; while ( ( s = lowline.find( word, s ) ) != string::npos ) { positions.push_back( s ); s += strlen( word ); } } /**@brief Check if the line belonges to the header of a subroutine or function. * After lines in the header, we ca insert our variable definitions.*/ bool is_sub_unit_header( string& lowline, bool inHeader ) { string line; string lline; string keyword; bool result; static bool continuation = false; static int openbrackets = 0; static bool inProgram = false; static bool inModule = false; static bool inInterface = false; static bool inContains = false; size_t pos; pos = lowline.find_first_not_of( " \t" ); /*string is empty*/ if ( pos == string::npos ) { pos = 0; line.clear(); } else { line = lowline.substr( pos ); } lline = line; line.erase( remove_if( line.begin(), line.end(), isspace ), line.end() ); //Set number of open brackets to 0 if new unit begins, since we might have missed //closing brackets on continuation lines. if ( ( line.find( "program" ) == 0 ) || ( ( line.find( "module" ) == 0 ) && !inProgram ) || ( ( line.find( "interface" ) == 0 ) && inModule ) || ( ( line.find( "contains" ) != string::npos ) && inModule ) || ( line.find( "subroutine" ) == 0 ) || ( ( line.find( "function" ) == string::npos ) && !inHeader && ( ( line.find( "=" ) >= line.find( "!" ) ) || ( line.find( "=" ) > line.find( "kind" ) ) ) ) ) { openbrackets = 0; } //Check if we enter a program block inProgram = inProgram || ( line.find( "program" ) == 0 ); //Check if we enter a module block inModule = !inProgram && ( inModule || ( line.find( "module" ) == 0 ) ); //Check if we enter an interface block inInterface = inModule && ( inInterface || ( line.find( "interface" ) == 0 ) ); //Check if we enter a contains block inContains = inModule && ( inContains || ( line.find( "contains" ) != string::npos ) ); //search for words indicating, that we did not reach a point where //we can insert variable definitions, these keywords are: //program, function, result, subroutine, save, implicit, parameter, //and use if ( ( ( ( line.find( "program" ) == 0 ) || ( ( lline.find( "function" ) != string::npos ) && !( lline.length() >= ( lline.find( "function" ) + 8 ) && ( isalnum( lline[ lline.find( "function" ) + 8 ] ) || ( lline[ lline.find( "function" ) + 8 ] == '_' ) ) ) && !( ( lline.find( "function" ) != 0 ) && ( isalnum( lline[ lline.find( "function" ) - 1 ] ) ) || ( lline[ lline.find( "function" ) - 1 ] == '_' ) ) ) || ( ( lline.find( "subroutine" ) != string::npos ) && !( lline.length() >= ( lline.find( "subroutine" ) + 10 ) && ( isalnum( lline[ lline.find( "subroutine" ) + 10 ] ) || ( lline[ lline.find( "subroutine" ) + 10 ] == '_' ) ) ) && !( ( lline.find( "subroutine" ) != 0 ) && ( isalnum( lline[ lline.find( "subroutine" ) - 1 ] ) ) || ( lline[ lline.find( "subroutine" ) - 1 ] == '_' ) ) ) || ( line.find( "save" ) == 0 && inHeader ) || ( line.find( "result" ) == 0 && inHeader ) || ( line.find( "implicit" ) == 0 && inHeader ) || ( line.find( "use" ) == 0 && inHeader ) || ( line.find( "include" ) == 0 && inHeader ) ) && line.find( "endfunction" ) == string::npos && line.find( "endsubroutine" ) == string::npos && line.find( "endmodule" ) == string::npos && line.find( "endprogram" ) == string::npos && ( ( line.find( "=" ) >= line.find( "!" ) || line.find( "=" ) > line.find( "kind" ) || line.find( "=" ) == ( line.find( ">" ) - 1 ) ) ) ) || ( line.find( "#" ) == 0 && inHeader ) || ( line.find( "&" ) == 0 && inHeader ) || ( line.empty() && inHeader ) || ( line.find( "parameter" ) == 0 && inHeader ) || ( line.find( "dimension" ) == 0 && inHeader ) || ( openbrackets != 0 && inHeader ) || ( continuation && inHeader ) ) { result = !inModule || ( !inInterface && inContains ); } else { result = false; } //Check if we leave a program block inProgram = inProgram && line.find( "endprogram" ) == string::npos; //Check if we leave a module block inModule = inModule && line.find( "endmodule" ) == string::npos; //Check if we leave an interface block inInterface = inInterface && line.find( "endinterface" ) == string::npos; //Check if we leave an contains block inContains = inContains && line.find( "endmodule" ) == string::npos; if ( line[ line.length() - 1 ] == '&' || line.find( "&!" ) != string::npos ) { continuation = true; } else { continuation = false; } /*count open brackets, to see if a functionheader is split across different lines*/ for ( unsigned int i = 0; i < lowline.length(); i++ ) { bool inString = false; if ( lowline[ i ] == '(' ) { openbrackets++; } if ( lowline[ i ] == ')' ) { openbrackets--; } if ( ( lowline[ i ] == '\'' || lowline[ i ] == '"' ) && inString ) { inString = false; } else { inString = true; } /*rest of line is a comment*/ if ( lowline[ i ] == '!' && !inString ) { break; } } return result; } /**@brief check if this line is a comment line*/ bool is_comment_line( string & lowline, string & line, Language lang ) { if ( lowline[ 0 ] == '!' || ( ( lang & L_F77 ) && ( lowline[ 0 ] == '*' || lowline[ 0 ] == 'c' ) ) ) { // fixed form comment if ( lowline[ 1 ] == '$' && lowline.find_first_not_of( " \t0123456789", 2 ) > 5 ) { // OpenMP Conditional Compilation lowline[ 0 ] = ' '; lowline[ 1 ] = ' '; return false; } else if ( lowline[ 1 ] == 'p' && lowline[ 2 ] == '$' && lowline.find_first_not_of( " \t0123456789", 3 ) > 5 ) { // POMP Conditional Compilation lowline[ 0 ] = line[ 0 ] = ' '; lowline[ 1 ] = line[ 1 ] = ' '; lowline[ 2 ] = line[ 2 ] = ' '; return false; } else { return true; } } string::size_type s = lowline.find_first_not_of( " \n" ); if ( s != string::npos && lowline[ s ] == '!' ) { // free form full line comment string::size_type c = lowline.find( "!$ " ); if ( c == s ) { // OpenMP Conditional Compilation lowline[ s ] = ' '; lowline[ s + 1 ] = ' '; return false; } c = lowline.find( "!p$ " ); if ( c == s ) { // POMP Conditional Compilation lowline[ s ] = line[ s ] = ' '; lowline[ s + 1 ] = line[ s + 1 ] = ' '; lowline[ s + 2 ] = line[ s + 2 ] = ' '; return false; } return true; } return false; } /**@brief check if this line startes a do loop*/ bool is_loop_start( string & lowline, string & line, string & label ) { string::size_type poslab = string::npos; // cerr << line << '\n'; // cerr << lowline << '\n'; label = ""; if ( !( line.size() ) ) { return false; } // is there a 'do ' string::size_type pstart = lowline.find( "do" ); if ( pstart == string::npos || ( lowline[ pstart + 2 ] != '\0' && lowline[ pstart + 2 ] != ' ' && lowline[ pstart + 2 ] != '\t' ) ) { return false; } string::size_type pos = lowline.find_first_not_of( " \t" ); // cerr << "pos: " << pos << std::endl; if ( pos != pstart ) { // there is a DO_construct_name poslab = lowline.find_first_of( ":", pos ); if ( poslab == string::npos ) { return false; } label = line.substr( pos, poslab - pos ); // skip white space // cerr << "pos: " << pos << ", poslab: " << poslab << std::endl; pos = lowline.find_first_not_of( " \t", poslab + 1 ); } //check again, if pos now start of do, otherwise not a correct do statement pstart = lowline.find( "do", pos ); if ( pstart != pos || ( lowline[ pstart + 2 ] != '\0' && lowline[ pstart + 2 ] != ' ' && lowline[ pstart + 2 ] != '\t' ) ) { return false; } pos = lowline.find_first_not_of( " \t", pos + 2 ); // cerr << "pos2: " << pos << std::endl; if ( pos != string::npos && isdigit( lowline[ pos ] ) ) { // there is a stmtlabel poslab = pos; pos = lowline.find_first_not_of( "0123456789", pos ); // cerr << "2pos: " << pos << ", poslab: " << poslab << std::endl; label = line.substr( poslab, pos - poslab ); } // cerr << label << "\n\n"; return true; } /**@brief check if this line is the end of a do loop*/ bool is_loop_end( string & lowline, string & line, string toplabel ) { string label; if ( !( line.size() ) ) { return false; } string::size_type pos = lowline.find_first_not_of( " \t" ); // is it a nonblock DO loop? string::size_type poslab = toplabel.find_first_not_of( "0123456789" ); if ( ( toplabel.size() > 0 ) && ( poslab == string::npos ) ) { // search for nonblock Do loop poslab = pos; pos = lowline.find_first_not_of( "0123456789", pos ); // is there a label in this line? if ( poslab == pos ) { return false; } label = line.substr( poslab, pos - poslab ); // is it the label of the top loop if ( toplabel == label ) { return true; } else { return false; } } else { // search for block Do loop pos = lowline.find( "end", pos ); if ( pos == string::npos || ( pos != lowline.find_first_not_of( " \t0123456789" ) ) ) { return false; } pos = lowline.find( "do", pos + 3 ); if ( pos == string::npos || ( lowline.find( "=", pos ) < lowline.find( "!", pos ) ) ) { return false; } // search for label if ( toplabel.size() ) { // skip white space poslab = lowline.find_first_not_of( " \t", pos + 2 ); pos = lowline.find_first_of( " \t", poslab ); if ( poslab == pos ) { return false; } label = line.substr( poslab, pos - poslab ); // is it the label of the top loop if ( toplabel == label ) { return true; } else { return false; } } else { return true; // end do without label } } } /** @brief check type of OMP statement*/ Line_type check_pragma( OMPragma* pragma ) { int save_pline, save_ppos; Line_type linetype = PRAGMA_UNKNOWN; save_pline = pragma->pline; save_ppos = pragma->ppos; pragma->find_name(); pragma->pline = save_pline; // reset parse position pragma->ppos = save_ppos; if ( pragma->name.find( "do" ) != string::npos ) { linetype = PRAGMA_LOOPSTART; if ( pragma->name == "enddo" ) { linetype = PRAGMA_LOOPEND; } else if ( pragma->name == "paralleldo" ) { linetype = PRAGMA_PARLOOPSTART; } else if ( pragma->name == "endparalleldo" ) { linetype = PRAGMA_PARLOOPEND; } } else { if ( pragma->name == "parallel" ) { linetype = PRAGMA_PARSTART; } else if ( pragma->name == "endparallel" ) { linetype = PRAGMA_PAREND; } } return linetype; } void test_and_insert_ompenddo( ostream & os, Line_type typeOfLastLine, Loop_type & waitforOMPEndDo, const string &infile, int & lineno, int ppos, int pomp, bool a ) { OMPragma* newPragma; int c; string pragma; // OMP end do found? if ( waitforOMPEndDo == TYPE_OMP_LOOP ) { waitforOMPEndDo = TYPE_NO_OMP; if ( typeOfLastLine != PRAGMA_LOOPEND ) { // generate end do pragma = ""; for ( c = 0; c < ppos; c++ ) { pragma += " "; } pragma += "!$omp end do "; newPragma = new OMPragmaF( infile, lineno, ppos + 6, pragma, pomp, a ); process_pragma( newPragma, os ); // lineno++; } } else if ( waitforOMPEndDo == TYPE_OMP_PARLOOP ) { waitforOMPEndDo = TYPE_NO_OMP; if ( typeOfLastLine != PRAGMA_PARLOOPEND ) { // generate end parallel do or complete pragma pragma = ""; for ( c = 0; c < ppos; c++ ) { pragma += " "; } pragma += "!$omp end parallel do "; newPragma = new OMPragmaF( infile, lineno, ppos + 6, pragma, pomp, a ); process_pragma( newPragma, os ); } } } /** @brief Delete comments and strings before the lines are parsed * to avoid finding keywords in comments or strings.*/ void del_strings_and_comments( string & lowline, char & inString ) { // zero out string constants and free form comments for ( unsigned i = 0; i < lowline.size(); ++i ) { if ( inString ) { // inside string if ( lowline[ i ] == inString ) { lowline[ i ] = '@'; ++i; if ( i >= lowline.size() ) { // eol: no double string delimiter -> string ends inString = 0; break; } if ( lowline[ i ] != inString ) { // no double string delimiter -> string ends inString = 0; continue; } } lowline[ i ] = '@'; } else if ( lowline[ i ] == '!' ) { /* -- zero out partial line F90 comments -- */ for (; i < lowline.size(); ++i ) { lowline[ i ] = 'C'; } break; } else if ( lowline[ i ] == '\'' || lowline[ i ] == '\"' ) { inString = lowline[ i ]; lowline[ i ] = '@'; } } } /** @brief Delete comments in directive lines to avoid finding keywords.*/ void del_inline_comments( string & lowline ) { // find first ! int c = lowline.find( "!" ); // zero out string constants and free form comments for ( unsigned i = c + 1; i < lowline.size(); ++i ) { if ( lowline[ i ] == '!' ) { /* -- zero out partial line F90 comments -- */ for (; i < lowline.size(); ++i ) { lowline[ i ] = ' '; } break; } } } /** @brief Calls to the OpenMP API are replaced by pomp2 functions */ void replace_openmp_api_calls( string & lowline, string & line ) { // replace call to omp_*_lock routines vector positions; look_for( lowline, "omp_init_lock", positions ); look_for( lowline, "omp_destroy_lock", positions ); look_for( lowline, "omp_set_lock", positions ); look_for( lowline, "omp_unset_lock", positions ); look_for( lowline, "omp_test_lock", positions ); look_for( lowline, "omp_init_nest_lock", positions ); /*2.0*/ look_for( lowline, "omp_destroy_nest_lock", positions ); /*2.0*/ look_for( lowline, "omp_set_nest_lock", positions ); /*2.0*/ look_for( lowline, "omp_unset_nest_lock", positions ); /*2.0*/ look_for( lowline, "omp_test_nest_lock", positions ); /*2.0*/ sort( positions.begin(), positions.end(), greater() ); for ( unsigned i = 0; i < positions.size(); ++i ) { line.replace( positions[ i ], 3, "POMP2" ); line[ positions[ i ] + 6 ] = toupper( line[ positions[ i ] + 6 ] ); } } struct fo_tolower : public std::unary_function { int operator()( int x ) const { return std::tolower( x ); } }; } /** @brief This function processes fortran files and searches for a place to insert * variables, OpenMP pragmas and the begin and end of do loops which are needed * to ensure correct instrumentation of parallel do constructs.*/ void process_fortran( istream & is, const char* infile, ostream & os, bool addSharedDecl, char* incfile, Language lang ) { string line; int lineno = 0; OMPragma* currPragma = 0; bool needPragma = false; char inString = 0; string::size_type pstart = string::npos; string::size_type lstart = string::npos; bool inHeader = false; // for endloop instrumentation stack loopstack; LoopDescriptionT toploop; int pragma_indent = 0; Line_type typeOfLastLine = UNKNOWN_LINE; Loop_type waitforOMPEndDo = TYPE_NO_OMP; string label = ""; toploop.is_omp = TYPE_NO_OMP; toploop.label = ""; while ( getline( is, line ) ) { // std::cerr << line << '\n'; /* workaround for bogus getline implementations */ if ( line.size() == 1 && line[ 0 ] == '\0' ) { break; } /* remove extra \r from Windows source files */ if ( line.size() && *( line.end() - 1 ) == '\r' ) { line.erase( line.end() - 1 ); } ++lineno; string lowline( line ); transform( line.begin(), line.end(), lowline.begin(), fo_tolower() ); if ( inString ) { if ( !is_comment_line( lowline, line, lang ) ) { del_strings_and_comments( lowline, inString ); if ( instrument_locks() ) { replace_openmp_api_calls( lowline, line ); } } os << line << '\n'; # ifdef EBUG cerr << setw( 3 ) << lineno << ":S+: " << line << '\n'; # endif } else if ( line.size() && ( lowline[ 0 ] == '!' || lowline[ 0 ] == 'c' || lowline[ 0 ] == '*' ) && ( ( lowline[ 1 ] == '$' && ( ( lowline[ 2 ] == 'p' && lowline[ 3 ] == 'o' && lowline[ 4 ] == 'm' && lowline[ 5 ] == 'p' ) || ( lowline[ 2 ] == 'o' && lowline[ 3 ] == 'm' && lowline[ 4 ] == 'p' ) ) ) || ( lowline[ 1 ] == 'p' && lowline[ 2 ] == 'o' && lowline[ 3 ] == 'm' && lowline[ 4 ] == 'p' && lowline[ 5 ] == '$' ) ) && ( !( lowline[ 0 ] == '!' && lowline[ lowline.find_last_not_of( " \t" ) ] == '&' ) ) && ( !( lowline[ 0 ] == '!' && needPragma ) ) ) { /*insert include before first OpenMP pragma*/ if ( inHeader == true ) { inHeader = false; os << " include \'" << incfile << "\'" << std::endl; } int pomp = ( ( lowline[ 1 ] == 'p' ) || ( lowline[ 2 ] == 'p' ) ); /* * fix form omp directive */ if ( lowline[ 5 + pomp ] == ' ' || lowline[ 5 + pomp ] == '\t' || lowline[ 5 + pomp ] == '0' ) { pragma_indent = 0; // new directive if ( currPragma ) { // if necessary process last complete directive typeOfLastLine = check_pragma( currPragma ); test_and_insert_ompenddo( os, typeOfLastLine, waitforOMPEndDo, infile, currPragma->lineno, pragma_indent, pomp, addSharedDecl ); process_pragma( currPragma, os ); currPragma = 0; } del_inline_comments( lowline ); currPragma = new OMPragmaF( infile, lineno, 6 + pomp, lowline, pomp, addSharedDecl ); } else { // continuation directive line if ( currPragma ) { currPragma->lines.push_back( lowline ); } else { cerr << infile << ":" << lineno << ": ERROR: invalid continuation line\n"; cleanup_and_exit(); } } } else if ( line.size() && ( lstart = lowline.find_first_not_of( " \t" ) ) != string::npos && ( ( lstart == ( pstart = lowline.find( "!$omp" ) ) ) || ( lstart == ( pstart = lowline.find( "!$pomp" ) ) ) || ( lstart == ( pstart = lowline.find( "!pomp$" ) ) ) ) ) { int pomp = ( ( lowline[ pstart + 1 ] == 'p' ) || ( lowline[ pstart + 2 ] == 'p' ) ); pragma_indent = pstart; /*insert include before first OpenMP pragma*/ if ( inHeader == true ) { inHeader = false; os << " include \'" << incfile << "\'" << std::endl; } /* * free form omp directive */ if ( needPragma ) { // continuation directive line del_inline_comments( lowline ); currPragma->lines.push_back( lowline ); } else { // new directive if ( currPragma ) { // if necessary process last complete directive typeOfLastLine = check_pragma( currPragma ); test_and_insert_ompenddo( os, typeOfLastLine, waitforOMPEndDo, infile, currPragma->lineno, pragma_indent, pomp, addSharedDecl ); process_pragma( currPragma, os ); currPragma = 0; } del_inline_comments( lowline ); currPragma = new OMPragmaF( infile, lineno, pstart + 5 + pomp, lowline, pomp, addSharedDecl ); } string::size_type com = lowline.find( "!", pstart + 4 + pomp ); if ( com != string::npos ) { --com; } string::size_type amp = lowline.find_last_not_of( " \t", com ); if ( lowline[ amp ] == '&' ) { // last non-white non-comment character == '&' --> continuation needPragma = true; } else { // complete needPragma = false; typeOfLastLine = check_pragma( currPragma ); test_and_insert_ompenddo( os, typeOfLastLine, waitforOMPEndDo, infile, currPragma->lineno, pragma_indent, 0, addSharedDecl ); process_pragma( currPragma, os ); currPragma = 0; } } else { /* * normal line */ bool isComment = is_comment_line( lowline, line, lang ); if ( needPragma && !isComment ) { cerr << infile << ":" << lineno - 1 << ": ERROR: missing continuation line\n"; cleanup_and_exit(); } else if ( currPragma && !isComment ) { // if necessary process last complete directive typeOfLastLine = check_pragma( currPragma ); test_and_insert_ompenddo( os, typeOfLastLine, waitforOMPEndDo, infile, currPragma->lineno, pragma_indent, 0, addSharedDecl ); process_pragma( currPragma, os ); currPragma = 0; } if ( isComment ) { // normal line: comment but not directly after OMP pragma line if ( !currPragma ) { os << line << '\n'; # ifdef EBUG cerr << setw( 3 ) << lineno << ":C : " << line << '\n'; # endif } } else if ( line.size() == 0 || lowline.find_first_not_of( " \t" ) == string::npos ) { // empty line os << line << '\n'; # ifdef EBUG cerr << setw( 3 ) << lineno << ":E : " << line << '\n'; # endif } else { // really normal line del_strings_and_comments( lowline, inString ); if ( is_sub_unit_header( lowline, inHeader ) ) { inHeader = true; } else if ( inHeader == true ) { inHeader = false; os << " include \'" << incfile << "\'" << std::endl; } if ( instrument_locks() ) { replace_openmp_api_calls( lowline, line ); } test_and_insert_ompenddo( os, typeOfLastLine, waitforOMPEndDo, infile, lineno, pragma_indent, 0, addSharedDecl ); //print line, if it is not an include 'omp_lib.h' or use omp_lib, since this is inserted automatically for every file, two includes cause an error //if (line.find("omp_lib")==string::npos && line.find("OMP_LIB")==string::npos){ os << line << '\n'; //} extra_handler( lineno, os ); // search for loop start statement if ( is_loop_start( lowline, line, label ) ) { if ( typeOfLastLine == PRAGMA_LOOPSTART ) { toploop.is_omp = TYPE_OMP_LOOP; } else if ( typeOfLastLine == PRAGMA_PARLOOPSTART ) { toploop.is_omp = TYPE_OMP_PARLOOP; } else { toploop.is_omp = TYPE_NO_OMP; } toploop.label = label; loopstack.push( toploop ); # ifdef EBUG cerr << setw( 3 ) << lineno << ":L" << ( toploop.is_omp ? "O" : " " ) << ": " << line << " (" << label << ")\n"; # endif // search for loop end statement } else if ( ( !loopstack.empty() ) && is_loop_end( lowline, line, toploop.label ) ) { # ifdef EBUG cerr << setw( 3 ) << lineno << ":l" << ( waitforOMPEndDo ? "O" : " " ) << ": " << line << "\n"; # endif waitforOMPEndDo = toploop.is_omp; loopstack.pop(); if ( !loopstack.empty() ) { toploop = loopstack.top(); } else { toploop.is_omp = TYPE_NO_OMP; toploop.label = ""; } // more than one loop ending on same statement (only numerical labels) while ( ( toploop.label.find_first_of( "0123456789" ) != string::npos ) && ( is_loop_end( lowline, line, toploop.label ) ) ) { waitforOMPEndDo = toploop.is_omp; loopstack.pop(); if ( !loopstack.empty() ) { toploop = loopstack.top(); } else { toploop.is_omp = TYPE_NO_OMP; toploop.label = ""; } } } else { // normal line # ifdef EBUG cerr << setw( 3 ) << lineno << ": : " << line << '\n'; # endif } typeOfLastLine = NORMAL_LINE; } } } } eztrace-1.1-7/extlib/opari2/src/opari/PaxHeaders.7332/ompregion.cc0000644000000000000000000000013213064510430021515 xustar0030 mtime=1490194712.985038303 30 atime=1508138876.611936302 30 ctime=1508162367.725906617 eztrace-1.1-7/extlib/opari2/src/opari/ompregion.cc0000644000175000017500000003047013064510430022710 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ /** @internal * * @file ompregion.cc * @status beta * * @maintainer Dirk Schmidl * * @authors Bernd Mohr * Dirk Schmidl * Peter Philippen * @brief Functions to handle parallel regions. Including the creation * and initialization of region handles. */ #include #include "ompregion.h" #include "opari2.h" //#include //using std::setw; //using std::setfill; #include "common.h" #include #include "handler.h" #define MAKE_STR( x ) MAKE_STR_( x ) #define MAKE_STR_( x ) #x OMPRegion::OMPRegion( const string& n, const string& file, int bfl, int bll, bool outr ) : name( n ), file_name( file ), id( ++maxId ), begin_first_line( bfl ), begin_last_line( bll ), end_first_line( 0 ), end_last_line( 0 ), num_sections( 0 ), noWaitAdded( false ), has_untied( false ), has_if( false ), has_num_threads( false ), has_reduction( false ), has_schedule( false ), arg_schedule( "" ), has_collapse( false ), has_ordered( false ), outer_reg( outr ), enclosing_reg( 0 ) { enclosing_reg = outer_ptr; if ( outer_reg ) { outer_ptr = this; } if ( outer_ptr ) { outer_ptr->descrs.insert( id ); } } OMPRegion::OMPRegion( const OMPRegion& parent, const string& n, const string& file, int bfl, int bll, bool outr ) : name( n ), file_name( file ), id( parent.id ), begin_first_line( bfl ), begin_last_line( bll ), end_first_line( 0 ), end_last_line( 0 ), num_sections( 0 ), noWaitAdded( false ), has_untied( false ), has_if( false ), has_num_threads( false ), has_reduction( false ), has_schedule( false ), arg_schedule( "" ), has_collapse( false ), has_ordered( false ), outer_reg( outr ), enclosing_reg( 0 ) { enclosing_reg = outer_ptr; if ( outer_reg ) { outer_ptr = this; } if ( outer_ptr ) { outer_ptr->descrs.insert( id ); } } void OMPRegion::generate_header_c( ostream& os ) { os << "#include \n\n"; if ( copytpd ) { os << "#include \n"; os << "extern int64_t " << MAKE_STR( FORTRAN_ALIGNED ) " " << pomp_tpd << ";\n"; os << "#pragma omp threadprivate(" << pomp_tpd << ")\n"; } } void OMPRegion::generate_lineno_hint( ostream& os ) { if(this != NULL) { os << "# " << begin_first_line << " \"" << file_name<<"\"\n"; } } void OMPRegion::generate_header_cxx( ostream& os ) { os << "#include \n\n"; if ( copytpd ) { os << "#include \n"; os << "extern \"C\" \n{\n"; os << "extern int64_t " << MAKE_STR( FORTRAN_ALIGNED ) " " << pomp_tpd << ";\n"; os << "#pragma omp threadprivate(" << pomp_tpd << ")\n"; os << "}\n"; } } /** @brief Generate a function to allow initialization of all ompregion handles for Fortran. * These functions need to be called from POMP_Init_regions.*/ void OMPRegion::generate_init_handle_calls_f( ostream& os, const char* incfile ) { // I'm not sure, how portable using gettimeofday() is. We rely on a // sufficient resolution of timeval.tv_usec. if ( OMPRegion::init_handle_calls.rdbuf()->in_avail() != 0 ) { //add a Function to initialize the handles at the end of the file os << "\n subroutine POMP2_Init_regions_" << compiletime.tv_sec << compiletime.tv_usec << "_" << OMPRegion::maxId << "()\n" << " include \'" << incfile << "\'\n" << OMPRegion::init_handle_calls.str() << " end\n"; } } /** @brief Generate a function to allow initialization of all ompregion handles for C++. * The function uses extern "C" to avoid complicate name mangling issues.*/ void OMPRegion::generate_init_handle_calls_cxx( ostream& os ) { // I'm not sure, how portable using gettimeofday() is. We rely on a // sufficient resolution of timeval.tv_usec. //int retval = gettimeofday( &compiletime, NULL ); //assert( retval == 0 ); os << "extern \"C\" \n{" << "\nvoid POMP2_Init_regions_" << compiletime.tv_sec << compiletime.tv_usec << "_" << OMPRegion::maxId << "()\n{\n" << OMPRegion::init_handle_calls.str() << "}\n}\n"; } /** @brief Generate a function to allow initialization of all ompregion handles for C.*/ void OMPRegion::generate_init_handle_calls_c( ostream& os ) { // I'm not sure, how portable using gettimeofday() is. We rely on a // sufficient resolution of timeval.tv_usec. //int retval = gettimeofday( &compiletime, NULL ); //assert( retval == 0 ); os << "\nvoid POMP2_Init_regions_" << compiletime.tv_sec << compiletime.tv_usec << "_" << OMPRegion::maxId << "()\n{\n" << OMPRegion::init_handle_calls.str() << "}\n"; } void OMPRegion::finalize_descrs( ostream& os, Language lang ) { if ( lang & L_F77 ) { os << "\n integer*4 pomp2_lib_get_max_threads"; os << "\n logical pomp2_test_lock"; os << "\n integer*4 pomp2_test_nest_lock\n"; } else { os << "\n integer ( kind=4 ) :: pomp2_lib_get_max_threads"; os << "\n logical :: pomp2_test_lock"; os << "\n integer ( kind=4 ) :: pomp2_test_nest_lock\n"; } if ( !common_block.empty() ) { vector::iterator it = common_block.begin(); if ( copytpd ) { if ( lang & L_F77 ) { os << " integer*8 pomp_tpd \n"; } else { os << " integer( kind=8 ) pomp_tpd \n"; } os << " common /pomp_tpd/ pomp_tpd \n"; os << "!$omp threadprivate(/pomp_tpd/)\n"; } if ( lang & L_F77 ) { os << " integer*8 pomp2_old_task, pomp2_new_task \n"; os << " logical pomp_if \n"; os << " integer*4 pomp_num_threads \n"; } else { os << " integer ( kind=8 ) :: pomp2_old_task, pomp2_new_task \n"; os << " logical :: pomp_if \n"; os << " integer ( kind=4 ) :: pomp_num_threads \n"; } os << " common /" << "cb" << compiletime.tv_sec << compiletime.tv_usec << "/ " << region_id_prefix << *it++; for (; it < common_block.end(); it++ ) { if ( lang & L_F77 ) { os << ",\n & " << region_id_prefix << *it; } else { os << ",&\n " << region_id_prefix << *it; } } os << std::endl; } } /** @brief Generates the ctc-string */ string OMPRegion::generate_ctc_string( Language lang ) { stringstream stream1, stream2; string ctc_string; stream1 << "*regionType=" << name << "*" << "sscl=" << file_name << ":" << begin_first_line << ":" << begin_last_line << "*" << "escl=" << file_name << ":" << end_first_line << ":" << end_last_line << "*"; if ( name == "critical" ) { if ( !sub_name.empty() ) { stream1 << "criticalName=" << sub_name << "*"; } } else if ( name == "sections" ) { stream1 << "numSections=" << num_sections << "*"; } else if ( name == "region" ) { stream1 << "userRegionName=" << sub_name << "*"; } if ( has_if ) { stream1 << "hasIf=1*"; } if ( has_num_threads ) { stream1 << "hasNumThreads=1*"; } if ( has_reduction ) { stream1 << "hasReduction=1*"; } if ( has_schedule ) { stream1 << "scheduleType=" << arg_schedule << "*"; } if ( has_collapse ) { stream1 << "hasCollapse=1*"; } if ( has_ordered ) { stream1 << "hasOrdered=1*"; } if ( has_untied ) { stream1 << "hasUntied=1*"; } stream1 << "*\""; ctc_string = stream1.str(); stream2 << "\"" << ctc_string.length() - 2 << ctc_string; ctc_string = stream2.str(); if ( lang & L_FORTRAN ) { if ( lang & L_F77 ) { for ( unsigned int i = 58; i < ctc_string.size() - 1; i += 68 ) { ctc_string.insert( i, "\"//\n &\"" ); } } else { for ( unsigned int i = 58; i < ctc_string.size() - 1; i += 68 ) { ctc_string.insert( i, "\"//&\n \"" ); } } } return ctc_string; } /** @brief Generate region descriptors for Fortran in the inc file.*/ void OMPRegion::generate_descr_f( ostream& os, Language lang ) { if ( lang & L_F77 ) { os << " INTEGER*8 " << region_id_prefix << id << "\n"; } else { os << " INTEGER( KIND=8 ) :: " << region_id_prefix << id << "\n"; } common_block.push_back( id ); init_handle_calls << " call POMP2_Assign_handle( " << region_id_prefix << id << ", "; if ( lang & L_F77 ) { init_handle_calls << "\n &"; } else { init_handle_calls << "&\n "; } init_handle_calls << generate_ctc_string( lang ) << " )\n"; } /** @brief generate region descriptors in C.*/ void OMPRegion::generate_descr_c( ostream& os ) { if ( !descrs.empty() ) { // Workaround for Suse 11.3 & iomanip -> intel 11.1 compiler bug stringstream ids; ids << id; os << "#define POMP2_DLIST_"; for ( int i = ids.str().length(); i < 5; i++ ) { os << '0'; } os << ids.str() << " shared("; // This can be used again, as soon as the corresponding bug with Suse 11.3 and iomanip is fixed by intel. // os << "#define POMP2_DLIST_" << setw( 5 ) << setfill( '0' ) << id // << " shared("; for ( set::const_iterator it = descrs.begin(); it != descrs.end(); ++it ) { if ( it != descrs.begin() ) { os << ","; } os << region_id_prefix << *it; } os << ")\n"; } os << "static POMP2_Region_handle " << region_id_prefix << id << " = NULL;\n"; init_handle_calls << " POMP2_Assign_handle( &" << region_id_prefix << id << ", " << generate_ctc_string( L_C ) << " );\n"; } void OMPRegion::finish() { if ( outer_reg ) { outer_ptr = enclosing_reg; } } timeval compiletime; stringstream OMPRegion::init_handle_calls; vector OMPRegion:: common_block; OMPRegion* OMPRegion:: outer_ptr = 0; int OMPRegion:: maxId = 0; eztrace-1.1-7/extlib/opari2/src/opari/PaxHeaders.7332/ompregion.h0000644000000000000000000000013213064507154021370 xustar0030 mtime=1490194028.511773251 30 atime=1508138876.635936902 30 ctime=1508162367.725906617 eztrace-1.1-7/extlib/opari2/src/opari/ompregion.h0000644000175000017500000001347013064507154022564 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ /** @internal * * @file ompregion.h * @status beta * * @maintainer Dirk Schmidl * * @authors Bernd Mohr * Dirk Schmidl * Peter Philippen * @brief Functions to handle parallel regions. Including the creation * and initialization of region handles. */ #ifndef OMPREGION_H #define OMPREGION_H #include #include using std::ostream; #include using std::set; #include using std::string; #include using std::stringstream; #include using std::vector; #include "opari2.h" /** @brief store and manipulate openmp region related data * and generate output based on the data*/ class OMPRegion { public: /** increase maxId and use this as id */ OMPRegion( const string& n, const string& file, int bfl, int bll, bool outr = false ); /** don't increase maxId, but use parent's id */ OMPRegion( const OMPRegion& parent, const string& n, const string& file, int bfl, int bll, bool outr = false ); /** generate first lines of include file in C*/ static void generate_header_c( ostream& os ); /** generate first lines of include file in C++*/ static void generate_header_cxx( ostream& os ); /** generate call POMP2_Init_region_XXX function to initialize * all handles, in the C case*/ static void generate_init_handle_calls_c( ostream& os ); /** generate call POMP2_Init_region_XXX function to initialize * all handles, in the C++ case*/ static void generate_init_handle_calls_cxx( ostream& os ); /** generate call POMP2_Init_region_XXX function to initialize * all handles, in the Fortran case*/ static void generate_init_handle_calls_f( ostream& os, const char* incfile ); /** generate debugging hint that contains the line number and the filename of the source code */ void generate_lineno_hint( ostream& os ); /** generate a CTC String*/ string generate_ctc_string( Language lang ); /** write all descriptors*/ static void finalize_descrs( ostream& os, Language lang ); /** generate descriptor list for C/C++ files*/ void generate_descr_c( ostream& os ); /** generate descriptor list for Fortran files*/ void generate_descr_f( ostream& os, Language lang ); /** finish parsing this region and return to outer one*/ void finish(); /** region name*/ string name; /** file name*/ string file_name; /** name of named critical sections*/ string sub_name; /** pragma id */ int id; /** first line of the beginning statement*/ int begin_first_line; /** last line of the beginning statement*/ int begin_last_line; /** first line of the end statement*/ int end_first_line; /** last line of the end statement*/ int end_last_line; /** nummber of sections, if it is a sections pragma*/ int num_sections; /** is a nowait added?*/ bool noWaitAdded; /** has untied clause */ bool has_untied; /** has if clause */ bool has_if; /** has num_threads clause */ bool has_num_threads; /** has reduction clause */ bool has_reduction; /** has schedule clause */ bool has_schedule; /** argument of schedule clause */ string arg_schedule; /** has collapse clause */ bool has_collapse; /** has ordered clause */ bool has_ordered; /**is this an outer region?*/ bool outer_reg; /** set of relevant region descriptors*/ set descrs; /** enclosing region*/ OMPRegion* enclosing_reg; /** time value*/ static timeval time; /** calls to all functions to initialize the handles, * these calls are added to a file unique init function * at the end*/ static stringstream init_handle_calls; /** in Fotran a common block is inserted in the output file * with all region ids, the values are collected here and * printed at the end*/ static vector common_block; /** pointer to outer region*/ static OMPRegion* outer_ptr; /** max ID*/ static int maxId; }; #endif eztrace-1.1-7/extlib/opari2/src/opari/PaxHeaders.7332/ompragma.cc0000644000000000000000000000013212617055645021340 xustar0030 mtime=1446796197.914458076 30 atime=1508138876.579935504 30 ctime=1508162367.721906267 eztrace-1.1-7/extlib/opari2/src/opari/ompragma.cc0000644000175000017500000001600112617055645022525 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ /** @internal * * @file ompragma.cc * @status alpha * * @maintainer Dirk Schmidl * * @authors Bernd Mohr * Dirk Schmidl * Peter Philippen * * @brief Functions needed in fortran and C/C++ to process OpenMP * pragmas.*/ #include #include "ompragma.h" #include /** @brief Find the pragma name.*/ void OMPragma::find_name() { string w; if ( lines.empty() ) { // automatically generated END pragma for C/C++ name = "$END$"; return; } name = find_next_word(); if ( name == "parallel" || name == "endparallel" ) { w = find_next_word(); if ( w == "do" || w == "sections" || w == "for" || w == "workshare" /*2.0*/ ) { name += w; } } else if ( name == "end" ) { w = find_next_word(); name += w; if ( w == "parallel" ) { w = find_next_word(); if ( w == "do" || w == "sections" || w == "for" || w == "workshare" /*2.0*/ ) { name += w; } } } else if ( name == "no" || name == "inst" ) /*INST*/ { name += find_next_word(); /*INST*/ } } /** @brief Removes all unnecessary commas. */ void OMPragma::remove_commas() { int bracket_counter = 0; for ( unsigned int line = 0; line < lines.size(); line++ ) { for ( unsigned int c = 0; c < lines[ line ].length(); c++ ) { if ( lines[ line ][ c ] == '(' ) { bracket_counter++; } if ( lines[ line ][ c ] == ')' ) { bracket_counter--; } if ( bracket_counter == 0 && lines[ line ][ c ] == ',' ) { lines[ line ][ c ] = ' '; } } } } /* @brief True if a nowait is present*/ bool OMPragma::is_nowait() { unsigned dummy = 0; string::size_type dummy2 = 0; return find_word( "nowait", dummy, dummy2 ); } /* @brief True if a copyprivate is present*/ bool OMPragma::has_copypriv() { unsigned dummy = 0; string::size_type dummy2 = 0; return find_word( "copyprivate", dummy, dummy2 ); } string OMPragma::find_sub_name() { string cname = find_next_word(); if ( cname == "(" ) { return find_next_word(); } return ""; } /** @brief Detects whether a num_threads clause is present. The * num_threads clause is deleted in the pragma string and * stored in the arg_num_threads member variable.*/ bool OMPragma::find_numthreads() { unsigned line = 0; string::size_type pos = 0; if ( find_word( "num_threads", line, pos ) ) { arg_num_threads = find_arguments( line, pos, true, "num_threads" ); return true; } return false; } /** @brief Detects whether an if clause is present. The if * clause is deleted in the pragma string and stored in the * arg_if member variable.*/ bool OMPragma::find_if() { unsigned line = 0; string::size_type pos = 0; if ( find_word( "if", line, pos ) ) { arg_if = find_arguments( line, pos, true, "if" ); return true; } return false; } /** @brief Detects whether an if clause is present. The reduction * clause is deleted in the pragma string and stored in the * arg_reduction member variable.*/ bool OMPragma::find_reduction() { unsigned line = 0; string::size_type pos = 0; if ( find_word( "reduction", line, pos ) ) { arg_reduction = find_arguments( line, pos, false, "reduction" ); return true; } return false; } /** @brief Detects whether an schedule clause is present. The * schedule clause is deleted in the pragma string and * stored in the arg_schedule member variable.*/ bool OMPragma::find_schedule( string* reg_arg_schedule ) { unsigned line = 0; string::size_type pos = 0; if ( find_word( "schedule", line, pos ) ) { arg_schedule = find_arguments( line, pos, false, "schedule" ); *reg_arg_schedule = arg_schedule; return true; } return false; } /** @brief Detects whether an ordered clause is present.*/ bool OMPragma::find_ordered() { unsigned line = 0; string::size_type pos = 0; if ( find_word( "ordered", line, pos ) ) { return true; } return false; } /** @brief Detects whether a collapse clause is present. The argument * is stored in the arg_collapse member variable.*/ bool OMPragma::find_collapse() { unsigned line = 0; string::size_type pos = 0; if ( find_word( "collapse", line, pos ) ) { arg_collapse = find_arguments( line, pos, false, "collapse" ); return true; } return false; } /* @brief True if an untied is present*/ bool OMPragma::find_untied( bool keep_untied ) { unsigned line = 0; string::size_type pos = 0; if ( find_word( "untied", line, pos ) ) { if ( !keep_untied ) { lines[ line ].replace( pos, 6, " " ); } return true; } return false; } /* @brief Is the default data sharing changed by default(none) or default(private) clause?*/ bool OMPragma::changed_default() { unsigned line = 0; string::size_type pos = 0; if ( find_word( "default(none)", line, pos ) || find_word( "default(private)", line, pos ) || find_word( "default (none)", line, pos ) || find_word( "default (private)", line, pos ) ) { return true; } return false; } eztrace-1.1-7/extlib/opari2/src/opari/PaxHeaders.7332/Makefile.inc.am0000644000000000000000000000013212617055645022032 xustar0030 mtime=1446796197.914458076 30 atime=1508162206.668869794 30 ctime=1508162367.701904521 eztrace-1.1-7/extlib/opari2/src/opari/Makefile.inc.am0000644000175000017500000000230512617055645023221 0ustar00trahaytrahay00000000000000## -*- mode: makefile -*- bin_PROGRAMS += opari2 opari2-config opari2_SOURCES = \ $(SRC_ROOT)src/opari/common.h \ $(SRC_ROOT)src/opari/handler.cc \ $(SRC_ROOT)src/opari/handler.h \ $(SRC_ROOT)src/opari/ompragma.cc \ $(SRC_ROOT)src/opari/ompragma.h \ $(SRC_ROOT)src/opari/ompragma_c.cc \ $(SRC_ROOT)src/opari/ompragma_f.cc \ $(SRC_ROOT)src/opari/ompregion.cc \ $(SRC_ROOT)src/opari/ompregion.h \ $(SRC_ROOT)src/opari/opari2.cc \ $(SRC_ROOT)src/opari/opari2.h \ $(SRC_ROOT)src/opari/process_c.cc \ $(SRC_ROOT)src/opari/process_f.cc \ $(SRC_ROOT)src/opari/process_omp.cc \ opari2_usage.h opari2_CPPFLAGS = $(AM_CPPFLAGS) -DPACKAGE_VERSION="\"@PACKAGE_VERSION@\"" nobase_include_HEADERS += $(PUBLIC_INC_SRC)pomp2_lib.h opari2_config_SOURCES = $(SRC_ROOT)src/opari/opari2_config.cc \ $(SRC_ROOT)src/opari/opari2_config.h BUILT_SOURCES += create-config-tool-headers opari2_usage.h opari2_usage.h: $(INC_ROOT)doc/doxygen-user/opari2_usage.dox.in $(AWK) '{print "\"" $$0 "\\n\""}' $(INC_ROOT)doc/doxygen-user/opari2_usage.dox.in > opari2_usage.h CLEANFILES += opari2_usage.h eztrace-1.1-7/extlib/opari2/src/opari/PaxHeaders.7332/opari2_config.h0000644000000000000000000000013212617055645022120 xustar0030 mtime=1446796197.914458076 30 atime=1508138876.883943096 30 ctime=1508162367.733907316 eztrace-1.1-7/extlib/opari2/src/opari/opari2_config.h0000644000175000017500000000516412617055645023315 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /** * * @maintainer Dirk Schmidl * @authors Daniel Lorenz * */ #include #include class OPARI_Config { /* ****************************************** Implemented public methods */ public: /** Constructor */ OPARI_Config(); /** Destructor */ virtual ~ OPARI_Config(); /** Reads the configuration data from a file. To handle the read data you need to implement the AddLibDir() AddIncDir() AddLib() and SetCompilerFlags() methods. @param arg0 The first argument to the toll call. Should contain the tool name. Needed to find the executable path. @returns SCOREP_SUCCESS if the file was successfully parsed. */ void ReadConfigFile( std::string arg0 ); /* **************************************** Protected implmented methods */ private: /** This function gives a (key, value) pair found in a configuration file and not processed by one of the former functions. @param key The key @param value The value */ virtual void set_value( std::string key, std::string value ); /** Extracts parameter from configuration file It expects lines of the format key=value. Furthermore it truncates line at the scrpit comment character '#'. @param line input line from the config file @returns SCOREP_SUCCESS if the line was successfully parsed. Else it returns an error code. */ void read_parameter( std::string line ); /* *************************************************** Public members */ public: /**nm command*/ std::string nm; /** awk command*/ std::string awk; /** egrep command*/ std::string egrep; /** version information*/ std::string version; /** pomp2 api version information*/ std::string pomp2_api_version; /** awk script to use */ std::string script; /** include path for installed headers */ std::string cflags; }; eztrace-1.1-7/extlib/opari2/src/opari/PaxHeaders.7332/opari2_config.cc0000644000000000000000000000013212617055645022256 xustar0030 mtime=1446796197.914458076 30 atime=1508138876.587935704 30 ctime=1508162367.733907316 eztrace-1.1-7/extlib/opari2/src/opari/opari2_config.cc0000644000175000017500000002221112617055645023443 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /** @internal * * @file opari2_config.cc * @status alpha * * @maintainer Dirk Schmidl * @autors Daniel Lorenz * * @brief Implementation of the OPARI2 config tool. * */ #include #include #include #include #include #include "opari2_config.h" #define ACTION_NM 1 #define ACTION_AWK 2 #define ACTION_SCRIPT 3 #define ACTION_EGREP 4 #define ACTION_VERSION 5 #define ACTION_NM2AWK 6 #define ACTION_CFLAGS 7 #define ACTION_POMP2_API_VERSION 8 void opari2_print_help( char** argv ) { std::cout << argv[ 0 ] << "\n\n" << "Usage: opari2-config [OPTION] ... \n\n" << "with following commands:\n" << " --nm Prints the nm command.\n" << " --awk-cmd Prints the awk command.\n" << " --awk-script Prints the awk script.\n" << " --egrep Prints the egrep command.\n" << " --create-pomp2-regions Prints the whole command necessary\n" << " for creating the initialization file.\n" << " --cflags Prints compiler options to include installed headers.\n" << " --version Prints the opari2 version number.\n" << " --pomp2-api-version Prints the pomp2 API version that instrumented files\n" << " conform too.\n\n" << " --opari2-revision prints the revision number of the OPARI2 package\n" << " --common-revision prints the revision number of the common package\n\n" << "and following options:\n" << " --help Prints this help text.\n" << " --config= Reads in a configuration from the given file.\n\n" << "Report bugs to ." << std::endl; return; } int main( int argc, char** argv ) { int i; int action = 0; char* config_file = NULL; int n_obj_files = 0; char** obj_files = NULL; OPARI_Config app; /* parsing the command line */ for ( i = 1; i < argc; i++ ) { if ( strcmp( argv[ i ], "--help" ) == 0 || strcmp( argv[ i ], "-h" ) == 0 ) { opari2_print_help( argv ); return EXIT_SUCCESS; } else if ( strcmp( argv[ i ], "--nm" ) == 0 ) { action = ACTION_NM; } else if ( strcmp( argv[ i ], "--awk-cmd" ) == 0 ) { action = ACTION_AWK; } else if ( strcmp( argv[ i ], "--awk-script" ) == 0 ) { action = ACTION_SCRIPT; } else if ( strcmp( argv[ i ], "--egrep" ) == 0 ) { action = ACTION_EGREP; } else if ( strcmp( argv[ i ], "--cflags" ) == 0 ) { action = ACTION_CFLAGS; } else if ( strcmp( argv[ i ], "--create-pomp2-regions" ) == 0 ) { int j = 0; n_obj_files = argc - i - 1; if ( n_obj_files > 0 ) { obj_files = new char*[ n_obj_files ]; while ( ++i < argc ) { obj_files[ j++ ] = argv[ i ]; } action = ACTION_NM2AWK; } else { std::cerr << "\nERROR: Object files missing. Abort.\n" << std::endl; return EXIT_FAILURE; } } else if ( strcmp( argv[ i ], "--version" ) == 0 ) { action = ACTION_VERSION; } else if ( strcmp( argv[ i ], "--pomp2-api-version" ) == 0 ) { action = ACTION_POMP2_API_VERSION; } else if ( strcmp( argv[ i ], "--opari2-revision" ) == 0 ) { std::cout << SCOREP_COMPONENT_REVISION << std::endl; exit( EXIT_SUCCESS ); } else if ( strcmp( argv[ i ], "--common-revision" ) == 0 ) { std::cout << SCOREP_COMMON_REVISION << std::endl; exit( EXIT_SUCCESS ); } else if ( strncmp( argv[ i ], "--config", 8 ) == 0 ) { // Expect the config file name after an equal sign if ( ( argv[ i ][ 8 ] == '=' ) && ( argv[ i ][ 9 ] != '\0' ) ) { config_file = &argv[ i ][ 9 ]; } else { std::cerr << "\nConfig file name missing. Abort.\n" << std::endl; return EXIT_FAILURE; } } else { std::cerr << "\nUnknown option " << argv[ i ] << ". Abort.\n" << std::endl; std::cerr << "Print " << argv[ 0 ] << " --help to get a list of options" << std::endl; return EXIT_FAILURE; } } /* read data in case a config file was specified */ if ( config_file != NULL ) { app.ReadConfigFile( config_file ); } switch ( action ) { case ACTION_NM: std::cout << app.nm; std::cout.flush(); break; case ACTION_AWK: std::cout << app.awk; std::cout.flush(); break; case ACTION_SCRIPT: std::cout << app.script; std::cout.flush(); break; case ACTION_EGREP: std::cout << app.egrep; std::cout.flush(); break; case ACTION_CFLAGS: std::cout << app.cflags; std::cout.flush(); break; case ACTION_NM2AWK: std::cout << app.nm << " "; for ( int i = 0; i < n_obj_files; i++ ) { std::cout << obj_files[ i ] << " "; } std::cout << " | " << app.egrep << " -i POMP2_Init_regions | " << app.egrep << " \" [TD] \" | " << app.awk << " -f " << app.script; break; case ACTION_VERSION: std::cout << app.version << "\n"; std::cout.flush(); break; case ACTION_POMP2_API_VERSION: std::cout << app.pomp2_api_version << "\n"; std::cout.flush(); break; default: opari2_print_help( argv ); } return EXIT_SUCCESS; } OPARI_Config::OPARI_Config() { nm = NM; awk = AWK; egrep = EGREP; version = VERSION; pomp2_api_version = POMP2_API_VERSION; script = SCRIPT; cflags = CFLAGS; } OPARI_Config::~OPARI_Config() { } void OPARI_Config::ReadConfigFile( std::string config_file ) { std::ifstream inFile; inFile.open( config_file.c_str(), std::ios_base::in ); if ( !( inFile.good() ) ) { std::cerr << "Can not open config file: " << config_file << std::endl; abort(); } while ( inFile.good() ) { char line[ 512 ] = { "" }; inFile.getline( line, 512 ); read_parameter( line ); } } void OPARI_Config::set_value( std::string key, std::string value ) { if ( key == "EGREP" ) { egrep = value; } else if ( key == "VERSION" ) { version = value; } else if ( key == "POMP2_API_VERSION" ) { pomp2_api_version = value; } else if ( key == "NM" ) { nm = value; } else if ( key == "AWK" ) { awk = value; } else if ( key == "OPARI_SCRIPT" ) { script = value; } else if ( key == "CFLAGS" ) { cflags = value; } /* Ignore unknown entries */ } void OPARI_Config::read_parameter( std::string line ) { /* check for comments */ size_t pos = line.find( "#" ); if ( pos == 0 ) { return; // Whole line commented out } if ( pos != std::string::npos ) { // Truncate line at comment line = line.substr( pos, line.length() - pos - 1 ); } // Ignore empty lines if ( line == "" ) { return; } /* separate value and key */ pos = line.find( "=" ); if ( pos == std::string::npos ) { std::cerr << "Error while parsing config file: Missing separator '='." << std::endl; abort(); } std::string key = line.substr( 0, pos ); std::string value = line.substr( pos + 2, line.length() - pos - 3 ); /* process parameter */ set_value( key, value ); } eztrace-1.1-7/extlib/opari2/src/opari/PaxHeaders.7332/opari2.h0000644000000000000000000000013212617055645020573 xustar0030 mtime=1446796197.914458076 30 atime=1508138876.823941597 30 ctime=1508162367.729906966 eztrace-1.1-7/extlib/opari2/src/opari/opari2.h0000644000175000017500000000437612617055645021774 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ #ifndef OPARI_H #define OPARI_H #include using std::istream; using std::ostream; #include "ompragma.h" extern string pomp_tpd; extern bool copytpd; extern bool task_abort; extern bool task_warn; extern bool task_remove; extern bool untied_abort; extern bool untied_keep; extern bool untied_no_warn; enum Language { L_NA = 0x00, L_F77 = 0x01, L_F90 = 0x02, L_FORTRAN = 0x03, L_C = 0x04, L_CXX = 0x08, L_C_OR_CXX = 0x0C }; void process_fortran( istream& is, const char* infile, ostream& os, bool addSharedDecl, char* incfile, Language lang ); void process_c_or_cxx( istream& is, const char* infile, ostream& os, bool addSharedDecl ); void process_pragma( OMPragma* p, ostream& os, bool* hasEnd = 0, bool* isFor = 0 ); void cleanup_and_exit(); #endif eztrace-1.1-7/extlib/opari2/src/opari/PaxHeaders.7332/process_c.cc0000644000000000000000000000013212617055645021515 xustar0030 mtime=1446796197.914458076 30 atime=1508138876.587935704 30 ctime=1508162367.729906966 eztrace-1.1-7/extlib/opari2/src/opari/process_c.cc0000644000175000017500000004447312617055645022720 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ /** @internal * * @file process_c.cc * @status alpha * * @maintainer Dirk Schmidl * * @authors Bernd Mohr * Dirk Schmidl * Peter Philippen * @brief This file contains all functions to process C or C++ files.*/ #include #include using std::cerr; #include using std::stack; #include using std::vector; #include using std::map; #include using std::getline; using std::string; #include using std::isalnum; using std::isalpha; #include "opari2.h" #include "handler.h" namespace { string find_next_word( vector& preStmt, unsigned size, unsigned& pline, string::size_type& ppos ) { while ( pline < size ) { string::size_type wbeg = preStmt[ pline ].find_first_not_of( " \t", ppos ); if ( preStmt[ pline ][ wbeg ] == '\\' || wbeg == string::npos ) { ++pline; if ( pline < size ) { ppos = 0; } else { return ""; } } else { ppos = preStmt[ pline ].find_first_of( " \t()", wbeg ); return preStmt[ pline ].substr( wbeg, ppos == string::npos ? ppos : ppos - wbeg ); } } return ""; } /** @brief preprocessor lines are passed to this function and checked, whether they are * OpenMP pragmas.*/ bool process_preStmt( vector& preStmt, ostream& os, const char* infile, int lineno, string::size_type ppos, bool* e, bool* f, bool asd ) { unsigned s = preStmt.size(); bool inComment = false; vector origStmt; // "remove" comments for ( unsigned i = 0; i < s; ++i ) { string::size_type pos = 0; string& line = preStmt[ i ]; string origLine( line ); origStmt.push_back( origLine ); while ( pos < line.size() ) { if ( inComment ) { // look for comment end if ( line[ pos ] == '*' && line[ pos + 1 ] == '/' ) { line[ pos++ ] = ' '; inComment = false; } line[ pos++ ] = ' '; } else if ( line[ pos ] == '/' ) { pos++; if ( line[ pos ] == '/' ) { // c++ comments line[ pos - 1 ] = ' '; line[ pos++ ] = ' '; while ( pos < line.size() ) { line[ pos++ ] = ' '; } } else if ( line[ pos ] == '*' ) { // c comment start line[ pos - 1 ] = ' '; line[ pos++ ] = ' '; inComment = true; } } else { pos++; } } } unsigned pline = 0; string first = find_next_word( preStmt, s, pline, ppos ); if ( first == "pragma" ) { // OpenMP pragma? string word = find_next_word( preStmt, s, pline, ppos ); if ( ( word == "omp" ) || ( word == "pomp" ) ) { // check if the pragma contains a legal directive unsigned pline2 = pline; string::size_type ppos2 = ppos; string directive = find_next_word( preStmt, s, pline2, ppos2 ); if ( ( directive == "inst" ) || ( directive == "instrument" ) || ( directive == "parallel" ) || ( directive == "threadprivate" ) || ( directive == "for" ) || ( directive == "flush" ) || ( directive == "barrier" ) || ( directive == "ordered" ) || ( directive == "sections" ) || ( directive == "section" ) || ( directive == "task" ) || ( directive == "taskwait" ) || ( directive == "master" ) || ( directive == "critical" ) || ( directive == "atomic" ) || ( directive == "single" ) || ( directive == "noinstrument" ) || ( directive == "noinst" ) ) { OMPragmaC* p = new OMPragmaC( infile, lineno, pline, ppos, preStmt, asd ); process_pragma( p, os, e, f ); return true; } } } else if ( first == "include" ) { // include -> remove it string word = find_next_word( preStmt, s, pline, ppos ); if ( ( word == "\"omp.h\"" ) || ( word == "" ) ) { s = 0; } } for ( unsigned i = 0; i < s; ++i ) { os << origStmt[ i ] << "\n"; } preStmt.clear(); origStmt.clear(); return false; } } /** @brief Process C or C++ files and search for OpenMP pragmas and the related code blocks. * comments and strings are omited to avoid finding keywords in comments.*/ void process_c_or_cxx( istream& is, const char* infile, ostream& os, bool addSharedDecl ) { string line; bool inComment = false; bool inString = false; bool preContLine = false; bool requiresEnd = true; bool isFor = false; int lineno = 1; string::size_type pos = 0; int level = 0; int numSemi = 0; string::size_type lstart = string::npos; vector preStmt; vector endStmt; stack nextEnd; map wrapper; wrapper[ "omp_init_lock" ] = "POMP2_Init_lock"; wrapper[ "omp_destroy_lock" ] = "POMP2_Destroy_lock"; wrapper[ "omp_set_lock" ] = "POMP2_Set_lock"; wrapper[ "omp_unset_lock" ] = "POMP2_Unset_lock"; wrapper[ "omp_test_lock" ] = "POMP2_Test_lock"; wrapper[ "omp_init_nest_lock" ] = "POMP2_Init_nest_lock"; wrapper[ "omp_destroy_nest_lock" ] = "POMP2_Destroy_nest_lock"; wrapper[ "omp_set_nest_lock" ] = "POMP2_Set_nest_lock"; wrapper[ "omp_unset_nest_lock" ] = "POMP2_Unset_nest_lock"; wrapper[ "omp_test_nest_lock" ] = "POMP2_Test_nest_lock"; nextEnd.push( -1 ); while ( getline( is, line ) ) { /* workaround for bogus getline implementations */ if ( line.size() == 1 && line[ 0 ] == '\0' ) { break; } /* remove extra \r from Windows source files */ if ( line.size() && *( line.end() - 1 ) == '\r' ) { line.erase( line.end() - 1 ); } if ( preContLine ) { /* * preprocessor directive continuation */ preStmt.push_back( line ); if ( line[ line.size() - 1 ] != '\\' ) { preContLine = false; if ( process_preStmt( preStmt, os, infile, lineno - preStmt.size() + 1, lstart + 1, &requiresEnd, &isFor, addSharedDecl ) ) { if ( requiresEnd ) { nextEnd.push( level ); numSemi = isFor ? 3 : 1; } else { numSemi = 0; } } } } else if ( !inComment && ( ( lstart = line.find_first_not_of( " \t" ) ) != string::npos ) && line[ lstart ] == '#' ) { /* * preprocessor directive */ preStmt.push_back( line ); if ( line[ line.size() - 1 ] == '\\' ) { preContLine = true; } else { if ( process_preStmt( preStmt, os, infile, lineno, lstart + 1, &requiresEnd, &isFor, addSharedDecl ) ) { if ( requiresEnd ) { nextEnd.push( level ); numSemi = isFor ? 3 : 1; } else { numSemi = 0; } } } } else { /* * regular line */ bool newlinePrinted = false; while ( pos < line.size() ) { newlinePrinted = false; if ( inComment ) { // look for comment end if ( line[ pos ] == '*' && line[ pos + 1 ] == '/' ) { os << "*/"; inComment = false; pos += 2; } else { os << line[ pos++ ]; } } else if ( line[ pos ] == '/' ) { pos++; if ( line[ pos ] == '/' ) { // c++ comments pos++; os << "//"; while ( pos < line.size() ) { os << line[ pos++ ]; } } else if ( line[ pos ] == '*' ) { // c comment start pos++; os << "/*"; inComment = true; } else { os << '/'; } } else if ( inString || line[ pos ] == '\"' ) { // character string constant if ( inString ) { inString = false; pos--; // to make sure current character gets reprocessed } else { os << "\""; } do { pos++; if ( line[ pos ] == '\\' ) { os << '\\'; pos++; if ( line[ pos ] == '\0' ) { inString = true; break; } else if ( line[ pos ] == '\"' ) { os << '\"'; pos++; } else if ( line[ pos ] == '\\' ) { os << '\\'; pos++; if ( line[ pos ] == '\0' ) { inString = true; break; } } } os << line[ pos ]; } while ( line[ pos ] != '\"' ); pos++; } else if ( line[ pos ] == '\'' ) { // character constant os << "\'"; do { pos++; if ( line[ pos ] == '\\' ) { os << '\\'; pos++; if ( line[ pos ] == '\'' ) { os << '\''; pos++; } } os << line[ pos ]; } while ( line[ pos ] != '\'' ); pos++; } else if ( isalpha( line[ pos ] ) || line[ pos ] == '_' ) { // identifier string::size_type startpos = pos; while ( pos < line.size() && ( isalnum( line[ pos ] ) || line[ pos ] == '_' ) ) { pos++; } string ident( line, startpos, pos - startpos ); map::iterator w = wrapper.find( ident ); if ( w != wrapper.end() && instrument_locks() ) { os << w->second; } else { os << ident; } if ( ident == "for" && numSemi == 1 ) { numSemi = 3; } } else if ( line[ pos ] == '{' ) { // block open os << line[ pos++ ]; level++; numSemi = 0; } else if ( line[ pos ] == '}' ) { // block close os << line[ pos++ ]; level--; if ( nextEnd.top() == level ) { int moreChars = ( pos < line.size() ); os << '\n'; newlinePrinted = true; // while because block can actually close more than one pragma while ( nextEnd.top() == level ) { // hack: use pline (arg3) for correction value for line info process_pragma( new OMPragmaC( infile, lineno + 1 - moreChars, 1 - moreChars, 0, endStmt, addSharedDecl ), os ); nextEnd.pop(); } if ( moreChars ) { for ( unsigned i = 0; i < pos; ++i ) { os << ' '; } } } } else if ( line[ pos ] == ';' ) { // statement end os << line[ pos++ ]; numSemi--; if ( numSemi == 0 ) { int moreChars = ( pos < line.size() ); os << '\n'; newlinePrinted = true; // hack: use pline (arg3) for correction value for line info process_pragma( new OMPragmaC( infile, lineno + 1 - moreChars, 1 - moreChars, 0, endStmt, addSharedDecl ), os ); nextEnd.pop(); // check whether statement actually closes more pragma while ( nextEnd.top() == level ) { // hack: use pline (arg3) for correction value for line info process_pragma( new OMPragmaC( infile, lineno + 1 - moreChars, 1 - moreChars, 0, endStmt, addSharedDecl ), os ); nextEnd.pop(); } if ( moreChars ) { for ( unsigned i = 0; i < pos; ++i ) { os << ' '; } } } } else { os << line[ pos++ ]; } } if ( !newlinePrinted ) { os << '\n'; } } ++lineno; pos = 0; } // check end position stack if ( nextEnd.top() != -1 ) { cerr << "ERROR: could not determine end of OpenMP construct (braces mismatch?)\n"; print_regstack_top(); cleanup_and_exit(); } } eztrace-1.1-7/extlib/opari2/src/opari/PaxHeaders.7332/handler.h0000644000000000000000000000013212617055645021014 xustar0030 mtime=1446796197.914458076 30 atime=1508138876.875942896 30 ctime=1508162367.721906267 eztrace-1.1-7/extlib/opari2/src/opari/handler.h0000644000175000017500000000452212617055645022206 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ /** @internal * * @file handler.h * @status beta * * @maintainer Dirk Schmidl * * @authors Bernd Mohr * Dirk Schmidl * Peter Philippen * @brief Functions to handle parallel regions. Including the creation * and initialization of region handles. */ #ifndef HANDLER_H #define HANDLER_H #include #include "opari2.h" #include "ompragma.h" typedef void ( *phandler_t )( OMPragma*, ostream& ); void init_handler( const char* infile, Language l, bool genLineStmts ); void finalize_handler( const char* incfile, char* incfileNoPath, ostream& os ); phandler_t find_handler( const string& pragma ); void extra_handler( int lineno, ostream& os ); bool set_disabled( const string& constructs ); bool instrument_locks(); bool genLineStmts(); void print_regstack_top(); extern bool do_transform; extern timeval compiletime; #endif eztrace-1.1-7/extlib/opari2/src/opari/PaxHeaders.7332/ompragma_f.cc0000644000000000000000000000013212617055645021645 xustar0030 mtime=1446796197.914458076 30 atime=1508138876.627936702 30 ctime=1508162367.725906617 eztrace-1.1-7/extlib/opari2/src/opari/ompragma_f.cc0000644000175000017500000003260112617055645023036 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ /** @internal * * @file ompragma_f.cc * @status beta * * @maintainer Dirk Schmidl * * @authors Bernd Mohr * Dirk Schmidl * Peter Philippen * * @brief This file contains Fortran specific functions needed * to handle OpenMP pragmas.*/ #include #include "ompragma.h" #include #include "opari2.h" /** @brief Find the next word in a line.*/ string OMPragmaF::find_next_word() { while ( pline < lines.size() ) { string::size_type wbeg = lines[ pline ].find_first_not_of( " \t", ppos ); if ( lines[ pline ][ wbeg ] == '&' || wbeg == string::npos ) { ++pline; if ( pline < lines.size() ) { ppos = lines[ pline ].find( sentinel ) + slen; if ( lines[ pline ][ ppos ] == '&' ) { ++ppos; } } else { return ""; } } else if ( lines[ pline ][ wbeg ] == '(' || lines[ pline ][ wbeg ] == ')' ) { ppos = wbeg + 1; return string( 1, lines[ pline ][ wbeg ] ); } else { ppos = lines[ pline ].find_first_of( " \t()", wbeg ); return lines[ pline ].substr( wbeg, ppos == string::npos ? ppos : ppos - wbeg ); } } return ""; } /** @brief True if word is in line.*/ bool OMPragmaF::find_word( const string word, unsigned& line, string::size_type& pos ) { for ( unsigned i = line; i < lines.size(); ++i ) { string::size_type s = ( pos == 0 ) ? lines[ i ].find( sentinel ) + slen : pos; string::size_type w = lines[ i ].find( word, s ); string::size_type c = lines[ i ].find( '!', s ); // if word found and found before comment while ( w != string::npos && ( c == string::npos || ( c != string::npos && w < c ) ) ) { char b = lines[ i ][ w - 1 ]; char a; if ( lines[ i ].length() > w + word.length() ) { a = lines[ i ][ w + word.length() ]; } else { a = ' '; } if ( ( b == ' ' || b == '\t' || b == '!' || b == ')' || b == ',' ) && ( a == ' ' || a == '\t' || a == '!' || a == '(' || a == ',' || a == '&' ) ) { line = i; pos = w; return true; } else { w++; if ( w != string::npos ) { w = lines[ i ].find( word, w ); } } } pos = 0; } return false; } /** @brief Returns the arguments of a clause. */ string OMPragmaF::find_arguments( unsigned& line, string::size_type& pos, bool remove, string clause ) { string arguments; bool contComm = false; // Continuation line or comment found int bracket_counter = 0; for ( unsigned int i = 0; i < clause.length(); i++ ) { if ( remove ) { lines[ line ][ pos ] = ' '; } pos++; } pos = lines[ line ].find_first_not_of( " \t", pos ); if ( lines[ line ][ pos ] == '(' ) { bracket_counter++; if ( remove ) { lines[ line ][ pos ] = ' '; } pos++; } else { std::cerr << filename << ":" << lineno << ": ERROR: Expecting argument for " << clause << " clause\n" << std::endl; cleanup_and_exit(); } while ( bracket_counter > 0 ) { if ( lines[ line ][ pos ] == '(' ) { bracket_counter++; } if ( lines[ line ][ pos ] == '&' ) { pos = lines[ line ].length(); } else { if ( lines[ line ][ pos ] == '&' || lines[ line ][ pos ] == '!' ) { contComm = true; } else { arguments.append( 1, lines[ line ][ pos ] ); if ( remove ) { lines[ line ][ pos ] = ' '; } pos++; } } if ( pos >= lines[ line ].length() || contComm ) { line++; contComm = false; if ( line >= lines.size() ) { std::cerr << filename << ":" << lineno << ": ERROR: Missing ) for " << clause << " clause \n" << std::endl; cleanup_and_exit(); } else { pos = lines[ line ].find_first_of( "!*cC" ) + 6; pos = lines[ line ].find_first_not_of( " \t", pos ); if ( lines[ line ][ pos ] == '&' ) { pos++; } } } if ( lines[ line ][ pos ] == ')' ) { bracket_counter--; } } //remove last bracket if necessary if ( remove ) { lines[ line ][ pos ] = ' '; } size_t p; p = arguments.find( ' ' ); while ( p != string::npos ) { arguments.erase( p, 1 ); p = arguments.find( ' ' ); } return arguments; } /** @brief Add a nowait at the end of worksharing constructs, if needed.*/ void OMPragmaF::add_nowait() { int lastline = lines.size() - 1; string::size_type s = lines[ lastline ].find( sentinel ) + slen; // insert on last line on last position before comment string::size_type c = lines[ lastline ].find( '!', s ); if ( c == string::npos ) { lines[ lastline ].append( " nowait" ); } else { lines[ lastline ].insert( c, " nowait" ); } } void OMPragmaF::add_descr( int ) { /* current implementation doesn't need anything special for fortran */ } namespace { inline void sreplace( string& lhs, const string& rhs, int from, int to ) { for ( int i = from; i < to; ++i ) { lhs[ i ] = rhs[ i ]; } } inline void sreplace( string& lhs, const char* rhs, int from ) { do { lhs[ from ] = *rhs; ++from; ++rhs; } while ( *rhs ); } void fix_clause_arg( OMPragma* outer, OMPragma* inner, unsigned& line, string::size_type& pos, const string& sentinel, int slen ) { char* optr = &( outer->lines[ line ][ pos ] ); char* iptr = &( inner->lines[ line ][ pos ] ); while ( *optr != ')' ) { while ( *optr == '!' || *optr == '&' || pos >= outer->lines[ line ].size() ) { // skip to next line ++line; if ( line >= outer->lines.size() ) { return; } pos = outer->lines[ line ].find( sentinel ) + slen; pos = outer->lines[ line ].find_first_not_of( " \t", pos ); if ( outer->lines[ line ][ pos ] == '&' ) { ++pos; } optr = &( outer->lines[ line ][ pos ] ); iptr = &( inner->lines[ line ][ pos ] ); } *iptr = *optr; *optr = ' '; ++iptr; ++optr; ++pos; } *iptr = ')'; *optr = ' '; } } /** @brief Remove empty lines.*/ void OMPragmaF::remove_empties() { // remove lines without content vector::iterator it = lines.begin(); while ( it != lines.end() ) { string::size_type s = it->find( sentinel ) + slen; string::size_type l = it->find_first_not_of( " \t&", s ); if ( l == string::npos || ( *it )[ l ] == '!' ) { it = lines.erase( it ); } else { ++it; } } // make sure 1st line is not a continuation line string::size_type s = lines[ 0 ].find( sentinel ); if ( s == 1 ) { lines[ 0 ][ slen ] = ' '; } else { string::size_type l = lines[ 0 ].find_first_not_of( " \t", s + slen ); if ( lines[ 0 ][ l ] == '&' ) { lines[ 0 ][ l ] = ' '; } } // make sure last line is not a continuated line int lastline = lines.size() - 1; s = lines[ lastline ].find( sentinel ) + slen; string::size_type c = lines[ lastline ].find( '!', s ); if ( c != string::npos ) { --c; } string::size_type amp = lines[ lastline ].find_last_not_of( " \t", c ); if ( lines[ lastline ][ amp ] == '&' ) { lines[ lastline ][ amp ] = ' '; } } /** @brief Split combined parallel and worksharing pragmas in two * seperate pragmas to allow POMP function calls in between.*/ OMPragma* OMPragmaF::split_combined() { remove_commas(); OMPragmaF* inner = new OMPragmaF( filename, lineno, 0, string( lines[ 0 ].size(), ' ' ), ( slen == 6 ), asd ); // copy sentinel and continuation characters for ( unsigned i = 0; i < lines.size(); ++i ) { if ( i ) { inner->lines.push_back( string( lines[ i ].size(), ' ' ) ); } // sentinel (and column 6/7) string::size_type s = lines[ i ].find( sentinel ); sreplace( inner->lines[ i ], lines[ i ], s - 1, s + slen ); // & continuation characters string::size_type com = lines[ i ].find( "!", s + slen ); if ( com != string::npos ) { --com; } string::size_type amp2 = lines[ i ].find_last_not_of( " \t", com ); if ( lines[ i ][ amp2 ] == '&' ) { inner->lines[ i ][ amp2 ] = '&'; } string::size_type amp1 = lines[ i ].find_first_not_of( " \t", s + slen ); if ( lines[ i ][ amp1 ] == '&' ) { inner->lines[ i ][ amp1 ] = '&'; } } // fix pragma name unsigned line = 0; string::size_type pos = 0; if ( find_word( "do", line, pos ) ) { sreplace( lines[ line ], " ", pos ); sreplace( inner->lines[ line ], "do", pos ); } line = pos = 0; if ( find_word( "sections", line, pos ) ) { sreplace( lines[ line ], " ", pos ); sreplace( inner->lines[ line ], "sections", pos ); } line = pos = 0; /*2.0*/ if ( find_word( "workshare", line, pos ) ) /*2.0*/ { sreplace( lines[ line ], " ", pos ); /*2.0*/ sreplace( inner->lines[ line ], "workshare", pos ); /*2.0*/ } /*2.0*/ // fix pragma clauses line = pos = 0; while ( find_word( "ordered", line, pos ) ) { sreplace( lines[ line ], " ", pos ); sreplace( inner->lines[ line ], "ordered", pos ); pos += 7; } line = pos = 0; while ( find_word( "lastprivate", line, pos ) ) { sreplace( lines[ line ], " ", pos ); sreplace( inner->lines[ line ], "lastprivate", pos ); pos += 11; fix_clause_arg( this, inner, line, pos, sentinel, slen ); } line = pos = 0; while ( find_word( "schedule", line, pos ) ) { sreplace( lines[ line ], " ", pos ); sreplace( inner->lines[ line ], "schedule", pos ); pos += 8; fix_clause_arg( this, inner, line, pos, sentinel, slen ); } line = pos = 0; while ( find_word( "collapse", line, pos ) ) { sreplace( lines[ line ], " ", pos ); sreplace( inner->lines[ line ], "collapse", pos ); pos += 8; fix_clause_arg( this, inner, line, pos, sentinel, slen ); } // final cleanup remove_empties(); inner->remove_empties(); return inner; } eztrace-1.1-7/extlib/opari2/src/opari/PaxHeaders.7332/ompragma_c.cc0000644000000000000000000000013212617055645021642 xustar0030 mtime=1446796197.914458076 30 atime=1508138876.599936003 30 ctime=1508162367.725906617 eztrace-1.1-7/extlib/opari2/src/opari/ompragma_c.cc0000644000175000017500000002674312617055645023045 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ /** @internal * * @file ompragma_c.cc * @status beta * * @maintainer Dirk Schmidl * * @authors Bernd Mohr * Dirk Schmidl * Peter Philippen * * @brief Functions needed to handle C specific parts of the OpenMP * Pragma handling.*/ #include #include "ompragma.h" #include //#include #include #include "common.h" #include "opari2.h" string OMPragmaC::find_next_word() { while ( pline < lines.size() ) { string::size_type wbeg = lines[ pline ].find_first_not_of( " \t", ppos ); if ( lines[ pline ][ wbeg ] == '\\' || wbeg == string::npos ) { ++pline; if ( pline < lines.size() ) { ppos = 0; } else { return ""; } } else if ( lines[ pline ][ wbeg ] == '(' || lines[ pline ][ wbeg ] == ')' ) { ppos = wbeg + 1; return string( 1, lines[ pline ][ wbeg ] ); } else { ppos = lines[ pline ].find_first_of( " \t()", wbeg ); return lines[ pline ].substr( wbeg, ppos == string::npos ? ppos : ppos - wbeg ); } } return ""; } /** @brief Returns true if word in line.*/ bool OMPragmaC::find_word( const string word, unsigned& line, string::size_type& pos ) { for ( unsigned i = line; i < lines.size(); ++i ) { string::size_type w = lines[ i ].find( word ); while ( w != string::npos ) { char b; char a; //word may start at position 0 of a continuation line if ( w == 0 ) { b = ' '; } else { b = lines[ i ][ w - 1 ]; } if ( lines[ i ].length() > w + word.length() ) { a = lines[ i ][ w + word.length() ]; } else { a = ' '; } if ( ( b == ' ' || b == '\t' || b == '/' || b == ')' || b == ',' || b == '#' ) && ( a == ' ' || a == '\t' || a == '/' || a == '(' || a == ',' ) ) { line = i; pos = w; return true; } else { w++; if ( w != string::npos ) { w = lines[ i ].find( word, w ); } } } /* if ( w != string::npos ) { line = i; pos = w; return true; }*/ pos = 0; } return false; } /** @brief Returns the arguments of a clause. */ string OMPragmaC::find_arguments( unsigned& line, string::size_type& pos, bool remove, string clause ) { string arguments; int bracket_counter = 0; for ( unsigned int i = 0; i < clause.length(); i++ ) { if ( remove ) { lines[ line ][ pos ] = ' '; } pos++; } pos = lines[ line ].find_first_not_of( " \t", pos ); if ( lines[ line ][ pos ] == '(' ) { bracket_counter++; if ( remove ) { lines[ line ][ pos ] = ' '; } pos++; } else { std::cerr << filename << ":" << lineno << ": ERROR: Expecting argument for " << clause << " clause\n" << std::endl; cleanup_and_exit(); } while ( bracket_counter > 0 ) { if ( lines[ line ][ pos ] == '(' ) { bracket_counter++; } if ( lines[ line ][ pos ] == '\\' ) { pos = lines[ line ].length(); } else { arguments.append( 1, lines[ line ][ pos ] ); if ( remove ) { lines[ line ][ pos ] = ' '; } pos++; } if ( pos >= lines[ line ].length() ) { line++; if ( line >= lines.size() ) { std::cerr << lines[ line - 1 ] << std::endl; std::cerr << filename << ":" << lineno << ": ERROR: Missing ) for " << clause << " clause\n"; cleanup_and_exit(); } pos = 0; } if ( lines[ line ][ pos ] == ')' ) { bracket_counter--; } } //remove last bracket if necessary if ( remove ) { lines[ line ][ pos ] = ' '; } size_t p; p = arguments.find( ' ' ); while ( p != string::npos ) { arguments.erase( p, 1 ); p = arguments.find( ' ' ); } return arguments; } /** @brief add a nowait to a pragma */ void OMPragmaC::add_nowait() { int lastline = lines.size() - 1; lines[ lastline ].append( " nowait" ); } /** @brief add region descriptors to shared variable list*/ void OMPragmaC::add_descr( int n ) { std::ostringstream os; if ( asd ) { // Workaround for Suse 11.3 & iomanip -> intel 11.1 compiler bug std::stringstream ids; ids << n; os << " POMP2_DLIST_"; for ( int i = ids.str().length(); i < 5; i++ ) { os << '0'; } os << ids.str(); // This can be used again, as soon as the corresponding bug with // Suse 11.3 and iomanip is fixed by intel. os << " // POMP2_DLIST_" << std::setw( 5 ) << std::setfill( '0' // ) << n; } else { // not 100% right but best we can do if compiler doesn't allow // macro replacement on pragma statements os << " shared(" << region_id_prefix << n << ")"; } int lastline = lines.size() - 1; lines[ lastline ].append( os.str() ); } namespace { inline void sreplace( string& lhs, const char* rhs, int from ) { do { lhs[ from ] = *rhs; ++from; ++rhs; } while ( *rhs ); } void fix_clause_arg( OMPragma* outer, OMPragma* inner, unsigned& line, string::size_type& pos ) { char* optr = &( outer->lines[ line ][ pos ] ); char* iptr = &( inner->lines[ line ][ pos ] ); while ( *optr != ')' ) { while ( *optr == '\\' ) { // skip to next line ++line; if ( line >= outer->lines.size() ) { return; } pos = 0; optr = &( outer->lines[ line ][ pos ] ); iptr = &( inner->lines[ line ][ pos ] ); } *iptr = *optr; *optr = ' '; ++iptr; ++optr; ++pos; } *iptr = ')'; *optr = ' '; } } /** @brief remove empty lines.*/ void OMPragmaC::remove_empties() { // remove lines without content vector::iterator it = lines.begin(); while ( it != lines.end() ) { string::size_type l = it->find_first_not_of( " \t&" ); if ( l == string::npos || ( *it )[ l ] == '\\' ) { it = lines.erase( it ); } else { ++it; } } // make sure last line is not a continuated line int lastline = lines.size() - 1; string::size_type lastpos = lines[ lastline ].size() - 1; if ( lines[ lastline ][ lastpos ] == '\\' ) { lines[ lastline ][ lastpos ] = ' '; } } /** @brief Split combined parallel and worksharing constructs in two * seperate pragmas to allow the insertion of POMP function * calles between the parallel and the worksharing construct. * clauses need to be matched to the corresponding pragma*/ OMPragma* OMPragmaC::split_combined() { remove_commas(); // make empty copy with continuation characters vector innerLines; for ( unsigned i = 0; i < lines.size(); ++i ) { innerLines.push_back( string( lines[ i ].size(), ' ' ) ); if ( i != lines.size() ) { innerLines[ i ][ innerLines[ i ].size() - 1 ] = '\\'; } } // copy sentinel unsigned line = 0; string::size_type pos = 0; pos = lines[ 0 ].find( "#" ); innerLines[ 0 ][ pos++ ] = '#'; find_word( "pragma", line, pos ); sreplace( innerLines[ line ], "pragma", pos ); pos += 6; find_word( "omp", line, pos ); sreplace( innerLines[ line ], "omp", pos ); pos += 3; OMPragmaC* inner = new OMPragmaC( filename, lineno, 0, 0, innerLines, asd ); // fix pragma name line = pos = 0; if ( find_word( "for", line, pos ) ) { sreplace( lines[ line ], " ", pos ); sreplace( inner->lines[ line ], "for", pos ); } line = pos = 0; if ( find_word( "sections", line, pos ) ) { sreplace( lines[ line ], " ", pos ); sreplace( inner->lines[ line ], "sections", pos ); } // fix pragma clauses line = pos = 0; while ( find_word( "ordered", line, pos ) ) { sreplace( lines[ line ], " ", pos ); sreplace( inner->lines[ line ], "ordered", pos ); pos += 7; } line = pos = 0; while ( find_word( "lastprivate", line, pos ) ) { sreplace( lines[ line ], " ", pos ); sreplace( inner->lines[ line ], "lastprivate", pos ); pos += 11; fix_clause_arg( this, inner, line, pos ); } line = pos = 0; while ( find_word( "schedule", line, pos ) ) { sreplace( lines[ line ], " ", pos ); sreplace( inner->lines[ line ], "schedule", pos ); pos += 8; fix_clause_arg( this, inner, line, pos ); } line = pos = 0; while ( find_word( "collapse", line, pos ) ) { sreplace( lines[ line ], " ", pos ); sreplace( inner->lines[ line ], "collapse", pos ); pos += 8; fix_clause_arg( this, inner, line, pos ); } // final cleanup remove_empties(); inner->remove_empties(); return inner; } eztrace-1.1-7/extlib/opari2/src/PaxHeaders.7332/config.h0000644000000000000000000000013212617055645017532 xustar0030 mtime=1446796197.914458076 30 atime=1508138876.399931008 30 ctime=1508162367.433881113 eztrace-1.1-7/extlib/opari2/src/config.h0000644000175000017500000000251712617055645020726 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ #ifndef CONFIG_H #define CONFIG_H /** * @file config.h * @author Christian Rössel * @maintainer Christian Rössel * @status ALPHA * * @brief Provide a single config.h that hides the frontend/backend * issues from the developer * */ #if defined CROSS_BUILD #if defined FRONTEND_BUILD #include #elif defined BACKEND_BUILD #include #else #error "You can not use config.h without defining either FRONTEND_BUILD or BACKEND_BUILD." #endif #elif defined NOCROSS_BUILD #include #else #error "You can not use config.h without defining either CROSS_BUILD or NOCROSS_BUILD." #endif #endif /* CONFIG_H */ eztrace-1.1-7/extlib/opari2/src/PaxHeaders.7332/config-custom.h0000644000000000000000000000013212617055645021042 xustar0030 mtime=1446796197.914458076 30 atime=1508138876.403931108 30 ctime=1508162367.433881113 eztrace-1.1-7/extlib/opari2/src/config-custom.h0000644000175000017500000000265112617055645022235 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ #ifndef CONFIG_CUSTOM_H #define CONFIG_CUSTOM_H /** * @file config-custom.h * @author Christian Rössel * @author Bert Wesarg * @maintainer Christian Rössel * @maintainer Bert Wesarg * * @brief This file gets included by config.h (resp. config-frontend.h and * config-backend.h) and contains supplementary macros to be used with the * macros in config.h. * */ /** * Conditionally compile on macro values that are either 0 or 1. * * E.g. if you have the macro @c HAVE_DECL_MPI_ACCUMULATE that is either 0 or * 1, you should use \#if HAVE(DECL_MPI_ACCUMULATE) in your code * to conditionally compile if @c HAVE_DECL_MPI_ACCUMULATE is defined to 1. */ #define HAVE( H ) ( defined( HAVE_##H ) && HAVE_##H ) #endif /* CONFIG_CUSTOM_H */ eztrace-1.1-7/extlib/opari2/src/PaxHeaders.7332/config-frontend.h.in0000644000000000000000000000013113171135236021742 xustar0029 mtime=1508162206.09282877 30 atime=1508162292.663522703 30 ctime=1508162367.653900328 eztrace-1.1-7/extlib/opari2/src/config-frontend.h.in0000644000175000017500000000376013171135236023140 0ustar00trahaytrahay00000000000000/* ../src/config-frontend.h.in. Generated from configure.ac by autoheader. */ /* Alignment attribute not supported */ #undef FORTRAN_ALIGNED /* Name of var after mangled by the Fortran compiler. */ #undef FORTRAN_MANGLED /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_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 /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* 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 /* Revision of common repository */ #undef SCOREP_COMMON_REVISION /* Revision of ${PACKAGE_NAME} */ #undef SCOREP_COMPONENT_REVISION /* Defined if we are working from a make dist generated tarball. */ #undef SCOREP_IN_PRODUCTION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION #include eztrace-1.1-7/extlib/opari2/src/PaxHeaders.7332/pomp-lib-dummy0000644000000000000000000000013213171135477020705 xustar0030 mtime=1508162367.721906267 30 atime=1508162367.741908015 30 ctime=1508162367.721906267 eztrace-1.1-7/extlib/opari2/src/pomp-lib-dummy/0000755000175000017500000000000013171135477022151 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/src/pomp-lib-dummy/PaxHeaders.7332/pomp2_parse_init_regions.awk.in0000644000000000000000000000013212617055645027075 xustar0030 mtime=1446796197.918458201 30 atime=1508162288.859210426 30 ctime=1508162367.305869934 eztrace-1.1-7/extlib/opari2/src/pomp-lib-dummy/pomp2_parse_init_regions.awk.in0000644000175000017500000001012512617055645030263 0ustar00trahaytrahay00000000000000## ## This file is part of the Score-P software (http://www.score-p.org) ## ## Copyright (c) 2009-2011, ## RWTH Aachen University, Germany ## Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ## Technische Universitaet Dresden, Germany ## University of Oregon, Eugene, USA ## Forschungszentrum Juelich GmbH, Germany ## German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ## Technische Universitaet Muenchen, Germany ## ## See the COPYING file in the package base directory for details. ## # # pomp2_parse_init_regions.awk # # Expects the output of # $(NM) $ALL_OBJS_AND_LIBS | $(GREP) -i POMP2_Init_regions | $(GREP) " [TD] " # as input. See for a working # example. # # The output is C-code that needs to be linked to your application. It # provides several functions: # # void POMP2_Init_regions(): need to be called from your POMP2 library to # initialize all instrumented POMP2 region by calling the instrumented # functions POMP2_Init_regions_*. # # size_t POMP2_Get_num_regions() returns the number of POMP2 regions found # in $ALL_OBJS_AND_LIBS. # # const char* POMP2_Get_opari2_version() returns a version string. # # Three functions returning int and specifying the library interface version: # int POMP2_Get_required_pomp2_library_version_(current|revision|age)() # # Author: Christian Roessel # /_[0-9][0-9]*_[0-9][0-9]*_?_?$/ { for (i = 1; i <= NF; i++) { if (index($i,"POMP2_Init_regions") != 0) { separator = "POMP2_Init_regions"; } else if (index($i,"pomp2_init_regions") != 0) { separator = "pomp2_init_regions"; } else if (index($i,"POMP2_INIT_REGIONS") != 0) { separator = "POMP2_INIT_REGIONS"; } else { continue; } # $i looks like "POMP2_Init_regions_uniqueId_nRegions" or # like "pomp2_init_regions_uniqueId_nRegions" or # like "POMP2_INIT_REGIONS_uniqueId_nRegions" split ($i,splitResult,separator); _uniqueId_nRegions = splitResult[2]; if (!(_uniqueId_nRegions in regions)) { regions[_uniqueId_nRegions] = $i; split(_uniqueId_nRegions, tokens, "_"); nRegions += tokens[3]; } } } END{ print tmp "\n" print "#ifdef __cplusplus" print "extern \"C\"" print "{" print "#endif" print "#include \n" # cut away leading full-stops for (i in regions) { sub(/^\./, "", regions[i]); } # declare POMP2_Init_regions_* functions extern for (i in regions) { print "extern void " regions[i] "();"; } # define POMP2_Init_regions() and call all POMP2_Init_regions_* functions print "\nvoid POMP2_Init_regions()" print "{" for (i in regions) { print " " regions[i] "();"; } print "}\n" # define function POMP2_Get_num_regions() print "size_t POMP2_Get_num_regions()" print "{" if (nRegions != 0) { print " return " nRegions ";" } else { print " return 0;" } print "}\n" # define function POMP2_Get_opari2_version() print "const char* POMP2_Get_opari2_version()" print "{" print " return \"@PACKAGE_VERSION@\";" print "}\n" print "/* " print " * The following functions define the POMP2 library interface version" print " * the instrumented code conforms with. The library interface version" print " * is modeled after" print " * https://www.gnu.org/software/libtool/manual/libtool.html#Versioning" print " */\n" # define function POMP2_Get_required_pomp2_library_version_current() print "int POMP2_Get_required_pomp2_library_version_current()" print "{" print " return @LIBRARY_CURRENT@;" print "}\n" # define function POMP2_Get_required_pomp2_library_version_revision() print "int POMP2_Get_required_pomp2_library_version_revision()" print "{" print " return @LIBRARY_REVISION@;" print "}\n" # define function POMP2_Get_required_pomp2_library_version_age() print "int POMP2_Get_required_pomp2_library_version_age()" print "{" print " return @LIBRARY_AGE@;" print "}\n" print "#ifdef __cplusplus" print "}" print "#endif" } eztrace-1.1-7/extlib/opari2/src/pomp-lib-dummy/PaxHeaders.7332/pomp2_region_info.h0000644000000000000000000000013212617055645024550 xustar0030 mtime=1446796197.918458201 30 atime=1508138876.687938201 30 ctime=1508162367.713905569 eztrace-1.1-7/extlib/opari2/src/pomp-lib-dummy/pomp2_region_info.h0000644000175000017500000001627212617055645025747 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ #ifndef POMP2_REGION_INFO_H #define POMP2_REGION_INFO_H /** * @file pomp2_region_info.h * @author Christian Rössel * @status alpha * @date Started Fri Mar 20 16:30:45 2009 * * @brief This file contains function declarations and structs * which handle informations on OpenMP regions. POMP2_Region_info * is used to store these informations. It can be filled with a * ctcString by ctcString2RegionInfo(). * */ #include /** * POMP2_Region_type * */ typedef enum /* POMP2_Region_type */ { POMP2_No_type, POMP2_Atomic, POMP2_Barrier, POMP2_Critical, POMP2_Do, POMP2_Flush, POMP2_For, POMP2_Master, POMP2_Ordered, POMP2_Parallel, POMP2_Parallel_do, POMP2_Parallel_for, POMP2_Parallel_sections, POMP2_Parallel_workshare, POMP2_Sections, POMP2_Single, POMP2_Task, POMP2_Taskuntied, POMP2_Taskwait, POMP2_User_region, POMP2_Workshare } POMP2_Region_type; /** converts regionType into a string * @param regionType The regionType to be converted. * @return string representation of the region type*/ const char* pomp2RegionType2String( POMP2_Region_type regionType ); /** * type to store the scheduling type of a for worksharing constuct * */ typedef enum { POMP2_No_schedule, POMP2_Static, /* needs chunk size */ POMP2_Dynamic, /* needs chunk size */ POMP2_Guided, /* needs chunk size */ POMP2_Runtime, POMP2_Auto } POMP2_Schedule_type; /** converts scheduleType into a string * @param scheduleType The scheduleType to be converted. * @return string representation of the scheduleType*/ const char* pomp2ScheduleType2String( POMP2_Schedule_type scheduleType ); /** * @brief This struct stores all information on an OpenMP region, like the * region type or corresponding source lines. The function * ctcString2RegionInfo() can be used to fill this struct with data * from a ctcString. */ typedef struct { /** @name Required attributes */ /*@{*/ /** type of the OpenMP region*/ POMP2_Region_type mRegionType; /** name of the corresponding source file from the opening pragma */ char* mStartFileName; /** line number of the first line from the opening pragma */ unsigned mStartLine1; /** line number of the last line from the opening pragma */ unsigned mStartLine2; /** name of the corresponding source file from the closing pragma */ char* mEndFileName; /** line number of the first line from the closing pragma */ unsigned mEndLine1; /** line number of the last line from the closing pragma */ unsigned mEndLine2; /*@}*/ /** @name Currently not provided by opari */ /*@{*/ /**true if a copyin clause is present*/ bool mHasCopyIn; /**true if a copyprivate clause is present*/ bool mHasCopyPrivate; /**true if an if clause is present*/ bool mHasIf; /**true if a firstprivate clause is present*/ bool mHasFirstPrivate; /**true if a lastprivate clause is present*/ bool mHasLastPrivate; /**true if a nowait clause is present*/ bool mHasNoWait; /**true if a numThreads clause is present*/ bool mHasNumThreads; /**true if an ordered clause is present*/ bool mHasOrdered; /**true if a reduction clause is present*/ bool mHasReduction; /**true if a collapse clause is present*/ bool mHasCollapse; /**true if a untied clause was present, even if the task was changed to tied during instrumentation.*/ bool mHasUntied; /** schedule type in the schedule clause*/ POMP2_Schedule_type mScheduleType; /** user group name*/ char* mUserGroupName; /*@}*/ /** @name Attributes for specific region types */ /*@{*/ /** number of sections*/ unsigned mNumSections; /** name of a named critical region*/ char* mCriticalName; /** name of a user defined region*/ char* mUserRegionName; /*@}*/ } POMP2_Region_info; /** * ctcString2RegionInfo() fills the POMP2_Region_info object with data read * from the ctcString. If the ctcString does not comply with the * specification, the program aborts with exit code 1. @n Rationale: * ctcString2RegionInfo() is used during initialization of the measurement * system. If an error occurs, it is better to abort than to struggle with * undefined behaviour or @e guessing the meaning of the broken string. * * @note Can be called from multiple threads concurrently, assuming malloc is * thread-safe. * * @note ctcString2RegionInfo() will assign memory to the members of @e * regionInfo. You are supposed to to release this memory by calling * freePOMP2RegionInfoMembers(). * * @param ctcString A string in the format * "length*key=value*[key=value]*". The length field is parsed but not used by * this implementation. Possible values for key are listed in * ctcTokenMap. The string must at least contain values for the keys @c * regionType, @c sscl and @c escl. Possible values for the key @c regionType * are listed in regionTypesMap. The format for @c sscl resp. @c escl values * is @c "filename:lineNo1:lineNo2". * * @param regionInfo must be a valid object * * @post At least the required attributes (see POMP2_Region_info) are set. @n * All other members of @e regionInfo are set to 0 resp. false * resp. POMP2_No_schedule. @n If @c regionType=sections than * POMP2_Region_info::mNumSections has a value > 0. @n If @c regionType=region * than POMP2_Region_info::mUserRegionName has a value != 0. @n If @c * regionType=critical than POMP2_Region_info::mCriticalName may have a value * != 0. * */ void ctcString2RegionInfo( const char ctcString[], POMP2_Region_info* regionInfo ); /** * Free the memory of the regionInfo members. * @param regionInfo The regioninfo to be freed. */ void freePOMP2RegionInfoMembers( POMP2_Region_info* regionInfo ); #endif /* POMP2_REGION_INFO_H */ eztrace-1.1-7/extlib/opari2/src/pomp-lib-dummy/PaxHeaders.7332/pomp2_fwrapper_base.c0000644000000000000000000000013212617055645025065 xustar0030 mtime=1446796197.914458076 30 atime=1508138876.755939899 30 ctime=1508162367.717905918 eztrace-1.1-7/extlib/opari2/src/pomp-lib-dummy/pomp2_fwrapper_base.c0000644000175000017500000001017412617055645026257 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ /** @internal * * @file pomp2_fwrapper_base.c * @status alpha * * @maintainer Dirk Schmidl * * @brief Basic fortan wrappers calling the C versions.*/ #include #include #include #include "pomp2_fwrapper_base.h" #include #include "pomp2_fwrapper_def.h" extern int pomp2_tracing; /* *INDENT-OFF* */ void FSUB(POMP2_Finalize)() { POMP2_Finalize(); } void FSUB(POMP2_Init)() { POMP2_Init(); } void FSUB(POMP2_Off)() { pomp2_tracing = 0; } void FSUB(POMP2_On)() { pomp2_tracing = 1; } void FSUB(POMP2_Begin)(POMP2_Region_handle* regionHandle) { POMP2_Begin(regionHandle); } void FSUB(POMP2_End)(POMP2_Region_handle* regionHandle) { POMP2_End(regionHandle); } /* *INDENT-OFF* */ /* *---------------------------------------------------------------- * Fortran Wrapper for OpenMP API ******---------------------------------------------------------------- */ /* *INDENT-OFF* */ #if defined(__ICC) || defined(__ECC) || defined(_SX) #define CALLFSUB(a) a #else #define CALLFSUB(a) FSUB(a) #endif void FSUB(POMP2_Init_lock)(omp_lock_t *s) { if ( pomp2_tracing ) { fprintf(stderr, "%3d: init lock\n", omp_get_thread_num()); } CALLFSUB(omp_init_lock)(s); } void FSUB(POMP2_Destroy_lock)(omp_lock_t *s) { if ( pomp2_tracing ) { fprintf(stderr, "%3d: destroy lock\n", omp_get_thread_num()); } CALLFSUB(omp_destroy_lock)(s); } void FSUB(POMP2_Set_lock)(omp_lock_t *s) { if ( pomp2_tracing ) { fprintf(stderr, "%3d: set lock\n", omp_get_thread_num()); } CALLFSUB(omp_set_lock)(s); } void FSUB(POMP2_Unset_lock)(omp_lock_t *s) { if ( pomp2_tracing ) { fprintf(stderr, "%3d: unset lock\n", omp_get_thread_num()); } CALLFSUB(omp_unset_lock)(s); } int FSUB(POMP2_Test_lock)(omp_lock_t *s) { if ( pomp2_tracing ) { fprintf(stderr, "%3d: test lock\n", omp_get_thread_num()); } return CALLFSUB(omp_test_lock)(s); } #ifndef __osf__ void FSUB(POMP2_Init_nest_lock)(omp_nest_lock_t *s) { if ( pomp2_tracing ) { fprintf(stderr, "%3d: init nestlock\n", omp_get_thread_num()); } CALLFSUB(omp_init_nest_lock)(s); } void FSUB(POMP2_Destroy_nest_lock)(omp_nest_lock_t *s) { if ( pomp2_tracing ) { fprintf(stderr, "%3d: destroy nestlock\n", omp_get_thread_num()); } CALLFSUB(omp_destroy_nest_lock)(s); } void FSUB(POMP2_Set_nest_lock)(omp_nest_lock_t *s) { if ( pomp2_tracing ) { fprintf(stderr, "%3d: set nestlock\n", omp_get_thread_num()); } CALLFSUB(omp_set_nest_lock)(s); } void FSUB(POMP2_Unset_nest_lock)(omp_nest_lock_t *s) { if ( pomp2_tracing ) { fprintf(stderr, "%3d: unset nestlock\n", omp_get_thread_num()); } CALLFSUB(omp_unset_nest_lock)(s); } int FSUB(POMP2_Test_nest_lock)(omp_nest_lock_t *s) { if ( pomp2_tracing ) { fprintf(stderr, "%3d: test nestlock\n", omp_get_thread_num()); } return CALLFSUB(omp_test_nest_lock)(s); } #endif eztrace-1.1-7/extlib/opari2/src/pomp-lib-dummy/PaxHeaders.7332/pomp2_lib.c0000644000000000000000000000013212617055645023013 xustar0030 mtime=1446796197.914458076 30 atime=1508138876.675937901 30 ctime=1508162367.713905569 eztrace-1.1-7/extlib/opari2/src/pomp-lib-dummy/pomp2_lib.c0000644000175000017500000005757012617055645024220 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ /** @internal * * @file pomp2_lib.c * @status alpha * * @maintainer Dirk Schmidl * * @authors Dirk Schmidl * Peter Philippen * * @brief Dummy implementation of all POMP2 Functions. These functions * only print out messages and do not measure anything.*/ #include #include /* *INDENT-OFF* */ #include "pomp2_region_info.h" #include #include #include #include #include /** @name Functions generated by the instrumenter */ /*@{*/ /** * Returns the number of instrumented regions.@n * The instrumenter scans all opari-created include files with nm and greps * the POMP2_INIT_uuid_numRegions() function calls. Here we return the sum of * all numRegions. */ extern size_t POMP2_Get_num_regions(); /** * Init all opari-created regions.@n * The instrumenter scans all opari-created include files with nm and greps * the POMP2_INIT_uuid_numRegions() function calls. The instrumentor then * defines this functions by calling all grepped functions. */ extern void POMP2_Init_regions(); /** * Returns the opari version. */ extern const char* POMP2_Get_opari2_version(); /*@}*/ /** @brief All relevant information for a region is stored here */ typedef struct { /** region type of construct */ char* rtype; /** critical or user region name */ char* name; /** sections only: number of sections */ int num_sections; /** start file name*/ char* start_file_name; /** line number 1*/ int start_line_1; /** line number 2*/ int start_line_2; /** end file name*/ char* end_file_name; /** line number 1*/ int end_line_1; /** line number 2*/ int end_line_2; /** region id*/ size_t id; } my_pomp2_region; /** Id of the currently executing task*/ POMP2_Task_handle pomp2_current_task = 0; #pragma omp threadprivate(pomp2_current_task) /** Counter of tasks used to determine task ids for newly created ta*/ POMP2_Task_handle pomp2_task_counter = 1; #pragma omp threadprivate(pomp2_task_counter) POMP2_Task_handle POMP2_Get_new_task_handle() { return ( ( POMP2_Task_handle )omp_get_thread_num() << 32 ) + pomp2_task_counter++; } static void free_my_pomp2_region_member( char** member ) { if ( *member ) { free( *member ); *member = 0; } } static void free_my_pomp2_region_members( my_pomp2_region* region ) { if ( region ) { free_my_pomp2_region_member( ®ion->rtype ); free_my_pomp2_region_member( ®ion->name ); free_my_pomp2_region_member( ®ion->start_file_name ); free_my_pomp2_region_member( ®ion->end_file_name ); } } static void assignString( char** destination, const char* source ) { assert( source ); *destination = malloc( strlen( source ) * sizeof( char ) + 1 ); strcpy( *destination, source ); } static void initDummyRegionFromPOMP2RegionInfo( my_pomp2_region* pomp2_region, const POMP2_Region_info* pomp2RegionInfo ) { assignString( &( pomp2_region->rtype ), pomp2RegionType2String( pomp2RegionInfo->mRegionType ) ); assignString( &pomp2_region->start_file_name, pomp2RegionInfo->mStartFileName ); pomp2_region->start_line_1 = pomp2RegionInfo->mStartLine1; pomp2_region->start_line_2 = pomp2RegionInfo->mStartLine2; assignString( &pomp2_region->end_file_name, pomp2RegionInfo->mEndFileName ); pomp2_region->end_line_1 = pomp2RegionInfo->mEndLine1; pomp2_region->end_line_2 = pomp2RegionInfo->mEndLine2; if ( pomp2RegionInfo->mRegionType == POMP2_User_region ) { assignString( &pomp2_region->name, pomp2RegionInfo->mUserRegionName ); } else if ( pomp2RegionInfo->mRegionType == POMP2_Critical && pomp2RegionInfo->mCriticalName ) { assignString( &pomp2_region->name, pomp2RegionInfo->mCriticalName ); } pomp2_region->num_sections = pomp2RegionInfo->mNumSections; } /* * Global variables */ int pomp2_tracing = 0; my_pomp2_region* my_pomp2_regions; /* * C pomp2 function library */ void POMP2_Finalize() { static int pomp2_finalize_called = 0; size_t i; const size_t nRegions = POMP2_Get_num_regions(); if ( my_pomp2_regions ) { for ( i = 0; i < nRegions; ++i ) { free_my_pomp2_region_members( &my_pomp2_regions[ i ] ); } free( my_pomp2_regions ); my_pomp2_regions = 0; } if ( !pomp2_finalize_called ) { pomp2_finalize_called = 1; fprintf( stderr, " 0: finalize\n" ); } } void POMP2_Init() { static int pomp2_init_called = 0; if ( !pomp2_init_called ) { pomp2_init_called = 1; atexit( POMP2_Finalize ); fprintf( stderr, " 0: init\n" ); /* Allocate memory for your POMP2_Get_num_regions() regions */ my_pomp2_regions = calloc( POMP2_Get_num_regions(), sizeof( my_pomp2_region ) ); //pomp2_tpd_ = ( void* )malloc( sizeof( int ) ); //pomp2_tpd_ = ( long )0; POMP2_Init_regions(); pomp2_tracing = 1; } } void POMP2_Off() { pomp2_tracing = 0; } void POMP2_On() { pomp2_tracing = 1; } void POMP2_Begin( POMP2_Region_handle* pomp2_handle ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } my_pomp2_region* region = *pomp2_handle; if ( pomp2_tracing ) { fprintf( stderr, "%3d: begin region %s\n", omp_get_thread_num(), region->name ); } } void POMP2_End( POMP2_Region_handle* pomp2_handle ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } my_pomp2_region* region = *pomp2_handle; if ( pomp2_tracing ) { fprintf( stderr, "%3d: end region %s\n", omp_get_thread_num(), region->name ); } } void POMP2_Assign_handle( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ) { static size_t count = 0; POMP2_Region_info pomp2RegionInfo; ctcString2RegionInfo( ctc_string, &pomp2RegionInfo ); initDummyRegionFromPOMP2RegionInfo( &my_pomp2_regions[ count ], &pomp2RegionInfo ); my_pomp2_regions[ count ].id = count; *pomp2_handle = &my_pomp2_regions[ count ]; freePOMP2RegionInfoMembers( &pomp2RegionInfo ); ++count; assert( count <= POMP2_Get_num_regions() ); } void POMP2_Atomic_enter( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: enter atomic\n", omp_get_thread_num() ); } } void POMP2_Atomic_exit( POMP2_Region_handle* pomp2_handle ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: exit atomic\n", omp_get_thread_num() ); } } void POMP2_Implicit_barrier_enter( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle* pomp2_old_task ) { POMP2_Barrier_enter( pomp2_handle, pomp2_old_task, "" ); } extern void POMP2_Implicit_barrier_exit( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_old_task ) { pomp2_current_task = pomp2_old_task; POMP2_Barrier_exit( pomp2_handle, pomp2_old_task ); } void POMP2_Barrier_enter( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle* pomp2_old_task, const char ctc_string[] ) { *pomp2_old_task = pomp2_current_task; #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } my_pomp2_region* region = *pomp2_handle; if ( pomp2_tracing ) { if ( region->rtype[ 0 ] == 'b' ) { fprintf( stderr, "%3d: enter barrier\n", omp_get_thread_num() ); } else { fprintf( stderr, "%3d: enter implicit barrier of %s\n", omp_get_thread_num(), region->rtype ); } } } void POMP2_Barrier_exit( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_old_task ) { pomp2_current_task = pomp2_old_task; #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } my_pomp2_region* region = *pomp2_handle; if ( pomp2_tracing ) { if ( region->rtype[ 0 ] == 'b' ) { fprintf( stderr, "%3d: exit barrier\n", omp_get_thread_num() ); } else { fprintf( stderr, "%3d: exit implicit barrier of %s\n", omp_get_thread_num(), region->rtype ); } } } void POMP2_Flush_enter( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: enter flush\n", omp_get_thread_num() ); } } void POMP2_Flush_exit( POMP2_Region_handle* pomp2_handle ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: exit flush\n", omp_get_thread_num() ); } } void POMP2_Critical_begin( POMP2_Region_handle* pomp2_handle ) { if ( *pomp2_handle == NULL ) { POMP2_Init(); } my_pomp2_region* region = *pomp2_handle; if ( pomp2_tracing ) { fprintf( stderr, "%3d: begin critical %s\n", omp_get_thread_num(), region->rtype ); } } void POMP2_Critical_end( POMP2_Region_handle* pomp2_handle ) { if ( *pomp2_handle == NULL ) { POMP2_Init(); } my_pomp2_region* region = *pomp2_handle; if ( pomp2_tracing ) { fprintf( stderr, "%3d: end critical %s\n", omp_get_thread_num(), region->name ); } } void POMP2_Critical_enter( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } my_pomp2_region* region = *pomp2_handle; if ( pomp2_tracing ) { fprintf( stderr, "%3d: enter critical %s\n", omp_get_thread_num(), region->name ); } } void POMP2_Critical_exit( POMP2_Region_handle* pomp2_handle ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } my_pomp2_region* region = *pomp2_handle; if ( pomp2_tracing ) { fprintf( stderr, "%3d: exit critical %s\n", omp_get_thread_num(), region->name ); } } void POMP2_For_enter( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: enter for\n", omp_get_thread_num() ); } } void POMP2_For_exit( POMP2_Region_handle* pomp2_handle ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: exit for\n", omp_get_thread_num() ); } } void POMP2_Master_begin( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: begin master\n", omp_get_thread_num() ); } } void POMP2_Master_end( POMP2_Region_handle* pomp2_handle ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: end master\n", omp_get_thread_num() ); } } void POMP2_Parallel_begin( POMP2_Region_handle* pomp2_handle) { pomp2_current_task = POMP2_Get_new_task_handle(); #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: begin parallel\n", omp_get_thread_num() ); } } void POMP2_Parallel_end( POMP2_Region_handle* pomp2_handle ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: end parallel\n", omp_get_thread_num() ); } } void POMP2_Parallel_fork( POMP2_Region_handle* pomp2_handle, int if_clause, int num_threads, POMP2_Task_handle* pomp2_old_task, const char ctc_string[] ) { *pomp2_old_task = pomp2_current_task; #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: fork parallel\n", omp_get_thread_num() ); } } void POMP2_Parallel_join( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_old_task ) { pomp2_current_task = pomp2_old_task; #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: join parallel\n", omp_get_thread_num() ); } } void POMP2_Section_begin( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: begin section\n", omp_get_thread_num() ); } } void POMP2_Section_end( POMP2_Region_handle* pomp2_handle ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: end section\n", omp_get_thread_num() ); } } void POMP2_Sections_enter( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { my_pomp2_region* region = *pomp2_handle; fprintf( stderr, "%3d: enter sections (%d)\n", omp_get_thread_num(), region->num_sections ); } } void POMP2_Sections_exit( POMP2_Region_handle* pomp2_handle ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: exit sections\n", omp_get_thread_num() ); } } void POMP2_Single_begin( POMP2_Region_handle* pomp2_handle ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: begin single\n", omp_get_thread_num() ); } } void POMP2_Single_end( POMP2_Region_handle* pomp2_handle ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: end single\n", omp_get_thread_num() ); } } void POMP2_Single_enter( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: enter single\n", omp_get_thread_num() ); } } void POMP2_Single_exit( POMP2_Region_handle* pomp2_handle ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: exit single\n", omp_get_thread_num() ); } } void POMP2_Workshare_enter( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: enter workshare\n", omp_get_thread_num() ); } } void POMP2_Workshare_exit( POMP2_Region_handle* pomp2_handle ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: exit workshare\n", omp_get_thread_num() ); } } void POMP2_Ordered_begin( POMP2_Region_handle* pomp2_handle ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: begin ordered\n", omp_get_thread_num() ); } } void POMP2_Ordered_end( POMP2_Region_handle* pomp2_handle ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: end ordered\n", omp_get_thread_num() ); } } void POMP2_Ordered_enter( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: enter ordered\n", omp_get_thread_num() ); } } void POMP2_Ordered_exit( POMP2_Region_handle* pomp2_handle ) { #pragma omp critical if ( *pomp2_handle == NULL ) { POMP2_Init(); } if ( pomp2_tracing ) { fprintf( stderr, "%3d: exit ordered\n", omp_get_thread_num() ); } } void POMP2_Task_create_begin( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle* pomp2_new_task, POMP2_Task_handle* pomp2_old_task, int pomp2_if, const char ctc_string[]) { *pomp2_old_task = pomp2_current_task; *pomp2_new_task = POMP2_Get_new_task_handle(); if ( pomp2_tracing ) { fprintf( stderr, "%3d: task create begin\n", omp_get_thread_num() ); } } void POMP2_Task_create_end( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_old_task ) { pomp2_current_task = pomp2_old_task; if ( pomp2_tracing ) { fprintf( stderr, "%3d: task create end\n", omp_get_thread_num() ); } } void POMP2_Task_begin( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_task ) { pomp2_current_task = pomp2_task; if ( pomp2_tracing ) { fprintf( stderr, "%3d: task begin\n", omp_get_thread_num() ); } } void POMP2_Task_end( POMP2_Region_handle* pomp2_handle ) { if ( pomp2_tracing ) { fprintf( stderr, "%3d: task end\n", omp_get_thread_num()); } } void POMP2_Untied_task_create_begin( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle* pomp2_new_task, POMP2_Task_handle* pomp2_old_task, int pomp2_if, const char ctc_string[] ) { *pomp2_new_task = POMP2_Get_new_task_handle(); *pomp2_old_task = pomp2_current_task; if ( pomp2_tracing ) { fprintf( stderr, "%3d: create untied task\n", omp_get_thread_num() ); fprintf( stderr, "%3d: suspend task %" PRIu64 "\n", omp_get_thread_num(), pomp2_current_task ); } } void POMP2_Untied_task_create_end( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_old_task ) { pomp2_current_task = pomp2_old_task; if ( pomp2_tracing ) { fprintf( stderr, "%3d: created untied task\n", omp_get_thread_num() ); fprintf( stderr, "%3d: resume task %" PRIu64 "\n", omp_get_thread_num(), pomp2_current_task ); } } void POMP2_Untied_task_begin( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_parent_task ) { pomp2_current_task = POMP2_Get_new_task_handle(); if ( pomp2_tracing ) { fprintf( stderr, "%3d: start untied task %" PRIu64 "\n", omp_get_thread_num(), pomp2_current_task ); } } void POMP2_Untied_task_end( POMP2_Region_handle* pomp2_handle ) { if ( pomp2_tracing ) { fprintf( stderr, "%3d: end untied task %" PRIu64 "\n", omp_get_thread_num(), pomp2_current_task ); } } void POMP2_Taskwait_begin( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle* pomp2_old_task, const char ctc_string[] ) { *pomp2_old_task = pomp2_current_task; if ( pomp2_tracing ) { fprintf( stderr, "%3d: begin taskwait\n", omp_get_thread_num() ); fprintf( stderr, "%3d: suspend task: %" PRIu64 "\n", omp_get_thread_num(), pomp2_current_task ); } } void POMP2_Taskwait_end( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_old_task ) { pomp2_current_task = pomp2_old_task; if ( pomp2_tracing ) { fprintf( stderr, "%3d: end taskwait\n", omp_get_thread_num() ); fprintf( stderr, "%3d: resume task: %" PRIu64 "\n", omp_get_thread_num(), pomp2_current_task ); } } /* *---------------------------------------------------------------- * C Wrapper for OpenMP API ******---------------------------------------------------------------- */ void POMP2_Init_lock( omp_lock_t* s ) { if ( pomp2_tracing ) { fprintf( stderr, "%3d: init lock\n", omp_get_thread_num() ); } omp_init_lock( s ); } void POMP2_Destroy_lock( omp_lock_t* s ) { if ( pomp2_tracing ) { fprintf( stderr, "%3d: destroy lock\n", omp_get_thread_num() ); } omp_destroy_lock( s ); } void POMP2_Set_lock( omp_lock_t* s ) { if ( pomp2_tracing ) { fprintf( stderr, "%3d: set lock\n", omp_get_thread_num() ); } omp_set_lock( s ); } void POMP2_Unset_lock( omp_lock_t* s ) { if ( pomp2_tracing ) { fprintf( stderr, "%3d: unset lock\n", omp_get_thread_num() ); } omp_unset_lock( s ); } int POMP2_Test_lock( omp_lock_t* s ) { if ( pomp2_tracing ) { fprintf( stderr, "%3d: test lock\n", omp_get_thread_num() ); } return omp_test_lock( s ); } void POMP2_Init_nest_lock( omp_nest_lock_t* s ) { if ( pomp2_tracing ) { fprintf( stderr, "%3d: init nestlock\n", omp_get_thread_num() ); } omp_init_nest_lock( s ); } void POMP2_Destroy_nest_lock( omp_nest_lock_t* s ) { if ( pomp2_tracing ) { fprintf( stderr, "%3d: destroy nestlock\n", omp_get_thread_num() ); } omp_destroy_nest_lock( s ); } void POMP2_Set_nest_lock( omp_nest_lock_t* s ) { if ( pomp2_tracing ) { fprintf( stderr, "%3d: set nestlock\n", omp_get_thread_num() ); } omp_set_nest_lock( s ); } void POMP2_Unset_nest_lock( omp_nest_lock_t* s ) { if ( pomp2_tracing ) { fprintf( stderr, "%3d: unset nestlock\n", omp_get_thread_num() ); } omp_unset_nest_lock( s ); } int POMP2_Test_nest_lock( omp_nest_lock_t* s ) { if ( pomp2_tracing ) { fprintf( stderr, "%3d: test nestlock\n", omp_get_thread_num() ); } return omp_test_nest_lock( s ); } eztrace-1.1-7/extlib/opari2/src/pomp-lib-dummy/PaxHeaders.7332/getfname.f0000644000000000000000000000013212617055645022721 xustar0030 mtime=1446796197.914458076 30 atime=1508162318.857706094 30 ctime=1508162367.721906267 eztrace-1.1-7/extlib/opari2/src/pomp-lib-dummy/getfname.f0000644000175000017500000000173212617055645024113 0ustar00trahaytrahay00000000000000!> !> This file is part of the Score-P software (http://www.score-p.org) !> !> Copyright (c) 2009-2011, !> RWTH Aachen University, Germany !> Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany !> Technische Universitaet Dresden, Germany !> University of Oregon, Eugene, USA !> Forschungszentrum Juelich GmbH, Germany !> German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany !> Technische Universitaet Muenchen, Germany !> !> See the COPYING file in the package base directory for details. @internal !> !> @file getname.f !> @status alpha !> !> @maintainer Dirk Schmidl !> !> @brief This file is needed to check the Fortran name mangling of !> the used compiler. foo_foo is called and depending on ! the mangling, this is linked against a c function ! foo_foo_, _foo_foo, ... * @date Started Fri Mar 20 16:59:41 2009 * * @brief * */ #include #include "pomp2_region_info.h" #include #include #include #include #include #include /*----------------------------------------------------------------------------*/ /** @brief CTCData */ typedef struct { /** structured region information */ POMP2_Region_info* mRegionInfo; /** CTC String representation*/ char* mCTCStringToParse; /** memory string*/ char* mCTCStringMemory; /** error string*/ char* mCTCStringForErrorMsg; } CTCData; /** @brief errors the user is responsibel for, i.e. just errors in * the passed string */ typedef enum /* CTC_ERROR_Type */ { CTC_ERROR_Ended_unexpectedly, CTC_ERROR_No_region_type, CTC_ERROR_No_separator_after_length_field, CTC_ERROR_Num_sections_invalid, CTC_ERROR_SCL_broken, CTC_ERROR_SCL_line_number_error, CTC_ERROR_Unknown_token, CTC_ERROR_Unsigned_expected, CTC_ERROR_User_region_name_missing, CTC_ERROR_Wrong_clause_value, CTC_ERROR_Unknown_region_type, CTC_ERROR_No_key, CTC_ERROR_No_value, CTC_ERROR_Zero_length_key, CTC_ERROR_Zero_length_value, CTC_ERROR_Unknown_schedule_type, CTC_ERROR_SCL_error, CTC_ERROR_Inconsistent_line_numbers } CTC_ERROR_Type; static void freeCTCData( CTCData* obj ); /** @brief print error information*/ void ctcError( CTCData* obj, CTC_ERROR_Type errorType, const char* info1 ) { bool abort = true; printf( "Error parsing ctc string:\n\"%s\"\n", obj->mCTCStringForErrorMsg ); switch ( errorType ) { case CTC_ERROR_Ended_unexpectedly: printf( "ctc string ended unexpectedly.\n" ); break; case CTC_ERROR_No_region_type: printf( "ctc string has no region type field or value is empty.\n" ); break; case CTC_ERROR_No_separator_after_length_field: printf( "The separator \"*\" is missing after the length field.\n" ); break; case CTC_ERROR_Num_sections_invalid: printf( "The value of numSections must be > 0.\n" ); break; case CTC_ERROR_SCL_broken: printf( "The required attributes sscl and/or escl contain invalid data " "or are missing.\n" ); break; case CTC_ERROR_SCL_line_number_error: printf( "sscl or escl field has invalid line number arguments (%s).\n", info1 ); break; case CTC_ERROR_Unknown_token: printf( "Token \"%s\" not known.\n", info1 ); abort = false; break; case CTC_ERROR_Unsigned_expected: printf( "A value >= 0 is expected, \"%s\" is not allowed.\n", info1 ); break; case CTC_ERROR_User_region_name_missing: printf( "The field or value \"userRegionName\" is missing.\n" ); break; case CTC_ERROR_Wrong_clause_value: printf( "Clause field value must be \"0\" or \"1\", " "\"%s\" is not allowed.\n", info1 ); break; case CTC_ERROR_Unknown_region_type: printf( "Region type \"%s\" not known.\n", info1 ); break; case CTC_ERROR_No_key: printf( "Could not detect key in \"%s\", \"=\" or \"*\" missing.\n", info1 ); break; case CTC_ERROR_No_value: printf( "Could not detect value in \"%s\", \"*\" missing.\n", info1 ); break; case CTC_ERROR_Zero_length_key: printf( "The character sequence \"*=\" is not allowed.\n" ); break; case CTC_ERROR_Zero_length_value: printf( "The character sequence \"=*\" is not allowed.\n" ); break; case CTC_ERROR_Unknown_schedule_type: printf( "Schedule type \"%s\" not known.\n", info1 ); break; case CTC_ERROR_Inconsistent_line_numbers: printf( "Line numbers not valid. Expected startLineNo1 <= startLineNo2 <= endLineNo1 <= endLineNo2 \n" ); case CTC_ERROR_SCL_error: printf( "Error parsing source code location, " "expecting \"filename:lineNo1:lineNo2\".\n" ); break; default: puts( "ctc internal error: unknown error type." ); } if ( abort ) { freeCTCData( obj ); puts( "Aborting" ); exit( 1 ); } } /*----------------------------------------------------------------------------*/ static void parseCTCStringAndAssignRegionInfoValues( CTCData* obj ); static void checkConsistency( CTCData* obj ); static void initCTCData( CTCData* obj, const char string[], POMP2_Region_info* regionInfo ); void ctcString2RegionInfo( const char string[], POMP2_Region_info* regionInfo ) { assert( regionInfo ); CTCData ctcData; initCTCData( &ctcData, string, regionInfo ); parseCTCStringAndAssignRegionInfoValues( &ctcData ); checkConsistency( &ctcData ); freeCTCData( &ctcData ); } static void initRegionInfo( CTCData* obj ); static void copyCTCStringToInternalMemory( CTCData* obj, const char* source ); static void initCTCData( CTCData* obj, const char string[], POMP2_Region_info* regionInfo ) { obj->mRegionInfo = regionInfo; initRegionInfo( obj ); obj->mCTCStringToParse = 0; obj->mCTCStringMemory = 0; obj->mCTCStringForErrorMsg = 0; copyCTCStringToInternalMemory( obj, string ); } static void initRegionInfo( CTCData* obj ) { obj->mRegionInfo->mRegionType = POMP2_No_type; obj->mRegionInfo->mStartFileName = 0; obj->mRegionInfo->mStartLine1 = 0; obj->mRegionInfo->mStartLine2 = 0; obj->mRegionInfo->mEndFileName = 0; obj->mRegionInfo->mEndLine1 = 0; obj->mRegionInfo->mEndLine2 = 0; obj->mRegionInfo->mHasCollapse = false; obj->mRegionInfo->mHasCopyIn = false; obj->mRegionInfo->mHasCopyPrivate = false; obj->mRegionInfo->mHasFirstPrivate = false; obj->mRegionInfo->mHasIf = false; obj->mRegionInfo->mHasLastPrivate = false; obj->mRegionInfo->mHasNoWait = false; obj->mRegionInfo->mHasNumThreads = false; obj->mRegionInfo->mHasOrdered = false; obj->mRegionInfo->mHasReduction = false; obj->mRegionInfo->mHasUntied = false; obj->mRegionInfo->mScheduleType = POMP2_No_schedule; obj->mRegionInfo->mNumSections = 0; obj->mRegionInfo->mCriticalName = 0; obj->mRegionInfo->mUserRegionName = 0; obj->mRegionInfo->mUserGroupName = 0; } static void copyCTCStringToInternalMemory( CTCData* obj, const char* source ) { assert( obj->mCTCStringToParse == 0 ); assert( obj->mCTCStringMemory == 0 ); assert( obj->mCTCStringForErrorMsg == 0 ); const size_t nBytes = strlen( source ) * sizeof( char ) + 1; obj->mCTCStringMemory = malloc( nBytes ); obj->mCTCStringForErrorMsg = malloc( nBytes ); strcpy( obj->mCTCStringMemory, source ); strcpy( obj->mCTCStringForErrorMsg, source ); obj->mCTCStringToParse = obj->mCTCStringMemory; } static void freeAndReset( char** freeMe ); static void freeCTCData( CTCData* obj ) { freeAndReset( &( obj->mCTCStringMemory ) ); freeAndReset( &( obj->mCTCStringForErrorMsg ) ); obj->mCTCStringToParse = 0; } static void freeAndReset( char** freeMe ) { if ( *freeMe ) { free( *freeMe ); *freeMe = 0; } } /** CTC Tokens */ typedef enum { CTC_Region_type, CTC_Start_source_code_location, CTC_End_source_code_location, CTC_Has_copy_in, CTC_Has_copy_private, CTC_Has_first_private, CTC_Has_last_private, CTC_Has_no_wait, CTC_Has_ordered, CTC_Has_reduction, CTC_Schedule_type, CTC_Num_sections, CTC_Critical_name, CTC_User_region_name, CTC_User_group_name, CTC_Has_if, CTC_Has_collapse, CTC_Has_num_threads, CTC_Has_untied, CTC_No_token } CTCToken; static void ignoreLengthField( CTCData* obj ); static bool getKeyValuePair( CTCData* obj, char** key, char** value ); static CTCToken getCTCTokenFromString( char* token ); static void assignRegionType( CTCData* obj, const char* value ); static void assignSourceCodeLocation( CTCData* obj, char** fileName, unsigned* line1, unsigned* line2, char* value ); static void assignHasClause( CTCData* obj, bool* hasClause, const char* value ); static void assignScheduleType( CTCData* obj, char* restrict value ); static void assignUnsigned( CTCData* obj, unsigned* anUnsigned, const char* value ); static void assignString( char** aString, const char* value ); static void parseCTCStringAndAssignRegionInfoValues( CTCData* obj ) { char* key; char* value; ignoreLengthField( obj ); while ( getKeyValuePair( obj, &key, &value ) ) { switch ( getCTCTokenFromString( key ) ) { case CTC_Region_type: assignRegionType( obj, value ); break; case CTC_Start_source_code_location: assignSourceCodeLocation( obj, &obj->mRegionInfo->mStartFileName, &obj->mRegionInfo->mStartLine1, &obj->mRegionInfo->mStartLine2, value ); break; case CTC_End_source_code_location: assignSourceCodeLocation( obj, &obj->mRegionInfo->mEndFileName, &obj->mRegionInfo->mEndLine1, &obj->mRegionInfo->mEndLine2, value ); break; case CTC_Has_copy_in: assignHasClause( obj, &obj->mRegionInfo->mHasCopyIn, value ); break; case CTC_Has_copy_private: assignHasClause( obj, &obj->mRegionInfo->mHasCopyPrivate, value ); break; case CTC_Has_first_private: assignHasClause( obj, &obj->mRegionInfo->mHasFirstPrivate, value ); break; case CTC_Has_if: assignHasClause( obj, &obj->mRegionInfo->mHasIf, value ); break; case CTC_Has_last_private: assignHasClause( obj, &obj->mRegionInfo->mHasLastPrivate, value ); break; case CTC_Has_no_wait: assignHasClause( obj, &obj->mRegionInfo->mHasNoWait, value ); break; case CTC_Has_num_threads: assignHasClause( obj, &obj->mRegionInfo->mHasNumThreads, value ); break; case CTC_Has_ordered: assignHasClause( obj, &obj->mRegionInfo->mHasOrdered, value ); break; case CTC_Has_reduction: assignHasClause( obj, &obj->mRegionInfo->mHasReduction, value ); break; case CTC_Has_collapse: assignHasClause( obj, &obj->mRegionInfo->mHasCollapse, value ); break; case CTC_Has_untied: assignHasClause( obj, &obj->mRegionInfo->mHasUntied, value ); break; case CTC_Schedule_type: assignScheduleType( obj, value ); break; case CTC_Num_sections: assignUnsigned( obj, &obj->mRegionInfo->mNumSections, value ); break; case CTC_Critical_name: assignString( &obj->mRegionInfo->mCriticalName, value ); break; case CTC_User_region_name: assignString( &obj->mRegionInfo->mUserRegionName, value ); break; case CTC_User_group_name: assignString( &obj->mRegionInfo->mUserGroupName, value ); break; default: ctcError( obj, CTC_ERROR_Unknown_token, key ); } } } static void ignoreLengthField( CTCData* obj ) { /* We expect ctcString to look like "42*key=value*...**" * The length field is redundant and we don't use it in our parsing * implementation. */ while ( obj->mCTCStringToParse && isdigit( *obj->mCTCStringToParse ) ) { ++( obj->mCTCStringToParse ); } if ( !obj->mCTCStringToParse ) { ctcError( obj, CTC_ERROR_Ended_unexpectedly, 0 ); } if ( *obj->mCTCStringToParse != '*' ) { ctcError( obj, CTC_ERROR_No_separator_after_length_field, 0 ); } ++( obj->mCTCStringToParse ); if ( !obj->mCTCStringToParse ) { ctcError( obj, CTC_ERROR_Ended_unexpectedly, 0 ); } } static bool extractNextToken( char** string, const char tokenDelimiter ); static bool getKeyValuePair( CTCData* obj, char** key, char** value ) { /* We expect ctcString to look like "key=value*...**" or "*". */ if ( *( obj->mCTCStringToParse ) == '*' ) { return false; /* end of ctc string */ } if ( *( obj->mCTCStringToParse ) == '\0' ) { return false; /* also end of ctc string. we don't force the second "*" */ } *key = obj->mCTCStringToParse; if ( !extractNextToken( &obj->mCTCStringToParse, '=' ) ) { ctcError( obj, CTC_ERROR_No_key, *key ); } if ( strlen( *key ) == 0 ) { ctcError( obj, CTC_ERROR_Zero_length_key, 0 ); } *value = obj->mCTCStringToParse; if ( !extractNextToken( &obj->mCTCStringToParse, '*' ) ) { ctcError( obj, CTC_ERROR_No_value, *value ); } if ( strlen( *value ) == 0 ) { ctcError( obj, CTC_ERROR_Zero_length_value, 0 ); } return true; } static bool extractNextToken( char** string, const char tokenDelimiter ) { *string = strchr( *string, tokenDelimiter ); if ( !( *string && **string == tokenDelimiter ) ) { return false; } **string = '\0'; /* extraction */ ++( *string ); return true; } /** @brief matching between string description and CTC token*/ typedef struct { /** string representation*/ char* mTokenString; /** matching CTCToken*/ CTCToken mToken; } CTCTokenMapValueType; /** @brief map with CTC tokens*/ static const CTCTokenMapValueType ctcTokenMap[] = { /* Entries must be sorted to be used in binary search. */ /* If you add/remove items update ctcTokenMapSize */ { "criticalName", CTC_Critical_name }, { "escl", CTC_End_source_code_location }, { "hasCollapse", CTC_Has_collapse }, { "hasCopyIn", CTC_Has_copy_in }, { "hasCopyPrivate", CTC_Has_copy_private }, { "hasFirstPrivate", CTC_Has_first_private }, { "hasIf", CTC_Has_if }, { "hasLastPrivate", CTC_Has_last_private }, { "hasNoWait", CTC_Has_no_wait }, { "hasNumThreads", CTC_Has_num_threads }, { "hasOrdered", CTC_Has_ordered }, { "hasReduction", CTC_Has_reduction }, { "hasUntied", CTC_Has_untied }, { "numSections", CTC_Num_sections }, { "regionType", CTC_Region_type }, { "scheduleType", CTC_Schedule_type }, { "sscl", CTC_Start_source_code_location }, { "userGroupName", CTC_User_group_name }, { "userRegionName", CTC_User_region_name } }; /** @brief number of entries in ctcTokenMap*/ const size_t ctcTokenMapSize = sizeof( ctcTokenMap ) / sizeof( CTCTokenMapValueType ); static int ctcTokenMapCompare( const void* searchToken, const void* mapElem ); static CTCToken getCTCTokenFromString( char* token ) { CTCTokenMapValueType* mapElem = ( CTCTokenMapValueType* )bsearch( token, &ctcTokenMap, ctcTokenMapSize, sizeof( CTCTokenMapValueType ), ctcTokenMapCompare ); if ( mapElem ) { return mapElem->mToken; } else { return CTC_No_token; } } static int ctcTokenMapCompare( const void* searchToken, const void* mapElem ) { const char* const token = ( const char* )searchToken; CTCTokenMapValueType* elem = ( CTCTokenMapValueType* )mapElem; return strcmp( token, elem->mTokenString ); } /** @brief maching between region string and region type */ typedef struct { /** string representation*/ char* mRegionTypeString; /** matching region type*/ POMP2_Region_type mRegionType; } RegionTypesMapValueType; /** @brief map with region types*/ static const RegionTypesMapValueType regionTypesMap[] = { /* Entries must be sorted to be used in binary search. */ /* If you add/remove items, regionTypesMap_size */ { "atomic", POMP2_Atomic }, { "barrier", POMP2_Barrier }, { "critical", POMP2_Critical }, { "do", POMP2_Do }, { "flush", POMP2_Flush }, { "for", POMP2_For }, { "master", POMP2_Master }, { "ordered", POMP2_Ordered }, { "parallel", POMP2_Parallel }, { "paralleldo", POMP2_Parallel_do }, { "parallelfor", POMP2_Parallel_for }, { "parallelsections", POMP2_Parallel_sections }, { "parallelworkshare", POMP2_Parallel_workshare }, { "region", POMP2_User_region }, { "sections", POMP2_Sections }, { "single", POMP2_Single }, { "task", POMP2_Task }, { "taskuntied", POMP2_Taskuntied }, { "taskwait", POMP2_Taskwait }, { "workshare", POMP2_Workshare } }; /** @brief number of entries in regionTypesMap*/ const size_t regionTypesMapSize = sizeof( regionTypesMap ) / sizeof( RegionTypesMapValueType ); static POMP2_Region_type getRegionTypeFromString( const char* regionTypeString ); static void assignRegionType( CTCData* obj, const char* value ) { obj->mRegionInfo->mRegionType = getRegionTypeFromString( value ); if ( obj->mRegionInfo->mRegionType == POMP2_No_type ) { ctcError( obj, CTC_ERROR_Unknown_region_type, value ); } } static int regionTypesMapCompare( const void* searchKey, const void* mapElem ); static POMP2_Region_type getRegionTypeFromString( const char* regionTypeString ) { RegionTypesMapValueType* mapElem = ( RegionTypesMapValueType* )bsearch( regionTypeString, ®ionTypesMap, regionTypesMapSize, sizeof( RegionTypesMapValueType ), regionTypesMapCompare ); if ( mapElem ) { return mapElem->mRegionType; } else { return POMP2_No_type; } } static int regionTypesMapCompare( const void* searchKey, const void* mapElem ) { const char* const key = ( const char* )searchKey; RegionTypesMapValueType* elem = ( RegionTypesMapValueType* )mapElem; return strcmp( key, elem->mRegionTypeString ); } static void assignSourceCodeLocation( CTCData* obj, char** filename, unsigned* line1, unsigned* line2, char* value ) { /* We assume that value looks like "foo.c:42:43" */ char* token = value; int line1Tmp = -1; int line2Tmp = -1; bool continueExtraction; assert( *filename == 0 ); if ( ( continueExtraction = extractNextToken( &value, ':' ) ) ) { *filename = malloc( strlen( token ) * sizeof( char ) + 1 ); strcpy( *filename, token ); } token = value; if ( continueExtraction && ( continueExtraction = extractNextToken( &value, ':' ) ) ) { line1Tmp = atoi( token ); } token = value; if ( continueExtraction && extractNextToken( &value, '\0' ) ) { line2Tmp = atoi( token ); } if ( *filename != 0 && line1Tmp > -1 && line2Tmp > -1 ) { *line1 = line1Tmp; *line2 = line2Tmp; if ( *line1 > *line2 ) { ctcError( obj, CTC_ERROR_SCL_line_number_error, "line1 > line2" ); } } else { ctcError( obj, CTC_ERROR_SCL_error, 0 ); } } static void assignHasClause( CTCData* obj, bool* hasClause, const char* value ) { if ( !isdigit( *value ) ) { ctcError( obj, CTC_ERROR_Wrong_clause_value, value ); } int tmp = atoi( value ); if ( tmp != 0 && tmp != 1 ) { ctcError( obj, CTC_ERROR_Wrong_clause_value, value ); } *hasClause = tmp; } static POMP2_Schedule_type getScheduleTypeFromString( const char* key ); static void assignScheduleType( CTCData* obj, char* restrict value ) { char* token = NULL; token = strtok( value, "," ); if ( token ) { obj->mRegionInfo->mScheduleType = getScheduleTypeFromString( token ); } else { obj->mRegionInfo->mScheduleType = getScheduleTypeFromString( value ); } if ( obj->mRegionInfo->mScheduleType == POMP2_No_schedule ) { ctcError( obj, CTC_ERROR_Unknown_schedule_type, value ); } } static void assignUnsigned( CTCData* obj, unsigned* anUnsigned, const char* value ) { int tmp = atoi( value ); if ( tmp < 0 ) { ctcError( obj, CTC_ERROR_Unsigned_expected, value ); } *anUnsigned = tmp; } static void assignString( char** aString, const char* value ) { *aString = malloc( strlen( value ) * sizeof( char ) + 1 ); strcpy( *aString, value ); } static void checkConsistency( CTCData* obj ) { bool requiredAttributesFound; if ( obj->mRegionInfo->mRegionType == POMP2_No_type ) { ctcError( obj, CTC_ERROR_No_region_type, 0 ); return; } requiredAttributesFound = ( obj->mRegionInfo->mStartFileName && obj->mRegionInfo->mEndFileName ); if ( !requiredAttributesFound ) { ctcError( obj, CTC_ERROR_SCL_broken, 0 ); return; } if ( obj->mRegionInfo->mRegionType == POMP2_Sections && obj->mRegionInfo->mNumSections <= 0 ) { ctcError( obj, CTC_ERROR_Num_sections_invalid, 0 ); return; } if ( obj->mRegionInfo->mRegionType == POMP2_User_region && obj->mRegionInfo->mUserRegionName == 0 ) { ctcError( obj, CTC_ERROR_User_region_name_missing, 0 ); return; } if ( obj->mRegionInfo->mStartLine1 > obj->mRegionInfo->mStartLine2 ) { ctcError( obj, CTC_ERROR_Inconsistent_line_numbers, 0 ); return; } if ( obj->mRegionInfo->mEndLine1 > obj->mRegionInfo->mEndLine2 ) { ctcError( obj, CTC_ERROR_Inconsistent_line_numbers, 0 ); return; } /* A barrier, taskwait and flush does not have an end line number, since it * is not associated to a region.*/ if ( obj->mRegionInfo->mStartLine2 > obj->mRegionInfo->mEndLine1 && obj->mRegionInfo->mRegionType != POMP2_Barrier && obj->mRegionInfo->mRegionType != POMP2_Taskwait && obj->mRegionInfo->mRegionType != POMP2_Flush ) { ctcError( obj, CTC_ERROR_Inconsistent_line_numbers, 0 ); return; } } /*----------------------------------------------------------------------------*/ void freePOMP2RegionInfoMembers( POMP2_Region_info* regionInfo ) { freeAndReset( ®ionInfo->mStartFileName ); freeAndReset( ®ionInfo->mEndFileName ); freeAndReset( ®ionInfo->mCriticalName ); freeAndReset( ®ionInfo->mUserRegionName ); freeAndReset( ®ionInfo->mUserGroupName ); } /*----------------------------------------------------------------------------*/ /** @brief returns a region string*/ const char* pomp2RegionType2String( POMP2_Region_type regionType ) { int i; for ( i = 0; i < regionTypesMapSize; ++i ) { if ( regionType == regionTypesMap[ i ].mRegionType ) { return regionTypesMap[ i ].mRegionTypeString; } } return "no valid region type"; } /*----------------------------------------------------------------------------*/ /** @brief matching between schedule string description and schedule type*/ typedef struct { /** string representation */ char* mScheduleTypeString; /** matching schedule type*/ POMP2_Schedule_type mScheduleType; } ScheduleTypesMapValueType; /** @brief map with schedule types*/ static const ScheduleTypesMapValueType scheduleTypesMap[] = { /* Entries must be sorted to be used in binary search. */ /* If you add/remove items, scheduleTypesMapSize */ { "auto", POMP2_Auto }, { "dynamic", POMP2_Dynamic }, { "guided", POMP2_Guided }, { "runtime", POMP2_Runtime }, { "static", POMP2_Static } }; /** @brief number of entries in scheduleTypesMap*/ const size_t scheduleTypesMapSize = sizeof( scheduleTypesMap ) / sizeof( ScheduleTypesMapValueType ); static int scheduleTypesMapCompare( const void* searchKey, const void* mapElem ); /* @brief Assigns a schedule type according to an entry in the ctc string */ static POMP2_Schedule_type getScheduleTypeFromString( const char* key ) { ScheduleTypesMapValueType* mapElem = ( ScheduleTypesMapValueType* )bsearch( key, &scheduleTypesMap, scheduleTypesMapSize, sizeof( ScheduleTypesMapValueType ), scheduleTypesMapCompare ); if ( mapElem ) { return mapElem->mScheduleType; } else { return POMP2_No_schedule; } } static int scheduleTypesMapCompare( const void* searchKey, const void* mapElem ) { const char* const key = ( const char* )searchKey; ScheduleTypesMapValueType* elem = ( ScheduleTypesMapValueType* )mapElem; return strcmp( key, elem->mScheduleTypeString ); } /** @brief returns a string of the schedule type*/ const char* pomp2ScheduleType2String( POMP2_Schedule_type scheduleType ) { int i; for ( i = 0; i < scheduleTypesMapSize; ++i ) { if ( scheduleType == scheduleTypesMap[ i ].mScheduleType ) { return scheduleTypesMap[ i ].mScheduleTypeString; } } return "no valid schedule type"; } eztrace-1.1-7/extlib/opari2/src/pomp-lib-dummy/PaxHeaders.7332/pomp2_fwrapper.c0000644000000000000000000000013212617055645024073 xustar0030 mtime=1446796197.914458076 30 atime=1508138876.743939599 30 ctime=1508162367.717905918 eztrace-1.1-7/extlib/opari2/src/pomp-lib-dummy/pomp2_fwrapper.c0000644000175000017500000002363412617055645025272 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ /** @internal * * @file pomp2_fwrapper.c * @status alpha * * @maintainer Dirk Schmidl * * @authors Bernd Mohr * Dirk Schmidl * Peter Philippen * * @brief This file contains fortran wrapper functions.*/ #include #include #include #include #include #include "pomp2_fwrapper_def.h" /* * Fortran wrappers calling the C versions */ /* *INDENT-OFF* */ void FSUB(POMP2_Atomic_enter)(POMP2_Region_handle* regionHandle, char* ctc_string) { POMP2_Atomic_enter(regionHandle, ctc_string); } void FSUB(POMP2_Atomic_exit)(POMP2_Region_handle* regionHandle ) { POMP2_Atomic_exit(regionHandle ); } void FSUB(POMP2_Implicit_barrier_enter)( POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_old_task) { POMP2_Implicit_barrier_enter( regionHandle, pomp2_old_task ); } void FSUB(POMP2_Implicit_barrier_exit)( POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_old_task) { POMP2_Implicit_barrier_exit( regionHandle, *pomp2_old_task ); } void FSUB(POMP2_Barrier_enter)( POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_old_task, char* ctc_string) { POMP2_Barrier_enter( regionHandle, pomp2_old_task, ctc_string); } void FSUB(POMP2_Barrier_exit)( POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_old_task ) { POMP2_Barrier_exit( regionHandle, *pomp2_old_task ); } void FSUB(POMP2_Flush_enter)(POMP2_Region_handle* regionHandle, char* ctc_string ) { POMP2_Flush_enter(regionHandle, ctc_string ); } void FSUB(POMP2_Flush_exit)(POMP2_Region_handle* regionHandle ) { POMP2_Flush_exit(regionHandle ); } void FSUB(POMP2_Critical_begin)(POMP2_Region_handle* regionHandle ) { POMP2_Critical_begin(regionHandle ); } void FSUB(POMP2_Critical_end)(POMP2_Region_handle* regionHandle ) { POMP2_Critical_end(regionHandle ); } void FSUB(POMP2_Critical_enter)(POMP2_Region_handle* regionHandle, char* ctc_string) { POMP2_Critical_enter(regionHandle, ctc_string); } void FSUB(POMP2_Critical_exit)(POMP2_Region_handle* regionHandle ) { POMP2_Critical_exit(regionHandle ); } void FSUB(POMP2_Do_enter)(POMP2_Region_handle* regionHandle, char* ctc_string) { POMP2_For_enter(regionHandle, ctc_string); } void FSUB(POMP2_Do_exit)(POMP2_Region_handle* regionHandle ) { POMP2_For_exit(regionHandle ); } void FSUB(POMP2_Parallel_begin)( POMP2_Region_handle* regionHandle, POMP2_Task_handle* newTask, char* ctc_string ){ POMP2_Parallel_begin(regionHandle); } void FSUB(POMP2_Parallel_end)(POMP2_Region_handle* regionHandle) { POMP2_Parallel_end(regionHandle); } void FSUB(POMP2_Master_begin)(POMP2_Region_handle* regionHandle, char* ctc_string ) { POMP2_Master_begin(regionHandle, ctc_string ); } void FSUB(POMP2_Master_end)(POMP2_Region_handle* regionHandle ) { POMP2_Master_end(regionHandle ); } void FSUB(POMP2_Parallel_fork)(POMP2_Region_handle* regionHandle, int* if_clause, int* num_threads, POMP2_Task_handle* pomp2_old_task, char* ctc_string) { POMP2_Parallel_fork(regionHandle, *if_clause, *num_threads, pomp2_old_task, "dummy"); } void FSUB(POMP2_Parallel_join)(POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_old_task ) { POMP2_Parallel_join(regionHandle, *pomp2_old_task ); } void FSUB(POMP2_Section_begin)(POMP2_Region_handle* regionHandle, char* ctc_string ) { POMP2_Section_begin(regionHandle, ctc_string ); } void FSUB(POMP2_Section_end)(POMP2_Region_handle* regionHandle ) { POMP2_Section_end(regionHandle ); } void FSUB(POMP2_Sections_enter)(POMP2_Region_handle* regionHandle, char* ctc_string) { POMP2_Sections_enter(regionHandle, ctc_string); } void FSUB(POMP2_Sections_exit)(POMP2_Region_handle* regionHandle ) { POMP2_Sections_exit(regionHandle ); } void FSUB(POMP2_Single_begin)(POMP2_Region_handle* regionHandle ) { POMP2_Single_begin(regionHandle ); } void FSUB(POMP2_Single_end)(POMP2_Region_handle* regionHandle ) { POMP2_Single_end(regionHandle ); } void FSUB(POMP2_Single_enter)(POMP2_Region_handle* regionHandle, char* ctc_string) { POMP2_Single_enter(regionHandle, ctc_string); } void FSUB(POMP2_Ordered_exit)(POMP2_Region_handle* regionHandle ) { POMP2_Ordered_exit(regionHandle ); } void FSUB(POMP2_Ordered_begin)(POMP2_Region_handle* regionHandle ) { POMP2_Ordered_begin(regionHandle ); } void FSUB(POMP2_Ordered_end)(POMP2_Region_handle* regionHandle ) { POMP2_Ordered_end(regionHandle ); } void FSUB(POMP2_Ordered_enter)(POMP2_Region_handle* regionHandle, char* ctc_string) { POMP2_Ordered_enter(regionHandle, ctc_string); } void FSUB(POMP2_Single_exit)(POMP2_Region_handle* regionHandle ) { POMP2_Single_exit(regionHandle ); } void FSUB(POMP2_Task_create_begin)(POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_new_task, POMP2_Task_handle* pomp2_old_task, int* pomp2_if, char* ctc_string){ POMP2_Task_create_begin(regionHandle, pomp2_new_task, pomp2_old_task, *pomp2_if, ctc_string); } void FSUB(POMP2_Task_create_end)(POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_old_task ){ POMP2_Task_create_end(regionHandle, *pomp2_old_task); } void FSUB(POMP2_Task_begin)( POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_new_task ){ POMP2_Task_begin(regionHandle, *pomp2_new_task); } void FSUB(POMP2_Task_end)(POMP2_Region_handle* regionHandle){ POMP2_Task_end(regionHandle); } void FSUB(POMP2_Untied_task_create_begin)(POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_new_task, POMP2_Task_handle* pomp2_old_task, int* pomp2_if, char* ctc_string){ POMP2_Task_create_begin(regionHandle, pomp2_new_task, pomp2_old_task, *pomp2_if, ctc_string); } void FSUB(POMP2_Untied_task_create_end)(POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_old_task ){ POMP2_Task_create_end(regionHandle, *pomp2_old_task); } void FSUB(POMP2_Untied_task_begin)( POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_new_task ){ POMP2_Task_begin(regionHandle, *pomp2_new_task); } void FSUB(POMP2_Untied_task_end)(POMP2_Region_handle* regionHandle){ POMP2_Task_end(regionHandle); } void FSUB(POMP2_Taskwait_begin)(POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_old_task, char* ctc_string ){ POMP2_Taskwait_begin(regionHandle, pomp2_old_task, ctc_string ); } void FSUB(POMP2_Taskwait_end)(POMP2_Region_handle* regionHandle, POMP2_Task_handle* pomp2_old_task ){ POMP2_Taskwait_end(regionHandle, *pomp2_old_task); } void FSUB(POMP2_Workshare_enter)(POMP2_Region_handle* regionHandle, char* ctc_string) { POMP2_Workshare_enter(regionHandle, ctc_string); } void FSUB(POMP2_Workshare_exit)(POMP2_Region_handle* regionHandle ) { POMP2_Workshare_exit(regionHandle ); } void FSUB(POMP2_Assign_handle)(POMP2_Region_handle* regionHandle, char* ctc_string, int ctc_string_len) { char *str; str=(char*) malloc((ctc_string_len+1)*sizeof(char)); strncpy(str,ctc_string,ctc_string_len); str[ctc_string_len]='\0'; POMP2_Assign_handle(regionHandle,str); free(str); } /* *---------------------------------------------------------------- * Wrapper for omp_get_max_threads used in instrumentation * * In Fortran a wrapper function * pomp2_get_max_threads() is used, since it is not possible to * ensure, that omp_get_max_threads is not used in the user * program. We would need to parse much more of the Fortran * Syntax to detect these cases. The Wrapper function avoids * double definition of this function and avoids errors. * ******---------------------------------------------------------------- */ int FSUB(POMP2_Lib_get_max_threads)() { return omp_get_max_threads(); } eztrace-1.1-7/extlib/opari2/src/pomp-lib-dummy/PaxHeaders.7332/pomp2_fwrapper_base.h0000644000000000000000000000013212617055645025072 xustar0030 mtime=1446796197.914458076 30 atime=1508138876.819941498 30 ctime=1508162367.717905918 eztrace-1.1-7/extlib/opari2/src/pomp-lib-dummy/pomp2_fwrapper_base.h0000644000175000017500000000233412617055645026263 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. */ #include #include "pomp2_fwrapper_def.h" #ifndef POMP2_FWRAPPER_BASE_H #define POMP2_FWRAPPER_BASE_H extern void FSUB( omp_init_lock )( omp_lock_t* s ); extern void FSUB( omp_destroy_lock )( omp_lock_t* s ); extern void FSUB( omp_set_lock )( omp_lock_t* s ); extern void FSUB( omp_unset_lock )( omp_lock_t* s ); extern int FSUB( omp_test_lock )( omp_lock_t* s ); extern void FSUB( omp_init_nest_lock )( omp_nest_lock_t* s ); extern void FSUB( omp_destroy_nest_lock )( omp_nest_lock_t* s ); extern void FSUB( omp_set_nest_lock )( omp_nest_lock_t* s ); extern void FSUB( omp_unset_nest_lock )( omp_nest_lock_t* s ); extern int FSUB( omp_test_nest_lock )( omp_nest_lock_t* s ); #endif eztrace-1.1-7/extlib/opari2/src/pomp-lib-dummy/PaxHeaders.7332/foos.c0000644000000000000000000000013212617055645022076 xustar0030 mtime=1446796197.914458076 30 atime=1508138876.399931008 30 ctime=1508162367.717905918 eztrace-1.1-7/extlib/opari2/src/pomp-lib-dummy/foos.c0000644000175000017500000003055712617055645023277 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ /** @internal * * @file foos.c * @status alpha * * @maintainer Dirk Schmidl * * @authors Bernd Mohr * Dirk Schmidl * Peter Philippen * * @brief This file is used to check the Fotran mangling of the * used compiler. In getfname.f a Function foo_foo is * called. Here functions with mangled names exist * foo_foo, foo_foo_, _foo_foo_, ... , depending on the * function called a file pomp2_fwrapper_def.h is written * with a macro to mangle function names to fortran * function names.*/ #include #include #include static char* header = "/*\n" " * Fortan subroutine external name setup\n" " */\n" "\n" "#define POMP2_Finalize_U POMP2_FINALIZE\n" "#define POMP2_Init_U POMP2_INIT\n" "#define POMP2_Off_U POMP2_OFF\n" "#define POMP2_On_U POMP2_ON\n" "#define POMP2_Atomic_enter_U POMP2_ATOMIC_ENTER\n" "#define POMP2_Atomic_exit_U POMP2_ATOMIC_EXIT\n" "#define POMP2_Implicit_barrier_enter_U POMP2_IMPLICIT_BARRIER_ENTER\n" "#define POMP2_Implicit_barrier_exit_U POMP2_IMPLICIT_BARRIER_EXIT\n" "#define POMP2_Barrier_enter_U POMP2_BARRIER_ENTER\n" "#define POMP2_Barrier_exit_U POMP2_BARRIER_EXIT\n" "#define POMP2_Flush_enter_U POMP2_FLUSH_ENTER\n" "#define POMP2_Flush_exit_U POMP2_FLUSH_EXIT\n" "#define POMP2_Critical_begin_U POMP2_CRITICAL_BEGIN\n" "#define POMP2_Critical_end_U POMP2_CRITICAL_END\n" "#define POMP2_Critical_enter_U POMP2_CRITICAL_ENTER\n" "#define POMP2_Critical_exit_U POMP2_CRITICAL_EXIT\n" "#define POMP2_Do_enter_U POMP2_DO_ENTER\n" "#define POMP2_Do_exit_U POMP2_DO_EXIT\n" "#define POMP2_Master_begin_U POMP2_MASTER_BEGIN\n" "#define POMP2_Master_end_U POMP2_MASTER_END\n" "#define POMP2_Parallel_begin_U POMP2_PARALLEL_BEGIN\n" "#define POMP2_Parallel_end_U POMP2_PARALLEL_END\n" "#define POMP2_Parallel_enter_U POMP2_PARALLEL_ENTER\n" "#define POMP2_Parallel_exit_U POMP2_PARALLEL_EXIT\n" "#define POMP2_Parallel_fork_U POMP2_PARALLEL_FORK\n" "#define POMP2_Parallel_join_U POMP2_PARALLEL_JOIN\n" "#define POMP2_Section_begin_U POMP2_SECTION_BEGIN\n" "#define POMP2_Section_end_U POMP2_SECTION_END\n" "#define POMP2_Section_enter_U POMP2_SECTION_ENTER\n" "#define POMP2_Section_exit_U POMP2_SECTION_EXIT\n" "#define POMP2_Sections_enter_U POMP2_SECTIONS_ENTER\n" "#define POMP2_Sections_exit_U POMP2_SECTIONS_EXIT\n" "#define POMP2_Single_begin_U POMP2_SINGLE_BEGIN\n" "#define POMP2_Single_end_U POMP2_SINGLE_END\n" "#define POMP2_Single_enter_U POMP2_SINGLE_ENTER\n" "#define POMP2_Single_exit_U POMP2_SINGLE_EXIT\n" "#define POMP2_Ordered_begin_U POMP2_ORDERED_BEGIN\n" "#define POMP2_Ordered_end_U POMP2_ORDERED_END\n" "#define POMP2_Ordered_enter_U POMP2_ORDERED_ENTER\n" "#define POMP2_Ordered_exit_U POMP2_ORDERED_EXIT\n" "#define POMP2_Task_begin_U POMP2_TASK_BEGIN\n" "#define POMP2_Task_end_U POMP2_TASK_END\n" "#define POMP2_Task_create_begin_U POMP2_TASK_CREATE_BEGIN\n" "#define POMP2_Task_create_end_U POMP2_TASK_CREATE_END\n" "#define POMP2_Untied_task_begin_U POMP2_UNTIED_TASK_BEGIN\n" "#define POMP2_Untied_task_end_U POMP2_UNTIED_TASK_END\n" "#define POMP2_Untied_task_create_begin_U POMP2_UNTIED_TASK_CREATE_BEGIN\n" "#define POMP2_Untied_task_create_end_U POMP2_UNTIED_TASK_CREATE_END\n" "#define POMP2_Taskwait_begin_U POMP2_TASKWAIT_BEGIN\n" "#define POMP2_Taskwait_end_U POMP2_TASKWAIT_END\n" "#define POMP2_Workshare_enter_U POMP2_WORKSHARE_ENTER\n" "#define POMP2_Workshare_exit_U POMP2_WORKSHARE_EXIT\n" "#define POMP2_Begin_U POMP2_BEGIN\n" "#define POMP2_End_U POMP2_END\n" "#define POMP2_Lib_get_max_threads_U POMP2_LIB_GET_MAX_THREADS\n" "#define POMP2_Init_lock_U POMP2_INIT_LOCK\n" "#define POMP2_Destroy_lock_U POMP2_DESTROY_LOCK\n" "#define POMP2_Set_lock_U POMP2_SET_LOCK\n" "#define POMP2_Unset_lock_U POMP2_UNSET_LOCK\n" "#define POMP2_Test_lock_U POMP2_TEST_LOCK\n" "#define POMP2_Init_nest_lock_U POMP2_INIT_NEST_LOCK\n" "#define POMP2_Destroy_nest_lock_U POMP2_DESTROY_NEST_LOCK\n" "#define POMP2_Set_nest_lock_U POMP2_SET_NEST_LOCK\n" "#define POMP2_Unset_nest_lock_U POMP2_UNSET_NEST_LOCK\n" "#define POMP2_Test_nest_lock_U POMP2_TEST_NEST_LOCK\n" "#define POMP2_Assign_handle_U POMP2_ASSIGN_HANDLE\n" "#define omp_init_lock_U OMP_INIT_LOCK\n" "#define omp_destroy_lock_U OMP_DESTROY_LOCK\n" "#define omp_set_lock_U OMP_SET_LOCK\n" "#define omp_unset_lock_U OMP_UNSET_LOCK\n" "#define omp_test_lock_U OMP_TEST_LOCK\n" "#define omp_init_nest_lock_U OMP_INIT_NEST_LOCK\n" "#define omp_destroy_nest_lock_U OMP_DESTROY_NEST_LOCK\n" "#define omp_set_nest_lock_U OMP_SET_NEST_LOCK\n" "#define omp_unset_nest_lock_U OMP_UNSET_NEST_LOCK\n" "#define omp_test_nest_lock_U OMP_TEST_NEST_LOCK\n" "\n" "#define POMP2_Finalize_L pomp2_finalize\n" "#define POMP2_Init_L pomp2_init\n" "#define POMP2_Off_L pomp2_off\n" "#define POMP2_On_L pomp2_on\n" "#define POMP2_Atomic_enter_L pomp2_atomic_enter\n" "#define POMP2_Atomic_exit_L pomp2_atomic_exit\n" "#define POMP2_Implicit_barrier_enter_L pomp2_implicit_barrier_enter\n" "#define POMP2_Implicit_barrier_exit_L pomp2_implicit_barrier_exit\n" "#define POMP2_Barrier_enter_L pomp2_barrier_enter\n" "#define POMP2_Barrier_exit_L pomp2_barrier_exit\n" "#define POMP2_Flush_enter_L pomp2_flush_enter\n" "#define POMP2_Flush_exit_L pomp2_flush_exit\n" "#define POMP2_Critical_begin_L pomp2_critical_begin\n" "#define POMP2_Critical_end_L pomp2_critical_end\n" "#define POMP2_Critical_enter_L pomp2_critical_enter\n" "#define POMP2_Critical_exit_L pomp2_critical_exit\n" "#define POMP2_Do_enter_L pomp2_do_enter\n" "#define POMP2_Do_exit_L pomp2_do_exit\n" "#define POMP2_Master_begin_L pomp2_master_begin\n" "#define POMP2_Master_end_L pomp2_master_end\n" "#define POMP2_Parallel_begin_L pomp2_parallel_begin\n" "#define POMP2_Parallel_end_L pomp2_parallel_end\n" "#define POMP2_Parallel_enter_L pomp2_parallel_enter\n" "#define POMP2_Parallel_exit_L pomp2_parallel_exit\n" "#define POMP2_Parallel_fork_L pomp2_parallel_fork\n" "#define POMP2_Parallel_join_L pomp2_parallel_join\n" "#define POMP2_Section_begin_L pomp2_section_begin\n" "#define POMP2_Section_end_L pomp2_section_end\n" "#define POMP2_Section_enter_L pomp2_section_enter\n" "#define POMP2_Section_exit_L pomp2_section_exit\n" "#define POMP2_Sections_enter_L pomp2_sections_enter\n" "#define POMP2_Sections_exit_L pomp2_sections_exit\n" "#define POMP2_Single_begin_L pomp2_single_begin\n" "#define POMP2_Single_end_L pomp2_single_end\n" "#define POMP2_Single_enter_L pomp2_single_enter\n" "#define POMP2_Single_exit_L pomp2_single_exit\n" "#define POMP2_Ordered_begin_L pomp2_ordered_begin\n" "#define POMP2_Ordered_end_L pomp2_ordered_end\n" "#define POMP2_Ordered_enter_L pomp2_ordered_enter\n" "#define POMP2_Ordered_exit_L pomp2_ordered_exit\n" "#define POMP2_Task_begin_L pomp2_task_begin\n" "#define POMP2_Task_end_L pomp2_task_end\n" "#define POMP2_Task_create_begin_L pomp2_task_create_begin\n" "#define POMP2_Task_create_end_L pomp2_task_create_end\n" "#define POMP2_Untied_task_begin_L pomp2_untied_task_begin\n" "#define POMP2_Untied_task_end_L pomp2_untied_task_end\n" "#define POMP2_Untied_task_create_begin_L pomp2_untied_task_create_begin\n" "#define POMP2_Untied_task_create_end_L pomp2_untied_task_create_end\n" "#define POMP2_Taskwait_begin_L pomp2_taskwait_begin\n" "#define POMP2_Taskwait_end_L pomp2_taskwait_end\n" "#define POMP2_Workshare_enter_L pomp2_workshare_enter\n" "#define POMP2_Workshare_exit_L pomp2_workshare_exit\n" "#define POMP2_Begin_L pomp2_begin\n" "#define POMP2_End_L pomp2_end\n" "#define POMP2_Lib_get_max_threads_L pomp2_lib_get_max_threads\n" "#define POMP2_Init_lock_L pomp2_init_lock\n" "#define POMP2_Destroy_lock_L pomp2_destroy_lock\n" "#define POMP2_Set_lock_L pomp2_set_lock\n" "#define POMP2_Unset_lock_L pomp2_unset_lock\n" "#define POMP2_Test_lock_L pomp2_test_lock\n" "#define POMP2_Init_nest_lock_L pomp2_init_nest_lock\n" "#define POMP2_Destroy_nest_lock_L pomp2_destroy_nest_lock\n" "#define POMP2_Set_nest_lock_L pomp2_set_nest_lock\n" "#define POMP2_Unset_nest_lock_L pomp2_unset_nest_lock\n" "#define POMP2_Test_nest_lock_L pomp2_test_nest_lock\n" "#define POMP2_Assign_handle_L pomp2_assign_handle\n" "#define omp_init_lock_L omp_init_lock\n" "#define omp_destroy_lock_L omp_destroy_lock\n" "#define omp_set_lock_L omp_set_lock\n" "#define omp_unset_lock_L omp_unset_lock\n" "#define omp_test_lock_L omp_test_lock\n" "#define omp_init_nest_lock_L omp_init_nest_lock\n" "#define omp_destroy_nest_lock_L omp_destroy_nest_lock\n" "#define omp_set_nest_lock_L omp_set_nest_lock\n" "#define omp_unset_nest_lock_L omp_unset_nest_lock\n" "#define omp_test_nest_lock_L omp_test_nest_lock\n" "\n" "#define XSUFFIX(name) name##_\n" "#define XSUFFIX2(name) name##__\n" "#define XPREFIX(name) _##name\n" "#define XPREFIX2(name) __##name\n" "\n" "#define SUFFIX(name) XSUFFIX(name)\n" "#define SUFFIX2(name) XSUFFIX2(name)\n" "#define PREFIX(name) XPREFIX(name)\n" "#define PREFIX2(name) XPREFIX2(name)\n" "\n" "#define UPCASE(name) name##_U\n" "#define LOWCASE(name) name##_L\n" "\n"; static void generate( char* str ) { FILE* f = fopen( "pomp2_fwrapper_def.h", "w" ); if ( f == NULL ) { perror( "pomp2_fwrapper_def.h" ); exit( 1 ); } fputs( header, f ); fputs( str, f ); fputs( "\n", f ); fclose( f ); } void foo_foo() { generate( "#define FSUB(name) LOWCASE(name)" ); } void foo_foo_() { generate( "#define FSUB(name) SUFFIX(LOWCASE(name))" ); } void foo_foo__() { generate( "#define FSUB(name) SUFFIX2(LOWCASE(name))" ); } void _foo_foo() { generate( "#define FSUB(name) PREFIX(LOWCASE(name))" ); } void __foo_foo() { generate( "#define FSUB(name) PREFIX2(LOWCASE(name))" ); } void _foo_foo_() { generate( "#define FSUB(name) PREFIX(SUFFIX(LOWCASE(name)))" ); } void FOO_FOO() { generate( "#define FSUB(name) UPCASE(name)" ); } void FOO_FOO_() { generate( "#define FSUB(name) SUFFIX(UPCASE(name))" ); } void FOO_FOO__() { generate( "#define FSUB(name) SUFFIX2(UPCASE(name))" ); } void _FOO_FOO() { generate( "#define FSUB(name) PREFIX(UPCASE(name))" ); } void __FOO_FOO() { generate( "#define FSUB(name) PREFIX2(UPCASE(name))" ); } void _FOO_FOO_() { generate( "#define FSUB(name) PREFIX(SUFFIX(UPCASE(name)))" ); } eztrace-1.1-7/extlib/opari2/PaxHeaders.7332/NEWS0000644000000000000000000000013112617055645016023 xustar0030 mtime=1446796197.894457451 30 atime=1507797543.846889569 29 ctime=1508162367.32587168 eztrace-1.1-7/extlib/opari2/NEWS0000644000175000017500000000000012617055645017201 0ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/PaxHeaders.7332/build-config0000644000000000000000000000013013171135477017606 xustar0029 mtime=1508162367.70590487 30 atime=1508162367.741908015 29 ctime=1508162367.70590487 eztrace-1.1-7/extlib/opari2/build-config/0000755000175000017500000000000013171135477021054 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/build-config/PaxHeaders.7332/missing0000644000000000000000000000013213171135244021251 xustar0030 mtime=1508162212.113260234 30 atime=1508162287.711116452 30 ctime=1508162367.297869235 eztrace-1.1-7/extlib/opari2/build-config/missing0000755000175000017500000001533013171135244022445 0ustar00trahaytrahay00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/extlib/opari2/build-config/PaxHeaders.7332/install-sh0000644000000000000000000000013213171135244021656 xustar0030 mtime=1508162212.113260234 30 atime=1508162212.113260234 30 ctime=1508162367.297869235 eztrace-1.1-7/extlib/opari2/build-config/install-sh0000755000175000017500000003546313171135244023063 0ustar00trahaytrahay00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2014-09-12.12; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) # $RANDOM is not portable (e.g. dash); use it when possible to # lower collision chance tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 # As "mkdir -p" follows symlinks and we work in /tmp possibly; so # create the $tmpdir first (and fail if unsuccessful) to make sure # that nobody tries to guess the $tmpdir name. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/extlib/opari2/build-config/PaxHeaders.7332/REVISION0000644000000000000000000000013212617055645021050 xustar0030 mtime=1446796197.894457451 30 atime=1508162287.687114489 30 ctime=1508162367.445882162 eztrace-1.1-7/extlib/opari2/build-config/REVISION0000644000175000017500000000000512617055645022232 0ustar00trahaytrahay000000000000001675 eztrace-1.1-7/extlib/opari2/build-config/PaxHeaders.7332/compile0000644000000000000000000000012713171135236021235 xustar0029 mtime=1508162206.64886837 29 atime=1508162206.64886837 29 ctime=1508162367.32587168 eztrace-1.1-7/extlib/opari2/build-config/compile0000755000175000017500000001624513171135236022433 0ustar00trahaytrahay00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/extlib/opari2/build-config/PaxHeaders.7332/config.sub0000644000000000000000000000013213171135244021635 xustar0030 mtime=1508162212.109259944 30 atime=1508162287.743119069 30 ctime=1508162367.297869235 eztrace-1.1-7/extlib/opari2/build-config/config.sub0000755000175000017500000010676313171135244023044 0ustar00trahaytrahay00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2016 Free Software Foundation, Inc. timestamp='2016-11-04' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ kopensolaris*-gnu* | cloudabi*-eabi* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | e2k | epiphany \ | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pru \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pru-* \ | pyramid-* \ | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; asmjs) basic_machine=asmjs-unknown ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; e500v[12]) basic_machine=powerpc-unknown os=$os"spe" ;; e500v[12]-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` os=$os"spe" ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ | -onefs* | -tirtos* | -phoenix* | -fuchsia*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -ios) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: eztrace-1.1-7/extlib/opari2/build-config/PaxHeaders.7332/REVISION_COMMON0000644000000000000000000000013212617055645022120 xustar0030 mtime=1446796197.894457451 30 atime=1508162287.691114816 30 ctime=1508162367.445882162 eztrace-1.1-7/extlib/opari2/build-config/REVISION_COMMON0000644000175000017500000000000512617055645023302 0ustar00trahaytrahay000000000000001677 eztrace-1.1-7/extlib/opari2/build-config/PaxHeaders.7332/depcomp0000644000000000000000000000013113171135236021227 xustar0030 mtime=1508162206.692871504 30 atime=1508162289.319248122 29 ctime=1508162367.32587168 eztrace-1.1-7/extlib/opari2/build-config/depcomp0000755000175000017500000005601713171135236022433 0ustar00trahaytrahay00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2016-01-11.22; # UTC # Copyright (C) 1999-2017 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/extlib/opari2/build-config/PaxHeaders.7332/VERSION0000644000000000000000000000013212617055645020737 xustar0030 mtime=1446796197.894457451 30 atime=1508162201.828527023 30 ctime=1508162367.425880415 eztrace-1.1-7/extlib/opari2/build-config/VERSION0000644000175000017500000000000512617055645022121 0ustar00trahaytrahay000000000000001.0.2eztrace-1.1-7/extlib/opari2/build-config/PaxHeaders.7332/test-driver0000644000000000000000000000013113171135236022050 xustar0030 mtime=1508162206.732874353 30 atime=1508162206.732874353 29 ctime=1508162367.70590487 eztrace-1.1-7/extlib/opari2/build-config/test-driver0000755000175000017500000001104013171135236023237 0ustar00trahaytrahay00000000000000#! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2013-07-13.22; # UTC # Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <$log_file 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then tweaked_estatus=1 else tweaked_estatus=$estatus fi case $tweaked_estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report the test outcome and exit status in the logs, so that one can # know whether the test passed or failed simply by looking at the '.log' # file, without the need of also peaking into the corresponding '.trs' # file (automake bug#11814). echo "$res $test_name (exit status: $estatus)" >>$log_file # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/extlib/opari2/build-config/PaxHeaders.7332/ltmain.sh0000644000000000000000000000013113171135233021472 xustar0030 mtime=1508162203.488644118 30 atime=1508162292.723527638 29 ctime=1508162367.32987203 eztrace-1.1-7/extlib/opari2/build-config/ltmain.sh0000644000175000017500000117147413171135233022701 0ustar00trahaytrahay00000000000000#! /bin/sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2014-01-03.01 # libtool (GNU libtool) 2.4.6 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . PROGRAM=libtool PACKAGE=libtool VERSION="2.4.6 Debian-2.4.6-2" package_revision=2.4.6 ## ------ ## ## Usage. ## ## ------ ## # Run './libtool --help' for help with using this script from the # command line. ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # After configure completes, it has a better idea of some of the # shell tools we need than the defaults used by the functions shared # with bootstrap, so set those here where they can still be over- # ridden by the user, but otherwise take precedence. : ${AUTOCONF="autoconf"} : ${AUTOMAKE="automake"} ## -------------------------- ## ## Source external libraries. ## ## -------------------------- ## # Much of our low-level functionality needs to be sourced from external # libraries, which are installed to $pkgauxdir. # Set a version string for this script. scriptversion=2015-01-20.17; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # Copyright (C) 2004-2015 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. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 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. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNES 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 . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some retarded systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo 'GREP' >> conftest.nl "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s|\([`"$\\]\)|\\\1|g' # Same as above, but do not quote variable references. sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' # Sed substitution that converts a w32 file name or path # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_double_quote_subst, that '$' was protected from # expansion. Since each input '\' is now two '\'s, look for any number # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath=$0 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # We should try to minimise forks, especially on Windows where they are # unreasonably slow, so skip the feature probes when bash or zsh are # being used: if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then : ${_G_HAVE_ARITH_OP="yes"} : ${_G_HAVE_XSI_OPS="yes"} # The += operator was introduced in bash 3.1 case $BASH_VERSION in [12].* | 3.0 | 3.0*) ;; *) : ${_G_HAVE_PLUSEQ_OP="yes"} ;; esac fi # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. test -z "$_G_HAVE_PLUSEQ_OP" \ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ && _G_HAVE_PLUSEQ_OP=yes if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1+=\\ \$func_quote_for_eval_result" }' else func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1=\$$1\\ \$func_quote_for_eval_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT # -------------------------------------------------------- # Perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_mkdir_p_IFS # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # func_normal_abspath PATH # ------------------------ # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` while :; do # Processed it all yet? if test / = "$func_normal_abspath_tpath"; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result"; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=$func_dirname_result if test -z "$func_relative_path_tlibdir"; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_for_eval ARG... # -------------------------- # Aesthetically quote ARGs to be evaled later. # This function returns two values: # i) func_quote_for_eval_result # double-quoted, suitable for a subsequent eval # ii) func_quote_for_eval_unquoted_result # has all characters that are still active within double # quotes backslashified. func_quote_for_eval () { $debug_cmd func_quote_for_eval_unquoted_result= func_quote_for_eval_result= while test 0 -lt $#; do case $1 in *[\\\`\"\$]*) _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; *) _G_unquoted_arg=$1 ;; esac if test -n "$func_quote_for_eval_unquoted_result"; then func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" else func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" fi case $_G_unquoted_arg in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_quoted_arg=\"$_G_unquoted_arg\" ;; *) _G_quoted_arg=$_G_unquoted_arg ;; esac if test -n "$func_quote_for_eval_result"; then func_append func_quote_for_eval_result " $_G_quoted_arg" else func_append func_quote_for_eval_result "$_G_quoted_arg" fi shift done } # func_quote_for_expand ARG # ------------------------- # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { $debug_cmd case $1 in *[\\\`\"]*) _G_arg=`$ECHO "$1" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; *) _G_arg=$1 ;; esac case $_G_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_arg=\"$_G_arg\" ;; esac func_quote_for_expand_result=$_G_arg } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_for_expand "$_G_cmd" eval "func_notquiet $func_quote_for_expand_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_for_expand "$_G_cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_tr_sh # ---------- # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: #! /bin/sh # Set a version string for this script. scriptversion=2014-01-07.03; # UTC # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # Copyright (C) 2010-2015 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. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# warranty; '. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # to the main code. A hook is just a named list of of function, that can # be run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of functions called by FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It is assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook funcions.n" ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do eval $_G_hook '"$@"' # store returned options list back into positional # parameters for next 'cmd' execution. eval _G_hook_result=\$${_G_hook}_result eval set dummy "$_G_hook_result"; shift done func_quote_for_eval ${1+"$@"} func_run_hooks_result=$func_quote_for_eval_result } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list in your hook function, remove any # options that you action, and then pass back the remaining unprocessed # options in '_result', escaped suitably for # 'eval'. Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # func_quote_for_eval ${1+"$@"} # my_options_prep_result=$func_quote_for_eval_result # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # # Note that for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # ;; # *) set dummy "$_G_opt" "$*"; shift; break ;; # esac # done # # func_quote_for_eval ${1+"$@"} # my_silent_option_result=$func_quote_for_eval_result # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # # func_quote_for_eval ${1+"$@"} # my_option_validation_result=$func_quote_for_eval_result # } # func_add_hook func_validate_options my_option_validation # # You'll alse need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd func_options_prep ${1+"$@"} eval func_parse_options \ ${func_options_prep_result+"$func_options_prep_result"} eval func_validate_options \ ${func_parse_options_result+"$func_parse_options_result"} eval func_run_hooks func_options \ ${func_validate_options_result+"$func_validate_options_result"} # save modified positional parameters for caller func_options_result=$func_run_hooks_result } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propogate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before # returning. func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= func_run_hooks func_options_prep ${1+"$@"} # save modified positional parameters for caller func_options_prep_result=$func_run_hooks_result } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd func_parse_options_result= # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. func_run_hooks func_parse_options ${1+"$@"} # Adjust func_parse_options positional parameters to match eval set dummy "$func_run_hooks_result"; shift # Break out of the loop if we already parsed every option. test $# -gt 0 || break _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) test $# = 0 && func_missing_arg $_G_opt && break case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} func_parse_options_result=$func_quote_for_eval_result } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" func_run_hooks func_validate_options ${1+"$@"} # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE # save modified positional parameters for caller func_validate_options_result=$func_run_hooks_result } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables after # splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} test "x$func_split_equals_lhs" = "x$1" \ && func_split_equals_rhs= }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # func_split_short_opt SHORTOPT # ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /(C)/!b go :more /\./!{ N s|\n# | | b more } :go /^# Written by /,/# warranty; / { s|^# || s|^# *$|| s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| p } /^# Written by / { s|^# || p } /^warranty; /q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. scriptversion='(GNU libtool) 2.4.6' # func_echo ARG... # ---------------- # Libtool also displays the current mode in messages, so override # funclib.sh func_echo with this custom definition. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" done IFS=$func_echo_IFS } # func_warning ARG... # ------------------- # Libtool warnings are not categorized, so override funclib.sh # func_warning with this simpler definition. func_warning () { $debug_cmd $warning_func ${1+"$@"} } ## ---------------- ## ## Options parsing. ## ## ---------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --mode=MODE use operation mode MODE --no-warnings equivalent to '-Wnone' --preserve-dup-deps don't remove duplicate dependency libraries --quiet, --silent don't print informational messages --tag=TAG use configuration variables from tag TAG -v, --verbose print more informational messages than default --version print version information -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. When passed as first option, '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. Try '$progname --help --mode=MODE' for a more detailed description of MODE. When reporting a bug, please describe a test case to reproduce it and include the following information: host-triplet: $host shell: $SHELL compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) version: $progname $scriptversion Debian-2.4.6-2 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . GNU libtool home page: . General help using GNU software: ." exit 0 } # func_lo2o OBJECT-NAME # --------------------- # Transform OBJECT-NAME from a '.lo' suffix to the platform specific # object suffix. lo2o=s/\\.lo\$/.$objext/ o2lo=s/\\.$objext\$/.lo/ if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_lo2o () { case $1 in *.lo) func_lo2o_result=${1%.lo}.$objext ;; * ) func_lo2o_result=$1 ;; esac }' # func_xform LIBOBJ-OR-SOURCE # --------------------------- # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) # suffix to a '.lo' libtool-object suffix. eval 'func_xform () { func_xform_result=${1%.*}.lo }' else # ...otherwise fall back to using sed. func_lo2o () { func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` } func_xform () { func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` } fi # func_fatal_configuration ARG... # ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func__fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } # func_config # ----------- # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # ------------- # Display the features supported by this script. func_features () { echo "host: $host" if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag TAGNAME # ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname=$1 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf=/$re_begincf/,/$re_endcf/p # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # libtool_options_prep [ARG]... # ----------------------------- # Preparation for options parsed by libtool. libtool_options_prep () { $debug_mode # Option defaults: opt_config=false opt_dlopen= opt_dry_run=false opt_help=false opt_mode= opt_preserve_dup_deps=false opt_quiet=false nonopt= preserve_args= # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Pass back the list of options. func_quote_for_eval ${1+"$@"} libtool_options_prep_result=$func_quote_for_eval_result } func_add_hook func_options_prep libtool_options_prep # libtool_parse_options [ARG]... # --------------------------------- # Provide handling for libtool specific options. libtool_parse_options () { $debug_cmd # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) func_config ;; --dlopen|-dlopen) opt_dlopen="${opt_dlopen+$opt_dlopen }$1" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) func_features ;; --finish) set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $_G_opt && break opt_mode=$1 case $1 in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $_G_opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" ;; --no-warnings|--no-warning|--no-warn) opt_warning=false func_append preserve_args " $_G_opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $_G_opt" ;; --silent|--quiet) opt_quiet=: opt_verbose=false func_append preserve_args " $_G_opt" ;; --tag) test $# = 0 && func_missing_arg $_G_opt && break opt_tag=$1 func_append preserve_args " $_G_opt $1" func_enable_tag "$1" shift ;; --verbose|-v) opt_quiet=false opt_verbose=: func_append preserve_args " $_G_opt" ;; # An option not handled by this hook function: *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} libtool_parse_options_result=$func_quote_for_eval_result } func_add_hook func_parse_options libtool_parse_options # libtool_validate_options [ARG]... # --------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. libtool_validate_options () { # save first non-option argument if test 0 -lt $#; then nonopt=$1 shift fi # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" case $host in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match test yes != "$build_libtool_libs" \ && test yes != "$build_old_libs" \ && func_fatal_configuration "not configured to build any kind of library" # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test execute != "$opt_mode"; then func_error "unrecognized option '-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help=$help help="Try '$progname --help --mode=$opt_mode' for more information." } # Pass back the unparsed argument list func_quote_for_eval ${1+"$@"} libtool_validate_options_result=$func_quote_for_eval_result } func_add_hook func_validate_options libtool_validate_options # Process options as early as possible so that --help and --version # can return quickly. func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## ----------- ## ## Main. ## ## ----------- ## magic='%%%MAGIC variable%%%' magic_exe='%%%MAGIC EXE variable%%%' # Global variables. extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # func_generated_by_libtool # True iff stdin has been generated by Libtool. This function is only # a basic sanity check; it will hardly flush out determined imposters. func_generated_by_libtool_p () { $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test yes = "$lalib_p" } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { test -f "$1" && $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $debug_cmd save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # 'FILE.' does not work on cygwin managed mounts. func_source () { $debug_cmd case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $debug_cmd if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=$1 if test yes = "$build_libtool_libs"; then write_lobj=\'$2\' else write_lobj=none fi if test yes = "$build_old_libs"; then write_oldobj=\'$3\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $debug_cmd # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $debug_cmd if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $debug_cmd # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $debug_cmd if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result=$1 fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $debug_cmd if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result=$3 fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $debug_cmd case $4 in $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $debug_cmd $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $debug_cmd case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result=$1 } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $debug_cmd if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd=func_convert_path_$func_stripname_result fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $debug_cmd func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result=$1 } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_dll_def_p FILE # True iff FILE is a Windows DLL '.def' file. # Keep in sync with _LT_DLL_DEF_P in libtool.m4 func_dll_def_p () { $debug_cmd func_dll_def_p_tmp=`$SED -n \ -e 's/^[ ]*//' \ -e '/^\(;.*\)*$/d' \ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ -e q \ "$1"` test DEF = "$func_dll_def_p_tmp" } # func_mode_compile arg... func_mode_compile () { $debug_cmd # Get the compilation command and the source file. base_compile= srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg=$arg arg_mode=normal ;; target ) libobj=$arg arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs=$IFS; IFS=, for arg in $args; do IFS=$save_ifs func_append_quoted lastarg "$arg" done IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg=$srcfile srcfile=$arg ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj=$func_basename_result } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test yes = "$build_libtool_libs" \ || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname=$func_basename_result xdir=$func_dirname_result lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test no = "$compiler_c_o"; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext lockfile=$output_obj.lock else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test yes = "$build_old_libs"; then if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix '.c' with the library object suffix, '.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the '--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE use a list of object files found in FILE to specify objects -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with '-') are ignored. Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in '.la', then a libtool library is created, only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created using 'ar' and 'ranlib', or on Windows using 'lib'. If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test : = "$opt_help"; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | $SED '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $debug_cmd # The first argument is the command name. cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "'$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir=$func_dirname_result ;; *) func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file=$progdir/$program fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if $opt_dry_run; then # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd=\$cmd$args fi } test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $debug_cmd libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "'$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument '$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $debug_cmd # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=false stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=: if $isdir; then destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." destdir=$func_dirname_result destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking '$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname=$1 shift srcname=$realname test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme=$stripme case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= ;; esac ;; os2*) case $realname in *_dll.a) tstripme= ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name=$func_basename_result instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest=$destfile destfile= ;; *) func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=.exe fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script '$wrapper'" finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then func_warning "'$lib' has not been installed in '$libdir'" finalize=false fi done relink_command= func_source "$wrapper" outputname= if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file=$func_basename_result outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file=$outputname else func_warning "cannot relink '$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name=$func_basename_result # Set up the ranlib parameters. oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $debug_cmd my_outputname=$1 my_originator=$2 my_pic_p=${3-false} my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* External symbol declarations for the compiler. */\ " if test yes = "$dlself"; then func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" name=$func_basename_result case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi func_show_eval '$RM "${nlist}I"' if test -n "$global_symbol_to_import"; then eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[];\ " if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ static void lt_syminit(void) { LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; for (; symbol->name; ++symbol) {" $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" echo >> "$output_objdir/$my_dlsyms" "\ } }" fi echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = { {\"$my_originator\", (void *) 0}," if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ {\"@INIT@\", (void *) <_syminit}," fi case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $debug_cmd win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || func_cygming_gnu_implib_p "$1" then win32_nmres=import else win32_nmres= fi ;; *) func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s|.*|import| p q } }'` ;; esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $debug_cmd sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $debug_cmd match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive that possess that section. Heuristic: eliminate # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $debug_cmd if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result= fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $debug_cmd f_ex_an_ar_dir=$1; shift f_ex_an_ar_oldlib=$1 if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $debug_cmd my_gentop=$1; shift my_oldlibs=${1+"$@"} my_oldobjs= my_xlib= my_xabs= my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` func_basename "$darwin_archive" darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches; do func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" cd "unfat-$$/$darwin_base_archive-$darwin_arch" func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result=$my_oldobjs } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ #if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC #elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined other platforms ... */ #endif #if defined PATH_MAX # define LT_PATHMAX PATH_MAX #elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free (stale); stale = 0; } \ } while (0) #if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; size_t tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined HAVE_DOS_BASED_FILE_SYSTEM if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined HAVE_DOS_BASED_FILE_SYSTEM } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = (size_t) (q - p); p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (STREQ (str, pat)) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else size_t len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { size_t orig_value_len = strlen (orig_value); size_t add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ size_t len = strlen (new_value); while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $debug_cmd case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_suncc_cstd_abi # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! # Several compiler flags select an ABI that is incompatible with the # Cstd library. Avoid specifying it if any are in CXXFLAGS. func_suncc_cstd_abi () { $debug_cmd case " $compile_command " in *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) suncc_use_cstd_abi=no ;; *) suncc_use_cstd_abi=yes ;; esac } # func_mode_link arg... func_mode_link () { $debug_cmd case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=false prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test yes != "$build_libtool_libs" \ && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg=$1 shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir=$arg prev= continue ;; dlfiles|dlprefiles) $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=: } case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test no = "$dlself"; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test dlprefiles = "$prev"; then dlself=yes elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols=$arg test -f "$arg" \ || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex=$arg prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir=$arg prev= continue ;; mllvm) # Clang does not use LLVM to link, so we can simply discard any # '-mllvm $arg' options when doing the link step. prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object fi # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; os2dllname) os2dllname=$arg prev= continue ;; precious_regex) precious_files_regex=$arg prev= continue ;; release) release=-$arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds=$arg prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg=$arg case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between '-L' and '$1'" else func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of '$dir'" dir=$absdir ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test X-lc = "X$arg" && continue ;; esac elif test X-lc_r = "X$arg"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -mllvm) prev=mllvm continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module=$wl-multi_module continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "'-no-install' is ignored for $host" func_warning "assuming '-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -os2dllname) prev=os2dllname continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization # -specs=* GCC specs files # -stdlib=* select c++ std lib with clang # -fsanitize=* Clang/GCC memory and address sanitizer -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ -specs=*|-fsanitize=*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; -Z*) if test os2 = "`expr $host : '.*\(os2\)'`"; then # OS/2 uses -Zxxx to specify OS/2-specific options compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case $arg in -Zlinker | -Zstack) prev=xcompiler ;; esac continue else # Otherwise treat like 'Some other compiler flag' below func_quote_for_eval "$arg" arg=$func_quote_for_eval_result fi ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result test none = "$pic_object" || { # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object } # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test dlfiles = "$prev"; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test dlprefiles = "$prev"; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the '$prevarg' option requires an argument" if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname=$func_basename_result libobjs_save=$libobjs if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" # Definition is injected by LT_CONFIG during libtool generation. func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" func_dirname "$output" "/" "" output_objdir=$func_dirname_result$objdir func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test lib = "$linkmode"; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=false newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test lib,link = "$linkmode,$pass"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs=$tmp_deplibs fi if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass"; then libs=$deplibs deplibs= fi if test prog = "$linkmode"; then case $pass in dlopen) libs=$dlfiles ;; dlpreopen) libs=$dlprefiles ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test lib,dlpreopen = "$linkmode,$pass"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs=$dlprefiles fi if test dlopen = "$pass"; then # Collect dlpreopened libraries save_deplibs=$deplibs deplibs= fi for deplib in $libs; do lib= found=false case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test lib != "$linkmode" && test prog != "$linkmode"; then func_warning "'-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test lib = "$linkmode"; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib=$searchdir/lib$name$search_ext if test -f "$lib"; then if test .la = "$search_ext"; then found=: else found=false fi break 2 fi done done if $found; then # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll=$l done if test "X$ll" = "X$old_library"; then # only static version available found=false func_dirname "$lib" "" "." ladir=$func_dirname_result lib=$ladir/$old_library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi else # deplib doesn't seem to be a libtool library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l *.ltframework) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test conv = "$pass" && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi if test scan = "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "'-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test link = "$pass"; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=false case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=: fi ;; pass_all) valid_a_lib=: ;; esac if $valid_a_lib; then echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" else echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." fi ;; esac continue ;; prog) if test link != "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test conv = "$pass"; then deplibs="$deplib $deplibs" elif test prog = "$linkmode"; then if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=: continue ;; esac # case $deplib $found || test -f "$lib" \ || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "'$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir=$func_dirname_result dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass" || { test prog != "$linkmode" && test lib != "$linkmode"; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test conv = "$pass"; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for '$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done elif test prog != "$linkmode" && test lib != "$linkmode"; then func_fatal_error "'$lib' is not a convenience library" fi continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test yes = "$prefer_static_libs" || test built,no = "$prefer_static_libs,$installed"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib=$l done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for '$lib'" fi # This library was specified with -dlopen. if test dlopen = "$pass"; then test -z "$libdir" \ && func_fatal_error "cannot -dlopen a convenience library: '$lib'" if test -z "$dlname" || test yes != "$dlopen_support" || test no = "$build_libtool_libs" then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of '$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir=$ladir fi ;; esac func_basename "$lib" laname=$func_basename_result # Find the relevant object directory and library name. if test yes = "$installed"; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library '$lib' was moved." dir=$ladir absdir=$abs_ladir libdir=$abs_ladir else dir=$lt_sysroot$libdir absdir=$lt_sysroot$libdir fi test yes = "$hardcode_automatic" && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir=$ladir absdir=$abs_ladir # Remove this search path later func_append notinst_path " $abs_ladir" else dir=$ladir/$objdir absdir=$abs_ladir/$objdir # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test dlpreopen = "$pass"; then if test -z "$libdir" && test prog = "$linkmode"; then func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" fi case $host in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test lib = "$linkmode"; then deplibs="$dir/$old_library $deplibs" elif test prog,link = "$linkmode,$pass"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test prog = "$linkmode" && test link != "$pass"; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=false if test no != "$link_all_deplibs" || test -z "$library_names" || test no = "$build_libtool_libs"; then linkalldeplibs=: fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if $linkalldeplibs; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test prog,link = "$linkmode,$pass"; then if test -n "$library_names" && { { test no = "$prefer_static_libs" || test built,yes = "$prefer_static_libs,$installed"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then # Make sure the rpath contains only unique directories. case $temp_rpath: in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if $alldeplibs && { test pass_all = "$deplibs_check_method" || { test yes = "$build_libtool_libs" && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test built = "$use_static_libs" && test yes = "$installed"; then use_static_libs=no fi if test -n "$library_names" && { test no = "$use_static_libs" || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc* | *os2*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test no = "$installed"; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule= for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule=$dlpremoduletest break fi done if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then echo if test prog = "$linkmode"; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test lib = "$linkmode" && test yes = "$hardcode_into_libs"; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname=$1 shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname=$dlname elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc* | *os2*) func_arith $current - $age major=$func_arith_result versuffix=-$major ;; esac eval soname=\"$soname_spec\" else soname=$realname fi # Make a new name for the extract_expsyms_cmds to use soroot=$soname func_basename "$soroot" soname=$func_basename_result func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from '$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for '$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test prog = "$linkmode" || test relink != "$opt_mode"; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test no = "$hardcode_direct"; then add=$dir/$linklib case $host in *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; *-*-sysv4*uw2*) add_dir=-L$dir ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir=-L$dir ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we cannot # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library"; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add=$dir/$old_library fi elif test -n "$old_library"; then add=$dir/$old_library fi fi esac elif test no = "$hardcode_minus_L"; then case $host in *-*-sunos*) add_shlibpath=$dir ;; esac add_dir=-L$dir add=-l$name elif test no = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; relink) if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$dir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$absdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name elif test yes = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; *) lib_linked=no ;; esac if test yes != "$lib_linked"; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test prog = "$linkmode"; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test yes != "$hardcode_direct" && test yes != "$hardcode_minus_L" && test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test prog = "$linkmode" || test relink = "$opt_mode"; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$libdir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$libdir add=-l$name elif test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add=-l$name elif test yes = "$hardcode_automatic"; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib"; then add=$inst_prefix_dir$libdir/$linklib else add=$libdir/$linklib fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir=-L$libdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name fi if test prog = "$linkmode"; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test prog = "$linkmode"; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test unsupported != "$hardcode_direct"; then test -n "$old_library" && linklib=$old_library compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test yes = "$build_libtool_libs"; then # Not a shared library if test pass_all != "$deplibs_check_method"; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system cannot link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test yes = "$module"; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test lib = "$linkmode"; then if test -n "$dependency_libs" && { test yes != "$hardcode_into_libs" || test yes = "$build_old_libs" || test yes = "$link_static"; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs=$temp_deplibs fi func_append newlib_search_path " $absdir" # Link against this library test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test no != "$link_all_deplibs"; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path=$deplib ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of '$dir'" absdir=$dir fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names"; then for tmp in $deplibrary_names; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl"; then depdepl=$absdir/$objdir/$depdepl darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" path= fi fi ;; *) path=-L$absdir/$objdir ;; esac else eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "'$deplib' seems to be moved" path=-L$absdir fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test link = "$pass"; then if test prog = "$linkmode"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs=$newdependency_libs if test dlpreopen = "$pass"; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test dlopen != "$pass"; then test conv = "$pass" || { # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= } if test prog,link = "$linkmode,$pass"; then vars="compile_deplibs finalize_deplibs" else vars=deplibs fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Add Sun CC postdeps if required: test CXX = "$tagname" && { case $host_os in linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; solaris*) func_cc_basename "$CC" case $func_cc_basename_result in CC* | sunCC*) func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; esac } # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i= ;; esac if test -n "$i"; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test prog = "$linkmode"; then dlfiles=$newdlfiles fi if test prog = "$linkmode" || test lib = "$linkmode"; then dlprefiles=$newdlprefiles fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "'-R' is ignored for archives" test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "'-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "'-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs=$output func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form 'libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test no = "$module" \ && func_fatal_help "libtool library '$output' must begin with 'lib'" if test no != "$need_lib_prefix"; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test pass_all != "$deplibs_check_method"; then func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test no = "$dlself" \ || func_warning "'-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test 1 -lt "$#" \ && func_warning "ignoring multiple '-rpath's for a libtool library" install_libdir=$1 oldlibs= if test -z "$rpath"; then if test yes = "$build_libtool_libs"; then # Building a libtool convenience library. # Some compilers have problems with a '.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "'-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs=$IFS; IFS=: set dummy $vinfo 0 0 0 shift IFS=$save_ifs test -n "$7" && \ func_fatal_help "too many parameters to '-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major=$1 number_minor=$2 number_revision=$3 # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # that has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|freebsd-elf|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_revision ;; freebsd-aout|qnx|sunos) current=$number_major revision=$number_minor age=0 ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_minor lt_irix_increment=no ;; *) func_fatal_configuration "$modename: unknown library version type '$version_type'" ;; esac ;; no) current=$1 revision=$2 age=$3 ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT '$current' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION '$revision' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE '$age' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE '$age' is greater than the current interface number '$current'" func_fatal_error "'$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" # On Darwin other compilers case $CC in nagfor*) verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" ;; *) verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; esac ;; freebsd-aout) major=.$current versuffix=.$current.$revision ;; freebsd-elf) func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; irix | nonstopux) if test no = "$lt_irix_increment"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring=$verstring_prefix$major.$revision # Add in all the interfaces that we are compatible with. loop=$revision while test 0 -ne "$loop"; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring_prefix$major.$iface:$verstring done # Before this point, $major must not contain '.'. major=.$major versuffix=$major.$revision ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=.$current.$age.$revision verstring=$current.$age.$revision # Add in all the interfaces that we are compatible with. loop=$age while test 0 -ne "$loop"; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring:$iface.0 done # Make executables depend on our current version. func_append verstring ":$current.0" ;; qnx) major=.$current versuffix=.$current ;; sco) major=.$current versuffix=.$current ;; sunos) major=.$current versuffix=.$current.$revision ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 file systems. func_arith $current - $age major=$func_arith_result versuffix=-$major ;; *) func_fatal_configuration "unknown library version type '$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring=0.0 ;; esac if test no = "$need_version"; then versuffix= else versuffix=.0.0 fi fi # Remove version info from name if versioning should be avoided if test yes,no = "$avoid_version,$need_version"; then major= versuffix= verstring= fi # Check to see if the archive will have undefined symbols. if test yes = "$allow_undefined"; then if test unsupported = "$allow_undefined_flag"; then if test yes = "$build_old_libs"; then func_warning "undefined symbols not allowed in $host shared libraries; building static only" build_libtool_libs=no else func_fatal_error "can't build $host shared library unless -no-undefined is specified" fi fi else # Don't allow undefined symbols. allow_undefined_flag=$no_undefined_flag fi fi func_generate_dlsyms "$libname" "$libname" : func_append libobjs " $symfileobj" test " " = "$libobjs" && libobjs= if test relink != "$opt_mode"; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) if test -n "$precious_files_regex"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles=$dlfiles dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles=$dlprefiles dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test yes = "$build_libtool_libs"; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test yes = "$build_libtool_need_lc"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release= versuffix= major= newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib=$potent_lib while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | $SED 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib= ;; esac fi if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib=$potent_lib # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs= tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test yes = "$allow_libtool_libs_with_static_runtimes"; then for i in $predeps $postdeps; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test none = "$deplibs_check_method"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test yes = "$droppeddeps"; then if test yes = "$module"; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test no = "$allow_undefined"; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs=$new_libs # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test yes = "$build_libtool_libs"; then # Remove $wl instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test yes = "$hardcode_into_libs"; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath=$finalize_rpath test relink = "$opt_mode" || rpath=$compile_rpath$rpath for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath=$finalize_shlibpath test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname=$1 shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname=$realname fi if test -z "$dlname"; then dlname=$soname fi lib=$output_objdir/$realname linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols=$output_objdir/$libname.uexp func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile func_dll_def_p "$export_symbols" || { # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols=$export_symbols export_symbols= always_export_symbols=yes } fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs=$IFS; IFS='~' for cmd1 in $cmds; do IFS=$save_ifs # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test yes = "$try_normal_branch" \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=$output_objdir/$output_la.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS=$save_ifs if test -n "$export_symbols_regex" && test : != "$skipped_export"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test : != "$skipped_export" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs=$tmp_deplibs if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test yes = "$compiler_needs_object" && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test : != "$skipped_export" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then output=$output_objdir/$output_la.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then output=$output_objdir/$output_la.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test yes = "$compiler_needs_object"; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-$k.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test -z "$objlist" || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test 1 -eq "$k"; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-$k.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-$k.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi ${skipped_export-false} && { func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi } test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs=$IFS; IFS='~' for cmd in $concat_cmds; do IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi ${skipped_export-false} && { if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi } libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs=$IFS; IFS='~' for cmd in $cmds; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs # Restore the uninstalled library and exit if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test yes = "$module" || test yes = "$export_dynamic"; then # On all known operating systems, these are identical. dlname=$soname fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "'-R' is ignored for objects" test -n "$vinfo" && \ func_warning "'-version-info' is ignored for objects" test -n "$release" && \ func_warning "'-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object '$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj=$output ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # if reload_cmds runs $LD directly, get rid of -Wl from # whole_archive_flag_spec and hope we can get by with turning comma # into space. case $reload_cmds in *\$LD[\ \$]*) wl= ;; esac if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags else gentop=$output_objdir/${obj}x func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test yes = "$build_libtool_libs" || libobjs=$non_pic_objects # Create the old-style object. reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs output=$obj func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi test yes = "$build_libtool_libs" || { if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS } if test -n "$pic_flag" || test default != "$pic_mode"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output=$libobj func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "'-version-info' is ignored for programs" test -n "$release" && \ func_warning "'-release' is ignored for programs" $preload \ && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test CXX = "$tagname"; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " $wl-bind_at_load" func_append finalize_command " $wl-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs=$new_libs func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath=$rpath rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath=$rpath if test -n "$libobjs" && test yes = "$build_old_libs"; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" false # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=: case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=false ;; *cygwin* | *mingw* ) test yes = "$build_libtool_libs" || wrappers_required=false ;; *) if test no = "$need_relink" || test yes != "$build_libtool_libs"; then wrappers_required=false fi ;; esac $wrappers_required || { # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command=$compile_command$compile_rpath # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.$objext"; then func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' fi exit $exit_status } if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test yes = "$no_install"; then # We don't need to create a wrapper script. link_command=$compile_var$compile_command$compile_rpath # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi case $hardcode_action,$fast_install in relink,*) # Fast installation is not supported link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath func_warning "this platform does not like uninstalled shared libraries" func_warning "'$output' will be relinked during installation" ;; *,yes) link_command=$finalize_var$compile_command$finalize_rpath relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` ;; *,no) link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath ;; *,needless) link_command=$finalize_var$compile_command$finalize_rpath relink_command= ;; esac # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource=$output_path/$objdir/lt-$output_name.c cwrapper=$output_path/$output_name.exe $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host"; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do case $build_libtool_libs in convenience) oldobjs="$libobjs_save $symfileobj" addlibs=$convenience build_libtool_libs=no ;; module) oldobjs=$libobjs_save addlibs=$old_convenience build_libtool_libs=no ;; *) oldobjs="$old_deplibs $non_pic_objects" $preload && test -f "$symfileobj" \ && func_append oldobjs " $symfileobj" addlibs=$old_convenience ;; esac if test -n "$addlibs"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase=$func_basename_result case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj"; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test -z "$oldobjs"; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test yes = "$build_old_libs" && old_library=$libname.$libext func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test yes = "$hardcode_automatic"; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test yes = "$installed"; then if test -z "$install_libdir"; then break fi output=$output_objdir/${outputname}i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name=$func_basename_result func_resolve_sysroot "$deplib" eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs=$newdependency_libs newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles=$newdlprefiles else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles=$newdlprefiles fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test -n "$bindir"; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result/$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that cannot go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test no,yes = "$installed,$need_relink"; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } if test link = "$opt_mode" || test relink = "$opt_mode"; then func_mode_link ${1+"$@"} fi # func_mode_uninstall arg... func_mode_uninstall () { $debug_cmd RM=$nonopt files= rmforce=false exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic for arg do case $arg in -f) func_append RM " $arg"; rmforce=: ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir=$func_dirname_result if test . = "$dir"; then odir=$objdir else odir=$dir/$objdir fi func_basename "$file" name=$func_basename_result test uninstall = "$opt_mode" && odir=$dir # Remember odir for removal later, being careful to avoid duplicates if test clean = "$opt_mode"; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif $rmforce; then continue fi rmfiles=$file case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case $opt_mode in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test none != "$pic_object"; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test none != "$non_pic_object"; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test clean = "$opt_mode"; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.$objext" if test yes = "$fast_install" && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name"; then func_append rmfiles " $odir/lt-$noexename.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the $objdir's in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then func_mode_uninstall ${1+"$@"} fi test -z "$opt_mode" && { help=$generic_help func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode '$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # where we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: eztrace-1.1-7/extlib/opari2/build-config/PaxHeaders.7332/config.guess0000644000000000000000000000013113171135244022171 xustar0030 mtime=1508162212.109259944 29 atime=1508162287.75512005 30 ctime=1508162367.297869235 eztrace-1.1-7/extlib/opari2/build-config/config.guess0000755000175000017500000012564413171135244023400 0ustar00trahaytrahay00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2016 Free Software Foundation, Inc. timestamp='2016-10-02' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || \ echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case "${UNAME_MACHINE_ARCH}" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case "${UNAME_MACHINE_ARCH}" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; *:Sortix:*:*) echo ${UNAME_MACHINE}-unknown-sortix exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; e2k:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; k1om:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; mips64el:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; riscv32:Linux:*:* | riscv64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; SX-ACE:SUPER-UX:*:*) echo sxace-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; amd64:Isilon\ OneFS:*:*) echo x86_64-unknown-onefs exit ;; esac cat >&2 </dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: eztrace-1.1-7/extlib/opari2/PaxHeaders.7332/AUTHORS0000644000000000000000000000013212537514551016372 xustar0030 mtime=1434360169.560480888 30 atime=1507797543.850889699 30 ctime=1508162367.313870633 eztrace-1.1-7/extlib/opari2/AUTHORS0000644000175000017500000000075612537514551017571 0ustar00trahaytrahay00000000000000Authors of OPARI and OPARI2, in chronological order: Bernd Mohr Brian Wylie Felix Wolf Markus Geimer Christian Rössel Daniel Lorenz Dirk Schmidl Peter Philippen eztrace-1.1-7/extlib/opari2/PaxHeaders.7332/INSTALL0000644000000000000000000000013212617055645016356 xustar0030 mtime=1446796197.894457451 30 atime=1507797543.850889699 30 ctime=1508162367.321871332 eztrace-1.1-7/extlib/opari2/INSTALL0000644000175000017500000004574612617055645017565 0ustar00trahaytrahay00000000000000For generic installation instructions see below. Configuration of OPARI2 *********************** Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: `make V=1') --disable-silent-rules verbose build output (undo: `make V=0') --disable-libtool-lock avoid locking (might break parallel builds) --disable-openmp do not use OpenMP --disable-option-checking ignore unrecognized --enable/--with options --enable-platform-detection autodetect platform [yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-shared[=PKGS] build shared libraries [default=no] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-compiler-suite=(gcc|ibm|intel|pathscale|pgi|studio) The compiler suite to build this package with. Needs to be in $PATH [gcc]. --with-pic try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot=DIR Search for dependent libraries within DIR (or the compiler's sysroot if not specified). Some influential environment variables: (note that the _FOR_BUILD variables take precedence, e.g. if you call opari's configure from a top level configure in a cross-compile environment that defines CC as well as CC_FOR_BUILD etc.) CC_FOR_BUILD C compiler command for the frontend build CXX_FOR_BUILD C++ compiler command for the frontend build F77_FOR_BUILD Fortran 77 compiler command for the frontend build FC_FOR_BUILD Fortran compiler command for the frontend build CPPFLAGS_FOR_BUILD (Objective) C/C++ preprocessor flags for the frontend build, e.g. -I if you have headers in a nonstandard directory CFLAGS_FOR_BUILD C compiler flags for the frontend build CXXFLAGS_FOR_BUILD C++ compiler flags for the frontend build FFLAGS_FOR_BUILD Fortran 77 compiler flags for the frontend build FCFLAGS_FOR_BUILD Fortran compiler flags for the frontend build LDFLAGS_FOR_BUILD linker flags for the frontend build, e.g. -L if you have libraries in a nonstandard directory LIBS_FOR_BUILD libraries to pass to the linker for the frontend build, e.g. -l CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CXX C++ compiler command CXXFLAGS C++ compiler flags F77 Fortran 77 compiler command FFLAGS Fortran 77 compiler flags FC Fortran compiler command FCFLAGS Fortran compiler flags CPP C preprocessor CXXCPP C++ preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Please report bugs to . Installation Instructions ************************* Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell commands `./configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. Some packages provide this `INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. Running `configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the `make install' phase executed with root privileges. 5. Optionally, type `make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior `make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type `make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide `make distcheck', which can by used by developers to test that all other targets like `make install' and `make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. This is known as a "VPATH" build. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple `-arch' options to the compiler but only a single `-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the `lipo' tool if you have problems. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of `${prefix}', so that specifying just `--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to `configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the `make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, `make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of `${prefix}'. Any directories that were specified during `configure', but not in terms of `${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the `DESTDIR' variable. For example, `make install DESTDIR=/alternate/directory' will prepend `/alternate/directory' before all installation names. The approach of `DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of `${prefix}' at `configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of `make' will be. For these packages, running `./configure --enable-silent-rules' sets the default to minimal output, which can be overridden with `make V=1'; while running `./configure --disable-silent-rules' sets the default to verbose, which can be overridden with `make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put `/usr/ucb' early in your `PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in `/usr/bin'. So, if you need `/usr/ucb' in your `PATH', put it _after_ `/usr/bin'. On Haiku, software installed for all users goes in `/boot/common', not `/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for `CONFIG_SHELL' due to an Autoconf bug. Until the bug is fixed you can use this workaround: CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of all of the options to `configure', and exit. `--help=short' `--help=recursive' Print a summary of the options unique to this package's `configure', and exit. The `short' variant lists options used only in the top level, while the `recursive' variant lists options also present in any nested packages. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. `--no-create' `-n' Run the configure checks, but stop before creating any output files. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. eztrace-1.1-7/extlib/opari2/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212617055645017361 xustar0030 mtime=1446796197.894457451 30 atime=1508162209.821095231 30 ctime=1508162367.285868187 eztrace-1.1-7/extlib/opari2/Makefile.am0000644000175000017500000000656312617055645020562 0ustar00trahaytrahay00000000000000 ## The SUBDIRS variable holds a list of subdirectories automake (recursivly) ## must build. SUBDIRS = $(subdirs) $(subdirs_custom) ## ACLOCAL_AMFLAGS contains options to pass to aclocal when aclocal.m4 is to be ## rebuilt by make. This line is also used by autoreconf to run aclocal with ## suitable options, or by autopoint and gettextize to locate the place where ## Gettext's macros should be installed. So even if you do not really care about ## the rebuild rules, you should define ACLOCAL_AMFLAGS. ACLOCAL_AMFLAGS = -I vendor/common/build-config/m4 include vendor/common/build-config/Makefile.inc.am ## Still, sometimes there are files that must be distributed, but which are not ## covered in the automatic rules. These files should be listed in the ## EXTRA_DIST variable. You can mention files from subdirectories in EXTRA_DIST. ## ## You can also mention a directory in EXTRA_DIST. In this case the entire ## directory will be recursively copied into the distribution. Please note that ## this will also copy everything in the directory, including CVS/RCS version ## control files. We recommend against using this feature. EXTRA_DIST += $(srcdir)/src/config.h \ $(srcdir)/src/config-custom.h \ $(srcdir)/test/replacePaths_c.awk \ $(srcdir)/test/replacePaths_f77.awk \ $(srcdir)/test/replacePaths_f90.awk \ $(srcdir)/doc/example/example.c \ $(srcdir)/doc/example/example.f \ $(srcdir)/doc/example_user_instrumentation/example_user_instrumentation.c \ $(srcdir)/doc/example_user_instrumentation/example_user_instrumentation.f \ $(srcdir)/doc/doxygen-user/opari2_usage.dox.in \ $(srcdir)/build-config/REVISION \ $(srcdir)/build-config/REVISION_COMMON \ $(srcdir)/test/data if ! CROSS_BUILD EXTRA_DIST += $(srcdir)/build-frontend/configure.ac \ $(srcdir)/build-frontend/aclocal.m4 \ $(srcdir)/build-frontend/Makefile.am \ $(srcdir)/build-frontend/Makefile.in \ $(srcdir)/build-frontend/configure \ $(srcdir)/src/config-frontend.h.in endif CLEANFILES += doc/doxygen-user/main.dox .PHONY: doc/doxygen-user/main.dox remove-svn-files-from-dist if SVN_CONTROLLED doc/doxygen-user/main.dox: $(MKDIR_P) doc/doxygen-user cat $(srcdir)/doc/doxygen-user/main_1.dox.in \ $(srcdir)/doc/doxygen-user/opari2_usage.dox.in \ $(srcdir)/doc/doxygen-user/main_2.dox.in > doc/doxygen-user/main.dox else doc/doxygen-user/main.dox: $(MKDIR_P) doc/doxygen-user touch doc/doxygen-user/main.dox endif remove-svn-files-from-dist: files=`find $(top_distdir) -type d | grep "\.svn"`; \ for i in $$files; do rm -rf $$i; done dist-hook: remove-svn-files-from-dist prohibit-svn-files-in-dist doc/doxygen-user/main.dox doxygen-user-generate rm -f $(top_distdir)/build-frontend/opari2_usage.h clean-local: doxygen-user-clean rm -rf test/tmp install-exec-local: $(INSTALL_SCRIPT) $(builddir)/build-frontend/pomp2-parse-init-regions.awk $(DESTDIR)$(bindir)/ install-data-local: doxygen-user-install uninstall-hook: common-uninstall rm -f $(DESTDIR)$(bindir)/pomp2-parse-init-regions.awk eztrace-1.1-7/extlib/opari2/PaxHeaders.7332/vendor0000644000000000000000000000013213171135477016543 xustar0030 mtime=1508162367.281867838 30 atime=1508162367.741908015 30 ctime=1508162367.281867838 eztrace-1.1-7/extlib/opari2/vendor/0000755000175000017500000000000013171135477020007 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/vendor/PaxHeaders.7332/common0000644000000000000000000000013213171135477020033 xustar0030 mtime=1508162367.281867838 30 atime=1508162367.741908015 30 ctime=1508162367.281867838 eztrace-1.1-7/extlib/opari2/vendor/common/0000755000175000017500000000000013171135477021277 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/vendor/common/PaxHeaders.7332/cutest0000644000000000000000000000013213171135477021342 xustar0030 mtime=1508162367.429880764 30 atime=1508162367.741908015 30 ctime=1508162367.429880764 eztrace-1.1-7/extlib/opari2/vendor/common/cutest/0000755000175000017500000000000013171135477022606 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/vendor/common/cutest/PaxHeaders.7332/CuTest.c0000644000000000000000000000013212537514552022772 xustar0030 mtime=1434360170.732465924 30 atime=1507797543.850889699 30 ctime=1508162367.429880764 eztrace-1.1-7/extlib/opari2/vendor/common/cutest/CuTest.c0000644000175000017500000002753412537514552024174 0ustar00trahaytrahay00000000000000#include #include #include #include #include #include #include #include #if defined( CUTEST_USE_COLOR ) && CUTEST_USE_COLOR #include #endif #include "CuTest.h" /*-------------------------------------------------------------------------* * CuStr *-------------------------------------------------------------------------*/ char* CuStrAlloc( int size ) { char* newStr = ( char* )malloc( sizeof( char ) * ( size ) ); return newStr; } char* CuStrCopy( const char* old ) { int len = strlen( old ); char* newStr = CuStrAlloc( len + 1 ); strcpy( newStr, old ); return newStr; } /*-------------------------------------------------------------------------* * CuString *-------------------------------------------------------------------------*/ void CuStringInit( CuString* str ) { str->length = 0; str->size = STRING_MAX; str->buffer = ( char* )malloc( sizeof( char ) * str->size ); str->buffer[ 0 ] = '\0'; } CuString* CuStringNew( void ) { CuString* str = ( CuString* )malloc( sizeof( CuString ) ); CuStringInit( str ); return str; } void CuStringClear( CuString* str ) { if ( str ) { free( str->buffer ); str->buffer = NULL; } } void CuStringFree( CuString* str ) { CuStringClear( str ); free( str ); } void CuStringResize( CuString* str, int newSize ) { str->buffer = ( char* )realloc( str->buffer, sizeof( char ) * newSize ); str->size = newSize; } void CuStringAppend( CuString* str, const char* text ) { int length; if ( text == NULL ) { text = "NULL"; } length = strlen( text ); if ( str->length + length + 1 >= str->size ) { CuStringResize( str, str->length + length + 1 + STRING_INC ); } str->length += length; strcat( str->buffer, text ); } void CuStringAppendChar( CuString* str, char ch ) { char text[ 2 ]; text[ 0 ] = ch; text[ 1 ] = '\0'; CuStringAppend( str, text ); } void CuStringAppendFormat( CuString* str, const char* format, ... ) { va_list argp; va_start( argp, format ); CuStringAppendVFormat( str, format, argp ); va_end( argp ); } void CuStringAppendVFormat( CuString* str, const char* format, va_list argp ) { char buf[ HUGE_STRING_LEN ]; vsprintf( buf, format, argp ); CuStringAppend( str, buf ); } void CuStringInsert( CuString* str, const char* text, int pos ) { int length = strlen( text ); if ( pos > str->length ) { pos = str->length; } if ( str->length + length + 1 >= str->size ) { CuStringResize( str, str->length + length + 1 + STRING_INC ); } memmove( str->buffer + pos + length, str->buffer + pos, ( str->length - pos ) + 1 ); str->length += length; memcpy( str->buffer + pos, text, length ); } /*-------------------------------------------------------------------------* * CuTest *-------------------------------------------------------------------------*/ void CuTestInit( CuTest* t, const char* name, TestFunction function ) { t->name = CuStrCopy( name ); t->failed = 0; t->ran = 0; t->message = NULL; t->function = function; t->jumpBuf = NULL; t->next = NULL; } CuTest* CuTestNew( const char* name, TestFunction function ) { CuTest* tc = CU_ALLOC( CuTest ); CuTestInit( tc, name, function ); return tc; } void CuTestClear( CuTest* t ) { if ( t ) { free( ( char* )t->name ); t->name = NULL; } } void CuTestFree( CuTest* t ) { CuTestClear( t ); free( t ); } void CuTestRun( CuTest* tc ) { jmp_buf buf; tc->jumpBuf = &buf; if ( setjmp( buf ) == 0 ) { tc->ran = 1; ( tc->function )( tc ); } tc->jumpBuf = 0; } static void CuFailInternal( CuTest* tc, const char* file, int line, CuString* string ) { char buf[ HUGE_STRING_LEN ]; sprintf( buf, "%s:%d: ", file, line ); CuStringInsert( string, buf, 0 ); tc->failed = 1; tc->message = string->buffer; if ( tc->jumpBuf != 0 ) { longjmp( *( tc->jumpBuf ), 1 ); } } void CuFail_Line( CuTest* tc, const char* file, int line, const char* message2, const char* message ) { CuString string; CuStringInit( &string ); if ( message2 != NULL ) { CuStringAppend( &string, message2 ); CuStringAppend( &string, ": " ); } CuStringAppend( &string, message ); CuFailInternal( tc, file, line, &string ); CuStringClear( &string ); } void CuAssert_Line( CuTest* tc, const char* file, int line, const char* message, int condition ) { if ( condition ) { return; } CuFail_Line( tc, file, line, NULL, message ); } void CuAssertStrEquals_LineMsg( CuTest* tc, const char* file, int line, const char* message, const char* expected, const char* actual ) { CuString string; if ( ( expected == NULL && actual == NULL ) || ( expected != NULL && actual != NULL && strcmp( expected, actual ) == 0 ) ) { return; } CuStringInit( &string ); if ( message != NULL ) { CuStringAppend( &string, message ); CuStringAppend( &string, ": " ); } CuStringAppend( &string, "expected <" ); CuStringAppend( &string, expected ); CuStringAppend( &string, "> but was <" ); CuStringAppend( &string, actual ); CuStringAppend( &string, ">" ); CuFailInternal( tc, file, line, &string ); CuStringClear( &string ); } void CuAssertIntEquals_LineMsg( CuTest* tc, const char* file, int line, const char* message, int expected, int actual ) { char buf[ STRING_MAX ]; if ( expected == actual ) { return; } sprintf( buf, "expected <%d> but was <%d>", expected, actual ); CuFail_Line( tc, file, line, message, buf ); } void CuAssertDblEquals_LineMsg( CuTest* tc, const char* file, int line, const char* message, double expected, double actual, double delta ) { char buf[ STRING_MAX ]; if ( fabs( expected - actual ) <= delta ) { return; } sprintf( buf, "expected <%lf> but was <%lf>", expected, actual ); CuFail_Line( tc, file, line, message, buf ); } void CuAssertPtrEquals_LineMsg( CuTest* tc, const char* file, int line, const char* message, void* expected, void* actual ) { char buf[ STRING_MAX ]; if ( expected == actual ) { return; } sprintf( buf, "expected pointer <%p> but was <%p>", expected, actual ); CuFail_Line( tc, file, line, message, buf ); } /*-------------------------------------------------------------------------* * CuSuite *-------------------------------------------------------------------------*/ static char* color_red = ""; static char* color_grn = ""; static char* color_yel = ""; static char* color_std = ""; void CuUseColors( void ) { if ( 0 != strcmp( getenv( "AM_COLOR_TESTS" ) ? getenv( "AM_COLOR_TESTS" ) : "", "no" ) && 0 != strcmp( getenv( "TERM" ) ? getenv( "TERM" ) : "", "dumb" ) && ( ( getenv( "AM_COLOR_TESTS" ) && 0 == strcmp( getenv( "AM_COLOR_TESTS" ), "always" ) ) #if defined( CUTEST_USE_COLOR ) && CUTEST_USE_COLOR || isatty( STDOUT_FILENO ) #endif || 0 == system( "test -t 1" ) ) ) { color_red = "\033[31m"; color_grn = "\033[32m"; color_yel = "\033[33m"; color_std = "\033[m"; } } void CuSuiteInit( const char* name, CuSuite* testSuite ) { testSuite->name = CuStrCopy( name ); testSuite->count = 0; testSuite->failCount = 0; testSuite->head = NULL; testSuite->tail = &testSuite->head; } CuSuite* CuSuiteNew( const char* name ) { CuSuite* testSuite = CU_ALLOC( CuSuite ); CuSuiteInit( name, testSuite ); return testSuite; } void CuSuiteClear( CuSuite* testSuite ) { if ( testSuite ) { CuTest* test = testSuite->head; while ( test ) { CuTest* next = test->next; CuTestFree( test ); test = next; } free( ( char* )testSuite->name ); testSuite->name = NULL; } } void CuSuiteFree( CuSuite* testSuite ) { CuSuiteClear( testSuite ); free( testSuite ); } void CuSuiteAdd( CuSuite* testSuite, CuTest* testCase ) { *testSuite->tail = testCase; testSuite->tail = &testCase->next; testSuite->count++; } void CuSuiteAddSuite( CuSuite* testSuite, CuSuite* testSuite2 ) { if ( testSuite2->count ) { CuSuiteAdd( testSuite, testSuite2->head ); /* need to adjust count in testSuite */ testSuite->count += testSuite2->count - 1; } CuSuiteClear( testSuite2 ); } void CuSuiteRun( CuSuite* testSuite ) { int i = 1; CuTest* testCase = testSuite->head; printf( "%s%s:%s\n", color_yel, testSuite->name, color_std ); while ( testCase ) { CuTestRun( testCase ); if ( testCase->failed ) { testSuite->failCount++; printf( " %sFAIL%s %d: %s: %s%s%s\n", color_red, color_std, i, testCase->name, color_red, testCase->message, color_std ); break; } else { printf( " %sok%s %d: %s\n", color_grn, color_std, i, testCase->name ); } testCase = testCase->next; i++; } } void CuSuiteSummary( CuSuite* testSuite, CuString* details ) { int runCount = 0; const char* testWord; if ( testSuite->failCount == 0 ) { testWord = testSuite->count == 1 ? "test" : "tests"; CuStringAppendFormat( details, "%sOK%s (%d %s)\n", color_grn, color_std, testSuite->count, testWord ); } else { for ( CuTest* testCase = testSuite->head; testCase; testCase = testCase->next ) { if ( !testCase->ran ) { continue; } runCount++; } testWord = testSuite->failCount == 1 ? "test" : "tests"; CuStringAppendFormat( details, "%sFAIL%s (%d %s)", color_red, color_std, testSuite->failCount, testWord ); if ( runCount - testSuite->failCount ) { testWord = ( runCount - testSuite->failCount ) == 1 ? "test" : "tests"; CuStringAppendFormat( details, " OK (%d %s)", runCount - testSuite->failCount, testWord ); } if ( testSuite->count - runCount ) { testWord = ( testSuite->count - runCount ) == 1 ? "test" : "tests"; CuStringAppendFormat( details, " LEFT (%d %s)", testSuite->count - runCount, testWord ); } CuStringAppendFormat( details, "\n" ); } } eztrace-1.1-7/extlib/opari2/vendor/common/cutest/PaxHeaders.7332/CuTest.h0000644000000000000000000000013212617055645023001 xustar0030 mtime=1446796197.926458451 30 atime=1507797543.850889699 30 ctime=1508162367.433881113 eztrace-1.1-7/extlib/opari2/vendor/common/cutest/CuTest.h0000644000175000017500000001363712617055645024202 0ustar00trahaytrahay00000000000000#ifndef CU_TEST_H #define CU_TEST_H #include #include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* CuString */ char* CuStrAlloc( int size ); char* CuStrCopy( const char* old ); #define CU_ALLOC( TYPE ) ( ( TYPE* )calloc( 1, sizeof( TYPE ) ) ) #define HUGE_STRING_LEN 8192 #define STRING_MAX 256 #define STRING_INC 256 typedef struct { int length; int size; char* buffer; } CuString; void CuStringInit( CuString* str ); CuString* CuStringNew( void ); void CuStringClear( CuString* str ); void CuStringFree( CuString* str ); void CuStringAppend( CuString* str, const char* text ); void CuStringAppendChar( CuString* str, char ch ); void CuStringAppendFormat( CuString* str, const char* format, ... ); void CuStringAppendVFormat( CuString* str, const char* format, va_list argp ); void CuStringInsert( CuString* str, const char* text, int pos ); void CuStringResize( CuString* str, int newSize ); /* CuTest */ typedef struct CuTest CuTest; typedef void ( *TestFunction )( CuTest* ); struct CuTest { const char* name; TestFunction function; int failed; int ran; const char* message; jmp_buf* jumpBuf; struct CuTest* next; }; void CuTestInit( CuTest* t, const char* name, TestFunction function ); CuTest* CuTestNew( const char* name, TestFunction function ); void CuTestClear( CuTest* t ); void CuTestFree( CuTest* t ); void CuTestRun( CuTest* tc ); /* Internal versions of assert functions -- use the public versions */ void CuFail_Line( CuTest* tc, const char* file, int line, const char* message2, const char* message ); void CuAssert_Line( CuTest* tc, const char* file, int line, const char* message, int condition ); void CuAssertStrEquals_LineMsg( CuTest* tc, const char* file, int line, const char* message, const char* expected, const char* actual ); void CuAssertIntEquals_LineMsg( CuTest* tc, const char* file, int line, const char* message, int expected, int actual ); void CuAssertDblEquals_LineMsg( CuTest* tc, const char* file, int line, const char* message, double expected, double actual, double delta ); void CuAssertPtrEquals_LineMsg( CuTest* tc, const char* file, int line, const char* message, void* expected, void* actual ); /* public assert functions */ #define __CuStringify( x ) #x #define _CuStringify( x ) __CuStringify( x ) #define CuFail( tc, ms ) CuFail_Line( ( tc ), __FILE__, __LINE__, NULL, ( ms ) ) #define CuAssert( tc, ms, cond ) CuAssert_Line( ( tc ), __FILE__, __LINE__, ms ": " _CuStringify( cond ), ( cond ) ) #define CuAssertTrue( tc, cond ) CuAssert_Line( ( tc ), __FILE__, __LINE__, "assert failed", ( cond ) ) #define CuAssertStrEquals( tc, ex, ac ) CuAssertStrEquals_LineMsg( ( tc ), __FILE__, __LINE__, NULL, ( ex ), ( ac ) ) #define CuAssertStrEquals_Msg( tc, ms, ex, ac ) CuAssertStrEquals_LineMsg( ( tc ), __FILE__, __LINE__, ( ms ), ( ex ), ( ac ) ) #define CuAssertIntEquals( tc, ex, ac ) CuAssertIntEquals_LineMsg( ( tc ), __FILE__, __LINE__, NULL, ( ex ), ( ac ) ) #define CuAssertIntEquals_Msg( tc, ms, ex, ac ) CuAssertIntEquals_LineMsg( ( tc ), __FILE__, __LINE__, ( ms ), ( ex ), ( ac ) ) #define CuAssertDblEquals( tc, ex, ac, dl ) CuAssertDblEquals_LineMsg( ( tc ), __FILE__, __LINE__, NULL, ( ex ), ( ac ), ( dl ) ) #define CuAssertDblEquals_Msg( tc, ms, ex, ac, dl ) CuAssertDblEquals_LineMsg( ( tc ), __FILE__, __LINE__, ( ms ), ( ex ), ( ac ), ( dl ) ) #define CuAssertPtrEquals( tc, ex, ac ) CuAssertPtrEquals_LineMsg( ( tc ), __FILE__, __LINE__, NULL, ( ex ), ( ac ) ) #define CuAssertPtrEquals_Msg( tc, ms, ex, ac ) CuAssertPtrEquals_LineMsg( ( tc ), __FILE__, __LINE__, ( ms ), ( ex ), ( ac ) ) #define CuAssertPtrNotNull( tc, p ) CuAssert_Line( ( tc ), __FILE__, __LINE__, "null pointer unexpected", ( p != NULL ) ) #define CuAssertPtrNotNullMsg( tc, msg, p ) CuAssert_Line( ( tc ), __FILE__, __LINE__, ( msg ), ( p != NULL ) ) /* CuSuite */ #define SUITE_ADD_TEST( SUITE, TEST ) CuSuiteAdd( SUITE, CuTestNew( _CuStringify( TEST ), TEST ) ) #define SUITE_ADD_TEST_NAME( SUITE, TEST, NAME ) CuSuiteAdd( SUITE, CuTestNew( NAME, TEST ) ) typedef struct { const char* name; int count; CuTest* head; CuTest** tail; int failCount; } CuSuite; void CuUseColors( void ); void CuSuiteInit( const char* name, CuSuite* testSuite ); CuSuite* CuSuiteNew( const char* name ); void CuSuiteClear( CuSuite* testSuite ); void CuSuiteFree( CuSuite* testSuite ); void CuSuiteAdd( CuSuite* testSuite, CuTest* testCase ); void CuSuiteAddSuite( CuSuite* testSuite, CuSuite* testSuite2 ); void CuSuiteRun( CuSuite* testSuite ); void CuSuiteSummary( CuSuite* testSuite, CuString* summary ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* CU_TEST_H */ eztrace-1.1-7/extlib/opari2/vendor/common/PaxHeaders.7332/build_related0000644000000000000000000000013213171135477022632 xustar0030 mtime=1508162367.281867838 30 atime=1508162367.741908015 30 ctime=1508162367.281867838 eztrace-1.1-7/extlib/opari2/vendor/common/build_related/0000755000175000017500000000000013171135477024076 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/vendor/common/build_related/PaxHeaders.7332/doxygen0000644000000000000000000000013213171135477024307 xustar0030 mtime=1508162367.309870283 30 atime=1508162367.741908015 30 ctime=1508162367.309870283 eztrace-1.1-7/extlib/opari2/vendor/common/build_related/doxygen/0000755000175000017500000000000013171135477025553 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/vendor/common/build_related/doxygen/PaxHeaders.7332/doxygen-user-common.0000644000000000000000000000013212617055645030306 xustar0030 mtime=1446796197.926458451 30 atime=1507797543.850889699 30 ctime=1508162367.313870633 eztrace-1.1-7/extlib/opari2/vendor/common/build_related/doxygen/doxygen-user-common.cfg.in0000644000175000017500000020007012617055645032561 0ustar00trahaytrahay00000000000000# SILC-note: This is the common part of the doxygen configuration file. It # will be assembled to the final one during make doxygen-user # Doxyfile 1.5.8 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all # text before the first occurrence of this tag. Doxygen uses libiconv (or the # iconv built into libc) for the transcoding. See # http://www.gnu.org/software/libiconv for the list of possible encodings. DOXYFILE_ENCODING = UTF-8 # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, # Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, # Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), # Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, # Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, # Spanish, Swedish, and Ukrainian. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend the # brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = NO # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. STRIP_FROM_PATH = @abs_top_srcdir@ # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like regular Qt-style comments # (thus requiring an explicit @brief command for a brief description.) JAVADOC_AUTOBRIEF = NO # If the QT_AUTOBRIEF tag is set to YES then Doxygen will # interpret the first line (until the first dot) of a Qt-style # comment as the brief description. If set to NO, the comments # will behave just like regular Qt-style comments (thus requiring # an explicit \brief command for a brief description.) QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 4 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = YES # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java # sources only. Doxygen will then generate output that is more tailored for # Java. For instance, namespaces will be presented as packages, qualified # scopes will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources only. Doxygen will then generate output that is more tailored for # Fortran. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for # VHDL. OPTIMIZE_OUTPUT_VHDL = NO # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend # it using this tag. The format is ext=language, where ext is a file # extension, and language is one of the parsers supported by doxygen: IDL, # Java, Javascript, C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, # C++. For instance to make doxygen treat .inc files as Fortran files (default # is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C EXTENSION_MAPPING = # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should # set this tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. # func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. # Doxygen will parse them like normal C++ but will assume all classes use # public instead of private inheritance when no explicit protection keyword is # present. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES (the # default) will make doxygen to replace the get and set methods by a property # in the documentation. This will only work if the methods are indeed getting # or setting a simple type. If this is not the case, or you want to show the # methods anyway, you should set this option to NO. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum # is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically # be useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. TYPEDEF_HIDES_STRUCT = YES # The SYMBOL_CACHE_SIZE determines the size of the internal cache use to # determine which symbols to keep in memory and which to flush to disk. When # the cache is full, less often used symbols will be written to disk. For # small to medium size projects (<1000 input files) the default value is # probably good enough. For larger projects a too small cache size can cause # doxygen to be busy swapping symbols to and from disk most of the time # causing a significant performance penality. If the system has enough # physical memory increasing the cache will improve the performance by keeping # more symbols in memory. Note that the value works on a logarithmic scale so # increasing the size by one will rougly double the memory usage. The cache # size is given by this formula: 2^(16+SYMBOL_CACHE_SIZE). The valid range is # 0..9, the default is 0, corresponding to a cache size of 2^16 = 65536 # symbols SYMBOL_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = NO # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = NO # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base # name of the file that contains the anonymous namespace. By default # anonymous namespace are hidden. EXTRACT_ANON_NSPACES = YES # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = YES # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = YES # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the # hierarchy of group names into alphabetical order. If set to NO (the default) # the group names will appear in their defined order. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = NO # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = NO # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated at # the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES # If the sources in your project are distributed over multiple directories # then setting the SHOW_DIRECTORIES tag to YES will show the directory # hierarchy in the documentation. The default is NO. SHOW_DIRECTORIES = NO # Set the SHOW_FILES tag to NO to disable the generation of the Files page. # This will remove the Files entry from the Quick Index and from the # Folder Tree View (if specified). The default is YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the # Namespaces page. # This will remove the Namespaces entry from the Quick Index # and from the Folder Tree View (if specified). The default is YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically # from the version control system). Doxygen will invoke the program by # executing (via popen()) the command , where # is the value of the FILE_VERSION_FILTER tag, and is the name of # an input file provided by doxygen. Whatever the program writes to standard # output is used as the file version. See the manual for examples. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be # parsed by doxygen. The layout file controls the global structure of the # generated output files in an output format independent way. The create the # layout file that represents doxygen's defaults, run doxygen with the -l # option. You can optionally specify a file name after the option, if omitted # DoxygenLayout.xml will be used as the name of the layout file. LAYOUT_FILE = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be abled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = YES # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = doxygen.err #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is # also the default input encoding. Doxygen uses libiconv (or the iconv built # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for # the list of possible encodings. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 FILE_PATTERNS = *.h *.dox # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT # tag. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. Note that the wildcards are matched # against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* EXCLUDE_PATTERNS = */.svn/* # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = @abs_top_srcdir@/doc/doxygen-user # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = @abs_top_srcdir@/doc/doxygen-user # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. # If FILTER_PATTERNS is specified, this tag will be # ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. # Doxygen will compare the file name with each pattern and apply the # filter if there is a match. # The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER # is applied to all files. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will be # generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = NO # If the REFERENCES_RELATION tag is set to YES # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = NO # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will # link to the source code. # Otherwise they will link to the documentation. REFERENCES_LINK_SOURCE = YES # If the USE_HTAGS tag is set to YES then the references to source code # will point to the HTML generated by the htags(1) tool instead of doxygen # built-in source browser. The htags tool is part of GNU's global source # tagging system (see http://www.gnu.org/software/global/global.html). You # will need version 4.8.6 or higher. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = YES # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = @abs_top_srcdir@/vendor/common/build_related/doxygen/header.html # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = @abs_top_srcdir@/vendor/common/build_related/doxygen/footer.html # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet. Note that doxygen will try to copy # the style sheet file to the HTML output directory, so don't put your own # stylesheet in the HTML output directory as well, or it will be erased! HTML_STYLESHEET = # With the PROJECT_LOGO tag one can specify an logo or icon that is included # in the documentation. The maximum height of the logo should not exceed 55 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. PROJECT_LOGO = @abs_top_srcdir@/doc/images/project_logo.png # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. For this to work a browser that supports # JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox # Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). HTML_DYNAMIC_SECTIONS = NO # If the GENERATE_DOCSET tag is set to YES, additional index files will be # generated that can be used as input for Apple's Xcode 3 integrated # development environment, introduced with OSX 10.5 (Leopard). To create a # documentation set, doxygen will generate a Makefile in the HTML output # directory. Running make will produce the docset in that directory and # running "make install" will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it # at startup. See # http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more # information. GENERATE_DOCSET = NO # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the # feed. A documentation feed provides an umbrella under which multiple # documentation sets from a single provider (such as a company or product # suite) can be grouped. DOCSET_FEEDNAME = "Doxygen generated docs" # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that # should uniquely identify the documentation set bundle. This should be a # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen # will append .docset to the name. DOCSET_BUNDLE_ID = org.doxygen.Project # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING # is used to encode HtmlHelp index (hhk), content (hhc) and project file # content. CHM_INDEX_ENCODING = # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed # Help (.qch) of the generated HTML documentation. GENERATE_QHP = NO # If the QHG_LOCATION tag is specified, the QCH_FILE tag can # be used to specify the file name of the resulting .qch file. # The path specified is relative to the HTML output folder. QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#namespace QHP_NAMESPACE = # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#virtual-folders QHP_VIRTUAL_FOLDER = doc # If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to # add. For more information please see # http://doc.trolltech.com/qthelpproject.html#custom-filters QHP_CUST_FILTER_NAME = # The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the # custom filter to add.For more information please see Qt Help # Project / Custom Filters. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's filter section matches. Qt Help # Project / Filter Attributes. QHP_SECT_FILTER_ATTRS = # If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can # be used to specify the location of Qt's qhelpgenerator. # If non-empty doxygen will try to run qhelpgenerator on the generated # .qhp file. QHG_LOCATION = # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 1 # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. # If the tag value is set to FRAME, a side panel will be generated # containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are # probably better off using the HTML help feature. Other possible values # for this tag are: HIERARCHIES, which will generate the Groups, Directories, # and Class Hierarchy pages using a tree view instead of an ordered list; # ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which # disables this behavior completely. For backwards compatibility with previous # releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE # respectively. GENERATE_TREEVIEW = NO # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 # Use this tag to change the font size of Latex formulas included # as images in the HTML documentation. The default is 10. Note that # when you change the font size after a successful doxygen run you need # to manually remove any form_*.png images from the HTML output directory # to force them to be regenerated. FORMULA_FONTSIZE = 10 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = @have_doxygen_latex@ # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = pdf # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = xspace # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = @abs_top_srcdir@/vendor/common/build_related/doxygen/header.tex # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = YES # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = YES # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. # This is useful # if you want to understand what is going on. # On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = NO # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_DEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the := operator # instead of the = operator. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this # tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. Use the # PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line, have an all uppercase name, and do not end with a semicolon. Such # function macros are typically used for boiler-plate code, and will confuse # the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. # Optionally an initial location of the external documentation # can be added for each tagfile. The format of a tag file without # this location is as follows: # # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths or # URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) # If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. #TAGFILES = @PACKAGE@-@VERSION@/doc/otf2/tags/otf2.tag=../../otf2/html \ # @PACKAGE@-@VERSION@/doc/opari2/tags/opari2.tag=../../opari2/html # When a file name is specified after GENERATE_TAGFILE, doxygen will create a # tag file that is based on the input files it reads. #GENERATE_TAGFILE = @PACKAGE@-@VERSION@/doc/@PACKAGE_NAME@/tags/@PACKAGE_NAME@.tag # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option is superseded by the HAVE_DOT option below. This is only a # fallback. It is recommended to install and use dot, since it yields more # powerful graphs. CLASS_DIAGRAMS = NO # You can define message sequence charts within doxygen comments using the \msc # command. Doxygen will then run the mscgen tool (see # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the # documentation. The MSCGEN_PATH tag allows you to specify the directory where # the mscgen tool resides. If left empty the tool is assumed to be found in the # default search path. MSCGEN_PATH = # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = @have_dot@ # By default doxygen will write a font called FreeSans.ttf to the output # directory and reference it in all dot files that doxygen generates. This # font does not include all possible unicode characters however, so when you # need these (or just want a differently looking font) you can specify the # font name using DOT_FONTNAME. You need need to make sure dot is able to find # the font, which can be done by putting it in a standard location or by # setting the DOTFONTPATH environment variable or by setting DOT_FONTPATH to # the directory containing the font. DOT_FONTNAME = FreeSans # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. # The default size is 10pt. DOT_FONTSIZE = 10 # By default doxygen will tell dot to use the output directory to look for the # FreeSans.ttf font (which doxygen will put there itself). If you specify a # different font using DOT_FONTNAME you can set the path where dot # can find it using this tag. DOT_FONTPATH = # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = NO # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = NO # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = NO # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = YES # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = NO # If the CALL_GRAPH and HAVE_DOT options are set to YES then # doxygen will generate a call dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable call graphs # for selected functions only using the \callgraph command. CALL_GRAPH = NO # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then # doxygen will generate a caller dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable caller # graphs for selected functions only using the \callergraph command. CALLER_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = NO # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # nodes that will be shown in the graph. If the number of nodes in a graph # becomes larger than this value, doxygen will truncate the graph, which is # visualized by representing a node as a red box. Note that doxygen if the # number of direct children of the root node in a graph is already larger than # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. DOT_GRAPH_MAX_NODES = 50 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that the size of a graph can be further restricted by # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, because dot on Windows does not # seem to support this out of the box. Warning: Depending on the platform used, # enabling this option may lead to badly anti-aliased labels on the edges of # a graph (i.e. they become hard to read). DOT_TRANSPARENT = NO # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Options related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO #--------------------------------------------------------------------------- # Aliases #--------------------------------------------------------------------------- # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = scorep=Score-P \ cube=CUBE \ cube4=CUBE4 \ opari2=OPARI2 \ mpi=MPI \ pmpi=PMPI \ openmp=OpenMP \ pomp2=POMP2 \ ibm=IBM \ bluegene="Blue Gene" \ crayxt="Cray XT" \ necsx="NEC SX" \ papi=PAPI \ seclabel{1}="\latexonly\label{sec:\1} \endlatexonly" \ secref{1}="\if LATEX \latexonly~\ref{sec:\1}\xspace \endlatexonly \else   '@ref \1'   \endif" \ verb{1}="\latexonly\verb+\1+\endlatexonly\htmlonly\1\endhtmlonly" \ tabref{1}="\if LATEX \latexonly~\ref{tab:\1}\xspace \endlatexonly \else   @ref \1   \endif" \ tablabel{1}="\latexonly\label{tab:\1}\endlatexonly" \ htmlimg{3}="@anchor \2 @image html \1 \"Figure \2: \3\"" \ teximg{4}="\latexonly\begin{figure}[hbt]\begin{center}\includegraphics[\4]{@abs_top_srcdir@/doc/images/\1}\caption{\3}\label{fig:\2}\end{center}\end{figure}\endlatexonly" \ img{4}="\if LATEX @teximg{\1,\2,\3,\4} \else @htmlimg{\1,\2,\3} \endif" \ figref{1}="\if LATEX \latexonly~\ref{fig:\1}\xspace \endlatexonly \else   @ref \1   \endif" \ href{2}="\2" \ emph{1}="\1" eztrace-1.1-7/extlib/opari2/vendor/common/PaxHeaders.7332/build-config0000644000000000000000000000013013171135477022373 xustar0029 mtime=1508162367.70590487 30 atime=1508162367.741908015 29 ctime=1508162367.70590487 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/0000755000175000017500000000000013171135477023641 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/vendor/common/build-config/PaxHeaders.7332/platforms0000644000000000000000000000013213171135477024404 xustar0030 mtime=1508162367.417879717 30 atime=1508162367.741908015 30 ctime=1508162367.417879717 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/0000755000175000017500000000000013171135477025650 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-backend-ib0000644000000000000000000000013112617055645030206 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85488983 30 ctime=1508162367.357874475 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-backend-ibm0000644000175000017500000000015412617055645031553 0ustar00trahaytrahay00000000000000CC=xlc_r CXX=xlC_r F77=xlf_r FC=xlf95_r #CPPFLAGS= #CFLAGS= #CXXFLAGS= #FFLAGS= #FCFLAGS= #LDFLAGS= #LIBS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/compiler-frontend-s0000644000000000000000000000013012537514552030271 xustar0029 mtime=1434360170.71646613 29 atime=1507797543.85488983 30 ctime=1508162367.337872729 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/compiler-frontend-studio0000644000175000017500000000033512537514552032530 0ustar00trahaytrahay00000000000000CC_FOR_BUILD=cc CXX_FOR_BUILD=CC F77_FOR_BUILD=f77 FC_FOR_BUILD=f95 #CPPFLAGS_FOR_BUILD= CFLAGS_FOR_BUILD=-xO3 CXXFLAGS_FOR_BUILD=-xO3 FFLAGS_FOR_BUILD=-xO3 FCFLAGS_FOR_BUILD=-xO3 LDFLAGS_FOR_BUILD=-xO3 #LIBS_FOR_BUILD= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-frontend-u0000644000000000000000000000013112617055645030310 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85488983 30 ctime=1508162367.397877969 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-frontend-user-provided0000644000175000017500000000030412617055645034021 0ustar00trahaytrahay00000000000000CC_FOR_BUILD= CXX_FOR_BUILD= F77_FOR_BUILD= FC_FOR_BUILD= #CPPFLAGS_FOR_BUILD= #CFLAGS_FOR_BUILD= #CXXFLAGS_FOR_BUILD= #FFLAGS_FOR_BUILD= #FCFLAGS_FOR_BUILD= #LDFLAGS_FOR_BUILD= #LIBS_FOR_BUILD= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-backend-bg0000644000000000000000000000013112537514552030202 xustar0030 mtime=1434360170.720466077 29 atime=1507797543.85488983 30 ctime=1508162367.353874127 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-backend-bgl0000644000175000017500000000040212537514552031542 0ustar00trahaytrahay00000000000000CC=blrts_xlc CXX=blrts_xlC F77=blrts_xlf FC=blrts_xlf #CPPFLAGS= #CFLAGS= CXXFLAGS=-O3 -qarch=440 -qtune=440 FFLAGS=-qsuppress=cmpmsg FCFLAGS=-qfree=f90 -qsuffix=f=f90 LDFLAGS=-L/bgl/BlueLight/ppcfloor/bglsys/lib LIBS=-lmsglayer.rts -lrts.rts -ldevices.rts eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-frontend-i0000644000000000000000000000013112617055645030274 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85488983 30 ctime=1508162367.381876572 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-frontend-ibm0000644000175000017500000000037212617055645032005 0ustar00trahaytrahay00000000000000# not a cross compile platform, frontend ignored #CC_FOR_BUILD= #CXX_FOR_BUILD= #F77_FOR_BUILD= #FC_FOR_BUILD= #CPPFLAGS_FOR_BUILD= #CFLAGS_FOR_BUILD= #CXXFLAGS_FOR_BUILD= #FFLAGS_FOR_BUILD= #FCFLAGS_FOR_BUILD= #LDFLAGS_FOR_BUILD= #LIBS_FOR_BUILD= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-mpi-user-p0000644000000000000000000000013112537514552030223 xustar0030 mtime=1434360170.720466077 29 atime=1507797543.85488983 30 ctime=1508162367.421880065 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-mpi-user-provided0000644000175000017500000000017612537514552032774 0ustar00trahaytrahay00000000000000MPICC= MPICXX= MPIF77= MPIFC= #MPI_LDFLAGS= #MPI_LIBS= #MPI_CPPFLAGS= #MPI_CFLAGS= #MPI_CXXFLAGS= #MPI_FFLAGS= #MPI_FCFLAGS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/compiler-nocross-ib0000644000000000000000000000013112537514552030271 xustar0030 mtime=1434360170.720466077 29 atime=1507797543.85488983 30 ctime=1508162367.345873428 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/compiler-nocross-ibm0000644000175000017500000000015212537514552031634 0ustar00trahaytrahay00000000000000CC=xlc_r CXX=xlC_r F77=xlf_r FC=xlf_r #CPPFLAGS= #CFLAGS= #CXXFLAGS= #FFLAGS= #FCFLAGS= #LDFLAGS= #LIBS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-frontend-c0000644000000000000000000000013112617055645030266 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85488983 30 ctime=1508162367.381876572 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-frontend-crayxt0000644000175000017500000000033212617055645032544 0ustar00trahaytrahay00000000000000CC_FOR_BUILD=gcc CXX_FOR_BUILD=g++ F77_FOR_BUILD=gfortran FC_FOR_BUILD=gfortran #CPPFLAGS_FOR_BUILD= #CFLAGS_FOR_BUILD= #CXXFLAGS_FOR_BUILD= #FFLAGS_FOR_BUILD= #FCFLAGS_FOR_BUILD= #LDFLAGS_FOR_BUILD= #LIBS_FOR_BUILD= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/compiler-nocross-pg0000644000000000000000000000013012537514552030304 xustar0029 mtime=1434360170.71646613 29 atime=1507797543.85488983 30 ctime=1508162367.349873777 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/compiler-nocross-pgi0000644000175000017500000000015012537514552031642 0ustar00trahaytrahay00000000000000CC=pgcc CXX=pgCC F77=pgf77 FC=pgf90 #CPPFLAGS= #CFLAGS= #CXXFLAGS= #FFLAGS= #FCFLAGS= #LDFLAGS= #LIBS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/compiler-mpi-mpich20000644000000000000000000000013112617055645030162 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85488983 30 ctime=1508162367.341873078 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/compiler-mpi-mpich20000644000175000017500000000007512617055645031354 0ustar00trahaytrahay00000000000000MPICC="mpicc" MPICXX="mpicxx" MPIF77="mpif77" MPIFC="mpif90" eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/compiler-frontend-p0000644000000000000000000000013112537514552030267 xustar0030 mtime=1434360170.712466181 29 atime=1507797543.85488983 30 ctime=1508162367.337872729 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/compiler-frontend-pgi0000644000175000017500000000032612537514552032000 0ustar00trahaytrahay00000000000000CC_FOR_BUILD=pgcc CXX_FOR_BUILD=pgCC F77_FOR_BUILD=pgf77 FC_FOR_BUILD=pgf90 #CPPFLAGS_FOR_BUILD= #CFLAGS_FOR_BUILD= #CXXFLAGS_FOR_BUILD= #FFLAGS_FOR_BUILD= #FCFLAGS_FOR_BUILD= #LDFLAGS_FOR_BUILD= #LIBS_FOR_BUILD= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-mpi-sun0000644000000000000000000000013112617055645027617 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85488983 30 ctime=1508162367.417879717 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-mpi-sun0000644000175000017500000000022012617055645031001 0ustar00trahaytrahay00000000000000MPICC=mpcc MPICXX=mpCC MPIF77=mpf77 MPIFC=mpf95 #MPI_LDFLAGS= #MPI_LIBS= #MPI_CPPFLAGS= #MPI_CFLAGS= #MPI_CXXFLAGS= #MPI_FFLAGS= #MPI_FCFLAGS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-frontend-s0000644000000000000000000000013112617055645030306 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85488983 30 ctime=1508162367.397877969 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-frontend-sicortex0000644000175000017500000000043612617055645033077 0ustar00trahaytrahay00000000000000# no useful defaults set so far # ??? not a cross compile platform, frontend ignored #CC_FOR_BUILD= #CXX_FOR_BUILD= #F77_FOR_BUILD= #FC_FOR_BUILD= #CPPFLAGS_FOR_BUILD= #CFLAGS_FOR_BUILD= #CXXFLAGS_FOR_BUILD= #FFLAGS_FOR_BUILD= #FCFLAGS_FOR_BUILD= #LDFLAGS_FOR_BUILD= #LIBS_FOR_BUILD= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-frontend-b0000644000000000000000000000013112617055645030265 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85488983 30 ctime=1508162367.373875873 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-frontend-bgp0000644000175000017500000000033012617055645032000 0ustar00trahaytrahay00000000000000CC_FOR_BUILD=xlc_r CXX_FOR_BUILD=xlC_r F77_FOR_BUILD=xlf_r FC_FOR_BUILD=xlf_r #CPPFLAGS_FOR_BUILD= #CFLAGS_FOR_BUILD= #CXXFLAGS_FOR_BUILD= #FFLAGS_FOR_BUILD= #FCFLAGS_FOR_BUILD= #LDFLAGS_FOR_BUILD= #LIBS_FOR_BUILD= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-backend-bg0000644000000000000000000000013112537514552030202 xustar0030 mtime=1434360170.708466231 29 atime=1507797543.85488983 30 ctime=1508162367.353874127 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-backend-bgp0000644000175000017500000000023512537514552031552 0ustar00trahaytrahay00000000000000CC=bgxlc_r CXX=bgxlC_r F77=bgxlf_r FC=bgxlf_r #CPPFLAGS= #CFLAGS= #CXXFLAGS= FFLAGS=-qsuppress=cmpmsg FCFLAGS=-qfree=f90 -qsuppress=cmpmsg #LDFLAGS= #LIBS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-frontend-a0000644000000000000000000000013112537514552030262 xustar0030 mtime=1434360170.712466181 29 atime=1507797543.85488983 30 ctime=1508162367.373875873 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-frontend-altix0000644000175000017500000000037212537514552032355 0ustar00trahaytrahay00000000000000# not a cross compile platform, frontend ignored #CC_FOR_BUILD= #CXX_FOR_BUILD= #F77_FOR_BUILD= #FC_FOR_BUILD= #CPPFLAGS_FOR_BUILD= #CFLAGS_FOR_BUILD= #CXXFLAGS_FOR_BUILD= #FFLAGS_FOR_BUILD= #FCFLAGS_FOR_BUILD= #LDFLAGS_FOR_BUILD= #LIBS_FOR_BUILD= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-backend-cr0000644000000000000000000000013112617055645030220 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85488983 30 ctime=1508162367.357874475 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-backend-crayx10000644000175000017500000000017312617055645032214 0ustar00trahaytrahay00000000000000# no useful defaults set so far #CC= #CXX= #F77= #FC= #CPPFLAGS= #CFLAGS= #CXXFLAGS= #FFLAGS= #FCFLAGS= #LDFLAGS= #LIBS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-mpi-bgp0000644000000000000000000000013112537514552027560 xustar0030 mtime=1434360170.720466077 29 atime=1507797543.85488983 30 ctime=1508162367.405878668 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-mpi-bgp0000644000175000017500000000024412537514552030750 0ustar00trahaytrahay00000000000000MPICC=mpixlc_r MPICXX=mpixlcxx_r MPIF77=mpixlf77_r MPIFC=mpixlf95_r #MPI_LDFLAGS= #MPI_LIBS= #MPI_CPPFLAGS= #MPI_CFLAGS= #MPI_CXXFLAGS= #MPI_FFLAGS= #MPI_FCFLAGS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-mpi-altix0000644000000000000000000000013112537514552030131 xustar0030 mtime=1434360170.720466077 29 atime=1507797543.85488983 30 ctime=1508162367.401878319 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-mpi-altix0000644000175000017500000000022312537514552031316 0ustar00trahaytrahay00000000000000MPICC=icc MPICXX=icpc MPIF77=ifort MPIFC=ifort #MPI_LDFLAGS= MPI_LIBS=-lmpi #MPI_CPPFLAGS= #MPI_CFLAGS= #MPI_CXXFLAGS= #MPI_FFLAGS= #MPI_FCFLAGS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-mpi-linux0000644000000000000000000000013012537514552030146 xustar0029 mtime=1434360170.71646613 29 atime=1507797543.85488983 30 ctime=1508162367.413879367 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-mpi-linux0000644000175000017500000000030112537514552031331 0ustar00trahaytrahay00000000000000# can't decide what would be a useful default. use --with-mpi #MPICC= #MPICXX= #MPIF77= #MPIFC= #MPI_LDFLAGS= #MPI_LIBS= #MPI_CPPFLAGS= #MPI_CFLAGS= #MPI_CXXFLAGS= #MPI_FFLAGS= #MPI_FCFLAGS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-frontend-l0000644000000000000000000000013212537514552030276 xustar0030 mtime=1434360170.712466181 30 atime=1508162287.803123977 30 ctime=1508162367.381876572 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-frontend-linux0000644000175000017500000000037212537514552032373 0ustar00trahaytrahay00000000000000# not a cross compile platform, frontend ignored #CC_FOR_BUILD= #CXX_FOR_BUILD= #F77_FOR_BUILD= #FC_FOR_BUILD= #CPPFLAGS_FOR_BUILD= #CFLAGS_FOR_BUILD= #CXXFLAGS_FOR_BUILD= #FFLAGS_FOR_BUILD= #FCFLAGS_FOR_BUILD= #LDFLAGS_FOR_BUILD= #LIBS_FOR_BUILD= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/compiler-nocross-pa0000644000000000000000000000013112617055645030301 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85488983 30 ctime=1508162367.349873777 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/compiler-nocross-pathscale0000644000175000017500000000016012617055645033032 0ustar00trahaytrahay00000000000000CC=pathcc CXX=pathCC F77=pathf90 FC=pathf90 #CPPFLAGS= #CFLAGS= #CXXFLAGS= #FFLAGS= #FCFLAGS= #LDFLAGS= #LIBS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-frontend-n0000644000000000000000000000013012617055645030300 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85488983 29 ctime=1508162367.38987727 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-frontend-necsx0000644000175000017500000000033212617055645032352 0ustar00trahaytrahay00000000000000CC_FOR_BUILD=gcc CXX_FOR_BUILD=g++ F77_FOR_BUILD=gfortran FC_FOR_BUILD=gfortran #CPPFLAGS_FOR_BUILD= #CFLAGS_FOR_BUILD= #CXXFLAGS_FOR_BUILD= #FFLAGS_FOR_BUILD= #FCFLAGS_FOR_BUILD= #LDFLAGS_FOR_BUILD= #LIBS_FOR_BUILD= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-frontend-s0000644000000000000000000000013112617055645030306 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85488983 30 ctime=1508162367.397877969 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-frontend-sun0000644000175000017500000000037212617055645032043 0ustar00trahaytrahay00000000000000# not a cross compile platform, frontend ignored #CC_FOR_BUILD= #CXX_FOR_BUILD= #F77_FOR_BUILD= #FC_FOR_BUILD= #CPPFLAGS_FOR_BUILD= #CFLAGS_FOR_BUILD= #CXXFLAGS_FOR_BUILD= #FFLAGS_FOR_BUILD= #FCFLAGS_FOR_BUILD= #LDFLAGS_FOR_BUILD= #LIBS_FOR_BUILD= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-backend-su0000644000000000000000000000013112617055645030243 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85488983 30 ctime=1508162367.369875524 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-backend-sun0000644000175000017500000000014012617055645031604 0ustar00trahaytrahay00000000000000CC=cc CXX=CC F77=f77 FC=f95 #CPPFLAGS= #CFLAGS= #CXXFLAGS= #FFLAGS= #FCFLAGS= #LDFLAGS= #LIBS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-backend-li0000644000000000000000000000013112537514552030216 xustar0029 mtime=1434360170.71646613 30 atime=1508162287.803123977 30 ctime=1508162367.357874475 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-backend-linux0000644000175000017500000000015412537514552032141 0ustar00trahaytrahay00000000000000CC=gcc CXX=g++ F77=gfortran FC=gfortran #CPPFLAGS= #CFLAGS= #CXXFLAGS= #FFLAGS= #FCFLAGS= #LDFLAGS= #LIBS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-frontend-b0000644000000000000000000000013112617055645030265 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85488983 30 ctime=1508162367.373875873 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-frontend-bgl0000644000175000017500000000033212617055645031776 0ustar00trahaytrahay00000000000000CC_FOR_BUILD=xlc_r CXX_FOR_BUILD=xlC_r F77_FOR_BUILD=xlf_r FC_FOR_BUILD=xlf_r #CPPFLAGS_FOR_BUILD= #CFLAGS_FOR_BUILD= CXXFLAGS_FOR_BUILD=-O3 #FFLAGS_FOR_BUILD= #FCFLAGS_FOR_BUILD= #LDFLAGS_FOR_BUILD= #LIBS_FOR_BUILD= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/compiler-mpi-impi0000644000000000000000000000013112617055645027736 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85488983 30 ctime=1508162367.341873078 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/compiler-mpi-impi0000644000175000017500000000014212617055645031123 0ustar00trahaytrahay00000000000000MPICC=mpiicc -cc={CC} MPICXX=mpiicpc -cxx={CXX} MPIF77=mpiifort -fc={F77} MPIFC=mpiifort -fc={FC} eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-mpi-sicort0000644000000000000000000000013112617055645030315 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85488983 30 ctime=1508162367.417879717 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-mpi-sicortex0000644000175000017500000000034512617055645032044 0ustar00trahaytrahay00000000000000# no useful defaults set so far # ??? can't decide what would be a useful default. use --with-mpi #MPICC= #MPICXX= #MPIF77= #MPIFC= #MPI_LDFLAGS= #MPI_LIBS= #MPI_CPPFLAGS= #MPI_CFLAGS= #MPI_CXXFLAGS= #MPI_FFLAGS= #MPI_FCFLAGS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-frontend-m0000644000000000000000000000013112537514552030276 xustar0030 mtime=1434360170.712466181 29 atime=1507797543.85488983 30 ctime=1508162367.385876922 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-frontend-mac0000644000175000017500000000037212537514552031774 0ustar00trahaytrahay00000000000000# not a cross compile platform, frontend ignored #CC_FOR_BUILD= #CXX_FOR_BUILD= #F77_FOR_BUILD= #FC_FOR_BUILD= #CPPFLAGS_FOR_BUILD= #CFLAGS_FOR_BUILD= #CXXFLAGS_FOR_BUILD= #FFLAGS_FOR_BUILD= #FCFLAGS_FOR_BUILD= #LDFLAGS_FOR_BUILD= #LIBS_FOR_BUILD= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-backend-si0000644000000000000000000000013112617055645030227 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85888996 30 ctime=1508162367.369875524 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-backend-sicortex0000644000175000017500000000017312617055645032645 0ustar00trahaytrahay00000000000000# no useful defaults set so far #CC= #CXX= #F77= #FC= #CPPFLAGS= #CFLAGS= #CXXFLAGS= #FFLAGS= #FCFLAGS= #LDFLAGS= #LIBS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-mpi-crayxt0000644000000000000000000000013012537514552030321 xustar0029 mtime=1434360170.71646613 29 atime=1507797543.85888996 30 ctime=1508162367.409879017 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-mpi-crayxt0000644000175000017500000000021012537514552031503 0ustar00trahaytrahay00000000000000MPICC=cc MPICXX=CC MPIF77=ftn MPIFC=ftn #MPI_LDFLAGS= #MPI_LIBS= #MPI_CPPFLAGS= #MPI_CFLAGS= #MPI_CXXFLAGS= #MPI_FFLAGS= #MPI_FCFLAGS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-backend-ne0000644000000000000000000000013012537514552030213 xustar0029 mtime=1434360170.71646613 29 atime=1507797543.85888996 30 ctime=1508162367.361874825 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-backend-necsx0000644000175000017500000000031712537514552032123 0ustar00trahaytrahay00000000000000# It is necessary to set this because "sxmpic++ -E" always tries to # link and fails #CPP="sxcc -E" CC=sxcc CXX=sxc++ F77=sxf90 FC=sxf90 #CPPFLAGS= #CFLAGS= #CXXFLAGS= #FFLAGS= #FCFLAGS= #LDFLAGS= #LIBS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-mpi-mac0000644000000000000000000000013112537514552027550 xustar0030 mtime=1434360170.720466077 29 atime=1507797543.85888996 30 ctime=1508162367.413879367 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-mpi-mac0000644000175000017500000000030112537514552030732 0ustar00trahaytrahay00000000000000# can't decide what would be a useful default. use --with-mpi #MPICC= #MPICXX= #MPIF77= #MPIFC= #MPI_LDFLAGS= #MPI_LIBS= #MPI_CPPFLAGS= #MPI_CFLAGS= #MPI_CXXFLAGS= #MPI_FFLAGS= #MPI_FCFLAGS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-mpi-necsx0000644000000000000000000000013012537514552030127 xustar0029 mtime=1434360170.71646613 29 atime=1507797543.85888996 30 ctime=1508162367.417879717 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-mpi-necsx0000644000175000017500000000023512537514552031320 0ustar00trahaytrahay00000000000000MPICC=sxmpicc MPICXX=sxmpic++ MPIF77=sxmpif90 MPIFC=sxmpif90 #MPI_LDFLAGS= #MPI_LIBS= #MPI_CPPFLAGS= #MPI_CFLAGS= #MPI_CXXFLAGS= #MPI_FFLAGS= #MPI_FCFLAGS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/compiler-nocross-in0000644000000000000000000000013012537514552030304 xustar0029 mtime=1434360170.71646613 29 atime=1507797543.85888996 30 ctime=1508162367.345873428 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/compiler-nocross-intel0000644000175000017500000000014712537514552032204 0ustar00trahaytrahay00000000000000CC=icc CXX=icpc F77=ifort FC=ifort #CPPFLAGS= #CFLAGS= #CXXFLAGS= #FFLAGS= #FCFLAGS= #LDFLAGS= #LIBS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-backend-cr0000644000000000000000000000013112537514552030216 xustar0030 mtime=1434360170.712466181 29 atime=1507797543.85888996 30 ctime=1508162367.357874475 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-backend-crayxt0000644000175000017500000000014012537514552032307 0ustar00trahaytrahay00000000000000CC=cc CXX=CC F77=ftn FC=ftn #CPPFLAGS= #CFLAGS= #CXXFLAGS= #FFLAGS= #FCFLAGS= #LDFLAGS= #LIBS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-backend-ma0000644000000000000000000000013112537514552030207 xustar0030 mtime=1434360170.720466077 29 atime=1507797543.85888996 30 ctime=1508162367.361874825 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-backend-mac0000644000175000017500000000015412537514552031542 0ustar00trahaytrahay00000000000000CC=gcc CXX=g++ F77=gfortran FC=gfortran #CPPFLAGS= #CFLAGS= #CXXFLAGS= #FFLAGS= #FCFLAGS= #LDFLAGS= #LIBS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/compiler-nocross-gc0000644000000000000000000000013112537514552030270 xustar0030 mtime=1434360170.712466181 29 atime=1507797543.85888996 30 ctime=1508162367.345873428 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/compiler-nocross-gcc0000644000175000017500000000015412537514552031623 0ustar00trahaytrahay00000000000000CC=gcc CXX=g++ F77=gfortran FC=gfortran #CPPFLAGS= #CFLAGS= #CXXFLAGS= #FFLAGS= #FCFLAGS= #LDFLAGS= #LIBS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-mpi-bgl0000644000000000000000000000013112537514552027554 xustar0030 mtime=1434360170.720466077 29 atime=1507797543.85888996 30 ctime=1508162367.401878319 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-mpi-bgl0000644000175000017500000000051012537514552030740 0ustar00trahaytrahay00000000000000MPICC=blrts_xlc MPICXX=blrts_xlC MPIF77=blrts_xlf MPIFC=blrts_xlf MPI_LDFLAGS=-L/bgl/BlueLight/ppcfloor/bglsys/lib MPI_LIBS=-lmpich.rts MPI_CPPFLAGS=-I/bgl/BlueLight/ppcfloor/bglsys/include #MPI_CFLAGS= MPI_CXXFLAGS=-O3 -qarch=440 -qtune=440 MPI_FFLAGS=-qsuppress=cmpmsg MPI_FCFLAGS=-qfree=f90 -qsuffix=f=f90 -qsuppress=cmpmsg eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/compiler-mpi-openmp0000644000000000000000000000013112617055645030276 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85888996 30 ctime=1508162367.341873078 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/compiler-mpi-openmpi0000644000175000017500000000007412617055645031640 0ustar00trahaytrahay00000000000000MPICC="mpicc" MPICXX="mpiCC" MPIF77="mpif77" MPIFC="mpif90" eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-mpi-crayx10000644000000000000000000000013112617055645030221 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85888996 30 ctime=1508162367.405878668 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-mpi-crayx10000644000175000017500000000034512617055645031413 0ustar00trahaytrahay00000000000000# no useful defaults set so far # ??? can't decide what would be a useful default. use --with-mpi #MPICC= #MPICXX= #MPIF77= #MPIFC= #MPI_LDFLAGS= #MPI_LIBS= #MPI_CPPFLAGS= #MPI_CFLAGS= #MPI_CXXFLAGS= #MPI_FFLAGS= #MPI_FCFLAGS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/compiler-frontend-i0000644000000000000000000000013112537514552030260 xustar0030 mtime=1434360170.712466181 29 atime=1507797543.85888996 30 ctime=1508162367.333872379 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/compiler-frontend-ibm0000644000175000017500000000033012537514552031763 0ustar00trahaytrahay00000000000000CC_FOR_BUILD=xlc_r CXX_FOR_BUILD=xlC_r F77_FOR_BUILD=xlf_r FC_FOR_BUILD=xlf_r #CPPFLAGS_FOR_BUILD= #CFLAGS_FOR_BUILD= #CXXFLAGS_FOR_BUILD= #FFLAGS_FOR_BUILD= #FCFLAGS_FOR_BUILD= #LDFLAGS_FOR_BUILD= #LIBS_FOR_BUILD= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-frontend-c0000644000000000000000000000013112617055645030266 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85888996 30 ctime=1508162367.377876223 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-frontend-crayx10000644000175000017500000000043612617055645032446 0ustar00trahaytrahay00000000000000# no useful defaults set so far # ??? not a cross compile platform, frontend ignored #CC_FOR_BUILD= #CXX_FOR_BUILD= #F77_FOR_BUILD= #FC_FOR_BUILD= #CPPFLAGS_FOR_BUILD= #CFLAGS_FOR_BUILD= #CXXFLAGS_FOR_BUILD= #FFLAGS_FOR_BUILD= #FCFLAGS_FOR_BUILD= #LDFLAGS_FOR_BUILD= #LIBS_FOR_BUILD= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-backend-al0000644000000000000000000000013112537514552030206 xustar0030 mtime=1434360170.720466077 29 atime=1507797543.85888996 30 ctime=1508162367.353874127 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-backend-altix0000644000175000017500000000014712537514552032125 0ustar00trahaytrahay00000000000000CC=icc CXX=icpc F77=ifort FC=ifort #CPPFLAGS= #CFLAGS= #CXXFLAGS= #FFLAGS= #FCFLAGS= #LDFLAGS= #LIBS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/compiler-frontend-i0000644000000000000000000000013112537514552030260 xustar0030 mtime=1434360170.712466181 29 atime=1507797543.85888996 30 ctime=1508162367.333872379 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/compiler-frontend-intel0000644000175000017500000000032512537514552032333 0ustar00trahaytrahay00000000000000CC_FOR_BUILD=icc CXX_FOR_BUILD=icpc F77_FOR_BUILD=ifort FC_FOR_BUILD=ifort #CPPFLAGS_FOR_BUILD= #CFLAGS_FOR_BUILD= #CXXFLAGS_FOR_BUILD= #FFLAGS_FOR_BUILD= #FCFLAGS_FOR_BUILD= #LDFLAGS_FOR_BUILD= #LIBS_FOR_BUILD= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/compiler-nocross-st0000644000000000000000000000013012537514552030324 xustar0029 mtime=1434360170.71646613 29 atime=1507797543.85888996 30 ctime=1508162367.349873777 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/compiler-nocross-studio0000644000175000017500000000015712537514552032401 0ustar00trahaytrahay00000000000000CC=cc CXX=CC F77=f77 FC=f95 #CPPFLAGS= CFLAGS=-xO3 CXXFLAGS=-xO3 FFLAGS=-xO3 FCFLAGS=-xO3 LDFLAGS=-xO3 #LIBS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-mpi-ibm0000644000000000000000000000013112617055645027561 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85888996 30 ctime=1508162367.409879017 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-mpi-ibm0000644000175000017500000000023212617055645030746 0ustar00trahaytrahay00000000000000MPICC=mpcc_r MPICXX=mpCC_r MPIF77=mpxlf_r MPIFC=mpxlf90_r #MPI_LDFLAGS= #MPI_LIBS= #MPI_CPPFLAGS= #MPI_CFLAGS= #MPI_CXXFLAGS= #MPI_FFLAGS= #MPI_FCFLAGS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/compiler-frontend-g0000644000000000000000000000012712537514552030263 xustar0029 mtime=1434360170.71646613 29 atime=1507797543.85888996 29 ctime=1508162367.32987203 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/compiler-frontend-gcc0000644000175000017500000000033212537514552031752 0ustar00trahaytrahay00000000000000CC_FOR_BUILD=gcc CXX_FOR_BUILD=g++ F77_FOR_BUILD=gfortran FC_FOR_BUILD=gfortran #CPPFLAGS_FOR_BUILD= #CFLAGS_FOR_BUILD= #CXXFLAGS_FOR_BUILD= #FFLAGS_FOR_BUILD= #FCFLAGS_FOR_BUILD= #LDFLAGS_FOR_BUILD= #LIBS_FOR_BUILD= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/compiler-frontend-p0000644000000000000000000000013112617055645030271 xustar0030 mtime=1446796197.922458326 29 atime=1507797543.85888996 30 ctime=1508162367.333872379 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/compiler-frontend-pathscale0000644000175000017500000000033612617055645033170 0ustar00trahaytrahay00000000000000CC_FOR_BUILD=pathcc CXX_FOR_BUILD=pathCC F77_FOR_BUILD=pathf90 FC_FOR_BUILD=pathf90 #CPPFLAGS_FOR_BUILD= #CFLAGS_FOR_BUILD= #CXXFLAGS_FOR_BUILD= #FFLAGS_FOR_BUILD= #FCFLAGS_FOR_BUILD= #LDFLAGS_FOR_BUILD= #LIBS_FOR_BUILD= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/PaxHeaders.7332/platform-backend-us0000644000000000000000000000013112537514552030241 xustar0030 mtime=1434360170.720466077 29 atime=1507797543.85888996 30 ctime=1508162367.369875524 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/platforms/platform-backend-user-provided0000644000175000017500000000012612537514552033571 0ustar00trahaytrahay00000000000000CC= CXX= F77= FC= #CPPFLAGS= #CFLAGS= #CXXFLAGS= #FFLAGS= #FCFLAGS= #LDFLAGS= #LIBS= eztrace-1.1-7/extlib/opari2/vendor/common/build-config/PaxHeaders.7332/generate-package-version.sh0000644000000000000000000000013212616154344027651 xustar0030 mtime=1446566116.658427931 30 atime=1508162201.828527023 30 ctime=1508162367.421880065 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/generate-package-version.sh0000755000175000017500000000017212616154344031043 0ustar00trahaytrahay00000000000000#!/bin/sh res=`cat $1` if [ $# -gt 1 ] ; then IFS=. read major minor bugfix < $1 eval $2 else echo -n $res fieztrace-1.1-7/extlib/opari2/vendor/common/build-config/PaxHeaders.7332/common.am0000644000000000000000000000013112617055645024262 xustar0030 mtime=1446796197.922458326 30 atime=1508162206.668869794 29 ctime=1508162367.70590487 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/common.am0000644000175000017500000000706712617055645025464 0ustar00trahaytrahay00000000000000## -*- mode: makefile -*- ## ## This file is part of the Score-P software (http://www.score-p.org) ## ## Copyright (c) 2009-2011, ## RWTH Aachen, Germany ## Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ## Technische Universitaet Dresden, Germany ## University of Oregon, Eugene, USA ## Forschungszentrum Juelich GmbH, Germany ## German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ## Technische Universitaet Muenchen, Germany ## ## See the COPYING file in the package base directory for details. ## ## file vendor/common/build-config/common.am ## Intended to be included by the component's ## build-includes/common.am. Defines "common" entities that all ## components rely on. ## maintainer Christian Roessel ## AM_CPPFLAGS: The contents of this variable are passed to every compilation ## that invokes the C preprocessor; it is a list of arguments to the ## preprocessor. For instance, -I and -D options should be listed here. ## ## Automake already provides some -I options automatically, in a separate ## variable that is also passed to every compilation that invokes the C ## preprocessor. In particular it generates -I., -I$(srcdir), and a -I ## pointing to the directory holding config.h (if you've used ## AC_CONFIG_HEADERS or AM_CONFIG_HEADER). You can disable the default -I ## options using the nostdinc option. ## ## AM_CPPFLAGS is ignored in preference to a per-executable (or per-library) ## _CPPFLAGS variable if it is defined. So add it if necessary. ## ## -I$(srcdir)/../src: path to config.h; is this really necessary? AM_CPPFLAGS = -I$(srcdir)/../src ## Convenience variable, use for referencing sources, e.g. ## foo_SOURCES = $(SRC_ROOT)src/foo/foo.c. For CPPFLAGS use SRC_ROOT_* ## See the note below SRC_ROOT = ../ ## Convenience variables, use for referencing include directories, ## e.g. foo_CPPFLAGS = $(AM_CPPFLAGS) -I$(INC_ROOT)src/bar ## -I$(INC_DIR_UTIL) -I$(PUBLIC_INC_DIR). ## Note: we need different convenience variable for SRC and INC ## because they are evaluated at different times. The SRC_ROOT ## variable is evaluated at autoreconf time where it is not ## recommended to use $(srcdir). On the other hand the INC_ROOT ## variable is evaluated during configure. INC_ROOT = $(srcdir)/../ PUBLIC_INC_DIR = $(INC_ROOT)include ## Not really needed but already in use. LIB_ROOT = ## Add entities using += to the following primaries/variables in ## locale Makefile.inc.ams bin_PROGRAMS = noinst_PROGRAMS = lib_LTLIBRARIES = noinst_LTLIBRARIES = nobase_include_HEADERS = BUILT_SOURCES = CLEANFILES = DISTCLEANFILES = EXTRA_DIST = check_PROGRAMS = check_LTLIBRARIES = PHONY_TARGETS = INSTALL_DATA_LOCAL_TARGETS = INSTALL_DATA_HOOK_TARGETS = UNINSTALL_LOCAL_TARGETS = dist_bin_SCRIPTS = ## TESTS are handlend differntly because of cross-, mpi- and openmp ## environments, see the component specific common.am or Makefile.am ## resp. But we need to define TESTS or else am__tty_colors will not ## get defined which leads to an syntax error in our tests. TESTS = XFAIL_TESTS = # TESTS_ENVIRONMENT = .PHONY: $(PHONY_TARGETS) ## Automatically update the libtool script if it becomes out-of-date. libtool: $(LIBTOOL_DEPS) $(SHELL) ./config.status --recheck ## need to have an empty rule here in order to stop recursion. beautify: ## just build all targets specified by check_PROGRAMS and ## check_LTLIBRARIES here, don't traverse into subdirectories check-build: $(BUILT_SOURCES) all-am $(check_PROGRAMS) $(check_LTLIBRARIES) DISTCLEANFILES += $(builddir)/config.summary eztrace-1.1-7/extlib/opari2/vendor/common/build-config/PaxHeaders.7332/Makefile.inc.am0000644000000000000000000000013212617055645025260 xustar0030 mtime=1446796197.922458326 30 atime=1508162212.121260811 30 ctime=1508162367.293868886 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/Makefile.inc.am0000644000175000017500000003656712617055645026470 0ustar00trahaytrahay00000000000000## -*- mode: makefile -*- ## ## This file is part of the Score-P software (http://www.score-p.org) ## ## Copyright (c) 2009-2011, ## RWTH Aachen, Germany ## Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ## Technische Universitaet Dresden, Germany ## University of Oregon, Eugene, USA ## Forschungszentrum Juelich GmbH, Germany ## German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ## Technische Universitaet Muenchen, Germany ## ## See the COPYING file in the package base directory for details. ## ## file vendor/common/build-config/Makefile.inc.am ## maintainer Christian Roessel EXTRA_DIST = CLEANFILES = DISTCLEANFILES = # Create platform entries for EXTRA_DIST using e.g.: # cd vendor/common/build-config/platforms # for i in *; do echo " \$(srcdir)/vendor/common/build-config/platforms/$i \\"; done EXTRA_DIST += $(srcdir)/vendor/common/build-config/process_arguments.awk \ $(srcdir)/vendor/common/build-config/platforms/compiler-frontend-gcc \ $(srcdir)/vendor/common/build-config/platforms/compiler-frontend-ibm \ $(srcdir)/vendor/common/build-config/platforms/compiler-frontend-intel \ $(srcdir)/vendor/common/build-config/platforms/compiler-frontend-pathscale \ $(srcdir)/vendor/common/build-config/platforms/compiler-frontend-pgi \ $(srcdir)/vendor/common/build-config/platforms/compiler-frontend-studio \ $(srcdir)/vendor/common/build-config/platforms/compiler-mpi-impi \ $(srcdir)/vendor/common/build-config/platforms/compiler-mpi-mpich2 \ $(srcdir)/vendor/common/build-config/platforms/compiler-mpi-openmpi \ $(srcdir)/vendor/common/build-config/platforms/compiler-nocross-gcc \ $(srcdir)/vendor/common/build-config/platforms/compiler-nocross-ibm \ $(srcdir)/vendor/common/build-config/platforms/compiler-nocross-intel \ $(srcdir)/vendor/common/build-config/platforms/compiler-nocross-pathscale \ $(srcdir)/vendor/common/build-config/platforms/compiler-nocross-pgi \ $(srcdir)/vendor/common/build-config/platforms/compiler-nocross-studio \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-altix \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-bgl \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-bgp \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-crayx1 \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-crayxt \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-ibm \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-linux \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-mac \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-necsx \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-sicortex \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-sun \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-user-provided \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-altix \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-bgl \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-bgp \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-crayx1 \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-crayxt \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-ibm \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-linux \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-mac \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-necsx \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-sicortex \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-sun \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-user-provided \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-altix \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-bgl \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-bgp \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-crayx1 \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-crayxt \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-ibm \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-linux \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-mac \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-necsx \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-sicortex \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-sun \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-user-provided \ $(srcdir)/vendor/common/build-config/generate-package-version.sh \ $(srcdir)/vendor/common/build-config/generate-library-version.sh \ $(srcdir)/build-config/VERSION \ $(srcdir)/vendor/common/cutest/CuTest.c \ $(srcdir)/vendor/common/cutest/CuTest.h CLEANFILES += $(builddir)/user_provided_configure_args \ $(builddir)/mpi_compiler_suite \ $(builddir)/mpi_compiler_suite_to_source DISTCLEANFILES += $(builddir)/config.summary prohibit-svn-files-in-dist: @find $(top_distdir) -type d | grep "\.svn"; \ if [ $$? -eq 0 ]; then \ echo "ERROR: subversion files found in distribution. This is usually caused by"; \ echo "referencing directories in EXTRA_DIST. Please specify the files that need"; \ echo "to go into the distribution explicitly."; \ exit 1; \ fi DOC_SRC_DIR = $(srcdir)/doc common-uninstall: rm -rf $(DESTDIR)$(docdir) rm -rf $(DESTDIR)$(datadir)/@PACKAGE_NAME@ ############################################################################### ## doxygen related targets ## ## In the following conditional we must distinguish if we are in "developer ## mode", i.e. if we are working on a svn working copy, or if we are in "user ## mode", i.e. we are working on a tarball. ## ## In developer mode we can create doxygen and pdf user documentation (make ## doxygen-user) that will be (automatically) included in the distribution at ## make dist. When creating a distribution, the developer should make sure ## that she has doxygen and related tools e.g. pdflatex in PATH in order to ## generate a complete documentation, see also ## vendor/common/build-config/m4/ac_scorep_doxygen.m4. ## ## make install is ignorant of documentation issues in developer mode. ## ## The user gets ready to install documentation in the tarball, i.e. there is no ## need to run doxygen and pdflatex in user mode. In user mode the provided ## documentation is just copied to a subdirectory of $prefix. if SVN_CONTROLLED #----------------------------------------------------------- USER_DOC_DIR = $(top_distdir)$(ac_scorep_doxygen_distdir)/doc doxygen-user-install: doxygen-user-generate: doxygen-user-pdf doxygen-user-html-compress copy-revision-file-to-dist update-revision: echo `svnversion $(srcdir)` > "$(srcdir)/build-config/REVISION" copy-revision-file-to-dist: $(MKDIR_P) "$(distdir)/build-config/" for i in REVISION REVISION_COMMON; do \ cp -p "$(srcdir)/build-config/$$i" "$(distdir)/build-config/"; \ if grep -E [A-Z] "$(srcdir)/build-config/$$i" || \ grep "-" "$(srcdir)/build-config/$$i"; then \ echo "WARNING: distribution does not match a single, unmodified revision." >&2; \ fi \ done doxygen-user-html-compress: if test -d "$(USER_DOC_DIR)/html"; then \ cd "$(USER_DOC_DIR)"; tar czvf html.tar.gz html; rm -rf html/; \ fi doxygen-project-number: update-revision echo "PROJECT_NUMBER = \"@PACKAGE_VERSION@ (revision `cat $(srcdir)/build-config/REVISION`)\"" > doc/doxygen-project-number.cfg CLEANFILES += doc/doxygen-project-number.cfg doxygen-user-clean: rm -rf $(USER_DOC_DIR)/* if HAVE_DOXYGEN #----------------------------------------------------- doxygen-user: doxygen-project-number doc/doxygen-user/main.dox $(MKDIR_P) "$(USER_DOC_DIR)/tags" echo "OUTPUT_DIRECTORY = $(USER_DOC_DIR)" > doc/doxygen-user-at-make-time.cfg echo "GENERATE_TAGFILE = $(USER_DOC_DIR)/tags/@PACKAGE_NAME@.tag" >> doc/doxygen-user-at-make-time.cfg cat doc/doxygen-project-number.cfg doc/doxygen-user-at-make-time.cfg doc/doxygen-user-common.cfg doc/doxygen-user-component.cfg > doc/doxygen-user.cfg $(MKDIR_P) "$(USER_DOC_DIR)/html" cp $(abs_srcdir)/doc/images/* $(USER_DOC_DIR)/html doxygen doc/doxygen-user.cfg CLEANFILES += doc/doxygen-user.cfg doc/doxygen-user-at-make-time.cfg doxygen.err else # i.e. ! HAVE_DOXYGEN ------------------------------------------- doxygen-user: echo "WARNING: doxygen not available. Can not generate documentation." >&2 endif # HAVE_DOXYGEN ------------------------------------------------- if HAVE_DOXYGEN_LATEX #----------------------------------------------- doxygen-user-pdf: doxygen-user cat doc/doxygen-user.cfg > doc/doxygen-user-pdf.cfg echo "ENABLED_SECTIONS = LATEX" >> doc/doxygen-user-pdf.cfg echo "GENERATE_LATEX = YES" >> doc/doxygen-user-pdf.cfg echo "GENERATE_HTML = NO" >> doc/doxygen-user-pdf.cfg cp $(abs_srcdir)/vendor/common/build_related/doxygen/scorep.sty $(USER_DOC_DIR)/pdf/ doxygen doc/doxygen-user-pdf.cfg cd "$(USER_DOC_DIR)/pdf"; \ make; \ mv refman.pdf ../; \ rm -f *; \ mv ../refman.pdf @PACKAGE_NAME@.pdf else # i.e. ! HAVE_DOXYGEN_LATEX ------------------------------------- doxygen-user-pdf: doxygen-user echo "WARNING: pdflatex not available. Can not generate doxygen pdf documentation." >&2 if test -d "$(USER_DOC_DIR)/pdf"; then rm -rf "$(USER_DOC_DIR)/pdf"; fi endif # HAVE_DOXYGEN_LATEX ------------------------------------------- else # i.e. ! SVN_CONTROLLED ------------------------------------------------- doxygen-user-clean: doxygen-user-generate: doxygen-user-pdf: doxygen-user-install: if test -f "$(DOC_SRC_DIR)/html.tar.gz"; then \ $(MKDIR_P) $(DESTDIR)$(docdir); \ $(INSTALL_DATA) $(DOC_SRC_DIR)/html.tar.gz $(DESTDIR)$(docdir)/html.tar.gz; \ cd $(DESTDIR)$(docdir); \ tar xzvf html.tar.gz; \ rm -f html.tar.gz; \ fi if test -d "$(DOC_SRC_DIR)"; then \ cd $(DOC_SRC_DIR); \ dirs="pdf tags"; \ cd -; \ for i in $$dirs; do \ if test -d "$(DOC_SRC_DIR)/$$i"; then \ $(MKDIR_P) $(DESTDIR)$(docdir)/$$i; \ cd $(DOC_SRC_DIR)/$$i; \ files=`find . -type f |grep -v .svn`; \ cd -; \ for j in $$files; do \ $(INSTALL_DATA) $(DOC_SRC_DIR)/$$i/$$j $(DESTDIR)$(docdir)/$$i/$$j; \ done; \ fi; \ done; \ fi copy-revision-file-to-dist: endif # SVN_CONTROLLED ## ## ############################################################################### SCOREP_RECURSIVE_TARGETS= ############################################################################### ## code beautification targets ## if SVN_CONTROLLED if HAVE_UNCRUSTIFY beautify-sp: @$(am__cd) $(srcdir) && ./vendor/common/beautifier/beautify beautify: beautify-recursive SCOREP_RECURSIVE_TARGETS += beautify-recursive beautify-clean: endif # HAVE_UNCRUSTIFY endif # SVN_CONTROLLED ## ## ############################################################################### ############################################################################### ## bitten targets, intended to be used from bitten only ## bitten-copy-tarball-to-prefix: $(distdir).tar.gz $(MKDIR_P) $(DESTDIR)$(prefix) $(INSTALL_DATA) $(distdir).tar.gz $(DESTDIR)$(prefix)/$(PACKAGE)-latest.tar.gz bitten-print-environment: env ## ## ############################################################################### ############################################################################### ## trigger build of check_* targets here and in subdirectories. ## check-build-sp: $(BUILT_SOURCES) all-am $(check_PROGRAMS) $(check_LTLIBRARIES) check-build: check-build-recursive SCOREP_RECURSIVE_TARGETS += check-build-recursive ## ## ############################################################################### $(SCOREP_RECURSIVE_TARGETS): ## Using $failcom allows "-k" to keep its natural meaning when running a ## recursive rule. @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-sp"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-sp" || exit 1; \ fi; test -z "$$fail" eztrace-1.1-7/extlib/opari2/vendor/common/build-config/PaxHeaders.7332/generate-library-version.sh0000644000000000000000000000013212616154341027717 xustar0030 mtime=1446566113.630373613 30 atime=1508162201.844528148 30 ctime=1508162367.425880415 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/generate-library-version.sh0000755000175000017500000000017512616154341031114 0ustar00trahaytrahay00000000000000#!/bin/sh res=`cat $1` if [ $# -gt 1 ] ; then IFS=. read current revision age < $1 eval $2 else echo -n $res fi eztrace-1.1-7/extlib/opari2/vendor/common/build-config/PaxHeaders.7332/m40000644000000000000000000000013213171135477022715 xustar0030 mtime=1508162367.701904521 30 atime=1508162367.741908015 30 ctime=1508162367.701904521 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/0000755000175000017500000000000013171135477024161 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/PaxHeaders.7332/ac_scorep_sys_detection.m40000644000000000000000000000013112617055645030127 xustar0030 mtime=1446796197.922458326 29 atime=1508162201.41649805 30 ctime=1508162367.289868537 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/ac_scorep_sys_detection.m40000644000175000017500000001600212617055645031316 0ustar00trahaytrahay00000000000000## -*- mode: autoconf -*- ## ## This file is part of the Score-P software (http://www.score-p.org) ## ## Copyright (c) 2009-2011, ## RWTH Aachen University, Germany ## Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ## Technische Universitaet Dresden, Germany ## University of Oregon, Eugene, USA ## Forschungszentrum Juelich GmbH, Germany ## German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ## Technische Universitaet Muenchen, Germany ## ## See the COPYING file in the package base directory for details. ## AC_DEFUN([_AC_SCOREP_DETECT_LINUX_PLATFORMS], [ if test "x${ac_scorep_platform}" = "xunknown"; then case ${build_os} in linux*) AS_IF([test "x${build_cpu}" = "xia64" -a -f /etc/sgi-release], [ac_scorep_platform="altix"; ac_scorep_cross_compiling="no"], [test "x${build_cpu}" = "xpowerpc64" -a -d /bgl/BlueLight], [ac_scorep_platform="bgl"; ac_scorep_cross_compiling="yes"], [test "x${build_cpu}" = "xpowerpc64" -a -d /bgsys], [ac_scorep_platform="bgp"; ac_scorep_cross_compiling="yes"], [test "x${build_cpu}" = "xx86_64" -a -d /opt/cray/xt-asyncpe], [ac_scorep_platform="crayxt"; ac_scorep_cross_compiling="yes"], [test "x${build_cpu}" = "xmips64" -a -d /opt/sicortex], [ac_scorep_platform="sicortex"; ac_scorep_cross_compiling="yes"], [ac_scorep_platform=linux] ) ;; esac fi ]) AC_DEFUN([_AC_SCOREP_DETECT_NON_LINUX_PLATFORMS], [ if test "x${ac_scorep_platform}" = "xunknown"; then case ${build_os} in sunos* | solaris*) ac_scorep_platform="sun" ac_scorep_cross_compiling="no" ;; darwin*) ac_scorep_platform="mac" ac_scorep_cross_compiling="no" ;; aix*) ac_scorep_platform="ibm" ac_scorep_cross_compiling="no" ;; unicosmp*) ac_scorep_platform="crayx1" ac_scorep_cross_compiling="no" ;; superux*) ac_scorep_platform="necsx" ac_scorep_cross_compiling="yes" ;; esac fi ]) # The purpose of platform detection is to provide reasonable default # compilers, mpi-implementations, OpenMP flags etc. The user always has the # possibility to override the defaults by setting environment variables, see # section "Some influential environment variables" in configure --help. On # some systems there may be no reasonable defaults for the mpi-implementation, # so specify them using --with-mpi=... I think we need to specify one or more # paths too. Also, on some systems there are different compiler-suites available # which can be choosen via --with-compiler=(gnu?|intel|sun|ibm|...) # Have to think this over... AC_DEFUN([AC_SCOREP_DETECT_PLATFORMS], [ AC_REQUIRE([AC_CANONICAL_BUILD]) ac_scorep_platform="unknown" ac_scorep_cross_compiling="no" ac_scorep_platform_detection="" ac_scorep_platform_detection_given="" ac_scorep_compilers_frontend="" ac_scorep_compilers_backend="" ac_scorep_compilers_mpi="" path_to_compiler_files="$srcdir/vendor/common/build-config/platforms/" if test "x${host_alias}" != "x"; then AC_CANONICAL_HOST if test "x${build}" != "x${host}"; then ac_scorep_cross_compiling="yes" fi fi AC_ARG_ENABLE([platform-detection], [AS_HELP_STRING([--enable-platform-detection], [autodetect platform [yes]])], [ac_scorep_platform_detection_given="$enableval"], [AS_IF([test "x${build_alias}" = "x" -a "x${host_alias}" = "x"], [ac_scorep_platform_detection="yes"], [ac_scorep_platform_detection="no"])]) if test "x${ac_scorep_platform_detection_given}" = "xyes"; then if test "x${build_alias}" != "x" -o "x${host_alias}" != "x"; then AC_MSG_ERROR([it makes no sense to request for platform detection while providing --host and/or --build.]) fi fi if test "x${ac_scorep_platform_detection_given}" != "x"; then ac_scorep_platform_detection="$ac_scorep_platform_detection_given" fi if test "x${ac_scorep_platform_detection}" = "xyes"; then _AC_SCOREP_DETECT_LINUX_PLATFORMS _AC_SCOREP_DETECT_NON_LINUX_PLATFORMS AC_MSG_CHECKING([for platform]) if test "x${ac_scorep_platform}" = "xunknown"; then AC_MSG_RESULT([$ac_scorep_platform, please contact if you encounter any problems.]) else AC_MSG_RESULT([$ac_scorep_platform]) ac_scorep_compilers_frontend="${path_to_compiler_files}platform-frontend-${ac_scorep_platform}" ac_scorep_compilers_backend="${path_to_compiler_files}platform-backend-${ac_scorep_platform}" ac_scorep_compilers_mpi="${path_to_compiler_files}platform-mpi-${ac_scorep_platform}" fi AC_MSG_CHECKING([for cross compilation]) AC_MSG_RESULT([$ac_scorep_cross_compiling]) elif test "x${ac_scorep_platform_detection}" = "xno"; then AC_MSG_NOTICE([platform detection disabled.]) AC_MSG_CHECKING([for cross compilation]) AC_MSG_RESULT([$ac_scorep_cross_compiling]) ac_scorep_compilers_frontend="${path_to_compiler_files}platform-frontend-user-provided" ac_scorep_compilers_backend="${path_to_compiler_files}platform-backend-user-provided" ac_scorep_compilers_mpi="${path_to_compiler_files}platform-mpi-user-provided" else AC_MSG_ERROR([unknown value for ac_scorep_platform_detection: $ac_scorep_platform_detection]) fi ]) AC_DEFUN([AC_SCOREP_PLATFORM_SETTINGS], [ AC_REQUIRE([AC_SCOREP_DETECT_PLATFORMS]) AM_CONDITIONAL([PLATFORM_ALTIX], [test "x${ac_scorep_platform}" = "xaltix"]) AM_CONDITIONAL([PLATFORM_POWER6], [test "x${ac_scorep_platform}" = "xibm" -a "x${build_cpu}" = "xpowerpc"]) AM_CONDITIONAL([PLATFORM_BGL], [test "x${ac_scorep_platform}" = "xbgl"]) AM_CONDITIONAL([PLATFORM_BGP], [test "x${ac_scorep_platform}" = "xbgp"]) AM_CONDITIONAL([PLATFORM_CRAYXT], [test "x${ac_scorep_platform}" = "xcrayxt"]) AM_CONDITIONAL([PLATFORM_SICORTEX], [test "x${ac_scorep_platform}" = "xsicortex"]) AM_CONDITIONAL([PLATFORM_LINUX], [test "x${ac_scorep_platform}" = "xlinux"]) AM_CONDITIONAL([PLATFORM_SUN], [test "x${ac_scorep_platform}" = "xsun"]) AM_CONDITIONAL([PLATFORM_MAC], [test "x${ac_scorep_platform}" = "xmac"]) AM_CONDITIONAL([PLATFORM_CRAYX1], [test "x${ac_scorep_platform}" = "xcrayx1"]) AM_CONDITIONAL([PLATFORM_NECSX], [test "x${ac_scorep_platform}" = "xnecsx"]) ]) eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/PaxHeaders.7332/lt~obsolete.m40000644000000000000000000000013213171135233025574 xustar0030 mtime=1508162203.584650904 30 atime=1508162203.600652034 30 ctime=1508162367.697904171 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/lt~obsolete.m40000644000175000017500000001377413171135233026777 0ustar00trahaytrahay00000000000000# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software # Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/PaxHeaders.7332/libtool.m40000644000000000000000000000013113171135233024665 xustar0030 mtime=1508162203.508645532 29 atime=1508162203.52064638 30 ctime=1508162367.697904171 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/libtool.m40000644000175000017500000112617113171135233026066 0ustar00trahaytrahay00000000000000# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 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. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . ]) # serial 58 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_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. 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 ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from 'configure', and 'config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # 'config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain=$ac_aux_dir/ltmain.sh ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the 'libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to 'config.status' so that its # declaration there will have the same value as in 'configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags='_LT_TAGS'dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into 'config.status', and then the shell code to quote escape them in # for loops in 'config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # '#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test 0 = "$lt_write_fail" && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ '$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 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 != $[#] do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try '$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try '$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test yes = "$silent" && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # 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 _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 aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then 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 lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS=$save_LDFLAGS ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -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 lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[[012]][[,.]]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; 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' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test 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\"`' 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 case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], [ if test 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" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script that will find a shell with a builtin # printf (that we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case $ECHO in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [Search for dependent libraries within DIR (or the compiler's sysroot if not specified).])], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([$with_sysroot]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and where our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test no = "$enable_libtool_lock" || 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. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out 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 if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; 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*| \ 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. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) 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" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; 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 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test 0 -eq "$ac_status"; 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 lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test yes = "[$]$2"; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ]) if test yes = "[$]$2"; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n "$lt_cv_sys_max_cmd_len"; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes = "$cross_compiling"; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; 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], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen=dlopen], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) ]) ]) ]) ]) ]) ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links=nottested if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test no = "$hard_links"; then AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", [Define to the sub-directory where libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then # We can hardcode non-existent directories. if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && # 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 # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_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 m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...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 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 test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown 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' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # 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 # 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 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[)]' # 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 shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # 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 ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; 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' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; 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 ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # 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' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; 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*) 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # 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. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no 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' 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' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # 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=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; 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 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 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]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([sys_lib_dlsearch_path_spec], [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_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program that can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$1"; then lt_cv_path_MAGIC_CMD=$ac_dir/"$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac]) MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program that can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test no = "$withval" || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &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 # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # 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. case $host_os in aix[[4-9]]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[[45]]*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # 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'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi]) if test no != "$lt_cv_path_NM"; 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 *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test yes != "$lt_cv_path_mainfest_tool"; 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 AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM=-lm) ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test yes = "$GCC"; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac 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'" # 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'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported 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))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_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 # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; 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 # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test yes = "$GCC"; 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 # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; 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*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; 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) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*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' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to 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. 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' 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' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; 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' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, 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' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; 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' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; 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" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; 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(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in 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(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to 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. 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' 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' 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 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 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 exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' 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 if test yes = "$GCC"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; 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 # 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' else 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' # 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 # 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 else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _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' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-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=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test 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' 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' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; hpux10*) if test 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' 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' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test 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' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS=$save_LDFLAGS]) if test 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' 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' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; 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) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) 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 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' else _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' fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported 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 ;; 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' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test 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' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test 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' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test 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' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' if test 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' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test yes,yes = "$GCC,$enable_shared"; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting $shlibpath_var if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC=$CC AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report what 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 # 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 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 fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC=$lt_save_CC ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; 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 # 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' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # 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 case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done 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 exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' 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 if test yes = "$GXX"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; 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 # 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' else 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' # 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 # 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' # 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 else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _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' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; 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' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-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=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, 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' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _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++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test 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' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test 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' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd* | bitrig*) 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' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; 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_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' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $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' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(GCC, $1)=$GXX _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case @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\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)=$prev$p else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)=$p else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)=$p else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_F77"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && 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 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 fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$G77 _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_F77" AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_FC"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && 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 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 fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_FC" AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # 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'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code=$lt_simple_compile_test_code # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f "$lt_ac_sed" && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test 10 -lt "$lt_ac_count" && break lt_ac_count=`expr $lt_ac_count + 1` if test "$lt_ac_count" -gt "$lt_ac_max"; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine what file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/PaxHeaders.7332/ac_opari_common_checks.m40000644000000000000000000000013212617055645027703 xustar0030 mtime=1446796197.922458326 30 atime=1508162201.424498612 30 ctime=1508162367.693903822 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/ac_opari_common_checks.m40000644000175000017500000001350512617055645031076 0ustar00trahaytrahay00000000000000## -*- mode: autoconf -*- ## ## This file is part of the Score-P software (http://www.score-p.org) ## ## Copyright (c) 2009-2011, ## RWTH Aachen University, Germany ## Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ## Technische Universitaet Dresden, Germany ## University of Oregon, Eugene, USA ## Forschungszentrum Juelich GmbH, Germany ## German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ## Technische Universitaet Muenchen, Germany ## ## See the COPYING file in the package base directory for details. ## AC_DEFUN([AC_OPARI_COMMON_CHECKS], [ ## Determine a C compiler to use. If CC is not already set in the environment, ## check for gcc and cc, then for other C compilers. Set output variable CC to ## the name of the compiler found. ## ## This macro may, however, be invoked with an optional first argument which, ## if specified, must be a blank-separated list of C compilers to search ## for. This just gives the user an opportunity to specify an alternative ## search list for the C compiler. For example, if you didn't like the default ## order, then you could invoke AC_PROG_CC like this: AC_PROG_CC([gcc cl cc]) AC_REQUIRE([AC_PROG_CC]) AC_SCOREP_COMPILER_CHECKS ## If the C compiler is not in C99 mode by default, try to add an option to ## output variable CC to make it so. This macro tries various options that ## select C99 on some system or another. It considers the compiler to be in ## C99 mode if it handles _Bool, // comments, flexible array members, inline, ## signed and unsigned long long int, mixed code and declarations, named ## initialization of structs, restrict, va_copy, varargs macros, variable ## declarations in for loops, and variable length arrays. After calling this ## macro you can check whether the C compiler has been set to accept C99; if ## not, the shell variable ac_cv_prog_cc_c99 is set to `no'. AC_REQUIRE([SCOREP_PROG_CC_C99]) ## Determine a C++ compiler to use. Check whether the environment variable CXX ## or CCC (in that order) is set; if so, then set output variable CXX to its ## value. ## ## Otherwise, if the macro is invoked without an argument, then search for a ## C++ compiler under the likely names (first g++ and c++ then other ## names). If none of those checks succeed, then as a last resort set CXX to ## g++. ## ## This macro may, however, be invoked with an optional first argument which, ## if specified, must be a blank-separated list of C++ compilers to search ## for. This just gives the user an opportunity to specify an alternative ## search list for the C++ compiler. For example, if you didn't like the ## default order, then you could invoke AC_PROG_CXX like this: ## AC_PROG_CXX([gcc cl KCC CC cxx cc++ xlC aCC c++ g++]) AC_REQUIRE([AC_PROG_CXX]) ## Enable using per-target flags or subdir-objects with C sources AC_REQUIRE([AM_PROG_CC_C_O]) ## Determine a Fortran 77 compiler to use. If F77 is not already set in the ## environment, then check for g77 and f77, and then some other names. Set the ## output variable F77 to the name of the compiler found. ## ## This macro may, however, be invoked with an optional first argument which, ## if specified, must be a blank-separated list of Fortran 77 compilers to ## search for. This just gives the user an opportunity to specify an ## alternative search list for the Fortran 77 compiler. For example, if you ## didn't like the default order, then you could invoke AC_PROG_F77 like this: ## ## AC_PROG_F77([fl32 f77 fort77 xlf g77 f90 xlf90]) ## ## If using g77 (the GNU Fortran 77 compiler), then set the shell variable G77 ## to ‘yes’. If the output variable FFLAGS was not already set in the ## environment, then set it to -g -02 for g77 (or -O2 where g77 does not ## accept -g). Otherwise, set FFLAGS to -g for all other Fortran 77 compilers. AC_REQUIRE([AC_PROG_F77]) AC_SCOREP_HAVE_F77 ## Determine a Fortran compiler to use. If FC is not already set in the ## environment, then dialect is a hint to indicate what Fortran dialect to ## search for; the default is to search for the newest available dialect. Set ## the output variable FC to the name of the compiler found. ## ## By default, newer dialects are preferred over older dialects, but if ## dialect is specified then older dialects are preferred starting with the ## specified dialect. dialect can currently be one of Fortran 77, Fortran 90, ## or Fortran 95. However, this is only a hint of which compiler name to ## prefer (e.g., f90 or f95), and no attempt is made to guarantee that a ## particular language standard is actually supported. Thus, it is preferable ## that you avoid the dialect option, and use AC_PROG_FC only for code ## compatible with the latest Fortran standard. ## ## This macro may, alternatively, be invoked with an optional first argument ## which, if specified, must be a blank-separated list of Fortran compilers to ## search for, just as in AC_PROG_F77. ## ## If the output variable FCFLAGS was not already set in the environment, then ## set it to -g -02 for GNU g77 (or -O2 where g77 does not accept ## -g). Otherwise, set FCFLAGS to -g for all other Fortran compilers. AC_REQUIRE([AC_PROG_FC]) AC_SCOREP_HAVE_FC #AC_CXX_NAMESPACES #AC_CXX_HAVE_SSTREAM #AC_CXX_HAVE_STRSTREAM AC_LANG_PUSH([C]) AC_OPENMP AC_LANG_POP([C]) AM_CONDITIONAL([OPENMP_SUPPORTED], [test "x${ac_cv_prog_c_openmp}" != "xunsupported" && test "x${enable_openmp}" != "xno"]) if test "x${ac_cv_prog_c_openmp}" = "xunsupported"; then AC_MSG_WARN([no suitbale OpenMP compilers found. POMP2 dummy lib will not be build.]) else AC_LANG_PUSH([C++]) AC_OPENMP AC_LANG_POP([C++]) AC_LANG_PUSH([Fortran 77]) AC_OPENMP AC_LANG_POP([Fortran 77]) AC_LANG_PUSH([Fortran]) AC_OPENMP AC_LANG_POP([Fortran]) fi AC_SCOREP_FORTRAN_SUPPORT_ALLOCATABLE SCOREP_ATTRIBUTE_ALIGNMENT AC_PROG_RANLIB AC_SCOREP_DEFINE_REVISIONS ]) eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/PaxHeaders.7332/ac_scorep_version_and_revi0000644000000000000000000000013213012560437030257 xustar0030 mtime=1479205151.272727014 30 atime=1508162201.408497488 30 ctime=1508162367.289868537 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/ac_scorep_version_and_revision.m40000644000175000017500000000666013012560437032666 0ustar00trahaytrahay00000000000000## -*- mode: autoconf -*- ## ## This file is part of the Score-P software (http://www.score-p.org) ## ## Copyright (c) 2009-2011, ## RWTH Aachen University, Germany ## Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ## Technische Universitaet Dresden, Germany ## University of Oregon, Eugene, USA ## Forschungszentrum Juelich GmbH, Germany ## German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ## Technische Universitaet Muenchen, Germany ## ## See the COPYING file in the package base directory for details. ## AC_DEFUN([AC_SCOREP_REVISION], [ # When working with a svn checkout, write a REVISION file. The REVISION # file is updated during each configure call and also at make doxygen-user # and make dist. # When working with a make-dist-generated tarball, REVISION is already # there. component_revision="invalid" common_revision="invalid" # which svnversion > /dev/null; \ # if test $? -eq 0; then # component_revision=`svnversion $srcdir` # common_revision=`svnversion $srcdir/vendor/common` # if test "x$component_revision" != "xexported"; then # echo $component_revision > $srcdir/build-config/REVISION # fi # if test "x$common_revision" != "xexported"; then # echo $common_revision > $srcdir/build-config/REVISION_COMMON # fi # fi if grep -E [[A-Z]] $srcdir/build-config/REVISION > /dev/null || \ grep ":" $srcdir/build-config/REVISION > /dev/null || grep -E [[A-Z]] $srcdir/build-config/REVISION_COMMON > /dev/null || \ grep ":" $srcdir/build-config/REVISION_COMMON > /dev/null; then component_revision=`cat $srcdir/build-config/REVISION` common_revision=`cat $srcdir/build-config/REVISION_COMMON` AC_MSG_WARN([distribution does not match a single, unmodified revision, but $component_revision (${PACKAGE_NAME}) and $common_revision (common).]) fi AC_SUBST([PACKAGE_MAJOR], m4_esyscmd_s([vendor/common/build-config/generate-package-version.sh build-config/VERSION "echo \$major"])) AC_SUBST([PACKAGE_MINOR], m4_esyscmd_s([vendor/common/build-config/generate-package-version.sh build-config/VERSION "echo \$minor"])) AC_SUBST([PACKAGE_BUGFIX], m4_esyscmd_s([vendor/common/build-config/generate-package-version.sh build-config/VERSION "echo \$bugfix"])) AC_SUBST([LIBRARY_CURRENT], m4_esyscmd_s([vendor/common/build-config/generate-library-version.sh build-config/VERSION "echo \$current"])) AC_SUBST([LIBRARY_REVISION], m4_esyscmd_s([vendor/common/build-config/generate-library-version.sh build-config/VERSION "echo \$revision"])) AC_SUBST([LIBRARY_AGE], m4_esyscmd_s([vendor/common/build-config/generate-library-version.sh build-config/VERSION "echo \$age"])) ]) AC_DEFUN([AC_SCOREP_DEFINE_REVISIONS], [ for i in REVISION REVISION_COMMON; do if test ! -e ${srcdir}/../build-config/${i}; then AC_MSG_ERROR([File ${srcdir}/../build-config/${i} must exist.]) fi done component_revision=`cat ${srcdir}/../build-config/REVISION` common_revision=`cat ${srcdir}/../build-config/REVISION_COMMON` AC_DEFINE_UNQUOTED([SCOREP_COMPONENT_REVISION], ["${component_revision}"], [Revision of ${PACKAGE_NAME}]) AC_DEFINE_UNQUOTED([SCOREP_COMMON_REVISION], ["${common_revision}"], [Revision of common repository]) ]) eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/PaxHeaders.7332/ac_scorep_uncrustify.m40000644000000000000000000000013112537514552027464 xustar0030 mtime=1434360170.604467558 29 atime=1508162201.41249777 30 ctime=1508162367.289868537 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/ac_scorep_uncrustify.m40000644000175000017500000000140712537514552030656 0ustar00trahaytrahay00000000000000## -*- mode: autoconf -*- ## ## This file is part of the Score-P software (http://www.score-p.org) ## ## Copyright (c) 2009-2011, ## RWTH Aachen University, Germany ## Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ## Technische Universitaet Dresden, Germany ## University of Oregon, Eugene, USA ## Forschungszentrum Juelich GmbH, Germany ## German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ## Technische Universitaet Muenchen, Germany ## ## See the COPYING file in the package base directory for details. ## AC_DEFUN([AC_SCOREP_UNCRUSTIFY], [ AC_CHECK_PROG([ac_scorep_have_uncrustify], [uncrustify], [yes], [no],,) AM_CONDITIONAL([HAVE_UNCRUSTIFY], [test "x${ac_scorep_have_uncrustify}" = "xyes"]) ]) eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/PaxHeaders.7332/scorep_c.m40000644000000000000000000000013212617055645025033 xustar0030 mtime=1446796197.922458326 30 atime=1508162201.380495518 30 ctime=1508162367.701904521 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/scorep_c.m40000644000175000017500000001515212617055645026226 0ustar00trahaytrahay00000000000000## -*- mode: autoconf -*- ## ## This file is part of the Score-P software (http://www.score-p.org) ## ## Copyright (c) 2009-2011, ## RWTH Aachen University, Germany ## Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ## Technische Universitaet Dresden, Germany ## University of Oregon, Eugene, USA ## Forschungszentrum Juelich GmbH, Germany ## German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ## Technische Universitaet Muenchen, Germany ## ## See the COPYING file in the package base directory for details. ## ## file scorep_c.m4 ## This file contains a modified versions of the following ## autoconf's 2.65 macros: ## ## AC_PROG_CC_C99 (renamed to SCOREP_PROG_CC_C99): ## In SCOREP we don't want to use the GNU option -std=gnu99 ## (but -std=c99 instead) as this prevents some warnings that ## may cause portability issues. ## ## AC_OPENMP (renamed to SCOREP_OPENMP): ## Add support for NEC SX compiler. ## ## Please find the autoconf licence below. ## ## maintainer Christian Roessel ## # This file is part of Autoconf. -*- Autoconf -*- # Programming languages support. # Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # Free Software Foundation, Inc. # This file is part of Autoconf. This program is free # software; you can redistribute it and/or modify it under the # terms of the GNU General Public License as published by the # Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # Under Section 7 of GPL version 3, you are granted additional # permissions described in the Autoconf Configure Script Exception, # version 3.0, as published by the Free Software Foundation. # # You should have received a copy of the GNU General Public License # and a copy of the Autoconf Configure Script Exception along with # this program; see the files COPYINGv3 and COPYING.EXCEPTION # respectively. If not, see . # Written by David MacKenzie, with help from # Akim Demaille, Paul Eggert, # Franc,ois Pinard, Karl Berry, Richard Pixley, Ian Lance Taylor, # Roland McGrath, Noah Friedman, david d zuhn, and many others. # SCOREP_PROG_CC_C99 # -------------- AC_DEFUN([SCOREP_PROG_CC_C99], [ AC_REQUIRE([AC_PROG_CC])dnl _SCOREP_PROG_CC_C99 ]) # _SCOREP_PROG_CC_C99 ([ACTION-IF-AVAILABLE], [ACTION-IF-UNAVAILABLE]) # ---------------------------------------------------------------- # If the C compiler is not in ISO C99 mode by default, try to add an # option to output variable CC to make it so. This macro tries # various options that select ISO C99 on some system or another. It # considers the compiler to be in ISO C99 mode if it handles _Bool, # // comments, flexible array members, inline, long long int, mixed # code and declarations, named initialization of structs, restrict, # va_copy, varargs macros, variable declarations in for loops and # variable length arrays. AC_DEFUN([_SCOREP_PROG_CC_C99], [_AC_C_STD_TRY([c99], [[#include #include #include #include #include // Check varargs macros. These examples are taken from C99 6.10.3.5. #define debug(...) fprintf (stderr, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK your preprocessor is broken; #endif #if BIG_OK #else your preprocessor is broken; #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\0'; ++i) continue; return 0; } // Check varargs and va_copy. static void test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str; int number; float fnumber; while (*format) { switch (*format++) { case 's': // string str = va_arg (args_copy, const char *); break; case 'd': // int number = va_arg (args_copy, int); break; case 'f': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); } ]], [[ // Check bool. _Bool success = false; // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. test_varargs ("s, d' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' || dynamic_array[ni.number - 1] != 543); ]], dnl Try dnl GCC -std=c99 (unused restrictive modes: -std=iso9899:1999) dnl AIX -qlanglvl=extc99 (unused restrictive mode: -qlanglvl=stdc99) dnl HP cc -AC99 dnl Intel ICC -std=c99, -c99 (deprecated) dnl IRIX -c99 dnl Solaris -xc99=all (Forte Developer 7 C mishandles -xc99 on Solaris 9, dnl as it incorrectly assumes C99 semantics for library functions) dnl Tru64 -c99 dnl NEC SX -Kc99 dnl with extended modes being tried first. [[-std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99 -Kc99]], [$1], [$2])[]dnl ])# _SCOREP_PROG_CC_C99 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/PaxHeaders.7332/ltoptions.m40000644000000000000000000000013213171135233025255 xustar0030 mtime=1508162203.528646946 30 atime=1508162203.540647793 30 ctime=1508162367.697904171 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/ltoptions.m40000644000175000017500000003426213171135233026453 0ustar00trahaytrahay00000000000000# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004-2005, 2007-2009, 2011-2015 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 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option '$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl 'shared' nor 'disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the 'shared' and # 'disable-shared' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the 'static' and # 'disable-static' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the 'fast-install' # and 'disable-fast-install' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_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' # LT_INIT options. # MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac], [pic_mode=m4_default([$1], [default])]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/PaxHeaders.7332/ac_scorep_compiler_and_fla0000644000000000000000000000013212617055645030213 xustar0030 mtime=1446796197.922458326 30 atime=1508162201.424498612 30 ctime=1508162367.285868187 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/ac_scorep_compiler_and_flags.m40000644000175000017500000003206212617055645032256 0ustar00trahaytrahay00000000000000## -*- mode: autoconf -*- ## ## This file is part of the Score-P software (http://www.score-p.org) ## ## Copyright (c) 2009-2011, ## RWTH Aachen University, Germany ## Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ## Technische Universitaet Dresden, Germany ## University of Oregon, Eugene, USA ## Forschungszentrum Juelich GmbH, Germany ## German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ## Technische Universitaet Muenchen, Germany ## ## See the COPYING file in the package base directory for details. ## ## file ac_scorep_compiler_and_flags.m4 ## maintainer Christian Roessel AC_DEFUN([AC_SCOREP_CONVERT_FOR_BUILD_FLAGS], [ if test "x${ac_cv_env_[$1]_FOR_BUILD_set}" != "xset"; then # don't use the default flags if nothing is specified for the frontend unset [$1] else # use the FOR_BUILD flags [$1]="$ac_cv_env_[$1]_FOR_BUILD_value" fi ]) AC_DEFUN([AC_SCOREP_CONVERT_MPI_FLAGS], [ if test "x${ac_cv_env_MPI_[$1]_set}" != "xset"; then # don't use the default flags if nothing is specified for MPI unset [$1] else # use the MPI flags [$1]="$ac_cv_env_MPI_[$1]_value" fi ]) AC_DEFUN([AC_SCOREP_CHECK_COMPILER_VAR_SET], [ if test "x${ac_cv_env_[$1]_set}" != "xset"; then AC_MSG_ERROR([argument $1 not provided in configure call.], [1]) fi ]) AC_DEFUN([AC_SCOREP_CONVERT_FOR_BUILD_COMPILER], [ if test "x${ac_cv_env_[$1]_FOR_BUILD_set}" != "xset"; then # don't use the default compiler if nothing is specified for the frontend unset [$1] else [$1]="$ac_cv_env_[$1]_FOR_BUILD_value" fi ]) AC_DEFUN([AC_SCOREP_CONVERT_MPI_COMPILER], [ if test "x${ac_cv_env_MPI[$1]_set}" != "xset"; then # don't use the default compiler if nothing is specified for MPI unset [$1] else [$1]="$ac_cv_env_MPI[$1]_value" fi ]) # On cross-compile system we might get provided with the *_FOR_BUILD compilers and flags # and need to map them to CC, CFLAGS etc. The *_FOR_BUILD parameters take precedence. AC_DEFUN([AC_SCOREP_OPARI2_FOR_BUILD_ARGS_TAKES_PRECEDENCE], [ opari2_cross_build_args="" AC_SCOREP_OPARI2_CONVERT_FOR_BUILD_ARG([CC]) AC_SCOREP_OPARI2_CONVERT_FOR_BUILD_ARG([CXX]) AC_SCOREP_OPARI2_CONVERT_FOR_BUILD_ARG([F77]) AC_SCOREP_OPARI2_CONVERT_FOR_BUILD_ARG([FC]) AC_SCOREP_OPARI2_CONVERT_FOR_BUILD_ARG([CPPFLAGS]) AC_SCOREP_OPARI2_CONVERT_FOR_BUILD_ARG([CFLAGS]) AC_SCOREP_OPARI2_CONVERT_FOR_BUILD_ARG([CXXFLAGS]) AC_SCOREP_OPARI2_CONVERT_FOR_BUILD_ARG([FFLAGS]) AC_SCOREP_OPARI2_CONVERT_FOR_BUILD_ARG([FCFLAGS]) AC_SCOREP_OPARI2_CONVERT_FOR_BUILD_ARG([LDFLAGS]) AC_SCOREP_OPARI2_CONVERT_FOR_BUILD_ARG([LIBS]) ]) AC_DEFUN([AC_SCOREP_OPARI2_CONVERT_FOR_BUILD_ARG], [ if test "x${ac_cv_env_[$1]_FOR_BUILD_set}" == "xset"; then [$1]=$ac_cv_env_[$1]_FOR_BUILD_value fi ]) dnl dont' use together with AC_SCOREP_WITH_NOCROSS_COMPILER_SUITE AC_DEFUN([AC_SCOREP_WITH_COMPILER_SUITE], [ m4_pattern_allow([AC_SCOREP_WITH_COMPILER_SUITE]) m4_pattern_allow([AC_SCOREP_WITH_NOCROSS_COMPILER_SUITE]) if test "x${ac_scorep_compiler_suite_called}" != "x"; then # We need m4 quoting magic here ... AC_MSG_ERROR([cannot use [AC_SCOREP_WITH_COMPILER_SUITE] and [AC_SCOREP_WITH_NOCROSS_COMPILER_SUITE] in one configure.ac.]) else ac_scorep_compiler_suite_called="yes" fi path_to_compiler_files="$srcdir/vendor/common/build-config/platforms/" AC_ARG_WITH([nocross-compiler-suite], [AS_HELP_STRING([--with-nocross-compiler-suite=(gcc|ibm|intel|pathscale|pgi|studio)], [The compiler suite to build this package in non cross-compiling environments with. Needs to be in $PATH [gcc].])], [AS_IF([test "x${ac_scorep_cross_compiling}" = "xno"], [AS_CASE([$withval], ["gcc"], [ac_scorep_compilers_backend="${path_to_compiler_files}compiler-nocross-gcc"], ["ibm"], [ac_scorep_compilers_backend="${path_to_compiler_files}compiler-nocross-ibm"], ["intel"], [ac_scorep_compilers_backend="${path_to_compiler_files}compiler-nocross-intel"], ["pathscale"], [ac_scorep_compilers_backend="${path_to_compiler_files}compiler-nocross-pathscale"], ["pgi"], [ac_scorep_compilers_backend="${path_to_compiler_files}compiler-nocross-pgi"], ["studio"], [ac_scorep_compilers_backend="${path_to_compiler_files}compiler-nocross-studio"], [AC_MSG_WARN([Compiler suite "${withval}" not supported by --with-nocross-compiler-suite, ignoring.])])], [AC_MSG_ERROR([Option --with-nocross-compiler-suite not supported in cross-compiling mode. Please use --with-backend-compiler-suite and --with-frontend-compiler-suite instead.])])], []) dnl backend-compiler-suite is not very useful. if we are on a cross-compiling dnl platform, we usually want to use the vendor tools that should be detected dnl automatically. otherwise, use platform-*-user-provided dnl AC_ARG_WITH([backend-compiler-suite], dnl [AS_HELP_STRING([--with-backend-compiler-suite=(ibm|sx)], dnl [The compiler suite to build the backend parts of this package in cross-compiling environments with. Needs to be in $PATH [gcc].])], dnl [AS_IF([test "x${ac_scorep_cross_compiling}" = "xyes"], dnl [AS_CASE([$withval], dnl ["ibm"], [ac_scorep_compilers_backend="${path_to_compiler_files}compiler-backend-ibm"], dnl ["sx"], [ac_scorep_compilers_backend="${path_to_compiler_files}compiler-backend-sx"], dnl [AC_MSG_WARN([Compiler suite "${withval}" not supported by --with-backend-compiler-suite, ignoring.])])], dnl [AC_MSG_ERROR([Option --with-backend-compiler-suite not supported in non cross-compiling mode. Please use --with-nocross-compiler-suite instead.])])], dnl []) AC_ARG_WITH([frontend-compiler-suite], [AS_HELP_STRING([--with-frontend-compiler-suite=(gcc|ibm|intel|pathscale|pgi|studio)], [The compiler suite to build the frontend parts of this package in cross-compiling environments with. Needs to be in $PATH [gcc].])], [AS_IF([test "x${ac_scorep_cross_compiling}" = "xyes"], [AS_CASE([$withval], ["gcc"], [ac_scorep_compilers_frontend="${path_to_compiler_files}compiler-frontend-gcc"], ["ibm"], [ac_scorep_compilers_frontend="${path_to_compiler_files}compiler-frontend-ibm"], ["intel"], [ac_scorep_compilers_frontend="${path_to_compiler_files}compiler-frontend-intel"], ["pathscale"], [ac_scorep_compilers_frontend="${path_to_compiler_files}compiler-frontend-pathscale"], ["pgi"], [ac_scorep_compilers_frontend="${path_to_compiler_files}compiler-frontend-pgi"], ["studio"], [ac_scorep_compilers_frontend="${path_to_compiler_files}compiler-frontend-studio"], [AC_MSG_WARN([Compiler suite "${withval}" not supported by --with-frontend-compiler-suite, ignoring.])])], [AC_MSG_ERROR([Option --with-frontend-compiler-suite not supported in non cross-compiling mode. Please use --with-nocross-compiler-suite instead.])])], []) ]) dnl dont' use together with AC_SCOREP_WITH_COMPILER_SUITE, intended to be used by OPARI only AC_DEFUN([AC_SCOREP_WITH_NOCROSS_COMPILER_SUITE], [ m4_pattern_allow([AC_SCOREP_WITH_COMPILER_SUITE]) m4_pattern_allow([AC_SCOREP_WITH_NOCROSS_COMPILER_SUITE]) if test "x${ac_scorep_compiler_suite_called}" != "x"; then # We need m4 quoting magic here ... AC_MSG_ERROR([cannot use [AC_SCOREP_WITH_COMPILER_SUITE] and [AC_SCOREP_WITH_NOCROSS_COMPILER_SUITE] in one configure.ac.]) else ac_scorep_compiler_suite_called="yes" fi path_to_compiler_files="$srcdir/vendor/common/build-config/platforms/" AC_ARG_WITH([compiler-suite], [AS_HELP_STRING([--with-compiler-suite=(gcc|ibm|intel|pathscale|pgi|studio)], [The compiler suite to build this package with. Needs to be in $PATH [gcc].])], [AS_CASE([$withval], ["gcc"], [ac_scorep_compilers_frontend="${path_to_compiler_files}compiler-nocross-gcc"], ["ibm"], [ac_scorep_compilers_frontend="${path_to_compiler_files}compiler-nocross-ibm"], ["intel"], [ac_scorep_compilers_frontend="${path_to_compiler_files}compiler-nocross-intel"], ["pathscale"], [ac_scorep_compilers_frontend="${path_to_compiler_files}compiler-nocross-pathscale"], ["pgi"], [ac_scorep_compilers_frontend="${path_to_compiler_files}compiler-nocross-pgi"], ["studio"], [ac_scorep_compilers_frontend="${path_to_compiler_files}compiler-nocross-studio"], [AC_MSG_WARN([Compiler suite "${withval}" not supported by --with-compiler-suite, ignoring.])])], []) ]) AC_DEFUN([AC_SCOREP_WITH_MPI_COMPILER_SUITE], [ path_to_compiler_files="$srcdir/vendor/common/build-config/platforms/" AC_ARG_WITH([mpi], [AS_HELP_STRING([--with-mpi=(mpich2|impi|openmpi)], [The mpi compiler suite to build this package with. Needs to be in $PATH [mpich2].])], [AS_CASE([$withval], ["mpich2"], [ac_scorep_compilers_mpi="${path_to_compiler_files}compiler-mpi-mpich2"], ["impi"], [ac_scorep_compilers_mpi="${path_to_compiler_files}compiler-mpi-impi"], ["openmpi"], [ac_scorep_compilers_mpi="${path_to_compiler_files}compiler-mpi-openmpi"], [AC_MSG_WARN([MPI compiler suite "${withval}" not supported by --with-mpi, ignoring.])])], []) # use mpi_compiler_suite as input for process_arguments.awk cat ${ac_scorep_compilers_mpi} > mpi_compiler_suite # find suitable defaults if not already set by platform detection or # configure arguments. Note that we can't source # ${ac_scorep_compilers_mpi} directly as it may contain lines like # 'MPIF77=mpiifort -fc=${F77}' which are not valid shell code. Adding # quotes like in 'MPIF77="mpiifort -fc=${F77}"' would solve the # problem here but cause headaches using AC_CONFIG_SUBDIR_CUSTOM $AWK '{print $[]1}' ${ac_scorep_compilers_mpi} | grep MPI > mpi_compiler_suite_to_source . ./mpi_compiler_suite_to_source if test "x${MPICC}" = "x"; then AC_CHECK_PROGS(MPICC, mpicc hcc mpxlc_r mpxlc mpcc cmpicc mpiicc, $CC) echo "MPICC=${MPICC}" >> mpi_compiler_suite fi if test "x${MPICXX}" = "x"; then AC_CHECK_PROGS(MPICXX, mpic++ mpicxx mpiCC hcp mpxlC_r mpxlC mpCC cmpic++ mpiicpc, $CXX) echo "MPICXX=${MPICXX}" >> mpi_compiler_suite fi if test "x${MPIF77}" = "x"; then AC_CHECK_PROGS(MPIF77, mpif77 hf77 mpxlf_r mpxlf mpf77 cmpifc mpiifort, $F77) echo "MPIF77=${MPIF77}" >> mpi_compiler_suite fi if test "x${MPIFC}" = "x"; then AC_CHECK_PROGS(MPIFC, mpif90 mpxlf95_r mpxlf90_r mpxlf95 mpxlf90 mpf90 cmpif90c mpiifort, $FC) echo "MPIFC=${MPIFC}" >> mpi_compiler_suite fi ]) AC_DEFUN([AC_SCOREP_PRECIOUS_VARS_MPI], [ AC_ARG_VAR(MPICC,[MPI C compiler command]) AC_ARG_VAR(MPICXX,[MPI C++ compiler command]) AC_ARG_VAR(MPIF77,[MPI Fortran 77 compiler command]) AC_ARG_VAR(MPIFC,[MPI Fortran compiler command]) AC_ARG_VAR(MPI_CPPFLAGS, [MPI (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory ]) AC_ARG_VAR(MPI_CFLAGS, [MPI C compiler flags]) AC_ARG_VAR(MPI_CXXFLAGS, [MPI C++ compiler flags]) AC_ARG_VAR(MPI_FFLAGS, [MPI Fortran 77 compiler flags]) AC_ARG_VAR(MPI_FCFLAGS, [MPI Fortran compiler flags]) AC_ARG_VAR(MPI_LDFLAGS, [MPI linker flags, e.g. -L if you have libraries in a nonstandard directory ]) AC_ARG_VAR(MPI_LIBS, [MPI libraries to pass to the linker, e.g. -l]) ]) AC_DEFUN([AC_SCOREP_PRECIOUS_VARS_FOR_BUILD], [ AC_ARG_VAR(CC_FOR_BUILD, [C compiler command for the frontend build]) AC_ARG_VAR(CXX_FOR_BUILD, [C++ compiler command for the frontend build]) AC_ARG_VAR(F77_FOR_BUILD, [Fortran 77 compiler command for the frontend build]) AC_ARG_VAR(FC_FOR_BUILD, [Fortran compiler command for the frontend build]) AC_ARG_VAR(CPPFLAGS_FOR_BUILD, [(Objective) C/C++ preprocessor flags for the frontend build, e.g. -I if you have headers in a nonstandard directory ]) AC_ARG_VAR(CFLAGS_FOR_BUILD, [C compiler flags for the frontend build]) AC_ARG_VAR(CXXFLAGS_FOR_BUILD, [C++ compiler flags for the frontend build]) AC_ARG_VAR(FFLAGS_FOR_BUILD, [Fortran 77 compiler flags for the frontend build]) AC_ARG_VAR(FCFLAGS_FOR_BUILD, [Fortran compiler flags for the frontend build]) AC_ARG_VAR(LDFLAGS_FOR_BUILD, [linker flags for the frontend build, e.g. -L if you have libraries in a nonstandard directory ]) AC_ARG_VAR(LIBS_FOR_BUILD, [libraries to pass to the linker for the frontend build, e.g. -l]) ]) eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/PaxHeaders.7332/ac_scorep_toplevel_args.m40000644000000000000000000000013112617055645030121 xustar0030 mtime=1446796197.922458326 29 atime=1508162201.41249777 30 ctime=1508162367.289868537 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/ac_scorep_toplevel_args.m40000644000175000017500000000271412617055645031315 0ustar00trahaytrahay00000000000000## -*- mode: autoconf -*- ## ## This file is part of the Score-P software (http://www.score-p.org) ## ## Copyright (c) 2009-2011, ## RWTH Aachen University, Germany ## Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ## Technische Universitaet Dresden, Germany ## University of Oregon, Eugene, USA ## Forschungszentrum Juelich GmbH, Germany ## German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ## Technische Universitaet Muenchen, Germany ## ## See the COPYING file in the package base directory for details. ## # Save user provided arguments for use by sub-configures. AC_DEFUN([AC_SCOREP_TOPLEVEL_ARGS], [ # Quote arguments with shell meta charatcers. TOPLEVEL_CONFIGURE_ARGUMENTS= set -- "$progname" "$[@]" for ac_arg do case "$ac_arg" in *" "*|*" "*|*[[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\']]*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` # if the argument is of the form -foo=baz, quote the baz part only ac_arg=`echo "'$ac_arg'" | sed "s/^'\([[-a-zA-Z0-9]]*=\)/\\1'/"` ;; *) ;; esac # Add the quoted argument to the list. TOPLEVEL_CONFIGURE_ARGUMENTS="$TOPLEVEL_CONFIGURE_ARGUMENTS $ac_arg" done # Remove the initial space we just introduced and, as these will be # expanded by make, quote '$'. TOPLEVEL_CONFIGURE_ARGUMENTS=`echo "x$TOPLEVEL_CONFIGURE_ARGUMENTS" | sed -e 's/^x *//' -e 's,\\$,$$,g'` echo "$TOPLEVEL_CONFIGURE_ARGUMENTS" > ./user_provided_configure_args ]) eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/PaxHeaders.7332/status.m40000644000000000000000000000013212617055645024561 xustar0030 mtime=1446796197.922458326 30 atime=1508162201.364494393 30 ctime=1508162367.293868886 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/status.m40000644000175000017500000016265112617055645025763 0ustar00trahaytrahay00000000000000# This file is part of Autoconf. -*- Autoconf -*- # Parameterizing and creating config.status. # Copyright (C) 1992-1996, 1998-2011 Free Software Foundation, Inc. # This file is part of Autoconf. This program is free # software; you can redistribute it and/or modify it under the # terms of the GNU General Public License as published by the # Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # Under Section 7 of GPL version 3, you are granted additional # permissions described in the Autoconf Configure Script Exception, # version 3.0, as published by the Free Software Foundation. # # You should have received a copy of the GNU General Public License # and a copy of the Autoconf Configure Script Exception along with # this program; see the files COPYINGv3 and COPYING.EXCEPTION # respectively. If not, see . # Written by David MacKenzie, with help from # Franc,ois Pinard, Karl Berry, Richard Pixley, Ian Lance Taylor, # Roland McGrath, Noah Friedman, david d zuhn, and many others. # This file handles about all the preparation aspects for # `config.status': registering the configuration files, the headers, # the links, and the commands `config.status' will run. There is a # little mixture though of things actually handled by `configure', # such as running the `configure' in the sub directories. Minor # detail. # # There are two kinds of commands: # # COMMANDS: # # They are output into `config.status' via a quoted here doc. These # commands are always associated to a tag which the user can use to # tell `config.status' what are the commands she wants to run. # # INIT-CMDS: # # They are output via an *unquoted* here-doc. As a consequence $var # will be output as the value of VAR. This is typically used by # `configure' to give `config.status' some variables it needs to run # the COMMANDS. At the difference of COMMANDS, the INIT-CMDS are # always run. # # # Honorable members of this family are AC_CONFIG_FILES, # AC_CONFIG_HEADERS, AC_CONFIG_LINKS and AC_CONFIG_COMMANDS. Bad boys # are AC_LINK_FILES, AC_OUTPUT_COMMANDS and AC_OUTPUT when used with # arguments. False members are AC_CONFIG_SRCDIR, AC_CONFIG_SUBDIRS # and AC_CONFIG_AUX_DIR. Cousins are AC_CONFIG_COMMANDS_PRE and # AC_CONFIG_COMMANDS_POST. ## ------------------ ## ## Auxiliary macros. ## ## ------------------ ## # _AC_SRCDIRS(BUILD-DIR-NAME) # --------------------------- # Inputs: # - BUILD-DIR-NAME is `top-build -> build' and `top-src -> src' # - `$srcdir' is `top-build -> top-src' # # Outputs: # - `ac_builddir' is `.', for symmetry only. # - `ac_top_builddir_sub' is `build -> top_build'. # This is used for @top_builddir@. # - `ac_top_build_prefix' is `build -> top_build'. # If not empty, has a trailing slash. # - `ac_srcdir' is `build -> src'. # - `ac_top_srcdir' is `build -> top-src'. # and `ac_abs_builddir' etc., the absolute directory names. m4_define([_AC_SRCDIRS], [ac_builddir=. case $1 in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`AS_ECHO([$1]) | sed 's|^\.[[\\/]]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`AS_ECHO(["$ac_dir_suffix"]) | sed 's|/[[^\\/]]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [[\\/]]* | ?:[[\\/]]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix ])# _AC_SRCDIRS # _AC_HAVE_TOP_BUILD_PREFIX # ------------------------- # Announce to the world (to Libtool) that we substitute @top_build_prefix@. AC_DEFUN([_AC_HAVE_TOP_BUILD_PREFIX]) ## ---------------------- ## ## Registering the tags. ## ## ---------------------- ## # _AC_CONFIG_COMMANDS_INIT([INIT-COMMANDS]) # ----------------------------------------- # # Register INIT-COMMANDS as command pasted *unquoted* in # `config.status'. This is typically used to pass variables from # `configure' to `config.status'. Note that $[1] is not over quoted as # was the case in AC_OUTPUT_COMMANDS. m4_define([_AC_CONFIG_COMMANDS_INIT], [m4_ifval([$1], [m4_append([_AC_OUTPUT_COMMANDS_INIT], [$1 ])])]) # AC_FILE_DEPENDENCY_TRACE(DEST, SOURCE1, [SOURCE2...]) # ----------------------------------------------------- # This macro does nothing, it's a hook to be read with `autoconf --trace'. # # It announces DEST depends upon the SOURCE1 etc. m4_define([AC_FILE_DEPENDENCY_TRACE], []) # _AC_FILE_DEPENDENCY_TRACE_COLON(DEST:SOURCE1[:SOURCE2...]) # ---------------------------------------------------------- # Declare that DEST depends upon SOURCE1 etc. # m4_define([_AC_FILE_DEPENDENCY_TRACE_COLON], [AC_FILE_DEPENDENCY_TRACE(m4_translit([$1], [:], [,]))]) # _AC_CONFIG_DEPENDENCY(MODE, DEST[:SOURCE1...]) # ---------------------------------------------- # MODE is `FILES', `HEADERS', or `LINKS'. # # Be sure that a missing dependency is expressed as a dependency upon # `DEST.in' (except with config links). # m4_define([_AC_CONFIG_DEPENDENCY], [_AC_FILE_DEPENDENCY_TRACE_COLON([$2]_AC_CONFIG_DEPENDENCY_DEFAULT($@))dnl ]) # _AC_CONFIG_DEPENDENCY_DEFAULT(MODE, DEST[:SOURCE1...]) # ------------------------------------------------------ # Expand to `:DEST.in' if appropriate, or to empty string otherwise. # # More detailed description: # If the tag contains `:', expand to nothing. # Otherwise, for a config file or header, add `:DEST.in'. # For a config link, DEST.in is not appropriate: # - if the tag is literal, complain. # - otherwise, just expand to nothing and proceed with fingers crossed. # (We get to this case from the obsolete AC_LINK_FILES, for example.) # m4_define([_AC_CONFIG_DEPENDENCY_DEFAULT], [m4_if(m4_index([$2], [:]), [-1], [m4_if([$1], [LINKS], [AS_LITERAL_IF([$2], [m4_fatal([Invalid AC_CONFIG_LINKS tag: `$2'])])], [:$2.in])])]) # _AC_CONFIG_UNIQUE(MODE, DEST) # ----------------------------- # MODE is `FILES', `HEADERS', `LINKS', `COMMANDS', `SUBDIRS' or CONFIG_SUBDIR_CUSTOM. # # Verify that there is no double definition of an output file. # m4_define([_AC_CONFIG_UNIQUE], [m4_ifdef([_AC_SEEN_TAG($2)], [m4_fatal([`$2' is already registered with AC_CONFIG_]m4_defn( [_AC_SEEN_TAG($2)]).)], [m4_define([_AC_SEEN_TAG($2)], [$1])])dnl ]) # _AC_CONFIG_FOOS(MODE, TAGS..., [COMMANDS], [INIT-CMDS]) # ------------------------------------------------------- # MODE is `FILES', `HEADERS', `LINKS', or `COMMANDS'. # # Associate the COMMANDS to each TAG, i.e., when config.status creates TAG, # run COMMANDS afterwards. (This is done in _AC_CONFIG_REGISTER_DEST.) # # For COMMANDS, do not m4_normalize TAGS before adding it to ac_config_commands. # This historical difference allows macro calls in TAGS. # m4_define([_AC_CONFIG_FOOS], [m4_map_args_w([$2], [_AC_CONFIG_REGISTER([$1],], [, [$3])])]dnl [m4_define([_AC_SEEN_CONFIG(ANY)])]dnl [m4_define([_AC_SEEN_CONFIG($1)])]dnl [_AC_CONFIG_COMMANDS_INIT([$4])]dnl [ac_config_[]m4_tolower([$1])="$ac_config_[]m4_tolower([$1]) ]dnl [m4_if([$1], [COMMANDS], [$2], [m4_normalize([$2])])" ]) # _AC_CONFIG_COMPUTE_DEST(STRING) # ------------------------------- # Compute the DEST from STRING by stripping any : and following # characters. Guarantee a match in m4_index, so as to avoid a bug # with precision -1 in m4_format in older m4. m4_define([_AC_CONFIG_COMPUTE_DEST], [m4_format([[%.*s]], m4_index([$1:], [:]), [$1])]) # _AC_CONFIG_REGISTER(MODE, TAG, [COMMANDS]) # ------------------------------------------ # MODE is `FILES', `HEADERS', `LINKS', or `COMMANDS'. # m4_define([_AC_CONFIG_REGISTER], [m4_if([$1], [COMMANDS], [], [_AC_CONFIG_DEPENDENCY([$1], [$2])])]dnl [_AC_CONFIG_REGISTER_DEST([$1], [$2], _AC_CONFIG_COMPUTE_DEST([$2]), [$3])]) # _AC_CONFIG_REGISTER_DEST(MODE, TAG, DEST, [COMMANDS]) # ----------------------------------------------------- # MODE is `FILES', `HEADERS', `LINKS', or `COMMANDS'. # TAG is in the form DEST[:SOURCE...]. # Thus parameter $3 is the first part of $2. # # With CONFIG_LINKS, reject DEST=., because it is makes it hard for ./config.status # to guess the links to establish (`./config.status .'). # # Save the name of the first config header to AH_HEADER. # m4_define([_AC_CONFIG_REGISTER_DEST], [_AC_CONFIG_UNIQUE([$1], [$3])]dnl [m4_if([$1 $3], [LINKS .], [m4_fatal([invalid destination of a config link: `.'])], [$1], [HEADERS], [m4_define_default([AH_HEADER], [$3])])]dnl dnl dnl Recognize TAG as an argument to config.status: dnl [m4_append([_AC_LIST_TAGS], [ "$3") CONFIG_$1="$CONFIG_$1 $2" ;; ])]dnl dnl dnl Register the associated commands, if any: dnl [m4_ifval([$4], [m4_append([_AC_LIST_TAG_COMMANDS], [ "$3":]m4_format([[%.1s]], [$1])[) $4 ;; ])])])# _AC_CONFIG_REGISTER_DEST ## --------------------- ## ## Configuration files. ## ## --------------------- ## # AC_CONFIG_FILES(FILE..., [COMMANDS], [INIT-CMDS]) # ------------------------------------------------- # Specify output files, i.e., files that are configured with AC_SUBST. # AC_DEFUN([AC_CONFIG_FILES], [_AC_CONFIG_FOOS([FILES], $@)]) # _AC_SED_CMD_LIMIT # ----------------- # Evaluate to an m4 number equal to the maximum number of commands to put # in any single sed program, not counting ":" commands. # # Some seds have small command number limits, like on Digital OSF/1 and HP-UX. m4_define([_AC_SED_CMD_LIMIT], dnl One cannot portably go further than 99 commands because of HP-UX. [99]) # _AC_AWK_LITERAL_LIMIT # --------------------- # Evaluate to the maximum number of characters to put in an awk # string literal, not counting escape characters. # # Some awk's have small limits, such as Solaris and AIX awk. m4_define([_AC_AWK_LITERAL_LIMIT], [148]) # _AC_OUTPUT_FILES_PREPARE # ------------------------ # Create the awk scripts needed for CONFIG_FILES. # Support multiline substitutions and make sure that the substitutions are # not evaluated recursively. # The intention is to have readable config.status and configure, even # though this m4 code might be scary. # # This code was written by Dan Manthey and rewritten by Ralf Wildenhues. # # This macro is expanded inside a here document. If the here document is # closed, it has to be reopened with # "cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1". # m4_define([_AC_OUTPUT_FILES_PREPARE], [# Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then dnl For AC_SUBST_FILE, check for usable getline support in awk, dnl at config.status execution time. dnl Otherwise, do the interpolation in sh, which is slower. dnl Without any AC_SUBST_FILE, omit all related code. dnl Note the expansion is double-quoted for readability. m4_ifdef([_AC_SUBST_FILES], [[if $AWK 'BEGIN { getline <"/dev/null" }' /dev/null; then ac_cs_awk_getline=: ac_cs_awk_pipe_init= ac_cs_awk_read_file=' while ((getline aline < (F[key])) > 0) print(aline) close(F[key])' ac_cs_awk_pipe_fini= else ac_cs_awk_getline=false ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\"" ac_cs_awk_read_file=' print "|#_!!_#|" print "cat " F[key] " &&" '$ac_cs_awk_pipe_init # The final `:' finishes the AND list. ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }' fi]]) ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi dnl dnl Define the pipe that does the substitution. m4_ifdef([_AC_SUBST_FILES], [m4_define([_AC_SUBST_CMDS], [| if $ac_cs_awk_getline; then $AWK -f "$ac_tmp/subs.awk" else $AWK -f "$ac_tmp/subs.awk" | $SHELL fi])], [m4_define([_AC_SUBST_CMDS], [| $AWK -f "$ac_tmp/subs.awk"])])dnl echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF m4_ifdef([_AC_SUBST_FILES], [# Create commands to substitute file output variables. { echo "cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1" && echo 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' && echo "$ac_subst_files" | sed 's/.*/F@<:@"&"@:>@="$&"/' && echo "_ACAWK" && echo "_ACEOF" } >conf$$files.sh && . ./conf$$files.sh || AC_MSG_ERROR([could not make $CONFIG_STATUS]) rm -f conf$$files.sh ])dnl { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || AC_MSG_ERROR([could not make $CONFIG_STATUS]) ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || AC_MSG_ERROR([could not make $CONFIG_STATUS]) dnl Do not use grep on conf$$subs.awk, since AIX grep has a line length limit. ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then AC_MSG_ERROR([could not make $CONFIG_STATUS]) else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh dnl Initialize an awk array of substitutions, keyed by variable name. dnl dnl The initial line contains the variable name VAR, then a `!'. dnl Construct `S["VAR"]=' from it. dnl The rest of the line, and potentially further lines, contain the dnl substituted value; the last of those ends with $ac_delim. We split dnl the output both along those substituted newlines and at intervals of dnl length _AC_AWK_LITERAL_LIMIT. The latter is done to comply with awk dnl string literal limitations, the former for simplicity in doing so. dnl dnl We deal with one input line at a time to avoid sed pattern space dnl limitations. We kill the delimiter $ac_delim before splitting the dnl string (otherwise we risk splitting the delimiter). And we do the dnl splitting before the quoting of awk special characters (otherwise we dnl risk splitting an escape sequence). dnl dnl Output as separate string literals, joined with backslash-newline. dnl Eliminate the newline after `=' in a second script, for readability. dnl dnl Notes to the main part of the awk script: dnl - the unusual FS value helps prevent running into the limit of 99 fields, dnl - we avoid sub/gsub because of the \& quoting issues, see dnl http://www.gnu.org/software/gawk/manual/html_node/Gory-Details.html dnl - Writing `$ 0' prevents expansion by both the shell and m4 here. dnl dnl m4-double-quote most of the scripting for readability. [cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{]_AC_AWK_LITERAL_LIMIT[\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{]_AC_AWK_LITERAL_LIMIT[\}// t nl :delim h s/\(.\{]_AC_AWK_LITERAL_LIMIT[\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{]_AC_AWK_LITERAL_LIMIT[\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" ]m4_ifdef([_AC_SUBST_FILES], [ \$ac_cs_awk_pipe_init])[ } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } ]m4_ifdef([_AC_SUBST_FILES], [[ if (nfields == 3 && !substed) { key = field[2] if (F[key] != "" && line ~ /^[ ]*@.*@[ ]*$/) { \$ac_cs_awk_read_file next } }]])[ print line } ]dnl end of double-quoted part m4_ifdef([_AC_SUBST_FILES], [\$ac_cs_awk_pipe_fini]) _ACAWK _ACEOF dnl See if CR is the EOL marker. If not, remove any EOL-related dnl ^M bytes and escape any remaining ones. If so, just use mv. dnl In case you're wondering how ^M bytes can make it into subs1.awk, dnl [from Ralf Wildenhues] one way is if you have e.g., dnl AC_SUBST([variable_that_contains_cr], [" dnl "]) dnl The original aim was that users should be able to substitute any dnl characters they like (except for \0). And the above is not so dnl unlikely if the configure script itself happens to be converted dnl to w32 text mode. cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || AC_MSG_ERROR([could not setup config files machinery]) _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub=['/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }'] fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" ])# _AC_OUTPUT_FILES_PREPARE # _AC_OUTPUT_FILE_ADJUST_DIR(VAR) # ------------------------------- # Generate the sed snippet needed to output VAR relative to the # top-level directory. m4_define([_AC_OUTPUT_FILE_ADJUST_DIR], [s&@$1@&$ac_$1&;t t[]AC_SUBST_TRACE([$1])]) # _AC_OUTPUT_FILE # --------------- # Do the variable substitutions to create the Makefiles or whatever. # # This macro is expanded inside a here document. If the here document is # closed, it has to be reopened with # "cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1". # m4_define([_AC_OUTPUT_FILE], [ # # CONFIG_FILE # AC_PROVIDE_IFELSE([AC_PROG_INSTALL], [ case $INSTALL in [[\\/$]]* | ?:[[\\/]]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ])dnl AC_PROVIDE_IFELSE([AC_PROG_MKDIR_P], [ ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [[\\/$]]* | ?:[[\\/]]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac ])dnl _ACEOF m4_ifndef([AC_DATAROOTDIR_CHECKED], [cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= m4_define([_AC_datarootdir_vars], [datadir, docdir, infodir, localedir, mandir])]dnl [m4_define([_AC_datarootdir_subst], [ s&@$][1@&$$][1&g])]dnl [ac_sed_dataroot=' /datarootdir/ { p q } m4_map_args_sep([/@], [@/p], [ ], _AC_datarootdir_vars)' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@[]m4_join([@*|*@], _AC_datarootdir_vars)@*) AC_MSG_WARN([$ac_file_inputs seems to ignore the --datarootdir setting]) _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' m4_map_args_sep([_AC_datarootdir_subst(], [)], [ ], _AC_datarootdir_vars) s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF ])dnl # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t [/@[a-zA-Z_][a-zA-Z_0-9]*@/!b] dnl configure_input is a somewhat special, so we don't call AC_SUBST_TRACE. dnl Note if you change the s||| delimiter here, don't forget to adjust dnl ac_sed_conf_input accordingly. Using & is a bad idea if & appears in dnl the replacement string. s|@configure_input@|$ac_sed_conf_input|;t t dnl During the transition period, this is a special case: s&@top_builddir@&$ac_top_builddir_sub&;t t[]AC_SUBST_TRACE([top_builddir]) dnl For this substitution see the witness macro _AC_HAVE_TOP_BUILD_PREFIX above. s&@top_build_prefix@&$ac_top_build_prefix&;t t[]AC_SUBST_TRACE([top_build_prefix]) m4_map_args_sep([$0_ADJUST_DIR(], [)], [ ], [srcdir], [abs_srcdir], [top_srcdir], [abs_top_srcdir], [builddir], [abs_builddir], [abs_top_builddir]AC_PROVIDE_IFELSE([AC_PROG_INSTALL], [, [INSTALL]])AC_PROVIDE_IFELSE([AC_PROG_MKDIR_P], [, [MKDIR_P]])) m4_ifndef([AC_DATAROOTDIR_CHECKED], [$ac_datarootdir_hack ])dnl " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" m4_defn([_AC_SUBST_CMDS]) \ >$ac_tmp/out || AC_MSG_ERROR([could not create $ac_file]) m4_ifndef([AC_DATAROOTDIR_CHECKED], [test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[[ ]]*datarootdir[[ ]]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && AC_MSG_WARN([$ac_file contains a reference to the variable `datarootdir' which seems to be undefined. Please make sure it is defined]) ])dnl rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || AC_MSG_ERROR([could not create $ac_file]) dnl This would break Makefile dependencies: dnl if diff "$ac_file" "$ac_tmp/out" >/dev/null 2>&1; then dnl echo "$ac_file is unchanged" dnl else dnl rm -f "$ac_file"; mv "$ac_tmp/out" "$ac_file" dnl fi ])# _AC_OUTPUT_FILE ## ----------------------- ## ## Configuration headers. ## ## ----------------------- ## # AC_CONFIG_HEADERS(HEADERS..., [COMMANDS], [INIT-CMDS]) # ------------------------------------------------------ # Specify that the HEADERS are to be created by instantiation of the # AC_DEFINEs. # AC_DEFUN([AC_CONFIG_HEADERS], [_AC_CONFIG_FOOS([HEADERS], $@)]) # AC_CONFIG_HEADER(HEADER-TO-CREATE ...) # -------------------------------------- # FIXME: Make it obsolete? AC_DEFUN([AC_CONFIG_HEADER], [AC_CONFIG_HEADERS([$1])]) # _AC_OUTPUT_HEADERS_PREPARE # -------------------------- # Create the awk scripts needed for CONFIG_HEADERS. # Support multiline #defines. # # This macro is expanded inside a here document. If the here document is # closed, it has to be reopened with # "cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1". # m4_define([_AC_OUTPUT_HEADERS_PREPARE], [# Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then dnl This `||' list is finished at the end of _AC_OUTPUT_HEADERS_PREPARE. cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then AC_MSG_ERROR([could not make $CONFIG_HEADERS]) else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. dnl dnl Structure of the sed script that reads confdefs.h: dnl rset: main loop, searches for `#define' lines dnl def: deal with a `#define' line dnl bsnl: deal with a `#define' line that ends with backslash-newline dnl cont: handle a continuation line dnl bsnlc: handle a continuation line that ends with backslash-newline dnl dnl Each sub part escapes the awk special characters and outputs a statement dnl inserting the macro value into the array D, keyed by name. If the macro dnl uses parameters, they are added in the array P, keyed by name. dnl dnl Long values are split into several string literals with help of ac_delim. dnl Assume nobody uses macro names of nearly 150 bytes length. dnl dnl The initial replace for `#define' lines inserts a leading space dnl in order to ease later matching; otherwise, output lines may be dnl repeatedly matched. dnl dnl m4-double-quote most of this for [, ], define, and substr: [ ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{]_AC_AWK_LITERAL_LIMIT[\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{]_AC_AWK_LITERAL_LIMIT[\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } ]dnl End of double-quoted section _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 dnl finish `||' list indicating write error: AC_MSG_ERROR([could not setup config headers machinery]) fi # test -n "$CONFIG_HEADERS" ])# _AC_OUTPUT_HEADERS_PREPARE # _AC_OUTPUT_HEADER # ----------------- # # Output the code which instantiates the `config.h' files from their # `config.h.in'. # # This macro is expanded inside a here document. If the here document is # closed, it has to be reopened with # "cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1". # m4_define([_AC_OUTPUT_HEADER], [ # # CONFIG_HEADER # if test x"$ac_file" != x-; then { AS_ECHO(["/* $configure_input */"]) \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || AC_MSG_ERROR([could not create $ac_file]) if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then AC_MSG_NOTICE([$ac_file is unchanged]) else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || AC_MSG_ERROR([could not create $ac_file]) fi else AS_ECHO(["/* $configure_input */"]) \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || AC_MSG_ERROR([could not create -]) fi dnl If running for Automake, be ready to perform additional dnl commands to set up the timestamp files. m4_ifdef([_AC_AM_CONFIG_HEADER_HOOK], [_AC_AM_CONFIG_HEADER_HOOK(["$ac_file"]) ])dnl ])# _AC_OUTPUT_HEADER ## --------------------- ## ## Configuration links. ## ## --------------------- ## # AC_CONFIG_LINKS(DEST:SOURCE..., [COMMANDS], [INIT-CMDS]) # -------------------------------------------------------- # Specify that config.status should establish a (symbolic if possible) # link from TOP_SRCDIR/SOURCE to TOP_SRCDIR/DEST. # Reject DEST=., because it is makes it hard for ./config.status # to guess the links to establish (`./config.status .'). # AC_DEFUN([AC_CONFIG_LINKS], [_AC_CONFIG_FOOS([LINKS], $@)]) # AC_LINK_FILES(SOURCE..., DEST...) # --------------------------------- # Link each of the existing files SOURCE... to the corresponding # link name in DEST... # # Unfortunately we can't provide a very good autoupdate service here, # since in `AC_LINK_FILES($from, $to)' it is possible that `$from' # and `$to' are actually lists. It would then be completely wrong to # replace it with `AC_CONFIG_LINKS($to:$from). It is possible in the # case of literal values though, but because I don't think there is any # interest in creating config links with literal values, no special # mechanism is implemented to handle them. # # _AC_LINK_FILES_CNT is used to be robust to multiple calls. AU_DEFUN([AC_LINK_FILES], [m4_if($#, 2, , [m4_fatal([$0: incorrect number of arguments])])dnl m4_define_default([_AC_LINK_FILES_CNT], 0)dnl m4_define([_AC_LINK_FILES_CNT], m4_incr(_AC_LINK_FILES_CNT))dnl ac_sources="$1" ac_dests="$2" while test -n "$ac_sources"; do set $ac_dests; ac_dest=$[1]; shift; ac_dests=$[*] set $ac_sources; ac_source=$[1]; shift; ac_sources=$[*] [ac_config_links_]_AC_LINK_FILES_CNT="$[ac_config_links_]_AC_LINK_FILES_CNT $ac_dest:$ac_source" done AC_CONFIG_LINKS($[ac_config_links_]_AC_LINK_FILES_CNT)dnl ], [It is technically impossible to `autoupdate' cleanly from AC_LINK_FILES to AC_CONFIG_LINKS. `autoupdate' provides a functional but inelegant update, you should probably tune the result yourself.])# AC_LINK_FILES # _AC_OUTPUT_LINK # --------------- # This macro is expanded inside a here document. If the here document is # closed, it has to be reopened with # "cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1". m4_define([_AC_OUTPUT_LINK], [ # # CONFIG_LINK # if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then : else # Prefer the file from the source tree if names are identical. if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then ac_source=$srcdir/$ac_source fi AC_MSG_NOTICE([linking $ac_source to $ac_file]) if test ! -r "$ac_source"; then AC_MSG_ERROR([$ac_source: file not found]) fi rm -f "$ac_file" # Try a relative symlink, then a hard link, then a copy. case $ac_source in [[\\/$]]* | ?:[[\\/]]* ) ac_rel_source=$ac_source ;; *) ac_rel_source=$ac_top_build_prefix$ac_source ;; esac ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || ln "$ac_source" "$ac_file" 2>/dev/null || cp -p "$ac_source" "$ac_file" || AC_MSG_ERROR([cannot link or copy $ac_source to $ac_file]) fi ])# _AC_OUTPUT_LINK ## ------------------------ ## ## Configuration commands. ## ## ------------------------ ## # AC_CONFIG_COMMANDS(NAME...,[COMMANDS], [INIT-CMDS]) # --------------------------------------------------- # # Specify additional commands to be run by config.status. This # commands must be associated with a NAME, which should be thought # as the name of a file the COMMANDS create. # AC_DEFUN([AC_CONFIG_COMMANDS], [_AC_CONFIG_FOOS([COMMANDS], $@)]) # AC_OUTPUT_COMMANDS(EXTRA-CMDS, INIT-CMDS) # ----------------------------------------- # # Add additional commands for AC_OUTPUT to put into config.status. # # This macro is an obsolete version of AC_CONFIG_COMMANDS. The only # difficulty in mapping AC_OUTPUT_COMMANDS to AC_CONFIG_COMMANDS is # to give a unique key. The scheme we have chosen is `default-1', # `default-2' etc. for each call. # # Unfortunately this scheme is fragile: bad things might happen # if you update an included file and configure.ac: you might have # clashes :( On the other hand, I'd like to avoid weird keys (e.g., # depending upon __file__ or the pid). AU_DEFUN([AC_OUTPUT_COMMANDS], [m4_define_default([_AC_OUTPUT_COMMANDS_CNT], 0)dnl m4_define([_AC_OUTPUT_COMMANDS_CNT], m4_incr(_AC_OUTPUT_COMMANDS_CNT))dnl dnl Double quoted since that was the case in the original macro. AC_CONFIG_COMMANDS([default-]_AC_OUTPUT_COMMANDS_CNT, [[$1]], [[$2]])dnl ]) # _AC_OUTPUT_COMMAND # ------------------ # This macro is expanded inside a here document. If the here document is # closed, it has to be reopened with # "cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1". m4_define([_AC_OUTPUT_COMMAND], [ AC_MSG_NOTICE([executing $ac_file commands]) ]) ## -------------------------------------- ## ## Pre- and post-config.status commands. ## ## -------------------------------------- ## # AC_CONFIG_COMMANDS_PRE(CMDS) # ---------------------------- # Commands to run right before config.status is created. Accumulates. AC_DEFUN([AC_CONFIG_COMMANDS_PRE], [m4_append([AC_OUTPUT_COMMANDS_PRE], [$1 ])]) # AC_OUTPUT_COMMANDS_PRE # ---------------------- # A *variable* in which we append all the actions that must be # performed before *creating* config.status. For a start, clean # up all the LIBOBJ mess. m4_define([AC_OUTPUT_COMMANDS_PRE], [_AC_LIBOBJS_NORMALIZE ]) # AC_CONFIG_COMMANDS_POST(CMDS) # ----------------------------- # Commands to run after config.status was created. Accumulates. AC_DEFUN([AC_CONFIG_COMMANDS_POST], [m4_append([AC_OUTPUT_COMMANDS_POST], [$1 ])]) # Initialize. m4_define([AC_OUTPUT_COMMANDS_POST]) ## ----------------------- ## ## Configuration subdirs. ## ## ----------------------- ## # AC_CONFIG_SUBDIRS(DIR ...) # -------------------------- # We define two variables: # - _AC_LIST_SUBDIRS # A statically built list, should contain *all* the arguments of # AC_CONFIG_SUBDIRS. The final value is assigned to ac_subdirs_all in # the `default' section, and used for --help=recursive. # It makes no sense for arguments which are sh variables. # - subdirs # Shell variable built at runtime, so some of these dirs might not be # included, if for instance the user refused a part of the tree. # This is used in _AC_OUTPUT_SUBDIRS. AC_DEFUN([AC_CONFIG_SUBDIRS], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])]dnl [AC_REQUIRE([AC_DISABLE_OPTION_CHECKING])]dnl [m4_map_args_w([$1], [_AC_CONFIG_UNIQUE([SUBDIRS or CONFIG_SUBDIR_CUSTOM], _AC_CONFIG_COMPUTE_DEST(], [))])]dnl [m4_append([_AC_LIST_SUBDIRS], [$1], [ ])]dnl [AS_LITERAL_IF([$1], [], [AC_DIAGNOSE([syntax], [$0: you should use literals])])]dnl [AC_SUBST([subdirs], ["$subdirs m4_normalize([$1])"])]) # AC_CONFIG_SUBDIR_CUSTOM(DIR, ARGUMENTS [, DISABLE_HELP_RECURSIVE]) # ------------------------------------------------------------------ # Build a list custom_subdirs of tuples (DIR, ARGUMENTS) where DIR is # unique in _AC_LIST_CUSTOM_SUBDIRS and _AC_LIST_SUBDIRS. This list is used in # _AC_OUTPUT_SUBDIRS to invoke nested configures in directory DIR with # arguments ARGUMENTS. The arguments are modified as in the AC_CONFIG_SUBDIRS # case, see _AC_SUB_CONFIGURE_ARGS. If the third argument # DISABLE_HELP_RECURSIVE is given, configure --help=recursive will omit DIR. AC_DEFUN([AC_CONFIG_SUBDIR_CUSTOM], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])]dnl [AC_REQUIRE([AC_DISABLE_OPTION_CHECKING])]dnl [m4_foreach_w([_AC_Sub], [$1], [_AC_CONFIG_UNIQUE([SUBDIRS or CONFIG_SUBDIR_CUSTOM], m4_bpatsubst(m4_defn([_AC_Sub]), [:.*]))])]dnl # build a list of (directory,arguments) tuples that will be processed in _AC_OUTPUT_SUBDIRS [if test -z "$custom_subdirs"; then custom_subdirs="custom_sub_configure_dir=\"m4_normalize([$1])\";custom_sub_configure_args=\"m4_normalize([$2])\"" else custom_subdirs="$custom_subdirs|custom_sub_configure_dir=\"m4_normalize([$1])\";custom_sub_configure_args=\"m4_normalize([$2])\"" fi] # per default, enable --help=recursive in directory $1. [m4_ifval([$3], [], [m4_append([_AC_LIST_SUBDIRS], [$1], [ ])dnl ])]dnl [AS_LITERAL_IF([$1], [], [AC_DIAGNOSE([syntax], [$0: you should use literals])])]dnl [AC_SUBST([subdirs_custom], ["$subdirs_custom m4_normalize([$1])"])]dnl ) # AC_CONFIG_SUBDIR_CUSTOM # _AC_OUTPUT_SUBDIRS # ------------------ # This is a subroutine of AC_OUTPUT, but it does not go into # config.status, rather, it is called after running config.status. m4_define([_AC_OUTPUT_SUBDIRS], [ # # CONFIG_SUBDIRS section. # if test "$no_recursion" != yes; then ac_popdir=`pwd` # call configures in list $custom_subdirs with directory-specific arguments. OIFS=$IFS IFS='|' list=$custom_subdirs for dir_and_args in $list; do IFS=$OIFS eval $dir_and_args if test "x$custom_sub_configure_dir" = x; then continue; fi ac_custom_sub_configure_args= _AC_SUB_CONFIGURE_ARGS([$custom_sub_configure_args], [ac_custom_sub_configure_args]) _AC_SUB_CONFIGURE([$custom_sub_configure_dir], [$ac_custom_sub_configure_args]) cd "$ac_popdir" IFS='|' done IFS=$OIFS # call configures in $subdirs with fixed arguments. ac_sub_configure_args= _AC_SUB_CONFIGURE_ARGS([$ac_configure_args], [ac_sub_configure_args]) for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue echo "ac_dir(inside): $ac_dir" _AC_SUB_CONFIGURE([$ac_dir], [$ac_sub_configure_args]) cd "$ac_popdir" done fi ])# _AC_OUTPUT_SUBDIRS # _AC_SUB_CONFIGURE_ARGS(ARGUMENTS_IN, ARGUMENTS_OUT) # --------------------------------------------------- # Create ARGUMENTS_OUT from ARGUMENTS_IN for use in nested configure calls. m4_define([_AC_SUB_CONFIGURE_ARGS], [ # Remove --cache-file, --srcdir, and --disable-option-checking arguments # so they do not pile up. ac_sub_configure_args= ac_prev= eval "set x $1" shift for ac_arg do if test -n "$ac_prev"; then ac_prev= continue fi case $ac_arg in -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \ | --c=*) ;; --config-cache | -C) ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ;; --disable-option-checking) ;; *) case $ac_arg in *\'*) ac_arg=`AS_ECHO(["$ac_arg"]) | sed "s/'/'\\\\\\\\''/g"` ;; esac AS_VAR_APPEND([$2], [" '$ac_arg'"]) ;; esac done # Always prepend --prefix to ensure using the same prefix # in subdir configurations. ac_arg="--prefix=$prefix" case $ac_arg in *\'*) ac_arg=`AS_ECHO(["$ac_arg"]) | sed "s/'/'\\\\\\\\''/g"` ;; esac $2="'$ac_arg' $$2" # Pass --silent if test "$silent" = yes; then $2="--silent $$2" fi # Always prepend --disable-option-checking to silence warnings, since # different subdirs can have different --enable and --with options. $2="--disable-option-checking $$2" ])# _AC_SUB_CONFIGURE_ARGS # _AC_SUB_CONFIGURE(DIR, ARGUMENTS) # --------------------------------- # Call nested configure in DIR with arguments ARGUMENTS. m4_define([_AC_SUB_CONFIGURE], [ sub_configure_dir=$1 sub_configure_args=$2 # Do not complain, so a configure script can configure whichever # parts of a large source tree are present. test -d "$srcdir/$sub_configure_dir" || continue ac_msg="=== configuring in $sub_configure_dir (`pwd`/$sub_configure_dir)" _AS_ECHO_LOG([$ac_msg]) _AS_ECHO([$ac_msg]) AS_MKDIR_P(["$sub_configure_dir"]) _AC_SRCDIRS(["$sub_configure_dir"]) cd "$sub_configure_dir" # Check for guested configure; otherwise get Cygnus style configure. if test -f "$ac_srcdir/configure.gnu"; then ac_sub_configure=$ac_srcdir/configure.gnu elif test -f "$ac_srcdir/configure"; then ac_sub_configure=$ac_srcdir/configure elif test -f "$ac_srcdir/configure.in"; then # This should be Cygnus configure. ac_sub_configure=$ac_aux_dir/configure else AC_MSG_WARN([no configuration information is in $sub_configure_dir]) ac_sub_configure= fi # The recursion is here. if test -n "$ac_sub_configure"; then # Make the cache file name correct relative to the subdirectory. case $cache_file in [[\\/]]* | ?:[[\\/]]* ) ac_sub_cache_file=$cache_file ;; *) # Relative name. ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; esac AC_MSG_NOTICE([running $SHELL $ac_sub_configure $sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir]) # The eval makes quoting arguments work. eval "\$SHELL \"\$ac_sub_configure\" $sub_configure_args \ --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || AC_MSG_ERROR([$ac_sub_configure failed for $sub_configure_dir]) fi ])# _AC_SUB_CONFIGURE ## -------------------------- ## ## Outputting config.status. ## ## -------------------------- ## # AU::AC_OUTPUT([CONFIG_FILES...], [EXTRA-CMDS], [INIT-CMDS]) # ----------------------------------------------------------- # # If there are arguments given to AC_OUTPUT, dispatch them to the # proper modern macros. AU_DEFUN([AC_OUTPUT], [m4_ifvaln([$1], [AC_CONFIG_FILES([$1])])dnl m4_ifvaln([$2$3], [AC_CONFIG_COMMANDS(default, [$2], [$3])])dnl [AC_OUTPUT]]) # AC_OUTPUT([CONFIG_FILES...], [EXTRA-CMDS], [INIT-CMDS]) # ------------------------------------------------------- # The big finish. # Produce config.status, config.h, and links; and configure subdirs. # m4_define([AC_OUTPUT], [dnl Dispatch the extra arguments to their native macros. m4_ifvaln([$1], [AC_CONFIG_FILES([$1])])dnl m4_ifvaln([$2$3], [AC_CONFIG_COMMANDS(default, [$2], [$3])])dnl m4_ifval([$1$2$3], [AC_DIAGNOSE([obsolete], [$0 should be used without arguments. You should run autoupdate.])])dnl AC_CACHE_SAVE test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' m4_ifdef([_AC_SEEN_CONFIG(HEADERS)], [DEFS=-DHAVE_CONFIG_H], [AC_OUTPUT_MAKE_DEFS()]) dnl Commands to run before creating config.status. AC_OUTPUT_COMMANDS_PRE()dnl : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" _AC_OUTPUT_CONFIG_STATUS()dnl ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || AC_MSG_ERROR([write failure creating $CONFIG_STATUS]) dnl Commands to run after config.status was created AC_OUTPUT_COMMANDS_POST()dnl # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec AS_MESSAGE_LOG_FD>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || AS_EXIT([1]) fi dnl config.status should not do recursion. AC_PROVIDE_IFELSE([AC_CONFIG_SUBDIRS], [_AC_OUTPUT_SUBDIRS()], [AC_PROVIDE_IFELSE([AC_CONFIG_SUBDIR_CUSTOM], [_AC_OUTPUT_SUBDIRS()])])dnl if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then AC_MSG_WARN([unrecognized options: $ac_unrecognized_opts]) fi ])# AC_OUTPUT # _AC_OUTPUT_CONFIG_STATUS # ------------------------ # Produce config.status. Called by AC_OUTPUT. # Pay special attention not to have too long here docs: some old # shells die. Unfortunately the limit is not known precisely... m4_define([_AC_OUTPUT_CONFIG_STATUS], [AC_MSG_NOTICE([creating $CONFIG_STATUS]) dnl AS_MESSAGE_LOG_FD is not available yet: m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [AS_INIT_GENERATED([$CONFIG_STATUS], [# Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false ]) || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 [#] Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])dnl $as_me[]m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]), which was generated by m4_PACKAGE_STRING. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $[0] $[@] on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF dnl remove any newlines from these variables. m4_ifdef([_AC_SEEN_CONFIG(FILES)], [case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$[*];; esac ]) m4_ifdef([_AC_SEEN_CONFIG(HEADERS)], [case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$[*];; esac ]) cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. m4_ifdef([_AC_SEEN_CONFIG(FILES)], [config_files="$ac_config_files" ])dnl m4_ifdef([_AC_SEEN_CONFIG(HEADERS)], [config_headers="$ac_config_headers" ])dnl m4_ifdef([_AC_SEEN_CONFIG(LINKS)], [config_links="$ac_config_links" ])dnl m4_ifdef([_AC_SEEN_CONFIG(COMMANDS)], [config_commands="$ac_config_commands" ])dnl _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $[0] [[OPTION]]... [[TAG]]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent [] do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions m4_ifdef([_AC_SEEN_CONFIG(FILES)], [AS_HELP_STRING([[ --file=FILE[:TEMPLATE]]], [instantiate the configuration file FILE], [ ]) ])dnl m4_ifdef([_AC_SEEN_CONFIG(HEADERS)], [AS_HELP_STRING([[ --header=FILE[:TEMPLATE]]], [instantiate the configuration header FILE], [ ]) ])dnl m4_ifdef([_AC_SEEN_CONFIG(FILES)], [Configuration files: $config_files ])dnl m4_ifdef([_AC_SEEN_CONFIG(HEADERS)], [Configuration headers: $config_headers ])dnl m4_ifdef([_AC_SEEN_CONFIG(LINKS)], [Configuration links: $config_links ])dnl m4_ifdef([_AC_SEEN_CONFIG(COMMANDS)], [Configuration commands: $config_commands ])dnl Report bugs to m4_ifset([AC_PACKAGE_BUGREPORT], [], [the package provider]).dnl m4_ifdef([AC_PACKAGE_NAME], [m4_ifset([AC_PACKAGE_URL], [ AC_PACKAGE_NAME home page: .])dnl m4_if(m4_index(m4_defn([AC_PACKAGE_NAME]), [GNU ]), [0], [ General help using GNU software: .])])" _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`AS_ECHO(["$ac_configure_args"]) | sed 's/^ //; s/[[\\""\`\$]]/\\\\&/g'`" ac_cs_version="\\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.status[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING, with options \\"\$ac_cs_config\\" Copyright (C) m4_PACKAGE_YEAR Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' AC_PROVIDE_IFELSE([AC_PROG_INSTALL], [INSTALL='$INSTALL' ])dnl AC_PROVIDE_IFELSE([AC_PROG_MKDIR_P], [MKDIR_P='$MKDIR_P' ])dnl AC_PROVIDE_IFELSE([AC_PROG_AWK], [AWK='$AWK' ])dnl test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $[#] != 0 do case $[1] in --*=?*) ac_option=`expr "X$[1]" : 'X\([[^=]]*\)='` ac_optarg=`expr "X$[1]" : 'X[[^=]]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$[1]" : 'X\([[^=]]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$[1] ac_optarg=$[2] ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) AS_ECHO(["$ac_cs_version"]); exit ;; --config | --confi | --conf | --con | --co | --c ) AS_ECHO(["$ac_cs_config"]); exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; m4_ifdef([_AC_SEEN_CONFIG(FILES)], [dnl --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`AS_ECHO(["$ac_optarg"]) | sed "s/'/'\\\\\\\\''/g"` ;; '') AC_MSG_ERROR([missing file argument]) ;; esac AS_VAR_APPEND([CONFIG_FILES], [" '$ac_optarg'"]) ac_need_defaults=false;; ])dnl m4_ifdef([_AC_SEEN_CONFIG(HEADERS)], [dnl --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`AS_ECHO(["$ac_optarg"]) | sed "s/'/'\\\\\\\\''/g"` ;; esac AS_VAR_APPEND([CONFIG_HEADERS], [" '$ac_optarg'"]) ac_need_defaults=false;; --he | --h) # Conflict between --help and --header AC_MSG_ERROR([ambiguous option: `$[1]' Try `$[0] --help' for more information.]);; ], [ --he | --h |])dnl --help | --hel | -h ) AS_ECHO(["$ac_cs_usage"]); exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) AC_MSG_ERROR([unrecognized option: `$[1]' Try `$[0] --help' for more information.]) ;; *) AS_VAR_APPEND([ac_config_targets], [" $[1]"]) ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec AS_MESSAGE_FD>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 dnl Check this before opening the log, to avoid a bug on MinGW, dnl which prohibits the recursive instance from truncating an open log. if \$ac_cs_recheck; then set X '$SHELL' '$[0]' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \AS_ECHO(["running CONFIG_SHELL=$SHELL \$[*]"]) >&AS_MESSAGE_FD CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$[@]" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 dnl Open the log: m4_popdef([AS_MESSAGE_LOG_FD])dnl exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) AS_ECHO(["$ac_log"]) } >&AS_MESSAGE_LOG_FD _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 m4_ifdef([_AC_OUTPUT_COMMANDS_INIT], [# # INIT-COMMANDS # _AC_OUTPUT_COMMANDS_INIT ])dnl _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in m4_ifdef([_AC_LIST_TAGS], [_AC_LIST_TAGS]) *) AC_MSG_ERROR([invalid argument: `$ac_config_target']);; esac done m4_ifdef([_AC_SEEN_CONFIG(ANY)], [_AC_OUTPUT_MAIN_LOOP])[]dnl AS_EXIT(0) _ACEOF ])# _AC_OUTPUT_CONFIG_STATUS # _AC_OUTPUT_MAIN_LOOP # -------------------- # The main loop in $CONFIG_STATUS. # # This macro is expanded inside a here document. If the here document is # closed, it has to be reopened with # "cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1". # AC_DEFUN([_AC_OUTPUT_MAIN_LOOP], [ # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then m4_ifdef([_AC_SEEN_CONFIG(FILES)], [ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files ])dnl m4_ifdef([_AC_SEEN_CONFIG(HEADERS)], [ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers ])dnl m4_ifdef([_AC_SEEN_CONFIG(LINKS)], [ test "${CONFIG_LINKS+set}" = set || CONFIG_LINKS=$config_links ])dnl m4_ifdef([_AC_SEEN_CONFIG(COMMANDS)], [ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands ])dnl fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. dnl For historical reasons, AS_TMPDIR must continue to place the results dnl in $tmp; but we swap to the namespace-clean $ac_tmp to avoid issues dnl with any CONFIG_COMMANDS playing with the common variable name $tmp. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'AS_EXIT([1])' 1 2 13 15 } dnl The comment above AS_TMPDIR says at most 4 chars are allowed. AS_TMPDIR([conf], [.]) ac_tmp=$tmp m4_ifdef([_AC_SEEN_CONFIG(FILES)], [_AC_OUTPUT_FILES_PREPARE])[]dnl m4_ifdef([_AC_SEEN_CONFIG(HEADERS)], [_AC_OUTPUT_HEADERS_PREPARE])[]dnl eval set X "dnl m4_ifdef([_AC_SEEN_CONFIG(FILES)], [:F $CONFIG_FILES])[]dnl m4_ifdef([_AC_SEEN_CONFIG(HEADERS)], [:H $CONFIG_HEADERS])[]dnl m4_ifdef([_AC_SEEN_CONFIG(LINKS)], [:L $CONFIG_LINKS])[]dnl m4_ifdef([_AC_SEEN_CONFIG(COMMANDS)], [:C $CONFIG_COMMANDS])[]dnl " shift for ac_tag do case $ac_tag in :[[FHLC]]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[[FHL]]*:*);; :L* | :C*:*) AC_MSG_ERROR([invalid tag `$ac_tag']);; :[[FH]]-) ac_tag=-:-;; :[[FH]]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$[1] shift case $ac_mode in :L) ac_source=$[1];; :[[FH]]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [[\\/$]]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || AC_MSG_ERROR([cannot find input file: `$ac_f'], [1]);; esac case $ac_f in *\'*) ac_f=`AS_ECHO(["$ac_f"]) | sed "s/'/'\\\\\\\\''/g"`;; esac AS_VAR_APPEND([ac_file_inputs], [" '$ac_f'"]) done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` AS_ECHO(["$[*]"]) | sed ['s|^[^:]*/||;s|:[^:]*/|, |g'] `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" AC_MSG_NOTICE([creating $ac_file]) fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`AS_ECHO(["$configure_input"]) | sed 's/[[\\\\&|]]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || AC_MSG_ERROR([could not create $ac_file]) ;; esac ;; esac ac_dir=`AS_DIRNAME(["$ac_file"])` AS_MKDIR_P(["$ac_dir"]) _AC_SRCDIRS(["$ac_dir"]) case $ac_mode in m4_ifdef([_AC_SEEN_CONFIG(FILES)], [:F)_AC_OUTPUT_FILE ;;]) m4_ifdef([_AC_SEEN_CONFIG(HEADERS)], [:H)_AC_OUTPUT_HEADER ;;]) m4_ifdef([_AC_SEEN_CONFIG(LINKS)], [:L)_AC_OUTPUT_LINK ;;]) m4_ifdef([_AC_SEEN_CONFIG(COMMANDS)], [:C)_AC_OUTPUT_COMMAND ;;]) esac dnl Some shells don't like empty case/esac m4_ifdef([_AC_LIST_TAG_COMMANDS], [ case $ac_file$ac_mode in _AC_LIST_TAG_COMMANDS esac ])dnl done # for ac_tag ])# _AC_OUTPUT_MAIN_LOOP # AC_OUTPUT_MAKE_DEFS # ------------------- # Set the DEFS variable to the -D options determined earlier. # This is a subroutine of AC_OUTPUT. # It is called inside configure, outside of config.status. m4_define([AC_OUTPUT_MAKE_DEFS], [[# Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ]])# AC_OUTPUT_MAKE_DEFS eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/PaxHeaders.7332/ah_scorep_config_header_cu0000644000000000000000000000013212617055645030206 xustar0030 mtime=1446796197.922458326 30 atime=1508162201.408497488 30 ctime=1508162367.693903822 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/ah_scorep_config_header_custom.m40000644000175000017500000000206012617055645032615 0ustar00trahaytrahay00000000000000## -*- mode: autoconf -*- ## ## This file is part of the Score-P software (http://www.score-p.org) ## ## Copyright (c) 2009-2011, ## RWTH Aachen University, Germany ## Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ## Technische Universitaet Dresden, Germany ## University of Oregon, Eugene, USA ## Forschungszentrum Juelich GmbH, Germany ## German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ## Technische Universitaet Muenchen, Germany ## ## See the COPYING file in the package base directory for details. ## AC_DEFUN([AH_SCOREP_CONFIG_HEADER_CUSTOM], [ ## Please note that text gets included "verbatim" to the template file, not to ## the resulting config header, so it can easily get mangled when the template ## is processed. There is rarely a need for something other than ## ## AH_BOTTOM([#include ]) ## Include text at the top of the header template file. ##AH_TOP([text]) ## Include text at the bottom of the header template file. AH_BOTTOM([#include ]) ]) eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/PaxHeaders.7332/ac_scorep_fortran_checks.m0000644000000000000000000000013112537514552030160 xustar0030 mtime=1434360170.600467609 29 atime=1508162201.41649805 30 ctime=1508162367.693903822 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/ac_scorep_fortran_checks.m40000644000175000017500000000433612537514552031442 0ustar00trahaytrahay00000000000000## -*- mode: autoconf -*- ## ## This file is part of the Score-P software (http://www.score-p.org) ## ## Copyright (c) 2009-2011, ## RWTH Aachen University, Germany ## Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ## Technische Universitaet Dresden, Germany ## University of Oregon, Eugene, USA ## Forschungszentrum Juelich GmbH, Germany ## German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ## Technische Universitaet Muenchen, Germany ## ## See the COPYING file in the package base directory for details. ## ## file ac_scorep_fortran_checks.m4 ## maintainer Christian Roessel AC_DEFUN([AC_SCOREP_FORTRAN_SUPPORT_ALLOCATABLE],[ AC_LANG_PUSH(Fortran) AC_MSG_CHECKING([whether double precision, allocatable arrays are supported]) AC_COMPILE_IFELSE([ PROGRAM test TYPE mydata double precision, allocatable :: afF(:,:) END TYPE mydata END PROGRAM test ], [scorep_support_allocatable="yes"], [scorep_support_allocatable="no"] ) #AC_COMPILE_IFELSE AC_LANG_POP(Fortran) AC_MSG_RESULT($scorep_support_allocatable) AM_CONDITIONAL(FORTRAN_SUPPORT_ALLOCATABLE, test "x$scorep_support_allocatable" = "xyes") ]) #AC_DEFUN AC_DEFUN([AC_SCOREP_HAVE_FC],[ scorep_have_fc="no" AC_REQUIRE([AC_PROG_FC]) AC_MSG_CHECKING([whether the fortran compiler ${FC} works]) AC_LANG_PUSH([Fortran]) AC_LINK_IFELSE([ program main implicit none integer tid end ], [scorep_have_fc="yes"], []) AC_LANG_POP([Fortran]) AM_CONDITIONAL([SCOREP_HAVE_FC], [test "x${scorep_have_fc}" == "xyes"]) AC_MSG_RESULT([${scorep_have_fc}]) ]) AC_DEFUN([AC_SCOREP_HAVE_F77],[ scorep_have_f77="no" AC_REQUIRE([AC_PROG_F77]) AC_MSG_CHECKING([whether the fortran 77 compiler ${F77} works]) AC_LANG_PUSH([Fortran 77]) AC_LINK_IFELSE([ program main implicit none integer tid end ], [scorep_have_f77="yes"], []) AC_LANG_POP([Fortran 77]) AM_CONDITIONAL([SCOREP_HAVE_F77], [test "x${scorep_have_f77}" == "xyes"]) AC_MSG_RESULT([${scorep_have_f77}]) ]) eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/PaxHeaders.7332/ltsugar.m40000644000000000000000000000013213171135233024703 xustar0030 mtime=1508162203.544648076 30 atime=1508162203.556648925 30 ctime=1508162367.697904171 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/ltsugar.m40000644000175000017500000001044013171135233026071 0ustar00trahaytrahay00000000000000# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59, which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/PaxHeaders.7332/ltversion.m40000644000000000000000000000013113171135233025246 xustar0029 mtime=1508162203.56464949 30 atime=1508162203.576650337 30 ctime=1508162367.697904171 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/ltversion.m40000644000175000017500000000127313171135233026441 0ustar00trahaytrahay00000000000000# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 4179 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]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.6' macro_revision='2.4.6' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/PaxHeaders.7332/ac_scorep_compiler_checks.0000644000000000000000000000013212617055645030145 xustar0030 mtime=1446796197.922458326 30 atime=1508162201.424498612 30 ctime=1508162367.693903822 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/ac_scorep_compiler_checks.m40000644000175000017500000002101312617055645031572 0ustar00trahaytrahay00000000000000## -*- mode: autoconf -*- ## ## This file is part of the Score-P software (http://www.score-p.org) ## ## Copyright (c) 2009-2011, ## RWTH Aachen University, Germany ## Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ## Technische Universitaet Dresden, Germany ## University of Oregon, Eugene, USA ## Forschungszentrum Juelich GmbH, Germany ## German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ## Technische Universitaet Muenchen, Germany ## ## See the COPYING file in the package base directory for details. ## AC_DEFUN([SCOREP_COMPILER_INTEL],[ AC_MSG_CHECKING([for intel compiler]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[#if defined(__INTEL_COMPILER) || defined(__ICC) #else # error "Not an Intel compiler." #endif ]])], [scorep_compiler_intel="yes"; scorep_compiler_unknown="no"], [scorep_compiler_intel="no"]) AC_MSG_RESULT([$scorep_compiler_intel]) AS_IF([test "x${scorep_compiler_intel}" = "xyes"], [scorep_compiler_instrumentation_cppflags="-tcollect"] AC_DEFINE([FORTRAN_MANGLED(var)], [var ## _], [Name of var after mangled by the Fortran compiler.])) ]) ## AC_DEFUN([SCOREP_COMPILER_SUN],[ AC_MSG_CHECKING([for sun compiler]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[#if defined(__SUNPRO_C) #else # error "Not a Sun compiler." #endif ]])], [scorep_compiler_sun="yes"; scorep_compiler_unknown="no"], [scorep_compiler_sun="no"]) AC_MSG_RESULT([$scorep_compiler_sun]) AS_IF([test "x${scorep_compiler_sun}" = "xyes"], [scorep_compiler_instrumentation_cppflags="-O -Qoption f90comp -phat"] AC_DEFINE([FORTRAN_MANGLED(var)], [var ## _], [Name of var after mangled by the Fortran compiler.])) ]) ## AC_DEFUN([SCOREP_COMPILER_IBM],[ AC_MSG_CHECKING([for ibm compiler]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[#if defined(__IBMC__) # if __IBMC__ >= 800 # else # error "Not an IBM XL compiler." # endif #else # error "Not an IBM compiler." #endif ]])], [scorep_compiler_ibm="yes"; scorep_compiler_unknown="no"], [scorep_compiler_ibm="no"]) AC_MSG_RESULT([$scorep_compiler_ibm]) AS_IF([test "x${scorep_compiler_ibm}" = "xyes"], [scorep_compiler_instrumentation_cppflags="-qdebug=function_trace"] AC_DEFINE([FORTRAN_MANGLED(var)], [var], [Name of var after mangled by the Fortran compiler.])) ]) ## AC_DEFUN([SCOREP_COMPILER_PGI],[ AC_MSG_CHECKING([for pgi compiler]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[#if defined(__PGI) #else # error "Not a PGI compiler." #endif ]])], [scorep_compiler_pgi="yes"; scorep_compiler_unknown="no"], [scorep_compiler_pgi="no"]) AC_MSG_RESULT([$scorep_compiler_pgi]) AS_IF([test "x${scorep_compiler_pgi}" = "xyes"], [scorep_compiler_instrumentation_cppflags="-Mprof=func"] AC_DEFINE([FORTRAN_MANGLED(var)], [var ## _], [Name of var after mangled by the Fortran compiler.])) ]) ## AC_DEFUN([SCOREP_COMPILER_GNU],[ AC_MSG_CHECKING([for gnu compiler]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[#if defined(__GNUC__) #if defined(__INTEL_COMPILER) || defined(__ICC) # error "Not a GNU compiler." #endif #else # error "Not a GNU compiler." #endif ]])], [scorep_compiler_gnu="yes"; scorep_compiler_unknown="no"], [scorep_compiler_gnu="no"]) AC_MSG_RESULT([$scorep_compiler_gnu]) AS_IF([test "x${scorep_compiler_gnu}" = "xyes"], [scorep_compiler_instrumentation_cppflags="-finstrument-functions" AC_DEFINE([FORTRAN_MANGLED(var)], [var ## _], [Name of var after mangled by the Fortran compiler.])]) ]) ## dnl AC_DEFUN([SCOREP_COMPILER_HP],[ dnl AC_MSG_CHECKING([for hp compiler]) dnl AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], dnl [[#if defined(__HP_cc) || defined(__hpux) || defined(__hpua) dnl #else dnl # error "Not a HP compiler." dnl #endif dnl ]])], dnl [scorep_compiler_hp="yes"; scorep_compiler_unknown="no"], dnl [scorep_compiler_hp="no"]) dnl AC_MSG_RESULT([$scorep_compiler_hp]) dnl AS_IF([test "x${scorep_compiler_hp}" = "xyes"], dnl [scorep_compiler_instrumentation_cppflags=""] dnl AC_DEFINE([FORTRAN_MANGLED(var)], [hp compiler's Fortran mangling not implemented yet, see ac_scorep_compiler_checks.m4], dnl [Name of var after mangled by the Fortran compiler.])) dnl ]) ## AC_DEFUN([SCOREP_COMPILER_SX],[ AC_MSG_CHECKING([for sx compiler]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[#if defined(__SX_cc) || defined(__hpux) || defined(__hpua) #else # error "Not a SX compiler." #endif ]])], [scorep_compiler_sx="yes"; scorep_compiler_unknown="no"], [scorep_compiler_sx="no"]) AC_MSG_RESULT([$scorep_compiler_sx]) AS_IF([test "x${scorep_compiler_sx}" = "xyes"], [scorep_compiler_instrumentation_cppflags=""] AC_DEFINE([FORTRAN_MANGLED(var)], [sx compiler's Fortran mangling not implemented yet, see ac_scorep_compiler_checks.m4], [Name of var after mangled by the Fortran compiler.])) ]) ## AC_DEFUN([SCOREP_COMPILER_CRAY],[ AC_MSG_CHECKING([for cray compiler]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[#if defined(_CRAYC) #else # error "Not a Cray compiler." #endif ]])], [scorep_compiler_cray="yes"; scorep_compiler_unknown="no"], [scorep_compiler_cray="no"]) AC_MSG_RESULT([$scorep_compiler_cray]) AS_IF([test "x${scorep_compiler_cray}" = "xyes"], [scorep_compiler_instrumentation_cppflags="-hfunc_trace"] [CC="${CC} -hnoomp -O2"] [CXX="${CXX} -hnoomp -O2"] [F77="${F77} -hnoomp -O2"] [FC="${FC} -hnoomp -O2"] AC_DEFINE([FORTRAN_MANGLED(var)], [var ## _], [Name of var after mangled by the Fortran compiler.])) ]) ## AC_DEFUN([SCOREP_ATTRIBUTE_ALIGNMENT],[ AC_LANG_PUSH([C]) AC_MSG_CHECKING([for alignment attribute]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[int __attribute__((aligned (16))) tpd;]])], [has_alignment_attribute="yes"], [has_alignment_attribute="no"] ) if test "x${has_alignment_attribute}" = "xyes"; then AC_DEFINE([FORTRAN_ALIGNED],[__attribute__((aligned (16)))],[Makes C variable allignement consistent with Fortran]) else AC_DEFINE([FORTRAN_ALIGNED],[],[Alignment attribute not supported]) fi AC_MSG_RESULT([$has_alignment_attribute]) AC_LANG_POP([C]) ]) ## AC_DEFUN([AC_SCOREP_COMPILER_CHECKS],[ scorep_compiler_unknown="yes" scorep_compiler_intel="no" scorep_compiler_sun="no" scorep_compiler_ibm="no" scorep_compiler_pgi="no" scorep_compiler_gnu="no" dnl scorep_compiler_hp="no" scorep_compiler_sx="no" scorep_compiler_cray="no" scorep_compiler_instrumentation_cppflags="" # I (croessel) don't think that more than one test can possibly succeed, # so I skip extra testing here. AC_LANG_PUSH([C]) SCOREP_COMPILER_INTEL SCOREP_COMPILER_SUN SCOREP_COMPILER_IBM SCOREP_COMPILER_PGI SCOREP_COMPILER_GNU dnl SCOREP_COMPILER_HP SCOREP_COMPILER_SX SCOREP_COMPILER_CRAY AC_LANG_POP([C]) if test "x${scorep_compiler_unknown}" = "xyes"; then AC_MSG_WARN([Could not determine compiler vendor. Compiler instrumentation may not work.]) fi AM_CONDITIONAL([SCOREP_COMPILER_INTEL], [test "x${scorep_compiler_intel}" = "xyes"]) AM_CONDITIONAL([SCOREP_COMPILER_SUN], [test "x${scorep_compiler_sun}" = "xyes"]) AM_CONDITIONAL([SCOREP_COMPILER_IBM], [test "x${scorep_compiler_ibm}" = "xyes"]) AM_CONDITIONAL([SCOREP_COMPILER_PGI], [test "x${scorep_compiler_pgi}" = "xyes"]) AM_CONDITIONAL([SCOREP_COMPILER_GNU], [test "x${scorep_compiler_gnu}" = "xyes"]) dnl AM_CONDITIONAL([SCOREP_COMPILER_HP], [test "x${scorep_compiler_hp}" = "xyes"]) AM_CONDITIONAL([SCOREP_COMPILER_SX], [test "x${scorep_compiler_sx}" = "xyes"]) AM_CONDITIONAL([SCOREP_COMPILER_CRAY], [test "x${scorep_compiler_cray}" = "xyes"]) ]) ## AC_DEFUN([AC_SCOREP_COMPILER_INSTRUMENTATION_FLAGS],[ AC_REQUIRE([AC_SCOREP_COMPILER_CHECKS])dnl AC_ARG_WITH([extra-instrumentation-flags], [AS_HELP_STRING([--with-extra-instrumentation-flags=flags], [Add additional instrumentation flags.])], [ac_scorep_with_extra_instrumentation_cppflags=$withval], [ac_scorep_with_extra_instrumentation_cppflags=""]) AC_SUBST([COMPILER_INSTRUMENTATION_CPPFLAGS], ["${scorep_compiler_instrumentation_cppflags} ${ac_scorep_with_extra_instrumentation_cppflags}"]) AC_MSG_NOTICE([using instrumentation flags: ${scorep_compiler_instrumentation_cppflags} ${ac_scorep_with_extra_instrumentation_cppflags}]) ]) eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/PaxHeaders.7332/ac_scorep_svn_controlled.m0000644000000000000000000000013112617055645030222 xustar0030 mtime=1446796197.922458326 29 atime=1508162201.41649805 30 ctime=1508162367.289868537 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/ac_scorep_svn_controlled.m40000644000175000017500000000206712617055645031503 0ustar00trahaytrahay00000000000000## -*- mode: autoconf -*- ## ## This file is part of the Score-P software (http://www.score-p.org) ## ## Copyright (c) 2009-2011, ## RWTH Aachen University, Germany ## Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ## Technische Universitaet Dresden, Germany ## University of Oregon, Eugene, USA ## Forschungszentrum Juelich GmbH, Germany ## German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ## Technische Universitaet Muenchen, Germany ## ## See the COPYING file in the package base directory for details. ## AC_DEFUN([AC_SCOREP_SVN_CONTROLLED], [ ac_scorep_svn_controlled="no" #modified so that eztrace's make dist works # if test -d $srcdir/.svn; then # ac_scorep_svn_controlled="yes" # AC_DEFINE([SCOREP_IN_DEVELOPEMENT], [], [Defined if we are working from svn.]) # else AC_DEFINE([SCOREP_IN_PRODUCTION], [], [Defined if we are working from a make dist generated tarball.]) # fi AM_CONDITIONAL(SVN_CONTROLLED, test "x${ac_scorep_svn_controlled}" = xyes) ]) eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/PaxHeaders.7332/ac_scorep_doxygen.m40000644000000000000000000000013112617055645026730 xustar0030 mtime=1446796197.922458326 29 atime=1508162201.41649805 30 ctime=1508162367.285868187 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/m4/ac_scorep_doxygen.m40000644000175000017500000000370012617055645030120 0ustar00trahaytrahay00000000000000## -*- mode: autoconf -*- ## ## This file is part of the Score-P software (http://www.score-p.org) ## ## Copyright (c) 2009-2011, ## RWTH Aachen University, Germany ## Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ## Technische Universitaet Dresden, Germany ## University of Oregon, Eugene, USA ## Forschungszentrum Juelich GmbH, Germany ## German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ## Technische Universitaet Muenchen, Germany ## ## See the COPYING file in the package base directory for details. ## # AC_SCOREP_DOXYGEN #---------------- # Check doxygen related stuff, sets some output variables and the # AM_CONDITIONAL HAVE_DOXYGEN. # AC_DEFUN([AC_SCOREP_DOXYGEN], [ #if test -z "$have_svnversion"; then # AC_CHECK_PROG([have_svnversion], [svnversion], [yes], [no],,) #fi AC_CHECK_PROG([have_doxygen], [doxygen], [yes], [no],,) AM_CONDITIONAL(HAVE_DOXYGEN, test "x${have_doxygen}" = xyes) have_doxygen_latex="no" if test "x${have_doxygen}" = xyes; then AC_CHECK_PROG([have_dot], [dot], [yes], [no],,) AC_CHECK_PROG([have_pdflatex], [pdflatex], [yes], [no],,) AC_CHECK_PROG([have_makeindex], [makeindex], [yes], [no],,) if test "x${have_pdflatex}" = xyes && test "x${have_makeindex}" = xyes; then have_doxygen_latex="yes" fi fi AC_SUBST([have_doxygen_latex]) AM_CONDITIONAL(HAVE_DOXYGEN_LATEX, test "x${have_doxygen_latex}" = xyes) if test "x${ac_scorep_svn_controlled}" = "xyes"; then AC_CONFIG_FILES([doc/doxygen-user-common.cfg:vendor/common/build_related/doxygen/doxygen-user-common.cfg.in]) AC_CONFIG_FILES([doc/doxygen-user-component.cfg:doc/doxygen-user/doxygen-user-component.cfg.in]) AC_CONFIG_FILES([doc/doxygen-dev.cfg:doc/doxygen-dev/doxygen-dev.cfg.in]) fi # ac_scorep_doxygen_distdir may be passed in from upper level configure if test ! -n "$ac_scorep_doxygen_distdir"; then ac_scorep_doxygen_distdir="" fi AC_SUBST([ac_scorep_doxygen_distdir]) ]) eztrace-1.1-7/extlib/opari2/vendor/common/build-config/PaxHeaders.7332/process_arguments.awk0000644000000000000000000000013112537514552026720 xustar0030 mtime=1434360170.724466025 30 atime=1508162287.803123977 29 ctime=1508162367.32987203 eztrace-1.1-7/extlib/opari2/vendor/common/build-config/process_arguments.awk0000644000175000017500000000477012537514552030120 0ustar00trahaytrahay00000000000000# We assume that the order of the passed files is # - frontend compilers # - backend compilers # - mpi compilers # - user-provided arguments # # With this order we guarantee that user-provided binary arguments takes # precedence. They just overwrite already existing binary arguments. # # iterate over the fields. if a field is of the form "key=value", store it in # a map. subsequent insertions of the same key override the old # value, e.g. the last insertion wins. # # fields not in "key=value" form are treated as unary arguments and are taken # into account for the user-provided toplevel arguments only. { if (FILENAME == "user_provided_configure_args") { gsub("'", "") if ($0 == "") { next } n = index($0, "=") if (n != 0) { # line with at least one "=". Use first "=" as key-value separator args_binary[substr($0, 1, n-1)] = substr($0, n+1) } else { args_unary = "'" $0 "' " args_unary } } # else if (FILENAME == "args_exported") { # # HUH, it seems that exported values doesn't make it into configure # # if I do a export CC=icc; ./configure then CC always equals gcc. # # i.e. we can omit "args_exported" # # don't put every exported symbol into the map but override only those # # that were inserted by the platform defaults. # n = split($0, split_array, "=") # if (n == 2) { # key = split_array[1] # if (key in args_binary) { # args_binary[key]=split_array[2] # } # } # } else { # FILENAME == "${ac_scorep_platform}" if (index($0, "#") == 0) { # ! commented line n = index($0, "=") if (n != 0) { # line with at least one "=". Use first "=" as key-value separator args_binary[substr($0, 1, n-1)] = substr($0, n+1) } } } } function evaluate_placeholder(compiler) { # e.g. transform MPICC="mpiicc -cc=${CC}" to MPICC="mpiicc -cc=gcc", # assuming that CC=gcc mpi_compiler = "MPI" compiler pattern = "{" compiler "}" if (mpi_compiler in args_binary) { if (match(args_binary[mpi_compiler], pattern) != 0) { sub(pattern, args_binary[compiler], args_binary[mpi_compiler]) } } } END{ evaluate_placeholder("CC") evaluate_placeholder("CXX") evaluate_placeholder("F77") evaluate_placeholder("FC") # Concatenate the map's content into a "key=value" pair sequence, add the # unary arguments and print it to stdout. for (key in args_binary) { result = "'" key "=" args_binary[key] "' " result } print result args_unary } eztrace-1.1-7/extlib/opari2/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135244017360 xustar0030 mtime=1508162212.145262545 30 atime=1508162288.791204858 30 ctime=1508162367.293868886 eztrace-1.1-7/extlib/opari2/Makefile.in0000644000175000017500000012530013171135244020550 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @SVN_CONTROLLED_TRUE@am__append_1 = doc/doxygen-project-number.cfg @HAVE_DOXYGEN_TRUE@@SVN_CONTROLLED_TRUE@am__append_2 = doc/doxygen-user.cfg doc/doxygen-user-at-make-time.cfg doxygen.err @HAVE_UNCRUSTIFY_TRUE@@SVN_CONTROLLED_TRUE@am__append_3 = beautify-recursive @CROSS_BUILD_FALSE@am__append_4 = $(srcdir)/build-frontend/configure.ac \ @CROSS_BUILD_FALSE@ $(srcdir)/build-frontend/aclocal.m4 \ @CROSS_BUILD_FALSE@ $(srcdir)/build-frontend/Makefile.am \ @CROSS_BUILD_FALSE@ $(srcdir)/build-frontend/Makefile.in \ @CROSS_BUILD_FALSE@ $(srcdir)/build-frontend/configure \ @CROSS_BUILD_FALSE@ $(srcdir)/src/config-frontend.h.in subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/vendor/common/build-config/m4/ac_scorep_compiler_and_flags.m4 \ $(top_srcdir)/vendor/common/build-config/m4/ac_scorep_doxygen.m4 \ $(top_srcdir)/vendor/common/build-config/m4/ac_scorep_svn_controlled.m4 \ $(top_srcdir)/vendor/common/build-config/m4/ac_scorep_sys_detection.m4 \ $(top_srcdir)/vendor/common/build-config/m4/ac_scorep_toplevel_args.m4 \ $(top_srcdir)/vendor/common/build-config/m4/ac_scorep_uncrustify.m4 \ $(top_srcdir)/vendor/common/build-config/m4/ac_scorep_version_and_revision.m4 \ $(top_srcdir)/vendor/common/build-config/m4/status.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = doc/doxygen-user-common.cfg \ doc/doxygen-user-component.cfg doc/doxygen-dev.cfg \ test/c_test.sh test/f90_test.sh test/f77_test.sh \ build-frontend/pomp2-parse-init-regions.awk CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in \ $(srcdir)/vendor/common/build-config/Makefile.inc.am \ $(top_srcdir)/build-config/config.guess \ $(top_srcdir)/build-config/config.sub \ $(top_srcdir)/build-config/install-sh \ $(top_srcdir)/build-config/missing \ $(top_srcdir)/doc/doxygen-dev/doxygen-dev.cfg.in \ $(top_srcdir)/doc/doxygen-user/doxygen-user-component.cfg.in \ $(top_srcdir)/src/pomp-lib-dummy/pomp2_parse_init_regions.awk.in \ $(top_srcdir)/test/c_test.sh.in \ $(top_srcdir)/test/f77_test.sh.in \ $(top_srcdir)/test/f90_test.sh.in \ $(top_srcdir)/vendor/common/build_related/doxygen/doxygen-user-common.cfg.in \ AUTHORS COPYING ChangeLog INSTALL NEWS README \ build-config/compile build-config/config.guess \ build-config/config.sub build-config/depcomp \ build-config/install-sh build-config/ltmain.sh \ build-config/missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ PACKAGE = @PACKAGE@ PACKAGE_BUGFIX = @PACKAGE_BUGFIX@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_MAJOR = @PACKAGE_MAJOR@ PACKAGE_MINOR = @PACKAGE_MINOR@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_scorep_doxygen_distdir = @ac_scorep_doxygen_distdir@ ac_scorep_have_uncrustify = @ac_scorep_have_uncrustify@ am__leading_dot = @am__leading_dot@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_dot = @have_dot@ have_doxygen = @have_doxygen@ have_doxygen_latex = @have_doxygen_latex@ have_makeindex = @have_makeindex@ have_pdflatex = @have_pdflatex@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs_custom = @subdirs_custom@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = $(subdirs) $(subdirs_custom) ACLOCAL_AMFLAGS = -I vendor/common/build-config/m4 # Create platform entries for EXTRA_DIST using e.g.: # cd vendor/common/build-config/platforms # for i in *; do echo " \$(srcdir)/vendor/common/build-config/platforms/$i \\"; done EXTRA_DIST = \ $(srcdir)/vendor/common/build-config/process_arguments.awk \ $(srcdir)/vendor/common/build-config/platforms/compiler-frontend-gcc \ $(srcdir)/vendor/common/build-config/platforms/compiler-frontend-ibm \ $(srcdir)/vendor/common/build-config/platforms/compiler-frontend-intel \ $(srcdir)/vendor/common/build-config/platforms/compiler-frontend-pathscale \ $(srcdir)/vendor/common/build-config/platforms/compiler-frontend-pgi \ $(srcdir)/vendor/common/build-config/platforms/compiler-frontend-studio \ $(srcdir)/vendor/common/build-config/platforms/compiler-mpi-impi \ $(srcdir)/vendor/common/build-config/platforms/compiler-mpi-mpich2 \ $(srcdir)/vendor/common/build-config/platforms/compiler-mpi-openmpi \ $(srcdir)/vendor/common/build-config/platforms/compiler-nocross-gcc \ $(srcdir)/vendor/common/build-config/platforms/compiler-nocross-ibm \ $(srcdir)/vendor/common/build-config/platforms/compiler-nocross-intel \ $(srcdir)/vendor/common/build-config/platforms/compiler-nocross-pathscale \ $(srcdir)/vendor/common/build-config/platforms/compiler-nocross-pgi \ $(srcdir)/vendor/common/build-config/platforms/compiler-nocross-studio \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-altix \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-bgl \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-bgp \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-crayx1 \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-crayxt \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-ibm \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-linux \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-mac \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-necsx \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-sicortex \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-sun \ $(srcdir)/vendor/common/build-config/platforms/platform-backend-user-provided \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-altix \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-bgl \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-bgp \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-crayx1 \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-crayxt \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-ibm \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-linux \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-mac \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-necsx \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-sicortex \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-sun \ $(srcdir)/vendor/common/build-config/platforms/platform-frontend-user-provided \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-altix \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-bgl \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-bgp \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-crayx1 \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-crayxt \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-ibm \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-linux \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-mac \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-necsx \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-sicortex \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-sun \ $(srcdir)/vendor/common/build-config/platforms/platform-mpi-user-provided \ $(srcdir)/vendor/common/build-config/generate-package-version.sh \ $(srcdir)/vendor/common/build-config/generate-library-version.sh \ $(srcdir)/build-config/VERSION \ $(srcdir)/vendor/common/cutest/CuTest.c \ $(srcdir)/vendor/common/cutest/CuTest.h $(srcdir)/src/config.h \ $(srcdir)/src/config-custom.h \ $(srcdir)/test/replacePaths_c.awk \ $(srcdir)/test/replacePaths_f77.awk \ $(srcdir)/test/replacePaths_f90.awk \ $(srcdir)/doc/example/example.c \ $(srcdir)/doc/example/example.f \ $(srcdir)/doc/example_user_instrumentation/example_user_instrumentation.c \ $(srcdir)/doc/example_user_instrumentation/example_user_instrumentation.f \ $(srcdir)/doc/doxygen-user/opari2_usage.dox.in \ $(srcdir)/build-config/REVISION \ $(srcdir)/build-config/REVISION_COMMON $(srcdir)/test/data \ $(am__append_4) CLEANFILES = $(builddir)/user_provided_configure_args \ $(builddir)/mpi_compiler_suite \ $(builddir)/mpi_compiler_suite_to_source $(am__append_1) \ $(am__append_2) doc/doxygen-user/main.dox DISTCLEANFILES = $(builddir)/config.summary DOC_SRC_DIR = $(srcdir)/doc ############################################################################### @SVN_CONTROLLED_TRUE@USER_DOC_DIR = $(top_distdir)$(ac_scorep_doxygen_distdir)/doc ############################################################################### SCOREP_RECURSIVE_TARGETS = $(am__append_3) check-build-recursive all: all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/vendor/common/build-config/Makefile.inc.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(srcdir)/vendor/common/build-config/Makefile.inc.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): doc/doxygen-user-common.cfg: $(top_builddir)/config.status $(top_srcdir)/vendor/common/build_related/doxygen/doxygen-user-common.cfg.in cd $(top_builddir) && $(SHELL) ./config.status $@ doc/doxygen-user-component.cfg: $(top_builddir)/config.status $(top_srcdir)/doc/doxygen-user/doxygen-user-component.cfg.in cd $(top_builddir) && $(SHELL) ./config.status $@ doc/doxygen-dev.cfg: $(top_builddir)/config.status $(top_srcdir)/doc/doxygen-dev/doxygen-dev.cfg.in cd $(top_builddir) && $(SHELL) ./config.status $@ test/c_test.sh: $(top_builddir)/config.status $(top_srcdir)/test/c_test.sh.in cd $(top_builddir) && $(SHELL) ./config.status $@ test/f90_test.sh: $(top_builddir)/config.status $(top_srcdir)/test/f90_test.sh.in cd $(top_builddir) && $(SHELL) ./config.status $@ test/f77_test.sh: $(top_builddir)/config.status $(top_srcdir)/test/f77_test.sh.in cd $(top_builddir) && $(SHELL) ./config.status $@ build-frontend/pomp2-parse-init-regions.awk: $(top_builddir)/config.status $(top_srcdir)/src/pomp-lib-dummy/pomp2_parse_init_regions.awk.in cd $(top_builddir) && $(SHELL) ./config.status $@ # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-local mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-data-local install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-exec-local install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) uninstall-hook .MAKE: $(am__recursive_targets) install-am install-strip uninstall-am .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-local cscope cscopelist-am ctags ctags-am dist dist-all \ dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar dist-tarZ \ dist-xz dist-zip distcheck distclean distclean-generic \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local install-dvi \ install-dvi-am install-exec install-exec-am install-exec-local \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-hook .PRECIOUS: Makefile prohibit-svn-files-in-dist: @find $(top_distdir) -type d | grep "\.svn"; \ if [ $$? -eq 0 ]; then \ echo "ERROR: subversion files found in distribution. This is usually caused by"; \ echo "referencing directories in EXTRA_DIST. Please specify the files that need"; \ echo "to go into the distribution explicitly."; \ exit 1; \ fi common-uninstall: rm -rf $(DESTDIR)$(docdir) rm -rf $(DESTDIR)$(datadir)/@PACKAGE_NAME@ @SVN_CONTROLLED_TRUE@doxygen-user-install: @SVN_CONTROLLED_TRUE@doxygen-user-generate: doxygen-user-pdf doxygen-user-html-compress copy-revision-file-to-dist @SVN_CONTROLLED_TRUE@update-revision: @SVN_CONTROLLED_TRUE@ echo `svnversion $(srcdir)` > "$(srcdir)/build-config/REVISION" @SVN_CONTROLLED_TRUE@copy-revision-file-to-dist: @SVN_CONTROLLED_TRUE@ $(MKDIR_P) "$(distdir)/build-config/" @SVN_CONTROLLED_TRUE@ for i in REVISION REVISION_COMMON; do \ @SVN_CONTROLLED_TRUE@ cp -p "$(srcdir)/build-config/$$i" "$(distdir)/build-config/"; \ @SVN_CONTROLLED_TRUE@ if grep -E [A-Z] "$(srcdir)/build-config/$$i" || \ @SVN_CONTROLLED_TRUE@ grep "-" "$(srcdir)/build-config/$$i"; then \ @SVN_CONTROLLED_TRUE@ echo "WARNING: distribution does not match a single, unmodified revision." >&2; \ @SVN_CONTROLLED_TRUE@ fi \ @SVN_CONTROLLED_TRUE@ done @SVN_CONTROLLED_TRUE@doxygen-user-html-compress: @SVN_CONTROLLED_TRUE@ if test -d "$(USER_DOC_DIR)/html"; then \ @SVN_CONTROLLED_TRUE@ cd "$(USER_DOC_DIR)"; tar czvf html.tar.gz html; rm -rf html/; \ @SVN_CONTROLLED_TRUE@ fi @SVN_CONTROLLED_TRUE@doxygen-project-number: update-revision @SVN_CONTROLLED_TRUE@ echo "PROJECT_NUMBER = \"@PACKAGE_VERSION@ (revision `cat $(srcdir)/build-config/REVISION`)\"" > doc/doxygen-project-number.cfg @SVN_CONTROLLED_TRUE@doxygen-user-clean: @SVN_CONTROLLED_TRUE@ rm -rf $(USER_DOC_DIR)/* @HAVE_DOXYGEN_TRUE@@SVN_CONTROLLED_TRUE@doxygen-user: doxygen-project-number doc/doxygen-user/main.dox @HAVE_DOXYGEN_TRUE@@SVN_CONTROLLED_TRUE@ $(MKDIR_P) "$(USER_DOC_DIR)/tags" @HAVE_DOXYGEN_TRUE@@SVN_CONTROLLED_TRUE@ echo "OUTPUT_DIRECTORY = $(USER_DOC_DIR)" > doc/doxygen-user-at-make-time.cfg @HAVE_DOXYGEN_TRUE@@SVN_CONTROLLED_TRUE@ echo "GENERATE_TAGFILE = $(USER_DOC_DIR)/tags/@PACKAGE_NAME@.tag" >> doc/doxygen-user-at-make-time.cfg @HAVE_DOXYGEN_TRUE@@SVN_CONTROLLED_TRUE@ cat doc/doxygen-project-number.cfg doc/doxygen-user-at-make-time.cfg doc/doxygen-user-common.cfg doc/doxygen-user-component.cfg > doc/doxygen-user.cfg @HAVE_DOXYGEN_TRUE@@SVN_CONTROLLED_TRUE@ $(MKDIR_P) "$(USER_DOC_DIR)/html" @HAVE_DOXYGEN_TRUE@@SVN_CONTROLLED_TRUE@ cp $(abs_srcdir)/doc/images/* $(USER_DOC_DIR)/html @HAVE_DOXYGEN_TRUE@@SVN_CONTROLLED_TRUE@ doxygen doc/doxygen-user.cfg @HAVE_DOXYGEN_FALSE@@SVN_CONTROLLED_TRUE@doxygen-user: @HAVE_DOXYGEN_FALSE@@SVN_CONTROLLED_TRUE@ echo "WARNING: doxygen not available. Can not generate documentation." >&2 @HAVE_DOXYGEN_LATEX_TRUE@@SVN_CONTROLLED_TRUE@doxygen-user-pdf: doxygen-user @HAVE_DOXYGEN_LATEX_TRUE@@SVN_CONTROLLED_TRUE@ cat doc/doxygen-user.cfg > doc/doxygen-user-pdf.cfg @HAVE_DOXYGEN_LATEX_TRUE@@SVN_CONTROLLED_TRUE@ echo "ENABLED_SECTIONS = LATEX" >> doc/doxygen-user-pdf.cfg @HAVE_DOXYGEN_LATEX_TRUE@@SVN_CONTROLLED_TRUE@ echo "GENERATE_LATEX = YES" >> doc/doxygen-user-pdf.cfg @HAVE_DOXYGEN_LATEX_TRUE@@SVN_CONTROLLED_TRUE@ echo "GENERATE_HTML = NO" >> doc/doxygen-user-pdf.cfg @HAVE_DOXYGEN_LATEX_TRUE@@SVN_CONTROLLED_TRUE@ cp $(abs_srcdir)/vendor/common/build_related/doxygen/scorep.sty $(USER_DOC_DIR)/pdf/ @HAVE_DOXYGEN_LATEX_TRUE@@SVN_CONTROLLED_TRUE@ doxygen doc/doxygen-user-pdf.cfg @HAVE_DOXYGEN_LATEX_TRUE@@SVN_CONTROLLED_TRUE@ cd "$(USER_DOC_DIR)/pdf"; \ @HAVE_DOXYGEN_LATEX_TRUE@@SVN_CONTROLLED_TRUE@ make; \ @HAVE_DOXYGEN_LATEX_TRUE@@SVN_CONTROLLED_TRUE@ mv refman.pdf ../; \ @HAVE_DOXYGEN_LATEX_TRUE@@SVN_CONTROLLED_TRUE@ rm -f *; \ @HAVE_DOXYGEN_LATEX_TRUE@@SVN_CONTROLLED_TRUE@ mv ../refman.pdf @PACKAGE_NAME@.pdf @HAVE_DOXYGEN_LATEX_FALSE@@SVN_CONTROLLED_TRUE@doxygen-user-pdf: doxygen-user @HAVE_DOXYGEN_LATEX_FALSE@@SVN_CONTROLLED_TRUE@ echo "WARNING: pdflatex not available. Can not generate doxygen pdf documentation." >&2 @HAVE_DOXYGEN_LATEX_FALSE@@SVN_CONTROLLED_TRUE@ if test -d "$(USER_DOC_DIR)/pdf"; then rm -rf "$(USER_DOC_DIR)/pdf"; fi @SVN_CONTROLLED_FALSE@doxygen-user-clean: @SVN_CONTROLLED_FALSE@doxygen-user-generate: @SVN_CONTROLLED_FALSE@doxygen-user-pdf: @SVN_CONTROLLED_FALSE@doxygen-user-install: @SVN_CONTROLLED_FALSE@ if test -f "$(DOC_SRC_DIR)/html.tar.gz"; then \ @SVN_CONTROLLED_FALSE@ $(MKDIR_P) $(DESTDIR)$(docdir); \ @SVN_CONTROLLED_FALSE@ $(INSTALL_DATA) $(DOC_SRC_DIR)/html.tar.gz $(DESTDIR)$(docdir)/html.tar.gz; \ @SVN_CONTROLLED_FALSE@ cd $(DESTDIR)$(docdir); \ @SVN_CONTROLLED_FALSE@ tar xzvf html.tar.gz; \ @SVN_CONTROLLED_FALSE@ rm -f html.tar.gz; \ @SVN_CONTROLLED_FALSE@ fi @SVN_CONTROLLED_FALSE@ if test -d "$(DOC_SRC_DIR)"; then \ @SVN_CONTROLLED_FALSE@ cd $(DOC_SRC_DIR); \ @SVN_CONTROLLED_FALSE@ dirs="pdf tags"; \ @SVN_CONTROLLED_FALSE@ cd -; \ @SVN_CONTROLLED_FALSE@ for i in $$dirs; do \ @SVN_CONTROLLED_FALSE@ if test -d "$(DOC_SRC_DIR)/$$i"; then \ @SVN_CONTROLLED_FALSE@ $(MKDIR_P) $(DESTDIR)$(docdir)/$$i; \ @SVN_CONTROLLED_FALSE@ cd $(DOC_SRC_DIR)/$$i; \ @SVN_CONTROLLED_FALSE@ files=`find . -type f |grep -v .svn`; \ @SVN_CONTROLLED_FALSE@ cd -; \ @SVN_CONTROLLED_FALSE@ for j in $$files; do \ @SVN_CONTROLLED_FALSE@ $(INSTALL_DATA) $(DOC_SRC_DIR)/$$i/$$j $(DESTDIR)$(docdir)/$$i/$$j; \ @SVN_CONTROLLED_FALSE@ done; \ @SVN_CONTROLLED_FALSE@ fi; \ @SVN_CONTROLLED_FALSE@ done; \ @SVN_CONTROLLED_FALSE@ fi @SVN_CONTROLLED_FALSE@copy-revision-file-to-dist: ############################################################################### @HAVE_UNCRUSTIFY_TRUE@@SVN_CONTROLLED_TRUE@beautify-sp: @HAVE_UNCRUSTIFY_TRUE@@SVN_CONTROLLED_TRUE@ @$(am__cd) $(srcdir) && ./vendor/common/beautifier/beautify @HAVE_UNCRUSTIFY_TRUE@@SVN_CONTROLLED_TRUE@beautify: beautify-recursive @HAVE_UNCRUSTIFY_TRUE@@SVN_CONTROLLED_TRUE@beautify-clean: ############################################################################### ############################################################################### bitten-copy-tarball-to-prefix: $(distdir).tar.gz $(MKDIR_P) $(DESTDIR)$(prefix) $(INSTALL_DATA) $(distdir).tar.gz $(DESTDIR)$(prefix)/$(PACKAGE)-latest.tar.gz bitten-print-environment: env ############################################################################### ############################################################################### check-build-sp: $(BUILT_SOURCES) all-am $(check_PROGRAMS) $(check_LTLIBRARIES) check-build: check-build-recursive ############################################################################### $(SCOREP_RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-sp"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-sp" || exit 1; \ fi; test -z "$$fail" .PHONY: doc/doxygen-user/main.dox remove-svn-files-from-dist @SVN_CONTROLLED_TRUE@doc/doxygen-user/main.dox: @SVN_CONTROLLED_TRUE@ $(MKDIR_P) doc/doxygen-user @SVN_CONTROLLED_TRUE@ cat $(srcdir)/doc/doxygen-user/main_1.dox.in \ @SVN_CONTROLLED_TRUE@ $(srcdir)/doc/doxygen-user/opari2_usage.dox.in \ @SVN_CONTROLLED_TRUE@ $(srcdir)/doc/doxygen-user/main_2.dox.in > doc/doxygen-user/main.dox @SVN_CONTROLLED_FALSE@doc/doxygen-user/main.dox: @SVN_CONTROLLED_FALSE@ $(MKDIR_P) doc/doxygen-user @SVN_CONTROLLED_FALSE@ touch doc/doxygen-user/main.dox remove-svn-files-from-dist: files=`find $(top_distdir) -type d | grep "\.svn"`; \ for i in $$files; do rm -rf $$i; done dist-hook: remove-svn-files-from-dist prohibit-svn-files-in-dist doc/doxygen-user/main.dox doxygen-user-generate rm -f $(top_distdir)/build-frontend/opari2_usage.h clean-local: doxygen-user-clean rm -rf test/tmp install-exec-local: $(INSTALL_SCRIPT) $(builddir)/build-frontend/pomp2-parse-init-regions.awk $(DESTDIR)$(bindir)/ install-data-local: doxygen-user-install uninstall-hook: common-uninstall rm -f $(DESTDIR)$(bindir)/pomp2-parse-init-regions.awk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/opari2/PaxHeaders.7332/build-includes0000644000000000000000000000013213171135477020151 xustar0030 mtime=1508162367.701904521 30 atime=1508162367.741908015 30 ctime=1508162367.701904521 eztrace-1.1-7/extlib/opari2/build-includes/0000755000175000017500000000000013171135477021415 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/build-includes/PaxHeaders.7332/common.am0000644000000000000000000000013112617055645022036 xustar0030 mtime=1446796197.894457451 29 atime=1508162206.66486951 30 ctime=1508162367.701904521 eztrace-1.1-7/extlib/opari2/build-includes/common.am0000644000175000017500000000203612617055645023227 0ustar00trahaytrahay00000000000000# -*- mode: makefile -*- ## ## This file is part of the Score-P software (http://www.score-p.org) ## ## Copyright (c) 2009-2011, ## RWTH Aachen, Germany ## Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ## Technische Universitaet Dresden, Germany ## University of Oregon, Eugene, USA ## Forschungszentrum Juelich GmbH, Germany ## German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ## Technische Universitaet Muenchen, Germany ## ## See the COPYING file in the package base directory for details. ## ## file build-includes/common.am ## Intended to be included by the components ## build-(front|back)end/Makefile.am. Defines "common" entities ## that all build-* Makefiles rely on. ## maintainer Christian Roessel include ../vendor/common/build-config/common.am ## Convenience variable for referencing public headers that will be ## installed. Use e.g. with the primary nobase_include_HEADERS PUBLIC_INC_SRC = $(SRC_ROOT)include/opari2/ eztrace-1.1-7/extlib/opari2/build-includes/PaxHeaders.7332/frontend-only.am0000644000000000000000000000013212537514551023342 xustar0030 mtime=1434360169.292484309 30 atime=1508162206.668869794 30 ctime=1508162367.701904521 eztrace-1.1-7/extlib/opari2/build-includes/frontend-only.am0000644000175000017500000000022012537514551024523 0ustar00trahaytrahay00000000000000## -*- mode: makefile -*- include ../src/opari/Makefile.inc.am include ../src/pomp-lib-dummy/Makefile.inc.am include ../test/Makefile.inc.am eztrace-1.1-7/extlib/opari2/PaxHeaders.7332/configure0000644000000000000000000000013213171135243017216 xustar0030 mtime=1508162211.793237147 30 atime=1508162287.615108599 30 ctime=1508162367.285868187 eztrace-1.1-7/extlib/opari2/configure0000755000175000017500000043612313171135243020421 0ustar00trahaytrahay00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for opari2 1.0.2. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: scorep-bugs@groups.tu-dresden.de about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='opari2' PACKAGE_TARNAME='opari2' PACKAGE_VERSION='1.0.2' PACKAGE_STRING='opari2 1.0.2' PACKAGE_BUGREPORT='scorep-bugs@groups.tu-dresden.de' PACKAGE_URL='' ac_default_prefix=/opt/opari2 enable_option_checking=no ac_subst_vars='LTLIBOBJS LIBOBJS SED subdirs_custom CROSS_BUILD_FALSE CROSS_BUILD_TRUE ac_scorep_doxygen_distdir HAVE_DOXYGEN_LATEX_FALSE HAVE_DOXYGEN_LATEX_TRUE have_doxygen_latex have_makeindex have_pdflatex have_dot HAVE_DOXYGEN_FALSE HAVE_DOXYGEN_TRUE have_doxygen HAVE_UNCRUSTIFY_FALSE HAVE_UNCRUSTIFY_TRUE ac_scorep_have_uncrustify SVN_CONTROLLED_FALSE SVN_CONTROLLED_TRUE host_os host_vendor host_cpu host build_os build_vendor build_cpu build AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM LIBRARY_AGE LIBRARY_REVISION LIBRARY_CURRENT PACKAGE_BUGFIX PACKAGE_MINOR PACKAGE_MAJOR target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_platform_detection with_compiler_suite ' ac_precious_vars='build_alias host_alias target_alias' ac_subdirs_all='build-frontend' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures opari2 1.0.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/opari2] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of opari2 1.0.2:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-platform-detection autodetect platform [yes] Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-compiler-suite=(gcc|ibm|intel|pathscale|pgi|studio) The compiler suite to build this package with. Needs to be in $PATH [gcc]. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF opari2 configure 1.0.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by opari2 $as_me 1.0.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu #echo "cross_compiling = $cross_compiling" # When working with a svn checkout, write a REVISION file. The REVISION # file is updated during each configure call and also at make doxygen-user # and make dist. # When working with a make-dist-generated tarball, REVISION is already # there. component_revision="invalid" common_revision="invalid" # which svnversion > /dev/null; \ # if test $? -eq 0; then # component_revision=`svnversion $srcdir` # common_revision=`svnversion $srcdir/vendor/common` # if test "x$component_revision" != "xexported"; then # echo $component_revision > $srcdir/build-config/REVISION # fi # if test "x$common_revision" != "xexported"; then # echo $common_revision > $srcdir/build-config/REVISION_COMMON # fi # fi if grep -E [A-Z] $srcdir/build-config/REVISION > /dev/null || \ grep ":" $srcdir/build-config/REVISION > /dev/null || grep -E [A-Z] $srcdir/build-config/REVISION_COMMON > /dev/null || \ grep ":" $srcdir/build-config/REVISION_COMMON > /dev/null; then component_revision=`cat $srcdir/build-config/REVISION` common_revision=`cat $srcdir/build-config/REVISION_COMMON` { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: distribution does not match a single, unmodified revision, but $component_revision (${PACKAGE_NAME}) and $common_revision (common)." >&5 $as_echo "$as_me: WARNING: distribution does not match a single, unmodified revision, but $component_revision (${PACKAGE_NAME}) and $common_revision (common)." >&2;} fi PACKAGE_MAJOR=1 PACKAGE_MINOR=0 PACKAGE_BUGFIX=2 LIBRARY_CURRENT=1 LIBRARY_REVISION=0 LIBRARY_AGE=2 # Quote arguments with shell meta charatcers. TOPLEVEL_CONFIGURE_ARGUMENTS= set -- "$progname" "$@" for ac_arg do case "$ac_arg" in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` # if the argument is of the form -foo=baz, quote the baz part only ac_arg=`echo "'$ac_arg'" | sed "s/^'\([-a-zA-Z0-9]*=\)/\\1'/"` ;; *) ;; esac # Add the quoted argument to the list. TOPLEVEL_CONFIGURE_ARGUMENTS="$TOPLEVEL_CONFIGURE_ARGUMENTS $ac_arg" done # Remove the initial space we just introduced and, as these will be # expanded by make, quote '$'. TOPLEVEL_CONFIGURE_ARGUMENTS=`echo "x$TOPLEVEL_CONFIGURE_ARGUMENTS" | sed -e 's/^x *//' -e 's,\\$,$$,g'` echo "$TOPLEVEL_CONFIGURE_ARGUMENTS" > ./user_provided_configure_args ## Packages that do manual configuration or use the install program might need ## to tell configure where to find some other shell scripts by calling ## AC_CONFIG_AUX_DIR, though the default places it looks are correct for most ## cases. ## Need to be called early on configure.ac because other macros search tools ## in this directory. ac_aux_dir= for ac_dir in build-config "$srcdir"/build-config; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-config \"$srcdir\"/build-config" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. ## Packages that use aclocal should declare where local macros can be found ## using AC_CONFIG_MACRO_DIR. ## Set the default installation prefix to /opt/opari2 instead of /usr/local ## Call not before AC_CONFIG_MACRO_DIR am__api_version='1.15' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='opari2' VERSION='1.0.2' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a pax tar archive" >&5 $as_echo_n "checking how to create a pax tar archive... " >&6; } # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_pax-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do { echo "$as_me:$LINENO: $_am_tar --version" >&5 ($_am_tar --version) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && break done am__tar="$_am_tar --format=posix -chf - "'"$$tardir"' am__tar_="$_am_tar --format=posix -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x pax -w "$$tardir"' am__tar_='pax -L -x pax -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H pax -L' am__tar_='find "$tardir" -print | cpio -o -H pax -L' am__untar='cpio -i -H pax -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_pax}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -rf conftest.dir if test -s conftest.tar; then { echo "$as_me:$LINENO: $am__untar &5 ($am__untar &5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 (cat conftest.dir/file) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } grep GrepMe conftest.dir/file >/dev/null 2>&1 && break fi done rm -rf conftest.dir if ${am_cv_prog_tar_pax+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_prog_tar_pax=$_am_tool fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_pax" >&5 $as_echo "$am_cv_prog_tar_pax" >&6; } # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' # don't detect and load defaults in nested configures (e.g. otf2) if test ! -n "$ac_scorep_platform_data_provided" -o "x${ac_scorep_platform_data_provided}" = "xno"; then # $ac_scorep_cross_compiling, $ac_scorep_platform are set here # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac ac_scorep_platform="unknown" ac_scorep_cross_compiling="no" ac_scorep_platform_detection="" ac_scorep_platform_detection_given="" ac_scorep_compilers_frontend="" ac_scorep_compilers_backend="" ac_scorep_compilers_mpi="" path_to_compiler_files="$srcdir/vendor/common/build-config/platforms/" if test "x${host_alias}" != "x"; then if test "x${build}" != "x${host}"; then ac_scorep_cross_compiling="yes" fi fi # Check whether --enable-platform-detection was given. if test "${enable_platform_detection+set}" = set; then : enableval=$enable_platform_detection; ac_scorep_platform_detection_given="$enableval" else if test "x${build_alias}" = "x" -a "x${host_alias}" = "x"; then : ac_scorep_platform_detection="yes" else ac_scorep_platform_detection="no" fi fi if test "x${ac_scorep_platform_detection_given}" = "xyes"; then if test "x${build_alias}" != "x" -o "x${host_alias}" != "x"; then as_fn_error $? "it makes no sense to request for platform detection while providing --host and/or --build." "$LINENO" 5 fi fi if test "x${ac_scorep_platform_detection_given}" != "x"; then ac_scorep_platform_detection="$ac_scorep_platform_detection_given" fi if test "x${ac_scorep_platform_detection}" = "xyes"; then if test "x${ac_scorep_platform}" = "xunknown"; then case ${build_os} in linux*) if test "x${build_cpu}" = "xia64" -a -f /etc/sgi-release; then : ac_scorep_platform="altix"; ac_scorep_cross_compiling="no" elif test "x${build_cpu}" = "xpowerpc64" -a -d /bgl/BlueLight; then : ac_scorep_platform="bgl"; ac_scorep_cross_compiling="yes" elif test "x${build_cpu}" = "xpowerpc64" -a -d /bgsys; then : ac_scorep_platform="bgp"; ac_scorep_cross_compiling="yes" elif test "x${build_cpu}" = "xx86_64" -a -d /opt/cray/xt-asyncpe; then : ac_scorep_platform="crayxt"; ac_scorep_cross_compiling="yes" elif test "x${build_cpu}" = "xmips64" -a -d /opt/sicortex; then : ac_scorep_platform="sicortex"; ac_scorep_cross_compiling="yes" else ac_scorep_platform=linux fi ;; esac fi if test "x${ac_scorep_platform}" = "xunknown"; then case ${build_os} in sunos* | solaris*) ac_scorep_platform="sun" ac_scorep_cross_compiling="no" ;; darwin*) ac_scorep_platform="mac" ac_scorep_cross_compiling="no" ;; aix*) ac_scorep_platform="ibm" ac_scorep_cross_compiling="no" ;; unicosmp*) ac_scorep_platform="crayx1" ac_scorep_cross_compiling="no" ;; superux*) ac_scorep_platform="necsx" ac_scorep_cross_compiling="yes" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for platform" >&5 $as_echo_n "checking for platform... " >&6; } if test "x${ac_scorep_platform}" = "xunknown"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_scorep_platform, please contact if you encounter any problems." >&5 $as_echo "$ac_scorep_platform, please contact if you encounter any problems." >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_scorep_platform" >&5 $as_echo "$ac_scorep_platform" >&6; } ac_scorep_compilers_frontend="${path_to_compiler_files}platform-frontend-${ac_scorep_platform}" ac_scorep_compilers_backend="${path_to_compiler_files}platform-backend-${ac_scorep_platform}" ac_scorep_compilers_mpi="${path_to_compiler_files}platform-mpi-${ac_scorep_platform}" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cross compilation" >&5 $as_echo_n "checking for cross compilation... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_scorep_cross_compiling" >&5 $as_echo "$ac_scorep_cross_compiling" >&6; } elif test "x${ac_scorep_platform_detection}" = "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: platform detection disabled." >&5 $as_echo "$as_me: platform detection disabled." >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cross compilation" >&5 $as_echo_n "checking for cross compilation... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_scorep_cross_compiling" >&5 $as_echo "$ac_scorep_cross_compiling" >&6; } ac_scorep_compilers_frontend="${path_to_compiler_files}platform-frontend-user-provided" ac_scorep_compilers_backend="${path_to_compiler_files}platform-backend-user-provided" ac_scorep_compilers_mpi="${path_to_compiler_files}platform-mpi-user-provided" else as_fn_error $? "unknown value for ac_scorep_platform_detection: $ac_scorep_platform_detection" "$LINENO" 5 fi if test "x${ac_scorep_compiler_suite_called}" != "x"; then # We need m4 quoting magic here ... as_fn_error $? "cannot use AC_SCOREP_WITH_COMPILER_SUITE and AC_SCOREP_WITH_NOCROSS_COMPILER_SUITE in one configure.ac." "$LINENO" 5 else ac_scorep_compiler_suite_called="yes" fi path_to_compiler_files="$srcdir/vendor/common/build-config/platforms/" # Check whether --with-compiler-suite was given. if test "${with_compiler_suite+set}" = set; then : withval=$with_compiler_suite; case $withval in #( "gcc") : ac_scorep_compilers_frontend="${path_to_compiler_files}compiler-nocross-gcc" ;; #( "ibm") : ac_scorep_compilers_frontend="${path_to_compiler_files}compiler-nocross-ibm" ;; #( "intel") : ac_scorep_compilers_frontend="${path_to_compiler_files}compiler-nocross-intel" ;; #( "pathscale") : ac_scorep_compilers_frontend="${path_to_compiler_files}compiler-nocross-pathscale" ;; #( "pgi") : ac_scorep_compilers_frontend="${path_to_compiler_files}compiler-nocross-pgi" ;; #( "studio") : ac_scorep_compilers_frontend="${path_to_compiler_files}compiler-nocross-studio" ;; #( *) : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Compiler suite \"${withval}\" not supported by --with-compiler-suite, ignoring." >&5 $as_echo "$as_me: WARNING: Compiler suite \"${withval}\" not supported by --with-compiler-suite, ignoring." >&2;} ;; esac fi # determine arguments for subdir configures args="`$AWK -f $srcdir/vendor/common/build-config/process_arguments.awk \ $ac_scorep_compilers_backend \ $ac_scorep_compilers_frontend \ user_provided_configure_args`" else { $as_echo "$as_me:${as_lineno-$LINENO}: platform data provided by toplevel configure." >&5 $as_echo "$as_me: platform data provided by toplevel configure." >&6;} # determine arguments for subdir configures args="`$AWK -f $srcdir/vendor/common/build-config/process_arguments.awk \ user_provided_configure_args`" fi ac_scorep_svn_controlled="no" #modified so that eztrace's make dist works # if test -d $srcdir/.svn; then # ac_scorep_svn_controlled="yes" # AC_DEFINE([SCOREP_IN_DEVELOPEMENT], [], [Defined if we are working from svn.]) # else $as_echo "#define SCOREP_IN_PRODUCTION /**/" >>confdefs.h # fi if test "x${ac_scorep_svn_controlled}" = xyes; then SVN_CONTROLLED_TRUE= SVN_CONTROLLED_FALSE='#' else SVN_CONTROLLED_TRUE='#' SVN_CONTROLLED_FALSE= fi # Extract the first word of "uncrustify", so it can be a program name with args. set dummy uncrustify; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_scorep_have_uncrustify+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_scorep_have_uncrustify"; then ac_cv_prog_ac_scorep_have_uncrustify="$ac_scorep_have_uncrustify" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_scorep_have_uncrustify="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_ac_scorep_have_uncrustify" && ac_cv_prog_ac_scorep_have_uncrustify="no" fi fi ac_scorep_have_uncrustify=$ac_cv_prog_ac_scorep_have_uncrustify if test -n "$ac_scorep_have_uncrustify"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_scorep_have_uncrustify" >&5 $as_echo "$ac_scorep_have_uncrustify" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x${ac_scorep_have_uncrustify}" = "xyes"; then HAVE_UNCRUSTIFY_TRUE= HAVE_UNCRUSTIFY_FALSE='#' else HAVE_UNCRUSTIFY_TRUE='#' HAVE_UNCRUSTIFY_FALSE= fi #if test -z "$have_svnversion"; then # AC_CHECK_PROG([have_svnversion], [svnversion], [yes], [no],,) #fi # Extract the first word of "doxygen", so it can be a program name with args. set dummy doxygen; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_have_doxygen+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$have_doxygen"; then ac_cv_prog_have_doxygen="$have_doxygen" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_have_doxygen="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_have_doxygen" && ac_cv_prog_have_doxygen="no" fi fi have_doxygen=$ac_cv_prog_have_doxygen if test -n "$have_doxygen"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_doxygen" >&5 $as_echo "$have_doxygen" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x${have_doxygen}" = xyes; then HAVE_DOXYGEN_TRUE= HAVE_DOXYGEN_FALSE='#' else HAVE_DOXYGEN_TRUE='#' HAVE_DOXYGEN_FALSE= fi have_doxygen_latex="no" if test "x${have_doxygen}" = xyes; then # Extract the first word of "dot", so it can be a program name with args. set dummy dot; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_have_dot+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$have_dot"; then ac_cv_prog_have_dot="$have_dot" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_have_dot="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_have_dot" && ac_cv_prog_have_dot="no" fi fi have_dot=$ac_cv_prog_have_dot if test -n "$have_dot"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_dot" >&5 $as_echo "$have_dot" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "pdflatex", so it can be a program name with args. set dummy pdflatex; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_have_pdflatex+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$have_pdflatex"; then ac_cv_prog_have_pdflatex="$have_pdflatex" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_have_pdflatex="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_have_pdflatex" && ac_cv_prog_have_pdflatex="no" fi fi have_pdflatex=$ac_cv_prog_have_pdflatex if test -n "$have_pdflatex"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_pdflatex" >&5 $as_echo "$have_pdflatex" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "makeindex", so it can be a program name with args. set dummy makeindex; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_have_makeindex+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$have_makeindex"; then ac_cv_prog_have_makeindex="$have_makeindex" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_have_makeindex="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_have_makeindex" && ac_cv_prog_have_makeindex="no" fi fi have_makeindex=$ac_cv_prog_have_makeindex if test -n "$have_makeindex"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_makeindex" >&5 $as_echo "$have_makeindex" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x${have_pdflatex}" = xyes && test "x${have_makeindex}" = xyes; then have_doxygen_latex="yes" fi fi if test "x${have_doxygen_latex}" = xyes; then HAVE_DOXYGEN_LATEX_TRUE= HAVE_DOXYGEN_LATEX_FALSE='#' else HAVE_DOXYGEN_LATEX_TRUE='#' HAVE_DOXYGEN_LATEX_FALSE= fi if test "x${ac_scorep_svn_controlled}" = "xyes"; then ac_config_files="$ac_config_files doc/doxygen-user-common.cfg:vendor/common/build_related/doxygen/doxygen-user-common.cfg.in" ac_config_files="$ac_config_files doc/doxygen-user-component.cfg:doc/doxygen-user/doxygen-user-component.cfg.in" ac_config_files="$ac_config_files doc/doxygen-dev.cfg:doc/doxygen-dev/doxygen-dev.cfg.in" fi # ac_scorep_doxygen_distdir may be passed in from upper level configure if test ! -n "$ac_scorep_doxygen_distdir"; then ac_scorep_doxygen_distdir="" fi ## Autoconf supports changing the names of programs when installing them. In ## order to use these transformations, configure.ac must call the macro ## AC_ARG_PROGRAM. # implicitly called by ? #AC_ARG_PROGRAM # used for EXTRA_DIST in Makefile.am if test "x${ac_scorep_cross_compiling}" = "xyes"; then CROSS_BUILD_TRUE= CROSS_BUILD_FALSE='#' else CROSS_BUILD_TRUE='#' CROSS_BUILD_FALSE= fi # handle external package's subdir configures #AC_CONFIG_SUBDIR_CUSTOM([vendor/otf2], [${args} ac_scorep_platform=${ac_scorep_platform} ac_scorep_platform_data_provided=yes ac_scorep_cross_compiling=${ac_scorep_cross_compiling}]) # handle own package's subdir configures # build a list of (directory,arguments) tuples that will be processed in _AC_OUTPUT_SUBDIRS if test -z "$custom_subdirs"; then custom_subdirs="custom_sub_configure_dir=\"build-frontend\";custom_sub_configure_args=\"${args} ac_scorep_platform=${ac_scorep_platform}\"" else custom_subdirs="$custom_subdirs|custom_sub_configure_dir=\"build-frontend\";custom_sub_configure_args=\"${args} ac_scorep_platform=${ac_scorep_platform}\"" fi # per default, enable --help=recursive in directory build-frontend. subdirs_custom="$subdirs_custom build-frontend" #sed is needed for check target { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed ac_config_files="$ac_config_files Makefile" ac_config_files="$ac_config_files test/c_test.sh" ac_config_files="$ac_config_files test/f90_test.sh" ac_config_files="$ac_config_files test/f77_test.sh" ac_config_files="$ac_config_files build-frontend/pomp2-parse-init-regions.awk:src/pomp-lib-dummy/pomp2_parse_init_regions.awk.in" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -z "${SVN_CONTROLLED_TRUE}" && test -z "${SVN_CONTROLLED_FALSE}"; then as_fn_error $? "conditional \"SVN_CONTROLLED\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_UNCRUSTIFY_TRUE}" && test -z "${HAVE_UNCRUSTIFY_FALSE}"; then as_fn_error $? "conditional \"HAVE_UNCRUSTIFY\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_DOXYGEN_TRUE}" && test -z "${HAVE_DOXYGEN_FALSE}"; then as_fn_error $? "conditional \"HAVE_DOXYGEN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_DOXYGEN_LATEX_TRUE}" && test -z "${HAVE_DOXYGEN_LATEX_FALSE}"; then as_fn_error $? "conditional \"HAVE_DOXYGEN_LATEX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CROSS_BUILD_TRUE}" && test -z "${CROSS_BUILD_FALSE}"; then as_fn_error $? "conditional \"CROSS_BUILD\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by opari2 $as_me 1.0.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ opari2 config.status 1.0.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "doc/doxygen-user-common.cfg") CONFIG_FILES="$CONFIG_FILES doc/doxygen-user-common.cfg:vendor/common/build_related/doxygen/doxygen-user-common.cfg.in" ;; "doc/doxygen-user-component.cfg") CONFIG_FILES="$CONFIG_FILES doc/doxygen-user-component.cfg:doc/doxygen-user/doxygen-user-component.cfg.in" ;; "doc/doxygen-dev.cfg") CONFIG_FILES="$CONFIG_FILES doc/doxygen-dev.cfg:doc/doxygen-dev/doxygen-dev.cfg.in" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "test/c_test.sh") CONFIG_FILES="$CONFIG_FILES test/c_test.sh" ;; "test/f90_test.sh") CONFIG_FILES="$CONFIG_FILES test/f90_test.sh" ;; "test/f77_test.sh") CONFIG_FILES="$CONFIG_FILES test/f77_test.sh" ;; "build-frontend/pomp2-parse-init-regions.awk") CONFIG_FILES="$CONFIG_FILES build-frontend/pomp2-parse-init-regions.awk:src/pomp-lib-dummy/pomp2_parse_init_regions.awk.in" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac case $ac_file$ac_mode in "test/c_test.sh":F) chmod +x test/c_test.sh ;; "test/f90_test.sh":F) chmod +x test/f90_test.sh ;; "test/f77_test.sh":F) chmod +x test/f77_test.sh ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi # # CONFIG_SUBDIRS section. # if test "$no_recursion" != yes; then ac_popdir=`pwd` # call configures in list $custom_subdirs with directory-specific arguments. OIFS=$IFS IFS='|' list=$custom_subdirs for dir_and_args in $list; do IFS=$OIFS eval $dir_and_args if test "x$custom_sub_configure_dir" = x; then continue; fi ac_custom_sub_configure_args= # Remove --cache-file, --srcdir, and --disable-option-checking arguments # so they do not pile up. ac_sub_configure_args= ac_prev= eval "set x $custom_sub_configure_args" shift for ac_arg do if test -n "$ac_prev"; then ac_prev= continue fi case $ac_arg in -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \ | --c=*) ;; --config-cache | -C) ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ;; --disable-option-checking) ;; *) case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_custom_sub_configure_args " '$ac_arg'" ;; esac done # Always prepend --prefix to ensure using the same prefix # in subdir configurations. ac_arg="--prefix=$prefix" case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac ac_custom_sub_configure_args="'$ac_arg' $ac_custom_sub_configure_args" # Pass --silent if test "$silent" = yes; then ac_custom_sub_configure_args="--silent $ac_custom_sub_configure_args" fi # Always prepend --disable-option-checking to silence warnings, since # different subdirs can have different --enable and --with options. ac_custom_sub_configure_args="--disable-option-checking $ac_custom_sub_configure_args" sub_configure_dir=$custom_sub_configure_dir sub_configure_args=$ac_custom_sub_configure_args # Do not complain, so a configure script can configure whichever # parts of a large source tree are present. test -d "$srcdir/$sub_configure_dir" || continue ac_msg="=== configuring in $sub_configure_dir (`pwd`/$sub_configure_dir)" $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5 $as_echo "$ac_msg" >&6 as_dir="$sub_configure_dir"; as_fn_mkdir_p ac_builddir=. case "$sub_configure_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$sub_configure_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$sub_configure_dir" # Check for guested configure; otherwise get Cygnus style configure. if test -f "$ac_srcdir/configure.gnu"; then ac_sub_configure=$ac_srcdir/configure.gnu elif test -f "$ac_srcdir/configure"; then ac_sub_configure=$ac_srcdir/configure elif test -f "$ac_srcdir/configure.in"; then # This should be Cygnus configure. ac_sub_configure=$ac_aux_dir/configure else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $sub_configure_dir" >&5 $as_echo "$as_me: WARNING: no configuration information is in $sub_configure_dir" >&2;} ac_sub_configure= fi # The recursion is here. if test -n "$ac_sub_configure"; then # Make the cache file name correct relative to the subdirectory. case $cache_file in [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; *) # Relative name. ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 $as_echo "$as_me: running $SHELL $ac_sub_configure $sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} # The eval makes quoting arguments work. eval "\$SHELL \"\$ac_sub_configure\" $sub_configure_args \ --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || as_fn_error $? "$ac_sub_configure failed for $sub_configure_dir" "$LINENO" 5 fi cd "$ac_popdir" IFS='|' done IFS=$OIFS # call configures in $subdirs with fixed arguments. ac_sub_configure_args= # Remove --cache-file, --srcdir, and --disable-option-checking arguments # so they do not pile up. ac_sub_configure_args= ac_prev= eval "set x $ac_configure_args" shift for ac_arg do if test -n "$ac_prev"; then ac_prev= continue fi case $ac_arg in -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \ | --c=*) ;; --config-cache | -C) ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ;; --disable-option-checking) ;; *) case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_sub_configure_args " '$ac_arg'" ;; esac done # Always prepend --prefix to ensure using the same prefix # in subdir configurations. ac_arg="--prefix=$prefix" case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" # Pass --silent if test "$silent" = yes; then ac_sub_configure_args="--silent $ac_sub_configure_args" fi # Always prepend --disable-option-checking to silence warnings, since # different subdirs can have different --enable and --with options. ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args" for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue echo "ac_dir(inside): $ac_dir" sub_configure_dir=$ac_dir sub_configure_args=$ac_sub_configure_args # Do not complain, so a configure script can configure whichever # parts of a large source tree are present. test -d "$srcdir/$sub_configure_dir" || continue ac_msg="=== configuring in $sub_configure_dir (`pwd`/$sub_configure_dir)" $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5 $as_echo "$ac_msg" >&6 as_dir="$sub_configure_dir"; as_fn_mkdir_p ac_builddir=. case "$sub_configure_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$sub_configure_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$sub_configure_dir" # Check for guested configure; otherwise get Cygnus style configure. if test -f "$ac_srcdir/configure.gnu"; then ac_sub_configure=$ac_srcdir/configure.gnu elif test -f "$ac_srcdir/configure"; then ac_sub_configure=$ac_srcdir/configure elif test -f "$ac_srcdir/configure.in"; then # This should be Cygnus configure. ac_sub_configure=$ac_aux_dir/configure else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $sub_configure_dir" >&5 $as_echo "$as_me: WARNING: no configuration information is in $sub_configure_dir" >&2;} ac_sub_configure= fi # The recursion is here. if test -n "$ac_sub_configure"; then # Make the cache file name correct relative to the subdirectory. case $cache_file in [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; *) # Relative name. ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 $as_echo "$as_me: running $SHELL $ac_sub_configure $sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} # The eval makes quoting arguments work. eval "\$SHELL \"\$ac_sub_configure\" $sub_configure_args \ --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || as_fn_error $? "$ac_sub_configure failed for $sub_configure_dir" "$LINENO" 5 fi cd "$ac_popdir" done fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi eztrace-1.1-7/extlib/opari2/PaxHeaders.7332/include0000644000000000000000000000013213171135477016671 xustar0030 mtime=1508162367.689903473 30 atime=1508162367.741908015 30 ctime=1508162367.689903473 eztrace-1.1-7/extlib/opari2/include/0000755000175000017500000000000013171135477020135 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/include/PaxHeaders.7332/opari20000644000000000000000000000013213171135477020065 xustar0030 mtime=1508162367.701904521 30 atime=1508162367.741908015 30 ctime=1508162367.701904521 eztrace-1.1-7/extlib/opari2/include/opari2/0000755000175000017500000000000013171135477021331 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/include/opari2/PaxHeaders.7332/pomp2_lib.h0000644000000000000000000000013212617055645022200 xustar0030 mtime=1446796197.914458076 30 atime=1508138876.687938201 30 ctime=1508162367.701904521 eztrace-1.1-7/extlib/opari2/include/opari2/pomp2_lib.h0000644000175000017500000005403612617055645023377 0ustar00trahaytrahay00000000000000/* * This file is part of the Score-P software (http://www.score-p.org) * * Copyright (c) 2009-2011, * RWTH Aachen University, Germany * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany * Technische Universitaet Dresden, Germany * University of Oregon, Eugene, USA * Forschungszentrum Juelich GmbH, Germany * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany * Technische Universitaet Muenchen, Germany * * See the COPYING file in the package base directory for details. * */ /**************************************************************************** ** SCALASCA http://www.scalasca.org/ ** ** KOJAK http://www.fz-juelich.de/jsc/kojak/ ** ***************************************************************************** ** Copyright (c) 1998-2009 ** ** Forschungszentrum Juelich, Juelich Supercomputing Centre ** ** ** ** See the file COPYRIGHT in the package base directory for details ** ****************************************************************************/ #ifndef POMP2_LIB_H #define POMP2_LIB_H #ifdef _OPENMP #include #endif #include #include #ifdef __cplusplus extern "C" { #endif /** @file pomp2_lib.h * @status alpha * * @authors Daniel Lorenz * Dirk Schmidl * Peter Philippen * * @brief This file contains the declarations of all * POMP2 functions. * */ /** Handles to identify OpenMP regions. */ typedef void* POMP2_Region_handle; typedef int64_t POMP2_Task_handle; /** @name Functions generated by the instrumenter */ /*@{*/ /** * Returns the number of instrumented regions.@n * The instrumenter scans all opari-created include files with nm and greps * the POMP2_INIT_uuid_numRegions() function calls. Here we return the sum of * all numRegions. * @return number of instrumented regions */ extern size_t POMP2_Get_num_regions(); /** * Init all opari-created regions.@n * The instrumentor scans all opari-created include files with nm and greps * the POMP2_INIT_uuid_numRegions() function calls. The instrumentor then * defines these functions by calling all grepped functions. */ extern void POMP2_Init_regions(); /** * Returns the opari version. * @return version string */ extern const char* POMP2_Get_opari2_version(); /*@}*/ /** Function that returns a new task handle. * @return new task handle */ extern POMP2_Task_handle POMP2_Get_new_task_handle(); /** Finalizes the POMP2 adapter. It is inserted at the #%pragma pomp inst end. */ extern void POMP2_Finalize(); /** Initializes the POMP2 adapter. It is inserted at the #%pragma pomp inst begin. */ extern void POMP2_Init(); /** Disables the POMP2 adapter. */ extern void POMP2_Off(); /** Enables the POMP2 adapter. */ extern void POMP2_On(); /** Called at the begin of a user defined POMP2 region. @param pomp2_handle The handle of the started region. */ extern void POMP2_Begin( POMP2_Region_handle* pomp2_handle ); /** Called at the begin of a user defined POMP2 region. @param pomp2_handle The handle of the started region. */ extern void POMP2_End( POMP2_Region_handle* pomp2_handle ); /** Registers a POMP2 region and returns a region handle. @param pomp2_handle Returns the handle for the newly registered region. @param ctc_string A string containing the region data. */ extern void POMP2_Assign_handle( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ); #ifdef _OPENMP /** Called before an atomic statement. @param pomp2_handle The handle of the started region. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Atomic_enter( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ); /** Called after an atomic statement. @param pomp2_handle The handle of the ended region. */ extern void POMP2_Atomic_exit( POMP2_Region_handle* pomp2_handle ); /** Called before a barrier. \n \e OpenMP \e 3.0: Barriers can be used as scheduling points for tasks. When entering a barrier the task id of the currently executing task (\e pomp2_current_task) is saved in \e pomp2_old_task, which is defined inside the instrumented user code. @param pomp2_handle The handle of the started region. @param pomp2_old_task Pointer to a "taskprivate" variable where the current task id is stored. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Barrier_enter( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle* pomp2_old_task, const char ctc_string[] ); /** Called after a barrier. \n \e OpenMP \e 3.0: When a task exits a barrier the variable \e pomp2_old_task (defined in the instrumented user code) holds the id of the task that entered the barrier. The value is stored in the adapter (in \e pomp2_current_task) to be made available for the measurement system for the following regions. @param pomp2_handle The handle of the ended region. @param pomp2_old_task "Taskprivate" variable storing the id of the task the barrier is located in. */ extern void POMP2_Barrier_exit( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_old_task ); /** Called before an implicit barrier. \e OpenMP \e 3.0: Barriers can be used as scheduling points for tasks. When entering a barrier the task id of the currently executing task (\e pomp2_current_task) is saved in \e pomp2_old_task, which is defined inside the instrumented user code. @param pomp2_handle The handle of the started region. @param pomp2_old_task Pointer to a "taskprivate" variable where the current task id is stored. */ extern void POMP2_Implicit_barrier_enter( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle* pomp2_old_task ); /** Called after an implicit barrier. \e OpenMP \e 3.0: When a task exits a barrier the variable \e pomp2_old_task (defined in the instrumented user code) holds the id of the task that entered the barrier. The value is stored in the adapter (in \e pomp2_current_task) to be made available for the measurement system for the following regions. @param pomp2_handle The handle of the started region. @param pomp2_old_task "Taskprivate" variable storing the id the task the implicit barrier is used in. */ extern void POMP2_Implicit_barrier_exit( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_old_task ); /** Called before an flush. @param pomp2_handle The handle of the started region. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Flush_enter( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ); /** Called after an flush. @param pomp2_handle The handle of the ended region. */ extern void POMP2_Flush_exit( POMP2_Region_handle* pomp2_handle ); /** Called at the start of a critical region. @param pomp2_handle The handle of the started region. */ extern void POMP2_Critical_begin( POMP2_Region_handle* pomp2_handle ); /** Called at the end of a critical region. @param pomp2_handle The handle of the ended region. */ extern void POMP2_Critical_end( POMP2_Region_handle* pomp2_handle ); /** Called before a critical region. @param pomp2_handle The handle of the started region. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Critical_enter( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ); /** Called after a critical region. @param pomp2_handle The handle of the region. */ extern void POMP2_Critical_exit( POMP2_Region_handle* pomp2_handle ); /** Called before a for loop. @param pomp2_handle The handle of the region. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_For_enter( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ); /** Called after a for loop. @param pomp2_handle The handle of the region. */ extern void POMP2_For_exit( POMP2_Region_handle* pomp2_handle ); /** Called at the start of a master region. @param pomp2_handle The handle of the region. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Master_begin( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ); /** Called at the end of a master region. @param pomp2_handle The handle of the ended region. */ extern void POMP2_Master_end( POMP2_Region_handle* pomp2_handle ); /** Called at the start of a parallel region. \e OpenMP \e 3.0: When a new parallel region is entered, each thread taking part in that region is executed as a task. These tasks are assigned a new unique task id which is stored in \e pomp2_current_task. @param pomp2_handle The handle of the region. */ extern void POMP2_Parallel_begin( POMP2_Region_handle* pomp2_handle ); /** Called at the end of a parallel region. @param pomp2_handle The handle of the region. */ extern void POMP2_Parallel_end( POMP2_Region_handle* pomp2_handle ); /** Called before a parallel region. \e OpenMP \e 3.0: The task id of the currently executing task (\e pomp2_current_task) is saved in \e pomp2_old_task, which is defined inside the instrumented user code. In each of the threads taking part in the following parallel region a newly defined unique task id is assigned (see \ref POMP2_Parallel_begin) @param pomp2_handle The handle of the region. @param if_clause Value of the argument of an if clause (if present). @param num_threads Upper bound for number of child threads. @param pomp2_old_task The task id of the region from which the parallel region was started. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Parallel_fork( POMP2_Region_handle* pomp2_handle, int if_clause, int num_threads, POMP2_Task_handle* pomp2_old_task, const char ctc_string[] ); /** Called after a parallel region. \e OpenMP \e 3.0: When a task exits a parallel region the variable \e pomp2_old_task (defined in the instrumented user code) holds the id of the task that entered the region. The value is stored in the adapter (in \e pomp2_current_task) to be made available for the measurement system for the following regions. @param pomp2_handle The handle of the region. @param pomp2_old_task The task id of the region inside of which the parallel region was executed. */ extern void POMP2_Parallel_join( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_old_task ); /** Called at the start of a section. @param pomp2_handle The handle of the region. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Section_begin( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ); /** Called at the end of a section. @param pomp2_handle The handle of the region. */ extern void POMP2_Section_end( POMP2_Region_handle* pomp2_handle ); /** Called before a set of sections. @param pomp2_handle The handle of the region. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Sections_enter( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ); /** Called after a set of sections. @param pomp2_handle The handle of the region. */ extern void POMP2_Sections_exit( POMP2_Region_handle* pomp2_handle ); /** Called at the start of a single region. @param pomp2_handle The handle of the region. */ extern void POMP2_Single_begin( POMP2_Region_handle* pomp2_handle ); /** Called at the end of a single region. @param pomp2_handle The handle of the region. */ extern void POMP2_Single_end( POMP2_Region_handle* pomp2_handle ); /** Called before a single region. @param pomp2_handle The handle of the region. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Single_enter( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ); /** Called after a single region. @param pomp2_handle The handle of the region. */ extern void POMP2_Single_exit( POMP2_Region_handle* pomp2_handle ); /** Called before a workshare region. @param pomp2_handle The handle of the region. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Workshare_enter( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ); /** Called after a workshare region. @param pomp2_handle The handle of the region. */ extern void POMP2_Workshare_exit( POMP2_Region_handle* pomp2_handle ); /** Called at the start of an ordered region. @param pomp2_handle The handle of the region. */ extern void POMP2_Ordered_begin( POMP2_Region_handle* pomp2_handle ); /** Called at the end of an ordered region. @param pomp2_handle The handle of the region. */ extern void POMP2_Ordered_end( POMP2_Region_handle* pomp2_handle ); /** Called before an ordered region. @param pomp2_handle The handle of the region. @param ctc_string Initialization string. Ignored. */ extern void POMP2_Ordered_enter( POMP2_Region_handle* pomp2_handle, const char ctc_string[] ); /** Called after an ordered region. @param pomp2_handle The handle of the region. */ extern void POMP2_Ordered_exit( POMP2_Region_handle* pomp2_handle ); /** \e OpenMP \e 3.0: When a task encounters a task construct it creates a new task. The task may be scheduled for later execution or executed immediately. In both cases the pomp-adapter assigns the id of the currently active task to \e pomp2_old_task which is defined in the instrumented user code. @param pomp2_handle The handle of the region. @param pomp2_old_task Pointer to the task id in the instrumented user code @param pomp2_if If an if clause is present on the task directive this variable holds the evaluated result of the argument of the if clause. Else it is 1. @param ctc_string The initialization string. */ extern void POMP2_Task_create_begin( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle* pomp2_new_task, POMP2_Task_handle* pomp2_old_task, int pomp2_if, const char ctc_string[] ); /** \e OpenMP \e 3.0: After the code region which is executed as a separate task, the task id of the creating task is restored from \e pomp2_old_task (defined in the instrumented user code) and stored in \e pomp2_current_task inside the adapter. @param pomp2_handle The region handle. @param pomp2_old_task The task id of the task inside of which the task was created. This is stored inside the instrumented user code. */ extern void POMP2_Task_create_end( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_old_task ); /** \e OpenMP \e 3.0: Marks the beginning of the execution of a task. @param pomp2_handle The region handle. @param pomp2_task handle of task. */ extern void POMP2_Task_begin( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_task ); /** \e OpenMP \e 3.0: Marks the end of the execution of a task. @param pomp2_handle The region handle. */ extern void POMP2_Task_end( POMP2_Region_handle* pomp2_handle ); /** \e OpenMP \e 3.0: When a task encounters a task construct it creates a new task. If the untied clause is specified the task is executed as an untied task. The task may be scheduled for later execution or executed immediately. In both cases the pomp-adapter assigns the id of the currently active task to \e pomp2_old_task which is defined in the instrumented user code. @param pomp2_handle The handle of the region. @param pomp2_old_task Pointer to the task id in the instrumented user code. @param pomp2_if If an if clause is present on the task directive this variable holds the evaluated result of the argument of the if clause. Else it is 1. @param ctc_string The initialization string. */ extern void POMP2_Untied_task_create_begin( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle* pomp2_new_task, POMP2_Task_handle* pomp2_old_task, int pomp2_if, const char ctc_string[] ); /** \e OpenMP \e 3.0: After the code region which is executed as a separate untied task, the task id of the creating task is restored from \e pomp2_old_task (defined in the instrumented user code) and stored in \e pomp2_current_task inside the adapter. @param pomp2_handle The region handle. @param pomp2_old_task The id of the task from which the untied task was created. This is stored in the instrumented user code. */ extern void POMP2_Untied_task_create_end( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_old_task ); /** \e OpenMp \e 3.0: Marks the beginning of the execution of an untied task. @param pomp2_handle The region handle. @param pomp2_task Handle of this task. */ void POMP2_Untied_task_begin( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_task ); /** \e OpenMP \e 3.0: Marks the end of the execution of a task. @param pomp2_handle The region handle. */ extern void POMP2_Untied_task_end( POMP2_Region_handle* pomp2_handle ); /** Called before a taskwait. \n \e OpenMP \e 3.0: Taskwait directives can be used as scheduling points for tasks. When entering a taskwait region the task id of the currently executing task (\e pomp2_current_task) is saved in \e pomp2_old_task, which is defined inside the instrumented user code. @param pomp2_handle The handle of the started region. @param pomp2_old_task Pointer to a "taskprivate" variable where the current task id is stored. @param ctc_string Initialization string. May be ignored if \ is already initialized. */ extern void POMP2_Taskwait_begin( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle* pomp2_old_task, const char ctc_string[] ); /** Called after a barrier. \n \e OpenMP \e 3.0: When a task exits a taskwait region the variable \e pomp2_old_task (defined in the instrumented user code) holds the id of the task that entered the taskwait. The value is stored in the adapter (in \e pomp2_current_task) to be made available for the measurement system for the following regions. @param pomp2_handle The handle of the ended region. @param pomp2_old_task "Taskprivate" variable storing the id of the task the barrier is located in. */ extern void POMP2_Taskwait_end( POMP2_Region_handle* pomp2_handle, POMP2_Task_handle pomp2_old_task ); /** Wraps the omp_get_max_threads function. * * Needed for the instrumentation of parallel regions * where the num_threads clause is used with the return * value of the omp_get_max_threads function. This can't * be used directly because the user may have declared * it himself. Double declarations are not allowed. */ extern int POMP2_Lib_get_max_threads(); /** Wraps the omp_init_lock function. * @param s The OpenMP lock to initialize.*/ extern void POMP2_Init_lock( omp_lock_t* s ); /** Wraps the omp_destroy_lock function. * @param s The OpenMP lock to destroy. */ extern void POMP2_Destroy_lock( omp_lock_t* s ); /** Wraps the omp_set_lock function. * @param s The OpenMP lock to set. */ extern void POMP2_Set_lock( omp_lock_t* s ); /** Wraps the omp_unset_lock function. * @param s the OpenMP lock to unset. */ extern void POMP2_Unset_lock( omp_lock_t* s ); /** Wraps the omp_test_lock function * @param s the OpenMP lock to test for. * @return result of omp_test_lock*/ extern int POMP2_Test_lock( omp_lock_t* s ); /** Wraps the omp_init_nest_lock function. * @param s The nested OpenMP lock to initialize. */ extern void POMP2_Init_nest_lock( omp_nest_lock_t* s ); /** Wraps the omp_destroy_nest_lock function. * @param s The nested OpenMP lock to destroy. */ extern void POMP2_Destroy_nest_lock( omp_nest_lock_t* s ); /** Wraps the omp_set_nest_lock function * @param s The nested OpenMP lock to set.*/ extern void POMP2_Set_nest_lock( omp_nest_lock_t* s ); /** Wraps the omp_unset_nest_lock function * @param s The nested OpenMP lock to unset.*/ extern void POMP2_Unset_nest_lock( omp_nest_lock_t* s ); /** Wraps the omp_test_nest_lock function * @param s The nested OpenMP lock to test for. * @return result of omp_test_nest_lock*/ extern int POMP2_Test_nest_lock( omp_nest_lock_t* s ); #endif /* _OPENMP */ #ifdef __cplusplus } #endif #endif eztrace-1.1-7/extlib/opari2/PaxHeaders.7332/COPYING0000644000000000000000000000013212617055645016360 xustar0030 mtime=1446796197.894457451 30 atime=1507797543.866890219 30 ctime=1508162367.317870982 eztrace-1.1-7/extlib/opari2/COPYING0000644000175000017500000000407712617055645017557 0ustar00trahaytrahay00000000000000Copyright (c) 2009-2011, RWTH Aachen University, Germany Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany Technische Universitaet Dresden, Germany University of Oregon, Eugene, USA Forschungszentrum Juelich GmbH, Germany German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany Technische Universitaet Muenchen, Germany All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of RWTH Aachen University, Gesellschaft fuer numerische Simulation mbH Braunschweig, Technische Universitaet Dresden, University of Oregon, Eugene, Forschungszentrum Juelich GmbH, German Research School for Simulation Sciences GmbH, or the Technische Universitaet Muenchen, nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. eztrace-1.1-7/extlib/opari2/PaxHeaders.7332/ChangeLog0000644000000000000000000000013212617055645017077 xustar0030 mtime=1446796197.894457451 30 atime=1507797543.866890219 30 ctime=1508162367.321871332 eztrace-1.1-7/extlib/opari2/ChangeLog0000644000175000017500000000204412617055645020266 0ustar00trahaytrahay00000000000000------------------- Released version 1.0.2 --------------------------- - Renaming of the configure related variable LD_FLAGS_FOR_BUILD to LDFLAGS_FOR_BUILD for consistency. - Renaming of the installed script pomp2_parse_init_regions.awk to pomp2-parse-init-regions.awk for consistency. - In Fortran, improved parsing of function and subroutine keywords. - In in-place builds, the [dist]clean targets accidentially removed files. - Create task events only for tasks that actually get created. - In Fortran, added `integer ( kind=4 )' to all integer variables instrumented by opari2. - In Fortran, continuation lines ending with comments were not detected as continuation lines (Ticket 77). ------------------- Released version 1.0.1 --------------------------- - In Fortran, continued format descriptors resulted in invalid include of the opari.inc file (Ticket 76). - In Fortran, rename lists resulted in premature include of the opari.inc file (Ticket 75). ------------------- Released version 1.0 ----------------------------- eztrace-1.1-7/extlib/opari2/PaxHeaders.7332/build-frontend0000644000000000000000000000013213171135477020162 xustar0030 mtime=1508162367.733907316 30 atime=1508162367.741908015 30 ctime=1508162367.733907316 eztrace-1.1-7/extlib/opari2/build-frontend/0000755000175000017500000000000013171135477021426 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/opari2/build-frontend/PaxHeaders.7332/aclocal.m40000644000000000000000000000013113171135235022066 xustar0030 mtime=1508162205.136760835 30 atime=1508162205.232767657 29 ctime=1508162367.64589963 eztrace-1.1-7/extlib/opari2/build-frontend/aclocal.m40000644000175000017500000012424713171135235023270 0ustar00trahaytrahay00000000000000# generated automatically by aclocal 1.15.1 -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.15.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.15.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([../vendor/common/build-config/m4/ac_opari_common_checks.m4]) m4_include([../vendor/common/build-config/m4/ac_scorep_compiler_and_flags.m4]) m4_include([../vendor/common/build-config/m4/ac_scorep_compiler_checks.m4]) m4_include([../vendor/common/build-config/m4/ac_scorep_fortran_checks.m4]) m4_include([../vendor/common/build-config/m4/ac_scorep_svn_controlled.m4]) m4_include([../vendor/common/build-config/m4/ac_scorep_sys_detection.m4]) m4_include([../vendor/common/build-config/m4/ac_scorep_version_and_revision.m4]) m4_include([../vendor/common/build-config/m4/ah_scorep_config_header_custom.m4]) m4_include([../vendor/common/build-config/m4/libtool.m4]) m4_include([../vendor/common/build-config/m4/ltoptions.m4]) m4_include([../vendor/common/build-config/m4/ltsugar.m4]) m4_include([../vendor/common/build-config/m4/ltversion.m4]) m4_include([../vendor/common/build-config/m4/lt~obsolete.m4]) m4_include([../vendor/common/build-config/m4/scorep_c.m4]) m4_include([../vendor/common/build-config/m4/status.m4]) eztrace-1.1-7/extlib/opari2/build-frontend/PaxHeaders.7332/configure.ac0000644000000000000000000000013113012560437022514 xustar0030 mtime=1479205151.272727014 29 atime=1508162200.30842026 30 ctime=1508162367.641899281 eztrace-1.1-7/extlib/opari2/build-frontend/configure.ac0000644000175000017500000000327213012560437023710 0ustar00trahaytrahay00000000000000AC_PREREQ([2.68]) AC_INIT([opari2], m4_esyscmd_s([../vendor/common/build-config/generate-package-version.sh ../build-config/VERSION]), [scorep-bugs@groups.tu-dresden.de]) AC_SUBST([LIBRARY_INTERFACE_VERSION], m4_esyscmd_s([../vendor/common/build-config/generate-library-version.sh ../build-config/VERSION])) ac_scorep_frontend="yes" ac_scorep_backend="no" AC_SCOREP_PRECIOUS_VARS_FOR_BUILD AC_SCOREP_OPARI2_FOR_BUILD_ARGS_TAKES_PRECEDENCE AC_SCOREP_CHECK_COMPILER_VAR_SET([CC]) AC_SCOREP_CHECK_COMPILER_VAR_SET([CXX]) AC_SCOREP_CHECK_COMPILER_VAR_SET([F77]) AC_SCOREP_CHECK_COMPILER_VAR_SET([FC]) #AC_SCOREP_CONVERT_FLAGS([CFLAGS]) #AC_SCOREP_CONVERT_FLAGS([CXXFLAGS]) #AC_SCOREP_CONVERT_FLAGS([CPPFLAGS]) #AC_SCOREP_CONVERT_COMPILER([CC]) #AC_SCOREP_CONVERT_COMPILER([CXX]) AC_SCOREP_SVN_CONTROLLED AH_SCOREP_CONFIG_HEADER_CUSTOM AC_CONFIG_HEADERS([../src/config-frontend.h]) AC_CONFIG_AUX_DIR([../build-config]) AC_CONFIG_MACRO_DIR([../vendor/common/build-config/m4]) AM_INIT_AUTOMAKE([foreign color-tests 1.11.1 -Wall tar-pax]) AM_SILENT_RULES([yes]) AM_CONDITIONAL([BUILD_TESTS], [test 1 -eq 1]) AC_SCOREP_PLATFORM_SETTINGS AC_OPARI_COMMON_CHECKS LT_PREREQ([2.4]) LT_INIT([disable-shared]) AC_SUBST([LIBTOOL_DEPS]) AC_CONFIG_FILES([Makefile]) AC_CONFIG_FILES([../test/jacobi_c_test.sh], [chmod +x ../test/jacobi_c_test.sh]) AC_CONFIG_FILES([../test/jacobi_c++_test.sh], [chmod +x ../test/jacobi_c++_test.sh]) AC_CONFIG_FILES([../test/jacobi_f90_test.sh], [chmod +x ../test/jacobi_f90_test.sh]) AC_CONFIG_FILES([../test/jacobi_f77_test.sh], [chmod +x ../test/jacobi_f77_test.sh]) AC_CONFIG_FILES([../doc/example/Makefile]) AC_CONFIG_FILES([../doc/example_user_instrumentation/Makefile]) AC_OUTPUT eztrace-1.1-7/extlib/opari2/build-frontend/PaxHeaders.7332/opari2_usage.h0000644000000000000000000000013113171135416022760 xustar0029 mtime=1508162318.84970542 30 atime=1508162319.277741545 30 ctime=1508162367.733907316 eztrace-1.1-7/extlib/opari2/build-frontend/opari2_usage.h0000644000175000017500000001072213171135416024152 0ustar00trahaytrahay00000000000000"Usage: opari2 [OPTION] ... infile [outfile]\n" " \n" "with following options and parameters:\n" "\n" "[--f77|--f90|--c|--c++] [OPTIONAL] Specifies the programming language\n" " of the input source file. This option is only\n" " necessary if the automatic language detection\n" " based on the input file suffix fails.\n" "\n" "[--nosrc] [OPTIONAL] If specified, OPARI2 does not\n" " generate #line constructs, which allow to\n" " preserve the original source file and line\n" " number information, in the transformation\n" " process. This option might be necessary if\n" " the OpenMP compiler does not understand #line\n" " constructs. The default is to generate #line\n" " constructs.\n" "\n" "[--nodecl] [OPTIONAL] Disables the generation of \n" " POMP2_DLISTXXXXX macros. These are used in the\n" " parallel directives of the instrumentation to \n" " make the region handles shared. By using this\n" " option the shared clause is used directly on\n" " the parallel directive with the resprective\n" " region handles.\n" "\n" "[--tpd] [OPTIONAL] Adds the clause 'copyin()'\n" " to any parallel construct. This allows to\n" " pass data from the creating thread to its\n" " children. The variable is declared externally\n" " in all files, so it needs to be defined by\n" " the pomp library.\n" "\n" "[--disable=] [OPTIONAL] Disable the instrumentation of\n" " manually-annotated POMP regions or the\n" " more fine-grained OpenMP constructs such as\n" " !$OMP ATOMIC. is a comma\n" " separated list of the constructs for which\n" " the instrumentation should be disabled.\n" " Accepted tokens are atomic, critical, master,\n" " flush, single, ordered or locks (as well as \n" " sync to disable all of them) or regions.\n" "\n" "[--task= Special treatment for the task directive\n" " abort|warn|remove] abort: Stop instrumentation with an error\n" " message when encountering a task\n" " directive.\n" " warn: Resume but print a warning.\n" " remove: Remove all task directives.\n" "\n" "[--untied= Special treatment for the untied task attribute.\n" " abort|keep|no-warn] The default beavior is to remove the untied\n" " attribute, thus making all tasks tied, and print\n" " out a warning.\n" " abort: Stop instrumentation with an error\n" " message when encountering a task \n" " directive with the untied attribute.\n" " keep: Do not remove the untied attribute.\n" " no-warn: Do not print out a warning.\n" "\n" "[--tpd-mangling= [OPTIONAL] If programming languages are mixed\n" " gnu|intel|sun|pgi| (C and Fortran), the needs to use\n" " ibm|cray] the Fortran mangled name also in C files.\n" " This option specifies to use the mangling\n" " scheme of the gnu, intel, sun, pgi or ibm\n" " compiler. The default is to use the mangling\n" " scheme of the compiler used to build opari2.\n" "\n" "[--version] [OPTIONAL] Prints version information.\n" "\n" "[--help] [OPTIONAL] Prints this help text.\n" "\n" "infile Input file name.\n" "\n" "[outfile] [OPTIONAL] Output file name. If not\n" " specified, opari2 uses the name\n" " infile.mod.suffix if the input file is\n" " called infile.suffix.\n" "\n" "Report bugs to .\n" eztrace-1.1-7/extlib/opari2/build-frontend/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212617055645022275 xustar0030 mtime=1446796197.894457451 30 atime=1508162200.316420822 30 ctime=1508162367.649899979 eztrace-1.1-7/extlib/opari2/build-frontend/Makefile.am0000644000175000017500000001043212617055645023464 0ustar00trahaytrahay00000000000000## -*- mode: makefile -*- ## ## This file is part of the Score-P software (http://www.score-p.org) ## ## Copyright (c) 2009-2011, ## RWTH Aachen, Germany ## Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany ## Technische Universitaet Dresden, Germany ## University of Oregon, Eugene, USA ## Forschungszentrum Juelich GmbH, Germany ## German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany ## Technische Universitaet Muenchen, Germany ## ## See the COPYING file in the package base directory for details. ## ## file build-frontend/Makefile.am ## maintainer Christian Roessel ## ACLOCAL_AMFLAGS contains options to pass to aclocal when aclocal.m4 ## is to be rebuilt by make. This line is also used by autoreconf to ## run aclocal with suitable options, or by autopoint and gettextize ## to locate the place where Gettext's macros should be installed. So ## even if you do not really care about the rebuild rules, you should ## define ACLOCAL_AMFLAGS. ## For some reason this can't be moved to common.am. ACLOCAL_AMFLAGS = -I ../vendor/common/build-config/m4 include ../build-includes/common.am AM_CPPFLAGS += -DFRONTEND_BUILD -DCROSS_BUILD include ../build-includes/frontend-only.am CONFIG_HEADER_FRONTEND = ../src/opari2_config_tool_frontend.h clean-local: rm -rf ../test/jacobi rm -f $(CONFIG_HEADER_FRONTEND) $(builddir)/opari2_config.dat create-config-tool-headers: $(CONFIG_HEADER_FRONTEND) $(CONFIG_HEADER_FRONTEND): $(builddir)/opari2_config.dat $(AM_V_GEN)( \ echo "#define NM \"$(NM)\""; \ echo "#define AWK \"$(AWK)\""; \ echo "#define SCRIPT \"$(prefix)/bin/pomp2-parse-init-regions.awk\""; \ echo "#define EGREP \"$(EGREP)\""; \ echo "#define VERSION \"$(PACKAGE_VERSION)\""; \ echo "#define POMP2_API_VERSION \"$(LIBRARY_INTERFACE_VERSION)\""; \ echo "#define CFLAGS \"-I$(prefix)/include\""; \ ) >$@ $(builddir)/opari2_config.dat: $(AM_V_GEN)( \ echo NM=\"$(NM)\"; \ echo AWK=\"$(AWK)\"; \ echo OPARI_SCRIPT=\"$(PWD)/../build-frontend/pomp2-parse-init-regions.awk\"; \ echo VERSION=\"$(PACKAGE_VERSION)\"; \ echo EGREP=\"$(EGREP)\"; \ echo CFLAGS=\"-I$(abs_srcdir)/../include\"; \ ) >$@ if SCOREP_HAVE_F77 if OPENMP_SUPPORTED installcheck-local: @$(am__cd) $(DESTDIR)$(docdir)/example/ && $(MAKE) $(AM_MAKEFLAGS) @$(am__cd) $(DESTDIR)$(docdir)/example_user_instrumentation/ && $(MAKE) $(AM_MAKEFLAGS) endif else if OPENMP_SUPPORTED installcheck-local: @$(am__cd) $(DESTDIR)$(docdir)/doc/example/ && $(MAKE) $(AM_MAKEFLAGS) c @$(am__cd) $(DESTDIR)$(docdir)/doc/example_user_instrumentation/ && $(MAKE) $(AM_MAKEFLAGS) c endif endif if OPENMP_SUPPORTED install-example: $(MKDIR_P) $(DESTDIR)$(docdir)/example $(INSTALL_DATA) $(abs_srcdir)/../doc/example/example.* $(DESTDIR)$(docdir)/example/ $(INSTALL_DATA) $(abs_srcdir)/../include/opari2/pomp2_lib.h $(DESTDIR)$(docdir)/example/ $(INSTALL_DATA) $(abs_builddir)/../doc/example/Makefile $(DESTDIR)$(docdir)/example/ $(INSTALL_DATA) $(abs_builddir)/../build-frontend/.libs/libpomp.* $(DESTDIR)$(docdir)/example/ rm -f $(DESTDIR)$(docdir)/example/libpomp.la $(MKDIR_P) $(DESTDIR)$(docdir)/example_user_instrumentation $(INSTALL_DATA) $(abs_srcdir)/../doc/example_user_instrumentation/example_user_instrumentation.* $(DESTDIR)$(docdir)/example_user_instrumentation/ $(INSTALL_DATA) $(abs_srcdir)/../include/opari2/pomp2_lib.h $(DESTDIR)$(docdir)/example_user_instrumentation/ $(INSTALL_DATA) $(abs_builddir)/../doc/example_user_instrumentation/Makefile $(DESTDIR)$(docdir)/example_user_instrumentation/ $(INSTALL_DATA) $(abs_builddir)/../build-frontend/.libs/libpomp.* $(DESTDIR)$(docdir)/example_user_instrumentation/ rm -f $(DESTDIR)$(docdir)/example_user_instrumentation/libpomp.la else install-example: endif install-pomp2_region_info: $(MKDIR_P) $(DESTDIR)$(datadir)/@PACKAGE_NAME@/devel $(INSTALL_DATA) $(abs_srcdir)/../src/pomp-lib-dummy/pomp2_region_info.c $(DESTDIR)$(datadir)/@PACKAGE_NAME@/devel/ $(INSTALL_DATA) $(abs_srcdir)/../src/pomp-lib-dummy/pomp2_region_info.h $(DESTDIR)$(datadir)/@PACKAGE_NAME@/devel/ install-data-local: install-example install-pomp2_region_info eztrace-1.1-7/extlib/opari2/build-frontend/PaxHeaders.7332/Makefile.in0000644000000000000000000000013113171135236022274 xustar0030 mtime=1508162206.748875492 29 atime=1508162292.55551382 30 ctime=1508162367.649899979 eztrace-1.1-7/extlib/opari2/build-frontend/Makefile.in0000644000175000017500000027652513171135236023505 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- mode: makefile -*- # -*- mode: makefile -*- # This file is part of the Score-P software (http://www.score-p.org) # # Copyright (c) 2009-2011, # * RWTH Aachen University, Germany # * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany # * Technische Universitaet Dresden, Germany # * University of Oregon, Eugene, USA # * Forschungszentrum Juelich GmbH, Germany # * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany # * Technische Universitaet Muenchen, Germany # # See the COPYING file in the package base directory for details. #check_PROGRAMS += VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = opari2$(EXEEXT) opari2-config$(EXEEXT) noinst_PROGRAMS = $(am__EXEEXT_1) check_PROGRAMS = XFAIL_TESTS = @OPENMP_SUPPORTED_TRUE@am__append_1 = libpomp.la @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@am__append_2 = \ @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@ $(SRC_ROOT)src/pomp-lib-dummy/pomp2_fwrapper.c \ @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@ $(SRC_ROOT)src/pomp-lib-dummy/pomp2_fwrapper_base.c \ @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@ $(SRC_ROOT)src/pomp-lib-dummy/pomp2_fwrapper_base.h @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@am__append_3 = pomp2_fwrapper_def.h @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@am__append_4 = pomp2_fwrapper_def.h @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@am__append_5 = getfname @OPENMP_SUPPORTED_TRUE@am__append_6 = $(SRC_ROOT)src/pomp-lib-dummy/pomp2_parse_init_regions.awk.in @OPENMP_SUPPORTED_TRUE@am__append_7 = \ @OPENMP_SUPPORTED_TRUE@ $(SRC_ROOT)test/jacobi_c_test.sh \ @OPENMP_SUPPORTED_TRUE@ $(SRC_ROOT)test/jacobi_c++_test.sh @FORTRAN_SUPPORT_ALLOCATABLE_TRUE@@OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_FC_TRUE@am__append_8 = $(SRC_ROOT)test/jacobi_f90_test.sh @FORTRAN_SUPPORT_ALLOCATABLE_TRUE@@OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@am__append_9 = $(SRC_ROOT)test/jacobi_f77_test.sh subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../vendor/common/build-config/m4/ac_opari_common_checks.m4 \ $(top_srcdir)/../vendor/common/build-config/m4/ac_scorep_compiler_and_flags.m4 \ $(top_srcdir)/../vendor/common/build-config/m4/ac_scorep_compiler_checks.m4 \ $(top_srcdir)/../vendor/common/build-config/m4/ac_scorep_fortran_checks.m4 \ $(top_srcdir)/../vendor/common/build-config/m4/ac_scorep_svn_controlled.m4 \ $(top_srcdir)/../vendor/common/build-config/m4/ac_scorep_sys_detection.m4 \ $(top_srcdir)/../vendor/common/build-config/m4/ac_scorep_version_and_revision.m4 \ $(top_srcdir)/../vendor/common/build-config/m4/ah_scorep_config_header_custom.m4 \ $(top_srcdir)/../vendor/common/build-config/m4/libtool.m4 \ $(top_srcdir)/../vendor/common/build-config/m4/ltoptions.m4 \ $(top_srcdir)/../vendor/common/build-config/m4/ltsugar.m4 \ $(top_srcdir)/../vendor/common/build-config/m4/ltversion.m4 \ $(top_srcdir)/../vendor/common/build-config/m4/lt~obsolete.m4 \ $(top_srcdir)/../vendor/common/build-config/m4/scorep_c.m4 \ $(top_srcdir)/../vendor/common/build-config/m4/status.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(dist_bin_SCRIPTS) \ $(nobase_include_HEADERS) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/../src/config-frontend.h CONFIG_CLEAN_FILES = ../test/jacobi_c_test.sh \ ../test/jacobi_c++_test.sh ../test/jacobi_f90_test.sh \ ../test/jacobi_f77_test.sh ../doc/example/Makefile \ ../doc/example_user_instrumentation/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ "$(DESTDIR)$(bindir)" "$(DESTDIR)$(includedir)" LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES) libpomp_la_LIBADD = am__libpomp_la_SOURCES_DIST = \ $(SRC_ROOT)src/pomp-lib-dummy/pomp2_lib.c \ $(PUBLIC_INC_SRC)pomp2_lib.h \ $(SRC_ROOT)src/pomp-lib-dummy/pomp2_region_info.c \ $(SRC_ROOT)src/pomp-lib-dummy/pomp2_region_info.h \ $(SRC_ROOT)src/pomp-lib-dummy/pomp2_fwrapper.c \ $(SRC_ROOT)src/pomp-lib-dummy/pomp2_fwrapper_base.c \ $(SRC_ROOT)src/pomp-lib-dummy/pomp2_fwrapper_base.h @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@am__objects_1 = libpomp_la-pomp2_fwrapper.lo \ @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@ libpomp_la-pomp2_fwrapper_base.lo @OPENMP_SUPPORTED_TRUE@am_libpomp_la_OBJECTS = \ @OPENMP_SUPPORTED_TRUE@ libpomp_la-pomp2_lib.lo \ @OPENMP_SUPPORTED_TRUE@ libpomp_la-pomp2_region_info.lo \ @OPENMP_SUPPORTED_TRUE@ $(am__objects_1) libpomp_la_OBJECTS = $(am_libpomp_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libpomp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libpomp_la_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ @OPENMP_SUPPORTED_TRUE@am_libpomp_la_rpath = @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@am__EXEEXT_1 = getfname$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) am__getfname_SOURCES_DIST = $(SRC_ROOT)src/pomp-lib-dummy/foos.c \ $(SRC_ROOT)src/pomp-lib-dummy/getfname.f @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@am_getfname_OBJECTS = \ @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@ foos.$(OBJEXT) \ @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@ getfname.$(OBJEXT) getfname_OBJECTS = $(am_getfname_OBJECTS) getfname_LDADD = $(LDADD) am_opari2_OBJECTS = opari2-handler.$(OBJEXT) opari2-ompragma.$(OBJEXT) \ opari2-ompragma_c.$(OBJEXT) opari2-ompragma_f.$(OBJEXT) \ opari2-ompregion.$(OBJEXT) opari2-opari2.$(OBJEXT) \ opari2-process_c.$(OBJEXT) opari2-process_f.$(OBJEXT) \ opari2-process_omp.$(OBJEXT) opari2_OBJECTS = $(am_opari2_OBJECTS) opari2_LDADD = $(LDADD) am_opari2_config_OBJECTS = opari2_config.$(OBJEXT) opari2_config_OBJECTS = $(am_opari2_config_OBJECTS) opari2_config_LDADD = $(LDADD) SCRIPTS = $(dist_bin_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/../src depcomp = $(SHELL) $(top_srcdir)/../build-config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS) LTF77COMPILE = $(LIBTOOL) $(AM_V_lt) --tag=F77 $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(F77) $(AM_FFLAGS) $(FFLAGS) AM_V_F77 = $(am__v_F77_@AM_V@) am__v_F77_ = $(am__v_F77_@AM_DEFAULT_V@) am__v_F77_0 = @echo " F77 " $@; am__v_F77_1 = F77LD = $(F77) F77LINK = $(LIBTOOL) $(AM_V_lt) --tag=F77 $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(F77LD) $(AM_FFLAGS) $(FFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_F77LD = $(am__v_F77LD_@AM_V@) am__v_F77LD_ = $(am__v_F77LD_@AM_DEFAULT_V@) am__v_F77LD_0 = @echo " F77LD " $@; am__v_F77LD_1 = SOURCES = $(libpomp_la_SOURCES) $(getfname_SOURCES) $(opari2_SOURCES) \ $(opari2_config_SOURCES) DIST_SOURCES = $(am__libpomp_la_SOURCES_DIST) \ $(am__getfname_SOURCES_DIST) $(opari2_SOURCES) \ $(opari2_config_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(nobase_include_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope AM_RECURSIVE_TARGETS = cscope check recheck am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/../build-config/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/../build-config/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) am__DIST_COMMON = $(srcdir)/../build-includes/common.am \ $(srcdir)/../build-includes/frontend-only.am \ $(srcdir)/../src/opari/Makefile.inc.am \ $(srcdir)/../src/pomp-lib-dummy/Makefile.inc.am \ $(srcdir)/../test/Makefile.inc.am \ $(srcdir)/../vendor/common/build-config/common.am \ $(srcdir)/Makefile.in $(top_srcdir)/../build-config/compile \ $(top_srcdir)/../build-config/config.guess \ $(top_srcdir)/../build-config/config.sub \ $(top_srcdir)/../build-config/depcomp \ $(top_srcdir)/../build-config/install-sh \ $(top_srcdir)/../build-config/ltmain.sh \ $(top_srcdir)/../build-config/missing \ $(top_srcdir)/../build-config/test-driver \ $(top_srcdir)/../doc/example/Makefile.in \ $(top_srcdir)/../doc/example_user_instrumentation/Makefile.in \ $(top_srcdir)/../src/config-frontend.h.in \ $(top_srcdir)/../test/jacobi_c++_test.sh.in \ $(top_srcdir)/../test/jacobi_c_test.sh.in \ $(top_srcdir)/../test/jacobi_f77_test.sh.in \ $(top_srcdir)/../test/jacobi_f90_test.sh.in \ ../build-config/compile ../build-config/config.guess \ ../build-config/config.sub ../build-config/depcomp \ ../build-config/install-sh ../build-config/ltmain.sh \ ../build-config/missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@ CXX_FOR_BUILD = @CXX_FOR_BUILD@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ F77_FOR_BUILD = @F77_FOR_BUILD@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_FOR_BUILD = @FCFLAGS_FOR_BUILD@ FC_FOR_BUILD = @FC_FOR_BUILD@ FFLAGS = @FFLAGS@ FFLAGS_FOR_BUILD = @FFLAGS_FOR_BUILD@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LIBOBJS = @LIBOBJS@ LIBRARY_INTERFACE_VERSION = @LIBRARY_INTERFACE_VERSION@ LIBS = @LIBS@ LIBS_FOR_BUILD = @LIBS_FOR_BUILD@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENMP_CFLAGS = @OPENMP_CFLAGS@ OPENMP_CXXFLAGS = @OPENMP_CXXFLAGS@ OPENMP_FCFLAGS = @OPENMP_FCFLAGS@ OPENMP_FFLAGS = @OPENMP_FFLAGS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I ../vendor/common/build-config/m4 AM_CPPFLAGS = -I$(srcdir)/../src -DFRONTEND_BUILD -DCROSS_BUILD SRC_ROOT = ../ INC_ROOT = $(srcdir)/../ PUBLIC_INC_DIR = $(INC_ROOT)include LIB_ROOT = lib_LTLIBRARIES = noinst_LTLIBRARIES = $(am__append_1) nobase_include_HEADERS = $(PUBLIC_INC_SRC)pomp2_lib.h BUILT_SOURCES = create-config-tool-headers opari2_usage.h \ $(am__append_3) CLEANFILES = opari2_usage.h $(am__append_4) DISTCLEANFILES = $(builddir)/config.summary EXTRA_DIST = $(am__append_6) check_LTLIBRARIES = PHONY_TARGETS = INSTALL_DATA_LOCAL_TARGETS = INSTALL_DATA_HOOK_TARGETS = UNINSTALL_LOCAL_TARGETS = dist_bin_SCRIPTS = #TESTS += $(SRC_ROOT)test/c_test.sh TESTS = $(SRC_ROOT)test/f90_test.sh $(SRC_ROOT)test/f77_test.sh \ $(am__append_7) $(am__append_8) $(am__append_9) PUBLIC_INC_SRC = $(SRC_ROOT)include/opari2/ opari2_SOURCES = \ $(SRC_ROOT)src/opari/common.h \ $(SRC_ROOT)src/opari/handler.cc \ $(SRC_ROOT)src/opari/handler.h \ $(SRC_ROOT)src/opari/ompragma.cc \ $(SRC_ROOT)src/opari/ompragma.h \ $(SRC_ROOT)src/opari/ompragma_c.cc \ $(SRC_ROOT)src/opari/ompragma_f.cc \ $(SRC_ROOT)src/opari/ompregion.cc \ $(SRC_ROOT)src/opari/ompregion.h \ $(SRC_ROOT)src/opari/opari2.cc \ $(SRC_ROOT)src/opari/opari2.h \ $(SRC_ROOT)src/opari/process_c.cc \ $(SRC_ROOT)src/opari/process_f.cc \ $(SRC_ROOT)src/opari/process_omp.cc \ opari2_usage.h opari2_CPPFLAGS = $(AM_CPPFLAGS) -DPACKAGE_VERSION="\"@PACKAGE_VERSION@\"" opari2_config_SOURCES = $(SRC_ROOT)src/opari/opari2_config.cc \ $(SRC_ROOT)src/opari/opari2_config.h @OPENMP_SUPPORTED_TRUE@libpomp_la_SOURCES = $(SRC_ROOT)src/pomp-lib-dummy/pomp2_lib.c \ @OPENMP_SUPPORTED_TRUE@ $(PUBLIC_INC_SRC)pomp2_lib.h \ @OPENMP_SUPPORTED_TRUE@ $(SRC_ROOT)src/pomp-lib-dummy/pomp2_region_info.c \ @OPENMP_SUPPORTED_TRUE@ $(SRC_ROOT)src/pomp-lib-dummy/pomp2_region_info.h \ @OPENMP_SUPPORTED_TRUE@ $(am__append_2) # Currently, the fortran wrappers get a int* parameter whereas the new # POMP_Region_handle is of type void*. Ask a fortran guru if this may cause # problems. # CFLAGS are sufficient here, CPPFLAGS would cause duplication @OPENMP_SUPPORTED_TRUE@libpomp_la_CFLAGS = $(AM_CFLAGS) $(OPENMP_CFLAGS) @OPENMP_SUPPORTED_TRUE@libpomp_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(PUBLIC_INC_DIR) @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@getfname_SOURCES = \ @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@ $(SRC_ROOT)src/pomp-lib-dummy/foos.c \ @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@ $(SRC_ROOT)src/pomp-lib-dummy/getfname.f CONFIG_HEADER_FRONTEND = ../src/opari2_config_tool_frontend.h all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .cc .f .lo .log .o .obj .test .test$(EXEEXT) .trs am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/../build-includes/common.am $(srcdir)/../vendor/common/build-config/common.am $(srcdir)/../build-includes/frontend-only.am $(srcdir)/../src/opari/Makefile.inc.am $(srcdir)/../src/pomp-lib-dummy/Makefile.inc.am $(srcdir)/../test/Makefile.inc.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(srcdir)/../build-includes/common.am $(srcdir)/../vendor/common/build-config/common.am $(srcdir)/../build-includes/frontend-only.am $(srcdir)/../src/opari/Makefile.inc.am $(srcdir)/../src/pomp-lib-dummy/Makefile.inc.am $(srcdir)/../test/Makefile.inc.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): ../src/config-frontend.h: ../src/stamp-h1 @test -f $@ || rm -f ../src/stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) ../src/stamp-h1 ../src/stamp-h1: $(top_srcdir)/../src/config-frontend.h.in $(top_builddir)/config.status @rm -f ../src/stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status ../src/config-frontend.h $(top_srcdir)/../src/config-frontend.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f ../src/stamp-h1 touch $@ distclean-hdr: -rm -f ../src/config-frontend.h ../src/stamp-h1 ../test/jacobi_c_test.sh: $(top_builddir)/config.status $(top_srcdir)/../test/jacobi_c_test.sh.in cd $(top_builddir) && $(SHELL) ./config.status $@ ../test/jacobi_c++_test.sh: $(top_builddir)/config.status $(top_srcdir)/../test/jacobi_c++_test.sh.in cd $(top_builddir) && $(SHELL) ./config.status $@ ../test/jacobi_f90_test.sh: $(top_builddir)/config.status $(top_srcdir)/../test/jacobi_f90_test.sh.in cd $(top_builddir) && $(SHELL) ./config.status $@ ../test/jacobi_f77_test.sh: $(top_builddir)/config.status $(top_srcdir)/../test/jacobi_f77_test.sh.in cd $(top_builddir) && $(SHELL) ./config.status $@ ../doc/example/Makefile: $(top_builddir)/config.status $(top_srcdir)/../doc/example/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ ../doc/example_user_instrumentation/Makefile: $(top_builddir)/config.status $(top_srcdir)/../doc/example_user_instrumentation/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ clean-checkLTLIBRARIES: -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) @list='$(check_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libpomp.la: $(libpomp_la_OBJECTS) $(libpomp_la_DEPENDENCIES) $(EXTRA_libpomp_la_DEPENDENCIES) $(AM_V_CCLD)$(libpomp_la_LINK) $(am_libpomp_la_rpath) $(libpomp_la_OBJECTS) $(libpomp_la_LIBADD) $(LIBS) install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list getfname$(EXEEXT): $(getfname_OBJECTS) $(getfname_DEPENDENCIES) $(EXTRA_getfname_DEPENDENCIES) @rm -f getfname$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(getfname_OBJECTS) $(getfname_LDADD) $(LIBS) opari2$(EXEEXT): $(opari2_OBJECTS) $(opari2_DEPENDENCIES) $(EXTRA_opari2_DEPENDENCIES) @rm -f opari2$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(opari2_OBJECTS) $(opari2_LDADD) $(LIBS) opari2-config$(EXEEXT): $(opari2_config_OBJECTS) $(opari2_config_DEPENDENCIES) $(EXTRA_opari2_config_DEPENDENCIES) @rm -f opari2-config$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(opari2_config_OBJECTS) $(opari2_config_LDADD) $(LIBS) install-dist_binSCRIPTS: $(dist_bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/foos.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpomp_la-pomp2_fwrapper.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpomp_la-pomp2_fwrapper_base.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpomp_la-pomp2_lib.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpomp_la-pomp2_region_info.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opari2-handler.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opari2-ompragma.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opari2-ompragma_c.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opari2-ompragma_f.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opari2-ompregion.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opari2-opari2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opari2-process_c.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opari2-process_f.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opari2-process_omp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opari2_config.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libpomp_la-pomp2_lib.lo: $(SRC_ROOT)src/pomp-lib-dummy/pomp2_lib.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpomp_la_CPPFLAGS) $(CPPFLAGS) $(libpomp_la_CFLAGS) $(CFLAGS) -MT libpomp_la-pomp2_lib.lo -MD -MP -MF $(DEPDIR)/libpomp_la-pomp2_lib.Tpo -c -o libpomp_la-pomp2_lib.lo `test -f '$(SRC_ROOT)src/pomp-lib-dummy/pomp2_lib.c' || echo '$(srcdir)/'`$(SRC_ROOT)src/pomp-lib-dummy/pomp2_lib.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpomp_la-pomp2_lib.Tpo $(DEPDIR)/libpomp_la-pomp2_lib.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(SRC_ROOT)src/pomp-lib-dummy/pomp2_lib.c' object='libpomp_la-pomp2_lib.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpomp_la_CPPFLAGS) $(CPPFLAGS) $(libpomp_la_CFLAGS) $(CFLAGS) -c -o libpomp_la-pomp2_lib.lo `test -f '$(SRC_ROOT)src/pomp-lib-dummy/pomp2_lib.c' || echo '$(srcdir)/'`$(SRC_ROOT)src/pomp-lib-dummy/pomp2_lib.c libpomp_la-pomp2_region_info.lo: $(SRC_ROOT)src/pomp-lib-dummy/pomp2_region_info.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpomp_la_CPPFLAGS) $(CPPFLAGS) $(libpomp_la_CFLAGS) $(CFLAGS) -MT libpomp_la-pomp2_region_info.lo -MD -MP -MF $(DEPDIR)/libpomp_la-pomp2_region_info.Tpo -c -o libpomp_la-pomp2_region_info.lo `test -f '$(SRC_ROOT)src/pomp-lib-dummy/pomp2_region_info.c' || echo '$(srcdir)/'`$(SRC_ROOT)src/pomp-lib-dummy/pomp2_region_info.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpomp_la-pomp2_region_info.Tpo $(DEPDIR)/libpomp_la-pomp2_region_info.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(SRC_ROOT)src/pomp-lib-dummy/pomp2_region_info.c' object='libpomp_la-pomp2_region_info.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpomp_la_CPPFLAGS) $(CPPFLAGS) $(libpomp_la_CFLAGS) $(CFLAGS) -c -o libpomp_la-pomp2_region_info.lo `test -f '$(SRC_ROOT)src/pomp-lib-dummy/pomp2_region_info.c' || echo '$(srcdir)/'`$(SRC_ROOT)src/pomp-lib-dummy/pomp2_region_info.c libpomp_la-pomp2_fwrapper.lo: $(SRC_ROOT)src/pomp-lib-dummy/pomp2_fwrapper.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpomp_la_CPPFLAGS) $(CPPFLAGS) $(libpomp_la_CFLAGS) $(CFLAGS) -MT libpomp_la-pomp2_fwrapper.lo -MD -MP -MF $(DEPDIR)/libpomp_la-pomp2_fwrapper.Tpo -c -o libpomp_la-pomp2_fwrapper.lo `test -f '$(SRC_ROOT)src/pomp-lib-dummy/pomp2_fwrapper.c' || echo '$(srcdir)/'`$(SRC_ROOT)src/pomp-lib-dummy/pomp2_fwrapper.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpomp_la-pomp2_fwrapper.Tpo $(DEPDIR)/libpomp_la-pomp2_fwrapper.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(SRC_ROOT)src/pomp-lib-dummy/pomp2_fwrapper.c' object='libpomp_la-pomp2_fwrapper.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpomp_la_CPPFLAGS) $(CPPFLAGS) $(libpomp_la_CFLAGS) $(CFLAGS) -c -o libpomp_la-pomp2_fwrapper.lo `test -f '$(SRC_ROOT)src/pomp-lib-dummy/pomp2_fwrapper.c' || echo '$(srcdir)/'`$(SRC_ROOT)src/pomp-lib-dummy/pomp2_fwrapper.c libpomp_la-pomp2_fwrapper_base.lo: $(SRC_ROOT)src/pomp-lib-dummy/pomp2_fwrapper_base.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpomp_la_CPPFLAGS) $(CPPFLAGS) $(libpomp_la_CFLAGS) $(CFLAGS) -MT libpomp_la-pomp2_fwrapper_base.lo -MD -MP -MF $(DEPDIR)/libpomp_la-pomp2_fwrapper_base.Tpo -c -o libpomp_la-pomp2_fwrapper_base.lo `test -f '$(SRC_ROOT)src/pomp-lib-dummy/pomp2_fwrapper_base.c' || echo '$(srcdir)/'`$(SRC_ROOT)src/pomp-lib-dummy/pomp2_fwrapper_base.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpomp_la-pomp2_fwrapper_base.Tpo $(DEPDIR)/libpomp_la-pomp2_fwrapper_base.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(SRC_ROOT)src/pomp-lib-dummy/pomp2_fwrapper_base.c' object='libpomp_la-pomp2_fwrapper_base.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpomp_la_CPPFLAGS) $(CPPFLAGS) $(libpomp_la_CFLAGS) $(CFLAGS) -c -o libpomp_la-pomp2_fwrapper_base.lo `test -f '$(SRC_ROOT)src/pomp-lib-dummy/pomp2_fwrapper_base.c' || echo '$(srcdir)/'`$(SRC_ROOT)src/pomp-lib-dummy/pomp2_fwrapper_base.c foos.o: $(SRC_ROOT)src/pomp-lib-dummy/foos.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT foos.o -MD -MP -MF $(DEPDIR)/foos.Tpo -c -o foos.o `test -f '$(SRC_ROOT)src/pomp-lib-dummy/foos.c' || echo '$(srcdir)/'`$(SRC_ROOT)src/pomp-lib-dummy/foos.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/foos.Tpo $(DEPDIR)/foos.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(SRC_ROOT)src/pomp-lib-dummy/foos.c' object='foos.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o foos.o `test -f '$(SRC_ROOT)src/pomp-lib-dummy/foos.c' || echo '$(srcdir)/'`$(SRC_ROOT)src/pomp-lib-dummy/foos.c foos.obj: $(SRC_ROOT)src/pomp-lib-dummy/foos.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT foos.obj -MD -MP -MF $(DEPDIR)/foos.Tpo -c -o foos.obj `if test -f '$(SRC_ROOT)src/pomp-lib-dummy/foos.c'; then $(CYGPATH_W) '$(SRC_ROOT)src/pomp-lib-dummy/foos.c'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/pomp-lib-dummy/foos.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/foos.Tpo $(DEPDIR)/foos.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(SRC_ROOT)src/pomp-lib-dummy/foos.c' object='foos.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o foos.obj `if test -f '$(SRC_ROOT)src/pomp-lib-dummy/foos.c'; then $(CYGPATH_W) '$(SRC_ROOT)src/pomp-lib-dummy/foos.c'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/pomp-lib-dummy/foos.c'; fi` .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< opari2-handler.o: $(SRC_ROOT)src/opari/handler.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opari2-handler.o -MD -MP -MF $(DEPDIR)/opari2-handler.Tpo -c -o opari2-handler.o `test -f '$(SRC_ROOT)src/opari/handler.cc' || echo '$(srcdir)/'`$(SRC_ROOT)src/opari/handler.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opari2-handler.Tpo $(DEPDIR)/opari2-handler.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(SRC_ROOT)src/opari/handler.cc' object='opari2-handler.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opari2-handler.o `test -f '$(SRC_ROOT)src/opari/handler.cc' || echo '$(srcdir)/'`$(SRC_ROOT)src/opari/handler.cc opari2-handler.obj: $(SRC_ROOT)src/opari/handler.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opari2-handler.obj -MD -MP -MF $(DEPDIR)/opari2-handler.Tpo -c -o opari2-handler.obj `if test -f '$(SRC_ROOT)src/opari/handler.cc'; then $(CYGPATH_W) '$(SRC_ROOT)src/opari/handler.cc'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/opari/handler.cc'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opari2-handler.Tpo $(DEPDIR)/opari2-handler.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(SRC_ROOT)src/opari/handler.cc' object='opari2-handler.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opari2-handler.obj `if test -f '$(SRC_ROOT)src/opari/handler.cc'; then $(CYGPATH_W) '$(SRC_ROOT)src/opari/handler.cc'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/opari/handler.cc'; fi` opari2-ompragma.o: $(SRC_ROOT)src/opari/ompragma.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opari2-ompragma.o -MD -MP -MF $(DEPDIR)/opari2-ompragma.Tpo -c -o opari2-ompragma.o `test -f '$(SRC_ROOT)src/opari/ompragma.cc' || echo '$(srcdir)/'`$(SRC_ROOT)src/opari/ompragma.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opari2-ompragma.Tpo $(DEPDIR)/opari2-ompragma.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(SRC_ROOT)src/opari/ompragma.cc' object='opari2-ompragma.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opari2-ompragma.o `test -f '$(SRC_ROOT)src/opari/ompragma.cc' || echo '$(srcdir)/'`$(SRC_ROOT)src/opari/ompragma.cc opari2-ompragma.obj: $(SRC_ROOT)src/opari/ompragma.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opari2-ompragma.obj -MD -MP -MF $(DEPDIR)/opari2-ompragma.Tpo -c -o opari2-ompragma.obj `if test -f '$(SRC_ROOT)src/opari/ompragma.cc'; then $(CYGPATH_W) '$(SRC_ROOT)src/opari/ompragma.cc'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/opari/ompragma.cc'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opari2-ompragma.Tpo $(DEPDIR)/opari2-ompragma.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(SRC_ROOT)src/opari/ompragma.cc' object='opari2-ompragma.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opari2-ompragma.obj `if test -f '$(SRC_ROOT)src/opari/ompragma.cc'; then $(CYGPATH_W) '$(SRC_ROOT)src/opari/ompragma.cc'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/opari/ompragma.cc'; fi` opari2-ompragma_c.o: $(SRC_ROOT)src/opari/ompragma_c.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opari2-ompragma_c.o -MD -MP -MF $(DEPDIR)/opari2-ompragma_c.Tpo -c -o opari2-ompragma_c.o `test -f '$(SRC_ROOT)src/opari/ompragma_c.cc' || echo '$(srcdir)/'`$(SRC_ROOT)src/opari/ompragma_c.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opari2-ompragma_c.Tpo $(DEPDIR)/opari2-ompragma_c.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(SRC_ROOT)src/opari/ompragma_c.cc' object='opari2-ompragma_c.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opari2-ompragma_c.o `test -f '$(SRC_ROOT)src/opari/ompragma_c.cc' || echo '$(srcdir)/'`$(SRC_ROOT)src/opari/ompragma_c.cc opari2-ompragma_c.obj: $(SRC_ROOT)src/opari/ompragma_c.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opari2-ompragma_c.obj -MD -MP -MF $(DEPDIR)/opari2-ompragma_c.Tpo -c -o opari2-ompragma_c.obj `if test -f '$(SRC_ROOT)src/opari/ompragma_c.cc'; then $(CYGPATH_W) '$(SRC_ROOT)src/opari/ompragma_c.cc'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/opari/ompragma_c.cc'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opari2-ompragma_c.Tpo $(DEPDIR)/opari2-ompragma_c.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(SRC_ROOT)src/opari/ompragma_c.cc' object='opari2-ompragma_c.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opari2-ompragma_c.obj `if test -f '$(SRC_ROOT)src/opari/ompragma_c.cc'; then $(CYGPATH_W) '$(SRC_ROOT)src/opari/ompragma_c.cc'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/opari/ompragma_c.cc'; fi` opari2-ompragma_f.o: $(SRC_ROOT)src/opari/ompragma_f.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opari2-ompragma_f.o -MD -MP -MF $(DEPDIR)/opari2-ompragma_f.Tpo -c -o opari2-ompragma_f.o `test -f '$(SRC_ROOT)src/opari/ompragma_f.cc' || echo '$(srcdir)/'`$(SRC_ROOT)src/opari/ompragma_f.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opari2-ompragma_f.Tpo $(DEPDIR)/opari2-ompragma_f.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(SRC_ROOT)src/opari/ompragma_f.cc' object='opari2-ompragma_f.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opari2-ompragma_f.o `test -f '$(SRC_ROOT)src/opari/ompragma_f.cc' || echo '$(srcdir)/'`$(SRC_ROOT)src/opari/ompragma_f.cc opari2-ompragma_f.obj: $(SRC_ROOT)src/opari/ompragma_f.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opari2-ompragma_f.obj -MD -MP -MF $(DEPDIR)/opari2-ompragma_f.Tpo -c -o opari2-ompragma_f.obj `if test -f '$(SRC_ROOT)src/opari/ompragma_f.cc'; then $(CYGPATH_W) '$(SRC_ROOT)src/opari/ompragma_f.cc'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/opari/ompragma_f.cc'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opari2-ompragma_f.Tpo $(DEPDIR)/opari2-ompragma_f.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(SRC_ROOT)src/opari/ompragma_f.cc' object='opari2-ompragma_f.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opari2-ompragma_f.obj `if test -f '$(SRC_ROOT)src/opari/ompragma_f.cc'; then $(CYGPATH_W) '$(SRC_ROOT)src/opari/ompragma_f.cc'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/opari/ompragma_f.cc'; fi` opari2-ompregion.o: $(SRC_ROOT)src/opari/ompregion.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opari2-ompregion.o -MD -MP -MF $(DEPDIR)/opari2-ompregion.Tpo -c -o opari2-ompregion.o `test -f '$(SRC_ROOT)src/opari/ompregion.cc' || echo '$(srcdir)/'`$(SRC_ROOT)src/opari/ompregion.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opari2-ompregion.Tpo $(DEPDIR)/opari2-ompregion.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(SRC_ROOT)src/opari/ompregion.cc' object='opari2-ompregion.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opari2-ompregion.o `test -f '$(SRC_ROOT)src/opari/ompregion.cc' || echo '$(srcdir)/'`$(SRC_ROOT)src/opari/ompregion.cc opari2-ompregion.obj: $(SRC_ROOT)src/opari/ompregion.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opari2-ompregion.obj -MD -MP -MF $(DEPDIR)/opari2-ompregion.Tpo -c -o opari2-ompregion.obj `if test -f '$(SRC_ROOT)src/opari/ompregion.cc'; then $(CYGPATH_W) '$(SRC_ROOT)src/opari/ompregion.cc'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/opari/ompregion.cc'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opari2-ompregion.Tpo $(DEPDIR)/opari2-ompregion.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(SRC_ROOT)src/opari/ompregion.cc' object='opari2-ompregion.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opari2-ompregion.obj `if test -f '$(SRC_ROOT)src/opari/ompregion.cc'; then $(CYGPATH_W) '$(SRC_ROOT)src/opari/ompregion.cc'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/opari/ompregion.cc'; fi` opari2-opari2.o: $(SRC_ROOT)src/opari/opari2.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opari2-opari2.o -MD -MP -MF $(DEPDIR)/opari2-opari2.Tpo -c -o opari2-opari2.o `test -f '$(SRC_ROOT)src/opari/opari2.cc' || echo '$(srcdir)/'`$(SRC_ROOT)src/opari/opari2.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opari2-opari2.Tpo $(DEPDIR)/opari2-opari2.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(SRC_ROOT)src/opari/opari2.cc' object='opari2-opari2.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opari2-opari2.o `test -f '$(SRC_ROOT)src/opari/opari2.cc' || echo '$(srcdir)/'`$(SRC_ROOT)src/opari/opari2.cc opari2-opari2.obj: $(SRC_ROOT)src/opari/opari2.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opari2-opari2.obj -MD -MP -MF $(DEPDIR)/opari2-opari2.Tpo -c -o opari2-opari2.obj `if test -f '$(SRC_ROOT)src/opari/opari2.cc'; then $(CYGPATH_W) '$(SRC_ROOT)src/opari/opari2.cc'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/opari/opari2.cc'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opari2-opari2.Tpo $(DEPDIR)/opari2-opari2.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(SRC_ROOT)src/opari/opari2.cc' object='opari2-opari2.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opari2-opari2.obj `if test -f '$(SRC_ROOT)src/opari/opari2.cc'; then $(CYGPATH_W) '$(SRC_ROOT)src/opari/opari2.cc'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/opari/opari2.cc'; fi` opari2-process_c.o: $(SRC_ROOT)src/opari/process_c.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opari2-process_c.o -MD -MP -MF $(DEPDIR)/opari2-process_c.Tpo -c -o opari2-process_c.o `test -f '$(SRC_ROOT)src/opari/process_c.cc' || echo '$(srcdir)/'`$(SRC_ROOT)src/opari/process_c.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opari2-process_c.Tpo $(DEPDIR)/opari2-process_c.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(SRC_ROOT)src/opari/process_c.cc' object='opari2-process_c.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opari2-process_c.o `test -f '$(SRC_ROOT)src/opari/process_c.cc' || echo '$(srcdir)/'`$(SRC_ROOT)src/opari/process_c.cc opari2-process_c.obj: $(SRC_ROOT)src/opari/process_c.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opari2-process_c.obj -MD -MP -MF $(DEPDIR)/opari2-process_c.Tpo -c -o opari2-process_c.obj `if test -f '$(SRC_ROOT)src/opari/process_c.cc'; then $(CYGPATH_W) '$(SRC_ROOT)src/opari/process_c.cc'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/opari/process_c.cc'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opari2-process_c.Tpo $(DEPDIR)/opari2-process_c.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(SRC_ROOT)src/opari/process_c.cc' object='opari2-process_c.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opari2-process_c.obj `if test -f '$(SRC_ROOT)src/opari/process_c.cc'; then $(CYGPATH_W) '$(SRC_ROOT)src/opari/process_c.cc'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/opari/process_c.cc'; fi` opari2-process_f.o: $(SRC_ROOT)src/opari/process_f.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opari2-process_f.o -MD -MP -MF $(DEPDIR)/opari2-process_f.Tpo -c -o opari2-process_f.o `test -f '$(SRC_ROOT)src/opari/process_f.cc' || echo '$(srcdir)/'`$(SRC_ROOT)src/opari/process_f.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opari2-process_f.Tpo $(DEPDIR)/opari2-process_f.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(SRC_ROOT)src/opari/process_f.cc' object='opari2-process_f.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opari2-process_f.o `test -f '$(SRC_ROOT)src/opari/process_f.cc' || echo '$(srcdir)/'`$(SRC_ROOT)src/opari/process_f.cc opari2-process_f.obj: $(SRC_ROOT)src/opari/process_f.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opari2-process_f.obj -MD -MP -MF $(DEPDIR)/opari2-process_f.Tpo -c -o opari2-process_f.obj `if test -f '$(SRC_ROOT)src/opari/process_f.cc'; then $(CYGPATH_W) '$(SRC_ROOT)src/opari/process_f.cc'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/opari/process_f.cc'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opari2-process_f.Tpo $(DEPDIR)/opari2-process_f.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(SRC_ROOT)src/opari/process_f.cc' object='opari2-process_f.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opari2-process_f.obj `if test -f '$(SRC_ROOT)src/opari/process_f.cc'; then $(CYGPATH_W) '$(SRC_ROOT)src/opari/process_f.cc'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/opari/process_f.cc'; fi` opari2-process_omp.o: $(SRC_ROOT)src/opari/process_omp.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opari2-process_omp.o -MD -MP -MF $(DEPDIR)/opari2-process_omp.Tpo -c -o opari2-process_omp.o `test -f '$(SRC_ROOT)src/opari/process_omp.cc' || echo '$(srcdir)/'`$(SRC_ROOT)src/opari/process_omp.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opari2-process_omp.Tpo $(DEPDIR)/opari2-process_omp.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(SRC_ROOT)src/opari/process_omp.cc' object='opari2-process_omp.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opari2-process_omp.o `test -f '$(SRC_ROOT)src/opari/process_omp.cc' || echo '$(srcdir)/'`$(SRC_ROOT)src/opari/process_omp.cc opari2-process_omp.obj: $(SRC_ROOT)src/opari/process_omp.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opari2-process_omp.obj -MD -MP -MF $(DEPDIR)/opari2-process_omp.Tpo -c -o opari2-process_omp.obj `if test -f '$(SRC_ROOT)src/opari/process_omp.cc'; then $(CYGPATH_W) '$(SRC_ROOT)src/opari/process_omp.cc'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/opari/process_omp.cc'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opari2-process_omp.Tpo $(DEPDIR)/opari2-process_omp.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(SRC_ROOT)src/opari/process_omp.cc' object='opari2-process_omp.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(opari2_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opari2-process_omp.obj `if test -f '$(SRC_ROOT)src/opari/process_omp.cc'; then $(CYGPATH_W) '$(SRC_ROOT)src/opari/process_omp.cc'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/opari/process_omp.cc'; fi` opari2_config.o: $(SRC_ROOT)src/opari/opari2_config.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opari2_config.o -MD -MP -MF $(DEPDIR)/opari2_config.Tpo -c -o opari2_config.o `test -f '$(SRC_ROOT)src/opari/opari2_config.cc' || echo '$(srcdir)/'`$(SRC_ROOT)src/opari/opari2_config.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opari2_config.Tpo $(DEPDIR)/opari2_config.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(SRC_ROOT)src/opari/opari2_config.cc' object='opari2_config.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opari2_config.o `test -f '$(SRC_ROOT)src/opari/opari2_config.cc' || echo '$(srcdir)/'`$(SRC_ROOT)src/opari/opari2_config.cc opari2_config.obj: $(SRC_ROOT)src/opari/opari2_config.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT opari2_config.obj -MD -MP -MF $(DEPDIR)/opari2_config.Tpo -c -o opari2_config.obj `if test -f '$(SRC_ROOT)src/opari/opari2_config.cc'; then $(CYGPATH_W) '$(SRC_ROOT)src/opari/opari2_config.cc'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/opari/opari2_config.cc'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/opari2_config.Tpo $(DEPDIR)/opari2_config.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(SRC_ROOT)src/opari/opari2_config.cc' object='opari2_config.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o opari2_config.obj `if test -f '$(SRC_ROOT)src/opari/opari2_config.cc'; then $(CYGPATH_W) '$(SRC_ROOT)src/opari/opari2_config.cc'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/opari/opari2_config.cc'; fi` .f.o: $(AM_V_F77)$(F77COMPILE) -c -o $@ $< .f.obj: $(AM_V_F77)$(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f.lo: $(AM_V_F77)$(LTF77COMPILE) -c -o $@ $< getfname.o: $(SRC_ROOT)src/pomp-lib-dummy/getfname.f $(AM_V_F77)$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o getfname.o `test -f '$(SRC_ROOT)src/pomp-lib-dummy/getfname.f' || echo '$(srcdir)/'`$(SRC_ROOT)src/pomp-lib-dummy/getfname.f getfname.obj: $(SRC_ROOT)src/pomp-lib-dummy/getfname.f $(AM_V_F77)$(F77) $(AM_FFLAGS) $(FFLAGS) -c -o getfname.obj `if test -f '$(SRC_ROOT)src/pomp-lib-dummy/getfname.f'; then $(CYGPATH_W) '$(SRC_ROOT)src/pomp-lib-dummy/getfname.f'; else $(CYGPATH_W) '$(srcdir)/$(SRC_ROOT)src/pomp-lib-dummy/getfname.f'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-nobase_includeHEADERS: $(nobase_include_HEADERS) @$(NORMAL_INSTALL) @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ $(am__nobase_list) | while read dir files; do \ xfiles=; for file in $$files; do \ if test -f "$$file"; then xfiles="$$xfiles $$file"; \ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ test -z "$$xfiles" || { \ test "x$$dir" = x. || { \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)/$$dir'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)/$$dir"; }; \ echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(includedir)/$$dir'"; \ $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(includedir)/$$dir" || exit $$?; }; \ done uninstall-nobase_includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ if test -n "$(PACKAGE_BUGREPORT)"; then \ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? $(SRC_ROOT)test/f90_test.sh.log: $(SRC_ROOT)test/f90_test.sh @p='$(SRC_ROOT)test/f90_test.sh'; \ b='$(SRC_ROOT)test/f90_test.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) $(SRC_ROOT)test/f77_test.sh.log: $(SRC_ROOT)test/f77_test.sh @p='$(SRC_ROOT)test/f77_test.sh'; \ b='$(SRC_ROOT)test/f77_test.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) $(SRC_ROOT)test/jacobi_c_test.sh.log: $(SRC_ROOT)test/jacobi_c_test.sh @p='$(SRC_ROOT)test/jacobi_c_test.sh'; \ b='$(SRC_ROOT)test/jacobi_c_test.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) $(SRC_ROOT)test/jacobi_c++_test.sh.log: $(SRC_ROOT)test/jacobi_c++_test.sh @p='$(SRC_ROOT)test/jacobi_c++_test.sh'; \ b='$(SRC_ROOT)test/jacobi_c++_test.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) $(SRC_ROOT)test/jacobi_f90_test.sh.log: $(SRC_ROOT)test/jacobi_f90_test.sh @p='$(SRC_ROOT)test/jacobi_f90_test.sh'; \ b='$(SRC_ROOT)test/jacobi_f90_test.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) $(SRC_ROOT)test/jacobi_f77_test.sh.log: $(SRC_ROOT)test/jacobi_f77_test.sh @p='$(SRC_ROOT)test/jacobi_f77_test.sh'; \ b='$(SRC_ROOT)test/jacobi_f77_test.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(HEADERS) install-binPROGRAMS: install-libLTLIBRARIES installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) @OPENMP_SUPPORTED_FALSE@installcheck-local: clean: clean-am clean-am: clean-binPROGRAMS clean-checkLTLIBRARIES clean-checkPROGRAMS \ clean-generic clean-libLTLIBRARIES clean-libtool clean-local \ clean-noinstLTLIBRARIES clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-libtool distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-nobase_includeHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-dist_binSCRIPTS \ install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: installcheck-local maintainer-clean: maintainer-clean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-dist_binSCRIPTS \ uninstall-libLTLIBRARIES uninstall-nobase_includeHEADERS .MAKE: all check check-am install install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-TESTS \ check-am clean clean-binPROGRAMS clean-checkLTLIBRARIES \ clean-checkPROGRAMS clean-cscope clean-generic \ clean-libLTLIBRARIES clean-libtool clean-local \ clean-noinstLTLIBRARIES clean-noinstPROGRAMS cscope \ cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ distcheck distclean distclean-compile distclean-generic \ distclean-hdr distclean-libtool distclean-tags distcleancheck \ distdir distuninstallcheck dvi dvi-am html html-am info \ info-am install install-am install-binPROGRAMS install-data \ install-data-am install-data-local install-dist_binSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-libLTLIBRARIES install-man \ install-nobase_includeHEADERS install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installcheck-local installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am recheck tags tags-am uninstall \ uninstall-am uninstall-binPROGRAMS uninstall-dist_binSCRIPTS \ uninstall-libLTLIBRARIES uninstall-nobase_includeHEADERS .PRECIOUS: Makefile # TESTS_ENVIRONMENT = .PHONY: $(PHONY_TARGETS) libtool: $(LIBTOOL_DEPS) $(SHELL) ./config.status --recheck beautify: check-build: $(BUILT_SOURCES) all-am $(check_PROGRAMS) $(check_LTLIBRARIES) opari2_usage.h: $(INC_ROOT)doc/doxygen-user/opari2_usage.dox.in $(AWK) '{print "\"" $$0 "\\n\""}' $(INC_ROOT)doc/doxygen-user/opari2_usage.dox.in > opari2_usage.h @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@pomp2_fwrapper_def.h: Makefile getfname$(EXEEXT) @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@ ./getfname clean-local: rm -rf ../test/jacobi rm -f $(CONFIG_HEADER_FRONTEND) $(builddir)/opari2_config.dat create-config-tool-headers: $(CONFIG_HEADER_FRONTEND) $(CONFIG_HEADER_FRONTEND): $(builddir)/opari2_config.dat $(AM_V_GEN)( \ echo "#define NM \"$(NM)\""; \ echo "#define AWK \"$(AWK)\""; \ echo "#define SCRIPT \"$(prefix)/bin/pomp2-parse-init-regions.awk\""; \ echo "#define EGREP \"$(EGREP)\""; \ echo "#define VERSION \"$(PACKAGE_VERSION)\""; \ echo "#define POMP2_API_VERSION \"$(LIBRARY_INTERFACE_VERSION)\""; \ echo "#define CFLAGS \"-I$(prefix)/include\""; \ ) >$@ $(builddir)/opari2_config.dat: $(AM_V_GEN)( \ echo NM=\"$(NM)\"; \ echo AWK=\"$(AWK)\"; \ echo OPARI_SCRIPT=\"$(PWD)/../build-frontend/pomp2-parse-init-regions.awk\"; \ echo VERSION=\"$(PACKAGE_VERSION)\"; \ echo EGREP=\"$(EGREP)\"; \ echo CFLAGS=\"-I$(abs_srcdir)/../include\"; \ ) >$@ @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@installcheck-local: @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@ @$(am__cd) $(DESTDIR)$(docdir)/example/ && $(MAKE) $(AM_MAKEFLAGS) @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_TRUE@ @$(am__cd) $(DESTDIR)$(docdir)/example_user_instrumentation/ && $(MAKE) $(AM_MAKEFLAGS) @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_FALSE@installcheck-local: @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_FALSE@ @$(am__cd) $(DESTDIR)$(docdir)/doc/example/ && $(MAKE) $(AM_MAKEFLAGS) c @OPENMP_SUPPORTED_TRUE@@SCOREP_HAVE_F77_FALSE@ @$(am__cd) $(DESTDIR)$(docdir)/doc/example_user_instrumentation/ && $(MAKE) $(AM_MAKEFLAGS) c @OPENMP_SUPPORTED_TRUE@install-example: @OPENMP_SUPPORTED_TRUE@ $(MKDIR_P) $(DESTDIR)$(docdir)/example @OPENMP_SUPPORTED_TRUE@ $(INSTALL_DATA) $(abs_srcdir)/../doc/example/example.* $(DESTDIR)$(docdir)/example/ @OPENMP_SUPPORTED_TRUE@ $(INSTALL_DATA) $(abs_srcdir)/../include/opari2/pomp2_lib.h $(DESTDIR)$(docdir)/example/ @OPENMP_SUPPORTED_TRUE@ $(INSTALL_DATA) $(abs_builddir)/../doc/example/Makefile $(DESTDIR)$(docdir)/example/ @OPENMP_SUPPORTED_TRUE@ $(INSTALL_DATA) $(abs_builddir)/../build-frontend/.libs/libpomp.* $(DESTDIR)$(docdir)/example/ @OPENMP_SUPPORTED_TRUE@ rm -f $(DESTDIR)$(docdir)/example/libpomp.la @OPENMP_SUPPORTED_TRUE@ $(MKDIR_P) $(DESTDIR)$(docdir)/example_user_instrumentation @OPENMP_SUPPORTED_TRUE@ $(INSTALL_DATA) $(abs_srcdir)/../doc/example_user_instrumentation/example_user_instrumentation.* $(DESTDIR)$(docdir)/example_user_instrumentation/ @OPENMP_SUPPORTED_TRUE@ $(INSTALL_DATA) $(abs_srcdir)/../include/opari2/pomp2_lib.h $(DESTDIR)$(docdir)/example_user_instrumentation/ @OPENMP_SUPPORTED_TRUE@ $(INSTALL_DATA) $(abs_builddir)/../doc/example_user_instrumentation/Makefile $(DESTDIR)$(docdir)/example_user_instrumentation/ @OPENMP_SUPPORTED_TRUE@ $(INSTALL_DATA) $(abs_builddir)/../build-frontend/.libs/libpomp.* $(DESTDIR)$(docdir)/example_user_instrumentation/ @OPENMP_SUPPORTED_TRUE@ rm -f $(DESTDIR)$(docdir)/example_user_instrumentation/libpomp.la @OPENMP_SUPPORTED_FALSE@install-example: install-pomp2_region_info: $(MKDIR_P) $(DESTDIR)$(datadir)/@PACKAGE_NAME@/devel $(INSTALL_DATA) $(abs_srcdir)/../src/pomp-lib-dummy/pomp2_region_info.c $(DESTDIR)$(datadir)/@PACKAGE_NAME@/devel/ $(INSTALL_DATA) $(abs_srcdir)/../src/pomp-lib-dummy/pomp2_region_info.h $(DESTDIR)$(datadir)/@PACKAGE_NAME@/devel/ install-data-local: install-example install-pomp2_region_info # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/opari2/build-frontend/PaxHeaders.7332/configure0000644000000000000000000000013213171135235022133 xustar0030 mtime=1508162205.692800337 30 atime=1508162288.875211737 30 ctime=1508162367.653900328 eztrace-1.1-7/extlib/opari2/build-frontend/configure0000755000175000017500000331643713171135235023346 0ustar00trahaytrahay00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for opari2 1.0.2. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: scorep-bugs@groups.tu-dresden.de about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='opari2' PACKAGE_TARNAME='opari2' PACKAGE_VERSION='1.0.2' PACKAGE_STRING='opari2 1.0.2' PACKAGE_BUGREPORT='scorep-bugs@groups.tu-dresden.de' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS LIBTOOL_DEPS CXXCPP CPP LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL ac_ct_AR AR DLLTOOL OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED LIBTOOL RANLIB FORTRAN_SUPPORT_ALLOCATABLE_FALSE FORTRAN_SUPPORT_ALLOCATABLE_TRUE OPENMP_FCFLAGS OPENMP_FFLAGS OPENMP_CXXFLAGS OPENMP_SUPPORTED_FALSE OPENMP_SUPPORTED_TRUE OPENMP_CFLAGS SCOREP_HAVE_FC_FALSE SCOREP_HAVE_FC_TRUE ac_ct_FC FCFLAGS FC SCOREP_HAVE_F77_FALSE SCOREP_HAVE_F77_TRUE ac_ct_F77 FFLAGS F77 am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX SCOREP_COMPILER_CRAY_FALSE SCOREP_COMPILER_CRAY_TRUE SCOREP_COMPILER_SX_FALSE SCOREP_COMPILER_SX_TRUE SCOREP_COMPILER_GNU_FALSE SCOREP_COMPILER_GNU_TRUE SCOREP_COMPILER_PGI_FALSE SCOREP_COMPILER_PGI_TRUE SCOREP_COMPILER_IBM_FALSE SCOREP_COMPILER_IBM_TRUE SCOREP_COMPILER_SUN_FALSE SCOREP_COMPILER_SUN_TRUE SCOREP_COMPILER_INTEL_FALSE SCOREP_COMPILER_INTEL_TRUE am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC PLATFORM_NECSX_FALSE PLATFORM_NECSX_TRUE PLATFORM_CRAYX1_FALSE PLATFORM_CRAYX1_TRUE PLATFORM_MAC_FALSE PLATFORM_MAC_TRUE PLATFORM_SUN_FALSE PLATFORM_SUN_TRUE PLATFORM_LINUX_FALSE PLATFORM_LINUX_TRUE PLATFORM_SICORTEX_FALSE PLATFORM_SICORTEX_TRUE PLATFORM_CRAYXT_FALSE PLATFORM_CRAYXT_TRUE PLATFORM_BGP_FALSE PLATFORM_BGP_TRUE PLATFORM_BGL_FALSE PLATFORM_BGL_TRUE PLATFORM_POWER6_FALSE PLATFORM_POWER6_TRUE PLATFORM_ALTIX_FALSE PLATFORM_ALTIX_TRUE host_os host_vendor host_cpu host build_os build_vendor build_cpu build BUILD_TESTS_FALSE BUILD_TESTS_TRUE AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM SVN_CONTROLLED_FALSE SVN_CONTROLLED_TRUE LIBS_FOR_BUILD LDFLAGS_FOR_BUILD FCFLAGS_FOR_BUILD FFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD CFLAGS_FOR_BUILD CPPFLAGS_FOR_BUILD FC_FOR_BUILD F77_FOR_BUILD CXX_FOR_BUILD CC_FOR_BUILD LIBRARY_INTERFACE_VERSION target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_platform_detection enable_dependency_tracking enable_openmp enable_shared enable_static with_pic enable_fast_install with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock ' ac_precious_vars='build_alias host_alias target_alias CC_FOR_BUILD CXX_FOR_BUILD F77_FOR_BUILD FC_FOR_BUILD CPPFLAGS_FOR_BUILD CFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD FFLAGS_FOR_BUILD FCFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD LIBS_FOR_BUILD CC CFLAGS LDFLAGS LIBS CPPFLAGS CXX CXXFLAGS CCC F77 FFLAGS FC FCFLAGS LT_SYS_LIBRARY_PATH CPP CXXCPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures opari2 1.0.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/opari2] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of opari2 1.0.2:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-platform-detection autodetect platform [yes] --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --disable-openmp do not use OpenMP --enable-shared[=PKGS] build shared libraries [default=no] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). Some influential environment variables: CC_FOR_BUILD C compiler command for the frontend build CXX_FOR_BUILD C++ compiler command for the frontend build F77_FOR_BUILD Fortran 77 compiler command for the frontend build FC_FOR_BUILD Fortran compiler command for the frontend build CPPFLAGS_FOR_BUILD (Objective) C/C++ preprocessor flags for the frontend build, e.g. -I if you have headers in a nonstandard directory CFLAGS_FOR_BUILD C compiler flags for the frontend build CXXFLAGS_FOR_BUILD C++ compiler flags for the frontend build FFLAGS_FOR_BUILD Fortran 77 compiler flags for the frontend build FCFLAGS_FOR_BUILD Fortran compiler flags for the frontend build LDFLAGS_FOR_BUILD linker flags for the frontend build, e.g. -L if you have libraries in a nonstandard directory LIBS_FOR_BUILD libraries to pass to the linker for the frontend build, e.g. -l CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CXX C++ compiler command CXXFLAGS C++ compiler flags F77 Fortran 77 compiler command FFLAGS Fortran 77 compiler flags FC Fortran compiler command FCFLAGS Fortran compiler flags LT_SYS_LIBRARY_PATH User-defined run-time library search path. CPP C preprocessor CXXCPP C++ preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF opari2 configure 1.0.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_f77_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_f77_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_f77_try_compile # ac_fn_f77_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_f77_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_f77_try_link # ac_fn_fc_try_compile LINENO # --------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_fc_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_fc_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_fc_try_compile # ac_fn_fc_try_link LINENO # ------------------------ # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_fc_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_fc_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_fc_try_link # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by opari2 $as_me 1.0.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu LIBRARY_INTERFACE_VERSION=1.0.2 ac_scorep_frontend="yes" ac_scorep_backend="no" opari2_cross_build_args="" if test "x${ac_cv_env_CC_FOR_BUILD_set}" == "xset"; then CC=$ac_cv_env_CC_FOR_BUILD_value fi if test "x${ac_cv_env_CXX_FOR_BUILD_set}" == "xset"; then CXX=$ac_cv_env_CXX_FOR_BUILD_value fi if test "x${ac_cv_env_F77_FOR_BUILD_set}" == "xset"; then F77=$ac_cv_env_F77_FOR_BUILD_value fi if test "x${ac_cv_env_FC_FOR_BUILD_set}" == "xset"; then FC=$ac_cv_env_FC_FOR_BUILD_value fi if test "x${ac_cv_env_CPPFLAGS_FOR_BUILD_set}" == "xset"; then CPPFLAGS=$ac_cv_env_CPPFLAGS_FOR_BUILD_value fi if test "x${ac_cv_env_CFLAGS_FOR_BUILD_set}" == "xset"; then CFLAGS=$ac_cv_env_CFLAGS_FOR_BUILD_value fi if test "x${ac_cv_env_CXXFLAGS_FOR_BUILD_set}" == "xset"; then CXXFLAGS=$ac_cv_env_CXXFLAGS_FOR_BUILD_value fi if test "x${ac_cv_env_FFLAGS_FOR_BUILD_set}" == "xset"; then FFLAGS=$ac_cv_env_FFLAGS_FOR_BUILD_value fi if test "x${ac_cv_env_FCFLAGS_FOR_BUILD_set}" == "xset"; then FCFLAGS=$ac_cv_env_FCFLAGS_FOR_BUILD_value fi if test "x${ac_cv_env_LDFLAGS_FOR_BUILD_set}" == "xset"; then LDFLAGS=$ac_cv_env_LDFLAGS_FOR_BUILD_value fi if test "x${ac_cv_env_LIBS_FOR_BUILD_set}" == "xset"; then LIBS=$ac_cv_env_LIBS_FOR_BUILD_value fi if test "x${ac_cv_env_CC_set}" != "xset"; then as_fn_error 1 "argument CC not provided in configure call." "$LINENO" 5 fi if test "x${ac_cv_env_CXX_set}" != "xset"; then as_fn_error 1 "argument CXX not provided in configure call." "$LINENO" 5 fi if test "x${ac_cv_env_F77_set}" != "xset"; then as_fn_error 1 "argument F77 not provided in configure call." "$LINENO" 5 fi if test "x${ac_cv_env_FC_set}" != "xset"; then as_fn_error 1 "argument FC not provided in configure call." "$LINENO" 5 fi #AC_SCOREP_CONVERT_FLAGS([CFLAGS]) #AC_SCOREP_CONVERT_FLAGS([CXXFLAGS]) #AC_SCOREP_CONVERT_FLAGS([CPPFLAGS]) #AC_SCOREP_CONVERT_COMPILER([CC]) #AC_SCOREP_CONVERT_COMPILER([CXX]) ac_scorep_svn_controlled="no" #modified so that eztrace's make dist works # if test -d $srcdir/.svn; then # ac_scorep_svn_controlled="yes" # AC_DEFINE([SCOREP_IN_DEVELOPEMENT], [], [Defined if we are working from svn.]) # else $as_echo "#define SCOREP_IN_PRODUCTION /**/" >>confdefs.h # fi if test "x${ac_scorep_svn_controlled}" = xyes; then SVN_CONTROLLED_TRUE= SVN_CONTROLLED_FALSE='#' else SVN_CONTROLLED_TRUE='#' SVN_CONTROLLED_FALSE= fi ## Please note that text gets included "verbatim" to the template file, not to ## the resulting config header, so it can easily get mangled when the template ## is processed. There is rarely a need for something other than ## ## AH_BOTTOM([#include ]) ## Include text at the top of the header template file. ##AH_TOP([text]) ## Include text at the bottom of the header template file. ac_config_headers="$ac_config_headers ../src/config-frontend.h" ac_aux_dir= for ac_dir in ../build-config "$srcdir"/../build-config; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in ../build-config \"$srcdir\"/../build-config" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. am__api_version='1.15' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='opari2' VERSION='1.0.2' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a pax tar archive" >&5 $as_echo_n "checking how to create a pax tar archive... " >&6; } # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_pax-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do { echo "$as_me:$LINENO: $_am_tar --version" >&5 ($_am_tar --version) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && break done am__tar="$_am_tar --format=posix -chf - "'"$$tardir"' am__tar_="$_am_tar --format=posix -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x pax -w "$$tardir"' am__tar_='pax -L -x pax -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H pax -L' am__tar_='find "$tardir" -print | cpio -o -H pax -L' am__untar='cpio -i -H pax -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_pax}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -rf conftest.dir if test -s conftest.tar; then { echo "$as_me:$LINENO: $am__untar &5 ($am__untar &5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 (cat conftest.dir/file) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } grep GrepMe conftest.dir/file >/dev/null 2>&1 && break fi done rm -rf conftest.dir if ${am_cv_prog_tar_pax+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_prog_tar_pax=$_am_tool fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_pax" >&5 $as_echo "$am_cv_prog_tar_pax" >&6; } # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test 1 -eq 1; then BUILD_TESTS_TRUE= BUILD_TESTS_FALSE='#' else BUILD_TESTS_TRUE='#' BUILD_TESTS_FALSE= fi # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac ac_scorep_platform="unknown" ac_scorep_cross_compiling="no" ac_scorep_platform_detection="" ac_scorep_platform_detection_given="" ac_scorep_compilers_frontend="" ac_scorep_compilers_backend="" ac_scorep_compilers_mpi="" path_to_compiler_files="$srcdir/vendor/common/build-config/platforms/" if test "x${host_alias}" != "x"; then if test "x${build}" != "x${host}"; then ac_scorep_cross_compiling="yes" fi fi # Check whether --enable-platform-detection was given. if test "${enable_platform_detection+set}" = set; then : enableval=$enable_platform_detection; ac_scorep_platform_detection_given="$enableval" else if test "x${build_alias}" = "x" -a "x${host_alias}" = "x"; then : ac_scorep_platform_detection="yes" else ac_scorep_platform_detection="no" fi fi if test "x${ac_scorep_platform_detection_given}" = "xyes"; then if test "x${build_alias}" != "x" -o "x${host_alias}" != "x"; then as_fn_error $? "it makes no sense to request for platform detection while providing --host and/or --build." "$LINENO" 5 fi fi if test "x${ac_scorep_platform_detection_given}" != "x"; then ac_scorep_platform_detection="$ac_scorep_platform_detection_given" fi if test "x${ac_scorep_platform_detection}" = "xyes"; then if test "x${ac_scorep_platform}" = "xunknown"; then case ${build_os} in linux*) if test "x${build_cpu}" = "xia64" -a -f /etc/sgi-release; then : ac_scorep_platform="altix"; ac_scorep_cross_compiling="no" elif test "x${build_cpu}" = "xpowerpc64" -a -d /bgl/BlueLight; then : ac_scorep_platform="bgl"; ac_scorep_cross_compiling="yes" elif test "x${build_cpu}" = "xpowerpc64" -a -d /bgsys; then : ac_scorep_platform="bgp"; ac_scorep_cross_compiling="yes" elif test "x${build_cpu}" = "xx86_64" -a -d /opt/cray/xt-asyncpe; then : ac_scorep_platform="crayxt"; ac_scorep_cross_compiling="yes" elif test "x${build_cpu}" = "xmips64" -a -d /opt/sicortex; then : ac_scorep_platform="sicortex"; ac_scorep_cross_compiling="yes" else ac_scorep_platform=linux fi ;; esac fi if test "x${ac_scorep_platform}" = "xunknown"; then case ${build_os} in sunos* | solaris*) ac_scorep_platform="sun" ac_scorep_cross_compiling="no" ;; darwin*) ac_scorep_platform="mac" ac_scorep_cross_compiling="no" ;; aix*) ac_scorep_platform="ibm" ac_scorep_cross_compiling="no" ;; unicosmp*) ac_scorep_platform="crayx1" ac_scorep_cross_compiling="no" ;; superux*) ac_scorep_platform="necsx" ac_scorep_cross_compiling="yes" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for platform" >&5 $as_echo_n "checking for platform... " >&6; } if test "x${ac_scorep_platform}" = "xunknown"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_scorep_platform, please contact if you encounter any problems." >&5 $as_echo "$ac_scorep_platform, please contact if you encounter any problems." >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_scorep_platform" >&5 $as_echo "$ac_scorep_platform" >&6; } ac_scorep_compilers_frontend="${path_to_compiler_files}platform-frontend-${ac_scorep_platform}" ac_scorep_compilers_backend="${path_to_compiler_files}platform-backend-${ac_scorep_platform}" ac_scorep_compilers_mpi="${path_to_compiler_files}platform-mpi-${ac_scorep_platform}" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cross compilation" >&5 $as_echo_n "checking for cross compilation... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_scorep_cross_compiling" >&5 $as_echo "$ac_scorep_cross_compiling" >&6; } elif test "x${ac_scorep_platform_detection}" = "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: platform detection disabled." >&5 $as_echo "$as_me: platform detection disabled." >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cross compilation" >&5 $as_echo_n "checking for cross compilation... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_scorep_cross_compiling" >&5 $as_echo "$ac_scorep_cross_compiling" >&6; } ac_scorep_compilers_frontend="${path_to_compiler_files}platform-frontend-user-provided" ac_scorep_compilers_backend="${path_to_compiler_files}platform-backend-user-provided" ac_scorep_compilers_mpi="${path_to_compiler_files}platform-mpi-user-provided" else as_fn_error $? "unknown value for ac_scorep_platform_detection: $ac_scorep_platform_detection" "$LINENO" 5 fi if test "x${ac_scorep_platform}" = "xaltix"; then PLATFORM_ALTIX_TRUE= PLATFORM_ALTIX_FALSE='#' else PLATFORM_ALTIX_TRUE='#' PLATFORM_ALTIX_FALSE= fi if test "x${ac_scorep_platform}" = "xibm" -a "x${build_cpu}" = "xpowerpc"; then PLATFORM_POWER6_TRUE= PLATFORM_POWER6_FALSE='#' else PLATFORM_POWER6_TRUE='#' PLATFORM_POWER6_FALSE= fi if test "x${ac_scorep_platform}" = "xbgl"; then PLATFORM_BGL_TRUE= PLATFORM_BGL_FALSE='#' else PLATFORM_BGL_TRUE='#' PLATFORM_BGL_FALSE= fi if test "x${ac_scorep_platform}" = "xbgp"; then PLATFORM_BGP_TRUE= PLATFORM_BGP_FALSE='#' else PLATFORM_BGP_TRUE='#' PLATFORM_BGP_FALSE= fi if test "x${ac_scorep_platform}" = "xcrayxt"; then PLATFORM_CRAYXT_TRUE= PLATFORM_CRAYXT_FALSE='#' else PLATFORM_CRAYXT_TRUE='#' PLATFORM_CRAYXT_FALSE= fi if test "x${ac_scorep_platform}" = "xsicortex"; then PLATFORM_SICORTEX_TRUE= PLATFORM_SICORTEX_FALSE='#' else PLATFORM_SICORTEX_TRUE='#' PLATFORM_SICORTEX_FALSE= fi if test "x${ac_scorep_platform}" = "xlinux"; then PLATFORM_LINUX_TRUE= PLATFORM_LINUX_FALSE='#' else PLATFORM_LINUX_TRUE='#' PLATFORM_LINUX_FALSE= fi if test "x${ac_scorep_platform}" = "xsun"; then PLATFORM_SUN_TRUE= PLATFORM_SUN_FALSE='#' else PLATFORM_SUN_TRUE='#' PLATFORM_SUN_FALSE= fi if test "x${ac_scorep_platform}" = "xmac"; then PLATFORM_MAC_TRUE= PLATFORM_MAC_FALSE='#' else PLATFORM_MAC_TRUE='#' PLATFORM_MAC_FALSE= fi if test "x${ac_scorep_platform}" = "xcrayx1"; then PLATFORM_CRAYX1_TRUE= PLATFORM_CRAYX1_FALSE='#' else PLATFORM_CRAYX1_TRUE='#' PLATFORM_CRAYX1_FALSE= fi if test "x${ac_scorep_platform}" = "xnecsx"; then PLATFORM_NECSX_TRUE= PLATFORM_NECSX_FALSE='#' else PLATFORM_NECSX_TRUE='#' PLATFORM_NECSX_FALSE= fi DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 $as_echo_n "checking for $CC option to accept ISO C99... " >&6; } if ${ac_cv_prog_cc_c99+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include #include // Check varargs macros. These examples are taken from C99 6.10.3.5. #define debug(...) fprintf (stderr, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK your preprocessor is broken; #endif #if BIG_OK #else your preprocessor is broken; #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\0'; ++i) continue; return 0; } // Check varargs and va_copy. static void test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str; int number; float fnumber; while (*format) { switch (*format++) { case 's': // string str = va_arg (args_copy, const char *); break; case 'd': // int number = va_arg (args_copy, int); break; case 'f': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); } int main () { // Check bool. _Bool success = false; // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. test_varargs ("s, d' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' || dynamic_array[ni.number - 1] != 543); ; return 0; } _ACEOF for ac_arg in '' -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99 -Kc99 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c99" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c99" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 $as_echo "$ac_cv_prog_cc_c99" >&6; } ;; esac if test "x$ac_cv_prog_cc_c99" != xno; then : fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_F77+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$F77"; then ac_cv_prog_F77="$F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_F77="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi F77=$ac_cv_prog_F77 if test -n "$F77"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $F77" >&5 $as_echo "$F77" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$F77" && break done fi if test -z "$F77"; then ac_ct_F77=$F77 for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_F77+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_F77"; then ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_F77="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_F77=$ac_cv_prog_ac_ct_F77 if test -n "$ac_ct_F77"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_F77" >&5 $as_echo "$ac_ct_F77" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_F77" && break done if test "x$ac_ct_F77" = x; then F77="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac F77=$ac_ct_F77 fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done rm -f a.out # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran 77 compiler" >&5 $as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; } if ${ac_cv_f77_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me #endif end _ACEOF if ac_fn_f77_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_f77_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_compiler_gnu" >&5 $as_echo "$ac_cv_f77_compiler_gnu" >&6; } ac_ext=$ac_save_ext ac_test_FFLAGS=${FFLAGS+set} ac_save_FFLAGS=$FFLAGS FFLAGS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $F77 accepts -g" >&5 $as_echo_n "checking whether $F77 accepts -g... " >&6; } if ${ac_cv_prog_f77_g+:} false; then : $as_echo_n "(cached) " >&6 else FFLAGS=-g cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_f77_try_compile "$LINENO"; then : ac_cv_prog_f77_g=yes else ac_cv_prog_f77_g=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_g" >&5 $as_echo "$ac_cv_prog_f77_g" >&6; } if test "$ac_test_FFLAGS" = set; then FFLAGS=$ac_save_FFLAGS elif test $ac_cv_prog_f77_g = yes; then if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-g -O2" else FFLAGS="-g" fi else if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-O2" else FFLAGS= fi fi if test $ac_compiler_gnu = yes; then G77=yes else G77= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor xlf90 f90 pgf90 pghpf epcf90 g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_FC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$FC"; then ac_cv_prog_FC="$FC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_FC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi FC=$ac_cv_prog_FC if test -n "$FC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FC" >&5 $as_echo "$FC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$FC" && break done fi if test -z "$FC"; then ac_ct_FC=$FC for ac_prog in gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor xlf90 f90 pgf90 pghpf epcf90 g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_FC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_FC"; then ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_FC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_FC=$ac_cv_prog_ac_ct_FC if test -n "$ac_ct_FC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FC" >&5 $as_echo "$ac_ct_FC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_FC" && break done if test "x$ac_ct_FC" = x; then FC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac FC=$ac_ct_FC fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done rm -f a.out # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran compiler" >&5 $as_echo_n "checking whether we are using the GNU Fortran compiler... " >&6; } if ${ac_cv_fc_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me #endif end _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_fc_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_compiler_gnu" >&5 $as_echo "$ac_cv_fc_compiler_gnu" >&6; } ac_ext=$ac_save_ext ac_test_FCFLAGS=${FCFLAGS+set} ac_save_FCFLAGS=$FCFLAGS FCFLAGS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $FC accepts -g" >&5 $as_echo_n "checking whether $FC accepts -g... " >&6; } if ${ac_cv_prog_fc_g+:} false; then : $as_echo_n "(cached) " >&6 else FCFLAGS=-g cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : ac_cv_prog_fc_g=yes else ac_cv_prog_fc_g=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_g" >&5 $as_echo "$ac_cv_prog_fc_g" >&6; } if test "$ac_test_FCFLAGS" = set; then FCFLAGS=$ac_save_FCFLAGS elif test $ac_cv_prog_fc_g = yes; then if test "x$ac_cv_fc_compiler_gnu" = xyes; then FCFLAGS="-g -O2" else FCFLAGS="-g" fi else if test "x$ac_cv_fc_compiler_gnu" = xyes; then FCFLAGS="-O2" else FCFLAGS= fi fi if test $ac_compiler_gnu = yes; then GFC=yes else GFC= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ## Determine a C compiler to use. If CC is not already set in the environment, ## check for gcc and cc, then for other C compilers. Set output variable CC to ## the name of the compiler found. ## ## This macro may, however, be invoked with an optional first argument which, ## if specified, must be a blank-separated list of C compilers to search ## for. This just gives the user an opportunity to specify an alternative ## search list for the C compiler. For example, if you didn't like the default ## order, then you could invoke AC_PROG_CC like this: AC_PROG_CC([gcc cl cc]) scorep_compiler_unknown="yes" scorep_compiler_intel="no" scorep_compiler_sun="no" scorep_compiler_ibm="no" scorep_compiler_pgi="no" scorep_compiler_gnu="no" scorep_compiler_sx="no" scorep_compiler_cray="no" scorep_compiler_instrumentation_cppflags="" # I (croessel) don't think that more than one test can possibly succeed, # so I skip extra testing here. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intel compiler" >&5 $as_echo_n "checking for intel compiler... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #if defined(__INTEL_COMPILER) || defined(__ICC) #else # error "Not an Intel compiler." #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : scorep_compiler_intel="yes"; scorep_compiler_unknown="no" else scorep_compiler_intel="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $scorep_compiler_intel" >&5 $as_echo "$scorep_compiler_intel" >&6; } if test "x${scorep_compiler_intel}" = "xyes"; then : scorep_compiler_instrumentation_cppflags="-tcollect" $as_echo "#define FORTRAN_MANGLED(var) var ## _" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sun compiler" >&5 $as_echo_n "checking for sun compiler... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #if defined(__SUNPRO_C) #else # error "Not a Sun compiler." #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : scorep_compiler_sun="yes"; scorep_compiler_unknown="no" else scorep_compiler_sun="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $scorep_compiler_sun" >&5 $as_echo "$scorep_compiler_sun" >&6; } if test "x${scorep_compiler_sun}" = "xyes"; then : scorep_compiler_instrumentation_cppflags="-O -Qoption f90comp -phat" $as_echo "#define FORTRAN_MANGLED(var) var ## _" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ibm compiler" >&5 $as_echo_n "checking for ibm compiler... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #if defined(__IBMC__) # if __IBMC__ >= 800 # else # error "Not an IBM XL compiler." # endif #else # error "Not an IBM compiler." #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : scorep_compiler_ibm="yes"; scorep_compiler_unknown="no" else scorep_compiler_ibm="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $scorep_compiler_ibm" >&5 $as_echo "$scorep_compiler_ibm" >&6; } if test "x${scorep_compiler_ibm}" = "xyes"; then : scorep_compiler_instrumentation_cppflags="-qdebug=function_trace" $as_echo "#define FORTRAN_MANGLED(var) var" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pgi compiler" >&5 $as_echo_n "checking for pgi compiler... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #if defined(__PGI) #else # error "Not a PGI compiler." #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : scorep_compiler_pgi="yes"; scorep_compiler_unknown="no" else scorep_compiler_pgi="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $scorep_compiler_pgi" >&5 $as_echo "$scorep_compiler_pgi" >&6; } if test "x${scorep_compiler_pgi}" = "xyes"; then : scorep_compiler_instrumentation_cppflags="-Mprof=func" $as_echo "#define FORTRAN_MANGLED(var) var ## _" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gnu compiler" >&5 $as_echo_n "checking for gnu compiler... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #if defined(__GNUC__) #if defined(__INTEL_COMPILER) || defined(__ICC) # error "Not a GNU compiler." #endif #else # error "Not a GNU compiler." #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : scorep_compiler_gnu="yes"; scorep_compiler_unknown="no" else scorep_compiler_gnu="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $scorep_compiler_gnu" >&5 $as_echo "$scorep_compiler_gnu" >&6; } if test "x${scorep_compiler_gnu}" = "xyes"; then : scorep_compiler_instrumentation_cppflags="-finstrument-functions" $as_echo "#define FORTRAN_MANGLED(var) var ## _" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sx compiler" >&5 $as_echo_n "checking for sx compiler... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #if defined(__SX_cc) || defined(__hpux) || defined(__hpua) #else # error "Not a SX compiler." #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : scorep_compiler_sx="yes"; scorep_compiler_unknown="no" else scorep_compiler_sx="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $scorep_compiler_sx" >&5 $as_echo "$scorep_compiler_sx" >&6; } if test "x${scorep_compiler_sx}" = "xyes"; then : scorep_compiler_instrumentation_cppflags="" $as_echo "#define FORTRAN_MANGLED(var) sx compiler's Fortran mangling not implemented yet, see ac_scorep_compiler_checks.m4" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cray compiler" >&5 $as_echo_n "checking for cray compiler... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #if defined(_CRAYC) #else # error "Not a Cray compiler." #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : scorep_compiler_cray="yes"; scorep_compiler_unknown="no" else scorep_compiler_cray="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $scorep_compiler_cray" >&5 $as_echo "$scorep_compiler_cray" >&6; } if test "x${scorep_compiler_cray}" = "xyes"; then : scorep_compiler_instrumentation_cppflags="-hfunc_trace" CC="${CC} -hnoomp -O2" CXX="${CXX} -hnoomp -O2" F77="${F77} -hnoomp -O2" FC="${FC} -hnoomp -O2" $as_echo "#define FORTRAN_MANGLED(var) var ## _" >>confdefs.h fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test "x${scorep_compiler_unknown}" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not determine compiler vendor. Compiler instrumentation may not work." >&5 $as_echo "$as_me: WARNING: Could not determine compiler vendor. Compiler instrumentation may not work." >&2;} fi if test "x${scorep_compiler_intel}" = "xyes"; then SCOREP_COMPILER_INTEL_TRUE= SCOREP_COMPILER_INTEL_FALSE='#' else SCOREP_COMPILER_INTEL_TRUE='#' SCOREP_COMPILER_INTEL_FALSE= fi if test "x${scorep_compiler_sun}" = "xyes"; then SCOREP_COMPILER_SUN_TRUE= SCOREP_COMPILER_SUN_FALSE='#' else SCOREP_COMPILER_SUN_TRUE='#' SCOREP_COMPILER_SUN_FALSE= fi if test "x${scorep_compiler_ibm}" = "xyes"; then SCOREP_COMPILER_IBM_TRUE= SCOREP_COMPILER_IBM_FALSE='#' else SCOREP_COMPILER_IBM_TRUE='#' SCOREP_COMPILER_IBM_FALSE= fi if test "x${scorep_compiler_pgi}" = "xyes"; then SCOREP_COMPILER_PGI_TRUE= SCOREP_COMPILER_PGI_FALSE='#' else SCOREP_COMPILER_PGI_TRUE='#' SCOREP_COMPILER_PGI_FALSE= fi if test "x${scorep_compiler_gnu}" = "xyes"; then SCOREP_COMPILER_GNU_TRUE= SCOREP_COMPILER_GNU_FALSE='#' else SCOREP_COMPILER_GNU_TRUE='#' SCOREP_COMPILER_GNU_FALSE= fi if test "x${scorep_compiler_sx}" = "xyes"; then SCOREP_COMPILER_SX_TRUE= SCOREP_COMPILER_SX_FALSE='#' else SCOREP_COMPILER_SX_TRUE='#' SCOREP_COMPILER_SX_FALSE= fi if test "x${scorep_compiler_cray}" = "xyes"; then SCOREP_COMPILER_CRAY_TRUE= SCOREP_COMPILER_CRAY_FALSE='#' else SCOREP_COMPILER_CRAY_TRUE='#' SCOREP_COMPILER_CRAY_FALSE= fi ## If the C compiler is not in C99 mode by default, try to add an option to ## output variable CC to make it so. This macro tries various options that ## select C99 on some system or another. It considers the compiler to be in ## C99 mode if it handles _Bool, // comments, flexible array members, inline, ## signed and unsigned long long int, mixed code and declarations, named ## initialization of structs, restrict, va_copy, varargs macros, variable ## declarations in for loops, and variable length arrays. After calling this ## macro you can check whether the C compiler has been set to accept C99; if ## not, the shell variable ac_cv_prog_cc_c99 is set to `no'. ## Determine a C++ compiler to use. Check whether the environment variable CXX ## or CCC (in that order) is set; if so, then set output variable CXX to its ## value. ## ## Otherwise, if the macro is invoked without an argument, then search for a ## C++ compiler under the likely names (first g++ and c++ then other ## names). If none of those checks succeed, then as a last resort set CXX to ## g++. ## ## This macro may, however, be invoked with an optional first argument which, ## if specified, must be a blank-separated list of C++ compilers to search ## for. This just gives the user an opportunity to specify an alternative ## search list for the C++ compiler. For example, if you didn't like the ## default order, then you could invoke AC_PROG_CXX like this: ## AC_PROG_CXX([gcc cl KCC CC cxx cc++ xlC aCC c++ g++]) ## Enable using per-target flags or subdir-objects with C sources ## Determine a Fortran 77 compiler to use. If F77 is not already set in the ## environment, then check for g77 and f77, and then some other names. Set the ## output variable F77 to the name of the compiler found. ## ## This macro may, however, be invoked with an optional first argument which, ## if specified, must be a blank-separated list of Fortran 77 compilers to ## search for. This just gives the user an opportunity to specify an ## alternative search list for the Fortran 77 compiler. For example, if you ## didn't like the default order, then you could invoke AC_PROG_F77 like this: ## ## AC_PROG_F77([fl32 f77 fort77 xlf g77 f90 xlf90]) ## ## If using g77 (the GNU Fortran 77 compiler), then set the shell variable G77 ## to ‘yes’. If the output variable FFLAGS was not already set in the ## environment, then set it to -g -02 for g77 (or -O2 where g77 does not ## accept -g). Otherwise, set FFLAGS to -g for all other Fortran 77 compilers. scorep_have_f77="no" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the fortran 77 compiler ${F77} works" >&5 $as_echo_n "checking whether the fortran 77 compiler ${F77} works... " >&6; } ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu cat > conftest.$ac_ext <<_ACEOF program main implicit none integer tid end _ACEOF if ac_fn_f77_try_link "$LINENO"; then : scorep_have_f77="yes" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test "x${scorep_have_f77}" == "xyes"; then SCOREP_HAVE_F77_TRUE= SCOREP_HAVE_F77_FALSE='#' else SCOREP_HAVE_F77_TRUE='#' SCOREP_HAVE_F77_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${scorep_have_f77}" >&5 $as_echo "${scorep_have_f77}" >&6; } ## Determine a Fortran compiler to use. If FC is not already set in the ## environment, then dialect is a hint to indicate what Fortran dialect to ## search for; the default is to search for the newest available dialect. Set ## the output variable FC to the name of the compiler found. ## ## By default, newer dialects are preferred over older dialects, but if ## dialect is specified then older dialects are preferred starting with the ## specified dialect. dialect can currently be one of Fortran 77, Fortran 90, ## or Fortran 95. However, this is only a hint of which compiler name to ## prefer (e.g., f90 or f95), and no attempt is made to guarantee that a ## particular language standard is actually supported. Thus, it is preferable ## that you avoid the dialect option, and use AC_PROG_FC only for code ## compatible with the latest Fortran standard. ## ## This macro may, alternatively, be invoked with an optional first argument ## which, if specified, must be a blank-separated list of Fortran compilers to ## search for, just as in AC_PROG_F77. ## ## If the output variable FCFLAGS was not already set in the environment, then ## set it to -g -02 for GNU g77 (or -O2 where g77 does not accept ## -g). Otherwise, set FCFLAGS to -g for all other Fortran compilers. scorep_have_fc="no" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the fortran compiler ${FC} works" >&5 $as_echo_n "checking whether the fortran compiler ${FC} works... " >&6; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu cat > conftest.$ac_ext <<_ACEOF program main implicit none integer tid end _ACEOF if ac_fn_fc_try_link "$LINENO"; then : scorep_have_fc="yes" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test "x${scorep_have_fc}" == "xyes"; then SCOREP_HAVE_FC_TRUE= SCOREP_HAVE_FC_FALSE='#' else SCOREP_HAVE_FC_TRUE='#' SCOREP_HAVE_FC_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${scorep_have_fc}" >&5 $as_echo "${scorep_have_fc}" >&6; } #AC_CXX_NAMESPACES #AC_CXX_HAVE_SSTREAM #AC_CXX_HAVE_STRSTREAM ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu OPENMP_CFLAGS= # Check whether --enable-openmp was given. if test "${enable_openmp+set}" = set; then : enableval=$enable_openmp; fi if test "$enable_openmp" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to support OpenMP" >&5 $as_echo_n "checking for $CC option to support OpenMP... " >&6; } if ${ac_cv_prog_c_openmp+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef _OPENMP choke me #endif #include int main () { return omp_get_num_threads (); } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_prog_c_openmp='none needed' else ac_cv_prog_c_openmp='unsupported' for ac_option in -fopenmp -xopenmp -openmp -mp -omp -qsmp=omp -homp \ -Popenmp --openmp; do ac_save_CFLAGS=$CFLAGS CFLAGS="$CFLAGS $ac_option" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef _OPENMP choke me #endif #include int main () { return omp_get_num_threads (); } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_prog_c_openmp=$ac_option fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS=$ac_save_CFLAGS if test "$ac_cv_prog_c_openmp" != unsupported; then break fi done fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_c_openmp" >&5 $as_echo "$ac_cv_prog_c_openmp" >&6; } case $ac_cv_prog_c_openmp in #( "none needed" | unsupported) ;; #( *) OPENMP_CFLAGS=$ac_cv_prog_c_openmp ;; esac fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test "x${ac_cv_prog_c_openmp}" != "xunsupported" && test "x${enable_openmp}" != "xno"; then OPENMP_SUPPORTED_TRUE= OPENMP_SUPPORTED_FALSE='#' else OPENMP_SUPPORTED_TRUE='#' OPENMP_SUPPORTED_FALSE= fi if test "x${ac_cv_prog_c_openmp}" = "xunsupported"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no suitbale OpenMP compilers found. POMP2 dummy lib will not be build." >&5 $as_echo "$as_me: WARNING: no suitbale OpenMP compilers found. POMP2 dummy lib will not be build." >&2;} else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu OPENMP_CXXFLAGS= # Check whether --enable-openmp was given. if test "${enable_openmp+set}" = set; then : enableval=$enable_openmp; fi if test "$enable_openmp" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CXX option to support OpenMP" >&5 $as_echo_n "checking for $CXX option to support OpenMP... " >&6; } if ${ac_cv_prog_cxx_openmp+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef _OPENMP choke me #endif #include int main () { return omp_get_num_threads (); } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_prog_cxx_openmp='none needed' else ac_cv_prog_cxx_openmp='unsupported' for ac_option in -fopenmp -xopenmp -openmp -mp -omp -qsmp=omp -homp \ -Popenmp --openmp; do ac_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="$CXXFLAGS $ac_option" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef _OPENMP choke me #endif #include int main () { return omp_get_num_threads (); } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_prog_cxx_openmp=$ac_option fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CXXFLAGS=$ac_save_CXXFLAGS if test "$ac_cv_prog_cxx_openmp" != unsupported; then break fi done fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_openmp" >&5 $as_echo "$ac_cv_prog_cxx_openmp" >&6; } case $ac_cv_prog_cxx_openmp in #( "none needed" | unsupported) ;; #( *) OPENMP_CXXFLAGS=$ac_cv_prog_cxx_openmp ;; esac fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu OPENMP_FFLAGS= # Check whether --enable-openmp was given. if test "${enable_openmp+set}" = set; then : enableval=$enable_openmp; fi if test "$enable_openmp" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $F77 option to support OpenMP" >&5 $as_echo_n "checking for $F77 option to support OpenMP... " >&6; } if ${ac_cv_prog_f77_openmp+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main implicit none !$ integer tid tid = 42 call omp_set_num_threads(2) end _ACEOF if ac_fn_f77_try_link "$LINENO"; then : ac_cv_prog_f77_openmp='none needed' else ac_cv_prog_f77_openmp='unsupported' for ac_option in -fopenmp -xopenmp -openmp -mp -omp -qsmp=omp -homp \ -Popenmp --openmp; do ac_save_FFLAGS=$FFLAGS FFLAGS="$FFLAGS $ac_option" cat > conftest.$ac_ext <<_ACEOF program main implicit none !$ integer tid tid = 42 call omp_set_num_threads(2) end _ACEOF if ac_fn_f77_try_link "$LINENO"; then : ac_cv_prog_f77_openmp=$ac_option fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext FFLAGS=$ac_save_FFLAGS if test "$ac_cv_prog_f77_openmp" != unsupported; then break fi done fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_openmp" >&5 $as_echo "$ac_cv_prog_f77_openmp" >&6; } case $ac_cv_prog_f77_openmp in #( "none needed" | unsupported) ;; #( *) OPENMP_FFLAGS=$ac_cv_prog_f77_openmp ;; esac fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu OPENMP_FCFLAGS= # Check whether --enable-openmp was given. if test "${enable_openmp+set}" = set; then : enableval=$enable_openmp; fi if test "$enable_openmp" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $FC option to support OpenMP" >&5 $as_echo_n "checking for $FC option to support OpenMP... " >&6; } if ${ac_cv_prog_fc_openmp+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main implicit none !$ integer tid tid = 42 call omp_set_num_threads(2) end _ACEOF if ac_fn_fc_try_link "$LINENO"; then : ac_cv_prog_fc_openmp='none needed' else ac_cv_prog_fc_openmp='unsupported' for ac_option in -fopenmp -xopenmp -openmp -mp -omp -qsmp=omp -homp \ -Popenmp --openmp; do ac_save_FCFLAGS=$FCFLAGS FCFLAGS="$FCFLAGS $ac_option" cat > conftest.$ac_ext <<_ACEOF program main implicit none !$ integer tid tid = 42 call omp_set_num_threads(2) end _ACEOF if ac_fn_fc_try_link "$LINENO"; then : ac_cv_prog_fc_openmp=$ac_option fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext FCFLAGS=$ac_save_FCFLAGS if test "$ac_cv_prog_fc_openmp" != unsupported; then break fi done fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_openmp" >&5 $as_echo "$ac_cv_prog_fc_openmp" >&6; } case $ac_cv_prog_fc_openmp in #( "none needed" | unsupported) ;; #( *) OPENMP_FCFLAGS=$ac_cv_prog_fc_openmp ;; esac fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether double precision, allocatable arrays are supported" >&5 $as_echo_n "checking whether double precision, allocatable arrays are supported... " >&6; } cat > conftest.$ac_ext <<_ACEOF PROGRAM test TYPE mydata double precision, allocatable :: afF(:,:) END TYPE mydata END PROGRAM test _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : scorep_support_allocatable="yes" else scorep_support_allocatable="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext #AC_COMPILE_IFELSE ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: result: $scorep_support_allocatable" >&5 $as_echo "$scorep_support_allocatable" >&6; } if test "x$scorep_support_allocatable" = "xyes"; then FORTRAN_SUPPORT_ALLOCATABLE_TRUE= FORTRAN_SUPPORT_ALLOCATABLE_FALSE='#' else FORTRAN_SUPPORT_ALLOCATABLE_TRUE='#' FORTRAN_SUPPORT_ALLOCATABLE_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for alignment attribute" >&5 $as_echo_n "checking for alignment attribute... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { int __attribute__((aligned (16))) tpd; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : has_alignment_attribute="yes" else has_alignment_attribute="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test "x${has_alignment_attribute}" = "xyes"; then $as_echo "#define FORTRAN_ALIGNED __attribute__((aligned (16)))" >>confdefs.h else $as_echo "#define FORTRAN_ALIGNED /**/" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $has_alignment_attribute" >&5 $as_echo "$has_alignment_attribute" >&6; } ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi for i in REVISION REVISION_COMMON; do if test ! -e ${srcdir}/../build-config/${i}; then as_fn_error $? "File ${srcdir}/../build-config/${i} must exist." "$LINENO" 5 fi done component_revision=`cat ${srcdir}/../build-config/REVISION` common_revision=`cat ${srcdir}/../build-config/REVISION_COMMON` cat >>confdefs.h <<_ACEOF #define SCOREP_COMPONENT_REVISION "${component_revision}" _ACEOF cat >>confdefs.h <<_ACEOF #define SCOREP_COMMON_REVISION "${common_revision}" _ACEOF case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.6' macro_revision='2.4.6' ltmain=$ac_aux_dir/ltmain.sh # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # 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'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n "$lt_cv_sys_max_cmd_len"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # 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. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac 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'" # 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'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported 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))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 $as_echo "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 $as_echo_n "checking for a working dd... " >&6; } if ${ac_cv_path_lt_DD+:} false; then : $as_echo_n "(cached) " >&6 else printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in dd; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue 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 $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 $as_echo "$ac_cv_path_lt_DD" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 $as_echo_n "checking how to truncate binary pipes... " >&6; } if ${lt_cv_truncate_bin+:} false; then : $as_echo_n "(cached) " >&6 else 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" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 $as_echo "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; 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-%%"` } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || 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. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; 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 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then 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*| \ 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. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) 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" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; 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 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # 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 lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[012][,.]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; 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' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # 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$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done func_stripname_cnf () { case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; esac } # func_stripname_cnf # Set options # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac else enable_shared=no fi enable_dlopen=no enable_win32_dll=no # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else pic_mode=default fi # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac else enable_fast_install=yes fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 $as_echo_n "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. if test "${with_aix_soname+set}" = set; then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else if ${lt_cv_with_aix_soname+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 $as_echo "$with_aix_soname" >&6; } 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 # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o func_cc_basename $compiler cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/${ac_tool_prefix}file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-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). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test no = "$hard_links"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $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' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$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' archive_expsym_cmds='$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' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; 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" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; 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 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to 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. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`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' 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 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 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 exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='$wl-f,' 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. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; 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 # 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' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; 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 hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' $wl-bernotok' allow_undefined_flag=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$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. archive_expsym_cmds="$archive_expsym_cmds"'~$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 archive_expsym_cmds="$archive_expsym_cmds"'~$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 archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $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=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi link_all_deplibs=no else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' else archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$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' archive_expsym_cmds='$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' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='$wl-z,text' allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...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 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 test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # 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 # 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 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)' # 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 shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # 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 ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; 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' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; 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 ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # 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' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; 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. hardcode_libdir_flag_spec='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # 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. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no 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' 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' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # 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=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; 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 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 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # 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, )" && test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; 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_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen=shl_load else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen=dlopen else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi fi fi fi fi fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report what library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && 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 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 fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu else _lt_caught_CXX_error=yes fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC func_cc_basename $compiler cc_basename=$func_cc_basename_result 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 lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_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 archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$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' hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # 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 case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done 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 exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='$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. hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no ;; esac if test yes = "$GXX"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; 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 # 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' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec_CXX='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; 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. no_undefined_flag_CXX='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$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 else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' $wl-bernotok' allow_undefined_flag_CXX=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes archive_expsym_cmds_CXX='$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. archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$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 archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$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 archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $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=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='$wl--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$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... archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $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' else ld_shlibs_CXX=no fi ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds_CXX="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" if test yes != "$lt_cv_apple_cc_single_mod"; then archive_cmds_CXX="\$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" archive_expsym_cmds_CXX="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 ld_shlibs_CXX=no fi ;; os2*) hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_minus_L_CXX=yes allow_undefined_flag_CXX=unsupported shrext_cmds=.dll archive_cmds_CXX='$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' archive_expsym_cmds_CXX='$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' old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes_CXX=yes ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; hpux9*) hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='$wl-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$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' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then archive_cmds_CXX='$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' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='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++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then archive_cmds_CXX='$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 archive_cmds_CXX='$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 link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='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' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$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 archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='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`"' old_archive_cmds_CXX='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' archive_cmds_CXX='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' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$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 hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' whole_archive_flag_spec_CXX='$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++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$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 hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='$wl-E' whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='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' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' archive_cmds_CXX='$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' hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$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' archive_expsym_cmds_CXX='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' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' case $host in osf3*) archive_cmds_CXX='$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' ;; *) archive_cmds_CXX='$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 hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='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' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$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. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; then no_undefined_flag_CXX=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' archive_expsym_cmds_CXX='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' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' archive_expsym_cmds_CXX='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' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='$wl-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$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 # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='$wl-z,text' allow_undefined_flag_CXX='$wl-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && can_build_shared=no GCC_CXX=$GXX LD_CXX=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; 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 "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX=$prev$p else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX=$prev$p else postdeps_CXX="${postdeps_CXX} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$predep_objects_CXX"; then predep_objects_CXX=$p else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX=$p else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi lt_prog_compiler_pic_CXX='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_CXX='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test no = "$hard_links"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to 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. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$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' else export_symbols_cmds_CXX='`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' fi ;; pw32*) export_symbols_cmds_CXX=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs_CXX=no ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # 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 # 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 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)' # 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 shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; 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' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; 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' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; 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 ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # 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' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; 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. hardcode_libdir_flag_spec_CXX='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # 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. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no 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' 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' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # 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=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; 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 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 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test yes = "$hardcode_automatic_CXX"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct_CXX" && # 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, CXX)" && test no != "$hardcode_minus_L_CXX"; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test relink = "$hardcode_action_CXX" || test yes = "$inherit_rpath_CXX"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi archive_cmds_need_lc_F77=no allow_undefined_flag_F77= always_export_symbols_F77=no archive_expsym_cmds_F77= export_dynamic_flag_spec_F77= hardcode_direct_F77=no hardcode_direct_absolute_F77=no hardcode_libdir_flag_spec_F77= hardcode_libdir_separator_F77= hardcode_minus_L_F77=no hardcode_automatic_F77=no inherit_rpath_F77=no module_cmds_F77= module_expsym_cmds_F77= link_all_deplibs_F77=unknown old_archive_cmds_F77=$old_archive_cmds reload_flag_F77=$reload_flag reload_cmds_F77=$reload_cmds no_undefined_flag_F77= whole_archive_flag_spec_F77= enable_shared_with_static_runtimes_F77=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o objext_F77=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_F77"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC compiler_F77=$CC func_cc_basename $compiler cc_basename=$func_cc_basename_result GCC=$G77 if test -n "$compiler"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && 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 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 fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } GCC_F77=$G77 LD_F77=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... lt_prog_compiler_wl_F77= lt_prog_compiler_pic_F77= lt_prog_compiler_static_F77= if test yes = "$GCC"; then lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_static_F77='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' fi lt_prog_compiler_pic_F77='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_F77='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_F77='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_F77='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_F77='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_F77= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_F77=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_F77='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_F77=-Kconform_pic fi ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl_F77='-Xlinker ' if test -n "$lt_prog_compiler_pic_F77"; then lt_prog_compiler_pic_F77="-Xcompiler $lt_prog_compiler_pic_F77" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_F77='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' else lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_F77='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl_F77='-Wl,-Wl,,' lt_prog_compiler_pic_F77='-PIC' lt_prog_compiler_static_F77='-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). lt_prog_compiler_pic_F77='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_F77='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_F77='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_F77='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_F77='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_F77='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-fPIC' lt_prog_compiler_static_F77='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='--shared' lt_prog_compiler_static_F77='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl_F77='-Wl,-Wl,,' lt_prog_compiler_pic_F77='-PIC' lt_prog_compiler_static_F77='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-fPIC' lt_prog_compiler_static_F77='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-fpic' lt_prog_compiler_static_F77='-Bstatic' ;; ccc*) lt_prog_compiler_wl_F77='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-qpic' lt_prog_compiler_static_F77='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' lt_prog_compiler_wl_F77='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' lt_prog_compiler_wl_F77='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' lt_prog_compiler_wl_F77='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-fPIC' lt_prog_compiler_static_F77='-static' ;; *Portland\ Group*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-fpic' lt_prog_compiler_static_F77='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_F77='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_F77='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; rdos*) lt_prog_compiler_static_F77='-non_shared' ;; solaris*) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl_F77='-Qoption ld ';; *) lt_prog_compiler_wl_F77='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl_F77='-Qoption ld ' lt_prog_compiler_pic_F77='-PIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_F77='-Kconform_pic' lt_prog_compiler_static_F77='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; unicos*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_can_build_shared_F77=no ;; uts4*) lt_prog_compiler_pic_F77='-pic' lt_prog_compiler_static_F77='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_F77=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_F77= ;; *) lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_F77+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_F77=$lt_prog_compiler_pic_F77 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_F77" >&5 $as_echo "$lt_cv_prog_compiler_pic_F77" >&6; } lt_prog_compiler_pic_F77=$lt_cv_prog_compiler_pic_F77 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_F77"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... " >&6; } if ${lt_cv_prog_compiler_pic_works_F77+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_F77=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_F77" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_F77=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_F77" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_F77" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works_F77"; then case $lt_prog_compiler_pic_F77 in "" | " "*) ;; *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; esac else lt_prog_compiler_pic_F77= lt_prog_compiler_can_build_shared_F77=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_F77+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_F77=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_F77=yes fi else lt_cv_prog_compiler_static_works_F77=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_F77" >&5 $as_echo "$lt_cv_prog_compiler_static_works_F77" >&6; } if test yes = "$lt_cv_prog_compiler_static_works_F77"; then : else lt_prog_compiler_static_F77= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_F77+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_F77=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_F77=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_F77" >&5 $as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_F77+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_F77=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_F77=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_F77" >&5 $as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o_F77" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test no = "$hard_links"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag_F77= always_export_symbols_F77=no archive_cmds_F77= archive_expsym_cmds_F77= compiler_needs_object_F77=no enable_shared_with_static_runtimes_F77=no export_dynamic_flag_spec_F77= export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic_F77=no hardcode_direct_F77=no hardcode_direct_absolute_F77=no hardcode_libdir_flag_spec_F77= hardcode_libdir_separator_F77= hardcode_minus_L_F77=no hardcode_shlibpath_var_F77=unsupported inherit_rpath_F77=no link_all_deplibs_F77=unknown module_cmds_F77= module_expsym_cmds_F77= old_archive_from_new_cmds_F77= old_archive_from_expsyms_cmds_F77= thread_safe_flag_spec_F77= whole_archive_flag_spec_F77= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_F77= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms_F77='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs_F77=no ;; esac ld_shlibs_F77=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_F77='$wl-rpath $wl$libdir' export_dynamic_flag_spec_F77='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_F77=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec_F77= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs_F77=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_F77='' ;; m68k) archive_cmds_F77='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_F77=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs_F77=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_F77='-L$libdir' export_dynamic_flag_spec_F77='$wl--export-all-symbols' allow_undefined_flag_F77=unsupported always_export_symbols_F77=no enable_shared_with_static_runtimes_F77=yes export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_F77='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_F77='$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... archive_expsym_cmds_F77='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $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' else ld_shlibs_F77=no fi ;; haiku*) archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs_F77=yes ;; os2*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes allow_undefined_flag_F77=unsupported shrext_cmds=.dll archive_cmds_F77='$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' archive_expsym_cmds_F77='$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' old_archive_From_new_cmds_F77='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes_F77=yes ;; interix[3-9]*) hardcode_direct_F77=no hardcode_shlibpath_var_F77=no hardcode_libdir_flag_spec_F77='$wl-rpath,$libdir' export_dynamic_flag_spec_F77='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_F77='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 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" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec_F77='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec_F77='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec_F77= 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 whole_archive_flag_spec_F77='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_F77=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec_F77='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_F77=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_F77='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) export_dynamic_flag_spec_F77='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec_F77='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec_F77='$wl-rpath $wl$libdir' archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_F77='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs_F77=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs_F77=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs_F77=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec_F77='$wl-rpath $wl$libdir' archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac ;; sunos4*) archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac if test no = "$ld_shlibs_F77"; then runpath_var= hardcode_libdir_flag_spec_F77= export_dynamic_flag_spec_F77= whole_archive_flag_spec_F77= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_F77=unsupported always_export_symbols_F77=yes archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_F77=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_F77=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to 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. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_F77='$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' else export_symbols_cmds_F77='`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' 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 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 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 exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_F77='' hardcode_direct_F77=yes hardcode_direct_absolute_F77=yes hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes file_list_spec_F77='$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. hardcode_direct_F77=no hardcode_direct_absolute_F77=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_F77=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_F77=yes hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_libdir_separator_F77= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; 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 # 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' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec_F77='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_F77=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_F77='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__F77+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_f77_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__F77=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__F77"; then lt_cv_aix_libpath__F77=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__F77"; then lt_cv_aix_libpath__F77=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__F77 fi hardcode_libdir_flag_spec_F77='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_F77='$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 else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec_F77='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag_F77="-z nodefs" archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__F77+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_f77_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__F77=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__F77"; then lt_cv_aix_libpath__F77=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__F77"; then lt_cv_aix_libpath__F77=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__F77 fi hardcode_libdir_flag_spec_F77='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_F77=' $wl-bernotok' allow_undefined_flag_F77=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_F77='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_F77='$convenience' fi archive_cmds_need_lc_F77=yes archive_expsym_cmds_F77='$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. archive_expsym_cmds_F77="$archive_expsym_cmds_F77"'~$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 archive_expsym_cmds_F77="$archive_expsym_cmds_F77"'~$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 archive_expsym_cmds_F77="$archive_expsym_cmds_F77"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds_F77="$archive_expsym_cmds_F77"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_F77='' ;; m68k) archive_cmds_F77='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec_F77=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec_F77=' ' allow_undefined_flag_F77=unsupported always_export_symbols_F77=yes file_list_spec_F77='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds_F77='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds_F77='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $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=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, F77)='true' enable_shared_with_static_runtimes_F77=yes exclude_expsyms_F77='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds_F77='chmod 644 $oldlib' postlink_cmds_F77='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec_F77=' ' allow_undefined_flag_F77=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds_F77='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes_F77=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_F77=no hardcode_direct_F77=no hardcode_automatic_F77=yes hardcode_shlibpath_var_F77=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec_F77='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' compiler_needs_object_F77=yes else whole_archive_flag_spec_F77='' fi link_all_deplibs_F77=yes allow_undefined_flag_F77=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds_F77="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds_F77="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds_F77="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs_F77=no fi ;; dgux*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds_F77='$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' else archive_cmds_F77='$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' fi hardcode_libdir_flag_spec_F77='$wl+b $wl$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes export_dynamic_flag_spec_F77='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds_F77='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec_F77='$wl+b $wl$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes hardcode_direct_absolute_F77=yes export_dynamic_flag_spec_F77='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds_F77='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_F77='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds_F77='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_F77='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$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 hardcode_libdir_flag_spec_F77='$wl+b $wl$libdir' hardcode_libdir_separator_F77=: case $host_cpu in hppa*64*|ia64*) hardcode_direct_F77=no hardcode_shlibpath_var_F77=no ;; *) hardcode_direct_F77=yes hardcode_direct_absolute_F77=yes export_dynamic_flag_spec_F77='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat > conftest.$ac_ext <<_ACEOF subroutine foo end _ACEOF if ac_fn_f77_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds_F77='$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 link_all_deplibs_F77=no else archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc_F77='no' hardcode_libdir_flag_spec_F77='$wl-rpath $wl$libdir' hardcode_libdir_separator_F77=: inherit_rpath_F77=yes link_all_deplibs_F77=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs_F77=yes archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; newsos6) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_libdir_flag_spec_F77='$wl-rpath $wl$libdir' hardcode_libdir_separator_F77=: hardcode_shlibpath_var_F77=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no hardcode_direct_absolute_F77=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_F77='$wl-rpath,$libdir' export_dynamic_flag_spec_F77='$wl-E' else archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='$wl-rpath,$libdir' fi else ld_shlibs_F77=no fi ;; os2*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes allow_undefined_flag_F77=unsupported shrext_cmds=.dll archive_cmds_F77='$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' archive_expsym_cmds_F77='$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' old_archive_From_new_cmds_F77='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes_F77=yes ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag_F77=' $wl-expect_unresolved $wl\*' archive_cmds_F77='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc_F77='no' hardcode_libdir_flag_spec_F77='$wl-rpath $wl$libdir' hardcode_libdir_separator_F77=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag_F77=' $wl-expect_unresolved $wl\*' archive_cmds_F77='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec_F77='$wl-rpath $wl$libdir' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_F77='-rpath $libdir' fi archive_cmds_need_lc_F77='no' hardcode_libdir_separator_F77=: ;; solaris*) no_undefined_flag_F77=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds_F77='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds_F77='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds_F77='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_shlibpath_var_F77=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec_F77='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs_F77=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_F77='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; sysv4) case $host_vendor in sni) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_F77='$CC -r -o $output$reload_objs' hardcode_direct_F77=no ;; motorola) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_F77=no ;; sysv4.3*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no export_dynamic_flag_spec_F77='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_F77=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_F77='$wl-z,text' archive_cmds_need_lc_F77=no hardcode_shlibpath_var_F77=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds_F77='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$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 # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_F77='$wl-z,text' allow_undefined_flag_F77='$wl-z,nodefs' archive_cmds_need_lc_F77=no hardcode_shlibpath_var_F77=no hardcode_libdir_flag_spec_F77='$wl-R,$libdir' hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes export_dynamic_flag_spec_F77='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds_F77='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; *) ld_shlibs_F77=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec_F77='$wl-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_F77" >&5 $as_echo "$ld_shlibs_F77" >&6; } test no = "$ld_shlibs_F77" && can_build_shared=no with_gnu_ld_F77=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_F77" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_F77=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds_F77 in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_F77+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_F77 pic_flag=$lt_prog_compiler_pic_F77 compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_F77 allow_undefined_flag_F77= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_F77 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_F77 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_F77=no else lt_cv_archive_cmds_need_lc_F77=yes fi allow_undefined_flag_F77=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_F77" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_F77" >&6; } archive_cmds_need_lc_F77=$lt_cv_archive_cmds_need_lc_F77 ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # 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 # 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 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)' # 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 shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; 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' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; 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' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; 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 ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # 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' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; 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. hardcode_libdir_flag_spec_F77='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_F77\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_F77\"" cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_f77_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # 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. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no 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' 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' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # 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=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; 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 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 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_F77= if test -n "$hardcode_libdir_flag_spec_F77" || test -n "$runpath_var_F77" || test yes = "$hardcode_automatic_F77"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct_F77" && # 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, F77)" && test no != "$hardcode_minus_L_F77"; then # Linking always hardcodes the temporary library directory. hardcode_action_F77=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_F77=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_F77=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_F77" >&5 $as_echo "$hardcode_action_F77" >&6; } if test relink = "$hardcode_action_F77" || test yes = "$inherit_rpath_F77"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_F77" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi archive_cmds_need_lc_FC=no allow_undefined_flag_FC= always_export_symbols_FC=no archive_expsym_cmds_FC= export_dynamic_flag_spec_FC= hardcode_direct_FC=no hardcode_direct_absolute_FC=no hardcode_libdir_flag_spec_FC= hardcode_libdir_separator_FC= hardcode_minus_L_FC=no hardcode_automatic_FC=no inherit_rpath_FC=no module_cmds_FC= module_expsym_cmds_FC= link_all_deplibs_FC=unknown old_archive_cmds_FC=$old_archive_cmds reload_flag_FC=$reload_flag reload_cmds_FC=$reload_cmds no_undefined_flag_FC= whole_archive_flag_spec_FC= enable_shared_with_static_runtimes_FC=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o objext_FC=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_FC"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu compiler_FC=$CC func_cc_basename $compiler cc_basename=$func_cc_basename_result if test -n "$compiler"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && 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 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 fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } GCC_FC=$ac_cv_fc_compiler_gnu LD_FC=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_FC= postdep_objects_FC= predeps_FC= postdeps_FC= compiler_lib_search_path_FC= cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; 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 "$compiler_lib_search_path_FC"; then compiler_lib_search_path_FC=$prev$p else compiler_lib_search_path_FC="${compiler_lib_search_path_FC} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_FC"; then postdeps_FC=$prev$p else postdeps_FC="${postdeps_FC} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$predep_objects_FC"; then predep_objects_FC=$p else predep_objects_FC="$predep_objects_FC $p" fi else if test -z "$postdep_objects_FC"; then postdep_objects_FC=$p else postdep_objects_FC="$postdep_objects_FC $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling FC test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case " $postdeps_FC " in *" -lc "*) archive_cmds_need_lc_FC=no ;; esac compiler_lib_search_dirs_FC= if test -n "${compiler_lib_search_path_FC}"; then compiler_lib_search_dirs_FC=`echo " ${compiler_lib_search_path_FC}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_FC= lt_prog_compiler_pic_FC= lt_prog_compiler_static_FC= if test yes = "$GCC"; then lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_static_FC='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_FC='-Bstatic' fi lt_prog_compiler_pic_FC='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_FC='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic_FC='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_FC='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_FC='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_FC='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_FC= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic_FC='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_FC=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_FC='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_FC=-Kconform_pic fi ;; *) lt_prog_compiler_pic_FC='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl_FC='-Xlinker ' if test -n "$lt_prog_compiler_pic_FC"; then lt_prog_compiler_pic_FC="-Xcompiler $lt_prog_compiler_pic_FC" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_FC='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_FC='-Bstatic' else lt_prog_compiler_static_FC='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_FC='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl_FC='-Wl,-Wl,,' lt_prog_compiler_pic_FC='-PIC' lt_prog_compiler_static_FC='-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). lt_prog_compiler_pic_FC='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_FC='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_FC='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_FC='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_FC='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_FC='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_FC='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-fPIC' lt_prog_compiler_static_FC='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='--shared' lt_prog_compiler_static_FC='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl_FC='-Wl,-Wl,,' lt_prog_compiler_pic_FC='-PIC' lt_prog_compiler_static_FC='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-fPIC' lt_prog_compiler_static_FC='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-fpic' lt_prog_compiler_static_FC='-Bstatic' ;; ccc*) lt_prog_compiler_wl_FC='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_FC='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-qpic' lt_prog_compiler_static_FC='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' lt_prog_compiler_wl_FC='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' lt_prog_compiler_wl_FC='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' lt_prog_compiler_wl_FC='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-fPIC' lt_prog_compiler_static_FC='-static' ;; *Portland\ Group*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-fpic' lt_prog_compiler_static_FC='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_FC='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_FC='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_FC='-non_shared' ;; rdos*) lt_prog_compiler_static_FC='-non_shared' ;; solaris*) lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl_FC='-Qoption ld ';; *) lt_prog_compiler_wl_FC='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl_FC='-Qoption ld ' lt_prog_compiler_pic_FC='-PIC' lt_prog_compiler_static_FC='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_FC='-Kconform_pic' lt_prog_compiler_static_FC='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' ;; unicos*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_can_build_shared_FC=no ;; uts4*) lt_prog_compiler_pic_FC='-pic' lt_prog_compiler_static_FC='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_FC=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_FC= ;; *) lt_prog_compiler_pic_FC="$lt_prog_compiler_pic_FC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_FC+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_FC=$lt_prog_compiler_pic_FC fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_FC" >&5 $as_echo "$lt_cv_prog_compiler_pic_FC" >&6; } lt_prog_compiler_pic_FC=$lt_cv_prog_compiler_pic_FC # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_FC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_FC works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_FC works... " >&6; } if ${lt_cv_prog_compiler_pic_works_FC+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_FC=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_FC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_FC=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_FC" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_FC" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works_FC"; then case $lt_prog_compiler_pic_FC in "" | " "*) ;; *) lt_prog_compiler_pic_FC=" $lt_prog_compiler_pic_FC" ;; esac else lt_prog_compiler_pic_FC= lt_prog_compiler_can_build_shared_FC=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_FC eval lt_tmp_static_flag=\"$lt_prog_compiler_static_FC\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_FC+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_FC=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_FC=yes fi else lt_cv_prog_compiler_static_works_FC=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_FC" >&5 $as_echo "$lt_cv_prog_compiler_static_works_FC" >&6; } if test yes = "$lt_cv_prog_compiler_static_works_FC"; then : else lt_prog_compiler_static_FC= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_FC+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_FC=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_FC=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5 $as_echo "$lt_cv_prog_compiler_c_o_FC" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_FC+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_FC=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_FC=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5 $as_echo "$lt_cv_prog_compiler_c_o_FC" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o_FC" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test no = "$hard_links"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag_FC= always_export_symbols_FC=no archive_cmds_FC= archive_expsym_cmds_FC= compiler_needs_object_FC=no enable_shared_with_static_runtimes_FC=no export_dynamic_flag_spec_FC= export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic_FC=no hardcode_direct_FC=no hardcode_direct_absolute_FC=no hardcode_libdir_flag_spec_FC= hardcode_libdir_separator_FC= hardcode_minus_L_FC=no hardcode_shlibpath_var_FC=unsupported inherit_rpath_FC=no link_all_deplibs_FC=unknown module_cmds_FC= module_expsym_cmds_FC= old_archive_from_new_cmds_FC= old_archive_from_expsyms_cmds_FC= thread_safe_flag_spec_FC= whole_archive_flag_spec_FC= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_FC= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms_FC='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs_FC=no ;; esac ld_shlibs_FC=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir' export_dynamic_flag_spec_FC='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_FC=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec_FC= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs_FC=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_FC='' ;; m68k) archive_cmds_FC='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_minus_L_FC=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_FC=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_FC='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs_FC=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, FC) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_FC='-L$libdir' export_dynamic_flag_spec_FC='$wl--export-all-symbols' allow_undefined_flag_FC=unsupported always_export_symbols_FC=no enable_shared_with_static_runtimes_FC=yes export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_FC='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_FC='$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... archive_expsym_cmds_FC='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $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' else ld_shlibs_FC=no fi ;; haiku*) archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs_FC=yes ;; os2*) hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_minus_L_FC=yes allow_undefined_flag_FC=unsupported shrext_cmds=.dll archive_cmds_FC='$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' archive_expsym_cmds_FC='$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' old_archive_From_new_cmds_FC='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes_FC=yes ;; interix[3-9]*) hardcode_direct_FC=no hardcode_shlibpath_var_FC=no hardcode_libdir_flag_spec_FC='$wl-rpath,$libdir' export_dynamic_flag_spec_FC='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_FC='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 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" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec_FC='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec_FC='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec_FC= 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 whole_archive_flag_spec_FC='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_FC=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec_FC='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_FC=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds_FC='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) export_dynamic_flag_spec_FC='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec_FC='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir' archive_cmds_FC='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs_FC=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_FC='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs_FC=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_FC=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs_FC=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir' archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_FC=no fi ;; esac ;; sunos4*) archive_cmds_FC='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_FC=yes hardcode_shlibpath_var_FC=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_FC=no fi ;; esac if test no = "$ld_shlibs_FC"; then runpath_var= hardcode_libdir_flag_spec_FC= export_dynamic_flag_spec_FC= whole_archive_flag_spec_FC= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_FC=unsupported always_export_symbols_FC=yes archive_expsym_cmds_FC='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_FC=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_FC=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to 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. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_FC='$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' else export_symbols_cmds_FC='`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' 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 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 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 exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_FC='' hardcode_direct_FC=yes hardcode_direct_absolute_FC=yes hardcode_libdir_separator_FC=':' link_all_deplibs_FC=yes file_list_spec_FC='$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. hardcode_direct_FC=no hardcode_direct_absolute_FC=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_FC=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_FC=yes hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_libdir_separator_FC= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; 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 # 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' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec_FC='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_FC=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_FC='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__FC+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_fc_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__FC=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__FC"; then lt_cv_aix_libpath__FC=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__FC"; then lt_cv_aix_libpath__FC=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__FC fi hardcode_libdir_flag_spec_FC='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_FC='$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 else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec_FC='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag_FC="-z nodefs" archive_expsym_cmds_FC="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__FC+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_fc_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__FC=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__FC"; then lt_cv_aix_libpath__FC=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__FC"; then lt_cv_aix_libpath__FC=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__FC fi hardcode_libdir_flag_spec_FC='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_FC=' $wl-bernotok' allow_undefined_flag_FC=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_FC='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_FC='$convenience' fi archive_cmds_need_lc_FC=yes archive_expsym_cmds_FC='$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. archive_expsym_cmds_FC="$archive_expsym_cmds_FC"'~$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 archive_expsym_cmds_FC="$archive_expsym_cmds_FC"'~$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 archive_expsym_cmds_FC="$archive_expsym_cmds_FC"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds_FC="$archive_expsym_cmds_FC"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_FC='' ;; m68k) archive_cmds_FC='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_minus_L_FC=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec_FC=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec_FC=' ' allow_undefined_flag_FC=unsupported always_export_symbols_FC=yes file_list_spec_FC='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds_FC='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds_FC='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $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=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, FC)='true' enable_shared_with_static_runtimes_FC=yes exclude_expsyms_FC='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds_FC='chmod 644 $oldlib' postlink_cmds_FC='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec_FC=' ' allow_undefined_flag_FC=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds_FC='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds_FC='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_FC='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes_FC=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_FC=no hardcode_direct_FC=no hardcode_automatic_FC=yes hardcode_shlibpath_var_FC=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec_FC='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' compiler_needs_object_FC=yes else whole_archive_flag_spec_FC='' fi link_all_deplibs_FC=yes allow_undefined_flag_FC=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds_FC="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds_FC="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds_FC="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds_FC="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs_FC=no fi ;; dgux*) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_shlibpath_var_FC=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_FC='-R$libdir' hardcode_direct_FC=yes hardcode_shlibpath_var_FC=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_FC=yes hardcode_minus_L_FC=yes hardcode_shlibpath_var_FC=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_FC='-R$libdir' hardcode_direct_FC=yes hardcode_shlibpath_var_FC=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds_FC='$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' else archive_cmds_FC='$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' fi hardcode_libdir_flag_spec_FC='$wl+b $wl$libdir' hardcode_libdir_separator_FC=: hardcode_direct_FC=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_FC=yes export_dynamic_flag_spec_FC='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds_FC='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_FC='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec_FC='$wl+b $wl$libdir' hardcode_libdir_separator_FC=: hardcode_direct_FC=yes hardcode_direct_absolute_FC=yes export_dynamic_flag_spec_FC='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_FC=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds_FC='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_FC='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_FC='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds_FC='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_FC='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_FC='$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 hardcode_libdir_flag_spec_FC='$wl+b $wl$libdir' hardcode_libdir_separator_FC=: case $host_cpu in hppa*64*|ia64*) hardcode_direct_FC=no hardcode_shlibpath_var_FC=no ;; *) hardcode_direct_FC=yes hardcode_direct_absolute_FC=yes export_dynamic_flag_spec_FC='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_FC=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat > conftest.$ac_ext <<_ACEOF subroutine foo end _ACEOF if ac_fn_fc_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds_FC='$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 link_all_deplibs_FC=no else archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc_FC='no' hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir' hardcode_libdir_separator_FC=: inherit_rpath_FC=yes link_all_deplibs_FC=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs_FC=yes archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_FC='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_FC='-R$libdir' hardcode_direct_FC=yes hardcode_shlibpath_var_FC=no ;; newsos6) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_FC=yes hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir' hardcode_libdir_separator_FC=: hardcode_shlibpath_var_FC=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct_FC=yes hardcode_shlibpath_var_FC=no hardcode_direct_absolute_FC=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_FC='$wl-rpath,$libdir' export_dynamic_flag_spec_FC='$wl-E' else archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_FC='$wl-rpath,$libdir' fi else ld_shlibs_FC=no fi ;; os2*) hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_minus_L_FC=yes allow_undefined_flag_FC=unsupported shrext_cmds=.dll archive_cmds_FC='$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' archive_expsym_cmds_FC='$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' old_archive_From_new_cmds_FC='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes_FC=yes ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag_FC=' $wl-expect_unresolved $wl\*' archive_cmds_FC='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag_FC=' -expect_unresolved \*' archive_cmds_FC='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc_FC='no' hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir' hardcode_libdir_separator_FC=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag_FC=' $wl-expect_unresolved $wl\*' archive_cmds_FC='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir' else allow_undefined_flag_FC=' -expect_unresolved \*' archive_cmds_FC='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds_FC='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_FC='-rpath $libdir' fi archive_cmds_need_lc_FC='no' hardcode_libdir_separator_FC=: ;; solaris*) no_undefined_flag_FC=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds_FC='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds_FC='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds_FC='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec_FC='-R$libdir' hardcode_shlibpath_var_FC=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec_FC='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec_FC='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs_FC=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_FC='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_FC='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_direct_FC=yes hardcode_minus_L_FC=yes hardcode_shlibpath_var_FC=no ;; sysv4) case $host_vendor in sni) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_FC=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_FC='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_FC='$CC -r -o $output$reload_objs' hardcode_direct_FC=no ;; motorola) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_FC=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_FC=no ;; sysv4.3*) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_FC=no export_dynamic_flag_spec_FC='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_FC=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_FC=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_FC='$wl-z,text' archive_cmds_need_lc_FC=no hardcode_shlibpath_var_FC=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds_FC='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_FC='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='$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 # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_FC='$wl-z,text' allow_undefined_flag_FC='$wl-z,nodefs' archive_cmds_need_lc_FC=no hardcode_shlibpath_var_FC=no hardcode_libdir_flag_spec_FC='$wl-R,$libdir' hardcode_libdir_separator_FC=':' link_all_deplibs_FC=yes export_dynamic_flag_spec_FC='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds_FC='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_FC='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_shlibpath_var_FC=no ;; *) ld_shlibs_FC=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec_FC='$wl-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_FC" >&5 $as_echo "$ld_shlibs_FC" >&6; } test no = "$ld_shlibs_FC" && can_build_shared=no with_gnu_ld_FC=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_FC" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_FC=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds_FC in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_FC+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_FC pic_flag=$lt_prog_compiler_pic_FC compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_FC allow_undefined_flag_FC= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_FC=no else lt_cv_archive_cmds_need_lc_FC=yes fi allow_undefined_flag_FC=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_FC" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_FC" >&6; } archive_cmds_need_lc_FC=$lt_cv_archive_cmds_need_lc_FC ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # 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 # 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 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)' # 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 shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; 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' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; 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' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; 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 ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # 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' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; 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. hardcode_libdir_flag_spec_FC='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_FC\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_FC\"" cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_fc_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # 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. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no 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' 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' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # 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=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; 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 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 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_FC= if test -n "$hardcode_libdir_flag_spec_FC" || test -n "$runpath_var_FC" || test yes = "$hardcode_automatic_FC"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct_FC" && # 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, FC)" && test no != "$hardcode_minus_L_FC"; then # Linking always hardcodes the temporary library directory. hardcode_action_FC=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_FC=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_FC=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_FC" >&5 $as_echo "$hardcode_action_FC" >&6; } if test relink = "$hardcode_action_FC" || test yes = "$inherit_rpath_FC"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_FC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_commands="$ac_config_commands libtool" # Only expand once: ac_config_files="$ac_config_files Makefile" ac_config_files="$ac_config_files ../test/jacobi_c_test.sh" ac_config_files="$ac_config_files ../test/jacobi_c++_test.sh" ac_config_files="$ac_config_files ../test/jacobi_f90_test.sh" ac_config_files="$ac_config_files ../test/jacobi_f77_test.sh" ac_config_files="$ac_config_files ../doc/example/Makefile" ac_config_files="$ac_config_files ../doc/example_user_instrumentation/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${SVN_CONTROLLED_TRUE}" && test -z "${SVN_CONTROLLED_FALSE}"; then as_fn_error $? "conditional \"SVN_CONTROLLED\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${BUILD_TESTS_TRUE}" && test -z "${BUILD_TESTS_FALSE}"; then as_fn_error $? "conditional \"BUILD_TESTS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${PLATFORM_ALTIX_TRUE}" && test -z "${PLATFORM_ALTIX_FALSE}"; then as_fn_error $? "conditional \"PLATFORM_ALTIX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${PLATFORM_POWER6_TRUE}" && test -z "${PLATFORM_POWER6_FALSE}"; then as_fn_error $? "conditional \"PLATFORM_POWER6\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${PLATFORM_BGL_TRUE}" && test -z "${PLATFORM_BGL_FALSE}"; then as_fn_error $? "conditional \"PLATFORM_BGL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${PLATFORM_BGP_TRUE}" && test -z "${PLATFORM_BGP_FALSE}"; then as_fn_error $? "conditional \"PLATFORM_BGP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${PLATFORM_CRAYXT_TRUE}" && test -z "${PLATFORM_CRAYXT_FALSE}"; then as_fn_error $? "conditional \"PLATFORM_CRAYXT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${PLATFORM_SICORTEX_TRUE}" && test -z "${PLATFORM_SICORTEX_FALSE}"; then as_fn_error $? "conditional \"PLATFORM_SICORTEX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${PLATFORM_LINUX_TRUE}" && test -z "${PLATFORM_LINUX_FALSE}"; then as_fn_error $? "conditional \"PLATFORM_LINUX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${PLATFORM_SUN_TRUE}" && test -z "${PLATFORM_SUN_FALSE}"; then as_fn_error $? "conditional \"PLATFORM_SUN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${PLATFORM_MAC_TRUE}" && test -z "${PLATFORM_MAC_FALSE}"; then as_fn_error $? "conditional \"PLATFORM_MAC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${PLATFORM_CRAYX1_TRUE}" && test -z "${PLATFORM_CRAYX1_FALSE}"; then as_fn_error $? "conditional \"PLATFORM_CRAYX1\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${PLATFORM_NECSX_TRUE}" && test -z "${PLATFORM_NECSX_FALSE}"; then as_fn_error $? "conditional \"PLATFORM_NECSX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${SCOREP_COMPILER_INTEL_TRUE}" && test -z "${SCOREP_COMPILER_INTEL_FALSE}"; then as_fn_error $? "conditional \"SCOREP_COMPILER_INTEL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${SCOREP_COMPILER_SUN_TRUE}" && test -z "${SCOREP_COMPILER_SUN_FALSE}"; then as_fn_error $? "conditional \"SCOREP_COMPILER_SUN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${SCOREP_COMPILER_IBM_TRUE}" && test -z "${SCOREP_COMPILER_IBM_FALSE}"; then as_fn_error $? "conditional \"SCOREP_COMPILER_IBM\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${SCOREP_COMPILER_PGI_TRUE}" && test -z "${SCOREP_COMPILER_PGI_FALSE}"; then as_fn_error $? "conditional \"SCOREP_COMPILER_PGI\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${SCOREP_COMPILER_GNU_TRUE}" && test -z "${SCOREP_COMPILER_GNU_FALSE}"; then as_fn_error $? "conditional \"SCOREP_COMPILER_GNU\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${SCOREP_COMPILER_SX_TRUE}" && test -z "${SCOREP_COMPILER_SX_FALSE}"; then as_fn_error $? "conditional \"SCOREP_COMPILER_SX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${SCOREP_COMPILER_CRAY_TRUE}" && test -z "${SCOREP_COMPILER_CRAY_FALSE}"; then as_fn_error $? "conditional \"SCOREP_COMPILER_CRAY\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${SCOREP_HAVE_F77_TRUE}" && test -z "${SCOREP_HAVE_F77_FALSE}"; then as_fn_error $? "conditional \"SCOREP_HAVE_F77\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${SCOREP_HAVE_FC_TRUE}" && test -z "${SCOREP_HAVE_FC_FALSE}"; then as_fn_error $? "conditional \"SCOREP_HAVE_FC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${OPENMP_SUPPORTED_TRUE}" && test -z "${OPENMP_SUPPORTED_FALSE}"; then as_fn_error $? "conditional \"OPENMP_SUPPORTED\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${FORTRAN_SUPPORT_ALLOCATABLE_TRUE}" && test -z "${FORTRAN_SUPPORT_ALLOCATABLE_FALSE}"; then as_fn_error $? "conditional \"FORTRAN_SUPPORT_ALLOCATABLE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by opari2 $as_me 1.0.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ opari2 config.status 1.0.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' LD_F77='`$ECHO "$LD_F77" | $SED "$delay_single_quote_subst"`' LD_FC='`$ECHO "$LD_FC" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_F77='`$ECHO "$reload_flag_F77" | $SED "$delay_single_quote_subst"`' reload_flag_FC='`$ECHO "$reload_flag_FC" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_F77='`$ECHO "$reload_cmds_F77" | $SED "$delay_single_quote_subst"`' reload_cmds_FC='`$ECHO "$reload_cmds_FC" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_F77='`$ECHO "$old_archive_cmds_F77" | $SED "$delay_single_quote_subst"`' old_archive_cmds_FC='`$ECHO "$old_archive_cmds_FC" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' compiler_F77='`$ECHO "$compiler_F77" | $SED "$delay_single_quote_subst"`' compiler_FC='`$ECHO "$compiler_FC" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' GCC_F77='`$ECHO "$GCC_F77" | $SED "$delay_single_quote_subst"`' GCC_FC='`$ECHO "$GCC_FC" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_F77='`$ECHO "$lt_prog_compiler_no_builtin_flag_F77" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_FC='`$ECHO "$lt_prog_compiler_no_builtin_flag_FC" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_F77='`$ECHO "$lt_prog_compiler_pic_F77" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_FC='`$ECHO "$lt_prog_compiler_pic_FC" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_F77='`$ECHO "$lt_prog_compiler_wl_F77" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_FC='`$ECHO "$lt_prog_compiler_wl_FC" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_F77='`$ECHO "$lt_prog_compiler_static_F77" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_FC='`$ECHO "$lt_prog_compiler_static_FC" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_F77='`$ECHO "$lt_cv_prog_compiler_c_o_F77" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_FC='`$ECHO "$lt_cv_prog_compiler_c_o_FC" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_F77='`$ECHO "$archive_cmds_need_lc_F77" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_FC='`$ECHO "$archive_cmds_need_lc_FC" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_F77='`$ECHO "$enable_shared_with_static_runtimes_F77" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_FC='`$ECHO "$enable_shared_with_static_runtimes_FC" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_F77='`$ECHO "$export_dynamic_flag_spec_F77" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_FC='`$ECHO "$export_dynamic_flag_spec_FC" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_F77='`$ECHO "$whole_archive_flag_spec_F77" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_FC='`$ECHO "$whole_archive_flag_spec_FC" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_F77='`$ECHO "$compiler_needs_object_F77" | $SED "$delay_single_quote_subst"`' compiler_needs_object_FC='`$ECHO "$compiler_needs_object_FC" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_F77='`$ECHO "$old_archive_from_new_cmds_F77" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_FC='`$ECHO "$old_archive_from_new_cmds_FC" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_F77='`$ECHO "$old_archive_from_expsyms_cmds_F77" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_FC='`$ECHO "$old_archive_from_expsyms_cmds_FC" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_F77='`$ECHO "$archive_cmds_F77" | $SED "$delay_single_quote_subst"`' archive_cmds_FC='`$ECHO "$archive_cmds_FC" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_F77='`$ECHO "$archive_expsym_cmds_F77" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_FC='`$ECHO "$archive_expsym_cmds_FC" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_F77='`$ECHO "$module_cmds_F77" | $SED "$delay_single_quote_subst"`' module_cmds_FC='`$ECHO "$module_cmds_FC" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_F77='`$ECHO "$module_expsym_cmds_F77" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_FC='`$ECHO "$module_expsym_cmds_FC" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_F77='`$ECHO "$with_gnu_ld_F77" | $SED "$delay_single_quote_subst"`' with_gnu_ld_FC='`$ECHO "$with_gnu_ld_FC" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_F77='`$ECHO "$allow_undefined_flag_F77" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_FC='`$ECHO "$allow_undefined_flag_FC" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_F77='`$ECHO "$no_undefined_flag_F77" | $SED "$delay_single_quote_subst"`' no_undefined_flag_FC='`$ECHO "$no_undefined_flag_FC" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_F77='`$ECHO "$hardcode_libdir_flag_spec_F77" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_FC='`$ECHO "$hardcode_libdir_flag_spec_FC" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_F77='`$ECHO "$hardcode_libdir_separator_F77" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_FC='`$ECHO "$hardcode_libdir_separator_FC" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_F77='`$ECHO "$hardcode_direct_F77" | $SED "$delay_single_quote_subst"`' hardcode_direct_FC='`$ECHO "$hardcode_direct_FC" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_F77='`$ECHO "$hardcode_direct_absolute_F77" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_FC='`$ECHO "$hardcode_direct_absolute_FC" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_F77='`$ECHO "$hardcode_minus_L_F77" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_FC='`$ECHO "$hardcode_minus_L_FC" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_F77='`$ECHO "$hardcode_shlibpath_var_F77" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_FC='`$ECHO "$hardcode_shlibpath_var_FC" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_F77='`$ECHO "$hardcode_automatic_F77" | $SED "$delay_single_quote_subst"`' hardcode_automatic_FC='`$ECHO "$hardcode_automatic_FC" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_F77='`$ECHO "$inherit_rpath_F77" | $SED "$delay_single_quote_subst"`' inherit_rpath_FC='`$ECHO "$inherit_rpath_FC" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_F77='`$ECHO "$link_all_deplibs_F77" | $SED "$delay_single_quote_subst"`' link_all_deplibs_FC='`$ECHO "$link_all_deplibs_FC" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_F77='`$ECHO "$always_export_symbols_F77" | $SED "$delay_single_quote_subst"`' always_export_symbols_FC='`$ECHO "$always_export_symbols_FC" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_F77='`$ECHO "$export_symbols_cmds_F77" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_FC='`$ECHO "$export_symbols_cmds_FC" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_F77='`$ECHO "$exclude_expsyms_F77" | $SED "$delay_single_quote_subst"`' exclude_expsyms_FC='`$ECHO "$exclude_expsyms_FC" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_F77='`$ECHO "$include_expsyms_F77" | $SED "$delay_single_quote_subst"`' include_expsyms_FC='`$ECHO "$include_expsyms_FC" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_F77='`$ECHO "$prelink_cmds_F77" | $SED "$delay_single_quote_subst"`' prelink_cmds_FC='`$ECHO "$prelink_cmds_FC" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_F77='`$ECHO "$postlink_cmds_F77" | $SED "$delay_single_quote_subst"`' postlink_cmds_FC='`$ECHO "$postlink_cmds_FC" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_F77='`$ECHO "$file_list_spec_F77" | $SED "$delay_single_quote_subst"`' file_list_spec_FC='`$ECHO "$file_list_spec_FC" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_F77='`$ECHO "$hardcode_action_F77" | $SED "$delay_single_quote_subst"`' hardcode_action_FC='`$ECHO "$hardcode_action_FC" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_F77='`$ECHO "$compiler_lib_search_dirs_F77" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_FC='`$ECHO "$compiler_lib_search_dirs_FC" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_F77='`$ECHO "$predep_objects_F77" | $SED "$delay_single_quote_subst"`' predep_objects_FC='`$ECHO "$predep_objects_FC" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_F77='`$ECHO "$postdep_objects_F77" | $SED "$delay_single_quote_subst"`' postdep_objects_FC='`$ECHO "$postdep_objects_FC" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' predeps_F77='`$ECHO "$predeps_F77" | $SED "$delay_single_quote_subst"`' predeps_FC='`$ECHO "$predeps_FC" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_F77='`$ECHO "$postdeps_F77" | $SED "$delay_single_quote_subst"`' postdeps_FC='`$ECHO "$postdeps_FC" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_F77='`$ECHO "$compiler_lib_search_path_F77" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_FC='`$ECHO "$compiler_lib_search_path_FC" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ LD_F77 \ LD_FC \ reload_flag_CXX \ reload_flag_F77 \ reload_flag_FC \ compiler_CXX \ compiler_F77 \ compiler_FC \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_no_builtin_flag_F77 \ lt_prog_compiler_no_builtin_flag_FC \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_pic_F77 \ lt_prog_compiler_pic_FC \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_wl_F77 \ lt_prog_compiler_wl_FC \ lt_prog_compiler_static_CXX \ lt_prog_compiler_static_F77 \ lt_prog_compiler_static_FC \ lt_cv_prog_compiler_c_o_CXX \ lt_cv_prog_compiler_c_o_F77 \ lt_cv_prog_compiler_c_o_FC \ export_dynamic_flag_spec_CXX \ export_dynamic_flag_spec_F77 \ export_dynamic_flag_spec_FC \ whole_archive_flag_spec_CXX \ whole_archive_flag_spec_F77 \ whole_archive_flag_spec_FC \ compiler_needs_object_CXX \ compiler_needs_object_F77 \ compiler_needs_object_FC \ with_gnu_ld_CXX \ with_gnu_ld_F77 \ with_gnu_ld_FC \ allow_undefined_flag_CXX \ allow_undefined_flag_F77 \ allow_undefined_flag_FC \ no_undefined_flag_CXX \ no_undefined_flag_F77 \ no_undefined_flag_FC \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_flag_spec_F77 \ hardcode_libdir_flag_spec_FC \ hardcode_libdir_separator_CXX \ hardcode_libdir_separator_F77 \ hardcode_libdir_separator_FC \ exclude_expsyms_CXX \ exclude_expsyms_F77 \ exclude_expsyms_FC \ include_expsyms_CXX \ include_expsyms_F77 \ include_expsyms_FC \ file_list_spec_CXX \ file_list_spec_F77 \ file_list_spec_FC \ compiler_lib_search_dirs_CXX \ compiler_lib_search_dirs_F77 \ compiler_lib_search_dirs_FC \ predep_objects_CXX \ predep_objects_F77 \ predep_objects_FC \ postdep_objects_CXX \ postdep_objects_F77 \ postdep_objects_FC \ predeps_CXX \ predeps_F77 \ predeps_FC \ postdeps_CXX \ postdeps_F77 \ postdeps_FC \ compiler_lib_search_path_CXX \ compiler_lib_search_path_F77 \ compiler_lib_search_path_FC; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path \ reload_cmds_CXX \ reload_cmds_F77 \ reload_cmds_FC \ old_archive_cmds_CXX \ old_archive_cmds_F77 \ old_archive_cmds_FC \ old_archive_from_new_cmds_CXX \ old_archive_from_new_cmds_F77 \ old_archive_from_new_cmds_FC \ old_archive_from_expsyms_cmds_CXX \ old_archive_from_expsyms_cmds_F77 \ old_archive_from_expsyms_cmds_FC \ archive_cmds_CXX \ archive_cmds_F77 \ archive_cmds_FC \ archive_expsym_cmds_CXX \ archive_expsym_cmds_F77 \ archive_expsym_cmds_FC \ module_cmds_CXX \ module_cmds_F77 \ module_cmds_FC \ module_expsym_cmds_CXX \ module_expsym_cmds_F77 \ module_expsym_cmds_FC \ export_symbols_cmds_CXX \ export_symbols_cmds_F77 \ export_symbols_cmds_FC \ prelink_cmds_CXX \ prelink_cmds_F77 \ prelink_cmds_FC \ postlink_cmds_CXX \ postlink_cmds_F77 \ postlink_cmds_FC; 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=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "../src/config-frontend.h") CONFIG_HEADERS="$CONFIG_HEADERS ../src/config-frontend.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "../test/jacobi_c_test.sh") CONFIG_FILES="$CONFIG_FILES ../test/jacobi_c_test.sh" ;; "../test/jacobi_c++_test.sh") CONFIG_FILES="$CONFIG_FILES ../test/jacobi_c++_test.sh" ;; "../test/jacobi_f90_test.sh") CONFIG_FILES="$CONFIG_FILES ../test/jacobi_f90_test.sh" ;; "../test/jacobi_f77_test.sh") CONFIG_FILES="$CONFIG_FILES ../test/jacobi_f77_test.sh" ;; "../doc/example/Makefile") CONFIG_FILES="$CONFIG_FILES ../doc/example/Makefile" ;; "../doc/example_user_instrumentation/Makefile") CONFIG_FILES="$CONFIG_FILES ../doc/example_user_instrumentation/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # 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 # 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. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # The names of the tagged configurations supported by this script. available_tags='CXX F77 FC ' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # 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$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; 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-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: F77 # The linker used to build libraries. LD=$lt_LD_F77 # How to create reloadable object files. reload_flag=$lt_reload_flag_F77 reload_cmds=$lt_reload_cmds_F77 # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_F77 # A language specific compiler. CC=$lt_compiler_F77 # Is the compiler the GNU compiler? with_gcc=$GCC_F77 # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_F77 # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_F77 # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_F77 # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_F77 # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_F77 # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_F77 archive_expsym_cmds=$lt_archive_expsym_cmds_F77 # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_F77 module_expsym_cmds=$lt_module_expsym_cmds_F77 # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_F77 # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_F77 # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_F77 # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_F77 # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_F77 # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_F77 # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_F77 # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_F77 # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_F77 # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_F77 # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_F77 # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_F77 # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_F77 # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_F77 # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_F77 # Specify filename containing input files. file_list_spec=$lt_file_list_spec_F77 # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_F77 # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_F77 # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_F77 postdep_objects=$lt_postdep_objects_F77 predeps=$lt_predeps_F77 postdeps=$lt_postdeps_F77 # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_F77 # ### END LIBTOOL TAG CONFIG: F77 _LT_EOF cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: FC # The linker used to build libraries. LD=$lt_LD_FC # How to create reloadable object files. reload_flag=$lt_reload_flag_FC reload_cmds=$lt_reload_cmds_FC # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_FC # A language specific compiler. CC=$lt_compiler_FC # Is the compiler the GNU compiler? with_gcc=$GCC_FC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_FC # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_FC # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_FC # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_FC # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_FC # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_FC # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_FC # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_FC # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_FC # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_FC # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_FC # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_FC # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_FC archive_expsym_cmds=$lt_archive_expsym_cmds_FC # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_FC module_expsym_cmds=$lt_module_expsym_cmds_FC # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_FC # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_FC # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_FC # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_FC # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_FC # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_FC # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_FC # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_FC # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_FC # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_FC # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_FC # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_FC # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_FC # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_FC # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_FC # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_FC # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_FC # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_FC # Specify filename containing input files. file_list_spec=$lt_file_list_spec_FC # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_FC # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_FC # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_FC postdep_objects=$lt_postdep_objects_FC predeps=$lt_predeps_FC postdeps=$lt_postdeps_FC # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_FC # ### END LIBTOOL TAG CONFIG: FC _LT_EOF ;; "../test/jacobi_c_test.sh":F) chmod +x ../test/jacobi_c_test.sh ;; "../test/jacobi_c++_test.sh":F) chmod +x ../test/jacobi_c++_test.sh ;; "../test/jacobi_f90_test.sh":F) chmod +x ../test/jacobi_f90_test.sh ;; "../test/jacobi_f77_test.sh":F) chmod +x ../test/jacobi_f77_test.sh ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi eztrace-1.1-7/extlib/PaxHeaders.7332/Makefile.am0000644000000000000000000000013213053046645016160 xustar0030 mtime=1487687077.291494061 30 atime=1508162219.661809838 30 ctime=1508162365.681728176 eztrace-1.1-7/extlib/Makefile.am0000644000175000017500000000042013053046645017343 0ustar00trahaytrahay00000000000000# Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis # See COPYING in top-level directory. SUBDIRS = if AMEXTERNLITL SUBDIRS += else SUBDIRS += litl endif if AMEXTERNGTG SUBDIRS += else SUBDIRS += gtg endif if OPENMP_FOUND SUBDIRS += opari2 endif eztrace-1.1-7/extlib/PaxHeaders.7332/gtg0000644000000000000000000000013213171135477014633 xustar0030 mtime=1508162367.229863296 30 atime=1508162367.741908015 30 ctime=1508162367.229863296 eztrace-1.1-7/extlib/gtg/0000755000175000017500000000000013171135477016077 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/gtg.pc.in0000644000000000000000000000013212544237152016416 xustar0030 mtime=1435582058.543899952 30 atime=1508162281.082576293 30 ctime=1508162365.957752255 eztrace-1.1-7/extlib/gtg/gtg.pc.in0000644000175000017500000000031212544237152017601 0ustar00trahaytrahay00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: GTG Description: GTG - Generic Trace Generator Version: @VERSION@ Libs: -L${libdir} -lgtg Cflags: -I${includedir}eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/aclocal.m40000644000000000000000000000013013171135227016537 xustar0028 mtime=1508162199.1203371 30 atime=1508162199.212343535 30 ctime=1508162365.957752255 eztrace-1.1-7/extlib/gtg/aclocal.m40000644000175000017500000133033313171135227017736 0ustar00trahaytrahay00000000000000# generated automatically by aclocal 1.15.1 -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 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. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . ]) # serial 58 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_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. 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 ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from 'configure', and 'config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # 'config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain=$ac_aux_dir/ltmain.sh ])# _LT_PROG_LTMAIN # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the 'libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to 'config.status' so that its # declaration there will have the same value as in 'configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags='_LT_TAGS'dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into 'config.status', and then the shell code to quote escape them in # for loops in 'config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # '#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test 0 = "$lt_write_fail" && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ '$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 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 != $[#] do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try '$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try '$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test yes = "$silent" && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # 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 _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 aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then 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 lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS=$save_LDFLAGS ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -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 lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[[012]][[,.]]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; 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' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test 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\"`' 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 case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], [ if test 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" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script that will find a shell with a builtin # printf (that we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case $ECHO in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [Search for dependent libraries within DIR (or the compiler's sysroot if not specified).])], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([$with_sysroot]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and where our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test no = "$enable_libtool_lock" || 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. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out 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 if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; 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*| \ 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. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) 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" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; 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 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test 0 -eq "$ac_status"; 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 lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test yes = "[$]$2"; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ]) if test yes = "[$]$2"; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n "$lt_cv_sys_max_cmd_len"; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes = "$cross_compiling"; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; 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], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen=dlopen], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) ]) ]) ]) ]) ]) ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links=nottested if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test no = "$hard_links"; then AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", [Define to the sub-directory where libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then # We can hardcode non-existent directories. if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && # 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 # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_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 m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...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 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 test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown 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' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # 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 # 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 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[)]' # 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 shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # 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 ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; 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' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; 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 ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # 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' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; 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*) 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # 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. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no 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' 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' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # 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=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; 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 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 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]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([sys_lib_dlsearch_path_spec], [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_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program that can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$1"; then lt_cv_path_MAGIC_CMD=$ac_dir/"$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac]) MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program that can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test no = "$withval" || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &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 # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # 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. case $host_os in aix[[4-9]]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[[45]]*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # 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'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi]) if test no != "$lt_cv_path_NM"; 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 *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test yes != "$lt_cv_path_mainfest_tool"; 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 AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM=-lm) ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test yes = "$GCC"; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac 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'" # 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'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported 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))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_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 # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; 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 # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test yes = "$GCC"; 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 # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; 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*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; 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) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*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' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to 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. 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' 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' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; 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' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, 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' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; 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' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; 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" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; 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(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in 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(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to 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. 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' 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' 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 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 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 exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' 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 if test yes = "$GCC"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; 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 # 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' else 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' # 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 # 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 else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _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' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-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=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test 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' 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' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; hpux10*) if test 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' 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' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test 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' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS=$save_LDFLAGS]) if test 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' 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' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; 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) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) 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 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' else _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' fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported 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 ;; 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' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test 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' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test 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' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test 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' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' if test 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' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test yes,yes = "$GCC,$enable_shared"; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting $shlibpath_var if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC=$CC AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report what 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 # 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 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 fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC=$lt_save_CC ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; 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 # 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' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # 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 case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done 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 exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' 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 if test yes = "$GXX"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; 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 # 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' else 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' # 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 # 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' # 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 else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _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' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; 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' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-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=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, 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' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _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++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test 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' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test 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' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd* | bitrig*) 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' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; 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_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' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $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' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(GCC, $1)=$GXX _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case @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\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)=$prev$p else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)=$p else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)=$p else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_F77"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && 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 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 fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$G77 _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_F77" AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_FC"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && 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 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 fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_FC" AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # 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'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code=$lt_simple_compile_test_code # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f "$lt_ac_sed" && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test 10 -lt "$lt_ac_count" && break lt_ac_count=`expr $lt_ac_count + 1` if test "$lt_ac_count" -gt "$lt_ac_max"; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine what file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS # Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004-2005, 2007-2009, 2011-2015 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 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option '$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl 'shared' nor 'disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _LT_SET_OPTIONS # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the 'shared' and # 'disable-shared' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the 'static' and # 'disable-static' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the 'fast-install' # and 'disable-fast-install' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_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' # LT_INIT options. # MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac], [pic_mode=m4_default([$1], [default])]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59, which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) # ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 4179 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]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.6' macro_revision='2.4.6' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software # Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) # Copyright (C) 2002-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.15.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.15.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/missing0000644000000000000000000000013213171135230016267 xustar0030 mtime=1508162200.000398658 30 atime=1508162274.154016313 30 ctime=1508162365.973753651 eztrace-1.1-7/extlib/gtg/missing0000755000175000017500000001533013171135230017463 0ustar00trahaytrahay00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/doc0000644000000000000000000000013213171135477015400 xustar0030 mtime=1508162367.245864694 30 atime=1508162367.741908015 30 ctime=1508162367.245864694 eztrace-1.1-7/extlib/gtg/doc/0000755000175000017500000000000013171135477016644 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/doc/PaxHeaders.7332/Doxyfile.in0000644000000000000000000000013212544237152017564 xustar0030 mtime=1435582058.511899952 30 atime=1508162281.154582141 30 ctime=1508162367.245864694 eztrace-1.1-7/extlib/gtg/doc/Doxyfile.in0000644000175000017500000015635012544237152020765 0ustar00trahaytrahay00000000000000# Doxyfile 1.5.5 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all # text before the first occurrence of this tag. Doxygen uses libiconv (or the # iconv built into libc) for the transcoding. See # http://www.gnu.org/software/libiconv for the list of possible encodings. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = "Generic Trace Generator (GTG)" # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = 0.1 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = . # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, # Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, # Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), # Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, # Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, # and Ukrainian. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = NO # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like regular Qt-style comments # (thus requiring an explicit @brief command for a brief description.) JAVADOC_AUTOBRIEF = NO # If the QT_AUTOBRIEF tag is set to YES then Doxygen will # interpret the first line (until the first dot) of a Qt-style # comment as the brief description. If set to NO, the comments # will behave just like regular Qt-style comments (thus requiring # an explicit \brief command for a brief description.) QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the DETAILS_AT_TOP tag is set to YES then Doxygen # will output the detailed description near the top, like JavaDoc. # If set to NO, the detailed description appears after the member # documentation. DETAILS_AT_TOP = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 8 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = YES # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java # sources only. Doxygen will then generate output that is more tailored for # Java. For instance, namespaces will be presented as packages, qualified # scopes will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources only. Doxygen will then generate output that is more tailored for # Fortran. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for # VHDL. OPTIMIZE_OUTPUT_VHDL = NO # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should # set this tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. # func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. # Doxygen will parse them like normal C++ but will assume all classes use public # instead of private inheritance when no explicit protection keyword is present. SIP_SUPPORT = NO # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum # is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically # be useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. TYPEDEF_HIDES_STRUCT = NO #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = YES # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base # name of the file that contains the anonymous namespace. By default # anonymous namespace are hidden. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the # hierarchy of group names into alphabetical order. If set to NO (the default) # the group names will appear in their defined order. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES # If the sources in your project are distributed over multiple directories # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy # in the documentation. The default is NO. SHOW_DIRECTORIES = NO # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command , where is the value of # the FILE_VERSION_FILTER tag, and is the name of an input file # provided by doxygen. Whatever the program writes to standard output # is used as the file version. See the manual for examples. FILE_VERSION_FILTER = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be abled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = YES # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = "@srcdir@/../inc/" "@srcdir@/../src/FORTRAN/" # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is # also the default input encoding. Doxygen uses libiconv (or the iconv built # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for # the list of possible encodings. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 FILE_PATTERNS = *.h *.f90 # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. Note that the wildcards are matched # against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* EXCLUDE_PATTERNS = # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. If FILTER_PATTERNS is specified, this tag will be # ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER # is applied to all files. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES (the default) # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = NO # If the REFERENCES_RELATION tag is set to YES (the default) # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = NO # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will # link to the source code. Otherwise they will link to the documentstion. REFERENCES_LINK_SOURCE = YES # If the USE_HTAGS tag is set to YES then the references to source code # will point to the HTML generated by the htags(1) tool instead of doxygen # built-in source browser. The htags tool is part of GNU's global source # tagging system (see http://www.gnu.org/software/global/global.html). You # will need version 4.8.6 or higher. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet. Note that doxygen will try to copy # the style sheet file to the HTML output directory, so don't put your own # stylesheet in the HTML output directory as well, or it will be erased! HTML_STYLESHEET = # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_DOCSET tag is set to YES, additional index files # will be generated that can be used as input for Apple's Xcode 3 # integrated development environment, introduced with OSX 10.5 (Leopard). # To create a documentation set, doxygen will generate a Makefile in the # HTML output directory. Running make will produce the docset in that # directory and running "make install" will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find # it at startup. GENERATE_DOCSET = NO # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the # feed. A documentation feed provides an umbrella under which multiple # documentation sets from a single provider (such as a company or product suite) # can be grouped. DOCSET_FEEDNAME = "Doxygen generated docs" # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that # should uniquely identify the documentation set bundle. This should be a # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen # will append .docset to the name. DOCSET_BUNDLE_ID = org.doxygen.Project # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. For this to work a browser that supports # JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox # Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). HTML_DYNAMIC_SECTIONS = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be # generated containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are # probably better off using the HTML help feature. GENERATE_TREEVIEW = NO # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = YES # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = YES # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = YES # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. This is useful # if you want to understand what is going on. On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_DEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the := operator # instead of the = operator. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line, have an all uppercase name, and do not end with a semicolon. Such # function macros are typically used for boiler-plate code, and will confuse # the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. # Optionally an initial location of the external documentation # can be added for each tagfile. The format of a tag file without # this location is as follows: # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths or # URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) # If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option is superseded by the HAVE_DOT option below. This is only a # fallback. It is recommended to install and use dot, since it yields more # powerful graphs. CLASS_DIAGRAMS = YES # You can define message sequence charts within doxygen comments using the \msc # command. Doxygen will then run the mscgen tool (see # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the # documentation. The MSCGEN_PATH tag allows you to specify the directory where # the mscgen tool resides. If left empty the tool is assumed to be found in the # default search path. MSCGEN_PATH = # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = NO # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT options are set to YES then # doxygen will generate a call dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable call graphs # for selected functions only using the \callgraph command. CALL_GRAPH = NO # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then # doxygen will generate a caller dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable caller # graphs for selected functions only using the \callergraph command. CALLER_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # nodes that will be shown in the graph. If the number of nodes in a graph # becomes larger than this value, doxygen will truncate the graph, which is # visualized by representing a node as a red box. Note that doxygen if the # number of direct children of the root node in a graph is already larger than # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. DOT_GRAPH_MAX_NODES = 50 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that the size of a graph can be further restricted by # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is enabled by default, which results in a transparent # background. Warning: Depending on the platform used, enabling this option # may lead to badly anti-aliased labels on the edges of a graph (i.e. they # become hard to read). DOT_TRANSPARENT = YES # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO eztrace-1.1-7/extlib/gtg/doc/PaxHeaders.7332/Doxyfile0000644000000000000000000000013113171135351017151 xustar0029 mtime=1508162281.16258279 30 atime=1508162281.230588314 30 ctime=1508162367.245864694 eztrace-1.1-7/extlib/gtg/doc/Doxyfile0000644000175000017500000015641413171135351020354 0ustar00trahaytrahay00000000000000# Doxyfile 1.5.5 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all # text before the first occurrence of this tag. Doxygen uses libiconv (or the # iconv built into libc) for the transcoding. See # http://www.gnu.org/software/libiconv for the list of possible encodings. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = "Generic Trace Generator (GTG)" # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = 0.1 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = . # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, # Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, # Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), # Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, # Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, # and Ukrainian. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = NO # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like regular Qt-style comments # (thus requiring an explicit @brief command for a brief description.) JAVADOC_AUTOBRIEF = NO # If the QT_AUTOBRIEF tag is set to YES then Doxygen will # interpret the first line (until the first dot) of a Qt-style # comment as the brief description. If set to NO, the comments # will behave just like regular Qt-style comments (thus requiring # an explicit \brief command for a brief description.) QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the DETAILS_AT_TOP tag is set to YES then Doxygen # will output the detailed description near the top, like JavaDoc. # If set to NO, the detailed description appears after the member # documentation. DETAILS_AT_TOP = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 8 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = YES # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java # sources only. Doxygen will then generate output that is more tailored for # Java. For instance, namespaces will be presented as packages, qualified # scopes will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources only. Doxygen will then generate output that is more tailored for # Fortran. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for # VHDL. OPTIMIZE_OUTPUT_VHDL = NO # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should # set this tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. # func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. # Doxygen will parse them like normal C++ but will assume all classes use public # instead of private inheritance when no explicit protection keyword is present. SIP_SUPPORT = NO # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum # is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically # be useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. TYPEDEF_HIDES_STRUCT = NO #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = YES # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base # name of the file that contains the anonymous namespace. By default # anonymous namespace are hidden. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the # hierarchy of group names into alphabetical order. If set to NO (the default) # the group names will appear in their defined order. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES # If the sources in your project are distributed over multiple directories # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy # in the documentation. The default is NO. SHOW_DIRECTORIES = NO # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command , where is the value of # the FILE_VERSION_FILTER tag, and is the name of an input file # provided by doxygen. Whatever the program writes to standard output # is used as the file version. See the manual for examples. FILE_VERSION_FILTER = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be abled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = YES # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = "../../../../extlib/gtg/doc/../inc/" "../../../../extlib/gtg/doc/../src/FORTRAN/" # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is # also the default input encoding. Doxygen uses libiconv (or the iconv built # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for # the list of possible encodings. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 FILE_PATTERNS = *.h *.f90 # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. Note that the wildcards are matched # against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* EXCLUDE_PATTERNS = # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. If FILTER_PATTERNS is specified, this tag will be # ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER # is applied to all files. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES (the default) # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = NO # If the REFERENCES_RELATION tag is set to YES (the default) # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = NO # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will # link to the source code. Otherwise they will link to the documentstion. REFERENCES_LINK_SOURCE = YES # If the USE_HTAGS tag is set to YES then the references to source code # will point to the HTML generated by the htags(1) tool instead of doxygen # built-in source browser. The htags tool is part of GNU's global source # tagging system (see http://www.gnu.org/software/global/global.html). You # will need version 4.8.6 or higher. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet. Note that doxygen will try to copy # the style sheet file to the HTML output directory, so don't put your own # stylesheet in the HTML output directory as well, or it will be erased! HTML_STYLESHEET = # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_DOCSET tag is set to YES, additional index files # will be generated that can be used as input for Apple's Xcode 3 # integrated development environment, introduced with OSX 10.5 (Leopard). # To create a documentation set, doxygen will generate a Makefile in the # HTML output directory. Running make will produce the docset in that # directory and running "make install" will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find # it at startup. GENERATE_DOCSET = NO # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the # feed. A documentation feed provides an umbrella under which multiple # documentation sets from a single provider (such as a company or product suite) # can be grouped. DOCSET_FEEDNAME = "Doxygen generated docs" # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that # should uniquely identify the documentation set bundle. This should be a # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen # will append .docset to the name. DOCSET_BUNDLE_ID = org.doxygen.Project # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. For this to work a browser that supports # JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox # Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). HTML_DYNAMIC_SECTIONS = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be # generated containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are # probably better off using the HTML help feature. GENERATE_TREEVIEW = NO # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = YES # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = YES # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = YES # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. This is useful # if you want to understand what is going on. On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_DEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the := operator # instead of the = operator. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line, have an all uppercase name, and do not end with a semicolon. Such # function macros are typically used for boiler-plate code, and will confuse # the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. # Optionally an initial location of the external documentation # can be added for each tagfile. The format of a tag file without # this location is as follows: # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths or # URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) # If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option is superseded by the HAVE_DOT option below. This is only a # fallback. It is recommended to install and use dot, since it yields more # powerful graphs. CLASS_DIAGRAMS = YES # You can define message sequence charts within doxygen comments using the \msc # command. Doxygen will then run the mscgen tool (see # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the # documentation. The MSCGEN_PATH tag allows you to specify the directory where # the mscgen tool resides. If left empty the tool is assumed to be found in the # default search path. MSCGEN_PATH = # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = NO # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT options are set to YES then # doxygen will generate a call dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable call graphs # for selected functions only using the \callgraph command. CALL_GRAPH = NO # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then # doxygen will generate a caller dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable caller # graphs for selected functions only using the \callergraph command. CALLER_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # nodes that will be shown in the graph. If the number of nodes in a graph # becomes larger than this value, doxygen will truncate the graph, which is # visualized by representing a node as a red box. Note that doxygen if the # number of direct children of the root node in a graph is already larger than # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. DOT_GRAPH_MAX_NODES = 50 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that the size of a graph can be further restricted by # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is enabled by default, which results in a transparent # background. Warning: Depending on the platform used, enabling this option # may lead to badly anti-aliased labels on the edges of a graph (i.e. they # become hard to read). DOT_TRANSPARENT = YES # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO eztrace-1.1-7/extlib/gtg/doc/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212544237152017505 xustar0030 mtime=1435582058.511899952 30 atime=1508162200.032400902 30 ctime=1508162367.245864694 eztrace-1.1-7/extlib/gtg/doc/Makefile.am0000644000175000017500000000323112544237152020673 0ustar00trahaytrahay00000000000000# Copyright CNRS, INRIA, Universit Bordeaux 1 # See COPYING in top-level directory. if USE_DOXYGEN DOX_DIR = . DOC_DIR = $(builddir) DOX_CONFIG = $(DOX_DIR)/Doxyfile DOX_MAN_DIR = $(DOC_DIR)/man DOX_LATEX_DIR = $(DOC_DIR)/latex DOX_PDF = $(DOC_DIR)/gtg_refmanual.pdf DOX_HTML_DIR = $(DOC_DIR)/html/ DOX_TAG = $(DOC_DIR)/gtg.tag # TODO: we should add source files so that the documentation is # regenerated when a file changes docx_inputs = $(DOX_CONFIG) $(DOX_TAG): $(docx_inputs) doxygen $(DOX_CONFIG) touch $(DOX_TAG) $(DOX_HTML_DIR): $(DOX_TAG) $(DOX_PDF): $(DOX_TAG) cd $(DOX_LATEX_DIR) &&\ rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \ $(PDFLATEX) refman.tex; \ $(MAKEINDEX) refman.idx; \ $(PDFLATEX) refman.tex; \ done=0; repeat=5; \ while test $$done = 0 -a $$repeat -gt 0; do \ if $(EGREP) 'Rerun (LaTeX|to get cross-references right)' refman.log > /dev/null 2>&1; then \ $(PDFLATEX) refman.tex; \ repeat=`expr $$repeat - 1`; \ else \ done=1; \ fi; \ done; \ cd -; \ mv $(DOX_LATEX_DIR)/refman.pdf $(DOX_PDF) EXTRA_DIST = $(DOX_HTML_DIR) if USE_PDFLATEX EXTRA_DIST += $(DOX_PDF) endif # Crappy hack: automake cannot copy a directory, so we have to do it by hand. install_html: $(DOX_TAG) $(DOX_HTML_DIR)/index.html mkdir -p $(DESTDIR)$(htmldir) cp -r $(DOX_HTML_DIR) $(DESTDIR)$(htmldir) install_pdf: $(DOX_PDF) mkdir -p $(DESTDIR)$(pdfdir) cp -r $(DOX_PDF) $(DESTDIR)$(pdfdir) if USE_PDFLATEX install-data-am: install_pdf install_html else install-data-am: install_html endif include_HEADERS = Doxyfile endif eztrace-1.1-7/extlib/gtg/doc/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135230017505 xustar0030 mtime=1508162200.044401744 30 atime=1508162281.138580842 30 ctime=1508162367.245864694 eztrace-1.1-7/extlib/gtg/doc/Makefile.in0000644000175000017500000004501413171135230020700 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright CNRS, INRIA, Universit Bordeaux 1 # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @USE_DOXYGEN_TRUE@@USE_PDFLATEX_TRUE@am__append_1 = $(DOX_PDF) subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__include_HEADERS_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = Doxyfile CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__include_HEADERS_DIST = Doxyfile am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(includedir)" HEADERS = $(include_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Doxyfile.in $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ GREP = @GREP@ HAVE_DOXYGEN = @HAVE_DOXYGEN@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPIDIR = @MPIDIR@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTFDIR = @OTFDIR@ OTF_INC = @OTF_INC@ OTF_LIB = @OTF_LIB@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @USE_DOXYGEN_TRUE@DOX_DIR = . @USE_DOXYGEN_TRUE@DOC_DIR = $(builddir) @USE_DOXYGEN_TRUE@DOX_CONFIG = $(DOX_DIR)/Doxyfile @USE_DOXYGEN_TRUE@DOX_MAN_DIR = $(DOC_DIR)/man @USE_DOXYGEN_TRUE@DOX_LATEX_DIR = $(DOC_DIR)/latex @USE_DOXYGEN_TRUE@DOX_PDF = $(DOC_DIR)/gtg_refmanual.pdf @USE_DOXYGEN_TRUE@DOX_HTML_DIR = $(DOC_DIR)/html/ @USE_DOXYGEN_TRUE@DOX_TAG = $(DOC_DIR)/gtg.tag # TODO: we should add source files so that the documentation is # regenerated when a file changes @USE_DOXYGEN_TRUE@docx_inputs = $(DOX_CONFIG) @USE_DOXYGEN_TRUE@EXTRA_DIST = $(DOX_HTML_DIR) $(am__append_1) @USE_DOXYGEN_TRUE@include_HEADERS = Doxyfile all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): Doxyfile: $(top_builddir)/config.status $(srcdir)/Doxyfile.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: @USE_DOXYGEN_FALSE@install-data-am: install-includeHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-includeHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool cscopelist-am ctags ctags-am distclean \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-includeHEADERS install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-includeHEADERS .PRECIOUS: Makefile @USE_DOXYGEN_TRUE@$(DOX_TAG): $(docx_inputs) @USE_DOXYGEN_TRUE@ doxygen $(DOX_CONFIG) @USE_DOXYGEN_TRUE@ touch $(DOX_TAG) @USE_DOXYGEN_TRUE@$(DOX_HTML_DIR): $(DOX_TAG) @USE_DOXYGEN_TRUE@$(DOX_PDF): $(DOX_TAG) @USE_DOXYGEN_TRUE@ cd $(DOX_LATEX_DIR) &&\ @USE_DOXYGEN_TRUE@ rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \ @USE_DOXYGEN_TRUE@ $(PDFLATEX) refman.tex; \ @USE_DOXYGEN_TRUE@ $(MAKEINDEX) refman.idx; \ @USE_DOXYGEN_TRUE@ $(PDFLATEX) refman.tex; \ @USE_DOXYGEN_TRUE@ done=0; repeat=5; \ @USE_DOXYGEN_TRUE@ while test $$done = 0 -a $$repeat -gt 0; do \ @USE_DOXYGEN_TRUE@ if $(EGREP) 'Rerun (LaTeX|to get cross-references right)' refman.log > /dev/null 2>&1; then \ @USE_DOXYGEN_TRUE@ $(PDFLATEX) refman.tex; \ @USE_DOXYGEN_TRUE@ repeat=`expr $$repeat - 1`; \ @USE_DOXYGEN_TRUE@ else \ @USE_DOXYGEN_TRUE@ done=1; \ @USE_DOXYGEN_TRUE@ fi; \ @USE_DOXYGEN_TRUE@ done; \ @USE_DOXYGEN_TRUE@ cd -; \ @USE_DOXYGEN_TRUE@ mv $(DOX_LATEX_DIR)/refman.pdf $(DOX_PDF) # Crappy hack: automake cannot copy a directory, so we have to do it by hand. @USE_DOXYGEN_TRUE@install_html: $(DOX_TAG) $(DOX_HTML_DIR)/index.html @USE_DOXYGEN_TRUE@ mkdir -p $(DESTDIR)$(htmldir) @USE_DOXYGEN_TRUE@ cp -r $(DOX_HTML_DIR) $(DESTDIR)$(htmldir) @USE_DOXYGEN_TRUE@install_pdf: $(DOX_PDF) @USE_DOXYGEN_TRUE@ mkdir -p $(DESTDIR)$(pdfdir) @USE_DOXYGEN_TRUE@ cp -r $(DOX_PDF) $(DESTDIR)$(pdfdir) @USE_DOXYGEN_TRUE@@USE_PDFLATEX_TRUE@install-data-am: install_pdf install_html @USE_DOXYGEN_TRUE@@USE_PDFLATEX_FALSE@install-data-am: install_html # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/install-sh0000644000000000000000000000013213171135230016674 xustar0030 mtime=1508162200.000398658 30 atime=1508162200.000398658 30 ctime=1508162365.969753301 eztrace-1.1-7/extlib/gtg/install-sh0000755000175000017500000003546313171135230020101 0ustar00trahaytrahay00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2014-09-12.12; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) # $RANDOM is not portable (e.g. dash); use it when possible to # lower collision chance tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 # As "mkdir -p" follows symlinks and we work in /tmp possibly; so # create the $tmpdir first (and fail if unsuccessful) to make sure # that nobody tries to guess the $tmpdir name. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/README0000644000000000000000000000013212544237152015564 xustar0030 mtime=1435582058.511899952 30 atime=1507797543.914891779 30 ctime=1508162365.965752952 eztrace-1.1-7/extlib/gtg/README0000644000175000017500000000513312544237152016755 0ustar00trahaytrahay00000000000000============================================== === Introduction : == ============================================== This directory contains the Generic Trace Generator (GTG) project. Authors are : Francois Rue , Francois Trahay , Johnny Jazeix , Kevin Coulomb, Mathieu Faverge, Olivier Lagrasse ============================================== === Files : == ============================================== -- Files README : This file, presenting the project AUTHORS : The authors of the project ChangeLog : The list of the changes by version configure.ac : Used to create the configure file with autoreconf COPYING : The copying rule COPYRIGHT : The licence of the library INSTALL : How to install the GTG library Makefile.am : Some hints to generate the Makefile throught configure NEWS : News about the project -- Directories *exm* : Contains examples of programm using the library *inc* : Contains files to include *src/C* : Contains the C implementation of the API *src/FORTRAN* : Contains the Fortran implementation of the API *test* : Regular developers test ============================================== === Building from the SVN repository: == ============================================== First, you need to generate the configure files by running autoreconf: $ autoreconf -vfi Then, simply run configure && make && make install ============================================== === Examples : == ============================================== The examples show code using the library. You can compile them with *make examples*. Their execution enables the creation of traces : gtg_color creates the gtg_color.trace trace cpaje creates the cpaje.trace using the C API fpaje creates the fpaje.trace using the Fortran API cpaje2 creates the cpaje2.trace using the C API cvite creates the cvite_root.ept trace (with cvite_proc*.ept) using the C API The traces can be viewed using the ViTE tool. This API is used by the eztrace that automatically generate traces for code, without modifying it manually. ============================================== === Support : == ============================================== If you encounter any problem, please contact the GTG developper mailing list (gtg-devel@lists.gforge.inria.fr) so that we can fix the feature as soon as possible. You can also give us some feedback to help us improve the API. eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/configure.ac0000644000000000000000000000013113046333736017174 xustar0030 mtime=1486469086.117532419 29 atime=1508162189.42766883 30 ctime=1508162365.953751905 eztrace-1.1-7/extlib/gtg/configure.ac0000644000175000017500000002102213046333736020361 0ustar00trahaytrahay00000000000000# Copyright CNRS, INRIA, Universit Bordeaux 1 # See COPYING in top-level directory. # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.61]) AC_INIT([GTG], [0.2-2], [gtg-devel@lists.gforge.inria.fr]) AM_INIT_AUTOMAKE([1.10 subdir-objects]) # Checks for programs. AC_PROG_CC AC_PROG_F77 AC_PROG_INSTALL AC_PROG_MAKE_SET AC_PROG_LIBTOOL AM_PROG_CC_C_O # Correct install paths AS_IF([test x"$prefix" = x -o x"$prefix" = "xNONE"], [prefix="/usr/local"]) AS_IF([test x"$exec_prefix" = x -o x"$exec_prefix" = "xNONE"], [exec_prefix="\${prefix}"]) AS_IF([test "$docdir" = "\${datarootdir}/doc/\${PACKAGE_TARNAME}"], [docdir="\${datarootdir}/doc"]) # Checks for header files. AC_CHECK_HEADERS([stdio.h string.h stdlib.h]) AC_CHECK_FUNCS([getline], have_getline=yes) if [ test "x$have_getline" = xyes ]; then CFLAGS="${CFLAGS} -DHAVE_GETLINE" fi build_doc=no AC_ARG_WITH(doc, [AS_HELP_STRING([--with-doc], [Generate documentation])], [if test x$withval != xno ; then build_doc=yes fi], [build_doc=no]) if test "x$build_doc" = "xyes" ; then AC_MSG_RESULT(Documentation will be generated) else AC_MSG_RESULT(Documentation will not be generated) fi use_libz=yes AC_ARG_WITH(libz, [AS_HELP_STRING([--with-libz[=]], [Enable libZ])], [ if test x$withval != xno; then use_libz=yes else use_libz=no fi ]) if [ test $use_libz = yes ]; then AC_CHECK_LIB(z, deflate, have_libz=yes) fi AM_CONDITIONAL([HAVE_LIBZ], [ test "x$have_libz" = xyes]) # crappy hack: of the macros AC_PROG_{CC,CXX,F77,FC}, only the # first expanded one will check for object file extension etc, # and fail if that doesn't work. ### No fortran by default. # use --with-fortran to build fortran interface use_fortran=yes AC_ARG_WITH(fortran, [AS_HELP_STRING([--with-fortran[=]], [Enable fortran])], [ if test x$withval != xno; then use_fortran=yes else use_fortran=no fi ]) if [ test $use_fortran = yes ]; then if test x$F77 = x; then AC_MSG_ERROR(A Fortran compiler is required) fi fi AM_CONDITIONAL([FORTRAN], [test "x$use_fortran" = xyes]) # MPI stuff use_mpi=yes AC_ARG_WITH(mpi, [AS_HELP_STRING([--with-mpi[=]], [Use a specific MPI installation])], [ if test x$withval != xno; then if test x$withval = xyes; then AC_MSG_RESULT(yes) use_mpi_from_system=yes else # use specified path use_mpi_from_system=no mpidir=$withval AC_MSG_RESULT(yes using $mpidir) AC_SUBST(MPIDIR, $mpidir) fi else # either --without-mpi or --with-mpi=no is set use_mpi=no fi ]) if test $use_mpi = yes ; then AC_SUBST(USE_MPIDIR_FROM_USER,$use_mpi_from_system) if test x$use_mpi_from_system = xno; then CPPFLAGS="${CPPFLAGS} -I$mpidir/include " LDFLAGS="${LDFLAGS} -L$mpidir/lib " fi # MPI header AC_CHECK_HEADER([mpi.h],[enable_mpi=yes],) else enable_mpi=no fi AM_CONDITIONAL([USE_MPI], [test "x$enable_mpi" = xyes]) # OTF stuff use_internal_otf=yes otf_asked=no use_otf=yes AC_ARG_WITH(otf, [AS_HELP_STRING([--with-otf[=]], [Use a specific OTF installation])], [ if test x$withval != xno; then otf_asked=yes if test x$withval = xyes; then AC_MSG_RESULT(yes) use_internal_otf=yes else # use specified path use_internal_otf=no otfdir=$withval AC_MSG_RESULT(yes using $otfdir) AC_SUBST(OTFDIR, $otfdir) OTF_INC=$otfdir/include OTF_LIB=$otfdir/lib fi else # either --without-otf or --with-otf=no is set use_internal_otf=no use_otf=no fi ]) AC_ARG_WITH(otf-include, [AS_HELP_STRING([--with-otf-include[=]], [Use a specific OTF header directory])], [ if test x$withval != xno; then otf_asked=yes if test x$withval = xyes; then AC_MSG_RESULT(yes) use_internal_otf=yes else # use specified path use_internal_otf=no otf_inc_dir=$withval AC_MSG_RESULT(yes using $otf_inc_dir) OTF_INC=$otf_inc_dir AC_SUBST(OTF_INC, $otf_inc_dir) fi fi ]) AC_ARG_WITH(otf-lib, [AS_HELP_STRING([--with-otf-lib[=]], [Use a specific libotf.so directory])], [ if test x$withval != xno; then otf_asked=yes if test x$withval = xyes; then AC_MSG_RESULT(yes) use_internal_otf=yes else # use specified path use_internal_otf=no otf_lib_dir=$withval AC_MSG_RESULT(yes using $otf_lib_dir) OTF_LIB=$otf_lib_dir AC_SUBST(OTF_LIB, $otf_lib_dir) fi fi ]) if test $use_otf = yes ; then enable_otf=yes if test x$use_internal_otf = xno; then CPPFLAGS="${CPPFLAGS} -I$OTF_INC/" LDFLAGS="${LDFLAGS} -L$OTF_LIB" # Check for OTF header AC_CHECK_HEADER([otf.h],[enable_otf=yes], AC_MSG_WARN([Cannot find libOTF.])) if test $enable_otf = no && test $otf_asked = yes ; then AC_MSG_ERROR(Cannot find libOTF.) fi else dnl configure otf from extlib otf_parent_dir=`pwd` otf_dir="extlib/otf" AC_MSG_NOTICE([configuring in otf_dir ($otf_parent_dir/$otf_dir)]) AS_IF([test "$srcdir" != "."], [ test -d "$otf_dir" || mkdir -p "$otf_dir" || AC_MSG_ERROR([cannot create $otf_dir]) ]) cd $otf_dir case $srcdir in .) otf_srcdir="$srcdir" ;; /*) otf_srcdir="$srcdir/$otf_dir" ;; *) otf_srcdir="../../$srcdir/$otf_dir" ;; esac otf_conf_cmd="$otf_srcdir/configure" otf_conf_args="$otf_conf_args --prefix=\"$prefix\" --exec-prefix=\"$exec_prefix\" --bindir=\"$bindir\" --libdir=\"$libdir\" --includedir=\"$includedir\" --docdir=\"$docdir/otf\" $OTFFLAGS --cache-file=\"/dev/null\" --srcdir=\"$otf_srcdir\"" AC_MSG_NOTICE([running $SHELL $otf_conf_cmd $otf_conf_args]) eval "$SHELL '$otf_conf_cmd' $otf_conf_args" AS_IF([test $? != "0"], [AC_MSG_ERROR([$otf_conf_cmd failed for $otf_dir])]) cd $otf_parent_dir AS_IF([test x"$OTFLIB" = x], [OTF_LDFLAGS="-lotf"]) # OTF_CPPFLAGS="$OTF_CPPFLAGS -I${prefix}/include/otf" # CPPFLAGS="${CPPFLAGS} -I${prefix}/include/otf" fi else enable_otf=no fi AM_CONDITIONAL([USE_OTF], [test "x$enable_otf" = xyes]) AC_MSG_WARN([use otf = $use_internal_otf]) AM_CONDITIONAL(DONT_USE_INTERNAL_OTF, test x"$use_internal_otf" != "xyes") # Checks for programs AC_CHECK_PROG(HAVE_DOXYGEN, [doxygen], yes, no) if test x$HAVE_DOXYGEN = xno ; then AC_MSG_WARN([Cannot find doxygen]) fi AC_ARG_VAR([PDFLATEX], [Location of the pdflatex program (required for building the hwloc doxygen documentation)]) AC_PATH_TOOL([PDFLATEX], [pdflatex], no) AM_CONDITIONAL([USE_PDFLATEX], [test "x$PDFLATEX" != xno]) AM_CONDITIONAL([USE_DOXYGEN], [test "x$HAVE_DOXYGEN" = xyes]) AM_CONDITIONAL([WITHDOC], [test "$build_doc" = "yes"]) AC_CONFIG_SUBDIRS([extlib/otf]) AC_OUTPUT([Makefile \ gtg.pc \ extlib/Makefile \ inc/Makefile \ src/Makefile \ doc/Makefile \ doc/Doxyfile]) eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/src0000644000000000000000000000013213171135477015422 xustar0030 mtime=1508162367.213861899 30 atime=1508162367.741908015 30 ctime=1508162367.213861899 eztrace-1.1-7/extlib/gtg/src/0000755000175000017500000000000013171135477016666 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/src/PaxHeaders.7332/FORTRAN0000644000000000000000000000013213171135477016535 xustar0030 mtime=1508162367.221862598 30 atime=1508162367.741908015 30 ctime=1508162367.221862598 eztrace-1.1-7/extlib/gtg/src/FORTRAN/0000755000175000017500000000000013171135477020001 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/src/FORTRAN/PaxHeaders.7332/GTGBasic1_f.f0000644000000000000000000000013212544237152020726 xustar0030 mtime=1435582058.547899952 30 atime=1508162317.173564091 30 ctime=1508162367.225862947 eztrace-1.1-7/extlib/gtg/src/FORTRAN/GTGBasic1_f.f0000644000175000017500000002434312544237152022123 0ustar00trahaytrahay00000000000000!!! !!! @file traceGeneratorBasic1_f.f90 !!! module traceGeneratorBasic1_f implicit none ! ! The kind of trace to generate integer :: traceType integer, parameter :: PAJE = 0 integer, parameter :: VITE = 1 integer, parameter :: OTF = 2 integer, parameter :: TAU = 3 interface function getTraceType_i () integer :: getTraceType_i end function getTraceType_i function getMode_i () integer :: getMode_i end function getMode_i end interface contains subroutine setTraceType_f (type, mode) integer, intent (in) :: type integer, intent (in) :: mode call setTraceType_i (type, mode) end subroutine setTraceType_f function getTraceType_f () integer :: getTraceType_f getTraceType_f = getTraceType_i () end function getTraceType_f subroutine initTrace_f (filename, rank, ierr) character (len=*), intent (in) :: filename integer, intent (out) :: ierr integer, intent (in) :: rank call initTrace_i (filename, len (trim (filename)), rank, ierr) end subroutine initTrace_f subroutine addContType_f (alias, contType, name, ierr) character (len=*), intent (in) :: alias character (len=*), intent (in) :: contType character (len=*), intent (in) :: name integer, intent (out) :: ierr call addContType_i (alias , len (trim (alias)) , & contType, len (trim (contType)), & name , len (trim (name)), ierr) end subroutine addContType_f subroutine addStateType_f (alias, contType, name, ierr) character (len=*), intent (in) :: alias character (len=*), intent (in) :: contType character (len=*), intent (in) :: name integer, intent (out) :: ierr call addStateType_i (alias , len (trim (alias)) , & contType, len (trim (contType)), & name , len (trim (name)), ierr) end subroutine addStateType_f subroutine addEventType_f (alias, contType, name, ierr) character (len=*), intent (in) :: alias character (len=*), intent (in) :: contType character (len=*), intent (in) :: name integer, intent (out) :: ierr call addEventType_i (alias , len (trim (alias)) , & contType, len (trim (contType)), & name , len (trim (name)), ierr) end subroutine addEventType_f subroutine addLinkType_f (alias, name, contType, srcContType, & destContType, ierr) character (len=*), intent (in) :: alias character (len=*), intent (in) :: name character (len=*), intent (in) :: contType character (len=*), intent (in) :: srcContType character (len=*), intent (in) :: destContType integer, intent (out) :: ierr call addLinkType_i (alias , len (trim (alias)) , & name , len (trim (name)) , & contType , len (trim (contType)) , & srcContType , len (trim (srcContType)), & destContType, len (trim (destContType)), ierr) end subroutine addLinkType_f subroutine addVarType_f (alias, name, contType, ierr) character (len=*), intent (in) :: alias character (len=*), intent (in) :: contType character (len=*), intent (in) :: name integer, intent (out) :: ierr call addVarType_i (alias , len (trim (alias)) , & contType, len (trim (contType)), & name , len (trim (name)), ierr) end subroutine addVarType_f subroutine addEntityValue_f (alias, entType, name , color, ierr) character (len=*), intent (in) :: alias character (len=*), intent (in) :: entType character (len=*), intent (in) :: name character (len=*), intent (in) :: color integer, intent (out) :: ierr call addEntityValue_i (alias , len (trim (alias)) , & entType, len (trim (entType)), & name , len (trim (name)) , & color , len (trim (color)), ierr) end subroutine addEntityValue_f subroutine addContainer_f (time, alias, type, container, name, & file, ierr) real(8), intent (in) :: time character (len=*), intent (in) :: alias character (len=*), intent (in) :: type character (len=*), intent (in) :: container character (len=*), intent (in) :: name character (len=*), intent (in) :: file integer, intent (out) :: ierr call addContainer_i (time , & alias , len (trim (alias)) , & type , len (trim (type)) , & container, len (trim (container)), & name , len (trim (name)) , & file , len (trim (file)), ierr) end subroutine addContainer_f subroutine destroyContainer_f (time, name, type, ierr) real(8), intent (in) :: time character (len=*), intent (in) :: name character (len=*), intent (in) :: type integer, intent (out) :: ierr call destroyContainer_i (time, & name, len (trim (name)), & type, len (trim (type)), ierr) end subroutine destroyContainer_f subroutine setState_f (time, type, cont, val, ierr) real(8), intent (in) :: time character (len=*), intent (in) :: type character (len=*), intent (in) :: cont character (len=*), intent (in) :: val integer, intent (out) :: ierr call setState_i (time, & type, len (trim (type)), & cont, len (trim (cont)), & val , len (trim (val)), ierr) end subroutine setState_f subroutine pushState_f (time, type, cont, val, ierr) real(8), intent (in) :: time character (len=*), intent (in) :: type character (len=*), intent (in) :: cont character (len=*), intent (in) :: val integer, intent (out) :: ierr call pushState_i (time, & type, len (trim (type)), & cont, len (trim (cont)), & val , len (trim (val)), ierr) end subroutine pushState_f subroutine popState_f (time, type, cont, ierr) real(8), intent (in) :: time character (len=*), intent (in) :: type character (len=*), intent (in) :: cont integer, intent (out) :: ierr call popState_i(time, & type, len (trim (type)), & cont, len (trim (cont)), & ierr) end subroutine popState_f subroutine addEvent_f (time, type, cont, val, ierr) real(8), intent (in) :: time character (len=*), intent (in) :: type character (len=*), intent (in) :: cont character (len=*), intent (in) :: val integer, intent (out) :: ierr call addEvent_i(time, & type, len (trim (type)), & cont, len (trim (cont)), & val , len (trim (val)), ierr) end subroutine addEvent_f subroutine startLink_f (time, type, cont, src, dest, val, key, & ierr) real(8), intent (in) :: time character (len=*), intent (in) :: type character (len=*), intent (in) :: cont character (len=*), intent (in) :: src character (len=*), intent (in) :: dest character (len=*), intent (in) :: val character (len=*), intent (in) :: key integer, intent (out) :: ierr call startLink_i (time, & type, len (trim (type)), & cont, len (trim (cont)), & src , len (trim (src)) , & dest, len (trim (dest)), & val , len (trim (val)) , & key , len (trim (key)), ierr) end subroutine startLink_f subroutine endLink_f (time, type, cont, src, dest, val, key, & ierr) real(8), intent (in) :: time character (len=*), intent (in) :: type character (len=*), intent (in) :: cont character (len=*), intent (in) :: src character (len=*), intent (in) :: dest character (len=*), intent (in) :: val character (len=*), intent (in) :: key integer, intent (out) :: ierr call endLink_i (time, & type, len (trim (type)), & cont, len (trim (cont)), & src , len (trim (src)) , & dest, len (trim (dest)), & val , len (trim (val)) , & key , len (trim (key)), ierr) end subroutine endLink_f subroutine setVar_f (time, type, cont, val, ierr) real(8), intent (in) :: time character (len=*), intent (in) :: type character (len=*), intent (in) :: cont real(8), intent (in) :: val integer, intent (out) :: ierr call setVar_i (time, & type, len (trim (type)), & cont, len (trim (cont)), & val, ierr) end subroutine setVar_f subroutine addVar_f (time, type, cont, val, ierr) real(8), intent (in) :: time character (len=*), intent (in) :: type character (len=*), intent (in) :: cont real(8), intent (in) :: val integer, intent (out) :: ierr call addVar_i (time, & type, len (trim (type)), & cont, len (trim (cont)), & val, ierr) end subroutine addVar_f subroutine subVar_f (time, type, cont, val, ierr) real(8), intent (in) :: time character (len=*), intent (in) :: type character (len=*), intent (in) :: cont real(8), intent (in) :: val integer, intent (out) :: ierr call subVar_i (time, & type, len (trim (type)), & cont, len (trim (cont)), & val, ierr) end subroutine subVar_f subroutine endTrace_f (ierr) integer, intent (out) :: ierr call endTrace_i (ierr) end subroutine endTrace_f end module traceGeneratorBasic1_f eztrace-1.1-7/extlib/gtg/src/PaxHeaders.7332/Makefile.am0000644000000000000000000000013113012560437017522 xustar0030 mtime=1479205151.268726939 29 atime=1508162200.08440455 30 ctime=1508162367.213861899 eztrace-1.1-7/extlib/gtg/src/Makefile.am0000644000175000017500000000325513012560437020717 0ustar00trahaytrahay00000000000000# Copyright CNRS, INRIA, Universit Bordeaux 1 # See COPYING in top-level directory. if HAVE_LIBZ bin_PROGRAMS = gtg_compress gtg_decompress endif # todo: # cpaje_SOURCES = paje_example.c # cpaje_LDADD = libgtg.la @LIBS@ lib_LTLIBRARIES = libgtg.la libgtg_la_CPPFLAGS = -I$(srcdir)/../inc/ libgtg_la_CFLAGS = -Wall -pedantic -DBUILD_PAJE libgtg_la_LIBADD = libgtg_la_LDFLAGS = --no-undefined libgtg_la_SOURCES = \ C/GTGBasic1_c.c \ C/GTGColor.c \ C/GTGReplay.c \ C/GTGMemory.c \ C/paje_header.c \ C/paje_GTGBasic1_c.c if FORTRAN libgtg_la_SOURCES += C/interfaceCFortranBasic1.c \ FORTRAN/GTGBasic1_f.f endif if USE_MPI libgtg_la_CFLAGS += -DUSE_MPI libgtg_la_LIBADD += -lmpi endif if HAVE_LIBZ libgtg_la_CFLAGS += -DHAVE_LIBZ libgtg_la_SOURCES += C/gtg_compress_core.c libgtg_la_LIBADD += -lz endif if USE_OTF if DONT_USE_INTERNAL_OTF OTFINCLUDE = OTFLIBADD = -lopen-trace-format OTFDEPENDENCIES = else OTFINCLUDE = -I$(top_srcdir)/extlib/otf/otflib -I$(top_builddir)/extlib/otf/otflib OTFLIBADD = $(top_builddir)/extlib/otf/otflib/libopen-trace-format.la OTFDEPENDENCIES = $(OTFLIBADD) endif libgtg_la_CFLAGS += -DBUILD_OTF $(OTFINCLUDE) libgtg_la_SOURCES += C/OTF_GTGBasic1_c.c libgtg_la_LIBADD += $(OTFLIBADD) libgtg_la_DEPENDENCIES = $(OTFDEPENDENCIES) endif if HAVE_LIBZ gtg_compress_SOURCES = C/gtg_compress.c gtg_compress_LDADD = -lz libgtg.la gtg_compress_CPPFLAGS = -I$(srcdir)/../inc/ gtg_decompress_SOURCES = C/gtg_decompress.c gtg_decompress_LDADD = -lz libgtg.la gtg_decompress_CPPFLAGS = -I$(srcdir)/../inc/ endif #noinst_HEADERS = ev_codes.h #include_HEADERS = GTGBasic.h GTGOTF_Basic.h GTGPaje_Color.h GTGPaje_Basic.h GTGtypes.h eztrace-1.1-7/extlib/gtg/src/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135230017527 xustar0030 mtime=1508162200.128407636 30 atime=1508162281.122579542 30 ctime=1508162367.213861899 eztrace-1.1-7/extlib/gtg/src/Makefile.in0000644000175000017500000012674713171135230020737 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright CNRS, INRIA, Universit Bordeaux 1 # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @HAVE_LIBZ_TRUE@bin_PROGRAMS = gtg_compress$(EXEEXT) \ @HAVE_LIBZ_TRUE@ gtg_decompress$(EXEEXT) @FORTRAN_TRUE@am__append_1 = C/interfaceCFortranBasic1.c \ @FORTRAN_TRUE@ FORTRAN/GTGBasic1_f.f @USE_MPI_TRUE@am__append_2 = -DUSE_MPI @USE_MPI_TRUE@am__append_3 = -lmpi @HAVE_LIBZ_TRUE@am__append_4 = -DHAVE_LIBZ @HAVE_LIBZ_TRUE@am__append_5 = C/gtg_compress_core.c @HAVE_LIBZ_TRUE@am__append_6 = -lz @USE_OTF_TRUE@am__append_7 = -DBUILD_OTF $(OTFINCLUDE) @USE_OTF_TRUE@am__append_8 = C/OTF_GTGBasic1_c.c @USE_OTF_TRUE@am__append_9 = $(OTFLIBADD) @USE_OTF_FALSE@libgtg_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ @USE_OTF_FALSE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_3) subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = @DONT_USE_INTERNAL_OTF_FALSE@@USE_OTF_TRUE@am__DEPENDENCIES_2 = $(top_builddir)/extlib/otf/otflib/libopen-trace-format.la @USE_OTF_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_2) am__libgtg_la_SOURCES_DIST = C/GTGBasic1_c.c C/GTGColor.c \ C/GTGReplay.c C/GTGMemory.c C/paje_header.c \ C/paje_GTGBasic1_c.c C/interfaceCFortranBasic1.c \ FORTRAN/GTGBasic1_f.f C/gtg_compress_core.c \ C/OTF_GTGBasic1_c.c am__dirstamp = $(am__leading_dot)dirstamp @FORTRAN_TRUE@am__objects_1 = C/libgtg_la-interfaceCFortranBasic1.lo \ @FORTRAN_TRUE@ FORTRAN/GTGBasic1_f.lo @HAVE_LIBZ_TRUE@am__objects_2 = C/libgtg_la-gtg_compress_core.lo @USE_OTF_TRUE@am__objects_3 = C/libgtg_la-OTF_GTGBasic1_c.lo am_libgtg_la_OBJECTS = C/libgtg_la-GTGBasic1_c.lo \ C/libgtg_la-GTGColor.lo C/libgtg_la-GTGReplay.lo \ C/libgtg_la-GTGMemory.lo C/libgtg_la-paje_header.lo \ C/libgtg_la-paje_GTGBasic1_c.lo $(am__objects_1) \ $(am__objects_2) $(am__objects_3) libgtg_la_OBJECTS = $(am_libgtg_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libgtg_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=F77 $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(F77LD) $(AM_FFLAGS) $(FFLAGS) \ $(libgtg_la_LDFLAGS) $(LDFLAGS) -o $@ PROGRAMS = $(bin_PROGRAMS) am__gtg_compress_SOURCES_DIST = C/gtg_compress.c @HAVE_LIBZ_TRUE@am_gtg_compress_OBJECTS = \ @HAVE_LIBZ_TRUE@ C/gtg_compress-gtg_compress.$(OBJEXT) gtg_compress_OBJECTS = $(am_gtg_compress_OBJECTS) @HAVE_LIBZ_TRUE@gtg_compress_DEPENDENCIES = libgtg.la am__gtg_decompress_SOURCES_DIST = C/gtg_decompress.c @HAVE_LIBZ_TRUE@am_gtg_decompress_OBJECTS = \ @HAVE_LIBZ_TRUE@ C/gtg_decompress-gtg_decompress.$(OBJEXT) gtg_decompress_OBJECTS = $(am_gtg_decompress_OBJECTS) @HAVE_LIBZ_TRUE@gtg_decompress_DEPENDENCIES = libgtg.la AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS) LTF77COMPILE = $(LIBTOOL) $(AM_V_lt) --tag=F77 $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(F77) $(AM_FFLAGS) $(FFLAGS) AM_V_F77 = $(am__v_F77_@AM_V@) am__v_F77_ = $(am__v_F77_@AM_DEFAULT_V@) am__v_F77_0 = @echo " F77 " $@; am__v_F77_1 = F77LD = $(F77) F77LINK = $(LIBTOOL) $(AM_V_lt) --tag=F77 $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(F77LD) $(AM_FFLAGS) $(FFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_F77LD = $(am__v_F77LD_@AM_V@) am__v_F77LD_ = $(am__v_F77LD_@AM_DEFAULT_V@) am__v_F77LD_0 = @echo " F77LD " $@; am__v_F77LD_1 = SOURCES = $(libgtg_la_SOURCES) $(gtg_compress_SOURCES) \ $(gtg_decompress_SOURCES) DIST_SOURCES = $(am__libgtg_la_SOURCES_DIST) \ $(am__gtg_compress_SOURCES_DIST) \ $(am__gtg_decompress_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ GREP = @GREP@ HAVE_DOXYGEN = @HAVE_DOXYGEN@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPIDIR = @MPIDIR@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTFDIR = @OTFDIR@ OTF_INC = @OTF_INC@ OTF_LIB = @OTF_LIB@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # todo: # cpaje_SOURCES = paje_example.c # cpaje_LDADD = libgtg.la @LIBS@ lib_LTLIBRARIES = libgtg.la libgtg_la_CPPFLAGS = -I$(srcdir)/../inc/ libgtg_la_CFLAGS = -Wall -pedantic -DBUILD_PAJE $(am__append_2) \ $(am__append_4) $(am__append_7) libgtg_la_LIBADD = $(am__append_3) $(am__append_6) $(am__append_9) libgtg_la_LDFLAGS = --no-undefined libgtg_la_SOURCES = C/GTGBasic1_c.c C/GTGColor.c C/GTGReplay.c \ C/GTGMemory.c C/paje_header.c C/paje_GTGBasic1_c.c \ $(am__append_1) $(am__append_5) $(am__append_8) @DONT_USE_INTERNAL_OTF_FALSE@@USE_OTF_TRUE@OTFINCLUDE = -I$(top_srcdir)/extlib/otf/otflib -I$(top_builddir)/extlib/otf/otflib @DONT_USE_INTERNAL_OTF_TRUE@@USE_OTF_TRUE@OTFINCLUDE = @DONT_USE_INTERNAL_OTF_FALSE@@USE_OTF_TRUE@OTFLIBADD = $(top_builddir)/extlib/otf/otflib/libopen-trace-format.la @DONT_USE_INTERNAL_OTF_TRUE@@USE_OTF_TRUE@OTFLIBADD = -lopen-trace-format @DONT_USE_INTERNAL_OTF_FALSE@@USE_OTF_TRUE@OTFDEPENDENCIES = $(OTFLIBADD) @DONT_USE_INTERNAL_OTF_TRUE@@USE_OTF_TRUE@OTFDEPENDENCIES = @USE_OTF_TRUE@libgtg_la_DEPENDENCIES = $(OTFDEPENDENCIES) @HAVE_LIBZ_TRUE@gtg_compress_SOURCES = C/gtg_compress.c @HAVE_LIBZ_TRUE@gtg_compress_LDADD = -lz libgtg.la @HAVE_LIBZ_TRUE@gtg_compress_CPPFLAGS = -I$(srcdir)/../inc/ @HAVE_LIBZ_TRUE@gtg_decompress_SOURCES = C/gtg_decompress.c @HAVE_LIBZ_TRUE@gtg_decompress_LDADD = -lz libgtg.la @HAVE_LIBZ_TRUE@gtg_decompress_CPPFLAGS = -I$(srcdir)/../inc/ all: all-am .SUFFIXES: .SUFFIXES: .c .f .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } C/$(am__dirstamp): @$(MKDIR_P) C @: > C/$(am__dirstamp) C/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) C/$(DEPDIR) @: > C/$(DEPDIR)/$(am__dirstamp) C/libgtg_la-GTGBasic1_c.lo: C/$(am__dirstamp) \ C/$(DEPDIR)/$(am__dirstamp) C/libgtg_la-GTGColor.lo: C/$(am__dirstamp) C/$(DEPDIR)/$(am__dirstamp) C/libgtg_la-GTGReplay.lo: C/$(am__dirstamp) \ C/$(DEPDIR)/$(am__dirstamp) C/libgtg_la-GTGMemory.lo: C/$(am__dirstamp) \ C/$(DEPDIR)/$(am__dirstamp) C/libgtg_la-paje_header.lo: C/$(am__dirstamp) \ C/$(DEPDIR)/$(am__dirstamp) C/libgtg_la-paje_GTGBasic1_c.lo: C/$(am__dirstamp) \ C/$(DEPDIR)/$(am__dirstamp) C/libgtg_la-interfaceCFortranBasic1.lo: C/$(am__dirstamp) \ C/$(DEPDIR)/$(am__dirstamp) FORTRAN/$(am__dirstamp): @$(MKDIR_P) FORTRAN @: > FORTRAN/$(am__dirstamp) FORTRAN/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) FORTRAN/$(DEPDIR) @: > FORTRAN/$(DEPDIR)/$(am__dirstamp) FORTRAN/GTGBasic1_f.lo: FORTRAN/$(am__dirstamp) \ FORTRAN/$(DEPDIR)/$(am__dirstamp) C/libgtg_la-gtg_compress_core.lo: C/$(am__dirstamp) \ C/$(DEPDIR)/$(am__dirstamp) C/libgtg_la-OTF_GTGBasic1_c.lo: C/$(am__dirstamp) \ C/$(DEPDIR)/$(am__dirstamp) libgtg.la: $(libgtg_la_OBJECTS) $(libgtg_la_DEPENDENCIES) $(EXTRA_libgtg_la_DEPENDENCIES) $(AM_V_F77LD)$(libgtg_la_LINK) -rpath $(libdir) $(libgtg_la_OBJECTS) $(libgtg_la_LIBADD) $(LIBS) install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list C/gtg_compress-gtg_compress.$(OBJEXT): C/$(am__dirstamp) \ C/$(DEPDIR)/$(am__dirstamp) gtg_compress$(EXEEXT): $(gtg_compress_OBJECTS) $(gtg_compress_DEPENDENCIES) $(EXTRA_gtg_compress_DEPENDENCIES) @rm -f gtg_compress$(EXEEXT) $(AM_V_CCLD)$(LINK) $(gtg_compress_OBJECTS) $(gtg_compress_LDADD) $(LIBS) C/gtg_decompress-gtg_decompress.$(OBJEXT): C/$(am__dirstamp) \ C/$(DEPDIR)/$(am__dirstamp) gtg_decompress$(EXEEXT): $(gtg_decompress_OBJECTS) $(gtg_decompress_DEPENDENCIES) $(EXTRA_gtg_decompress_DEPENDENCIES) @rm -f gtg_decompress$(EXEEXT) $(AM_V_CCLD)$(LINK) $(gtg_decompress_OBJECTS) $(gtg_decompress_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f C/*.$(OBJEXT) -rm -f C/*.lo -rm -f FORTRAN/*.$(OBJEXT) -rm -f FORTRAN/*.lo distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@C/$(DEPDIR)/gtg_compress-gtg_compress.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@C/$(DEPDIR)/gtg_decompress-gtg_decompress.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@C/$(DEPDIR)/libgtg_la-GTGBasic1_c.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@C/$(DEPDIR)/libgtg_la-GTGColor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@C/$(DEPDIR)/libgtg_la-GTGMemory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@C/$(DEPDIR)/libgtg_la-GTGReplay.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@C/$(DEPDIR)/libgtg_la-OTF_GTGBasic1_c.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@C/$(DEPDIR)/libgtg_la-gtg_compress_core.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@C/$(DEPDIR)/libgtg_la-interfaceCFortranBasic1.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@C/$(DEPDIR)/libgtg_la-paje_GTGBasic1_c.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@C/$(DEPDIR)/libgtg_la-paje_header.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< C/libgtg_la-GTGBasic1_c.lo: C/GTGBasic1_c.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtg_la_CPPFLAGS) $(CPPFLAGS) $(libgtg_la_CFLAGS) $(CFLAGS) -MT C/libgtg_la-GTGBasic1_c.lo -MD -MP -MF C/$(DEPDIR)/libgtg_la-GTGBasic1_c.Tpo -c -o C/libgtg_la-GTGBasic1_c.lo `test -f 'C/GTGBasic1_c.c' || echo '$(srcdir)/'`C/GTGBasic1_c.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) C/$(DEPDIR)/libgtg_la-GTGBasic1_c.Tpo C/$(DEPDIR)/libgtg_la-GTGBasic1_c.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='C/GTGBasic1_c.c' object='C/libgtg_la-GTGBasic1_c.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtg_la_CPPFLAGS) $(CPPFLAGS) $(libgtg_la_CFLAGS) $(CFLAGS) -c -o C/libgtg_la-GTGBasic1_c.lo `test -f 'C/GTGBasic1_c.c' || echo '$(srcdir)/'`C/GTGBasic1_c.c C/libgtg_la-GTGColor.lo: C/GTGColor.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtg_la_CPPFLAGS) $(CPPFLAGS) $(libgtg_la_CFLAGS) $(CFLAGS) -MT C/libgtg_la-GTGColor.lo -MD -MP -MF C/$(DEPDIR)/libgtg_la-GTGColor.Tpo -c -o C/libgtg_la-GTGColor.lo `test -f 'C/GTGColor.c' || echo '$(srcdir)/'`C/GTGColor.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) C/$(DEPDIR)/libgtg_la-GTGColor.Tpo C/$(DEPDIR)/libgtg_la-GTGColor.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='C/GTGColor.c' object='C/libgtg_la-GTGColor.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtg_la_CPPFLAGS) $(CPPFLAGS) $(libgtg_la_CFLAGS) $(CFLAGS) -c -o C/libgtg_la-GTGColor.lo `test -f 'C/GTGColor.c' || echo '$(srcdir)/'`C/GTGColor.c C/libgtg_la-GTGReplay.lo: C/GTGReplay.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtg_la_CPPFLAGS) $(CPPFLAGS) $(libgtg_la_CFLAGS) $(CFLAGS) -MT C/libgtg_la-GTGReplay.lo -MD -MP -MF C/$(DEPDIR)/libgtg_la-GTGReplay.Tpo -c -o C/libgtg_la-GTGReplay.lo `test -f 'C/GTGReplay.c' || echo '$(srcdir)/'`C/GTGReplay.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) C/$(DEPDIR)/libgtg_la-GTGReplay.Tpo C/$(DEPDIR)/libgtg_la-GTGReplay.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='C/GTGReplay.c' object='C/libgtg_la-GTGReplay.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtg_la_CPPFLAGS) $(CPPFLAGS) $(libgtg_la_CFLAGS) $(CFLAGS) -c -o C/libgtg_la-GTGReplay.lo `test -f 'C/GTGReplay.c' || echo '$(srcdir)/'`C/GTGReplay.c C/libgtg_la-GTGMemory.lo: C/GTGMemory.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtg_la_CPPFLAGS) $(CPPFLAGS) $(libgtg_la_CFLAGS) $(CFLAGS) -MT C/libgtg_la-GTGMemory.lo -MD -MP -MF C/$(DEPDIR)/libgtg_la-GTGMemory.Tpo -c -o C/libgtg_la-GTGMemory.lo `test -f 'C/GTGMemory.c' || echo '$(srcdir)/'`C/GTGMemory.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) C/$(DEPDIR)/libgtg_la-GTGMemory.Tpo C/$(DEPDIR)/libgtg_la-GTGMemory.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='C/GTGMemory.c' object='C/libgtg_la-GTGMemory.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtg_la_CPPFLAGS) $(CPPFLAGS) $(libgtg_la_CFLAGS) $(CFLAGS) -c -o C/libgtg_la-GTGMemory.lo `test -f 'C/GTGMemory.c' || echo '$(srcdir)/'`C/GTGMemory.c C/libgtg_la-paje_header.lo: C/paje_header.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtg_la_CPPFLAGS) $(CPPFLAGS) $(libgtg_la_CFLAGS) $(CFLAGS) -MT C/libgtg_la-paje_header.lo -MD -MP -MF C/$(DEPDIR)/libgtg_la-paje_header.Tpo -c -o C/libgtg_la-paje_header.lo `test -f 'C/paje_header.c' || echo '$(srcdir)/'`C/paje_header.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) C/$(DEPDIR)/libgtg_la-paje_header.Tpo C/$(DEPDIR)/libgtg_la-paje_header.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='C/paje_header.c' object='C/libgtg_la-paje_header.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtg_la_CPPFLAGS) $(CPPFLAGS) $(libgtg_la_CFLAGS) $(CFLAGS) -c -o C/libgtg_la-paje_header.lo `test -f 'C/paje_header.c' || echo '$(srcdir)/'`C/paje_header.c C/libgtg_la-paje_GTGBasic1_c.lo: C/paje_GTGBasic1_c.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtg_la_CPPFLAGS) $(CPPFLAGS) $(libgtg_la_CFLAGS) $(CFLAGS) -MT C/libgtg_la-paje_GTGBasic1_c.lo -MD -MP -MF C/$(DEPDIR)/libgtg_la-paje_GTGBasic1_c.Tpo -c -o C/libgtg_la-paje_GTGBasic1_c.lo `test -f 'C/paje_GTGBasic1_c.c' || echo '$(srcdir)/'`C/paje_GTGBasic1_c.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) C/$(DEPDIR)/libgtg_la-paje_GTGBasic1_c.Tpo C/$(DEPDIR)/libgtg_la-paje_GTGBasic1_c.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='C/paje_GTGBasic1_c.c' object='C/libgtg_la-paje_GTGBasic1_c.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtg_la_CPPFLAGS) $(CPPFLAGS) $(libgtg_la_CFLAGS) $(CFLAGS) -c -o C/libgtg_la-paje_GTGBasic1_c.lo `test -f 'C/paje_GTGBasic1_c.c' || echo '$(srcdir)/'`C/paje_GTGBasic1_c.c C/libgtg_la-interfaceCFortranBasic1.lo: C/interfaceCFortranBasic1.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtg_la_CPPFLAGS) $(CPPFLAGS) $(libgtg_la_CFLAGS) $(CFLAGS) -MT C/libgtg_la-interfaceCFortranBasic1.lo -MD -MP -MF C/$(DEPDIR)/libgtg_la-interfaceCFortranBasic1.Tpo -c -o C/libgtg_la-interfaceCFortranBasic1.lo `test -f 'C/interfaceCFortranBasic1.c' || echo '$(srcdir)/'`C/interfaceCFortranBasic1.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) C/$(DEPDIR)/libgtg_la-interfaceCFortranBasic1.Tpo C/$(DEPDIR)/libgtg_la-interfaceCFortranBasic1.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='C/interfaceCFortranBasic1.c' object='C/libgtg_la-interfaceCFortranBasic1.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtg_la_CPPFLAGS) $(CPPFLAGS) $(libgtg_la_CFLAGS) $(CFLAGS) -c -o C/libgtg_la-interfaceCFortranBasic1.lo `test -f 'C/interfaceCFortranBasic1.c' || echo '$(srcdir)/'`C/interfaceCFortranBasic1.c C/libgtg_la-gtg_compress_core.lo: C/gtg_compress_core.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtg_la_CPPFLAGS) $(CPPFLAGS) $(libgtg_la_CFLAGS) $(CFLAGS) -MT C/libgtg_la-gtg_compress_core.lo -MD -MP -MF C/$(DEPDIR)/libgtg_la-gtg_compress_core.Tpo -c -o C/libgtg_la-gtg_compress_core.lo `test -f 'C/gtg_compress_core.c' || echo '$(srcdir)/'`C/gtg_compress_core.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) C/$(DEPDIR)/libgtg_la-gtg_compress_core.Tpo C/$(DEPDIR)/libgtg_la-gtg_compress_core.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='C/gtg_compress_core.c' object='C/libgtg_la-gtg_compress_core.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtg_la_CPPFLAGS) $(CPPFLAGS) $(libgtg_la_CFLAGS) $(CFLAGS) -c -o C/libgtg_la-gtg_compress_core.lo `test -f 'C/gtg_compress_core.c' || echo '$(srcdir)/'`C/gtg_compress_core.c C/libgtg_la-OTF_GTGBasic1_c.lo: C/OTF_GTGBasic1_c.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtg_la_CPPFLAGS) $(CPPFLAGS) $(libgtg_la_CFLAGS) $(CFLAGS) -MT C/libgtg_la-OTF_GTGBasic1_c.lo -MD -MP -MF C/$(DEPDIR)/libgtg_la-OTF_GTGBasic1_c.Tpo -c -o C/libgtg_la-OTF_GTGBasic1_c.lo `test -f 'C/OTF_GTGBasic1_c.c' || echo '$(srcdir)/'`C/OTF_GTGBasic1_c.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) C/$(DEPDIR)/libgtg_la-OTF_GTGBasic1_c.Tpo C/$(DEPDIR)/libgtg_la-OTF_GTGBasic1_c.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='C/OTF_GTGBasic1_c.c' object='C/libgtg_la-OTF_GTGBasic1_c.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtg_la_CPPFLAGS) $(CPPFLAGS) $(libgtg_la_CFLAGS) $(CFLAGS) -c -o C/libgtg_la-OTF_GTGBasic1_c.lo `test -f 'C/OTF_GTGBasic1_c.c' || echo '$(srcdir)/'`C/OTF_GTGBasic1_c.c C/gtg_compress-gtg_compress.o: C/gtg_compress.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gtg_compress_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT C/gtg_compress-gtg_compress.o -MD -MP -MF C/$(DEPDIR)/gtg_compress-gtg_compress.Tpo -c -o C/gtg_compress-gtg_compress.o `test -f 'C/gtg_compress.c' || echo '$(srcdir)/'`C/gtg_compress.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) C/$(DEPDIR)/gtg_compress-gtg_compress.Tpo C/$(DEPDIR)/gtg_compress-gtg_compress.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='C/gtg_compress.c' object='C/gtg_compress-gtg_compress.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gtg_compress_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o C/gtg_compress-gtg_compress.o `test -f 'C/gtg_compress.c' || echo '$(srcdir)/'`C/gtg_compress.c C/gtg_compress-gtg_compress.obj: C/gtg_compress.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gtg_compress_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT C/gtg_compress-gtg_compress.obj -MD -MP -MF C/$(DEPDIR)/gtg_compress-gtg_compress.Tpo -c -o C/gtg_compress-gtg_compress.obj `if test -f 'C/gtg_compress.c'; then $(CYGPATH_W) 'C/gtg_compress.c'; else $(CYGPATH_W) '$(srcdir)/C/gtg_compress.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) C/$(DEPDIR)/gtg_compress-gtg_compress.Tpo C/$(DEPDIR)/gtg_compress-gtg_compress.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='C/gtg_compress.c' object='C/gtg_compress-gtg_compress.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gtg_compress_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o C/gtg_compress-gtg_compress.obj `if test -f 'C/gtg_compress.c'; then $(CYGPATH_W) 'C/gtg_compress.c'; else $(CYGPATH_W) '$(srcdir)/C/gtg_compress.c'; fi` C/gtg_decompress-gtg_decompress.o: C/gtg_decompress.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gtg_decompress_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT C/gtg_decompress-gtg_decompress.o -MD -MP -MF C/$(DEPDIR)/gtg_decompress-gtg_decompress.Tpo -c -o C/gtg_decompress-gtg_decompress.o `test -f 'C/gtg_decompress.c' || echo '$(srcdir)/'`C/gtg_decompress.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) C/$(DEPDIR)/gtg_decompress-gtg_decompress.Tpo C/$(DEPDIR)/gtg_decompress-gtg_decompress.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='C/gtg_decompress.c' object='C/gtg_decompress-gtg_decompress.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gtg_decompress_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o C/gtg_decompress-gtg_decompress.o `test -f 'C/gtg_decompress.c' || echo '$(srcdir)/'`C/gtg_decompress.c C/gtg_decompress-gtg_decompress.obj: C/gtg_decompress.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gtg_decompress_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT C/gtg_decompress-gtg_decompress.obj -MD -MP -MF C/$(DEPDIR)/gtg_decompress-gtg_decompress.Tpo -c -o C/gtg_decompress-gtg_decompress.obj `if test -f 'C/gtg_decompress.c'; then $(CYGPATH_W) 'C/gtg_decompress.c'; else $(CYGPATH_W) '$(srcdir)/C/gtg_decompress.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) C/$(DEPDIR)/gtg_decompress-gtg_decompress.Tpo C/$(DEPDIR)/gtg_decompress-gtg_decompress.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='C/gtg_decompress.c' object='C/gtg_decompress-gtg_decompress.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gtg_decompress_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o C/gtg_decompress-gtg_decompress.obj `if test -f 'C/gtg_decompress.c'; then $(CYGPATH_W) 'C/gtg_decompress.c'; else $(CYGPATH_W) '$(srcdir)/C/gtg_decompress.c'; fi` .f.o: $(AM_V_F77)$(F77COMPILE) -c -o $@ $< .f.obj: $(AM_V_F77)$(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f.lo: $(AM_V_F77)$(LTF77COMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs -rm -rf C/.libs C/_libs -rm -rf FORTRAN/.libs FORTRAN/_libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) install-binPROGRAMS: install-libLTLIBRARIES installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f C/$(DEPDIR)/$(am__dirstamp) -rm -f C/$(am__dirstamp) -rm -f FORTRAN/$(DEPDIR)/$(am__dirstamp) -rm -f FORTRAN/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ clean-libtool mostlyclean-am distclean: distclean-am -rm -rf C/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf C/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ clean-libtool cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-binPROGRAMS install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libLTLIBRARIES install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \ uninstall-libLTLIBRARIES .PRECIOUS: Makefile #noinst_HEADERS = ev_codes.h #include_HEADERS = GTGBasic.h GTGOTF_Basic.h GTGPaje_Color.h GTGPaje_Basic.h GTGtypes.h # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/gtg/src/PaxHeaders.7332/C0000644000000000000000000000013213171135477015604 xustar0030 mtime=1508162367.225862947 30 atime=1508162367.741908015 30 ctime=1508162367.225862947 eztrace-1.1-7/extlib/gtg/src/C/0000755000175000017500000000000013171135477017050 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/src/C/PaxHeaders.7332/GTGBasic1_c.c0000644000000000000000000000013213064436133017765 xustar0030 mtime=1490173019.524562106 30 atime=1508138875.615911427 30 ctime=1508162367.217862248 eztrace-1.1-7/extlib/gtg/src/C/GTGBasic1_c.c0000644000175000017500000003435713064436133021170 0ustar00trahaytrahay00000000000000#define _GNU_SOURCE #include #include #include #include #include "GTG.h" #include "GTGPaje.h" #include "GTGBasic.h" #include "GTGReplay.h" #include "GTGOTF_Basic.h" #include "GTGPaje_Basic.h" /* verbose !=0 means debugging mode */ int verbose = 0; static traceType_t traceType; /* Flags that should be used */ gtg_flag_t gtg_flags; char* getName (int procNbr){ switch (traceType){ #ifdef BUILD_PAJE case PAJE : case VITE : return pajeGetName (procNbr); break; #endif #ifdef BUILD_OTF case OTF : break; #endif #ifdef BUILD_TAU case TAU : #endif default : break; } return "0"; } void setTraceType (traceType_t type){ char* res; traceType = type; res = getenv("GTG_VERBOSE"); if(res) verbose = 1; } traceType_t getTraceType (){ return traceType; } int bufferedModeActivated() { return !(gtg_flags & GTG_FLAG_NOTBUF); } trace_return_t initTrace (const char* filename, int rank, gtg_flag_t flags){ /* first, let's initialize gtg */ gtg_color_init(); if( (flags & GTG_FLAG_USE_MPI) && (flags & GTG_FLAG_OUTOFORDER)) { fprintf(stderr, "Warning: you cannot record events out of order when using MPI\n"); flags ^= GTG_FLAG_OUTOFORDER; } gtg_flags = flags; switch (traceType){ #ifdef BUILD_PAJE case PAJE : return pajeInitTrace (filename, rank, flags, FMT_PAJE); break; case VITE : return pajeInitTrace (filename, rank, flags, FMT_VITE); break; #endif /* BUILD_PAJE */ #ifdef BUILD_OTF case OTF : return OTFInitTrace (filename, flags); break; #endif /* BUILD_OTF */ #ifdef BUILD_TAU case TAU : #endif /* BUILD_TAU */ default : break; } return TRACE_ERR_NOT_IMPL; } trace_return_t setCompress (int val){ #ifndef BUILD_OTF (void) val; #endif switch (traceType){ #ifdef BUILD_OTF case OTF : return OTFSetCompress (val); break; #endif case PAJE : return pajeSetCompress(val); break; case TAU : default : return TRACE_SUCCESS; } return TRACE_SUCCESS; } trace_return_t addContType (const char* alias, const char* contType, const char* name){ switch (traceType){ #ifdef BUILD_PAJE case PAJE : case VITE : return pajeAddContType (alias, contType, name); break; #endif #ifdef BUILD_OTF case OTF : return OTFAddContType (alias, contType, name); break; #endif #ifdef BUILD_TAU case TAU : #endif default : break; } return TRACE_SUCCESS; } trace_return_t addStateType (const char* alias, const char* contType, const char* name){ switch (traceType){ #ifdef BUILD_PAJE case PAJE : case VITE : return pajeAddStateType (alias, contType, name); break; #endif #ifdef BUILD_OTF case OTF : return OTFAddStateType (alias, contType, name); break; #endif #ifdef BUILD_TAU case TAU : #endif default : break; } return TRACE_SUCCESS; } trace_return_t addEventType (const char* alias, const char* contType, const char* name){ switch (traceType){ #ifdef BUILD_PAJE case PAJE : case VITE : return pajeAddEventType (alias, contType, name); break; #endif #ifdef BUILD_OTF case OTF : return OTFAddEventType (alias, contType, name); break; #endif #ifdef BUILD_TAU case TAU : #endif default : break; } return TRACE_SUCCESS; } trace_return_t addLinkType (const char* alias , const char* name, const char* contType, const char* srcContType, const char* destContType){ switch (traceType){ #ifdef BUILD_PAJE case PAJE : case VITE : return pajeAddLinkType (alias, name, contType, srcContType, destContType); break; #endif #ifdef BUILD_OTF case OTF : return OTFAddLinkType (alias, name, contType, srcContType, destContType); break; #endif #ifdef BUILD_TAU case TAU : #endif default : break; } return TRACE_SUCCESS; } trace_return_t addVarType (const char* alias , const char* name, const char* contType){ switch (traceType){ #ifdef BUILD_PAJE case PAJE : case VITE : return pajeAddVarType (alias, contType, name); break; #endif #ifdef BUILD_OTF case OTF : return OTFAddVarType (alias, contType, name); break; #endif #ifdef BUILD_TAU case TAU : #endif default : break; } return TRACE_SUCCESS; } trace_return_t addEntityValue (const char* alias, const char* entType, const char* name , gtg_color_t p_color){ switch (traceType){ #ifdef BUILD_PAJE case PAJE : case VITE : return pajeAddEntityValue (alias, entType, name, Paje_get_color(p_color)); break; #endif #ifdef BUILD_OTF case OTF : return OTFAddEntityValue (alias, entType, name, OTF_get_color(p_color)); break; #endif #ifdef BUILD_TAU case TAU : #endif default : break; } return TRACE_SUCCESS; } trace_return_t addContainer (varPrec time, const char* alias , const char* type, const char* container, const char* name, const char* file){ #ifdef BUILD_OTF /* for OTF traces, adding a container consists in two steps: * 1 - defining the container (this appears in the trace headers) * 2 - starting the container (this appears in the body) * We need to define the container right now so that it can be refered to * before its start (for example a StartLink event may use this container * before its creation) */ if (traceType == OTF){ return OTFDefineContainer (alias, type, container, name, file); } #endif if(gtg_flags & GTG_FLAG_OUTOFORDER) { /* if the application records events out of order, don't execute this function right now. */ gtg_record(event_addContainer, time, alias, type, container, name, file); return TRACE_SUCCESS; } switch (traceType){ #ifdef BUILD_PAJE case PAJE : return pajeSeqAddContainer (time, alias, type, container, name); break; case VITE : return pajeAddContainer (time, alias, type, container, name, file); break; #endif #ifdef BUILD_OTF case OTF : return OTFStartContainer (time, alias, type, container, name, file); break; #endif #ifdef BUILD_TAU case TAU : #endif default : break; } return TRACE_SUCCESS; } trace_return_t destroyContainer (varPrec time, const char* name, const char* type){ if(gtg_flags & GTG_FLAG_OUTOFORDER) { gtg_record(event_destroyContainer, time, name, type); return TRACE_SUCCESS; } switch (traceType){ #ifdef BUILD_PAJE case PAJE : case VITE : return pajeDestroyContainer (time, name, type); break; #endif #ifdef BUILD_OTF case OTF : return OTFDestroyContainer (time, name, type); break; #endif #ifdef BUILD_TAU case TAU : #endif default : break; } return TRACE_SUCCESS; } trace_return_t setState (varPrec time, const char* type, const char* cont, const char* val){ if(gtg_flags & GTG_FLAG_OUTOFORDER) { gtg_record(event_setState, time, type, cont, val); return TRACE_SUCCESS; } switch (traceType){ #ifdef BUILD_PAJE case PAJE : case VITE : return pajeSetState (time, type, cont, val); break; #endif #ifdef BUILD_OTF case OTF : return OTFSetState (time, type, cont, val); break; #endif #ifdef BUILD_TAU case TAU : #endif default : break; } return TRACE_SUCCESS; } trace_return_t pushState (varPrec time, const char* type, const char* cont, const char* val){ if(gtg_flags & GTG_FLAG_OUTOFORDER) { gtg_record(event_pushState, time, type, cont, val); return TRACE_SUCCESS; } switch (traceType){ #ifdef BUILD_PAJE case PAJE : case VITE : return pajePushState (time, type, cont, val); break; #endif #ifdef BUILD_OTF case OTF : return OTFPushState (time, type, cont, val); break; #endif #ifdef BUILD_TAU case TAU : #endif default : break; } return TRACE_SUCCESS; } trace_return_t pushStateExtra (varPrec time, const char* type, const char* cont, const char* val, const char* extra){ if(gtg_flags & GTG_FLAG_OUTOFORDER) { gtg_record(event_pushStateExtra, time, type, cont, val, extra); return TRACE_SUCCESS; } switch (traceType){ #ifdef BUILD_PAJE case PAJE : case VITE : return pajePushStateExtra (time, type, cont, val, extra); break; #endif #ifdef BUILD_OTF case OTF : return OTFPushState (time, type, cont, val); break; #endif #ifdef BUILD_TAU case TAU : #endif default : break; } return TRACE_SUCCESS; } trace_return_t popState (varPrec time, const char* type, const char* cont){ if(gtg_flags & GTG_FLAG_OUTOFORDER) { gtg_record(event_popState, time, type, cont); return TRACE_SUCCESS; } switch (traceType){ #ifdef BUILD_PAJE case PAJE : case VITE : return pajePopState (time, type, cont); break; #endif #ifdef BUILD_OTF case OTF : return OTFPopState (time, type, cont); break; #endif #ifdef BUILD_TAU case TAU : #endif default : break; } return TRACE_SUCCESS; } trace_return_t addEvent (varPrec time, const char* type, const char* cont, const char* val){ if(gtg_flags & GTG_FLAG_OUTOFORDER) { gtg_record(event_addEvent, time, type, cont, val); return TRACE_SUCCESS; } switch (traceType){ #ifdef BUILD_PAJE case PAJE : case VITE : return pajeAddEvent (time, type, cont, val); break; #endif #ifdef BUILD_OTF case OTF : return OTFAddEvent (time, type, cont, val); break; #endif #ifdef BUILD_TAU case TAU : #endif default : break; } return TRACE_SUCCESS; } trace_return_t startLink (varPrec time, const char* type, const char* cont, const char* src, const char* dest, const char* val, const char* key){ if(gtg_flags & GTG_FLAG_OUTOFORDER) { gtg_record(event_startLink, time, type, cont, src, dest, val, key); return TRACE_SUCCESS; } #ifndef BUILD_OTF (void) dest; #endif switch (traceType){ #ifdef BUILD_PAJE case PAJE : case VITE : return pajeStartLink (time, type, cont, src, val, key); break; #endif #ifdef BUILD_OTF case OTF : return OTFStartLink (time, type, src, dest, val, key); break; #endif #ifdef BUILD_TAU case TAU : #endif default : break; } return TRACE_SUCCESS; } trace_return_t endLink (varPrec time, const char* type, const char* cont, const char* src, const char* dest, const char* val, const char* key){ if(gtg_flags & GTG_FLAG_OUTOFORDER) { gtg_record(event_endLink, time, type, cont, src, dest, val, key); return TRACE_SUCCESS; } #ifndef BUILD_OTF (void) src; #endif switch (traceType){ #ifdef BUILD_PAJE case PAJE : case VITE : return pajeEndLink (time, type, cont, dest, val, key); break; #endif #ifdef BUILD_OTF case OTF : return OTFEndLink (time, type, src, dest, val, key); break; #endif #ifdef BUILD_TAU case TAU : #endif default : break; } return TRACE_SUCCESS; } trace_return_t setVar (varPrec time, const char* type, const char* cont, varPrec val){ if(gtg_flags & GTG_FLAG_OUTOFORDER) { gtg_record(event_setVar, time, type, cont, val); return TRACE_SUCCESS; } switch (traceType){ #ifdef BUILD_PAJE case PAJE : case VITE : return pajeSetVar (time, type, cont, val); break; #endif #ifdef BUILD_OTF case OTF : return OTFSetVar (time, type, cont, val); break; #endif #ifdef BUILD_TAU case TAU : #endif default : break; } return TRACE_SUCCESS; } trace_return_t addVar (varPrec time, const char* type, const char* cont, varPrec val){ if(gtg_flags & GTG_FLAG_OUTOFORDER) { gtg_record(event_addVar, time, type, cont, val); return TRACE_SUCCESS; } switch (traceType){ #ifdef BUILD_PAJE case PAJE : case VITE : return pajeAddVar (time, type, cont, val); break; #endif #ifdef BUILD_OTF case OTF : return OTFAddVar (time, type, cont, val); break; #endif #ifdef BUILD_TAU case TAU : #endif default : break; } return TRACE_SUCCESS; } trace_return_t subVar (varPrec time, const char* type, const char* cont, varPrec val){ if(gtg_flags & GTG_FLAG_OUTOFORDER) { gtg_record(event_subVar, time, type, cont, val); return TRACE_SUCCESS; } switch (traceType){ #ifdef BUILD_PAJE case PAJE : case VITE : return pajeSubVar (time, type, cont, val); break; #endif #ifdef BUILD_OTF case OTF : return OTFSubVar (time, type, cont, val); break; #endif #ifdef BUILD_TAU case TAU : #endif default : break; } return TRACE_SUCCESS; } trace_return_t AddComment (const char* comment){ switch (traceType){ #ifdef BUILD_PAJE case PAJE : case VITE : return pajeAddComment (comment); break; #endif #ifdef BUILD_OTF case OTF : return OTFAddComment (comment); break; #endif #ifdef BUILD_TAU case TAU : #endif default : break; } return TRACE_SUCCESS; } trace_return_t endTrace (){ int ret = TRACE_ERR_CLOSE; if(gtg_flags & GTG_FLAG_OUTOFORDER) { gtg_write_events(-1); } switch (traceType){ #ifdef BUILD_PAJE case PAJE : ret = pajeEndTrace (); break; case VITE : ret = viteEndTrace (); break; #endif #ifdef BUILD_OTF case OTF : ret = OTFEndTrace (); break; #endif #ifdef BUILD_TAU case TAU : #endif default : break; } gtg_color_exit(); return ret; } eztrace-1.1-7/extlib/gtg/src/C/PaxHeaders.7332/gtg_compress.c0000644000000000000000000000013212544237152020515 xustar0030 mtime=1435582058.547899952 30 atime=1508138874.527884255 30 ctime=1508162367.225862947 eztrace-1.1-7/extlib/gtg/src/C/gtg_compress.c0000644000175000017500000000240712544237152021707 0ustar00trahaytrahay00000000000000 #include #include #include #include #include "GTGCompress.h" char* input_filename; char* output_filename; static void usage (int argc __attribute__((unused)), char **argv) { fprintf (stderr, "Usage : %s -i input_filename [-o output_filename] \n", argv[0]); } static void parse_args (int argc, char **argv) { int i; input_filename = NULL; for (i = 1; i < argc; i++) { if (strcmp (argv[i], "-o") == 0) { output_filename = argv[++i]; } else if (strcmp (argv[i], "-i") == 0) { if(input_filename) { usage (argc, argv); exit (-1); } input_filename = argv[++i]; } else { if(input_filename) { usage (argc, argv); exit (-1); } input_filename = argv[i]; } } } int main(int argc, char**argv) { parse_args(argc, argv); if(!input_filename) { fprintf(stderr, "please provide an input file and an output file\n"); exit(-1); } if(!output_filename) { asprintf(&output_filename, "%s.z", input_filename); } printf("compressing file %s into file %s\n", input_filename, output_filename); FILE *fin=fopen(input_filename, "r"); FILE *fout=fopen(output_filename, "w"); z_stream z; gtg_compress_init(&z, 1); gtg_compress_f2f(&z, fin, fout); return 0; } eztrace-1.1-7/extlib/gtg/src/C/PaxHeaders.7332/GTGMemory.c0000644000000000000000000000013212544237152017633 xustar0030 mtime=1435582058.543899952 30 atime=1508138875.483908131 30 ctime=1508162367.221862598 eztrace-1.1-7/extlib/gtg/src/C/GTGMemory.c0000644000175000017500000000432612544237152021027 0ustar00trahaytrahay00000000000000#include #include #include "GTGMemory.h" #define CTRL_ALLOC(ptr) \ { \ if(!ptr) { \ fprintf(stderr, "Cannot allocate memory. Aborting\n"); \ abort(); \ } \ } /* Initialize the allocator */ void gtg_block_memory_init(gtg_memory_t *memory, size_t block_len, long initial_block_number) { gtg_memory_t temp_mem = NULL; /* allocate the memory descriptor */ temp_mem = (gtg_memory_t) malloc(sizeof(struct gtg_memory)); CTRL_ALLOC(temp_mem); if (block_len < sizeof(void *)) { block_len = sizeof(void *); } /* allocate n * block_len */ temp_mem->first_mem = malloc((initial_block_number * block_len) + sizeof(void *)); CTRL_ALLOC(temp_mem->first_mem); memset(temp_mem->first_mem, 0, (initial_block_number * block_len) + sizeof(void *)); temp_mem->current_mem = temp_mem->first_mem; *(void **) ((char *) temp_mem->current_mem + (initial_block_number * block_len)) = NULL; temp_mem->block_len = block_len; temp_mem->mem_len = initial_block_number; temp_mem->first_free = NULL; temp_mem->first_new = 0; temp_mem->nb_allocated = 0; *memory = temp_mem; } /* Allocate a block of data */ void* gtg_block_malloc(gtg_memory_t memory) { void *ptr = NULL; if (memory->first_free != NULL) { /* There is a remaining block in memory */ ptr = memory->first_free; memory->first_free = *(void **) ptr; } else { if (memory->first_new >= memory->mem_len) { /* The allocated memory is exhausted. Allocate a larger space. */ const size_t mem_size = memory->mem_len * memory->block_len; void *new_mem = malloc(mem_size + sizeof(void *)); memset(new_mem, 0, mem_size + sizeof(void *)); *(void **) ((char *) new_mem + mem_size) = NULL; *(void **) ((char *) memory->current_mem + mem_size) = new_mem; memory->current_mem = new_mem; memory->first_new = 0; } ptr = (char *) memory->current_mem + memory->block_len * memory->first_new; memory->first_new++; } memory->nb_allocated++; return ptr; } /* Free a block of data */ void gtg_block_free(gtg_memory_t memory, void *ptr) { *(void **) ptr = memory->first_free; memory->first_free = ptr; memory->nb_allocated--; } eztrace-1.1-7/extlib/gtg/src/C/PaxHeaders.7332/GTGReplay.c0000644000000000000000000000013213064436247017623 xustar0030 mtime=1490173095.498406187 30 atime=1508138875.395905933 30 ctime=1508162367.217862248 eztrace-1.1-7/extlib/gtg/src/C/GTGReplay.c0000644000175000017500000003575313064436247021027 0ustar00trahaytrahay00000000000000#define _GNU_SOURCE #include #include #include #include #include "GTGBasic.h" #include "GTGReplay.h" #include "GTGMemory.h" #define MAX_EVENTS (2048*1024) #define SHORTCUT_RATIO 1000 extern gtg_flag_t gtg_flags; #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) /* This file is used for ensuring that events are recorded in the correct order. * This is done by storing events in a list. The list is flushed when full or at the * end of the application. When the list is flushed, when event is recorded (by calling * addVar, startLink, etc.) * When adding an event to the list, it is inserted in the correct order (so the list * is sorted). In order to avoid browsing the entire list when inserting an event, * a 'shortcut' list is also implemented. One event out of 1000 is inserted in the * shortcut list. Thus, looking for the place to insert an element, we can browse the * shortcut list until we find the right shortcut. We then browse the event list, starting * from this shortcut. This permits to speed up the insertion of events by approx 1000. */ /* event list */ struct event_list_t { struct event_list_t *next; struct event_list_t *prev; enum event_type_t type; varPrec time; uint64_t data[6]; }; /* shortcut list */ struct event_list_shortcut_t { struct event_list_shortcut_t *next; struct event_list_shortcut_t *prev; varPrec time; struct event_list_t* event; }; /* queue and tail of the shortcut list */ static struct event_list_shortcut_t* __shortcut_first = NULL; static struct event_list_shortcut_t* __shortcut_last = NULL; /* queue and tail of the event list */ static struct event_list_t* __first_event = NULL; static struct event_list_t* __last_event = NULL; static int nb_events = 0; /* block allocators used for the event list and the shortcut list */ gtg_memory_t memory; gtg_memory_t shortcut_memory; /* insert new_event *after* cur_event */ static void __event_list_insert_after(struct event_list_t*new_event, struct event_list_t *cur_event) { assert(cur_event); new_event->prev = cur_event; new_event->next = cur_event->next; cur_event->next = new_event; if(cur_event->next) new_event->next->prev = new_event; else /* this is the last event */ __last_event = new_event; } /* insert new_event *before* cur_event */ static void __event_list_insert_before(struct event_list_t*new_event, struct event_list_t *cur_event) { assert(cur_event); new_event->next = cur_event; new_event->prev = cur_event->prev; cur_event->prev = new_event; if(cur_event->prev) new_event->prev->next = new_event; else __first_event = new_event; } /* for debugging purpose, print the list of recorded events */ static inline void __gtg_print_events() { struct event_list_t* cur_event = __first_event; while(cur_event) { printf("[%p]\t T=%f \t event type=%d\n", (void*)cur_event, cur_event->time, cur_event->type); cur_event = cur_event->next; } } static inline void __gtg_print_n_events(int nb_events, struct event_list_t *p_event) { struct event_list_t* cur_event = p_event; int i; for(i=0; itime, cur_event->type); cur_event = cur_event->next; } } /* run the first nb_events_to_write events * if nb_events_to_write == 1, it run all recorded events. */ void gtg_write_events(long nb_events_to_write) { struct event_list_t* cur_event = __first_event; struct event_list_t* prev; struct event_list_t* next; void* ptr; volatile int n = 0; int cpt=0; /* unset the outoforder flag so that functions can be called for real */ gtg_flags ^= GTG_FLAG_OUTOFORDER; while(cur_event && ((nb_events_to_write<0) ||(n < nb_events_to_write))) { /* for each event, call the corresponding function */ cpt++; switch(cur_event->type) { case event_addContainer: /* get the 5 parameters that were recorded and pass them to addContainer */ addContainer(cur_event->time, (char*)cur_event->data[0], (char*)cur_event->data[1], (char*)cur_event->data[2], (char*)cur_event->data[3], (char*)cur_event->data[4]); break; case event_destroyContainer: destroyContainer(cur_event->time, (char*)cur_event->data[0], (char*)cur_event->data[1]); break; case event_setState: setState(cur_event->time, (char*)cur_event->data[0], (char*)cur_event->data[1], (char*)cur_event->data[2]); break; case event_pushState: pushState(cur_event->time, (char*)cur_event->data[0], (char*)cur_event->data[1], (char*)cur_event->data[2]); break; case event_pushStateExtra: pushStateExtra(cur_event->time, (char*)cur_event->data[0], (char*)cur_event->data[1], (char*)cur_event->data[2], (char*)cur_event->data[3]); break; case event_popState: popState(cur_event->time, (char*)cur_event->data[0], (char*)cur_event->data[1]); break; case event_addEvent: addEvent(cur_event->time, (char*)cur_event->data[0], (char*)cur_event->data[1], (char*)cur_event->data[2]); break; case event_startLink: startLink(cur_event->time, (char*)cur_event->data[0], (char*)cur_event->data[1], (char*)cur_event->data[2], (char*)cur_event->data[3], (char*)cur_event->data[4], (char*)cur_event->data[5]); break; case event_endLink: endLink(cur_event->time, (char*)cur_event->data[0], (char*)cur_event->data[1], (char*)cur_event->data[2], (char*)cur_event->data[3], (char*)cur_event->data[4], (char*)cur_event->data[5]); break; case event_setVar: setVar(cur_event->time, (char*)cur_event->data[0], (char*)cur_event->data[1], (double)cur_event->data[2]); break; case event_addVar: addVar(cur_event->time, (char*)cur_event->data[0], (char*)cur_event->data[1], (double)cur_event->data[2]); break; case event_subVar: subVar(cur_event->time, (char*)cur_event->data[0], (char*)cur_event->data[1], (double)cur_event->data[2]); break; default: fprintf(stderr, "Unknown event type: %d\n", cur_event->type); } /* remove the current item from the list */ prev = cur_event->prev; next = cur_event->next; if(prev) prev->next = next; if(next) next->prev = prev; n++; nb_events--; /* delete the current event */ ptr = cur_event; cur_event = next; gtg_block_free(memory, ptr); } __first_event = cur_event; /* update the shortcut list */ { struct event_list_shortcut_t *cur_shortcut = __shortcut_first; if(__first_event) { /* the event list is not empty. Remove the shortcut that correspond * to events that were processed. */ while(cur_shortcut && cur_shortcut->time < __first_event->time) { struct event_list_shortcut_t * next_shortcut = cur_shortcut->next; next_shortcut->prev = NULL; gtg_block_free(shortcut_memory, cur_shortcut); cur_shortcut = next_shortcut; } } else { /* the event list is empty. Let's empty the shortcut list. */ while(cur_shortcut) { struct event_list_shortcut_t * next_shortcut = cur_shortcut->next; cur_shortcut->prev = NULL; gtg_block_free(shortcut_memory, cur_shortcut); cur_shortcut = next_shortcut; } } __shortcut_first = cur_shortcut; if(!__shortcut_first) /* if the shortcut list is empty, update shortcut_last */ __shortcut_last = NULL; } /* set the outoforder flag so that the next calls to functions can be recorded */ gtg_flags |= GTG_FLAG_OUTOFORDER; } /* update the shortcut list */ static void __gtg_insert_shortcut(struct event_list_t* new_event) { struct event_list_shortcut_t *new_shortcut; /* create a shortcut (roughly) once every 1000 events */ if(nb_events % SHORTCUT_RATIO) return; /* allocate and initialize the new shortcut */ new_shortcut = gtg_block_malloc(shortcut_memory); new_shortcut->time = new_event->time; new_shortcut->event = new_event; /* insert the shortcut in the shortcut list */ if(!__shortcut_first || !__shortcut_last) { /* the shortcut list is not initialized yet */ __shortcut_first = new_shortcut; __shortcut_last = new_shortcut; new_shortcut->next = NULL; new_shortcut->prev = NULL; return; } /* browse the shortcut list and find where to insert new_shortcut */ { struct event_list_shortcut_t * cur_shortcut = __shortcut_last; while(cur_shortcut && cur_shortcut->time > new_shortcut->time) { cur_shortcut = cur_shortcut->prev; } if(!cur_shortcut) { /* we need to insert new_shortcut at the beginning of the list */ new_shortcut->next = __shortcut_first; new_shortcut->prev = NULL; new_shortcut->next->prev = new_shortcut; __shortcut_first = new_shortcut; return; } /* insert new_shortcut between cur_shortcut and cur_shortcut->next */ new_shortcut->next = cur_shortcut->next; new_shortcut->prev = cur_shortcut; cur_shortcut->next = new_shortcut; if(new_shortcut->next) new_shortcut->next->prev = new_shortcut; else { __shortcut_last = new_shortcut; } } } /* Insert an event in the list of events. * At any time, this list is sorted. */ static void __gtg_insert(struct event_list_t* new_event) { struct event_list_t* cur_event = NULL; struct event_list_t* next_event = NULL; /* The list of event is not initialized yet */ if(!__last_event || !__first_event) { __last_event = new_event; __first_event = new_event; new_event->next = NULL; new_event->prev = NULL; goto out; } /* This is the 'normal' case: the event is the last one */ if(likely(new_event->time >= __last_event->time)) { /* the event is the last one */ __last_event->next = new_event; new_event->prev = __last_event; new_event->next = NULL; __last_event = new_event; goto out; } if(new_event->time < __first_event->time) { /* the event is the first one */ __first_event->prev = new_event; new_event->next = __first_event; new_event->prev = NULL; __first_event = new_event; goto out; } /* the last event happened after new_event. * let's browse the list and find a place to insert new_event. */ cur_event = __first_event; next_event = __first_event->next; if(unlikely(!next_event)) { /* only one event in the list. We know that it happened after new_event. * let's insert new_event in the first position */ /* this should never happen */ new_event->next = __first_event; __first_event->prev = new_event; __first_event = new_event; goto out; } /* browse the shortcut list starting from the end (since it is likely that new_event * happened not so long before last_event. */ { struct event_list_shortcut_t* cur_shortcut = __shortcut_last; while(cur_shortcut) { if(cur_shortcut->time <= new_event->time) { /* we need to insert new_event between cur_shortcut and cur_shortcut->next */ /* browse the list, starting from cur_shortcut->event */ cur_event = cur_shortcut->event; while(cur_event->time <= new_event->time) { /* We don't need to check for the end of the list. * This should never happen since this case is handled earlier */ cur_event = cur_event->next; } assert(cur_event->prev->time <= new_event->time); /* insert new_event between cur_event->prev and cur_event */ __event_list_insert_before(new_event, cur_event); goto out; } if(cur_shortcut->prev) cur_shortcut = cur_shortcut->prev; else /* we browsed the whole list but didn't find the place where to insert the event. */ break; } } /* cur_shortcut is NULL */ /* browse the list starting from the end (since it is likely that new_event * happened not so long before last_event. */ cur_event = __last_event; while(cur_event->time > new_event->time) { if(cur_event->prev) cur_event = cur_event->prev; else break; } /* insert new_event after cur_event */ __event_list_insert_after(new_event, cur_event); out: __gtg_insert_shortcut(new_event); } /* copy nb_string string parameters and nb_double double parameters into the data array of evt * warning: actually, the parameters are not copied (in the case of string) */ static void __copy_args(struct event_list_t* evt, int nb_string, int nb_double, va_list args) { int i; for(i=0; idata[i] = (uint64_t) x; } for(i=nb_string; idata[i] = (uint64_t)x; } } /* postpone the recording of an event */ void gtg_record(enum event_type_t type, varPrec time, ...) { struct event_list_t* new_event; va_list arguments; static int initialized=0; if(!initialized) { /* initialize the block allocator */ gtg_block_memory_init(&memory, sizeof(struct event_list_t), MAX_EVENTS); gtg_block_memory_init(&shortcut_memory, sizeof(struct event_list_shortcut_t), MAX_EVENTS/1000); initialized = 1; } /* If the buffer is full, flush half of the recorded events. * There may be out of order events, but it is quite unlikely. */ if(nb_events > MAX_EVENTS) gtg_write_events(MAX_EVENTS/2); /* allocate the new event */ new_event = gtg_block_malloc(memory); new_event->next = NULL; new_event->type = type; new_event->time = time; va_start (arguments, time); /* Depending on the type of event, copy its parameters */ switch(type) { case event_startLink: case event_endLink: /* 6 parameters */ __copy_args(new_event, 6, 0, arguments); break; case event_addContainer: /* 5 parameters */ __copy_args(new_event, 5, 0, arguments); break; case event_pushStateExtra: /* 4 parameters */ __copy_args(new_event, 4, 0, arguments); break; case event_setState: case event_pushState: case event_addEvent: /* 3 parameters */ __copy_args(new_event, 3, 0, arguments); break; case event_setVar: case event_addVar: case event_subVar: /* 2 string parameters + 1 double */ __copy_args(new_event, 2, 1, arguments); break; case event_destroyContainer: case event_popState: /* 2 parameters */ __copy_args(new_event, 2, 0, arguments); break; default: fprintf(stderr, "Unknown event type: %d\n", type); } va_end (arguments); /* Insert the new event in the list */ nb_events++; __gtg_insert(new_event); } eztrace-1.1-7/extlib/gtg/src/C/PaxHeaders.7332/GTGColor.c0000644000000000000000000000013212544237152017441 xustar0030 mtime=1435582058.543899952 30 atime=1508138875.639912027 30 ctime=1508162367.217862248 eztrace-1.1-7/extlib/gtg/src/C/GTGColor.c0000644000175000017500000001513212544237152020632 0ustar00trahaytrahay00000000000000/** * \file GTGColor.c * \version 0.1 * \brief * * This file defines some basic colors to use in entity values for GTG. * */ #include #include #include "GTGColor.h" #define NB_DEFAULT_COLOR 22 struct gtg_color __gtg_colors[NB_DEFAULT_COLOR]; gtg_color_t GTG_BLACK; gtg_color_t GTG_RED; gtg_color_t GTG_GREEN; gtg_color_t GTG_BLUE; gtg_color_t GTG_WHITE; gtg_color_t GTG_TEAL; gtg_color_t GTG_DARKGREY; gtg_color_t GTG_YELLOW; gtg_color_t GTG_PURPLE; gtg_color_t GTG_LIGHTBROWN; gtg_color_t GTG_LIGHTGREY; gtg_color_t GTG_DARKBLUE; gtg_color_t GTG_PINK; gtg_color_t GTG_DARKPINK; gtg_color_t GTG_SEABLUE; gtg_color_t GTG_KAKI; gtg_color_t GTG_REDBLOOD; gtg_color_t GTG_BROWN; gtg_color_t GTG_GRENAT; gtg_color_t GTG_ORANGE; gtg_color_t GTG_MAUVE; gtg_color_t GTG_LIGHTPINK; /** * \ingroup color * \brief Black color */ #define GTG_BLACK_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(0, 0, 0) /** * \ingroup color * \brief Red color */ #define GTG_RED_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(255, 0, 0) /** * \ingroup color * \brief Green color */ #define GTG_GREEN_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(0, 255, 0) /** * \ingroup color * \brief Blue color */ #define GTG_BLUE_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(0, 0, 255) /** * \ingroup color * \brief White color */ #define GTG_WHITE_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(255, 255, 255) /** * \ingroup color * \brief Teal color */ #define GTG_TEAL_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(0, 255, 255) /** * \ingroup color * \brief Dark grey color */ #define GTG_DARKGREY_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(85, 85, 85) /** * \ingroup color * \brief Yellow color */ #define GTG_YELLOW_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(255, 255, 0) /** * \ingroup color * \brief Purple color */ #define GTG_PURPLE_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(153, 25, 230) /** * \ingroup color * \brief Light brown color */ #define GTG_LIGHTBROWN_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(170, 130, 130) /** * \ingroup color * \brief Light grey color */ #define GTG_LIGHTGREY_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(200, 200, 200) /** * \ingroup color * \brief Dark blue color */ #define GTG_DARKBLUE_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(0, 0, 80) /** * \ingroup color * \brief Pink color */ #define GTG_PINK_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(255, 0, 255) /** * \ingroup color * \brief Dark pink color */ #define GTG_DARKPINK_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(180, 80, 180) /** * \ingroup color * \brief Sea blue color */ #define GTG_SEABLUE_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(25, 128, 200) /** * \ingroup color * \brief Kaki color */ #define GTG_KAKI_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(80, 100, 25) /** * \ingroup color * \brief Red blood color */ #define GTG_REDBLOOD_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(200, 25, 25) /** * \ingroup color * \brief Brown color */ #define GTG_BROWN_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(100, 25, 25) /** * \ingroup color * \brief Grenat color */ #define GTG_GRENAT_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(100, 0, 80) /** * \ingroup color * \brief Orange color */ #define GTG_ORANGE_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(255, 160, 0) /** * \ingroup color * \brief Mauve color */ #define GTG_MAUVE_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(128, 0, 255) /** * \ingroup color * \brief Light pink color */ #define GTG_LIGHTPINK_RGB (gtg_rgb_color_t) GTG_COLOR_SET_COLOR(255, 128, 255) void __init_color(gtg_color_t p_color, const char* name, gtg_rgb_color_t rgb) { p_color->color_name = (char*)malloc((strlen(name)+1)*sizeof(char)); strncpy(p_color->color_name, name, strlen(name)+1); p_color->rgb = rgb; } static int __gtg_color_initialized = 0; void gtg_color_init() { /* make sure that this function is only run once */ if(__gtg_color_initialized) return; __gtg_color_initialized = 1; /* fill the default color structures */ GTG_BLACK = &__gtg_colors[0]; GTG_RED = &__gtg_colors[1]; GTG_GREEN = &__gtg_colors[2]; GTG_BLUE = &__gtg_colors[3]; GTG_WHITE = &__gtg_colors[4]; GTG_TEAL = &__gtg_colors[5]; GTG_DARKGREY = &__gtg_colors[6]; GTG_YELLOW = &__gtg_colors[7]; GTG_PURPLE = &__gtg_colors[8]; GTG_LIGHTBROWN = &__gtg_colors[9]; GTG_LIGHTGREY = &__gtg_colors[10]; GTG_DARKBLUE = &__gtg_colors[11]; GTG_PINK = &__gtg_colors[12]; GTG_DARKPINK = &__gtg_colors[13]; GTG_SEABLUE = &__gtg_colors[14]; GTG_KAKI = &__gtg_colors[15]; GTG_REDBLOOD = &__gtg_colors[16]; GTG_BROWN = &__gtg_colors[17]; GTG_GRENAT = &__gtg_colors[18]; GTG_ORANGE = &__gtg_colors[19]; GTG_MAUVE = &__gtg_colors[20]; GTG_LIGHTPINK = &__gtg_colors[21]; __init_color(GTG_BLACK , "BLACK" , GTG_BLACK_RGB); __init_color(GTG_RED , "RED" , GTG_RED_RGB); __init_color(GTG_GREEN , "GREEN" , GTG_GREEN_RGB); __init_color(GTG_BLUE , "BLUE" , GTG_BLUE_RGB); __init_color(GTG_WHITE , "WHITE" , GTG_WHITE_RGB); __init_color(GTG_TEAL , "TEAL" , GTG_TEAL_RGB); __init_color(GTG_DARKGREY , "DARKGREY" , GTG_DARKGREY_RGB); __init_color(GTG_YELLOW , "YELLOW" , GTG_YELLOW_RGB); __init_color(GTG_PURPLE , "PURPLE" , GTG_PURPLE_RGB); __init_color(GTG_LIGHTBROWN, "LIGHTBROWN", GTG_LIGHTBROWN_RGB); __init_color(GTG_LIGHTGREY , "LIGHTGREY" , GTG_LIGHTGREY_RGB); __init_color(GTG_DARKBLUE , "DARKBLUE" , GTG_DARKBLUE_RGB); __init_color(GTG_PINK , "PINK" , GTG_PINK_RGB); __init_color(GTG_DARKPINK , "DARKPINK" , GTG_DARKPINK_RGB); __init_color(GTG_SEABLUE , "SEABLUE" , GTG_SEABLUE_RGB); __init_color(GTG_KAKI , "KAKI" , GTG_KAKI_RGB); __init_color(GTG_REDBLOOD , "REDBLOOD" , GTG_REDBLOOD_RGB); __init_color(GTG_BROWN , "BROWN" , GTG_BROWN_RGB); __init_color(GTG_GRENAT , "GRENAT" , GTG_GRENAT_RGB); __init_color(GTG_ORANGE , "ORANGE" , GTG_ORANGE_RGB); __init_color(GTG_MAUVE , "MAUVE" , GTG_MAUVE_RGB); __init_color(GTG_LIGHTPINK , "LIGHTPINK" , GTG_LIGHTPINK_RGB); } void gtg_color_exit() { int i; for (i=0; icolor_name != NULL ) free(color->color_name); free(color); } eztrace-1.1-7/extlib/gtg/src/C/PaxHeaders.7332/paje_header.c0000644000000000000000000000013213064437514020252 xustar0030 mtime=1490173772.226869204 30 atime=1508138875.379905534 30 ctime=1508162367.221862598 eztrace-1.1-7/extlib/gtg/src/C/paje_header.c0000644000175000017500000002571213064437514021450 0ustar00trahaytrahay00000000000000#ifdef BUILD_PAJE #define _GNU_SOURCE_ #include #include #include #ifdef USE_MPI #include #endif #include "GTG.h" #include "GTGPaje.h" int _is_paje_header_written = 0; gtg_paje_eventdef_t paje_eventdefs[GTG_PAJE_EVTDEF_NBR] = { { "PajeDefineContainerType", 0, NULL, NULL}, { "PajeDefineStateType", 1, NULL, NULL}, { "PajeDefineEventType", 2, NULL, NULL}, { "PajeDefineVariableType", 3, NULL, NULL}, { "PajeDefineLinkType", 4, NULL, NULL}, { "PajeDefineEntityValue", 5, NULL, NULL}, { "PajeCreateContainer", 7, NULL, NULL}, { "PajeDestroyContainer", 8, NULL, NULL}, { "PajeSetState", 10, NULL, NULL}, { "PajePushState", 11, NULL, NULL}, { "PajePushState", 14, NULL, NULL}, { "PajePopState", 12, NULL, NULL}, { "PajeResetState", 13, NULL, NULL}, { "PajeNewEvent", 20, NULL, NULL}, { "PajeSetVariable", 30, NULL, NULL}, { "PajeAddVariable", 31, NULL, NULL}, { "PajeSubVariable", 32, NULL, NULL}, { "PajeStartLink", 40, NULL, NULL}, { "PajeEndLink", 41, NULL, NULL}, }; char *FieldType[GTG_PAJE_FIELDTYPE_NBR] = { "int", "hex", "date", "double", "string", "color" }; #define printExtra( file, event ) \ if ( (paje_eventdefs[event].first) != NULL ) { \ gtg_paje_edp_t *e, *n; \ for( e = paje_eventdefs[event].first; e != NULL; ) { \ n = e->next; \ fprintf(file, "%% %s %s\n", e->name, FieldType[e->type]); \ e = n; \ } \ } /* * args needs to be set to 0 before the first call */ void pajeEventDefAddParam( enum gtg_paje_evtdef_e event, const char *name, enum gtg_paje_fieldtype_e type ) { gtg_paje_edp_t *node = (gtg_paje_edp_t*)malloc(sizeof(gtg_paje_edp_t)); if (_is_paje_header_written) { fprintf(stderr, "GTG [PAJE/VITE]: You cannot add parameters to definitions after the header has been written to the file\n"); return; } node->next = NULL; node->name = strdup(name); node->type = type; if( paje_eventdefs[event].first == NULL ) { paje_eventdefs[event].first = node; paje_eventdefs[event].last = node; } else { paje_eventdefs[event].last->next = node; paje_eventdefs[event].last = node; } } void pajeEventDefDeleteParams( enum gtg_paje_evtdef_e event ) { gtg_paje_edp_t *e, *n; for( e = paje_eventdefs[event].first; e != NULL; ) { n = e->next; free(e->name); free(e); e = n; } paje_eventdefs[event].first = NULL; paje_eventdefs[event].last = NULL; } void pajeEventDefClean() { int i; for(i=0; i #include #include #include "GTG.h" #include "GTGOTF.h" /* set in GTGBasic1_c.c * verbose !=0 means debugging mode */ extern int verbose; /* set to 'val' if the initialization should invoke set_compression * This may happen when setCompress is called before initTrace */ int use_compress = 0; /* Flags that should be used. */ static gtg_flag_t otf_flags; /* OTF data */ static OTF_FileManager* manager = NULL; static OTF_Writer* writer = NULL; /* each of these instances of structures corresponds to the NIL value. It contains: * - the head of the list * - the first identifier */ ContainerType_t ctType; Container_t conts; StateType_t stateTypes; EntityValue_t states; VariableType_t variableTypes; Variable_t variables; EventType_t eventTypes; LinkType_t linkTypes; /* Root name */ static char *filename = NULL; #define CHECK_RESULT(__func__) { \ if(__func__ != 1) { \ fprintf(stderr, "Error while writing the OTF trace\n"); \ abort(); \ } \ } #define TIMER_RES 100000. struct otf_color otf_color_null; const otf_color_t OTF_get_color(gtg_color_t color) { /* todo */ return &otf_color_null; } /* * Local methods for OTF only, will be put in an other file after to be cleaner than now... */ #define getXXXPtrFromName(_type_, list_head) \ struct _type_ *get##_type_##PtrFromName(const char *name) { \ struct _type_ *ptr; \ if(name == NULL) { \ return NULL; \ } \ gtg_list_for_each_entry(ptr, &(list_head).token, token) { \ if(strcmp(name, ptr->name) == 0 \ || strcmp(name, ptr->alias) == 0) { \ return ptr; \ } \ } \ return NULL; \ } #define getXXXFromName(__type__) \ int get##__type__##FromName(const char *name) { \ struct __type__ *res = get##__type__##PtrFromName(name); \ return (res? res->id : __type__##_NIL); \ } /* generate functions that permit to retrieve a pointer to an object*/ getXXXPtrFromName(ContainerType, ctType) getXXXPtrFromName(Container, conts) getXXXPtrFromName(StateType, stateTypes) getXXXPtrFromName(EntityValue, states) getXXXPtrFromName(VariableType, variableTypes) getXXXPtrFromName(EventType, eventTypes) getXXXPtrFromName(LinkType, linkTypes) /* generate functions that permit to retrieve the id of objects */ getXXXFromName(ContainerType) getXXXFromName(Container) getXXXFromName(StateType) getXXXFromName(EntityValue) getXXXFromName(VariableType) getXXXFromName(EventType) getXXXFromName(LinkType) /* * return a pointer to the Variable whose container is cont and whose variable type is type. * return NULL if not found */ Variable_t *getVariablePtrFromCont(int cont, int type) { struct Variable *ptr; /* todo: use one list of variable per container */ gtg_list_for_each_entry(ptr, &(variables).token, token) { if(type == ptr->type && cont == ptr->parent) { return ptr; } } return NULL; } /* * return the id of the Variable whose container is cont and whose variable type is type. * return NULL if not found */ int getVariableFromCont(int cont, int type) { Variable_t *res = getVariablePtrFromCont(cont, type); return (res? res->id : Variable_NIL); } /* Initialize all the OTF-specific variables */ static void __OTF_init() { /* initialize otf_color_null */ asprintf(&otf_color_null.colorID, "NO COLOR"); otf_color_null.red = 0; otf_color_null.green = 0; otf_color_null.blue = 0; /* initialize all the lists/stacks */ init_ContainerType(ctType); init_Container(conts); init_StateType(stateTypes); init_EntityValue(states); init_VariableType(variableTypes); init_Variable(variables); init_EventType(eventTypes); init_LinkType(linkTypes); } /* Beginning of the implementation of the interface for OTF */ trace_return_t OTFInitTrace(const char* filenam, gtg_flag_t flags) { int ret = TRACE_ERR_OPEN; otf_flags = flags; /* first, let's initialize all the OTF-specific variables */ __OTF_init(); filename = (char *)malloc (sizeof (char)* (strlen (filenam)+1)); strcpy (filename, filenam); /* Open maximum of a MAX_PROCESS files for writing trace */ manager = OTF_FileManager_open(MAX_PROCESS); if(manager == NULL) { fprintf (stderr, "Failed to open a manager for OTF. \n Leaving \n"); return (trace_return_t) ret; } writer = OTF_Writer_open(filename, 0, manager); if(writer == NULL) { OTF_FileManager_close(manager); manager = NULL; fprintf (stderr, "Failed to open a writer for OTF. \n Leaving \n"); return (trace_return_t) ret; } OTF_Writer_writeDefTimerResolution(writer, 0, TIMER_RES); if(use_compress) OTF_Writer_setCompression (writer, use_compress); OTFAddContType("0", NULL, "0"); return TRACE_SUCCESS; } trace_return_t OTFSetCompress(int val) { if(writer) { if(OTF_Writer_setCompression (writer, val)) return TRACE_SUCCESS; } else { /* postpone the invocation of setCompression */ use_compress=val; } return TRACE_ERR_WRITE; } trace_return_t OTFAddContType (const char* alias, const char* contType, const char* name) { uint32_t parent = 0; ContainerType_t *p_cont; if(contType != NULL && strcmp(contType, "0") != 0) { /* get its parent id */ parent = getContainerTypeFromName(contType); } /* allocate the container type, initialise it and add it to the list of * container types. */ alloc_init_struct(ContainerType_t, p_cont, &ctType.token, name, alias); if(verbose) printf("addCtType : name %s, alias %s, contType %s\n", name, alias, contType); return TRACE_SUCCESS; } trace_return_t OTFAddStateType (const char* alias, const char* contType, const char* name) { /* allocate the state type, initialise it and add it to the list of * state types. */ StateType_t *p_state; alloc_init_struct(StateType_t, p_state, &stateTypes.token, name, alias); if(verbose) printf("addStateType : id %d, alias %s, name %s, contType %s\n", p_state->id, alias, name, contType); CHECK_RESULT(OTF_Writer_writeDefFunctionGroup(writer, 0, p_state->id, name)); return TRACE_SUCCESS; } trace_return_t OTFAddEventType (const char* alias, const char* contType, const char* name) { /* allocate the event type, initialise it and add it to the list of * event types. */ EventType_t *p_event; alloc_init_struct(EventType_t, p_event, &eventTypes.token, name, alias); p_event->contType = getContainerTypeFromName(contType); if(verbose) printf("addEventType : id %d, alias %s, name %s, contType %s\n", p_event->id, alias, name, contType); CHECK_RESULT(OTF_Writer_writeDefMarker(writer, 0, p_event->id, name, OTF_MARKER_TYPE_UNKNOWN)); return TRACE_SUCCESS; } trace_return_t OTFAddLinkType (const char* alias , const char* name, const char* contType, const char* srcContType, const char* destContType) { /* allocate the link type, initialise it and add it to the list of * link types. */ LinkType_t *p_link; alloc_init_struct(LinkType_t, p_link, &linkTypes.token, name, alias); p_link->contType = getContainerTypeFromName(contType); p_link->srcType = getContainerTypeFromName(srcContType); p_link->destType = getContainerTypeFromName(destContType); if(verbose) printf("addLinkType : id %d, alias %s, name %s, contType %s, src %s, dest %s\n", p_link->id, alias, name, contType, srcContType, destContType); return TRACE_SUCCESS; } trace_return_t OTFAddVarType (const char* alias , const char* contType, const char* name) { /* allocate the Variable type, initialise it and add it to the list of * variable types. */ VariableType_t *p_variable; alloc_init_struct(VariableType_t, p_variable, &variableTypes.token, name, alias); CHECK_RESULT(OTF_Writer_writeDefCounterGroup (writer, 0, p_variable->id, name)); if(verbose) printf("addVarType : id %d, alias %s, name %s, contType %s\n", p_variable->id, alias, name, contType); return TRACE_SUCCESS; } trace_return_t OTFAddEntityValue (const char* alias, const char* entType, const char* name , const otf_color_t color) { int type; EntityValue_t *p_ent; type = getStateTypeFromName(entType); alloc_init_struct(EntityValue_t, p_ent, &states.token, name, alias); if(verbose) printf("addEntityValue : id %d, alias %s, name %s, type %d\n", p_ent->id, alias, name, type); CHECK_RESULT(OTF_Writer_writeDefFunction(writer, 0, p_ent->id, name, type, 0)); return TRACE_SUCCESS; } trace_return_t OTFDefineContainer (const char* alias, const char* type, const char* container, const char* name, const char* file) { int parent; Container_t *p_cont; parent = getContainerFromName(container); /*int ctType = getContainerTypeFromName(type);*/ /* allocate the Container, initialize it and add it to the list of * containers. */ alloc_init_struct(Container_t, p_cont, &conts.token, name, alias); /* Initialize the state stack. */ init_State(p_cont->state_stack); if(verbose) printf("addCont : parent %d, id %d, name %s, alias %s, type %s, parent %s\n", parent, p_cont->id, name, alias, type, container); CHECK_RESULT(OTF_Writer_writeDefProcess(writer, 0, p_cont->id, name, parent)); return TRACE_SUCCESS; } trace_return_t OTFStartContainer (varPrec time, const char* alias, const char* type, const char* container, const char* name, const char* file) { uint32_t new_container = getContainerFromName(alias); if(!new_container) { /* container not yet defined */ OTFDefineContainer(alias, type, container, name, file); } OTF_Writer_writeBeginProcess (writer, time*TIMER_RES, new_container); return TRACE_SUCCESS; } trace_return_t OTFSeqAddContainer (varPrec time, const char* alias, const char* type, const char* container, const char* name) { return OTFStartContainer(time, alias, type, container, name, NULL); } trace_return_t OTFDestroyContainer (varPrec time, const char* name, const char* type) { uint32_t process = getContainerFromName(name); CHECK_RESULT(OTF_Writer_writeEndProcess (writer, time*TIMER_RES, process)); return TRACE_SUCCESS; } trace_return_t OTFSetState (varPrec time, const char* type, const char* cont, const char* val) { Container_t *p_parent = getContainerPtrFromName(cont); int stateType = getStateTypeFromName(type); int state = getEntityValueFromName(val); /* We need to free the current State structure (if it exists). */ State_t* p_state; if(!gtg_stack_empty(&p_parent->state_stack.token)) { p_state = gtg_list_entry(gtg_stack_top(&p_parent->state_stack.token), State_t, token); gtg_stack_pop(&p_parent->state_stack.token); free(p_state); } /* Allocate a new State structure and fill it */ alloc_State(p_state, state, p_parent->id, stateType); /* Add the structure to the container state stack. */ gtg_stack_push(&p_state->token, &p_parent->state_stack.token); if(verbose) printf("SetState : parent %d, stateType %d, val %d\n", p_parent->id, stateType, state); CHECK_RESULT(OTF_Writer_writeEnter (writer, time*TIMER_RES, state, p_parent->id, 0)); return TRACE_SUCCESS; } trace_return_t OTFPushState (varPrec time, const char* type, const char* cont, const char* val) { Container_t *p_parent = getContainerPtrFromName(cont); int stateType = getStateTypeFromName(type); int value = getEntityValueFromName(val); State_t* p_state; /* Allocate a new State structure and fill it */ alloc_State(p_state, value, p_parent->id, stateType); /* Add the structure to the container state stack. */ gtg_stack_push(&p_state->token, &p_parent->state_stack.token); if(verbose) printf("PushState : parent %d, stateType %d, val %d\n", p_parent->id, stateType, value); CHECK_RESULT(OTF_Writer_writeEnter (writer, time*TIMER_RES, value, p_parent->id, 0)); return TRACE_SUCCESS; } trace_return_t OTFPopState (varPrec time, const char* type, const char* cont) { /* Pop and set */ Container_t *p_parent = getContainerPtrFromName(cont); State_t *p_state; /* Free the current State structure (if it exists). */ if(!gtg_stack_empty(&p_parent->state_stack.token)) { /* Get the top of the stack. */ p_state = gtg_list_entry(gtg_stack_top(&p_parent->state_stack.token), State_t, token); gtg_stack_pop(&p_parent->state_stack.token); } else { /* The stack is empty, don't do anything and print a warning */ fprintf(stderr, "Warning: PopState called, but the stack is empty!\n"); return TRACE_ERR_WRITE; } if(verbose) printf("PopState : parent %d, stateType %d, val %d\n", p_state->cont, p_state->stateType, p_state->value); CHECK_RESULT(OTF_Writer_writeLeave (writer, time*TIMER_RES, p_state->value, p_state->cont, 0)); free(p_state); return TRACE_SUCCESS; } trace_return_t OTFAddEvent (varPrec time , const char* type, const char *cont, const char* val){ uint32_t process = getContainerFromName(cont); uint32_t eventType = getEventTypeFromName(type); CHECK_RESULT(OTF_Writer_writeMarker (writer, time*TIMER_RES, process, eventType, val)); if(verbose) printf("AddEvent : parent %d, eventType %d, val %s\n", process, eventType, val); return TRACE_SUCCESS; } trace_return_t OTFStartLink (varPrec time, const char* type, const char* src, const char* dest, const char* val , const char* key){ uint32_t source = getContainerFromName(src); uint32_t destination = getContainerFromName(dest); uint32_t linkType = getLinkTypeFromName(type); CHECK_RESULT(OTF_Writer_writeSendMsg(writer, time*TIMER_RES, source, destination, 0, linkType, 0, 0)); if(verbose) printf("StartLink : time %f, src %d, dest %d, linkType %d, val %s, key %s\n", time*TIMER_RES, source, destination, linkType, val, key); return TRACE_SUCCESS; } trace_return_t OTFEndLink (varPrec time, const char* type, const char* src, const char* dest, const char* val, const char* key){ uint32_t src_cont = getContainerFromName(src); uint32_t dest_cont = getContainerFromName(dest); uint32_t linkType = getLinkTypeFromName(type); CHECK_RESULT(OTF_Writer_writeRecvMsg(writer, time*TIMER_RES, dest_cont, src_cont, 0, linkType, 0, 0)); if(verbose) printf("EndLink : time %f, src %d, dest %d, linkType %d, val %s, key %s\n", time*TIMER_RES, src_cont, dest_cont, linkType, val, key); return TRACE_SUCCESS; } trace_return_t OTFSetVar (varPrec time, const char* type, const char* cont, varPrec val) { int parent = getContainerFromName(cont); int varType = getVariableTypeFromName(type); /* Check wether the variable already exists */ Variable_t * p_counter = getVariablePtrFromCont(parent, varType); if(!p_counter) { /* the variable doesn't exist yet. Allocate and initialize it */ alloc_Variable(p_counter, (gtg_list_entry(variables.token.prev, Variable_t, token)->id) + 1, parent, varType, 0); gtg_list_add_tail(&(p_counter->token), &(variables.token)); CHECK_RESULT(OTF_Writer_writeDefCounter(writer, 0, p_counter->id, type, 0, varType, NULL)); } /* Update the value of the variable */ p_counter->value = val; if( p_counter->value < 0) { fprintf(stderr, "A counter value can not be negative!\n"); return TRACE_ERR_WRITE; } CHECK_RESULT(OTF_Writer_writeCounter (writer, time*TIMER_RES, parent, varType, p_counter->value)); if(verbose) printf("setVar : %s %s %f\n", type, cont, val); return TRACE_SUCCESS; } trace_return_t OTFAddVar (varPrec time, const char* type, const char* cont, varPrec val) { int parent = getContainerFromName(cont); int varType = getVariableTypeFromName(type); /* Check wether the variable already exists */ Variable_t * p_counter = getVariablePtrFromCont(parent, varType); if(!p_counter) { /* the variable doesn't exist yet. Allocate and initialize it */ alloc_Variable(p_counter, (gtg_list_entry(variables.token.prev, Variable_t, token)->id) + 1, parent, varType, 0 /* Let's assume that the initial value is 0 */); gtg_list_add_tail(&(p_counter->token), &(variables.token)); CHECK_RESULT(OTF_Writer_writeDefCounter(writer, 0, p_counter->id, type, 0, varType, NULL)); } /* update the variable value */ p_counter->value += val; if(p_counter->value < 0) { fprintf(stderr, "A counter value can not be negative!\n"); return TRACE_ERR_WRITE; } CHECK_RESULT(OTF_Writer_writeCounter (writer, time*TIMER_RES, parent, varType, p_counter->value)); if(verbose) printf("addVar : %s %s %f\n", type, cont, val); return TRACE_SUCCESS; } trace_return_t OTFSubVar (varPrec time, const char* type, const char* cont, varPrec val) { return OTFAddVar(time, type, cont, - (val) ); } trace_return_t OTFAddComment (const char* comment){ /* Not implemented yet */ return TRACE_ERR_WRITE; } trace_return_t OTFEndTrace () { Container_t *ptr, *tmp; State_t *ptr2, *tmp2; /* free all the allocated structures */ free_struct(ContainerType_t, ctType); free_struct(StateType_t, stateTypes); free_struct(VariableType_t, variableTypes); free_struct(EventType_t, eventTypes); free_struct(LinkType_t, linkTypes); free_struct(EntityValue_t, states); /* special case for the list of containers since each one contains a state stack */ gtg_list_for_each_entry_safe(ptr, tmp, &(conts).token, token) { gtg_list_del(&(ptr->token)); /* Free the State stack */ gtg_list_for_each_entry_safe(ptr2, tmp2, &(ptr->state_stack).token, token) { gtg_list_del(&(ptr2->token)); free(ptr2); } free(ptr->name); free(ptr->alias); free(ptr); } /* Close the output trace */ if(!OTF_Writer_close(writer)) { fprintf (stderr, "unable to close the file writer"); return TRACE_ERR_CLOSE; } writer = NULL; OTF_FileManager_close(manager); manager = NULL; if (filename) free (filename); filename = NULL; free(otf_color_null.colorID); return TRACE_SUCCESS; } #endif /* BUILD_OTF */ eztrace-1.1-7/extlib/gtg/src/C/PaxHeaders.7332/gtg_compress_core.c0000644000000000000000000000013212544237152021525 xustar0030 mtime=1435582058.547899952 30 atime=1508138875.427906732 30 ctime=1508162367.225862947 eztrace-1.1-7/extlib/gtg/src/C/gtg_compress_core.c0000644000175000017500000001656512544237152022731 0ustar00trahaytrahay00000000000000 #include #include #include #include #include #include #include #include "GTGCompress.h" #define BUF_SIZE_MAX (1024*1024*32) /* block size used */ #define BLOCK_SIZE (128*1024) int gtg_compress_init(z_stream *z, int compression_ratio) { static int first_init = 1; int status = Z_OK; if(first_init) { int level = compression_ratio; z->zalloc = NULL; z->zfree = NULL; z->opaque = NULL; z->avail_in = 0; z->next_in = Z_NULL; status = deflateInit(z, level); if (status != Z_OK) { fprintf(stderr, "error at init: %d\n", status); } first_init=0; } return status; } int gtg_compress_m2m(z_stream *z, void* in_buf, uint32_t len, void* out_buf, uint32_t out_max_len) { int status; int offset_out = 0; /* offset in the dest buffer */ z->avail_out = out_max_len; z->avail_in = len; z->next_out = out_buf; z->next_in = in_buf; /* compress */ status = deflate( z, Z_SYNC_FLUSH ); if ( Z_OK != status ) { fprintf( stderr, "error %d in compressing\n", status); return -1; } /* compute output len */ offset_out = out_max_len - z->avail_out; return offset_out; } int gtg_compress_m2f(z_stream *z, void* in_buf, uint32_t len, FILE* file_out) { int status; int offset_in = 0; int offset_out = 0; int total_written = 0; int cur_input_size = 0; uint8_t out_buf[BLOCK_SIZE]; int written = 0; /* compress each block of data */ while(offset_in < len) { z->next_out = out_buf; z->avail_out = BLOCK_SIZE; /* compute input buffer address */ if(offset_in + BLOCK_SIZE > len) z->avail_in = len - offset_in; else z->avail_in = BLOCK_SIZE; cur_input_size = z->avail_in; z->next_in = &((uint8_t*)in_buf)[offset_in]; /* compress */ status = deflate( z, Z_SYNC_FLUSH ); if ( Z_OK != status ) { fprintf( stderr, "error %d in compressing\n", status); return -1; } /* compute new offset */ offset_out = BLOCK_SIZE - z->avail_out; offset_in += cur_input_size; /* write to disk */ written = fwrite(out_buf, sizeof(uint8_t), offset_out, file_out); if(written < offset_out) { fprintf(stderr, "warning: %d bytes out of %d were written to disk\n", written, offset_out); } total_written += written; } return total_written; } int gtg_compress_f2m(z_stream *z, FILE* file_in, void* out_buf, uint32_t out_max_len) { int status; int offset = 0; /* offset in the dest buffer */ uint8_t in_buf[BLOCK_SIZE]; int in_len = 0; while(!feof(file_in)) { /* read a block of data */ in_len = fread(in_buf, sizeof(uint8_t), BLOCK_SIZE, file_in); z->avail_in = in_len; z->next_in = in_buf; z->avail_out = out_max_len - offset; z->next_out = &((uint8_t*)out_buf)[offset]; /* compress the block */ status = deflate( z, Z_SYNC_FLUSH ); if ( Z_OK != status ) { fprintf( stderr, "error %d in compressing\n", status); return -1; } /* compute output len */ offset = out_max_len - z->avail_out; } return offset; } int gtg_compress_f2f(z_stream *z, FILE* file_in, FILE* file_out) { int status; int offset = 0; /* offset in the dest buffer */ uint8_t in_buf[BLOCK_SIZE]; uint8_t out_buf[BLOCK_SIZE]; int in_len = 0; int total_written = 0; int written = 0; while(!feof(file_in)) { /* read a block of data */ in_len = fread(in_buf, sizeof(uint8_t), BLOCK_SIZE, file_in); z->avail_in = in_len; z->next_in = in_buf; z->avail_out = BLOCK_SIZE; z->next_out = out_buf; /* compress the block */ status = deflate( z, Z_SYNC_FLUSH ); if ( Z_OK != status ) { fprintf( stderr, "error %d in compressing\n", status); return -1; } /* compute output len */ offset = BLOCK_SIZE - z->avail_out; /* write the output block to disk */ written = fwrite(out_buf, sizeof(uint8_t), offset, file_out); if(written < offset) { fprintf(stderr, "warning: %d bytes out of %d were written to disk\n", written, offset); } total_written += written; } return total_written; } /* decompression routines */ int gtg_decompress_init(z_stream *z) { int status; z->zalloc = NULL; z->zfree = NULL; z->opaque = NULL; z->avail_in = 0; z->next_in = Z_NULL; status = inflateInit(z); if (status != Z_OK) { fprintf(stderr, "error at init: %d\n", status); } return status; } int gtg_decompress_m2m(z_stream *z, void* in_buf, uint32_t len, void* out_buf, uint32_t out_max_len) { int status; z->next_in= in_buf; z->avail_in = len; z->next_out = out_buf; z->avail_out = out_max_len; /* decompress */ status = inflate( z, Z_SYNC_FLUSH ); if ( Z_OK != status ) { fprintf( stderr, "error %d in compressing\n", status); return -1; } return out_max_len - z->avail_out; } int gtg_decompress_m2f(z_stream *z, void* in_buf, uint32_t len, FILE* file_out) { int status; uint8_t out_buf[BLOCK_SIZE]; int offset_out = 0; int offset_in = 0; int total_written = 0; int written = 0; /* decompress one block at a time */ while(offset_in < len) { z->next_in= &((uint8_t*)in_buf)[offset_in]; z->avail_in = len - offset_in; z->next_out = out_buf; z->avail_out = BLOCK_SIZE; /* decompress */ status = inflate( z, Z_SYNC_FLUSH ); if ( Z_OK != status ) { fprintf( stderr, "error %d in compressing\n", status); return -1; } /* compute new offsets */ offset_out = BLOCK_SIZE - z->avail_out; offset_in = len - z->avail_in; written = fwrite(out_buf, 1, offset_out, file_out); if(written < offset_out){ fprintf(stderr, "warning: %d bytes out of %d written\n", written, offset_out); return -1; } total_written += written; } return total_written; } int gtg_decompress_f2m(z_stream *z, FILE* file_in, void* out_buf, uint32_t out_max_len) { int status; uint8_t in_buf[BLOCK_SIZE]; uint32_t in_len = 0; int offset_out = 0; while(! feof(file_in)) { in_len = fread(in_buf, BLOCK_SIZE, sizeof(uint8_t), file_in); z->avail_in = in_len; z->next_in = in_buf; z->avail_out = out_max_len - offset_out; z->next_out = &((uint8_t*)out_buf)[offset_out]; /* decompress */ status = inflate( z, Z_SYNC_FLUSH ); if ( Z_OK != status ) { fprintf( stderr, "error %d in compressing\n", status); return -1; } /* compute output len */ offset_out = out_max_len - z->avail_out; } return offset_out; } int gtg_decompress_f2f(z_stream *z, FILE* file_in, FILE* file_out) { int status; int offset = 0; /* offset in the dest buffer */ uint8_t in_buf[BLOCK_SIZE]; uint8_t out_buf[BLOCK_SIZE]; int in_len = 0; int total_written = 0; int written = 0; while(!feof(file_in)) { in_len = fread(in_buf, sizeof(uint8_t), BLOCK_SIZE, file_in); z->avail_in = in_len; z->next_in = in_buf; z->avail_out = BLOCK_SIZE; z->next_out = out_buf; /* decompress */ status = inflate( z, Z_SYNC_FLUSH ); if ( Z_OK != status ) { fprintf( stderr, "error %d in compressing\n", status); return -1; } /* compute output len */ offset = BLOCK_SIZE - z->avail_out; written = fwrite(out_buf, sizeof(uint8_t), offset, file_out); if(written < offset) { fprintf(stderr, "warning: %d bytes out of %d were written to disk\n", written, offset); } total_written += written; } return total_written; } eztrace-1.1-7/extlib/gtg/src/C/PaxHeaders.7332/gtg_decompress.c0000644000000000000000000000013212544237152021026 xustar0030 mtime=1435582058.547899952 30 atime=1508138874.511883855 30 ctime=1508162367.225862947 eztrace-1.1-7/extlib/gtg/src/C/gtg_decompress.c0000644000175000017500000000237512544237152022224 0ustar00trahaytrahay00000000000000 #include #include #include #include #include "GTGCompress.h" char* input_filename; char* output_filename; static void usage (int argc __attribute__((unused)), char **argv) { fprintf (stderr, "Usage : %s -i input_filename [-o output_filename] \n", argv[0]); } static void parse_args (int argc, char **argv) { int i; input_filename = NULL; for (i = 1; i < argc; i++) { if (strcmp (argv[i], "-o") == 0) { output_filename = argv[++i]; } else if (strcmp (argv[i], "-i") == 0) { if(input_filename) { usage (argc, argv); exit (-1); } input_filename = argv[++i]; } else { if(input_filename) { usage (argc, argv); exit (-1); } input_filename = argv[i]; } } } int main(int argc, char**argv) { parse_args(argc, argv); if(!input_filename) { fprintf(stderr, "please provide an input file\n"); exit(-1); } if(!output_filename) { asprintf(&output_filename, "%s.unzipped", input_filename); } printf("decompressing file %s into file %s\n", input_filename, output_filename); FILE *fin=fopen(input_filename, "r"); FILE *fout=fopen(output_filename, "w"); z_stream z; gtg_decompress_init(&z); gtg_decompress_f2f(&z, fin, fout); return 0; } eztrace-1.1-7/extlib/gtg/src/C/PaxHeaders.7332/paje_GTGBasic1_c.c0000644000000000000000000000013213127366131020764 xustar0030 mtime=1499327577.390774396 30 atime=1508138875.407906233 30 ctime=1508162367.221862598 eztrace-1.1-7/extlib/gtg/src/C/paje_GTGBasic1_c.c0000644000175000017500000005366613127366131022173 0ustar00trahaytrahay00000000000000#ifdef BUILD_PAJE #define _GNU_SOURCE #include #include #include #include #ifdef USE_MPI #include #endif #ifndef HAVE_ASPRINTF extern int asprintf(char **ret, const char *format, ...); /* extern int vasprintf(char **ret, const char *format, va_list args); */ #endif /* HAVE_ASPRINTF */ #include "GTG.h" #include "GTGPaje_Basic.h" #include "GTGPaje.h" #if HAVE_LIBZ #include "GTGCompress.h" #endif extern int _is_paje_header_written; void pajeInitHeaderData( int fmt ); void pajeWriteHeader( FILE *file ); /* set in GTGBasic1_c.c * verbose !=0 means debugging mode */ extern int verbose; /* File where each proc writes state/event/var/link changes. */ static FILE* procFile; /* File where each proc writes the header and the definitions of the data. */ static FILE* headFile; /* Root name */ static char* filename; /* mpi rank */ static int rank; /* Name built for getName */ static char* nameTmp; /* Flags that should be used. */ static gtg_flag_t paje_flags; /* Max length of the names built */ #define BUFFSIZE 200 /* in non-buffered mode, flush a file */ #define FLUSH(file) \ if(paje_flags & GTG_FLAG_NOTBUF) \ fflush(file) #define PRINT_PAJE_HEADER() \ if ( !_is_paje_header_written ) { \ pajeWriteHeader( headFile ); \ FLUSH( headFile ); \ } /* Structure containing the info of a current line */ typedef struct line_t{ FILE* file; /* File */ char* value; /* The value of the line */ size_t size; /* Size of the value buffer */ varPrec time; /* Time (second element of the line) */ int status; /* If EOF reached */ }line_t; typedef struct doubleLinkList_t{ struct doubleLinkList_t* prev; /* Previous element */ struct doubleLinkList_t* next; /* Next element */ line_t current; /* Current line */ }doubleLinkList_t; #if HAVE_LIBZ static z_stream z; static int compression_ratio = 0; /* compress data and write to disk */ void paje_print(FILE* file, const char*format, ...) { int len = 0; int ret = 0; va_list args; char* tmp_buf = NULL; va_start(args, format); if(compression_ratio) { len = vasprintf(&tmp_buf, format, args); va_end(args); ret = gtg_compress_m2f(&z, tmp_buf, len, file); if (ret < 0) { fprintf(stderr, "gtg: an error occured while compressing\n"); } } else { /* don't compress, write directly to disk */ vfprintf(file, format, args); va_end(args); } } trace_return_t pajeSetCompress(int val) { compression_ratio = val; if(val) gtg_compress_init(&z, compression_ratio); return TRACE_SUCCESS; } #else /* HAVE_LIBZ */ #define paje_print fprintf trace_return_t pajeSetCompress(int val) { return TRACE_ERR_WRITE; } #endif /* Insert a doubleLinkList_t item in the sorted doubleLinkedList starting with first */ void insert (doubleLinkList_t** first, doubleLinkList_t* item){ varPrec time; doubleLinkList_t* iter = *first; if (!first || !item){ fprintf (stderr, "Invalid insert parameter. Leaving\n"); exit(-1); } time = item->current.time; /* If nil list, item is the first and leaving */ if (iter==NULL){ *first=item; item->prev = NULL; item->next = NULL; /* printf (stderr, "Nil list\n"); */ return; } /* If to insert in first pos */ if (time<=iter->current.time){ item->prev = NULL; item->next = *first; if (item->next) (item->next)->prev = item; *first = item; return; } /* Positionning iterator to insert in a sorted list */ while (time>iter->current.time && iter->next) iter = iter->next; if (time<=iter->current.time){ item->prev = iter->prev; item->next = iter; iter->prev = item; if (item->prev) (item->prev)->next = item; } else{ iter->next = item; item->prev = iter; item->next=NULL; } } void initMerge (char* file, int rk, doubleLinkList_t* li){ char f[BUFFSIZE]; sprintf (f, "%s_proc%d.ept", file, rk); li->current.file = fopen (f, "a+"); if (!li->current.file){ fprintf (stderr, "Failed to open generated trace. Leaving\n"); exit (-1); } rewind (li->current.file); li->current.value = NULL; li->current.status = 1; } #ifndef HAVE_GETLINE ssize_t getline(char** buf, size_t* size, FILE* stream) { char *ret; int alloc_size = 1024; int nb_char = 0; if(!(*buf)) { /* we need to allocate the buffer */ alloc_size = 1024; *buf = malloc(sizeof(char) * alloc_size); } else { alloc_size = *size; } *buf[0]=0; do { if(nb_char + 512 >= alloc_size) { /* the next fgets may overflow the buffer, so let's allocate more space */ alloc_size *= 2; *buf = realloc(*buf, alloc_size); *size = alloc_size; } /* read at most 512 bytes */ ret = fgets((*buf)+nb_char, 512, stream); if(!ret){ /* error while reading or EOF */ *size = 1; (*buf)[0] = EOF; return -1; } nb_char = strlen(*buf); } while((*buf)[nb_char -1] !='\n'); return nb_char; } #endif /* HAVE_GETLINE */ void myGetLine (doubleLinkList_t* li){ int toto; int ret; if (li->current.value) free (li->current.value); li->current.value = NULL; ret = getline (&(li->current.value), &(li->current.size), li->current.file); if (li->current.size==0 || ret ==-1){ li->current.status=0; } if ((li->current.size)>0) sscanf (li->current.value, "%d %lf", &toto, &(li->current.time)); else fprintf (stderr, "failed to read\n"); } /* need to run 'rm -f' force because there is no file some time*/ void clean_files (char* fileName, int nbFile){ int ret; char cmd[BUFFSIZE]; sprintf (cmd, "rm -f %s_root.ept %s_proc*.ept", filename,filename); ret = system(cmd); if (ret == -1) { perror("cleanfiles"); } } void merge (char* filename, int nbFile){ doubleLinkList_t* first = NULL; doubleLinkList_t* list; doubleLinkList_t* iter; FILE * res; FILE * oldF; char * buf = NULL; char tmp[BUFFSIZE]; char tmp2[BUFFSIZE]; size_t size; int i; /* Getting the first part of the trace (header+def) */ #if HAVE_LIBZ if(compression_ratio) sprintf (tmp, "%s.trace.z", filename); else #endif sprintf (tmp, "%s.trace", filename); res = fopen (tmp, "w+"); sprintf (tmp2, "%s_root.ept", filename); oldF = fopen (tmp2,"a+"); if (res==NULL || oldF==NULL){ fprintf (stderr, "Failed to create the trace file. Leaving\n"); exit (-1); } rewind (oldF); do{ i = getline (&buf, &size, oldF); if (size==0 || i==-1) break; paje_print (res, "%s", buf); }while (buf[0] != EOF); fclose (oldF); /* Initialising the parallel merge */ list = (doubleLinkList_t *)malloc (sizeof (doubleLinkList_t)*nbFile); for (i=0;icurrent.status != 0){ paje_print (res, "%s", first->current.value); myGetLine (first); if (first->current.status==0){ first=first->next; if (first) first->prev = NULL; } else{ iter = first; first = first->next; if (first) first->prev = NULL; if (first && iter->current.status != 0) insert (&first, iter); } /* for (i=0;i\n\n"); */ } fclose (res); clean_files (filename, nbFile); } paje_color_t Paje_get_color(gtg_color_t p_color) { /** \todo it is not const*/ int ret; paje_color_t res = NULL; ret = asprintf(&res, "%1.1f %1.1f %1.1f", (float)GTG_COLOR_GET_RED( p_color->rgb)/256, (float)GTG_COLOR_GET_GREEN(p_color->rgb)/256, (float)GTG_COLOR_GET_BLUE( p_color->rgb)/256); (void)ret; return res; } char* pajeGetName (int procNb){ if (nameTmp) free (nameTmp); nameTmp = (char *)malloc (sizeof (char)*BUFFSIZE); if (filename){ sprintf (nameTmp, "%s_proc%d.ept", filename, procNb); if(verbose) fprintf (stderr, "Name built : %s \n", nameTmp); return nameTmp; } return "0"; } trace_return_t my_open (int rk){ trace_return_t ret = TRACE_ERR_OPEN; char f[BUFFSIZE]; if (!procFile){ if(!(paje_flags & GTG_FLAG_USE_MPI)) { procFile = headFile; } else { sprintf (f, "%s_proc%d.ept", filename, rk); procFile = fopen (f, "w"); } if (!procFile) return ret; ret = TRACE_SUCCESS; } return ret; } trace_return_t my_close (){ trace_return_t ret = TRACE_ERR_CLOSE; if (procFile){ ret = (trace_return_t) fclose (procFile); procFile = NULL; } return ret; } trace_return_t pajeInitTrace (const char* filenam, int rk, gtg_flag_t flags, int fmt) { char file[BUFFSIZE]; trace_return_t ret = TRACE_ERR_OPEN; my_close (); rank = rk; /* fixme: why there is need to copy filenam ????*/ filename = (char *)malloc (sizeof (char)* (strlen (filenam)+1)); strcpy (filename, filenam); procFile = NULL; paje_flags = flags; if( rank==0 || ! (flags & GTG_FLAG_USE_MPI)) { sprintf (file, "%s_root.ept", filename); headFile = fopen (file, "w"); if (!headFile){ fprintf (stderr, "Failed to open file %s. \n Leaving\n", file); return ret; } pajeInitHeaderData( fmt ); FLUSH(headFile); } return my_open(rank); } trace_return_t pajeAddContType(const char* alias, const char* contType, const char* name) { PRINT_PAJE_HEADER(); if(verbose) printf("addCtType : name %s, alias %s, contType %s\n", name, alias, contType); if (headFile){ fprintf (headFile, "%d \"%s\" \"%s\" \"%s\"\n", paje_eventdefs[GTG_PAJE_EVTDEF_DefineContainerType].id, name, contType ? contType : "0", alias); FLUSH(headFile); return TRACE_SUCCESS; } return TRACE_ERR_WRITE; } trace_return_t pajeAddStateType (const char* alias, const char* contType, const char* name){ PRINT_PAJE_HEADER(); if(verbose) printf("addStateType : alias %s, name %s, contType %s\n", alias, name, contType); if (headFile){ fprintf (headFile, "%d \"%s\" \"%s\" \"%s\"\n", paje_eventdefs[GTG_PAJE_EVTDEF_DefineStateType].id, name, contType, alias); FLUSH(headFile); return TRACE_SUCCESS; } return TRACE_ERR_WRITE; } trace_return_t pajeAddEventType (const char* alias, const char* contType, const char* name){ PRINT_PAJE_HEADER(); if(verbose) printf("addEventType : alias %s, name %s, contType %s\n", alias, name, contType); if (headFile){ fprintf (headFile, "%d \"%s\" \"%s\" \"%s\"\n", paje_eventdefs[GTG_PAJE_EVTDEF_DefineEventType].id, name, contType, alias); FLUSH(headFile); return TRACE_SUCCESS; } return TRACE_ERR_WRITE; } trace_return_t pajeAddVarType (const char* alias , const char* contType, const char* name){ PRINT_PAJE_HEADER(); if(verbose) printf("addVarType : alias %s, name %s, contType %s\n", alias, name, contType); if (headFile){ fprintf (headFile, "%d \"%s\" \"%s\" \"0 0 0\" \"%s\"\n", paje_eventdefs[GTG_PAJE_EVTDEF_DefineVariableType].id, name, contType, alias); FLUSH(headFile); return TRACE_SUCCESS; } return TRACE_ERR_WRITE; } trace_return_t pajeAddLinkType (const char* alias , const char* name, const char* contType, const char* srcContType, const char* destContType){ PRINT_PAJE_HEADER(); if (verbose) printf ("Add link type: alias: %s name: %s contType: %s src: %s des: %s\n", alias, name, contType, srcContType, destContType); if (headFile){ fprintf (headFile, "%d \"%s\" \"%s\" \"%s\" \"%s\" \"%s\"\n", paje_eventdefs[GTG_PAJE_EVTDEF_DefineLinkType].id, name, contType, srcContType, destContType, alias); FLUSH(headFile); return TRACE_SUCCESS; } return TRACE_ERR_WRITE; } trace_return_t pajeAddEntityValue (const char* alias, const char* entType, const char* name , const char* color){ PRINT_PAJE_HEADER(); if(verbose) printf("addEntityValue : color %s, alias %s, name %s, type %s\n", color, alias, name, entType); if (headFile){ fprintf (headFile, "%d \"%s\" \"%s\" \"%s\" \"%s\"\n", paje_eventdefs[GTG_PAJE_EVTDEF_DefineEntityValue].id, entType, name, color, alias); FLUSH(headFile); return TRACE_SUCCESS; } return TRACE_ERR_WRITE; } trace_return_t pajeAddContainer(varPrec time, const char* alias, const char* type, const char* container, const char* name, const char* file){ PRINT_PAJE_HEADER(); if (headFile){ if(container && strcmp(container, "(null)")!=0 ) fprintf (headFile, "%d %.13e \"%s\" \"%s\" \"%s\" \"%s\" \"%s\"\n", paje_eventdefs[GTG_PAJE_EVTDEF_CreateContainer].id, time, name, type, container, alias, file); else fprintf (headFile, "%d %.13e \"%s\" \"%s\" 0 \"%s\" \"%s\"\n", paje_eventdefs[GTG_PAJE_EVTDEF_CreateContainer].id, time, name, type, alias, file); FLUSH(headFile); return TRACE_SUCCESS; } return TRACE_ERR_WRITE; } trace_return_t pajeSeqAddContainer (varPrec time, const char* alias , const char* type, const char* container, const char* name){ PRINT_PAJE_HEADER(); if (headFile){ if(container && strcmp(container, "(null)")!=0 ) fprintf (headFile, "%d %.13e \"%s\" \"%s\" \"%s\" \"%s\"\n", paje_eventdefs[GTG_PAJE_EVTDEF_CreateContainer].id, time, name, type, container, alias); else fprintf (headFile, "%d %.13e \"%s\" \"%s\" 0 \"%s\"\n", paje_eventdefs[GTG_PAJE_EVTDEF_CreateContainer].id, time, name, type, alias); FLUSH(headFile); return TRACE_SUCCESS; } return TRACE_ERR_WRITE; } trace_return_t pajeDestroyContainer (varPrec time, const char* name, const char* type){ PRINT_PAJE_HEADER(); if (headFile){ fprintf (headFile, "%d %.13e \"%s\" \"%s\"\n", paje_eventdefs[GTG_PAJE_EVTDEF_DestroyContainer].id, time, name, type); FLUSH(headFile); return TRACE_SUCCESS; } return TRACE_ERR_WRITE; } trace_return_t pajeSetState (varPrec time, const char* type, const char* cont, const char* val){ if(verbose) printf("SetState : type %s, container %s, val %s\n", type, cont, val); if (procFile){ fprintf (procFile, "%d %.13e \"%s\" \"%s\" \"%s\"\n", paje_eventdefs[GTG_PAJE_EVTDEF_SetState].id, time, type, cont, val); FLUSH(procFile); return TRACE_SUCCESS; } return TRACE_ERR_WRITE; } trace_return_t pajePushState (varPrec time, const char* type, const char* cont, const char* val){ if(verbose) printf("PushState : type %s, container %s, val %s\n", type, cont, val); if (procFile){ fprintf (procFile, "%d %.13e \"%s\" \"%s\" \"%s\"\n", paje_eventdefs[GTG_PAJE_EVTDEF_PushState].id, time, type, cont, val); FLUSH(procFile); return TRACE_SUCCESS; } return TRACE_ERR_WRITE; } trace_return_t pajePushStateExtra (varPrec time, const char* type, const char* cont, const char* val, const char* extra){ if(verbose) printf("PushStateExtra : type %s, container %s, val %s, extra %s\n", type, cont, val, extra); if (procFile){ fprintf (procFile, "%d %.13e \"%s\" \"%s\" \"%s\" \"%s\"\n", paje_eventdefs[GTG_PAJE_EVTDEF_PushStateExtra].id, time, type, cont, val, extra); FLUSH(procFile); return TRACE_SUCCESS; } return TRACE_ERR_WRITE; } trace_return_t pajePopState (varPrec time, const char* type, const char* cont){ if(verbose) printf("PopState : type %s, container %s\n", type, cont); if (procFile){ fprintf (procFile, "%d %.13e \"%s\" \"%s\"\n", paje_eventdefs[GTG_PAJE_EVTDEF_PopState].id, time, type, cont); FLUSH(procFile); return TRACE_SUCCESS; } return TRACE_ERR_WRITE; } trace_return_t pajeAddEvent (varPrec time, const char* type, const char* cont, const char* val){ if(verbose) printf("AddEvent : type %s, cont %s, val %s\n", type, cont, val); if (procFile){ fprintf (procFile, "%d %.13e \"%s\" \"%s\" \"%s\"\n", paje_eventdefs[GTG_PAJE_EVTDEF_NewEvent].id, time, type, cont, val); FLUSH(procFile); return TRACE_SUCCESS; } return TRACE_ERR_WRITE; } trace_return_t pajeStartLink (varPrec time, const char* type, const char* cont, const char* src, const char* val , const char* key){ if (verbose) printf ("Start link: type: %s container: %s src: %s val: %s key %s\n", type, cont, src, val, key); if (procFile){ fprintf (procFile, "%d %.13e \"%s\" \"%s\" \"%s\" \"%s\" \"%s\"\n", paje_eventdefs[GTG_PAJE_EVTDEF_StartLink].id, time, type, cont, src, val, key); FLUSH(procFile); return TRACE_SUCCESS; } return TRACE_ERR_WRITE; } trace_return_t pajeEndLink (varPrec time, const char* type, const char* cont, const char* dest, const char* val , const char* key){ if (verbose) printf ("End link type: %s container: %s src: %s val: %s key %s\n", type, cont, dest, val, key); if (procFile){ fprintf (procFile, "%d %.13e \"%s\" \"%s\" \"%s\" \"%s\" \"%s\"\n", paje_eventdefs[GTG_PAJE_EVTDEF_EndLink].id, time, type, cont, dest, val, key); FLUSH(procFile); return TRACE_SUCCESS; } return TRACE_ERR_WRITE; } trace_return_t pajeSetVar (varPrec time, const char* type, const char* cont, varPrec val){ if (verbose) printf ("SetVar: type: %s container: %s value: %e\n", type, cont, val); if (procFile){ fprintf (procFile, "%d %.13e \"%s\" \"%s\" %e\n", paje_eventdefs[GTG_PAJE_EVTDEF_SetVariable].id, time, type, cont, val); FLUSH(procFile); return TRACE_SUCCESS; } return TRACE_ERR_WRITE; } trace_return_t pajeAddVar (varPrec time, const char* type, const char* cont, varPrec val){ if (verbose) printf ("AddVar: type: %s container: %s value: %e\n", type, cont, val); if (procFile){ fprintf (procFile, "%d %.13e \"%s\" \"%s\" %e\n", paje_eventdefs[GTG_PAJE_EVTDEF_AddVariable].id, time, type, cont, val); FLUSH(procFile); return TRACE_SUCCESS; } return TRACE_ERR_WRITE; } trace_return_t pajeSubVar (varPrec time, const char* type, const char* cont, varPrec val){ if (verbose) printf ("SubVar: type: %s container: %s value: %e\n", type, cont, val); if (procFile){ fprintf (procFile, "%d %.13e \"%s\" \"%s\" %e\n", paje_eventdefs[GTG_PAJE_EVTDEF_SubVariable].id, time, type, cont, val); FLUSH(procFile); return TRACE_SUCCESS; } return TRACE_ERR_WRITE; } trace_return_t pajeAddComment (const char* comment){ if (verbose) printf ("AddComment: %s\n",comment); if (procFile){ fprintf(procFile,"#%s\r\n",comment); FLUSH(procFile); return TRACE_SUCCESS; } return TRACE_ERR_WRITE; } trace_return_t pajeEndTrace (){ int size = 1; my_close (); /* Wait for all proc to finish writing their trace */ #ifdef USE_MPI if(paje_flags & GTG_FLAG_USE_MPI) { MPI_Barrier (MPI_COMM_WORLD); MPI_Comm_size (MPI_COMM_WORLD, &size); if(verbose) fprintf (stderr, "USING MPI\n"); } if (rank==0) #endif /* USE_MPI */ merge (filename, size); if (nameTmp) free (nameTmp); nameTmp = NULL; if (filename) free (filename); filename = NULL; return TRACE_SUCCESS; } trace_return_t viteEndTrace (){ my_close (); if (filename) free (filename); if (nameTmp) free (nameTmp); filename = NULL; nameTmp = NULL; return TRACE_SUCCESS; } /* * Hack that will be removed */ FILE *pajeGetProcFile() { return procFile; } #endif eztrace-1.1-7/extlib/gtg/src/C/PaxHeaders.7332/interfaceCFortranBasic1.c0000644000000000000000000000013212544237152022443 xustar0030 mtime=1435582058.547899952 30 atime=1508138875.439907032 30 ctime=1508162367.221862598 eztrace-1.1-7/extlib/gtg/src/C/interfaceCFortranBasic1.c0000644000175000017500000003131212544237152023632 0ustar00trahaytrahay00000000000000#include #include #include "GTG.h" void setTraceType_i (int *type) { setTraceType ((traceType_t) * type); } int getTraceType_i () { return getTraceType (); } int bufferedModeActivated_i() { return bufferedModeActivated_i(); } void initTrace_i (char *f, int *len, int *rank, gtg_flag_t* flags, int *err) { char *filename = (char *) malloc (sizeof (char) * (*len + 1)); memcpy (filename, f, *len); filename[*len] = '\0'; *err = initTrace (filename, *rank, *flags); } void addContType_i (char *alias, int *s1, char *contType, int *s2, char *name, int *s3, int *err) { char *a = (char *) malloc (sizeof (char) * (*s1 + 1)); char *c = (char *) malloc (sizeof (char) * (*s2 + 1)); char *n = (char *) malloc (sizeof (char) * (*s3 + 1)); memcpy (a, alias, *s1); a[*s1] = '\0'; memcpy (c, contType, *s2); c[*s2] = '\0'; memcpy (n, name, *s3); n[*s3] = '\0'; *err = addContType (a, c, n); } void addStateType_i (char *alias, int *s1, char *contType, int *s2, char *name, int *s3, int *err) { char *a = (char *) malloc (sizeof (char) * (*s1 + 1)); char *c = (char *) malloc (sizeof (char) * (*s2 + 1)); char *n = (char *) malloc (sizeof (char) * (*s3 + 1)); memcpy (a, alias, *s1); a[*s1] = '\0'; memcpy (c, contType, *s2); c[*s2] = '\0'; memcpy (n, name, *s3); n[*s3] = '\0'; *err = addStateType (a, c, n); } void addEventType_i (char *alias, int *s1, char *contType, int *s2, char *name, int *s3, int *err) { char *a = (char *) malloc (sizeof (char) * (*s1 + 1)); char *n = (char *) malloc (sizeof (char) * (*s3 + 1)); char *c = (char *) malloc (sizeof (char) * (*s2 + 1)); memcpy (a, alias, *s1); a[*s1] = '\0'; memcpy (c, contType, *s2); c[*s2] = '\0'; memcpy (n, name, *s3); n[*s3] = '\0'; *err = addEventType (a, c, n); } void addLinkType_i (char *alias, int *s1, char *name, int *s3, char *contType, int *s2, char *src, int *s4, char *dest, int *s5, int *err) { char *a = (char *) malloc (sizeof (char) * (*s1 + 1)); char *d = (char *) malloc (sizeof (char) * (*s5 + 1)); char *c = (char *) malloc (sizeof (char) * (*s2 + 1)); char *n = (char *) malloc (sizeof (char) * (*s3 + 1)); char *s = (char *) malloc (sizeof (char) * (*s4 + 1)); memcpy (a, alias, *s1); a[*s1] = '\0'; memcpy (c, contType, *s2); c[*s2] = '\0'; memcpy (n, name, *s3); n[*s3] = '\0'; memcpy (s, src, *s4); s[*s4] = '\0'; memcpy (d, dest, *s5); d[*s5] = '\0'; *err = addLinkType (a, n, c, s, d); } void addVarType_i (char *alias, int *s1, char *name, int *s3, char *contType, int *s2, int *err) { char *a = (char *) malloc (sizeof (char) * (*s1 + 1)); char *n = (char *) malloc (sizeof (char) * (*s3 + 1)); char *c = (char *) malloc (sizeof (char) * (*s2 + 1)); memcpy (a, alias, *s1); a[*s1] = '\0'; memcpy (c, contType, *s2); c[*s2] = '\0'; memcpy (n, name, *s3); n[*s3] = '\0'; *err = addVarType (a, c, n); } void addEntityValue_i (char *alias, int *s1, char *entType, int *s2, char *name, int *s3, gtg_color_t color, int *s4, int *err) { char *a = (char *) malloc (sizeof (char) * (*s1 + 1)); char *c = (char *) malloc (sizeof (char) * (*s2 + 1)); char *n = (char *) malloc (sizeof (char) * (*s3 + 1)); memcpy (a, alias, *s1); a[*s1] = '\0'; memcpy (c, entType, *s2); c[*s2] = '\0'; memcpy (n, name, *s3); n[*s3] = '\0'; *err = addEntityValue (a, c, n, color); } void addContainer_i (varPrec * time, char *alias, int *s1, char *type, int *s2, char *container, int *s3, char *name, int *s4, char *filename, int *s5, int *err) { char *a = (char *) malloc (sizeof (char) * (*s1 + 1)); char *t = (char *) malloc (sizeof (char) * (*s2 + 1)); char *c = (char *) malloc (sizeof (char) * (*s3 + 1)); char *n = (char *) malloc (sizeof (char) * (*s4 + 1)); char *f = (char *) malloc (sizeof (char) * (*s5 + 1)); memcpy (a, alias, *s1); a[*s1] = '\0'; memcpy (t, type, *s2); t[*s2] = '\0'; memcpy (c, container, *s3); c[*s3] = '\0'; memcpy (n, name, *s4); n[*s4] = '\0'; memcpy (f, filename, *s5); f[*s5] = '\0'; *err = addContainer (*time, a, t, c, n, f); } void destroyContainer_i (varPrec * time, char *name, int *s1, char *type, int *s2, int *err) { char *t = (char *) malloc (sizeof (char) * (*s2 + 1)); char *n = (char *) malloc (sizeof (char) * (*s1 + 1)); memcpy (t, type, *s2); t[*s2] = '\0'; memcpy (n, name, *s1); n[*s1] = '\0'; *err = destroyContainer (*time, n, t); } void setState_i (varPrec * time, char *type, int *s2, char *cont, int *s1, char *val, int *s3, int *err) { char *t = (char *) malloc (sizeof (char) * (*s2 + 1)); char *v = (char *) malloc (sizeof (char) * (*s3 + 1)); char *c = (char *) malloc (sizeof (char) * (*s1 + 1)); memcpy (t, type, *s2); t[*s2] = '\0'; memcpy (c, cont, *s1); c[*s1] = '\0'; memcpy (v, val, *s3); v[*s3] = '\0'; *err = setState (*time, t, c, v); } void pushState_i (varPrec * time, char *type, int *s2, char *cont, int *s1, char *val, int *s3, int *err) { char *t = (char *) malloc (sizeof (char) * (*s2 + 1)); char *c = (char *) malloc (sizeof (char) * (*s1 + 1)); char *v = (char *) malloc (sizeof (char) * (*s3 + 1)); memcpy (t, type, *s2); t[*s2] = '\0'; memcpy (c, cont, *s1); c[*s1] = '\0'; memcpy (v, val, *s3); v[*s3] = '\0'; *err = pushState (*time, t, c, v); } void popState_i (varPrec * time, char *type, int *s2, char *cont, int *s1, int *s3, int *err) { char *t = (char *) malloc (sizeof (char) * (*s2 + 1)); char *c = (char *) malloc (sizeof (char) * (*s1 + 1)); memcpy (t, type, *s2); t[*s2] = '\0'; memcpy (c, cont, *s1); c[*s1] = '\0'; *err = popState (*time, t, c); } void addEvent_i (varPrec * time, char *type, int *s2, char *cont, int *s1, char *val, int *s3, int *err) { char *t = (char *) malloc (sizeof (char) * (*s2 + 1)); char *v = (char *) malloc (sizeof (char) * (*s3 + 1)); char *c = (char *) malloc (sizeof (char) * (*s1 + 1)); memcpy (t, type, *s2); t[*s2] = '\0'; memcpy (c, cont, *s1); c[*s1] = '\0'; memcpy (v, val, *s3); v[*s3] = '\0'; *err = addEvent (*time, t, c, v); } void startLink_i (varPrec * time, char *type, int *s2, char *cont, int *s1, char *src, int *s3, char *dest, int *s4, char *val, int *s5, char *key, int *s6, int *err) { char *t = (char *) malloc (sizeof (char) * (*s2 + 1)); char *k = (char *) malloc (sizeof (char) * (*s6 + 1)); char *c = (char *) malloc (sizeof (char) * (*s1 + 1)); char *v = (char *) malloc (sizeof (char) * (*s5 + 1)); char *s = (char *) malloc (sizeof (char) * (*s3 + 1)); char *d = (char *) malloc (sizeof (char) * (*s4 + 1)); memcpy (t, type, *s2); t[*s2] = '\0'; memcpy (c, cont, *s1); c[*s1] = '\0'; memcpy (v, val, *s5); v[*s5] = '\0'; memcpy (s, src, *s3); s[*s3] = '\0'; memcpy (d, dest, *s4); d[*s4] = '\0'; memcpy (k, key, *s6); k[*s6] = '\0'; *err = startLink (*time, t, c, s, d, v, k); } void endLink_i (varPrec * time, char *type, int *s2, char *cont, int *s1, char *src, int *s3, char *dest, int *s4, char *val, int *s5, char *key, int *s6, int *err) { char *t = (char *) malloc (sizeof (char) * (*s2 + 1)); char *k = (char *) malloc (sizeof (char) * (*s6 + 1)); char *c = (char *) malloc (sizeof (char) * (*s1 + 1)); char *v = (char *) malloc (sizeof (char) * (*s5 + 1)); char *s = (char *) malloc (sizeof (char) * (*s3 + 1)); char *d = (char *) malloc (sizeof (char) * (*s4 + 1)); memcpy (t, type, *s2); t[*s2] = '\0'; memcpy (c, cont, *s1); c[*s1] = '\0'; memcpy (v, val, *s5); v[*s5] = '\0'; memcpy (s, src, *s3); s[*s3] = '\0'; memcpy (d, dest, *s4); d[*s4] = '\0'; memcpy (k, key, *s6); k[*s6] = '\0'; *err = endLink (*time, t, c, s, d, v, k); } void setVar_i (varPrec * time, char *type, int *s2, char *cont, int *s1, varPrec * val, int *err) { char *t = (char *) malloc (sizeof (char) * (*s2 + 1)); char *c = (char *) malloc (sizeof (char) * (*s1 + 1)); memcpy (t, type, *s2); t[*s2] = '\0'; memcpy (c, cont, *s1); c[*s1] = '\0'; *err = setVar (*time, t, c, *val); } void addVar_i (varPrec * time, char *type, int *s2, char *cont, int *s1, varPrec * val, int *err) { char *t = (char *) malloc (sizeof (char) * (*s2 + 1)); char *c = (char *) malloc (sizeof (char) * (*s1 + 1)); memcpy (t, type, *s2); t[*s2] = '\0'; memcpy (c, cont, *s1); c[*s1] = '\0'; *err = addVar (*time, t, c, *val); } void subVar_i (varPrec * time, char *type, int *s2, char *cont, int *s1, varPrec * val, int *err) { char *t = (char *) malloc (sizeof (char) * (*s2 + 1)); char *c = (char *) malloc (sizeof (char) * (*s1 + 1)); memcpy (t, type, *s2); t[*s2] = '\0'; memcpy (c, cont, *s1); c[*s1] = '\0'; *err = subVar (*time, t, c, *val); } void addComm_i (char *comm, int *s2, int *err) { char *t = (char *) malloc (sizeof (char) * (*s2 + 1)); memcpy (t, comm, *s2); t[*s2] = '\0'; *err = AddComment (t); } void endTrace_i (int *err) { *err = endTrace (); } /* manual aliasing of function, in order to avoid using GCC specific __attribute__ keyword */ void settracetype_i_ (int *type) { setTraceType_i (type); } int gettracetype_i_ () { return getTraceType_i (); } int bufferedmodeactivated_i_() { return bufferedModeActivated_i(); } void inittrace_i_ (char *f, int *len, int*rank, gtg_flag_t* flags, int *err) { initTrace_i (f, len, rank, flags, err); } void addconttype_i_ (char *alias, int *s1, char *contType, int *s2, char *name, int *s3, int *err) { addContType_i (alias, s1, contType, s2, name, s3, err); } void addstatetype_i_ (char *alias, int *s1, char *contType, int *s2, char *name, int *s3, int *err) { addStateType_i (alias, s1, contType, s2, name, s3, err); } void addeventtype_i_ (char *alias, int *s1, char *contType, int *s2, char *name, int *s3, int *err) { addEventType_i (alias, s1, contType, s2, name, s3, err); } void addlinktype_i_ (char *alias, int *s1, char *name, int *s3, char *contType, int *s2, char *src, int *s4, char *dest, int *s5, int *err) { addLinkType_i (alias, s1, name, s3, contType, s2, src, s4, dest, s5, err); } void addvartype_i_ (char *alias, int *s1, char *name, int *s3, char *contType, int *s2, int *err) { addVarType_i (alias, s1, name, s3, contType, s2, err); } void addentityvalue_i_ (char *alias, int *s1, char *entType, int *s2, char *name, int *s3, gtg_color_t color, int *s4, int *err) { addEntityValue_i (alias, s1, entType, s2, name, s3, color, s4, err); } void addcontainer_i_ (varPrec * time, char *alias, int *s1, char *type, int *s2, char *container, int *s3, char *name, int *s4, char *filename, int *s5, int *err) { addContainer_i (time, alias, s1, type, s2, container, s3, name, s4, filename, s5, err); } void destroycontainer_i_ (varPrec * time, char *name, int *s1, char *type, int *s2, int *err) { destroyContainer_i (time, name, s1, type, s2, err); } void setstate_i_ (varPrec * time, char *type, int *s2, char *cont, int *s1, char *val, int *s3, int *err) { setState_i (time, type, s2, cont, s1, val, s3, err); } void pushstate_i_ (varPrec * time, char *type, int *s2, char *cont, int *s1, char *val, int *s3, int *err) { pushState_i (time, type, s2, cont, s1, val, s3, err); } void popstate_i_ (varPrec * time, char *type, int *s2, char *cont, int *s1, int *s3, int *err) { popState_i (time, type, s2, cont, s1, s3, err); } void addevent_i_ (varPrec * time, char *type, int *s2, char *cont, int *s1, char *val, int *s3, int *err) { addEvent_i (time, type, s2, cont, s1, val, s3, err); } void startlink_i_ (varPrec * time, char *type, int *s2, char *cont, int *s1, char *src, int *s3, char *dest, int *s4, char *val, int *s5, char *key, int *s6, int *err) { startLink_i (time, type, s2, cont, s1, src, s3, dest, s4, val, s5, key, s6, err); } void endlink_i_ (varPrec * time, char *type, int *s2, char *cont, int *s1, char *src, int *s3, char *dest, int *s4, char *val, int *s5, char *key, int *s6, int *err) { endLink_i (time, type, s2, cont, s1, src, s3, dest, s4, val, s5, key, s6, err); } void setvar_i_ (varPrec * time, char *type, int *s2, char *cont, int *s1, varPrec * val, int *err) { setVar_i (time, type, s2, cont, s1, val, err); } void addvar_i_ (varPrec * time, char *type, int *s2, char *cont, int *s1, varPrec * val, int *err) { addVar_i (time, type, s2, cont, s1, val, err); } void subvar_i_ (varPrec * time, char *type, int *s2, char *cont, int *s1, varPrec * val, int *err) { subVar_i (time, type, s2, cont, s1, val, err); } void addcomm_i_ (char *comm, int *s2, int *err) { addComm_i (comm, s2, err); } void endtrace_i_ (int *err) { endTrace_i (err); } eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/compile0000644000000000000000000000013213171135227016254 xustar0030 mtime=1508162199.996398379 30 atime=1508162199.996398379 30 ctime=1508162365.969753301 eztrace-1.1-7/extlib/gtg/compile0000755000175000017500000001624513171135227017456 0ustar00trahaytrahay00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/NEWS0000644000000000000000000000013212544237152015403 xustar0030 mtime=1435582058.511899952 30 atime=1507797543.918891909 30 ctime=1508162365.965752952 eztrace-1.1-7/extlib/gtg/NEWS0000644000175000017500000000000012544237152016560 0ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/inc0000644000000000000000000000013213171135477015404 xustar0030 mtime=1508162367.189859803 30 atime=1508162367.741908015 30 ctime=1508162367.189859803 eztrace-1.1-7/extlib/gtg/inc/0000755000175000017500000000000013171135477016650 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/inc/PaxHeaders.7332/GTGStack.h0000644000000000000000000000013212544237152017235 xustar0030 mtime=1435582058.543899952 30 atime=1508138875.659912526 30 ctime=1508162367.189859803 eztrace-1.1-7/extlib/gtg/inc/GTGStack.h0000644000175000017500000000130512544237152020423 0ustar00trahaytrahay00000000000000#ifndef GTG_STACK_H #define GTG_STACK_H #include "GTGList.h" typedef struct gtg_list gtg_stack; typedef gtg_stack* gtg_stack_t; #define GTG_STACK_INIT(ptr) GTG_LIST_INIT(ptr) #define GTG_STACK(ptr) GTG_LIST(ptr) #define gtg_stack_entry(ptr, type, member) gtg_list_entry(ptr, type, member) static inline void gtg_stack_push(gtg_stack_t lnew, gtg_stack_t p_stack) { gtg_list_add_tail(lnew, p_stack); } static inline void gtg_stack_pop(gtg_stack_t p_stack) { gtg_list_del(p_stack->prev); } static inline gtg_stack_t gtg_stack_top(gtg_stack_t p_stack) { return p_stack->prev; } static inline int gtg_stack_empty(gtg_stack_t p_stack) { return p_stack->prev == p_stack; } #endif /* GTG_STACK_H */ eztrace-1.1-7/extlib/gtg/inc/PaxHeaders.7332/GTGMemory.h0000644000000000000000000000013212544237152017440 xustar0030 mtime=1435582058.543899952 30 atime=1508138875.447907232 30 ctime=1508162367.177858754 eztrace-1.1-7/extlib/gtg/inc/GTGMemory.h0000644000175000017500000000260012544237152020625 0ustar00trahaytrahay00000000000000/** * \file GTGMemory.h * \version 0.1 * \brief * * This file defines a fast allocator for fixed-size blocks */ #ifndef GTG_MEMORY_H #define GTG_MEMORY_H #include /** * \defgroup GTGMemory Memory management */ struct gtg_memory { void *first_mem; void *current_mem; size_t block_len; long mem_len; void *first_free; long first_new; long nb_allocated; }; typedef struct gtg_memory *gtg_memory_t; /** * \ingroup GTGMemory * \fn void gtg_block_memory_init(gtg_memory_t *memory, size_t block_size, long initial_block_number) * \brief Initialize the allocator * \param memory A memory describer * \param block_size The block size to be allocated when malloc is called * \param initial_block_number The number of blocks to allocate initialy */ void gtg_block_memory_init(gtg_memory_t *memory, size_t block_size, long initial_block_number); /** * \ingroup GTGMemory * \fn void* gtg_block_malloc(gtg_memory_t memory); * \brief Allocate a block of data * \param memory The memory describer * \return A pointer to a block or NULL if allocation failed */ void* gtg_block_malloc(gtg_memory_t memory); /** * \ingroup GTGMemory * \fn void gtg_block_free(gtg_memory_t memory, void *ptr); * \brief Free a block of data * \param memory The memory describer * \param ptr The block of data to free */ void gtg_block_free(gtg_memory_t memory, void *ptr); #endif eztrace-1.1-7/extlib/gtg/inc/PaxHeaders.7332/GTGOTF.h0000644000000000000000000000013212544237152016620 xustar0030 mtime=1435582058.543899952 30 atime=1508138875.707913726 30 ctime=1508162367.181859104 eztrace-1.1-7/extlib/gtg/inc/GTGOTF.h0000644000175000017500000000117512544237152020013 0ustar00trahaytrahay00000000000000/** * \file GTGOTF.h * \version 0.1 * \brief * OTF is the global file for gtg interface using OTF. * * \authors * Developers are : \n * Francois Rue - francois.rue@labri.fr \n * Francois Trahay - francois.trahay@labri.fr \n * Johnny Jazeix - jazeix@enseirb-matmeca.fr \n * Kevin Coulomb - kevin.coulomb@gmail.com \n * Mathieu Faverge - faverge@labri.fr \n * Olivier Lagrasse - lagrasse@enseirb-matmeca.fr \n * */ #ifndef _GTG_OTF_H_ #define _GTG_OTF_H_ #include #include "GTGOTF_Structs.h" #include "GTGOTF_Basic.h" #endif /* _GTG_OTF_H_ */ eztrace-1.1-7/extlib/gtg/inc/PaxHeaders.7332/GTGCompress.h0000644000000000000000000000013212544237152017763 xustar0030 mtime=1435582058.543899952 30 atime=1508138874.551884855 30 ctime=1508162367.189859803 eztrace-1.1-7/extlib/gtg/inc/GTGCompress.h0000644000175000017500000000213612544237152021154 0ustar00trahaytrahay00000000000000#ifndef GTG_COMPRESS_H #define GTG_COMPRESS_H #include #include #include /* compress a buffer into another buffer */ int gtg_compress_m2m(z_stream *z, void* in_buf, uint32_t len, void* out_buf, uint32_t out_max_len); /* compress a buffer and save the result in a file */ int gtg_compress_m2f(z_stream *z, void* in_buf, uint32_t len, FILE* file_out); /* compress a file into a buffer */ int gtg_compress_f2m(z_stream *z, FILE* file_in, void* out_buf, uint32_t out_max_len); /* compress a file into another file */ int gtg_compress_f2f(z_stream *z, FILE* file_in, FILE* file_out); /* save functions for decompression */ int gtg_decompress_m2m(z_stream *z, void* in_buf, uint32_t len, void* out_buf, uint32_t out_max_len); int gtg_decompress_m2f(z_stream *z, void* in_buf, uint32_t len, FILE* file_out); int gtg_decompress_f2m(z_stream *z, FILE* file_in, void* out_buf, uint32_t out_max_len); int gtg_decompress_f2f(z_stream *z, FILE* file_in, FILE* file_out); int gtg_compress_init(z_stream *z, int compression_ratio); int gtg_decompress_init(z_stream *z); #endif /* GTG_COMPRESS_H */ eztrace-1.1-7/extlib/gtg/inc/PaxHeaders.7332/GTGOTF_Basic.h0000644000000000000000000000013212544237152017721 xustar0030 mtime=1435582058.543899952 30 atime=1508138875.655912427 30 ctime=1508162367.181859104 eztrace-1.1-7/extlib/gtg/inc/GTGOTF_Basic.h0000644000175000017500000003235212544237152021115 0ustar00trahaytrahay00000000000000/** * \file GTGOTF_Basic.h * \version 0.1 * \brief * OTF_GTGBasic1 is the OTF implementation of the basic interface to generate traces (GTGBasic1). * * \authors * Developers are : \n * Francois Rue - francois.rue@labri.fr \n * Francois Trahay - francois.trahay@labri.fr \n * Johnny Jazeix - jazeix@enseirb-matmeca.fr \n * Kevin Coulomb - kevin.coulomb@gmail.com \n * Mathieu Faverge - faverge@labri.fr \n * Olivier Lagrasse - lagrasse@enseirb-matmeca.fr \n */ #ifndef _GTG_OTF_BASIC_H_ #define _GTG_OTF_BASIC_H_ #include "GTGTypes.h" #include "GTGBasic.h" #include "GTGOTF_Structs.h" /** * \defgroup cotf OTF interface in C of the traceGeneratorBasic API */ /** * \ingroup cotf * \fn const char* OTF_get_color(gtg_color_t color) * \brief Converts a GTG color into a OTF color. * \param color GTG color to convert * \return The OTF color */ const otf_color_t OTF_get_color(gtg_color_t color); /** * \ingroup cotf * \fn trace_return_t OTFInitTrace (const char* filename, gtg_flag_t flags) * \brief Initialize an OTF trace. * \param filename Root name of the file to create * \param flags One of GTG_FLAG_NONE, GTG_FLAG_USE_MPI, GTG_FLAG_NOTBUF. * \return 0 if success * An error code otherwise */ trace_return_t OTFInitTrace (const char* filename, gtg_flag_t flags); /** * \ingroup cotf * \fn trace_return_t OTFSetCompress(int val) * \brief Enable trace compression. * \param val 0 means no compression, otherwize the output files will be compressed. * \return 0 if success \n * An error code otherwise */ trace_return_t OTFSetCompress(int val); /** * \ingroup cotf * \fn trace_return_t OTFAddContType (const char* alias, * const char* contType, * const char* name) * \brief Add a Container Type. * \param alias Alias on the container * \param contType Type of container * \param name Name of the container type * \return 0 if success \n * An error code otherwise */ trace_return_t OTFAddContType (const char* alias, const char* contType, const char* name); /** * \ingroup cotf * \fn trace_return_t OTFAddStateType (const char* alias, * const char* contType, * const char* name) * \brief Add a State Type. * \param alias Alias on the state type * \param contType Type of container * \param name Name of the state type * \return 0 if success \n * An error code otherwise */ trace_return_t OTFAddStateType (const char* alias, const char* contType, const char* name); /** * \ingroup cotf * \fn trace_return_t OTFAddEventType (const char* alias, * const char* contType, * const char* name) * \brief Add an Event Type. * \param alias Alias on the event type * \param contType Type of container * \param name Name of the event type * \return 0 if success \n * An error code otherwise */ trace_return_t OTFAddEventType (const char* alias, const char* contType, const char* name); /** * \ingroup cotf * \fn trace_return_t OTFAddLinkType (const char* alias, * const char* name, * const char* contType, * const char* srcContType, * const char* destContType); * \brief Add a Link Type. * \param alias Alias on the link type * \param name Name of the link type * \param contType Type of container * \param srcContType Type of the source container * \param destContType Type of the destination container * \return 0 if success \n * An error code otherwise */ trace_return_t OTFAddLinkType (const char* alias , const char* name, const char* contType, const char* srcContType, const char* destContType); /** * \ingroup cotf * \fn trace_return_t OTFAddVarType (const char* alias, * const char* contType, * const char* name) * \brief Add a Variable Type. * \param alias Alias on the variable type * \param contType Type of container * \param name Name of the variable type * \return 0 if success \n * An error code otherwise */ trace_return_t OTFAddVarType (const char* alias , const char* name, const char* contType); /** * \ingroup cotf * \fn trace_return_t OTFAddEntityValue (const char* alias, * const char* entType, * const char* name, * const otf_color_t color) * \brief Add an Entity Value. * \param alias Alias on the entity value * \param entType Type of the entity * \param name Name of the variable type * \param color Color of the entity * \return 0 if success \n * An error code otherwise */ trace_return_t OTFAddEntityValue (const char* alias, const char* entType, const char* name , const otf_color_t color); /** * \ingroup cotf * \fn trace_return_t OTFDefineContainer (varPrec time, * const char * alias, * const char * type, * const char * container, * const char * name, * const char * file) * \brief Define a Container. * \param alias Alias of the new container * \param type Type of the container * \param container Container parent * \param name Name of the variable type * \param file File containing the container trace * \return 0 if success \n * An error code otherwise */ trace_return_t OTFDefineContainer (const char* alias, const char* type, const char* container, const char* name, const char* file); /** * \ingroup cotf * \fn trace_return_t OTFStartContainer (varPrec time, * const char * alias, * const char * type, * const char * container, * const char * name, * const char * file) * \brief Start a Container. * \param time Time at which the container is added * \param alias Alias of the new container * \param type Type of the container * \param container Container parent * \param name Name of the variable type * \param file File containing the container trace * \return 0 if success \n * An error code otherwise */ trace_return_t OTFStartContainer (varPrec time, const char* alias , const char* type, const char* container, const char* name, const char* file); /** * \ingroup cotf * \fn trace_return_t OTFDestroyContainer (varPrec time, * const char * name, * const char * type) * \brief Destroy a Container. * \param time Time at which the container is destroyed * \param name Name of the container * \param type Type of the container * \return 0 if success \n * An error code otherwise */ trace_return_t OTFDestroyContainer (varPrec time, const char* name, const char* type); /** * \ingroup cotf * \fn trace_return_t OTFSetState (varPrec time, * const char * type, * const char * cont, * const char * val) * \brief Set the State of a Container. * \param time Time at which the state is set * \param type Type of the state * \param cont Container in this state * \param val Entity value of the state of the container * \return 0 if success \n * An error code otherwise */ trace_return_t OTFSetState (varPrec time, const char* type, const char* cont, const char* val); /** * \ingroup cotf * \fn trace_return_t OTFPushState (varPrec time, * const char * type, * const char * cont, * const char * val) * \brief Save the current State on a stack and change the State of a Container. * \param time Time at which the state is pushed * \param type Type of the state * \param cont Container in this state * \param val Entity value of the state of the container * \return 0 if success \n * An error code otherwise */ trace_return_t OTFPushState (varPrec time, const char* type, const char* cont, const char* val); /** * \ingroup cotf * \fn trace_return_t OTFPopState (varPrec time, * const char * type, * const char * cont) * \brief Revert the State of a Container to its previous value. * \param time Time at which the state is poped * \param type Type of the state * \param cont Container in this state * \return 0 if success \n * An error code otherwise */ trace_return_t OTFPopState (varPrec time, const char* type, const char* cont); /** * \ingroup cotf * \fn trace_return_t OTFAddEvent (varPrec time, * const char * type, * const char * cont, * const char * val) * \brief Add an Event. * \param time Time at which the event happens * \param type Type of the event * \param cont Container in this event * \param val Entity value of the event of the container * \return 0 if success \n * An error code otherwise */ trace_return_t OTFAddEvent (varPrec time, const char* type, const char* cont, const char* val); /** * \ingroup cotf * \fn trace_return_t OTFStartLink (varPrec time, * const char * type, * const char * cont, * const char * src, * const char * val, * const char * key) * \brief Start a Link. * \param time Time at which the link starts * \param type Type of the link * \param cont Container containning the link * \param src Container source * \param val Entity value of the link * \param key Key to identify the link * \return 0 if success \n * An error code otherwise */ trace_return_t OTFStartLink (varPrec time, const char* type, const char* src, const char* dest, const char* val , const char* key); /** * \ingroup cotf * \fn trace_return_t OTFEndLink (varPrec time, * const char * type, * const char * cont, * const char * dest, * const char * val, * const char * key) * \brief End a Link. * \param time Time at which the link ends * \param type Type of the link * \param cont Container containning the link * \param dest Container destination * \param val Entity value of the link * \param key Key to identify the link * \return 0 if success \n * An error code otherwise */ trace_return_t OTFEndLink (varPrec time, const char* type, const char* src, const char* dest, const char* val, const char* key); /** * \ingroup cotf * \fn trace_return_t OTFSetVar (varPrec time, * const char * type, * const char * cont, * varPrec val) * \brief Set a Variable value. * \param time Time at which the variable is set * \param type Type of the variable * \param cont Container containning the variable * \param val Value of the variable * \return 0 if success \n * An error code otherwise */ trace_return_t OTFSetVar (varPrec time, const char* type, const char* cont, varPrec val); /** * \ingroup cotf * \fn trace_return_t OTFAddVar (varPrec time, * const char * type, * const char * cont, * varPrec val) * \brief Add a value to a Variable. * \param time Time at which the variable is incremented * \param type Type of the variable * \param cont Container containning the variable * \param val Value added * \return 0 if success \n * An error code otherwise */ trace_return_t OTFAddVar (varPrec time, const char* type, const char* cont, varPrec val); /** * \ingroup cotf * \fn trace_return_t OTFSubVar (varPrec time, * const char * type, * const char * cont, * varPrec val) * \brief Substract a value from a Variable. * \param time Time at which the variable is incremented * \param type Type of the variable * \param cont Container containning the variable * \param val Value substracted * \return 0 if success \n * An error code otherwise */ trace_return_t OTFSubVar (varPrec time, const char* type, const char* cont, varPrec val); /** * \ingroup cotf * \fn trace_return_t OTFAddComment (const char* comment) * * \brief Add some Comment in Trace file. * \param comment Comment to be added * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t OTFAddComment (const char* comment); /** * \ingroup cotf * \fn OTFEndTrace () * \brief Finalize an OTF trace. * \return 0 if success \n * An error code otherwise */ trace_return_t OTFEndTrace (); #endif /* _GTG_OTF_BASIC_H_ */ eztrace-1.1-7/extlib/gtg/inc/PaxHeaders.7332/GTGReplay.h0000644000000000000000000000013113064436161017422 xustar0029 mtime=1490173041.08908535 30 atime=1508138875.443907132 30 ctime=1508162367.177858754 eztrace-1.1-7/extlib/gtg/inc/GTGReplay.h0000644000175000017500000000214113064436161020610 0ustar00trahaytrahay00000000000000/** * \file GTGReplay.h * \version 0.1 * \brief * * This file defines functions for postponing event-processing function calls */ #ifndef GTG_REPLAY_H #define GTG_REPLAY_H /** * \defgroup GTGReplay Functions for postponing event-processing function calls */ enum event_type_t { event_addContainer, event_destroyContainer, event_setState, event_pushState, event_pushStateExtra, event_popState, event_addEvent, event_startLink, event_endLink, event_setVar, event_addVar, event_subVar }; /** * \ingroup GTGReplay * \fn void gtg_record(enum event_type_t type, varPrec time, ...) * \brief postpone the recording of an event * \param type The type of function to postpone * \param time The time at which the event happens */ void gtg_record(enum event_type_t type, varPrec time, ...); /** * \ingroup GTGReplay * \fn void gtg_write_events(long nb_events_to_write) * \brief run the first nb_events_to_write events * \param nb_events_to_write The number of functions to process (-1 for all functions) */ void gtg_write_events(long nb_events_to_write); #endif /* GTG_REPLAY_H */ eztrace-1.1-7/extlib/gtg/inc/PaxHeaders.7332/GTGTypes.h0000644000000000000000000000013212544237152017274 xustar0030 mtime=1435582058.543899952 30 atime=1508138875.419906532 30 ctime=1508162367.185859453 eztrace-1.1-7/extlib/gtg/inc/GTGTypes.h0000644000175000017500000000232612544237152020466 0ustar00trahaytrahay00000000000000/** * \file GTGtypes.h * \version 0.1 * \brief * * types define some types that are used in the library. * * \authors * Developpers are : \n * Francois Rue - francois.rue@labri.fr \n * Francois Trahay - francois.trahay@labri.fr \n * Johnny Jazeix - jazeix@enseirb-matmeca.fr \n * Kevin Coulomb - kevin.coulomb@gmail.com \n * Mathieu Faverge - faverge@labri.fr \n * Olivier Lagrasse - lagrasse@enseirb-matmeca.fr \n * */ #ifndef _GTG_TYPES_H_ #define _GTG_TYPES_H_ /** * \defgroup type Types used */ /** * \ingroup type Type used for time and value in C * \brief Use the double precision type for time and value. */ typedef double varPrec; /** * \ingroup type Return values of functions * \enum trace_return_t * \brief Define various return values */ typedef enum trace_return_t{ TRACE_SUCCESS , /*!< Success of the call. */ TRACE_ERR_OPEN , /*!< Failed to open files to write. */ TRACE_ERR_CLOSE, /*!< Failed to close file. */ TRACE_ERR_WRITE, /*!< Failed to write trace. */ TRACE_ERR_NOT_IMPL /*!< Function not impleneted. */ } trace_return_t; #endif /* _GTG_TYPES_H_ */ eztrace-1.1-7/extlib/gtg/inc/PaxHeaders.7332/GTG.h0000644000000000000000000000013212544237152016247 xustar0030 mtime=1435582058.543899952 30 atime=1508138875.419906532 30 ctime=1508162367.173858405 eztrace-1.1-7/extlib/gtg/inc/GTG.h0000644000175000017500000000173412544237152017443 0ustar00trahaytrahay00000000000000/** * \file GTG.h * \brief Generic header to include * \authors * Developpers are : \n * Francois Rue - francois.rue@labri.fr \n * Francois Trahay - francois.trahay@labri.fr \n * Johnny Jazeix - jazeix@enseirb-matmeca.fr \n * Kevin Coulomb - kevin.coulomb@gmail.com \n * Mathieu Faverge - faverge@labri.fr \n * Olivier Lagrasse - lagrasse@enseirb-matmeca.fr \n * * * \mainpage The GTG library * * (\\/) \n * (*-*) \n * (")(") \n * * \section Presentation * The GTG library provides a low level library to generate traces in various formats (Paje, OTF). \n * The use of the library is simple, you just need to include the GTG.h header * and then you can use the library as you wish. \n * Some simple examples are available in the test directory. \n * */ #ifndef _GTG_H_ #define _GTG_H_ #include #include "GTGTypes.h" #include "GTGColor.h" #include "GTGBasic.h" #endif /* _GTG_H_ */ eztrace-1.1-7/extlib/gtg/inc/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212544237152017511 xustar0030 mtime=1435582058.543899952 30 atime=1508162200.064403147 30 ctime=1508162367.169858055 eztrace-1.1-7/extlib/gtg/inc/Makefile.am0000644000175000017500000000053512544237152020703 0ustar00trahaytrahay00000000000000# Copyright CNRS, INRIA, Universit Bordeaux 1 # See COPYING in top-level directory. include_HEADERS = GTG.h \ GTGBasic.h \ GTGColor.h \ GTGReplay.h \ GTGMemory.h \ GTGOTF.h \ GTGOTF_Basic.h \ GTGOTF_Structs.h \ GTGPaje.h \ GTGPaje_Basic.h \ GTGTypes.h \ GTGList.h \ GTGStack.h \ GTGCompress.h eztrace-1.1-7/extlib/gtg/inc/PaxHeaders.7332/GTGPaje.h0000644000000000000000000000013212544237152017047 xustar0030 mtime=1435582058.543899952 30 atime=1508138875.419906532 30 ctime=1508162367.185859453 eztrace-1.1-7/extlib/gtg/inc/GTGPaje.h0000644000175000017500000000077512544237152020247 0ustar00trahaytrahay00000000000000/** * \file GTGPaje.h * \version 0.1 * \brief * * pajeColor is a file that defines function that manipulate colors. * */ #ifndef _GTG_PAJE_H_ #define _GTG_PAJE_H_ typedef char* paje_color_t; /** * \ingroup cpaje * \fn const paje_color_t Paje_get_color(gtg_color_t color) * \brief Converts a GTG color into a PAJE color. * \param color GTG color to convert * \return The PAJE color */ paje_color_t Paje_get_color(gtg_color_t p_color); #include "GTGPaje_Basic.h" #endif /* _GTG_PAJE_H_ */ eztrace-1.1-7/extlib/gtg/inc/PaxHeaders.7332/GTGOTF_Structs.h0000644000000000000000000000013212544237152020347 xustar0030 mtime=1435582058.543899952 30 atime=1508138875.655912427 30 ctime=1508162367.185859453 eztrace-1.1-7/extlib/gtg/inc/GTGOTF_Structs.h0000644000175000017500000001556612544237152021553 0ustar00trahaytrahay00000000000000/** * \file GTGOTF_Structs.h * \version 0.1 * \brief * OTF_Structs gives the global types and functions needed to have the OTF implementation. * * \authors * Developers are : \n * Francois Rue - francois.rue@labri.fr \n * Francois Trahay - francois.trahay@labri.fr \n * Johnny Jazeix - jazeix@enseirb-matmeca.fr \n * Kevin Coulomb - kevin.coulomb@gmail.com \n * Mathieu Faverge - faverge@labri.fr \n * Olivier Lagrasse - lagrasse@enseirb-matmeca.fr \n * */ #ifndef _GTG_OTF_STRUCTS_H_ #define _GTG_OTF_STRUCTS_H_ #include #include "GTGList.h" #include "GTGStack.h" /* todo: remove this */ #define MAX_PROCESS 64 /*! StateTypes */ typedef struct StateType { /* Func group */ char *name; char *alias; int groupId; int id; struct gtg_list token; /* stored in the stateTypes list */ } StateType_t; /*! States */ typedef struct State { int value; int cont; int stateType; gtg_stack token; /* stored in the states list */ } State_t; /* ContainerTypes */ typedef struct ContainerType { char *name; char *alias; int id; struct gtg_list token; /* stored in the ctType list */ } ContainerType_t; /*! Containers */ typedef struct Container { char *name; char *alias; int ctType; int id; struct gtg_list token; /* stored in the conts list */ State_t state_stack; } Container_t; /*! EntityValue, contains the name of the functions/states */ typedef struct EntityValue { char *name; char *alias; int groupId; int id; struct gtg_list token; /* not used */ } EntityValue_t; /*! Events/Markers */ typedef struct EventType { char *name; char *alias; int contType; int id; struct gtg_list token; /* stored in the eventTypes list */ } EventType_t; /*! Links/Messages */ typedef struct LinkType { char *name; char *alias; int contType; int srcType; int destType; int id; struct gtg_list token; /* stored in the linkTypes lisk */ } LinkType_t; typedef struct Link { varPrec time; int src; } Link_t; /*! Variables/Counters */ typedef struct VariableType { char *name; char *alias; int contType; int id; struct gtg_list token; /* stored in the variableTypes list */ } VariableType_t; typedef struct Variable { int parent; int type; uint64_t value; int id; struct gtg_list token; /* stored in the variables list */ } Variable_t; struct otf_color { char *colorID; uint8_t red; uint8_t green; uint8_t blue; }; typedef struct otf_color* otf_color_t; #define ContainerType_NIL 0 #define Container_NIL 0 #define StateType_NIL 0 #define State_NIL 0 #define EntityValue_NIL 0 #define EventType_NIL 0 #define LinkType_NIL 0 #define VariableType_NIL 0 #define Variable_NIL 0 #define init_ContainerType(var)\ do { \ (var).name = NULL; \ (var).alias = NULL; \ (var).id = ContainerType_NIL; \ GTG_LIST_INIT(&(var).token); \ }while(0) #define init_Container(var) \ do { \ (var).name = NULL; \ (var).alias = NULL; \ (var).ctType = ContainerType_NIL; \ (var).id = Container_NIL; \ GTG_LIST_INIT(&(var).token); \ GTG_STACK_INIT(&(var).state_stack.token); \ }while(0) #define init_StateType(var) \ do { \ (var).name = NULL; \ (var).alias = NULL; \ (var).groupId = 0; \ (var).id = StateType_NIL; \ GTG_LIST_INIT(&(var).token); \ }while(0) #define init_EntityValue(var) \ do { \ (var).name = NULL; \ (var).alias = NULL; \ (var).groupId = 0; \ (var).id = EntityValue_NIL; \ GTG_LIST_INIT(&(var).token); \ }while(0) #define init_EventType(var) \ do { \ (var).name = NULL; \ (var).alias = NULL; \ (var).contType = ContainerType_NIL; \ (var).id = EventType_NIL; \ GTG_LIST_INIT(&(var).token); \ }while(0) #define init_LinkType(var) \ do { \ (var).name = NULL; \ (var).alias = NULL; \ (var).contType = ContainerType_NIL; \ (var).srcType = ContainerType_NIL; \ (var).destType = ContainerType_NIL; \ (var).id = LinkType_NIL; \ GTG_LIST_INIT(&(var).token); \ }while(0) #define init_VariableType(var) \ do { \ (var).name = NULL; \ (var).alias = NULL; \ (var).contType = ContainerType_NIL; \ (var).id = VariableType_NIL; \ GTG_LIST_INIT(&(var).token); \ }while(0) #define init_Variable(var) \ do { \ (var).parent = Container_NIL; \ (var).parent = VariableType_NIL; \ (var).value = 0; \ (var).id = Variable_NIL; \ GTG_LIST_INIT(&(var).token); \ }while(0) #define init_State(var) \ do { \ (var).value = EntityValue_NIL; \ (var).cont = Container_NIL; \ (var).stateType = StateType_NIL; \ GTG_STACK_INIT(&(var).token); \ }while(0) #define alloc_struct(ptr, type, list_head) \ do { \ ptr = (type*) malloc(sizeof(type)); \ GTG_LIST_INIT(&(ptr->token)); \ ptr->id = (gtg_list_entry((list_head)->prev, type, token)->id) + 1; \ gtg_list_add_tail(&(ptr->token), list_head); \ } while(0) #define alloc_init_struct(type, ptr, list_head, _name_, _alias_) \ do { \ alloc_struct(ptr, type, list_head); \ (ptr)->name = (char *)malloc(sizeof(char)*(strlen(_name_)+1)); \ strcpy((ptr)->name, _name_); \ (ptr)->alias = (char *)malloc(sizeof(char)*(strlen(_alias_)+1)); \ strcpy((ptr)->alias, _alias_); \ }while(0) #define alloc_Variable(_ptr_, _id_, _parent_, _type_, _value_) \ do { \ (_ptr_) = (Variable_t*) malloc(sizeof(Variable_t)); \ init_Variable(*(_ptr_)); \ (_ptr_)->id = _id_; \ (_ptr_)->parent = _parent_; \ (_ptr_)->type = _type_; \ (_ptr_)->value = _value_; \ }while(0) #define alloc_State(_ptr_, _value_, _cont_, _stateType_) \ do { \ _ptr_ = (State_t*) malloc(sizeof(State_t)); \ init_State(*(_ptr_)); \ (_ptr_)->value = _value_; \ (_ptr_)->cont = _cont_; \ (_ptr_)->stateType = _stateType_; \ }while(0) #define free_struct(_type_, _list_head_)\ do{\ _type_ *ptr, *tmp; \ gtg_list_for_each_entry_safe(ptr, tmp, &(_list_head_).token, token) { \ gtg_list_del(&(ptr->token));\ free(ptr->name);\ free(ptr->alias);\ free(ptr);\ }\ }while(0) #endif /* _GTG_OTF_STRUCTS_H_ */ eztrace-1.1-7/extlib/gtg/inc/PaxHeaders.7332/GTGPaje_Basic.h0000644000000000000000000000013213064437475020160 xustar0030 mtime=1490173757.746516665 30 atime=1508138875.423906633 30 ctime=1508162367.185859453 eztrace-1.1-7/extlib/gtg/inc/GTGPaje_Basic.h0000644000175000017500000004041613064437475021354 0ustar00trahaytrahay00000000000000/** * \file GTGPaje_Basic.h * \version 0.1 * \brief * paje_GTGBasic1 is the Paje implementation of the basic interface to generate traces (GTGBasic1). * * \authors * Developers are : \n * Francois Rue - francois.rue@labri.fr \n * Francois Trahay - francois.trahay@labri.fr \n * Johnny Jazeix - jazeix@enseirb-matmeca.fr \n * Kevin Coulomb - kevin.coulomb@gmail.com \n * Mathieu Faverge - faverge@labri.fr \n * Olivier Lagrasse - lagrasse@enseirb-matmeca.fr \n * */ #ifndef _GTG_PAJE_BASIC_H_ #define _GTG_PAJE_BASIC_H_ #include "GTGBasic.h" /** * \brief Constant to create a paje trace */ #define FMT_PAJE 0 /** * \brief Constant to create a vite trace */ #define FMT_VITE 1 /** * \defgroup cpaje Paje interface in C of the GTGBasic1 API */ /** * \ingroup cpaje * \fn trace_return_t pajeInitTrace (const char* filename, int rank, gtg_flag_t flags, int fmt) * \brief Initialize a VITE trace ( *.ept) * \param filename Root name of the file to create * \param rank Rank of the processor * \param flags One of GTG_FLAG_NONE, GTG_FLAG_USE_MPI, GTG_FLAG_NOTBUF. * \param fmt Format, paje or vite * \return 0 if success * An error code otherwise */ trace_return_t pajeInitTrace (const char* filename, int rank, gtg_flag_t flags, int fmt); /** * \ingroup cpaje * \fn char* pajeGetName (int rk) * \param rk Rank of the proc you want the filename containing it * \brief Function to get the name of the file containing all the data for the proc of rank rk * \return Name of the file. */ char* pajeGetName (int rk); /** * \ingroup cpaje * \fn trace_return_t pajeSetCompress(int val) * \brief Enable trace compression. * \param val 0 means no compression, otherwize the output files will be compressed. * \return 0 if success \n * An error code otherwise */ trace_return_t pajeSetCompress(int val); /** * \ingroup cpaje * \fn trace_return_t pajeAddContType (const char* alias, * const char* contType, * const char* name) * \brief Add a Container Type. * \param alias Alias on the container * \param contType Type of container * \param name Name of the container type * \return 0 if success \n * An error code otherwise */ trace_return_t pajeAddContType (const char* alias, const char* contType, const char* name); /** * \ingroup cpaje * \fn trace_return_t pajeAddStateType (const char* alias, * const char* contType, * const char* name) * \brief Add a State Type. * \param alias Alias on the state type * \param contType Type of container * \param name Name of the state type * \return 0 if success \n * An error code otherwise */ trace_return_t pajeAddStateType (const char* alias, const char* contType, const char* name); /** * \ingroup cpaje * \fn trace_return_t pajeAddEventType (const char* alias, * const char* contType, * const char* name) * \brief Add an Event Type. * \param alias Alias on the event type * \param contType Type of container * \param name Name of the event type * \return 0 if success \n * An error code otherwise */ trace_return_t pajeAddEventType (const char* alias, const char* contType, const char* name); /** * \ingroup cpaje * \fn trace_return_t pajeAddLinkType (const char* alias, * const char* name, * const char* contType, * const char* srcContType, * const char* destContType); * \brief Add a Link Type. * \param alias Alias on the link type * \param name Name of the link type * \param contType Type of container * \param srcContType Type of the source container * \param destContType Type of the destination container * \return 0 if success \n * An error code otherwise */ trace_return_t pajeAddLinkType (const char* alias , const char* name, const char* contType, const char* srcContType, const char* destContType); /** * \ingroup cpaje * \fn trace_return_t pajeAddVarType (const char* alias, * const char* contType, * const char* name) * \brief Add a Variable Type. * \param alias Alias on the variable type * \param contType Type of container * \param name Name of the variable type * \return 0 if success \n * An error code otherwise */ trace_return_t pajeAddVarType (const char* alias , const char* contType, const char* name); /** * \ingroup cpaje * \fn trace_return_t pajeAddEntityValue (const char* alias, * const char* entType, * const char* name, * const char* color) * \brief Add an Entity Value. * \param alias Alias on the entity value * \param entType Type of the entity * \param name Name of the variable type * \param color Color of the entity * \return 0 if success \n * An error code otherwise */ trace_return_t pajeAddEntityValue (const char* alias, const char* entType, const char* name , const char* color); /** * \ingroup cpaje * \fn trace_return_t pajeAddContainer (varPrec time, * const char * alias, * const char * type, * const char * container, * const char * name, * const char * file) * \brief Add a Container (VITE format). * \param time Time at which the container is added * \param alias Alias on the new container * \param type Type of the container * \param container Container parent * \param name Name of the variable type * \param file File containing the container trace * \return 0 if success \n * An error code otherwise */ trace_return_t pajeAddContainer (varPrec time, const char* alias , const char* type, const char* container, const char* name, const char* file); /** * \ingroup cpaje * \fn trace_return_t pajeSeqAddContainer (varPrec time, * const char * alias, * const char * type, * const char * container, * const char * name) * \brief Add a Container (PAJE format). * \param time Time at which the container is added * \param alias Alias on the new container * \param type Type of the container * \param container Container parent * \param name Name of the variable type * \return 0 if success \n * An error code otherwise */ trace_return_t pajeSeqAddContainer (varPrec time, const char* alias , const char* type, const char* container, const char* name); /** * \ingroup cpaje * \fn trace_return_t pajeDestroyContainer (varPrec time, * const char * name, * const char * type) * \brief Destroy a Container. * \param time Time at which the container is destroyed * \param name Name on the container to destroy * \param type Type of the container * \return 0 if success \n * An error code otherwise */ trace_return_t pajeDestroyContainer (varPrec time, const char* name, const char* type); /** * \ingroup cpaje * \fn trace_return_t pajeSetState (varPrec time, * const char * type, * const char * cont, * const char * val) * \brief Set the State of a Container. * \param time Time at which the state is set * \param type Type of the state * \param cont Container in this state * \param val Entity value of the state of the container * \return 0 if success \n * An error code otherwise */ trace_return_t pajeSetState (varPrec time, const char* type, const char* cont, const char* val); /** * \ingroup cpaje * \fn trace_return_t pajePushState (varPrec time, * const char * type, * const char * cont, * const char * val) * \brief Save the current State on a stack and change the State of a Container. * \param time Time at which the state is pushed * \param type Type of the state * \param cont Container in this state * \param val Entity value of the state of the container * \return 0 if success \n * An error code otherwise */ trace_return_t pajePushState (varPrec time, const char* type, const char* cont, const char* val); /** * \ingroup cpaje * \fn trace_return_t pajePushStateExtra (varPrec time, * const char * type, * const char * cont, * const char * val, * const char * extra) * \brief Save the current State on a stack and change the State of a Container. * \param time Time at which the state is pushed * \param type Type of the state * \param cont Container in this state * \param val Entity value of the state of the container * \param extra The extra field to be added * \return 0 if success \n * An error code otherwise */ trace_return_t pajePushStateExtra (varPrec time, const char* type, const char* cont, const char* val, const char* extra); /** * \ingroup cpaje * \fn trace_return_t pajePopState (varPrec time, * const char * type, * const char * cont) * \brief Revert the State of a Container to its previous value. * \param time Time at which the state is poped * \param type Type of the state * \param cont Container in this state * \return 0 if success \n * An error code otherwise */ trace_return_t pajePopState (varPrec time, const char* type, const char* cont); /** * \ingroup cpaje * \fn trace_return_t pajeAddEvent (varPrec time, * const char * type, * const char * cont, * const char * val) * \brief Add an Event. * \param time Time at which the event happens * \param type Type of the event * \param cont Container in this event * \param val Entity value of the event of the container * \return 0 if success \n * An error code otherwise */ trace_return_t pajeAddEvent (varPrec time, const char* type, const char* cont, const char* val); /** * \ingroup cpaje * \fn trace_return_t pajeStartLink (varPrec time, * const char * type, * const char * cont, * const char * src, * const char * val, * const char * key) * \brief Start a link * \param time Time at which the link starts * \param type Type of the link * \param cont Container parent of the source and destination containers containing the link * \param src Source container * \param val Value of the link * \param key Key used to match start link with end link * \return 0 if success \n * An error code otherwise */ trace_return_t pajeStartLink (varPrec time, const char* type, const char* cont, const char* src, const char* val , const char* key); /** * \ingroup cpaje * \fn trace_return_t pajeEndLink (varPrec time, * const char * type, * const char * cont, * const char * dest, * const char * val, * const char * key) * \brief Start a link * \param time Time at which the link starts * \param type Type of the link * \param cont Container parent of the source and destination containers containing the link * \param dest Source container * \param val Value of the link * \param key Key used to match start link with end link * \return 0 if success \n * An error code otherwise */ trace_return_t pajeEndLink (varPrec time, const char* type, const char* cont, const char* dest, const char* val , const char* key); /** * \ingroup cpaje * \fn trace_return_t pajeSetVar (varPrec time, * const char * type, * const char * cont, * varPrec val) * \brief Set a Variable value * \param time Time at which the variable is set * \param type Type of the variable * \param cont Container containing the variable * \param val Value of the variable * \return 0 if success \n * An error code otherwise */ trace_return_t pajeSetVar (varPrec time, const char* type, const char* cont, varPrec val); /** * \ingroup cpaje * \fn trace_return_t pajeAddVar (varPrec time, * const char * type, * const char * cont, * varPrec val) * \brief Add a value to a Variable. * \param time Time at which the variable is incremented * \param type Type of the variable * \param cont Container containing the variable * \param val Value added * \return 0 if success \n * An error code otherwise */ trace_return_t pajeAddVar (varPrec time, const char* type, const char* cont, varPrec val); /** * \ingroup cpaje * \fn trace_return_t pajeSubVar (varPrec time, * const char * type, * const char * cont, * varPrec val) * \brief Substract a value from a Variable. * \param time Time at which the variable is incremented * \param type Type of the variable * \param cont Container containing the variable * \param val Value substracted * \return 0 if success \n * An error code otherwise */ trace_return_t pajeSubVar (varPrec time, const char* type, const char* cont, varPrec val); /** * \ingroup cpaje * \fn trace_return_t pajeAddComment (const char* comment) * * \brief Add some Comment in Trace file. * \param comment Comment to be added * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t pajeAddComment (const char* comment); /** * \ingroup cpaje * \fn pajeEndTrace () * \brief Finalize a PAJE trace. * \return 0 if success \n * An error code otherwise */ trace_return_t pajeEndTrace (); /** * \ingroup cpaje * \fn viteEndTrace () * \brief Finalize a VITE trace. * \return 0 if success \n * An error code otherwise */ trace_return_t viteEndTrace (); /* * Functions to handle extra-parameters in the Paje Definitions * This will need to be cleaned to be closer to OTF interface */ enum gtg_paje_evtdef_e { GTG_PAJE_EVTDEF_DefineContainerType, GTG_PAJE_EVTDEF_DefineStateType, GTG_PAJE_EVTDEF_DefineEventType, GTG_PAJE_EVTDEF_DefineVariableType, GTG_PAJE_EVTDEF_DefineLinkType, GTG_PAJE_EVTDEF_DefineEntityValue, GTG_PAJE_EVTDEF_CreateContainer, GTG_PAJE_EVTDEF_DestroyContainer, GTG_PAJE_EVTDEF_SetState, GTG_PAJE_EVTDEF_PushState, GTG_PAJE_EVTDEF_PushStateExtra, GTG_PAJE_EVTDEF_PopState, GTG_PAJE_EVTDEF_ResetState, GTG_PAJE_EVTDEF_NewEvent, GTG_PAJE_EVTDEF_SetVariable, GTG_PAJE_EVTDEF_AddVariable, GTG_PAJE_EVTDEF_SubVariable, GTG_PAJE_EVTDEF_StartLink, GTG_PAJE_EVTDEF_EndLink, GTG_PAJE_EVTDEF_NBR }; enum gtg_paje_fieldtype_e { GTG_PAJE_FIELDTYPE_Int, GTG_PAJE_FIELDTYPE_Hex, GTG_PAJE_FIELDTYPE_Date, GTG_PAJE_FIELDTYPE_Double, GTG_PAJE_FIELDTYPE_String, GTG_PAJE_FIELDTYPE_Color, GTG_PAJE_FIELDTYPE_NBR }; struct gtg_paje_edp_s { struct gtg_paje_edp_s *next; char *name; enum gtg_paje_fieldtype_e type; }; typedef struct gtg_paje_edp_s gtg_paje_edp_t; struct gtg_paje_eventdef_s { char *name; int id; gtg_paje_edp_t *first; gtg_paje_edp_t *last; }; typedef struct gtg_paje_eventdef_s gtg_paje_eventdef_t; extern gtg_paje_eventdef_t paje_eventdefs[GTG_PAJE_EVTDEF_NBR]; void pajeEventDefAddParam( enum gtg_paje_evtdef_e event, const char *name, enum gtg_paje_fieldtype_e type ); #endif /* _GTG_PAJE_BASIC_H_ */ eztrace-1.1-7/extlib/gtg/inc/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135230017511 xustar0030 mtime=1508162200.076403988 30 atime=1508162281.110578568 30 ctime=1508162367.189859803 eztrace-1.1-7/extlib/gtg/inc/Makefile.in0000644000175000017500000004042513171135230020705 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright CNRS, INRIA, Universit Bordeaux 1 # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = inc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(includedir)" HEADERS = $(include_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ GREP = @GREP@ HAVE_DOXYGEN = @HAVE_DOXYGEN@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPIDIR = @MPIDIR@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTFDIR = @OTFDIR@ OTF_INC = @OTF_INC@ OTF_LIB = @OTF_LIB@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ include_HEADERS = GTG.h \ GTGBasic.h \ GTGColor.h \ GTGReplay.h \ GTGMemory.h \ GTGOTF.h \ GTGOTF_Basic.h \ GTGOTF_Structs.h \ GTGPaje.h \ GTGPaje_Basic.h \ GTGTypes.h \ GTGList.h \ GTGStack.h \ GTGCompress.h all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu inc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu inc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-includeHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-includeHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool cscopelist-am ctags ctags-am distclean \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-includeHEADERS install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-includeHEADERS .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/gtg/inc/PaxHeaders.7332/GTGBasic.h0000644000000000000000000000013213064435653017215 xustar0030 mtime=1490172843.808290441 30 atime=1508138875.411906332 30 ctime=1508162367.173858405 eztrace-1.1-7/extlib/gtg/inc/GTGBasic.h0000644000175000017500000003660613064435653020417 0ustar00trahaytrahay00000000000000/** * \file GTGBasic.h * \version 0.1 * \brief * * GTGBasic is a basic interface to generate trace in various formats. * * \authors * Developers are : \n * Francois Rue - francois.rue@labri.fr \n * Francois Trahay - francois.trahay@labri.fr \n * Johnny Jazeix - jazeix@enseirb-matmeca.fr \n * Kevin Coulomb - kevin.coulomb@gmail.com \n * Mathieu Faverge - faverge@labri.fr \n * Olivier Lagrasse - lagrasse@enseirb-matmeca.fr \n * * It has been initiated in 2010 by *eztrace* and *ViTE* projects * that both needs a good library to generate traces. * */ #ifndef _GTG_BASIC_H_ #define _GTG_BASIC_H_ #include #include #include "GTGColor.h" #include "GTGTypes.h" /** * \brief No flag specified. */ #define GTG_FLAG_NONE 0 /** * \brief Several MPI processes are currently using GTG. */ #define GTG_FLAG_USE_MPI 1 /** * \brief For writing the traces in a non-buffered mode. */ #define GTG_FLAG_NOTBUF 2 /** * \brief Allow the application to record events out of order */ #define GTG_FLAG_OUTOFORDER 4 /** * \brief Flags that can be specified to GTG. */ typedef uint8_t gtg_flag_t; /** * \defgroup traceType Trace type handler */ /** * \ingroup traceType * \enum traceType * \brief The type of the output trace. * */ typedef enum traceType{ PAJE, /*!< Paje trace format. */ VITE, /*!< ViTE-specific trace format. */ OTF, /*!< OTF trace format. */ TAU /*!< TAU Trace format. */ }traceType_t; /** * \ingroup traceType * \fn void setTraceType (traceType_t type) * \brief Set the type of output trace. * \param type Type of trace to generate */ void setTraceType (traceType_t type); /** * \ingroup traceType * \fn traceType_t getTraceType () * \brief Get the type of the output trace. * \return The type of the trace */ traceType_t getTraceType (); /** * \ingroup traceType * \fn traceType_t getName (int procRk) * \param procRk Rank of the proc to get the file containing it * \brief To get the name of the file to give to the addCont function for processors * \return The name of the file to give for a proc */ char* getName (int procRk); /** * \ingroup traceType * \fn int bufferedModeActivated() * \brief Check wether the buffered-mode is activated. * \return 1 is the buffered-mode is activate.\n * 0 otherwise. */ int bufferedModeActivated(); /** * \defgroup init To init the generated trace file(s) */ /** * \ingroup init * \fn int initTrace (const char* filename, int rank, gtg_flag_t flags) * \brief Initialize a trace. * \param filename Root name of the file to create * \param rank Process number of the file to create * \param flags One of GTG_FLAG_NONE, GTG_FLAG_USE_MPI, GTG_FLAG_NOTBUF. * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t initTrace (const char* filename, int rank, gtg_flag_t flags); /** * \ingroup init * \fn trace_return_t endTrace () * \brief Finalize a trace. * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t endTrace (); /** * \ingroup init * \fn trace_return_t setCompress (int val) * \brief Enable trace compression (only available for OTF traces). * \param val 0 means no compression, otherwize the output files will be compressed * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t setCompress (int val); /** * \defgroup procf Functions related to the containers */ /** * \ingroup procf * \fn trace_return_t addContType (const char* alias, * const char* contType, * const char* name) * \brief Add a Container Type. * \param alias Alias on the container added * \param contType Type of the parent container * \param name Alternative name of the new container type * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t addContType (const char* alias, const char* contType, const char* name); /** * \defgroup statef Functions related to the states */ /** * \ingroup statef * \fn trace_return_t addStateType (const char* alias, * const char* contType, * const char* name) * \brief Add a State Type. * \param alias Alias on the state type added * \param contType Type of container of these states * \param name Alternative name of the state type * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t addStateType (const char* alias, const char* contType, const char* name); /** * \defgroup eventf Functions related to the events */ /** * \ingroup eventf * \fn trace_return_t addEventType (const char* alias, * const char* contType, * const char* name) * \brief Add an Event Type. * \param alias Alias on the event type * \param contType Type of container of these events * \param name Alternative name of the event type * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t addEventType (const char* alias, const char* contType, const char* name); /** * \defgroup linkf Functions related to links */ /** * \ingroup linkf * \fn trace_return_t addLinkType (const char* alias, * const char* name, * const char* contType, * const char* srcContType, * const char* destContType); * \brief Add a Link Type. * \param alias Alias on the link type * \param name Alternative name of the link type * \param contType Type of common ancestral container * \param srcContType Type of the source container * \param destContType Type of the destination container * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t addLinkType (const char* alias , const char* name, const char* contType, const char* srcContType, const char* destContType); /** * \defgroup varf Functions related to variables */ /** * \ingroup varf * \fn trace_return_t addVarType (const char* alias, * const char* name, * const char* contType) * \brief Add a Variable Type. * \param alias Alias on the variable type * \param contType Type of container * \param name Alternative name of the variable type * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t addVarType (const char* alias , const char* name, const char* contType); /** * \ingroup init * \fn trace_return_t addEntityValue (const char* alias, * const char* entType, * const char* name, * gtg_color_t p_color) * \brief Add an Entity Value. * \param alias Alias on the entity value * \param entType Type of the entity that can have the value * \param name Alternative name of the variable type * \param p_color Color of the entity * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t addEntityValue (const char* alias, const char* entType, const char* name , gtg_color_t p_color); /** * \ingroup procf * \fn trace_return_t addContainer (varPrec time, * const char * alias, * const char * type, * const char * container, * const char * name, * const char * file) * \brief Add a Container. * \param time Time at which the container is added * \param alias Alias of the new container * \param type Type of the new container * \param container Container parent * \param name Alternative name of the variable type * \param file File containing the container for vite format. Use "0" or "" chains for other formats. * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t addContainer (varPrec time, const char* alias , const char* type, const char* container, const char* name, const char* file); /** * \ingroup procf * \fn trace_return_t destroyContainer (varPrec time, * const char * name, * const char * type) * \brief Destroy a Container. * \param time Time at which the container is destroyed * \param name Name of the container * \param type Type of the container * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t destroyContainer (varPrec time, const char* name, const char* type); /** * \ingroup statef * \fn trace_return_t setState (varPrec time, * const char * type, * const char * cont, * const char * val) * \brief Set the State of a Container. * \param time Time the state changes * \param type Type of the state * \param cont Container whose state changes * \param val Value of new state of container * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t setState (varPrec time, const char* type, const char* cont, const char* val); /** * \ingroup statef * \fn trace_return_t pushState (varPrec time, * const char * type, * const char * cont, * const char * val) * \brief Save the current State on a stack and change the State of a Container. * \param time Time the state changes * \param type Type of the state * \param cont Container whose state changes * \param val Value of state of container * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t pushState (varPrec time, const char* type, const char* cont, const char* val); /** * \ingroup statef * \fn trace_return_t pushStateExtra (varPrec time, * const char * type, * const char * cont, * const char * val, * const char * extra_field) * \brief Save the current State on a stack and change the State of a Container. * \param time Time the state changes * \param type Type of the state * \param cont Container whose state changes * \param val Value of state of container * \param extra_field The Extra field to be added * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t pushStateExtra (varPrec time, const char* type, const char* cont, const char* val, const char* extra_field); /** * \ingroup statef * \fn trace_return_t popState (varPrec time, * const char * type, * const char * cont) * \brief Revert the State of a Container to its previous value. * \param time Time the state changes * \param type Type of the state * \param cont Container whose state changes * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t popState (varPrec time, const char* type, const char* cont); /** * \ingroup eventf * \fn trace_return_t addEvent (varPrec time, * const char * type, * const char * cont, * const char * val) * \brief Add an Event. * \param time Time the event happens * \param type Type of the event * \param cont Container that produced the event * \param val Value of the new event * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t addEvent (varPrec time, const char* type, const char* cont, const char* val); /** * \ingroup linkf * \fn trace_return_t startLink (varPrec time, * const char * type, * const char * cont, * const char * src, * const char * dest, * const char * val, * const char * key) * \brief Start a Link. * \param time Time the link starts * \param type Type of the link * \param cont Container containing the link (an ancestor of source and destination container) * \param src Source container * \param dest Destination container * \param val Value of the link * \param key Key to match the end link * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t startLink (varPrec time, const char* type, const char* cont, const char* src, const char* dest, const char* val, const char* key); /** * \ingroup linkf * \fn trace_return_t endLink (varPrec time, * const char * type, * const char * cont, * const char * src, * const char * dest, * const char * val, * const char * key) * \brief End a Link. * \param time Time the link ends * \param type Type of the link * \param cont Container containing the link (an ancestor of source and destination container) * \param src Source container * \param dest Destination container * \param val Value of the link * \param key Key to match the start link * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t endLink (varPrec time, const char* type, const char* cont, const char* src, const char* dest, const char* val, const char* key); /** * \ingroup varf * \fn trace_return_t setVar (varPrec time, * const char * type, * const char * cont, * varPrec val) * \brief Set a Variable value. * \param time Time the variable changes * \param type Type of the variable * \param cont Container containing the variable * \param val New value of the variable * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t setVar (varPrec time, const char* type, const char* cont, varPrec val); /** * \ingroup varf * \fn trace_return_t addVar (varPrec time, * const char * type, * const char * cont, * varPrec val) * \brief Add a value to a Variable. * \param time Time the variable is incremented * \param type Type of the variable * \param cont Container containing the variable * \param val Value added * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t addVar (varPrec time, const char* type, const char* cont, varPrec val); /** * \ingroup varf * \fn trace_return_t subVar (varPrec time, * const char * type, * const char * cont, * varPrec val) * \brief Substract a value from a Variable. * \param time Time the variable is incremented * \param type Type of the variable * \param cont Container containing the variable * \param val Value substracted * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t subVar (varPrec time, const char* type, const char* cont, varPrec val); /** * \ingroup procf * \fn trace_return_t AddComment (const char* comment) * * \brief Add some Comment in Trace file. * \param comment Comment to be added * \return TRACE_SUCCESS on success \n * An error code otherwise */ trace_return_t AddComment (const char* comment); #endif /* _GTG_BASIC_H_ */ eztrace-1.1-7/extlib/gtg/inc/PaxHeaders.7332/GTGColor.h0000644000000000000000000000013212544237152017246 xustar0030 mtime=1435582058.543899952 30 atime=1508138875.419906532 30 ctime=1508162367.177858754 eztrace-1.1-7/extlib/gtg/inc/GTGColor.h0000644000175000017500000001264712544237152020447 0ustar00trahaytrahay00000000000000/** * \file GTGColor.h * \version 0.1 * \brief * * This file defines some useful colors to use in entity values for GTG. * */ #ifndef _GTGCOLOR_H_ #define _GTGCOLOR_H_ #include /** * \defgroup GTGColor Defined colors for GTG */ typedef uint32_t gtg_rgb_color_t; /** * \ingroup GTGColor * \struct gtg_color * \brief This structure defines a color that can be used by GTG. */ struct gtg_color { /*@{*/ char* color_name; /**< The name of the color (ie. "RED" or "Black",...) */ gtg_rgb_color_t rgb; /**< RGB code of the color. It should be obtained by calling GTG_COLOR_SET_COLOR(r, g, b). */ /*@{*/ }; typedef struct gtg_color* gtg_color_t; /* In a 4-byte value, the first byte corresponds to blue, * the second to green, the third to red. The 4th byte is * unused (for now). ie. a color is represented as follows: * 0x00rrggbb */ #define GTG_COLOR_BLUE_POS 0 #define GTG_COLOR_GREEN_POS 8 #define GTG_COLOR_RED_POS 16 #define GTG_COLOR_BLUE_MASK (0x000000ff << GTG_COLOR_BLUE_POS) #define GTG_COLOR_GREEN_MASK (0x000000ff << GTG_COLOR_GREEN_POS) #define GTG_COLOR_RED_MASK (0x000000ff << GTG_COLOR_RED_POS) /** * \ingroup GTGColor * \fn GTG_COLOR_GET_BLUE(gtg_rgb_color_t rgb) * \brief Return the 1-byte value of the blue component of a rgb color. */ static inline uint8_t GTG_COLOR_GET_BLUE(gtg_rgb_color_t rgb) { return (((rgb) & GTG_COLOR_BLUE_MASK) >> GTG_COLOR_BLUE_POS ); } /** * \ingroup GTGColor * \fn GTG_COLOR_GET_GREEN(gtg_rgb_color_t rgb) * \brief Return the 1-byte value of the green component of a rgb color. */ static inline uint8_t GTG_COLOR_GET_GREEN(gtg_rgb_color_t rgb) { return (((rgb) & GTG_COLOR_GREEN_MASK) >> GTG_COLOR_GREEN_POS); } /** * \ingroup GTGColor * \fn GTG_COLOR_GET_RED(gtg_rgb_color_t rgb) * \brief Return the 1-byte value of the red component of a rgb color. */ static inline uint8_t GTG_COLOR_GET_RED(gtg_rgb_color_t rgb) { return (((rgb) & GTG_COLOR_RED_MASK) >> GTG_COLOR_RED_POS ); } /** * \ingroup GTGColor * \fn GTG_COLOR_SET_COLOR(uint8_t r, uint8_t g, uint8_t b) * \brief Return the 4-bytes RGB color from 3 1-byte components. */ static inline gtg_rgb_color_t GTG_COLOR_SET_COLOR(uint8_t r, uint8_t g, uint8_t b) { return ((r << GTG_COLOR_RED_POS) | (g << GTG_COLOR_GREEN_POS) | (b << GTG_COLOR_BLUE_POS)); } /** * \ingroup GTGColor * \var GTG_BLACK * \brief Default black color. (R,G,B) = (0, 0, 0) */ extern gtg_color_t GTG_BLACK; /** * \ingroup GTGColor * \var GTG_RED * \brief Default red color. (R,G,B) = (255, 0, 0) */ extern gtg_color_t GTG_RED; /** * \ingroup GTGColor * \var GTG_GREEN * \brief Default green color. (R,G,B) = (0, 255, 0) */ extern gtg_color_t GTG_GREEN; /** * \ingroup GTGColor * \var GTG_BLUE * \brief Default blue color. (R,G,B) = (0, 0, 255) */ extern gtg_color_t GTG_BLUE; /** * \ingroup GTGColor * \var GTG_WHITE * \brief Default white color. (R,G,B) = (255, 255, 255) */ extern gtg_color_t GTG_WHITE; /** * \ingroup GTGColor * \var GTG_TEAL * \brief Default teal color. (R,G,B) = (0, 255, 255) */ extern gtg_color_t GTG_TEAL; /** * \ingroup GTGColor * \var GTG_DARKGREY * \brief Default dark grey color. (R,G,B) = (85, 85, 85) */ extern gtg_color_t GTG_DARKGREY; /** * \ingroup GTGColor * \var GTG_YELLOW * \brief Default yellow color. (R,G,B) = (255, 255, 0) */ extern gtg_color_t GTG_YELLOW; /** * \ingroup GTGColor * \var GTG_PURPLE * \brief Default purple color. (R,G,B) = (153, 25, 230) */ extern gtg_color_t GTG_PURPLE; /** * \ingroup GTGColor * \var GTG_LIGHTBROWN * \brief Default light brown color. (R,G,B) = (170, 130, 130) */ extern gtg_color_t GTG_LIGHTBROWN; /** * \ingroup GTGColor * \var GTG_LIGHTGREY * \brief Default light grey color. (R,G,B) = (200, 200, 200) */ extern gtg_color_t GTG_LIGHTGREY; /** * \ingroup GTGColor * \var GTG_DARKBLUE * \brief Default dark blue color. (R,G,B) = (0, 0, 80) */ extern gtg_color_t GTG_DARKBLUE; /** * \ingroup GTGColor * \var GTG_PINK * \brief Default pink color. (R,G,B) = (255, 0, 255) */ extern gtg_color_t GTG_PINK; /** * \ingroup GTGColor * \var GTG_DARKPINK * \brief Default dark pink color. (R,G,B) = (180, 80, 180) */ extern gtg_color_t GTG_DARKPINK; /** * \ingroup GTGColor * \var GTG_SEABLUE * \brief Default sea blue color. (R,G,B) = (25, 128, 200) */ extern gtg_color_t GTG_SEABLUE; /** * \ingroup GTGColor * \var GTG_KAKI * \brief Default kaki color. (R,G,B) = (80, 100, 25) */ extern gtg_color_t GTG_KAKI; /** * \ingroup GTGColor * \var GTG_REDBLOOD * \brief Default red blood color. (R,G,B) = (200, 25, 25) */ extern gtg_color_t GTG_REDBLOOD; /** * \ingroup GTGColor * \var GTG_BROWN * \brief Default brown color. (R,G,B) = (100, 25, 25) */ extern gtg_color_t GTG_BROWN; /** * \ingroup GTGColor * \var GTG_GRENAT * \brief Default grenat color. (R,G,B) = (100, 0, 80) */ extern gtg_color_t GTG_GRENAT; /** * \ingroup GTGColor * \var GTG_ORANGE * \brief Default orange color. (R,G,B) = (255, 160, 0) */ extern gtg_color_t GTG_ORANGE; /** * \ingroup GTGColor * \var GTG_MAUVE * \brief Default mauve color. (R,G,B) = (128, 0, 255) */ extern gtg_color_t GTG_MAUVE; /** * \ingroup GTGColor * \var GTG_LIGHTPINK * \brief Default light pink color. (R,G,B) = (255, 128, 255) */ extern gtg_color_t GTG_LIGHTPINK; void gtg_color_init(); void gtg_color_exit(); gtg_color_t gtg_color_create( const char *name, uint8_t r, uint8_t g, uint8_t b); void gtg_color_free(gtg_color_t color); #endif /* _GTGCOLOR_H_ */ eztrace-1.1-7/extlib/gtg/inc/PaxHeaders.7332/GTGList.h0000644000000000000000000000013212544237152017103 xustar0030 mtime=1435582058.543899952 30 atime=1508138875.655912427 30 ctime=1508162367.189859803 eztrace-1.1-7/extlib/gtg/inc/GTGList.h0000644000175000017500000001155412544237152020300 0ustar00trahaytrahay00000000000000#ifndef GTG_LIST_H #define GTG_LIST_H struct gtg_list { struct gtg_list *prev; struct gtg_list *next; }; typedef struct gtg_list* gtg_list_t; /** * \fn GTG_LIST_INIT(ptr) * \brief initialize a list. * \param ptr pointer to the list (gtg_list_t). */ #define GTG_LIST_INIT(ptr) \ do { \ (ptr)->prev = (ptr); \ (ptr)->next = (ptr); \ } while(0) /** * \fn GTG_LIST(name) * \brief declare and initialize a list. * \param name Name of the variable */ #define GTG_LIST(name) \ struct gtg_list name; \ GTG_LIST_INIT(&name) /** * \fn gtg_list_entry(ptr, type, member) * \brief get the structure corresponding to a list entry * \param ptr pointer to the list entry (gtg_list_t) * \param type the type of the struct this is embedded in. * \param member the name of the struct gtg_list member within the struct. */ #define gtg_list_entry(ptr, type, member) \ ((type *)((char *)(ptr) - (char *)(&((type *)0)->member))) /* * Insert a new entry between two known consecutive entries. * * This is only for internal list manipulation where we know * the prev/next entries already! */ static inline void __gtg_list_add(gtg_list_t lnew, gtg_list_t prev, gtg_list_t next) { next->prev = lnew; lnew->next = next; lnew->prev = prev; prev->next = lnew; } /** * \fn void gtg_list_add(gtg_list_t lnew, gtg_list_t head) * \brief Insert a new entry after the specified head. * \param lnew new entry to be added * \param head list head to add it after */ static inline void gtg_list_add(gtg_list_t lnew, gtg_list_t head) { __gtg_list_add(lnew, head, head->next); } /** * \fn void gtg_list_add_tail(gtg_list_t lnew, gtg_list_t head) * \brief Insert a new entry before the specified head (ie. at the tail of the list). * \param lnew new entry to be added * \param head list head to add it after */ static inline void gtg_list_add_tail(gtg_list_t lnew, gtg_list_t head) { __gtg_list_add(lnew, head->prev, head); } /** * Delete a list entry by making the prev/next entries * point to each other. * * This is only for internal list manipulation where we know * the prev/next entries already! */ static inline void __gtg_list_del(gtg_list_t prev, gtg_list_t next) { next->prev = prev; prev->next = next; } /** * \fn void gtg_list_del(gtg_list_t entry) * \brief delete an entry from its list and reinitialize it. * \param entry the element to delete from the list. */ static inline void gtg_list_del(gtg_list_t entry) { __gtg_list_del(entry->prev, entry->next); GTG_LIST_INIT(entry); } /** * \fn gtg_list_for_each(gtg_list_t pos, gtg_list_t head) * \brief iterate over a list * \param pos the gtg_list_t to use as a loop counter. * \param head the head for the list. */ #define gtg_list_for_each(pos, head) \ for (pos = (head)->next; pos != (head); pos = pos->next) /** * \fn gtg_list_for_each_reverse(gtg_list_t pos, gtg_list_t head) * \brief iterate over a list backwards * \param pos the gtg_list_t to use as a loop counter. * \param head the head for the list. */ #define gtg_list_for_each_reverse(pos, head) \ for (pos = (head)->prev; pos != (head); pos = pos->prev) /** * \fn gtg_list_for_each_safe(gtg_list_t pos, gtg_list_t n, gtg_list_t head) * \brief iterate over a list safe against removal of list entry * \param pos the gtg_list_t to use as a loop counter. * \param n another gtg_list_t to use as temporary storage * \param head the head for the list. */ #define gtg_list_for_each_safe(pos, n, head) \ for (pos = (head)->next, n = pos->next; pos != (head); \ pos = n, n = pos->next) /** * gtg_list_for_each_entry(pos, head, member) * \brief iterate over list of given type * \param pos the type * to use as a loop counter. * \param head the head for the list. * \param member the name of the struct gtg_list member within the struct. */ #define gtg_list_for_each_entry(pos, head, member) \ for (pos = gtg_list_entry((head)->next, typeof(*pos), member); \ &pos->member != (head); \ pos = gtg_list_entry(pos->member.next, typeof(*pos), member)) /** * gtg_list_for_each_entry_safe(pos, n, head, member) * \brief iterate over list of given type safe against removal of list entry * \param pos the type * to use as a loop counter. * \param n another type * to use as temporary storage * \param head the head for the list. * \param member the name of the struct gtg_list member within the struct. */ #define gtg_list_for_each_entry_safe(pos, n, head, member) \ for (pos = gtg_list_entry((head)->next, typeof(*pos), member), \ n = gtg_list_entry(pos->member.next, typeof(*pos), member); \ &pos->member != (head); \ pos = n, n = gtg_list_entry(n->member.next, typeof(*n), member)) static inline int gtg_list_size(gtg_list_t l) { int res = 0; gtg_list_t ptr = NULL; gtg_list_for_each(ptr, l) res++; return res; } #endif /* GTG_LIST_H */ eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/config.sub0000644000000000000000000000013213171135230016653 xustar0030 mtime=1508162200.000398658 30 atime=1508162274.514045298 30 ctime=1508162365.969753301 eztrace-1.1-7/extlib/gtg/config.sub0000755000175000017500000010676313171135230020062 0ustar00trahaytrahay00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2016 Free Software Foundation, Inc. timestamp='2016-11-04' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ kopensolaris*-gnu* | cloudabi*-eabi* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | e2k | epiphany \ | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pru \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pru-* \ | pyramid-* \ | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; asmjs) basic_machine=asmjs-unknown ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; e500v[12]) basic_machine=powerpc-unknown os=$os"spe" ;; e500v[12]-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` os=$os"spe" ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ | -onefs* | -tirtos* | -phoenix* | -fuchsia*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -ios) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/AUTHORS0000644000000000000000000000013212544237152015754 xustar0030 mtime=1435582058.511899952 30 atime=1507797543.922892039 30 ctime=1508162365.961752604 eztrace-1.1-7/extlib/gtg/AUTHORS0000644000175000017500000000027212544237152017144 0ustar00trahaytrahay00000000000000 Francois Rue Francois Trahay Johnny Jazeix Kevin Coulomb Mathieu Faverge Olivier Lagrasse eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/INSTALL0000644000000000000000000000013013171135230015722 xustar0029 mtime=1508162200.00839922 29 atime=1508162200.00839922 30 ctime=1508162365.965752952 eztrace-1.1-7/extlib/gtg/INSTALL0000644000175000017500000003661413171135230017125 0ustar00trahaytrahay00000000000000Installation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell command './configure && make && make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the 'README' file for instructions specific to this package. Some packages provide this 'INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The 'configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a 'Makefile' in each directory of the package. It may also create one or more '.h' files containing system-dependent definitions. Finally, it creates a shell script 'config.status' that you can run in the future to recreate the current configuration, and a file 'config.log' containing compiler output (useful mainly for debugging 'configure'). It can also use an optional file (typically called 'config.cache' and enabled with '--cache-file=config.cache' or simply '-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how 'configure' could check whether to do them, and mail diffs or instructions to the address given in the 'README' so they can be considered for the next release. If you are using the cache, and at some point 'config.cache' contains results you don't want to keep, you may remove or edit it. The file 'configure.ac' (or 'configure.in') is used to create 'configure' by a program called 'autoconf'. You need 'configure.ac' if you want to change it or regenerate 'configure' using a newer version of 'autoconf'. The simplest way to compile this package is: 1. 'cd' to the directory containing the package's source code and type './configure' to configure the package for your system. Running 'configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type 'make' to compile the package. 3. Optionally, type 'make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type 'make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the 'make install' phase executed with root privileges. 5. Optionally, type 'make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior 'make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing 'make clean'. To also remove the files that 'configure' created (so you can compile the package for a different kind of computer), type 'make distclean'. There is also a 'make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type 'make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide 'make distcheck', which can by used by developers to test that all other targets like 'make install' and 'make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the 'configure' script does not know about. Run './configure --help' for details on some of the pertinent environment variables. You can give 'configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU 'make'. 'cd' to the directory where you want the object files and executables to go and run the 'configure' script. 'configure' automatically checks for the source code in the directory that 'configure' is in and in '..'. This is known as a "VPATH" build. With a non-GNU 'make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use 'make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple '-arch' options to the compiler but only a single '-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the 'lipo' tool if you have problems. Installation Names ================== By default, 'make install' installs the package's commands under '/usr/local/bin', include files under '/usr/local/include', etc. You can specify an installation prefix other than '/usr/local' by giving 'configure' the option '--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option '--exec-prefix=PREFIX' to 'configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like '--bindir=DIR' to specify different values for particular kinds of files. Run 'configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of '${prefix}', so that specifying just '--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to 'configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the 'make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, 'make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of '${prefix}'. Any directories that were specified during 'configure', but not in terms of '${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the 'DESTDIR' variable. For example, 'make install DESTDIR=/alternate/directory' will prepend '/alternate/directory' before all installation names. The approach of 'DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of '${prefix}' at 'configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving 'configure' the option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'. Some packages pay attention to '--enable-FEATURE' options to 'configure', where FEATURE indicates an optional part of the package. They may also pay attention to '--with-PACKAGE' options, where PACKAGE is something like 'gnu-as' or 'x' (for the X Window System). The 'README' should mention any '--enable-' and '--with-' options that the package recognizes. For packages that use the X Window System, 'configure' can usually find the X include and library files automatically, but if it doesn't, you can use the 'configure' options '--x-includes=DIR' and '--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of 'make' will be. For these packages, running './configure --enable-silent-rules' sets the default to minimal output, which can be overridden with 'make V=1'; while running './configure --disable-silent-rules' sets the default to verbose, which can be overridden with 'make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX 'make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as 'configure' are involved. Use GNU 'make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its '' header file. The option '-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put '/usr/ucb' early in your 'PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in '/usr/bin'. So, if you need '/usr/ucb' in your 'PATH', put it _after_ '/usr/bin'. On Haiku, software installed for all users goes in '/boot/common', not '/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features 'configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, 'configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the '--build=TYPE' option. TYPE can either be a short name for the system type, such as 'sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file 'config.sub' for the possible values of each field. If 'config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option '--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with '--host=TYPE'. Sharing Defaults ================ If you want to set default values for 'configure' scripts to share, you can create a site shell script called 'config.site' that gives default values for variables like 'CC', 'cache_file', and 'prefix'. 'configure' looks for 'PREFIX/share/config.site' if it exists, then 'PREFIX/etc/config.site' if it exists. Or, you can set the 'CONFIG_SITE' environment variable to the location of the site script. A warning: not all 'configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to 'configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the 'configure' command line, using 'VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified 'gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash 'configure' Invocation ====================== 'configure' recognizes the following options to control how it operates. '--help' '-h' Print a summary of all of the options to 'configure', and exit. '--help=short' '--help=recursive' Print a summary of the options unique to this package's 'configure', and exit. The 'short' variant lists options used only in the top level, while the 'recursive' variant lists options also present in any nested packages. '--version' '-V' Print the version of Autoconf used to generate the 'configure' script, and exit. '--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally 'config.cache'. FILE defaults to '/dev/null' to disable caching. '--config-cache' '-C' Alias for '--cache-file=config.cache'. '--quiet' '--silent' '-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to '/dev/null' (any error messages will still be shown). '--srcdir=DIR' Look for the package's source code in directory DIR. Usually 'configure' can determine that directory automatically. '--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. '--no-create' '-n' Run the configure checks, but stop before creating any output files. 'configure' also accepts some other, not widely useful, options. Run 'configure --help' for more details. eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212544237152016740 xustar0030 mtime=1435582058.511899952 30 atime=1508162189.431669101 30 ctime=1508162365.953751905 eztrace-1.1-7/extlib/gtg/Makefile.am0000644000175000017500000000053112544237152020126 0ustar00trahaytrahay00000000000000SUBDIRS = extlib/ inc/ src/ if WITHDOC SUBDIRS += doc endif #WITHDOC pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = gtg.pc EXTRA_DIST = exm/gtg_color.c \ exm/Makefile \ exm/otf_example.c \ exm/paje_example2.c \ exm/paje_example.c \ exm/paje_example.F90 \ exm/vite_example.c eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/depcomp0000644000000000000000000000013213171135230016245 xustar0030 mtime=1508162200.096405391 30 atime=1508162274.418037569 30 ctime=1508162367.213861899 eztrace-1.1-7/extlib/gtg/depcomp0000755000175000017500000005601713171135230017450 0ustar00trahaytrahay00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2016-01-11.22; # UTC # Copyright (C) 1999-2017 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135230016740 xustar0030 mtime=1508162200.028400621 30 atime=1508162281.066574993 30 ctime=1508162365.957752255 eztrace-1.1-7/extlib/gtg/Makefile.in0000644000175000017500000006574013171135230020143 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @WITHDOC_TRUE@am__append_1 = doc subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = gtg.pc CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkgconfigdir)" DATA = $(pkgconfig_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = extlib/ inc/ src/ doc am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/gtg.pc.in AUTHORS \ COPYING ChangeLog INSTALL NEWS README compile config.guess \ config.sub install-sh ltmain.sh missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ GREP = @GREP@ HAVE_DOXYGEN = @HAVE_DOXYGEN@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPIDIR = @MPIDIR@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTFDIR = @OTFDIR@ OTF_INC = @OTF_INC@ OTF_LIB = @OTF_LIB@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = extlib/ inc/ src/ $(am__append_1) pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = gtg.pc EXTRA_DIST = exm/gtg_color.c \ exm/Makefile \ exm/otf_example.c \ exm/paje_example2.c \ exm/paje_example.c \ exm/paje_example.F90 \ exm/vite_example.c all: all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): gtg.pc: $(top_builddir)/config.status $(srcdir)/gtg.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-pkgconfigDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-pkgconfigDATA .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-libtool cscope cscopelist-am ctags ctags-am dist \ dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ dist-xz dist-zip distcheck distclean distclean-generic \ distclean-libtool distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgconfigDATA install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-pkgconfigDATA .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/configure0000644000000000000000000000013213171135227016605 xustar0030 mtime=1508162199.532365921 30 atime=1508162274.058008584 30 ctime=1508162365.953751905 eztrace-1.1-7/extlib/gtg/configure0000755000175000017500000214653213171135227020014 0ustar00trahaytrahay00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for GTG 0.2-2. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: gtg-devel@lists.gforge.inria.fr about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='GTG' PACKAGE_TARNAME='gtg' PACKAGE_VERSION='0.2-2' PACKAGE_STRING='GTG 0.2-2' PACKAGE_BUGREPORT='gtg-devel@lists.gforge.inria.fr' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" enable_option_checking=no ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS subdirs WITHDOC_FALSE WITHDOC_TRUE USE_DOXYGEN_FALSE USE_DOXYGEN_TRUE USE_PDFLATEX_FALSE USE_PDFLATEX_TRUE PDFLATEX HAVE_DOXYGEN DONT_USE_INTERNAL_OTF_FALSE DONT_USE_INTERNAL_OTF_TRUE USE_OTF_FALSE USE_OTF_TRUE OTF_LIB OTF_INC OTFDIR USE_MPI_FALSE USE_MPI_TRUE USE_MPIDIR_FROM_USER MPIDIR FORTRAN_FALSE FORTRAN_TRUE HAVE_LIBZ_FALSE HAVE_LIBZ_TRUE CPP LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBTOOL ac_ct_F77 FFLAGS F77 am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock with_doc with_libz with_fortran with_mpi with_otf with_otf_include with_otf_lib ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS F77 FFLAGS LT_SYS_LIBRARY_PATH CPP PDFLATEX' ac_subdirs_all='extlib/otf' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures GTG 0.2-2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/gtg] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of GTG 0.2-2:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-doc Generate documentation --with-libz= Enable libZ --with-fortran= Enable fortran --with-mpi= Use a specific MPI installation --with-otf= Use a specific OTF installation --with-otf-include= Use a specific OTF header directory --with-otf-lib= Use a specific libotf.so directory Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory F77 Fortran 77 compiler command FFLAGS Fortran 77 compiler flags LT_SYS_LIBRARY_PATH User-defined run-time library search path. CPP C preprocessor PDFLATEX Location of the pdflatex program (required for building the hwloc doxygen documentation) Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF GTG configure 0.2-2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_f77_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_f77_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_f77_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_f77_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_f77_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_f77_try_link # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ---------------------------------------------- ## ## Report this to gtg-devel@lists.gforge.inria.fr ## ## ---------------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by GTG $as_me 0.2-2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.15' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='gtg' VERSION='0.2-2' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # Checks for programs. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_F77+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$F77"; then ac_cv_prog_F77="$F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_F77="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi F77=$ac_cv_prog_F77 if test -n "$F77"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $F77" >&5 $as_echo "$F77" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$F77" && break done fi if test -z "$F77"; then ac_ct_F77=$F77 for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_F77+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_F77"; then ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_F77="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_F77=$ac_cv_prog_ac_ct_F77 if test -n "$ac_ct_F77"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_F77" >&5 $as_echo "$ac_ct_F77" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_F77" && break done if test "x$ac_ct_F77" = x; then F77="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac F77=$ac_ct_F77 fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done rm -f a.out # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran 77 compiler" >&5 $as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; } if ${ac_cv_f77_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me #endif end _ACEOF if ac_fn_f77_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_f77_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_compiler_gnu" >&5 $as_echo "$ac_cv_f77_compiler_gnu" >&6; } ac_ext=$ac_save_ext ac_test_FFLAGS=${FFLAGS+set} ac_save_FFLAGS=$FFLAGS FFLAGS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $F77 accepts -g" >&5 $as_echo_n "checking whether $F77 accepts -g... " >&6; } if ${ac_cv_prog_f77_g+:} false; then : $as_echo_n "(cached) " >&6 else FFLAGS=-g cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_f77_try_compile "$LINENO"; then : ac_cv_prog_f77_g=yes else ac_cv_prog_f77_g=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_g" >&5 $as_echo "$ac_cv_prog_f77_g" >&6; } if test "$ac_test_FFLAGS" = set; then FFLAGS=$ac_save_FFLAGS elif test $ac_cv_prog_f77_g = yes; then if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-g -O2" else FFLAGS="-g" fi else if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-O2" else FFLAGS= fi fi if test $ac_compiler_gnu = yes; then G77=yes else G77= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.6' macro_revision='2.4.6' ltmain=$ac_aux_dir/ltmain.sh # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # 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'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n "$lt_cv_sys_max_cmd_len"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # 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. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac 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'" # 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'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported 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))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 $as_echo "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 $as_echo_n "checking for a working dd... " >&6; } if ${ac_cv_path_lt_DD+:} false; then : $as_echo_n "(cached) " >&6 else printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in dd; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue 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 $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 $as_echo "$ac_cv_path_lt_DD" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 $as_echo_n "checking how to truncate binary pipes... " >&6; } if ${lt_cv_truncate_bin+:} false; then : $as_echo_n "(cached) " >&6 else 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" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 $as_echo "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; 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-%%"` } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || 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. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; 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 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then 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*| \ 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. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) 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" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; 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 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # 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 lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[012][,.]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; 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' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # 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$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else pic_mode=default fi # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac else enable_fast_install=yes fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 $as_echo_n "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. if test "${with_aix_soname+set}" = set; then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else if ${lt_cv_with_aix_soname+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 $as_echo "$with_aix_soname" >&6; } 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 # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o func_cc_basename $compiler cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/${ac_tool_prefix}file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-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). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test no = "$hard_links"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $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' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$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' archive_expsym_cmds='$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' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; 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" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; 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 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to 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. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`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' 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 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 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 exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='$wl-f,' 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. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; 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 # 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' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; 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 hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' $wl-bernotok' allow_undefined_flag=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$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. archive_expsym_cmds="$archive_expsym_cmds"'~$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 archive_expsym_cmds="$archive_expsym_cmds"'~$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 archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $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=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi link_all_deplibs=no else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' else archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$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' archive_expsym_cmds='$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' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='$wl-z,text' allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...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 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 test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # 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 # 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 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)' # 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 shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # 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 ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; 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' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; 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 ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # 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' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; 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. hardcode_libdir_flag_spec='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # 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. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no 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' 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' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # 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=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; 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 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 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # 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, )" && test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; 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_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen=shl_load else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen=dlopen else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi fi fi fi fi fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report what library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && 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 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 fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi archive_cmds_need_lc_F77=no allow_undefined_flag_F77= always_export_symbols_F77=no archive_expsym_cmds_F77= export_dynamic_flag_spec_F77= hardcode_direct_F77=no hardcode_direct_absolute_F77=no hardcode_libdir_flag_spec_F77= hardcode_libdir_separator_F77= hardcode_minus_L_F77=no hardcode_automatic_F77=no inherit_rpath_F77=no module_cmds_F77= module_expsym_cmds_F77= link_all_deplibs_F77=unknown old_archive_cmds_F77=$old_archive_cmds reload_flag_F77=$reload_flag reload_cmds_F77=$reload_cmds no_undefined_flag_F77= whole_archive_flag_spec_F77= enable_shared_with_static_runtimes_F77=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o objext_F77=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_F77"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC compiler_F77=$CC func_cc_basename $compiler cc_basename=$func_cc_basename_result GCC=$G77 if test -n "$compiler"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && 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 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 fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } GCC_F77=$G77 LD_F77=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... lt_prog_compiler_wl_F77= lt_prog_compiler_pic_F77= lt_prog_compiler_static_F77= if test yes = "$GCC"; then lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_static_F77='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' fi lt_prog_compiler_pic_F77='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_F77='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_F77='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_F77='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_F77='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_F77= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_F77=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_F77='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_F77=-Kconform_pic fi ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl_F77='-Xlinker ' if test -n "$lt_prog_compiler_pic_F77"; then lt_prog_compiler_pic_F77="-Xcompiler $lt_prog_compiler_pic_F77" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_F77='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' else lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_F77='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl_F77='-Wl,-Wl,,' lt_prog_compiler_pic_F77='-PIC' lt_prog_compiler_static_F77='-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). lt_prog_compiler_pic_F77='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_F77='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_F77='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_F77='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_F77='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_F77='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-fPIC' lt_prog_compiler_static_F77='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='--shared' lt_prog_compiler_static_F77='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl_F77='-Wl,-Wl,,' lt_prog_compiler_pic_F77='-PIC' lt_prog_compiler_static_F77='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-fPIC' lt_prog_compiler_static_F77='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-fpic' lt_prog_compiler_static_F77='-Bstatic' ;; ccc*) lt_prog_compiler_wl_F77='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-qpic' lt_prog_compiler_static_F77='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' lt_prog_compiler_wl_F77='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' lt_prog_compiler_wl_F77='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' lt_prog_compiler_wl_F77='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-fPIC' lt_prog_compiler_static_F77='-static' ;; *Portland\ Group*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-fpic' lt_prog_compiler_static_F77='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_F77='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_F77='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; rdos*) lt_prog_compiler_static_F77='-non_shared' ;; solaris*) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl_F77='-Qoption ld ';; *) lt_prog_compiler_wl_F77='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl_F77='-Qoption ld ' lt_prog_compiler_pic_F77='-PIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_F77='-Kconform_pic' lt_prog_compiler_static_F77='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; unicos*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_can_build_shared_F77=no ;; uts4*) lt_prog_compiler_pic_F77='-pic' lt_prog_compiler_static_F77='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_F77=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_F77= ;; *) lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_F77+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_F77=$lt_prog_compiler_pic_F77 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_F77" >&5 $as_echo "$lt_cv_prog_compiler_pic_F77" >&6; } lt_prog_compiler_pic_F77=$lt_cv_prog_compiler_pic_F77 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_F77"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... " >&6; } if ${lt_cv_prog_compiler_pic_works_F77+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_F77=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_F77" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_F77=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_F77" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_F77" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works_F77"; then case $lt_prog_compiler_pic_F77 in "" | " "*) ;; *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; esac else lt_prog_compiler_pic_F77= lt_prog_compiler_can_build_shared_F77=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_F77+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_F77=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_F77=yes fi else lt_cv_prog_compiler_static_works_F77=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_F77" >&5 $as_echo "$lt_cv_prog_compiler_static_works_F77" >&6; } if test yes = "$lt_cv_prog_compiler_static_works_F77"; then : else lt_prog_compiler_static_F77= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_F77+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_F77=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_F77=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_F77" >&5 $as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_F77+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_F77=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_F77=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_F77" >&5 $as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o_F77" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test no = "$hard_links"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag_F77= always_export_symbols_F77=no archive_cmds_F77= archive_expsym_cmds_F77= compiler_needs_object_F77=no enable_shared_with_static_runtimes_F77=no export_dynamic_flag_spec_F77= export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic_F77=no hardcode_direct_F77=no hardcode_direct_absolute_F77=no hardcode_libdir_flag_spec_F77= hardcode_libdir_separator_F77= hardcode_minus_L_F77=no hardcode_shlibpath_var_F77=unsupported inherit_rpath_F77=no link_all_deplibs_F77=unknown module_cmds_F77= module_expsym_cmds_F77= old_archive_from_new_cmds_F77= old_archive_from_expsyms_cmds_F77= thread_safe_flag_spec_F77= whole_archive_flag_spec_F77= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_F77= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms_F77='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs_F77=no ;; esac ld_shlibs_F77=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_F77='$wl-rpath $wl$libdir' export_dynamic_flag_spec_F77='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_F77=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec_F77= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs_F77=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_F77='' ;; m68k) archive_cmds_F77='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_F77=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs_F77=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_F77='-L$libdir' export_dynamic_flag_spec_F77='$wl--export-all-symbols' allow_undefined_flag_F77=unsupported always_export_symbols_F77=no enable_shared_with_static_runtimes_F77=yes export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_F77='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_F77='$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... archive_expsym_cmds_F77='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $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' else ld_shlibs_F77=no fi ;; haiku*) archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs_F77=yes ;; os2*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes allow_undefined_flag_F77=unsupported shrext_cmds=.dll archive_cmds_F77='$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' archive_expsym_cmds_F77='$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' old_archive_From_new_cmds_F77='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes_F77=yes ;; interix[3-9]*) hardcode_direct_F77=no hardcode_shlibpath_var_F77=no hardcode_libdir_flag_spec_F77='$wl-rpath,$libdir' export_dynamic_flag_spec_F77='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_F77='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 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" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec_F77='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec_F77='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec_F77= 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 whole_archive_flag_spec_F77='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_F77=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec_F77='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_F77=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_F77='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) export_dynamic_flag_spec_F77='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec_F77='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec_F77='$wl-rpath $wl$libdir' archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_F77='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs_F77=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs_F77=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs_F77=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec_F77='$wl-rpath $wl$libdir' archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac ;; sunos4*) archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac if test no = "$ld_shlibs_F77"; then runpath_var= hardcode_libdir_flag_spec_F77= export_dynamic_flag_spec_F77= whole_archive_flag_spec_F77= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_F77=unsupported always_export_symbols_F77=yes archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_F77=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_F77=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to 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. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_F77='$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' else export_symbols_cmds_F77='`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' 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 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 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 exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_F77='' hardcode_direct_F77=yes hardcode_direct_absolute_F77=yes hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes file_list_spec_F77='$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. hardcode_direct_F77=no hardcode_direct_absolute_F77=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_F77=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_F77=yes hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_libdir_separator_F77= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; 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 # 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' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec_F77='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_F77=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_F77='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__F77+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_f77_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__F77=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__F77"; then lt_cv_aix_libpath__F77=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__F77"; then lt_cv_aix_libpath__F77=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__F77 fi hardcode_libdir_flag_spec_F77='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_F77='$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 else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec_F77='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag_F77="-z nodefs" archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__F77+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_f77_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__F77=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__F77"; then lt_cv_aix_libpath__F77=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__F77"; then lt_cv_aix_libpath__F77=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__F77 fi hardcode_libdir_flag_spec_F77='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_F77=' $wl-bernotok' allow_undefined_flag_F77=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_F77='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_F77='$convenience' fi archive_cmds_need_lc_F77=yes archive_expsym_cmds_F77='$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. archive_expsym_cmds_F77="$archive_expsym_cmds_F77"'~$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 archive_expsym_cmds_F77="$archive_expsym_cmds_F77"'~$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 archive_expsym_cmds_F77="$archive_expsym_cmds_F77"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds_F77="$archive_expsym_cmds_F77"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_F77='' ;; m68k) archive_cmds_F77='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec_F77=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec_F77=' ' allow_undefined_flag_F77=unsupported always_export_symbols_F77=yes file_list_spec_F77='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds_F77='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds_F77='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $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=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, F77)='true' enable_shared_with_static_runtimes_F77=yes exclude_expsyms_F77='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds_F77='chmod 644 $oldlib' postlink_cmds_F77='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec_F77=' ' allow_undefined_flag_F77=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds_F77='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes_F77=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_F77=no hardcode_direct_F77=no hardcode_automatic_F77=yes hardcode_shlibpath_var_F77=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec_F77='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' compiler_needs_object_F77=yes else whole_archive_flag_spec_F77='' fi link_all_deplibs_F77=yes allow_undefined_flag_F77=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds_F77="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds_F77="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds_F77="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs_F77=no fi ;; dgux*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds_F77='$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' else archive_cmds_F77='$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' fi hardcode_libdir_flag_spec_F77='$wl+b $wl$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes export_dynamic_flag_spec_F77='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds_F77='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec_F77='$wl+b $wl$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes hardcode_direct_absolute_F77=yes export_dynamic_flag_spec_F77='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds_F77='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_F77='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds_F77='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_F77='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$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 hardcode_libdir_flag_spec_F77='$wl+b $wl$libdir' hardcode_libdir_separator_F77=: case $host_cpu in hppa*64*|ia64*) hardcode_direct_F77=no hardcode_shlibpath_var_F77=no ;; *) hardcode_direct_F77=yes hardcode_direct_absolute_F77=yes export_dynamic_flag_spec_F77='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat > conftest.$ac_ext <<_ACEOF subroutine foo end _ACEOF if ac_fn_f77_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds_F77='$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 link_all_deplibs_F77=no else archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc_F77='no' hardcode_libdir_flag_spec_F77='$wl-rpath $wl$libdir' hardcode_libdir_separator_F77=: inherit_rpath_F77=yes link_all_deplibs_F77=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs_F77=yes archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; newsos6) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_libdir_flag_spec_F77='$wl-rpath $wl$libdir' hardcode_libdir_separator_F77=: hardcode_shlibpath_var_F77=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no hardcode_direct_absolute_F77=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_F77='$wl-rpath,$libdir' export_dynamic_flag_spec_F77='$wl-E' else archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='$wl-rpath,$libdir' fi else ld_shlibs_F77=no fi ;; os2*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes allow_undefined_flag_F77=unsupported shrext_cmds=.dll archive_cmds_F77='$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' archive_expsym_cmds_F77='$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' old_archive_From_new_cmds_F77='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes_F77=yes ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag_F77=' $wl-expect_unresolved $wl\*' archive_cmds_F77='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc_F77='no' hardcode_libdir_flag_spec_F77='$wl-rpath $wl$libdir' hardcode_libdir_separator_F77=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag_F77=' $wl-expect_unresolved $wl\*' archive_cmds_F77='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec_F77='$wl-rpath $wl$libdir' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_F77='-rpath $libdir' fi archive_cmds_need_lc_F77='no' hardcode_libdir_separator_F77=: ;; solaris*) no_undefined_flag_F77=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds_F77='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds_F77='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds_F77='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_shlibpath_var_F77=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec_F77='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs_F77=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_F77='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; sysv4) case $host_vendor in sni) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_F77='$CC -r -o $output$reload_objs' hardcode_direct_F77=no ;; motorola) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_F77=no ;; sysv4.3*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no export_dynamic_flag_spec_F77='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_F77=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_F77='$wl-z,text' archive_cmds_need_lc_F77=no hardcode_shlibpath_var_F77=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds_F77='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$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 # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_F77='$wl-z,text' allow_undefined_flag_F77='$wl-z,nodefs' archive_cmds_need_lc_F77=no hardcode_shlibpath_var_F77=no hardcode_libdir_flag_spec_F77='$wl-R,$libdir' hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes export_dynamic_flag_spec_F77='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds_F77='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; *) ld_shlibs_F77=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec_F77='$wl-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_F77" >&5 $as_echo "$ld_shlibs_F77" >&6; } test no = "$ld_shlibs_F77" && can_build_shared=no with_gnu_ld_F77=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_F77" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_F77=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds_F77 in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_F77+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_F77 pic_flag=$lt_prog_compiler_pic_F77 compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_F77 allow_undefined_flag_F77= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_F77 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_F77 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_F77=no else lt_cv_archive_cmds_need_lc_F77=yes fi allow_undefined_flag_F77=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_F77" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_F77" >&6; } archive_cmds_need_lc_F77=$lt_cv_archive_cmds_need_lc_F77 ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # 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 # 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 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)' # 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 shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; 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' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; 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' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; 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 ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # 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' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; 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. hardcode_libdir_flag_spec_F77='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_F77\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_F77\"" cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_f77_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # 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. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no 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' 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' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # 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=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; 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 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 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_F77= if test -n "$hardcode_libdir_flag_spec_F77" || test -n "$runpath_var_F77" || test yes = "$hardcode_automatic_F77"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct_F77" && # 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, F77)" && test no != "$hardcode_minus_L_F77"; then # Linking always hardcodes the temporary library directory. hardcode_action_F77=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_F77=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_F77=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_F77" >&5 $as_echo "$hardcode_action_F77" >&6; } if test relink = "$hardcode_action_F77" || test yes = "$inherit_rpath_F77"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_F77" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_commands="$ac_config_commands libtool" # Only expand once: # Correct install paths if test x"$prefix" = x -o x"$prefix" = "xNONE"; then : prefix="/usr/local" fi if test x"$exec_prefix" = x -o x"$exec_prefix" = "xNONE"; then : exec_prefix="\${prefix}" fi if test "$docdir" = "\${datarootdir}/doc/\${PACKAGE_TARNAME}"; then : docdir="\${datarootdir}/doc" fi # Checks for header files. for ac_header in stdio.h string.h stdlib.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in getline do : ac_fn_c_check_func "$LINENO" "getline" "ac_cv_func_getline" if test "x$ac_cv_func_getline" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GETLINE 1 _ACEOF have_getline=yes fi done if test "x$have_getline" = xyes ; then CFLAGS="${CFLAGS} -DHAVE_GETLINE" fi build_doc=no # Check whether --with-doc was given. if test "${with_doc+set}" = set; then : withval=$with_doc; if test x$withval != xno ; then build_doc=yes fi else build_doc=no fi if test "x$build_doc" = "xyes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: Documentation will be generated" >&5 $as_echo "Documentation will be generated" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: Documentation will not be generated" >&5 $as_echo "Documentation will not be generated" >&6; } fi use_libz=yes # Check whether --with-libz was given. if test "${with_libz+set}" = set; then : withval=$with_libz; if test x$withval != xno; then use_libz=yes else use_libz=no fi fi if test $use_libz = yes ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for deflate in -lz" >&5 $as_echo_n "checking for deflate in -lz... " >&6; } if ${ac_cv_lib_z_deflate+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char deflate (); int main () { return deflate (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_z_deflate=yes else ac_cv_lib_z_deflate=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_deflate" >&5 $as_echo "$ac_cv_lib_z_deflate" >&6; } if test "x$ac_cv_lib_z_deflate" = xyes; then : have_libz=yes fi fi if test "x$have_libz" = xyes; then HAVE_LIBZ_TRUE= HAVE_LIBZ_FALSE='#' else HAVE_LIBZ_TRUE='#' HAVE_LIBZ_FALSE= fi # crappy hack: of the macros AC_PROG_{CC,CXX,F77,FC}, only the # first expanded one will check for object file extension etc, # and fail if that doesn't work. ### No fortran by default. # use --with-fortran to build fortran interface use_fortran=yes # Check whether --with-fortran was given. if test "${with_fortran+set}" = set; then : withval=$with_fortran; if test x$withval != xno; then use_fortran=yes else use_fortran=no fi fi if test $use_fortran = yes ; then if test x$F77 = x; then as_fn_error $? "A Fortran compiler is required" "$LINENO" 5 fi fi if test "x$use_fortran" = xyes; then FORTRAN_TRUE= FORTRAN_FALSE='#' else FORTRAN_TRUE='#' FORTRAN_FALSE= fi # MPI stuff use_mpi=yes # Check whether --with-mpi was given. if test "${with_mpi+set}" = set; then : withval=$with_mpi; if test x$withval != xno; then if test x$withval = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } use_mpi_from_system=yes else # use specified path use_mpi_from_system=no mpidir=$withval { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes using $mpidir" >&5 $as_echo "yes using $mpidir" >&6; } MPIDIR=$mpidir fi else # either --without-mpi or --with-mpi=no is set use_mpi=no fi fi if test $use_mpi = yes ; then USE_MPIDIR_FROM_USER=$use_mpi_from_system if test x$use_mpi_from_system = xno; then CPPFLAGS="${CPPFLAGS} -I$mpidir/include " LDFLAGS="${LDFLAGS} -L$mpidir/lib " fi # MPI header ac_fn_c_check_header_mongrel "$LINENO" "mpi.h" "ac_cv_header_mpi_h" "$ac_includes_default" if test "x$ac_cv_header_mpi_h" = xyes; then : enable_mpi=yes fi else enable_mpi=no fi if test "x$enable_mpi" = xyes; then USE_MPI_TRUE= USE_MPI_FALSE='#' else USE_MPI_TRUE='#' USE_MPI_FALSE= fi # OTF stuff use_internal_otf=yes otf_asked=no use_otf=yes # Check whether --with-otf was given. if test "${with_otf+set}" = set; then : withval=$with_otf; if test x$withval != xno; then otf_asked=yes if test x$withval = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } use_internal_otf=yes else # use specified path use_internal_otf=no otfdir=$withval { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes using $otfdir" >&5 $as_echo "yes using $otfdir" >&6; } OTFDIR=$otfdir OTF_INC=$otfdir/include OTF_LIB=$otfdir/lib fi else # either --without-otf or --with-otf=no is set use_internal_otf=no use_otf=no fi fi # Check whether --with-otf-include was given. if test "${with_otf_include+set}" = set; then : withval=$with_otf_include; if test x$withval != xno; then otf_asked=yes if test x$withval = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } use_internal_otf=yes else # use specified path use_internal_otf=no otf_inc_dir=$withval { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes using $otf_inc_dir" >&5 $as_echo "yes using $otf_inc_dir" >&6; } OTF_INC=$otf_inc_dir OTF_INC=$otf_inc_dir fi fi fi # Check whether --with-otf-lib was given. if test "${with_otf_lib+set}" = set; then : withval=$with_otf_lib; if test x$withval != xno; then otf_asked=yes if test x$withval = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } use_internal_otf=yes else # use specified path use_internal_otf=no otf_lib_dir=$withval { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes using $otf_lib_dir" >&5 $as_echo "yes using $otf_lib_dir" >&6; } OTF_LIB=$otf_lib_dir OTF_LIB=$otf_lib_dir fi fi fi if test $use_otf = yes ; then enable_otf=yes if test x$use_internal_otf = xno; then CPPFLAGS="${CPPFLAGS} -I$OTF_INC/" LDFLAGS="${LDFLAGS} -L$OTF_LIB" # Check for OTF header ac_fn_c_check_header_mongrel "$LINENO" "otf.h" "ac_cv_header_otf_h" "$ac_includes_default" if test "x$ac_cv_header_otf_h" = xyes; then : enable_otf=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find libOTF." >&5 $as_echo "$as_me: WARNING: Cannot find libOTF." >&2;} fi if test $enable_otf = no && test $otf_asked = yes ; then as_fn_error $? "Cannot find libOTF." "$LINENO" 5 fi else otf_parent_dir=`pwd` otf_dir="extlib/otf" { $as_echo "$as_me:${as_lineno-$LINENO}: configuring in otf_dir ($otf_parent_dir/$otf_dir)" >&5 $as_echo "$as_me: configuring in otf_dir ($otf_parent_dir/$otf_dir)" >&6;} if test "$srcdir" != "."; then : test -d "$otf_dir" || mkdir -p "$otf_dir" || as_fn_error $? "cannot create $otf_dir" "$LINENO" 5 fi cd $otf_dir case $srcdir in .) otf_srcdir="$srcdir" ;; /*) otf_srcdir="$srcdir/$otf_dir" ;; *) otf_srcdir="../../$srcdir/$otf_dir" ;; esac otf_conf_cmd="$otf_srcdir/configure" otf_conf_args="$otf_conf_args --prefix=\"$prefix\" --exec-prefix=\"$exec_prefix\" --bindir=\"$bindir\" --libdir=\"$libdir\" --includedir=\"$includedir\" --docdir=\"$docdir/otf\" $OTFFLAGS --cache-file=\"/dev/null\" --srcdir=\"$otf_srcdir\"" { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $otf_conf_cmd $otf_conf_args" >&5 $as_echo "$as_me: running $SHELL $otf_conf_cmd $otf_conf_args" >&6;} eval "$SHELL '$otf_conf_cmd' $otf_conf_args" if test $? != "0"; then : as_fn_error $? "$otf_conf_cmd failed for $otf_dir" "$LINENO" 5 fi cd $otf_parent_dir if test x"$OTFLIB" = x; then : OTF_LDFLAGS="-lotf" fi # OTF_CPPFLAGS="$OTF_CPPFLAGS -I${prefix}/include/otf" # CPPFLAGS="${CPPFLAGS} -I${prefix}/include/otf" fi else enable_otf=no fi if test "x$enable_otf" = xyes; then USE_OTF_TRUE= USE_OTF_FALSE='#' else USE_OTF_TRUE='#' USE_OTF_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: use otf = $use_internal_otf" >&5 $as_echo "$as_me: WARNING: use otf = $use_internal_otf" >&2;} if test x"$use_internal_otf" != "xyes"; then DONT_USE_INTERNAL_OTF_TRUE= DONT_USE_INTERNAL_OTF_FALSE='#' else DONT_USE_INTERNAL_OTF_TRUE='#' DONT_USE_INTERNAL_OTF_FALSE= fi # Checks for programs # Extract the first word of "doxygen", so it can be a program name with args. set dummy doxygen; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_HAVE_DOXYGEN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$HAVE_DOXYGEN"; then ac_cv_prog_HAVE_DOXYGEN="$HAVE_DOXYGEN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_HAVE_DOXYGEN="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_HAVE_DOXYGEN" && ac_cv_prog_HAVE_DOXYGEN="no" fi fi HAVE_DOXYGEN=$ac_cv_prog_HAVE_DOXYGEN if test -n "$HAVE_DOXYGEN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_DOXYGEN" >&5 $as_echo "$HAVE_DOXYGEN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test x$HAVE_DOXYGEN = xno ; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find doxygen" >&5 $as_echo "$as_me: WARNING: Cannot find doxygen" >&2;} fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pdflatex", so it can be a program name with args. set dummy ${ac_tool_prefix}pdflatex; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PDFLATEX+:} false; then : $as_echo_n "(cached) " >&6 else case $PDFLATEX in [\\/]* | ?:[\\/]*) ac_cv_path_PDFLATEX="$PDFLATEX" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PDFLATEX="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PDFLATEX=$ac_cv_path_PDFLATEX if test -n "$PDFLATEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PDFLATEX" >&5 $as_echo "$PDFLATEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PDFLATEX"; then ac_pt_PDFLATEX=$PDFLATEX # Extract the first word of "pdflatex", so it can be a program name with args. set dummy pdflatex; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PDFLATEX+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PDFLATEX in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PDFLATEX="$ac_pt_PDFLATEX" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PDFLATEX="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PDFLATEX=$ac_cv_path_ac_pt_PDFLATEX if test -n "$ac_pt_PDFLATEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PDFLATEX" >&5 $as_echo "$ac_pt_PDFLATEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PDFLATEX" = x; then PDFLATEX="no" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PDFLATEX=$ac_pt_PDFLATEX fi else PDFLATEX="$ac_cv_path_PDFLATEX" fi if test "x$PDFLATEX" != xno; then USE_PDFLATEX_TRUE= USE_PDFLATEX_FALSE='#' else USE_PDFLATEX_TRUE='#' USE_PDFLATEX_FALSE= fi if test "x$HAVE_DOXYGEN" = xyes; then USE_DOXYGEN_TRUE= USE_DOXYGEN_FALSE='#' else USE_DOXYGEN_TRUE='#' USE_DOXYGEN_FALSE= fi if test "$build_doc" = "yes"; then WITHDOC_TRUE= WITHDOC_FALSE='#' else WITHDOC_TRUE='#' WITHDOC_FALSE= fi subdirs="$subdirs extlib/otf" ac_config_files="$ac_config_files Makefile gtg.pc extlib/Makefile inc/Makefile src/Makefile doc/Makefile doc/Doxyfile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBZ_TRUE}" && test -z "${HAVE_LIBZ_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBZ\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${FORTRAN_TRUE}" && test -z "${FORTRAN_FALSE}"; then as_fn_error $? "conditional \"FORTRAN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_MPI_TRUE}" && test -z "${USE_MPI_FALSE}"; then as_fn_error $? "conditional \"USE_MPI\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_OTF_TRUE}" && test -z "${USE_OTF_FALSE}"; then as_fn_error $? "conditional \"USE_OTF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${DONT_USE_INTERNAL_OTF_TRUE}" && test -z "${DONT_USE_INTERNAL_OTF_FALSE}"; then as_fn_error $? "conditional \"DONT_USE_INTERNAL_OTF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_PDFLATEX_TRUE}" && test -z "${USE_PDFLATEX_FALSE}"; then as_fn_error $? "conditional \"USE_PDFLATEX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_DOXYGEN_TRUE}" && test -z "${USE_DOXYGEN_FALSE}"; then as_fn_error $? "conditional \"USE_DOXYGEN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WITHDOC_TRUE}" && test -z "${WITHDOC_FALSE}"; then as_fn_error $? "conditional \"WITHDOC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by GTG $as_me 0.2-2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ GTG config.status 0.2-2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' LD_F77='`$ECHO "$LD_F77" | $SED "$delay_single_quote_subst"`' reload_flag_F77='`$ECHO "$reload_flag_F77" | $SED "$delay_single_quote_subst"`' reload_cmds_F77='`$ECHO "$reload_cmds_F77" | $SED "$delay_single_quote_subst"`' old_archive_cmds_F77='`$ECHO "$old_archive_cmds_F77" | $SED "$delay_single_quote_subst"`' compiler_F77='`$ECHO "$compiler_F77" | $SED "$delay_single_quote_subst"`' GCC_F77='`$ECHO "$GCC_F77" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_F77='`$ECHO "$lt_prog_compiler_no_builtin_flag_F77" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_F77='`$ECHO "$lt_prog_compiler_pic_F77" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_F77='`$ECHO "$lt_prog_compiler_wl_F77" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_F77='`$ECHO "$lt_prog_compiler_static_F77" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_F77='`$ECHO "$lt_cv_prog_compiler_c_o_F77" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_F77='`$ECHO "$archive_cmds_need_lc_F77" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_F77='`$ECHO "$enable_shared_with_static_runtimes_F77" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_F77='`$ECHO "$export_dynamic_flag_spec_F77" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_F77='`$ECHO "$whole_archive_flag_spec_F77" | $SED "$delay_single_quote_subst"`' compiler_needs_object_F77='`$ECHO "$compiler_needs_object_F77" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_F77='`$ECHO "$old_archive_from_new_cmds_F77" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_F77='`$ECHO "$old_archive_from_expsyms_cmds_F77" | $SED "$delay_single_quote_subst"`' archive_cmds_F77='`$ECHO "$archive_cmds_F77" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_F77='`$ECHO "$archive_expsym_cmds_F77" | $SED "$delay_single_quote_subst"`' module_cmds_F77='`$ECHO "$module_cmds_F77" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_F77='`$ECHO "$module_expsym_cmds_F77" | $SED "$delay_single_quote_subst"`' with_gnu_ld_F77='`$ECHO "$with_gnu_ld_F77" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_F77='`$ECHO "$allow_undefined_flag_F77" | $SED "$delay_single_quote_subst"`' no_undefined_flag_F77='`$ECHO "$no_undefined_flag_F77" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_F77='`$ECHO "$hardcode_libdir_flag_spec_F77" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_F77='`$ECHO "$hardcode_libdir_separator_F77" | $SED "$delay_single_quote_subst"`' hardcode_direct_F77='`$ECHO "$hardcode_direct_F77" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_F77='`$ECHO "$hardcode_direct_absolute_F77" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_F77='`$ECHO "$hardcode_minus_L_F77" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_F77='`$ECHO "$hardcode_shlibpath_var_F77" | $SED "$delay_single_quote_subst"`' hardcode_automatic_F77='`$ECHO "$hardcode_automatic_F77" | $SED "$delay_single_quote_subst"`' inherit_rpath_F77='`$ECHO "$inherit_rpath_F77" | $SED "$delay_single_quote_subst"`' link_all_deplibs_F77='`$ECHO "$link_all_deplibs_F77" | $SED "$delay_single_quote_subst"`' always_export_symbols_F77='`$ECHO "$always_export_symbols_F77" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_F77='`$ECHO "$export_symbols_cmds_F77" | $SED "$delay_single_quote_subst"`' exclude_expsyms_F77='`$ECHO "$exclude_expsyms_F77" | $SED "$delay_single_quote_subst"`' include_expsyms_F77='`$ECHO "$include_expsyms_F77" | $SED "$delay_single_quote_subst"`' prelink_cmds_F77='`$ECHO "$prelink_cmds_F77" | $SED "$delay_single_quote_subst"`' postlink_cmds_F77='`$ECHO "$postlink_cmds_F77" | $SED "$delay_single_quote_subst"`' file_list_spec_F77='`$ECHO "$file_list_spec_F77" | $SED "$delay_single_quote_subst"`' hardcode_action_F77='`$ECHO "$hardcode_action_F77" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ LD_F77 \ reload_flag_F77 \ compiler_F77 \ lt_prog_compiler_no_builtin_flag_F77 \ lt_prog_compiler_pic_F77 \ lt_prog_compiler_wl_F77 \ lt_prog_compiler_static_F77 \ lt_cv_prog_compiler_c_o_F77 \ export_dynamic_flag_spec_F77 \ whole_archive_flag_spec_F77 \ compiler_needs_object_F77 \ with_gnu_ld_F77 \ allow_undefined_flag_F77 \ no_undefined_flag_F77 \ hardcode_libdir_flag_spec_F77 \ hardcode_libdir_separator_F77 \ exclude_expsyms_F77 \ include_expsyms_F77 \ file_list_spec_F77; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path \ reload_cmds_F77 \ old_archive_cmds_F77 \ old_archive_from_new_cmds_F77 \ old_archive_from_expsyms_cmds_F77 \ archive_cmds_F77 \ archive_expsym_cmds_F77 \ module_cmds_F77 \ module_expsym_cmds_F77 \ export_symbols_cmds_F77 \ prelink_cmds_F77 \ postlink_cmds_F77; 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=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "gtg.pc") CONFIG_FILES="$CONFIG_FILES gtg.pc" ;; "extlib/Makefile") CONFIG_FILES="$CONFIG_FILES extlib/Makefile" ;; "inc/Makefile") CONFIG_FILES="$CONFIG_FILES inc/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "doc/Doxyfile") CONFIG_FILES="$CONFIG_FILES doc/Doxyfile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # 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 # 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. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # The names of the tagged configurations supported by this script. available_tags='F77 ' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # 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$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; 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-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: F77 # The linker used to build libraries. LD=$lt_LD_F77 # How to create reloadable object files. reload_flag=$lt_reload_flag_F77 reload_cmds=$lt_reload_cmds_F77 # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_F77 # A language specific compiler. CC=$lt_compiler_F77 # Is the compiler the GNU compiler? with_gcc=$GCC_F77 # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_F77 # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_F77 # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_F77 # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_F77 # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_F77 # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_F77 archive_expsym_cmds=$lt_archive_expsym_cmds_F77 # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_F77 module_expsym_cmds=$lt_module_expsym_cmds_F77 # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_F77 # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_F77 # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_F77 # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_F77 # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_F77 # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_F77 # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_F77 # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_F77 # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_F77 # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_F77 # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_F77 # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_F77 # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_F77 # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_F77 # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_F77 # Specify filename containing input files. file_list_spec=$lt_file_list_spec_F77 # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_F77 # ### END LIBTOOL TAG CONFIG: F77 _LT_EOF ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi # # CONFIG_SUBDIRS section. # if test "$no_recursion" != yes; then # Remove --cache-file, --srcdir, and --disable-option-checking arguments # so they do not pile up. ac_sub_configure_args= ac_prev= eval "set x $ac_configure_args" shift for ac_arg do if test -n "$ac_prev"; then ac_prev= continue fi case $ac_arg in -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \ | --c=*) ;; --config-cache | -C) ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ;; --disable-option-checking) ;; *) case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_sub_configure_args " '$ac_arg'" ;; esac done # Always prepend --prefix to ensure using the same prefix # in subdir configurations. ac_arg="--prefix=$prefix" case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" # Pass --silent if test "$silent" = yes; then ac_sub_configure_args="--silent $ac_sub_configure_args" fi # Always prepend --disable-option-checking to silence warnings, since # different subdirs can have different --enable and --with options. ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args" ac_popdir=`pwd` for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue # Do not complain, so a configure script can configure whichever # parts of a large source tree are present. test -d "$srcdir/$ac_dir" || continue ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)" $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5 $as_echo "$ac_msg" >&6 as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" # Check for guested configure; otherwise get Cygnus style configure. if test -f "$ac_srcdir/configure.gnu"; then ac_sub_configure=$ac_srcdir/configure.gnu elif test -f "$ac_srcdir/configure"; then ac_sub_configure=$ac_srcdir/configure elif test -f "$ac_srcdir/configure.in"; then # This should be Cygnus configure. ac_sub_configure=$ac_aux_dir/configure else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5 $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} ac_sub_configure= fi # The recursion is here. if test -n "$ac_sub_configure"; then # Make the cache file name correct relative to the subdirectory. case $cache_file in [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; *) # Relative name. ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 $as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} # The eval makes quoting arguments work. eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5 fi cd "$ac_popdir" done fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/extlib0000644000000000000000000000013213171135476016121 xustar0030 mtime=1508162366.033758885 30 atime=1508162367.741908015 30 ctime=1508162366.033758885 eztrace-1.1-7/extlib/gtg/extlib/0000755000175000017500000000000013171135476017365 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212544237152020227 xustar0030 mtime=1435582058.523899952 30 atime=1508162200.048402024 30 ctime=1508162366.029758537 eztrace-1.1-7/extlib/gtg/extlib/Makefile.am0000644000175000017500000000007512544237152021420 0ustar00trahaytrahay00000000000000 if DONT_USE_INTERNAL_OTF SUBDIRS = else SUBDIRS = otf endif eztrace-1.1-7/extlib/gtg/extlib/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135230020227 xustar0030 mtime=1508162200.060402866 30 atime=1508162281.094577268 30 ctime=1508162366.029758537 eztrace-1.1-7/extlib/gtg/extlib/Makefile.in0000644000175000017500000004376313171135230021433 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = extlib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = otf am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ GREP = @GREP@ HAVE_DOXYGEN = @HAVE_DOXYGEN@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPIDIR = @MPIDIR@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTFDIR = @OTFDIR@ OTF_INC = @OTF_INC@ OTF_LIB = @OTF_LIB@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @DONT_USE_INTERNAL_OTF_FALSE@SUBDIRS = otf @DONT_USE_INTERNAL_OTF_TRUE@SUBDIRS = all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu extlib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu extlib/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/gtg/extlib/PaxHeaders.7332/otf0000644000000000000000000000013213171135477016712 xustar0030 mtime=1508162367.137855261 30 atime=1508162367.741908015 30 ctime=1508162367.137855261 eztrace-1.1-7/extlib/gtg/extlib/otf/0000755000175000017500000000000013171135477020156 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/otf/PaxHeaders.7332/aclocal.m40000644000000000000000000000013213171135224020615 xustar0030 mtime=1508162196.004120256 30 atime=1508162196.100126916 30 ctime=1508162366.081763075 eztrace-1.1-7/extlib/gtg/extlib/otf/aclocal.m40000644000175000017500000014425513171135224022017 0ustar00trahaytrahay00000000000000# generated automatically by aclocal 1.15.1 -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.15.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.15.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # --------------------------------------------------------------------------- # Adds support for distributing Python modules and packages. To # install modules, copy them to $(pythondir), using the python_PYTHON # automake variable. To install a package with the same name as the # automake package, install to $(pkgpythondir), or use the # pkgpython_PYTHON automake variable. # # The variables $(pyexecdir) and $(pkgpyexecdir) are provided as # locations to install python extension modules (shared libraries). # Another macro is required to find the appropriate flags to compile # extension modules. # # If your package is configured with a different prefix to python, # users will have to add the install directory to the PYTHONPATH # environment variable, or create a .pth file (see the python # documentation for details). # # If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will # cause an error if the version of python installed on the system # doesn't meet the requirement. MINIMUM-VERSION should consist of # numbers and dots only. AC_DEFUN([AM_PATH_PYTHON], [ dnl Find a Python interpreter. Python versions prior to 2.0 are not dnl supported. (2.0 was released on October 16, 2000). dnl FIXME: Remove the need to hard-code Python versions here. m4_define_default([_AM_PYTHON_INTERPRETER_LIST], [python python2 python3 python3.8 python3.7 python3.6 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0 python2.7 dnl python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0]) AC_ARG_VAR([PYTHON], [the Python interpreter]) m4_if([$1],[],[ dnl No version check is needed. # Find any Python interpreter. if test -z "$PYTHON"; then AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :) fi am_display_PYTHON=python ], [ dnl A version check is needed. if test -n "$PYTHON"; then # If the user set $PYTHON, use it and don't search something else. AC_MSG_CHECKING([whether $PYTHON version is >= $1]) AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]) AC_MSG_ERROR([Python interpreter is too old])]) am_display_PYTHON=$PYTHON else # Otherwise, try each interpreter until we find one that satisfies # VERSION. AC_CACHE_CHECK([for a Python interpreter with version >= $1], [am_cv_pathless_PYTHON],[ for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do test "$am_cv_pathless_PYTHON" = none && break AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) done]) # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. if test "$am_cv_pathless_PYTHON" = none; then PYTHON=: else AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) fi am_display_PYTHON=$am_cv_pathless_PYTHON fi ]) if test "$PYTHON" = :; then dnl Run any user-specified action, or abort. m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) else dnl Query Python for its version number. Getting [:3] seems to be dnl the best way to do this; it's what "site.py" does in the standard dnl library. AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`]) AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) dnl Use the values of $prefix and $exec_prefix for the corresponding dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made dnl distinct variables so they can be overridden if need be. However, dnl general consensus is that you shouldn't need this ability. AC_SUBST([PYTHON_PREFIX], ['${prefix}']) AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) dnl At times (like when building shared libraries) you may want dnl to know which OS platform Python thinks this is. AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`]) AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) # Just factor out some code duplication. am_python_setup_sysconfig="\ import sys # Prefer sysconfig over distutils.sysconfig, for better compatibility # with python 3.x. See automake bug#10227. try: import sysconfig except ImportError: can_use_sysconfig = 0 else: can_use_sysconfig = 1 # Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs: # try: from platform import python_implementation if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7': can_use_sysconfig = 0 except ImportError: pass" dnl Set up 4 directories: dnl pythondir -- where to install python scripts. This is the dnl site-packages directory, not the python standard library dnl directory like in previous automake betas. This behavior dnl is more consistent with lispdir.m4 for example. dnl Query distutils for this directory. AC_CACHE_CHECK([for $am_display_PYTHON script directory], [am_cv_python_pythondir], [if test "x$prefix" = xNONE then am_py_prefix=$ac_default_prefix else am_py_prefix=$prefix fi am_cv_python_pythondir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') sys.stdout.write(sitedir)"` case $am_cv_python_pythondir in $am_py_prefix*) am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` ;; *) case $am_py_prefix in /usr|/System*) ;; *) am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac ]) AC_SUBST([pythondir], [$am_cv_python_pythondir]) dnl pkgpythondir -- $PACKAGE directory under pythondir. Was dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is dnl more consistent with the rest of automake. AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) dnl pyexecdir -- directory for installing python extension modules dnl (shared libraries) dnl Query distutils for this directory. AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], [am_cv_python_pyexecdir], [if test "x$exec_prefix" = xNONE then am_py_exec_prefix=$am_py_prefix else am_py_exec_prefix=$exec_prefix fi am_cv_python_pyexecdir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix') sys.stdout.write(sitedir)"` case $am_cv_python_pyexecdir in $am_py_exec_prefix*) am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` ;; *) case $am_py_exec_prefix in /usr|/System*) ;; *) am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac ]) AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) dnl Run any user-specified action. $2 fi ]) # AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) # --------------------------------------------------------------------------- # Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION. # Run ACTION-IF-FALSE otherwise. # This test uses sys.hexversion instead of the string equivalent (first # word of sys.version), in order to cope with versions such as 2.2c1. # This supports Python 2.0 or higher. (2.0 was released on October 16, 2000). AC_DEFUN([AM_PYTHON_CHECK_VERSION], [prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]] sys.exit(sys.hexversion < minverhex)" AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([config/m4/libtool.m4]) m4_include([config/m4/ltoptions.m4]) m4_include([config/m4/ltsugar.m4]) m4_include([config/m4/ltversion.m4]) m4_include([config/m4/lt~obsolete.m4]) m4_include([acinclude.m4]) eztrace-1.1-7/extlib/gtg/extlib/otf/PaxHeaders.7332/LICENSE0000644000000000000000000000013112544237152017767 xustar0030 mtime=1435582058.523899952 30 atime=1508138917.924968063 29 ctime=1508162367.14185561 eztrace-1.1-7/extlib/gtg/extlib/otf/LICENSE0000644000175000017500000000301512544237152021156 0ustar00trahaytrahay00000000000000Copyright (c) 2005-2013, ZIH, Technische Universitaet Dresden, Federal Republic of Germany All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of ZIH, TU Dresden nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. eztrace-1.1-7/extlib/gtg/extlib/otf/PaxHeaders.7332/README0000644000000000000000000000013112544237152017642 xustar0030 mtime=1435582058.523899952 29 atime=1507797543.92689217 30 ctime=1508162366.101764822 eztrace-1.1-7/extlib/gtg/extlib/otf/README0000644000175000017500000000345512544237152021041 0ustar00trahaytrahay00000000000000 Open Trace Format (OTF) Detailed program analysis of massively parallel programs requires the recording of event based performance data during run-time and its visualisation with appropriate software tools like the Vampir framework. The specification of a convenient and powerful trace file format has to fulfill a large number of requirements. It must allow an efficient collection of the event based performance data on a parallel program environment. On the other hand it has to provide a very fast and convenient access to the large amount of performance data and the corresponding event definitions by the analysis software tools. To improve scalability for very large and massively parallel traces the Open Trace Format (OTF) has been developed at ZIH as a successor format to the Vampir Trace Format (VTF3). The Open Trace Format makes use of a portable ASCII encoding. It distributes single traces to multiple so called streams with one or more files each. Merging of records from multiple files is done transparently by the OTF library. The number of possible streams is not limited by the number of available file handles. The provided read/write library should be used as a convenient interface for third party software. The library supports efficient parallel and distributed access to trace data and offers selective reading access regarding arbitrary time intervals, process selection and record types. Optional auxiliary information can assist this selective access. The software package contains additional tools for trace date conversion or preparation. More information can be found in the provided documentation. OTF version is available as open source software under the BSD license, see 'COPYING'. The software comes as a source code package. It can be installed by using autoconf procedures, see 'INSTALL'. eztrace-1.1-7/extlib/gtg/extlib/otf/PaxHeaders.7332/otfauxlib0000644000000000000000000000013213171135476020706 xustar0030 mtime=1508162366.273779835 30 atime=1508162367.741908015 30 ctime=1508162366.273779835 eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/0000755000175000017500000000000013171135476022152 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/PaxHeaders.7332/OTFAUX_Thumbnail.c0000644000000000000000000000013212544237152024135 xustar0030 mtime=1435582058.531899952 30 atime=1508138855.931419821 30 ctime=1508162366.269779487 eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/OTFAUX_Thumbnail.c0000644000175000017500000001374212544237152025333 0ustar00trahaytrahay00000000000000#ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include /* for OTF_Error */ #include #include #include "otfaux.h" OTFAUX_Thumbnail_Context* OTFAUX_Thumbnail_create( uint64_t minTime, uint64_t maxTime, uint32_t width ) { OTFAUX_Thumbnail_Context* new_context = OTFAUX_State_create(); if ( !new_context ) return NULL; if ( !OTFAUX_State_setupThumbnail( new_context, minTime, maxTime, width ) ) { OTFAUX_State_destroy( new_context ); return NULL; } return new_context; } void OTFAUX_Thumbnail_destroy( OTFAUX_Thumbnail_Context* tn_context ) { OTFAUX_State_destroy( tn_context ); } int OTFAUX_Thumbnail_declareProcess( OTFAUX_Thumbnail_Context* tn_context, uint64_t process_token ) { return OTFAUX_State_declareProcess( tn_context, process_token, 1 ); } int OTFAUX_Thumbnail_handleEnter( OTFAUX_Thumbnail_Context* tn_context, uint64_t timestamp, uint64_t process_token, uint32_t function_token ) { return OTFAUX_State_processEnter( tn_context, timestamp, process_token, function_token, 0, NULL ); } int OTFAUX_Thumbnail_handleLeave( OTFAUX_Thumbnail_Context* tn_context, uint64_t timestamp, uint64_t process_token ) { return OTFAUX_State_processLeave( tn_context, timestamp, process_token, 0 ); } int OTFAUX_Thumbnail_finalize( OTFAUX_Thumbnail_Context* tn_context ) { ( void )tn_context; /* finaliztion happens when writing */ return 1; } char* OTFAUX_Thumbnail_getFilename( const char* namestub ) { int length; char* name_buffer; if (!namestub) return NULL; length = strlen( namestub ) + strlen( ".thumb" ) + 1; name_buffer = (char*)malloc( length * sizeof(char)); if (!name_buffer) return NULL; strcpy( name_buffer, namestub ); strcat( name_buffer, ".thumb" ); return name_buffer; } int OTFAUX_Thumbnail_write( const OTFAUX_Thumbnail_Context* tn_context, const char* namestub, int create, ... ) { uint32_t total_number_of_procs = 0; if ( create ) { va_list args; va_start( args, create ); total_number_of_procs = va_arg( args, uint32_t ); va_end( args ); } return OTFAUX_State_writeThumbnail( ( OTFAUX_State* )tn_context, namestub, create, total_number_of_procs ); } struct OTFAUX_ThumbnailReader { FILE* file; uint32_t width; uint32_t nprocs; }; OTFAUX_ThumbnailReader* OTFAUX_ThumbnailReader_open( const char* namestub ) { OTFAUX_ThumbnailReader* new_reader; char* filename; if (!namestub) return NULL; new_reader = calloc( 1, sizeof(*new_reader)); if (!new_reader) return NULL; filename = OTFAUX_Thumbnail_getFilename( namestub ); if (!filename) { free(new_reader); return NULL; } new_reader->file = fopen( filename, "r" ); free(filename); if (!new_reader->file) { free(new_reader); return NULL; } /* read header */ if (2 != fscanf( new_reader->file, "0:%x,%x\n", &new_reader->width, &new_reader->nprocs )) { fclose(new_reader->file); free(new_reader); return NULL; } return new_reader; } int OTFAUX_ThumbnailReader_close( OTFAUX_ThumbnailReader* tn_reader ) { if (!tn_reader) return 0; fclose( tn_reader->file ); free( tn_reader ); return 1; } int OTFAUX_ThumbnailReader_getWidth( const OTFAUX_ThumbnailReader* tn_reader, uint32_t* width ) { if (!tn_reader || !width) return 0; *width = tn_reader->width; return 1; } int OTFAUX_ThumbnailReader_getNumberOfProcs( const OTFAUX_ThumbnailReader* tn_reader, uint32_t* nprocs ) { if (!tn_reader || !nprocs) return 0; *nprocs = tn_reader->nprocs; return 1; } int OTFAUX_ThumbnailReader_read( OTFAUX_ThumbnailReader* tn_reader, void (* handler)( void*, uint64_t /* process token */, const uint32_t* /* function tokens */ ), void* data ) { int ret = 0; unsigned long long process; uint32_t* functions; int status; uint32_t i = 0, j = 0; if (!tn_reader || !tn_reader->file) return 0; functions = calloc( tn_reader->width, sizeof(*functions)); /* loop processes */ status = 1; for (i = 0; i < tn_reader->nprocs; i++) { char comma; status = fscanf( tn_reader->file, "%llx:", &process ); if (1 != status) goto out; for (j = 0; j < tn_reader->width; ++j) { status = fscanf( tn_reader->file, "%x%c", &functions[j], &comma ); if ( 2 != status || comma != ',' ) goto out; } if (handler) { handler( data, process, functions ); } if ( fgetc( tn_reader->file ) != '\n' ) { goto out; } } if ( fgetc( tn_reader->file ) == EOF ) { ret = ( i == tn_reader->nprocs && j == tn_reader->width && feof( tn_reader->file ) ); } out: free( functions ); return ret; } eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/PaxHeaders.7332/OTFAUX_Process.c0000644000000000000000000000013212544237152023630 xustar0030 mtime=1435582058.531899952 30 atime=1508138855.931419821 30 ctime=1508162366.269779487 eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/OTFAUX_Process.c0000644000175000017500000007022512544237152025025 0ustar00trahaytrahay00000000000000#ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include "OTFAUX_State.h" #include "OTFAUX_Process.h" #include "OTFAUX_SharedState.h" #include "OTFAUX_Stack.h" typedef struct OTFAUX_FunctionCall { Stack e; uint64_t eventTime; uint32_t function; uint32_t scl; void* eventData; } OTFAUX_FunctionCall; struct OTFAUX_ReciveQueue { /** for hash chaining */ OTFAUX_ReciveQueue* next; /** cached hash value of this queue */ uint32_t hash; uint64_t receiver; uint32_t comm, tag; Stack receives; }; typedef struct OTFAUX_Message { Stack e; uint64_t eventTime; uint64_t receiver; uint32_t comm; uint32_t tag; uint32_t length; uint32_t scl; uint64_t recvTime; uint32_t recvLength; uint32_t recvScl; void* eventData; } OTFAUX_Message; typedef struct OTFAUX_CollOp { Stack e; uint64_t eventTime; uint32_t comm; uint32_t root; uint32_t collOp; uint64_t matchingId; uint64_t bytesSent; uint64_t bytesRecv; uint32_t scl; void* eventData; } OTFAUX_CollOp; typedef struct OTFAUX_File { Stack e; uint64_t eventTime; uint32_t id; uint64_t handleId; uint32_t scl; void* eventData; } OTFAUX_File; typedef struct OTFAUX_FileOp { Stack e; uint64_t eventTime; uint64_t matchingId; uint32_t scl; void* eventData; } OTFAUX_FileOp; struct OTFAUX_CollOpCount { OTFAUX_CollOpCount* next; uint32_t comm; uint64_t count; }; struct OTFAUX_Counter { OTFAUX_Counter* next; uint64_t eventTime; uint32_t id; uint64_t value; void* eventData; }; static uint32_t hash_queue( uint64_t receiver, uint32_t comm, uint32_t tag ) { uint32_t queue_hash = 0; queue_hash += hash( &receiver, sizeof( receiver ), queue_hash ); queue_hash += hash( &comm, sizeof( comm ), queue_hash ); queue_hash += hash( &tag, sizeof( tag ), queue_hash ); return queue_hash; } static OTFAUX_ReciveQueue* create_queue( uint32_t queue_hash, uint64_t receiver, uint32_t comm, uint32_t tag ) { OTFAUX_ReciveQueue* new_queue = calloc( 1, sizeof( *new_queue ) ); if ( !new_queue ) return NULL; /* cache hash value for this queue */ new_queue->hash = queue_hash; /* store queue atttributes */ new_queue->receiver = receiver; new_queue->comm = comm; new_queue->tag = tag; /* initialize the recv queue */ stack_init( &new_queue->receives ); return new_queue; } static OTFAUX_ReciveQueue* get_queue( OTFAUX_Process* process, uint64_t receiver, uint32_t comm, uint32_t tag, int create ) { uint32_t queue_hash = hash_queue( receiver, comm, tag ); OTFAUX_ReciveQueue** queue_bucket = &process->receiveQueues[ queue_hash & QUEUE_HASH_MASK ]; OTFAUX_ReciveQueue* queue = *queue_bucket; /* search in hash chain */ while ( queue ) { if ( queue->hash == queue_hash && queue->receiver == receiver && queue->comm == comm && queue->tag == tag ) { /* found */ return queue; } queue = queue->next; } if ( !create ) return queue; queue = create_queue( queue_hash, receiver, comm, tag ); if ( !queue ) return NULL; /* chain into hash table */ queue->next = *queue_bucket; *queue_bucket = queue; return queue; } static void release_event_data( OTFAUX_Process* process, void* eventData ) { if ( !eventData || !process || !process->sharedState || !process->sharedState->releaseEventData ) return; process->sharedState->releaseEventData( process->sharedState->userDataForReleaseEventData, eventData ); } static void cleanup_pending_sends( OTFAUX_Process* process, uint64_t time ) { Stack* elem; if ( !process ) return; elem = stack_next( &process->pendingSends ); while ( elem != &process->pendingSends ) { OTFAUX_Message* msg = ( OTFAUX_Message* )elem; elem = stack_next( elem ); if ( msg->recvTime < time ) { stack_remove( &msg->e ); release_event_data( process, msg->eventData ); free( msg ); } } } OTFAUX_Process* OTFAUX_Process_create( uint64_t processId, OTFAUX_SharedState* sharedState ) { OTFAUX_Process* new_process = calloc( 1, sizeof( *new_process ) ); if ( !new_process ) return NULL; new_process->id = processId; stack_init( &new_process->functionStack ); stack_init( &new_process->pendingSends ); stack_init( &new_process->openFiles ); stack_init( &new_process->pendingCollOps ); stack_init( &new_process->pendingFileOps ); new_process->sharedState = sharedState; return new_process; } void OTFAUX_Process_destroy( OTFAUX_Process* process ) { int i; OTFAUX_FunctionCall* call; OTFAUX_Message* msg; OTFAUX_File* file; OTFAUX_CollOp* collop; OTFAUX_FileOp* fileop; if ( !process ) return; while ( ( call = ( OTFAUX_FunctionCall* )stack_pop( &process->functionStack ) ) ) { release_event_data( process, call->eventData ); free( call ); } for ( i = 0; i < QUEUE_HASH_SIZE; i++ ) { while ( process->receiveQueues[ i ] ) { OTFAUX_ReciveQueue* queue = process->receiveQueues[ i ]; process->receiveQueues[ i ] = queue->next; while ( ( msg = ( OTFAUX_Message* )stack_pop( &queue->receives ) ) ) { free( msg ); } free( queue ); } } while ( ( msg = ( OTFAUX_Message* )stack_pop( &process->pendingSends ) ) ) { release_event_data( process, msg->eventData ); free( msg ); } while ( ( file = ( OTFAUX_File* )stack_pop( &process->openFiles ) ) ) { release_event_data( process, file->eventData ); free( file ); } while ( ( collop = ( OTFAUX_CollOp* )stack_pop( &process->pendingCollOps ) ) ) { release_event_data( process, collop->eventData ); free( collop ); } for ( i = 0; i < COLLOPCOUNT_HASH_SIZE; i++ ) { while ( process->collOpCounts[ i ] ) { OTFAUX_CollOpCount* collop_count = process->collOpCounts[ i ]; process->collOpCounts[ i ] = collop_count->next; free( collop_count ); } } while ( ( fileop = ( OTFAUX_FileOp* )stack_pop( &process->pendingFileOps ) ) ) { release_event_data( process, fileop->eventData ); free( fileop ); } for ( i = 0; i < COUNTER_HASH_SIZE; i++ ) { while ( process->counters[ i ] ) { OTFAUX_Counter* counter = process->counters[ i ]; process->counters[ i ] = counter->next; release_event_data( process, counter->eventData ); free( counter ); } } if ( process->thumbnail ) free( process->thumbnail ); free( process ); } int OTFAUX_Process_enableThumbnail( OTFAUX_Process* process, uint32_t thumbnailSize ) { if ( !process ) return 0; if ( process->thumbnail ) return 1; process->thumbnail = calloc( thumbnailSize, sizeof( *process->thumbnail ) ); if ( !process->thumbnail ) return 0; return 1; } void OTFAUX_Process_updateThumbnail( OTFAUX_Process* process, uint32_t timestampsPosition ) { OTFAUX_FunctionCall* call; if ( !process || !process->thumbnail ) return; /* function stack is empty, keep zero, which indicates the invalid functions */ if ( stack_empty( &process->functionStack ) ) return; call = ( OTFAUX_FunctionCall* )stack_next( &process->functionStack ); process->thumbnail[ timestampsPosition ] = call->function; } void OTFAUX_Process_writeThumbnail( OTFAUX_Process* process, uint32_t timestampsSize, FILE* out ) { uint32_t i; if ( !process || !process->thumbnail ) return; fprintf( out, "%llx:", ( unsigned long long )process->id ); for ( i = 0; i < timestampsSize; i++ ) { fprintf( out, "%x,", process->thumbnail[ i ] ); } fprintf( out, "\n" ); } int OTFAUX_Process_enqueueRecv( OTFAUX_Process* process, uint64_t eventTime, uint32_t receiverProcessId, uint32_t comm, uint32_t tag, uint32_t length, uint32_t scl ) { OTFAUX_ReciveQueue* queue; OTFAUX_Message* recv; if ( !process ) return 0; queue = get_queue( process, receiverProcessId, comm, tag, 1 ); if ( !queue ) return 0; recv = calloc( 1, sizeof( *recv ) ); if ( !recv ) return 0; recv->receiver = receiverProcessId; recv->comm = comm; recv->tag = tag; recv->recvTime = eventTime; recv->recvLength = length; recv->recvScl = scl; stack_init( &recv->e ); stack_add( &queue->receives, &recv->e ); return 1; } int OTFAUX_Process_enterFunction( OTFAUX_Process* process, uint64_t eventTime, uint32_t function, uint32_t scl, void* eventData ) { OTFAUX_FunctionCall* call; if ( !process ) return 0; if ( !stack_empty( &process->sharedState->functionCalls ) ) { /* take it out of the object pool */ call = ( OTFAUX_FunctionCall* )stack_pop( &process->sharedState->functionCalls ); } else { call = calloc( 1, sizeof( *call ) ); if ( !call ) return 0; stack_init( &call->e ); } call->eventTime = eventTime; call->function = function; call->scl = scl; call->eventData = eventData; stack_push( &process->functionStack, &call->e ); return 1; } int OTFAUX_Process_leaveFunction( OTFAUX_Process* process, uint64_t eventTime, uint32_t function ) { OTFAUX_FunctionCall* call; ( void )function; if ( !process ) return 0; if ( stack_empty( &process->functionStack ) ) return 0; call = ( OTFAUX_FunctionCall* )stack_pop( &process->functionStack ); release_event_data( process, call->eventData ); stack_push( &process->sharedState->functionCalls, &call->e ); return 1; } int OTFAUX_Process_sendMessage( OTFAUX_Process* process, uint64_t eventTime, uint32_t receiverProcessId, uint32_t comm, uint32_t tag, uint32_t length, uint32_t scl, uint64_t* recvTime, uint32_t* recvLength, uint32_t* recvScl, void* eventData ) { OTFAUX_ReciveQueue* queue; OTFAUX_Message* msg; if ( !process ) return 0; /* MsgMatching */ queue = get_queue( process, receiverProcessId, comm, tag, 0 ); if ( !queue ) return 2; if ( stack_empty( &queue->receives ) ) return 2; msg = ( OTFAUX_Message* )stack_pop( &queue->receives ); msg->eventTime = eventTime; msg->length = length; msg->scl = scl; *recvTime = msg->recvTime; *recvLength = msg->recvLength; *recvScl = msg->recvScl; msg->eventData = eventData; /* only maintain the pending messages, if we want to write snapshots */ if ( process->sharedState->writeSendSnapshot ) { stack_add( &process->pendingSends, &msg->e ); } else { release_event_data( process, msg->eventData ); free( msg ); } return 1; } int OTFAUX_Process_countCollOp( OTFAUX_Process* process, uint32_t comm ) { uint32_t comm_hash; OTFAUX_CollOpCount* collop_count; OTFAUX_CollOpCount** bucket; if ( !process ) return 0; comm_hash = hash( &comm, sizeof( comm ), 0 ); bucket = &process->collOpCounts[ comm_hash & COLLOPCOUNT_HASH_MASK ]; collop_count = *bucket; while ( collop_count ) { if ( collop_count->comm == comm ) { break; } collop_count = collop_count->next; } if ( !collop_count ) { collop_count = calloc( 1, sizeof( *collop_count ) ); if ( !collop_count ) return 0; collop_count->comm = comm; collop_count->next = *bucket; *bucket = collop_count; } collop_count->count++; return 1; } int OTFAUX_Process_beginCollOp( OTFAUX_Process* process, uint64_t eventTime, uint32_t comm, uint32_t root, uint32_t collOp, uint64_t matchingId, uint64_t bytesSent, uint64_t bytesRecv, uint32_t scl, void* eventData ) { OTFAUX_CollOp* collop; Stack *entry; if ( !process ) return 0; entry = stack_next( &process->pendingCollOps ); while ( entry != &process->pendingCollOps ) { collop = ( OTFAUX_CollOp* )entry; entry = stack_next( entry ); if ( collop->matchingId == matchingId ) { /* ups, same matchingId used twice */ release_event_data( process, collop->eventData ); stack_remove( &collop->e ); stack_push( &process->sharedState->collOps, &collop->e ); } } if ( !stack_empty( &process->sharedState->collOps ) ) { collop = ( OTFAUX_CollOp* )stack_pop( &process->sharedState->collOps ); } else { collop = calloc( 1, sizeof( *collop ) ); if ( !collop ) return 0; } collop->eventTime = eventTime; collop->comm = comm; collop->root = root; collop->collOp = collOp; collop->matchingId = matchingId; collop->bytesSent = bytesSent; collop->bytesRecv = bytesRecv; collop->scl = scl; collop->eventData = eventData; stack_init( &collop->e ); stack_add( &process->pendingCollOps, &collop->e ); return 1; } int OTFAUX_Process_endCollOp( OTFAUX_Process* process, uint64_t eventTime, uint64_t matchingId ) { OTFAUX_CollOp* collop; Stack *entry; if ( !process ) return 0; entry = stack_next( &process->pendingCollOps ); while ( entry != &process->pendingCollOps ) { collop = ( OTFAUX_CollOp* )entry; entry = stack_next( entry ); if ( collop->matchingId == matchingId ) { release_event_data( process, collop->eventData ); stack_remove( &collop->e ); OTFAUX_Process_countCollOp( process, collop->comm ); stack_push( &process->sharedState->collOps, &collop->e ); return 1; } } /* matchingId not found */ return 0; } int OTFAUX_Process_openFile( OTFAUX_Process* process, uint64_t eventTime, uint32_t fileId, uint64_t handleId, uint32_t scl, void* eventData ) { OTFAUX_File* file; Stack *entry; if ( !process ) return 0; entry = stack_next( &process->openFiles ); while ( entry != &process->openFiles ) { file = ( OTFAUX_File* )entry; entry = stack_next( entry ); if ( file->handleId == handleId ) { /* ups, same handleId used twice */ release_event_data( process, file->eventData ); stack_remove( &file->e ); stack_push( &process->sharedState->files, &file->e ); } } if ( !stack_empty( &process->sharedState->files ) ) { file = ( OTFAUX_File* )stack_pop( &process->sharedState->files ); } else { file = calloc( 1, sizeof( *file ) ); if ( !file ) return 0; } file->eventTime = eventTime; file->id = fileId; file->handleId = handleId; file->scl = scl; file->eventData = eventData; stack_init( &file->e ); stack_add( &process->openFiles, &file->e ); return 1; } int OTFAUX_Process_closeFile( OTFAUX_Process* process, uint64_t eventTime, uint64_t handleId ) { OTFAUX_File* file; Stack *entry; if ( !process ) return 0; entry = stack_next( &process->openFiles ); while ( entry != &process->openFiles ) { file = ( OTFAUX_File* )entry; entry = stack_next( entry ); if ( file->handleId == handleId ) { release_event_data( process, file->eventData ); stack_remove( &file->e ); stack_push( &process->sharedState->files, &file->e ); return 1; } } /* handleId not found */ return 0; } int OTFAUX_Process_beginFileOp( OTFAUX_Process* process, uint64_t eventTime, uint64_t matchingId, uint32_t scl, void* eventData ) { OTFAUX_FileOp* fileop; Stack *entry; if ( !process ) return 0; entry = stack_next( &process->pendingFileOps ); while ( entry != &process->pendingFileOps ) { fileop = ( OTFAUX_FileOp* )entry; entry = stack_next( entry ); if ( fileop->matchingId == matchingId ) { /* ups, same matchingId used twice */ release_event_data( process, fileop->eventData ); stack_remove( &fileop->e ); stack_push( &process->sharedState->fileOps, &fileop->e ); } } if ( !stack_empty( &process->sharedState->fileOps ) ) { fileop = ( OTFAUX_FileOp* )stack_pop( &process->sharedState->fileOps ); } else { fileop = calloc( 1, sizeof( *fileop ) ); if ( !fileop ) return 0; } fileop->eventTime = eventTime; fileop->matchingId = matchingId; fileop->scl = scl; fileop->eventData = eventData; stack_init( &fileop->e ); stack_add( &process->pendingFileOps, &fileop->e ); return 1; } int OTFAUX_Process_endFileOp( OTFAUX_Process* process, uint64_t eventTime, uint64_t matchingId ) { OTFAUX_FileOp* fileop; Stack *entry; if ( !process ) return 0; entry = stack_next( &process->pendingFileOps ); while ( entry != &process->pendingFileOps ) { fileop = ( OTFAUX_FileOp* )entry; entry = stack_next( entry ); if ( fileop->matchingId == matchingId ) { /* ups, same matchingId used twice */ release_event_data( process, fileop->eventData ); stack_remove( &fileop->e ); stack_push( &process->sharedState->fileOps, &fileop->e ); return 1; } } /* matchingId not found */ return 0; } int OTFAUX_Process_updateCounter( OTFAUX_Process* process, uint64_t eventTime, uint32_t counterId, uint64_t value, void* eventData ) { uint32_t counter_hash; OTFAUX_Counter* counter; OTFAUX_Counter** bucket; if ( !process ) return 0; counter_hash = hash( &counterId, sizeof( counterId ), 0 ); bucket = &process->counters[ counter_hash & COUNTER_HASH_MASK ]; counter = *bucket; while ( counter ) { if ( counter->id == counterId ) { release_event_data( process, counter->eventData ); break; } counter = counter->next; } if ( !counter ) { counter = calloc( 1, sizeof( *counter ) ); if ( !counter ) return 0; counter->id = counterId; counter->next = *bucket; *bucket = counter; } counter->eventTime = eventTime; counter->value = value; counter->eventData = eventData; return 1; } int OTFAUX_Process_writeStack( OTFAUX_Process* process, uint64_t snapshotTime, void* userData ) { int ret = 1; Stack* entry; if ( !process ) return 0; if ( !process->sharedState->writeEnterSnapshot ) return 1; entry = stack_prev( &process->functionStack ); while ( ret && entry != &process->functionStack ) { OTFAUX_FunctionCall* call = ( OTFAUX_FunctionCall* )entry; entry = stack_prev( entry ); ret = process->sharedState->writeEnterSnapshot( userData, snapshotTime, call->eventTime, process->id, call->function, call->scl, call->eventData ); } return ret; } int OTFAUX_Process_writeSends( OTFAUX_Process* process, uint64_t snapshotTime, void* userData ) { int ret = 1; Stack* entry; if ( !process ) return 0; if ( !process->sharedState->writeSendSnapshot ) return 1; cleanup_pending_sends( process, snapshotTime ); entry = stack_next( &process->pendingSends ); while ( ret && entry != &process->pendingSends ) { OTFAUX_Message* msg = ( OTFAUX_Message* )entry; entry = stack_next( entry ); ret = process->sharedState->writeSendSnapshot( userData, snapshotTime, msg->eventTime, process->id, msg->receiver, msg->comm, msg->tag, msg->length, msg->scl, msg->recvTime, msg->recvLength, msg->recvScl, msg->eventData ); } return ret; } int OTFAUX_Process_writeOpenFiles( OTFAUX_Process* process, uint64_t snapshotTime, void* userData ) { int ret = 1; Stack* entry; if ( !process ) return 0; if ( !process->sharedState->writeOpenFileSnapshot ) return 1; entry = stack_next( &process->openFiles ); while ( ret && entry != &process->openFiles ) { OTFAUX_File* file = ( OTFAUX_File* )entry; entry = stack_next( entry ); ret = process->sharedState->writeOpenFileSnapshot( userData, snapshotTime, file->eventTime, process->id, file->id, file->handleId, file->scl, file->eventData ); } return ret; } int OTFAUX_Process_writeCollOps( OTFAUX_Process* process, uint64_t snapshotTime, void* userData ) { int ret = 1; int i; Stack* entry; if ( !process ) return 0; if ( !process->sharedState->writeBeginCollopSnapshot && !process->sharedState->writeCollopCountSnapshot ) return 1; entry = stack_next( &process->pendingCollOps ); while ( ret && entry != &process->pendingCollOps ) { OTFAUX_CollOp* collop = ( OTFAUX_CollOp* )entry; entry = stack_next( entry ); ret = process->sharedState->writeBeginCollopSnapshot( userData, snapshotTime, collop->eventTime, process->id, collop->collOp, collop->matchingId, collop->comm, collop->root, collop->bytesSent, collop->bytesRecv, collop->scl, collop->eventData ); } for ( i = 0; ret && i < COLLOPCOUNT_HASH_SIZE; i++ ) { OTFAUX_CollOpCount* collop_count = process->collOpCounts[ i ]; while ( ret && collop_count ) { ret = process->sharedState->writeCollopCountSnapshot( userData, snapshotTime, process->id, collop_count->comm, collop_count->count ); collop_count = collop_count->next; } } return ret; } int OTFAUX_Process_writeFileOps( OTFAUX_Process* process, uint64_t snapshotTime, void* userData ) { int ret = 1; Stack* entry; if ( !process ) return 0; if ( !process->sharedState->writeBeginFileOpSnapshot ) return 1; entry = stack_next( &process->pendingFileOps ); while ( ret && entry != &process->pendingFileOps ) { OTFAUX_FileOp* fileop = ( OTFAUX_FileOp* )entry; entry = stack_next( entry ); ret = process->sharedState->writeBeginFileOpSnapshot( userData, snapshotTime, fileop->eventTime, process->id, fileop->matchingId, fileop->scl, fileop->eventData ); } return ret; } int OTFAUX_Process_writeCounters( OTFAUX_Process* process, uint64_t snapshotTime, void* userData ) { int ret = 1; int i; if ( !process ) return 0; if ( !process->sharedState->writeCounterSnapshot ) return 1; for ( i = 0; ret && i < COUNTER_HASH_SIZE; i++ ) { OTFAUX_Counter* counter = process->counters[ i ]; while ( ret && counter ) { ret = process->sharedState->writeCounterSnapshot( userData, snapshotTime, counter->eventTime, process->id, counter->id, counter->value, counter->eventData ); counter = counter->next; } } return ret; } eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/PaxHeaders.7332/OTFAUX_MsgMatching.h0000644000000000000000000000013112544237152024417 xustar0030 mtime=1435582058.531899952 29 atime=1508138855.96742072 30 ctime=1508162366.261778787 eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/OTFAUX_MsgMatching.h0000644000175000017500000000506312544237152025613 0ustar00trahaytrahay00000000000000#ifndef OTFAUX_MSGMATCHING_H #define OTFAUX_MSGMATCHING_H #include #include /** * @file otfauxlib/OTFAUX_MsgMatching.h * * @brief Provides a module to match MPI P2P massages. */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** * @defgroup msgmatch Module to match messages. * * @{ */ /** Opaque type for using the matching module. */ typedef OTFAUX_State OTFAUX_MsgMatching_Context; /** Create a context for matching messages. */ OTFAUX_MsgMatching_Context* OTFAUX_MsgMatching_create( void ); /** Destroy a context previously created with @a OTFAUX_MsgMatching_Create. */ void OTFAUX_MsgMatching_destroy( OTFAUX_MsgMatching_Context* mm_context ); /** Provide a recv event for matching. */ void OTFAUX_MsgMatching_enqueueRecv( OTFAUX_MsgMatching_Context* mm_context, uint64_t sender, uint64_t receiver, uint32_t tag, uint32_t comm, uint64_t time, uint32_t size, uint32_t scl ); /** * Try to match a send with the corresponding recv. * * @return 1 for success * 0 for no recv */ int OTFAUX_MsgMatching_matchSend( OTFAUX_MsgMatching_Context* mm_context, uint64_t sender, uint64_t receiver, uint32_t tag, uint32_t comm, uint64_t* ptime, uint32_t* psize, uint32_t* pscl ); /** * If you think the OTFAUX_MsgMatching_Context holds to much memory, you can * order him to release unused memory. * */ void OTFAUX_MsgMatching_releaseMemory( OTFAUX_MsgMatching_Context* mm_context ); /** * @} */ /** * @defgroup otfauxtud Special KeyValue names/types for messages matching used * by the TU Dresden * * @{ */ #define OTFAUX_KEYVALUE_TUD_P2P_RECEIVED_TIME_NAME "TUD::p2p-received-time" #define OTFAUX_KEYVALUE_TUD_P2P_RECEIVED_TIME_TYPE OTF_UINT64 #define OTFAUX_KEYVALUE_TUD_P2P_RECEIVED_SIZE_NAME "TUD::p2p-received-size" #define OTFAUX_KEYVALUE_TUD_P2P_RECEIVED_SIZE_TYPE OTF_UINT32 #define OTFAUX_KEYVALUE_TUD_P2P_RECEIVED_SCL_NAME "TUD::p2p-received-scl" #define OTFAUX_KEYVALUE_TUD_P2P_RECEIVED_SCL_TYPE OTF_UINT32 /** * @} */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTFAUX_MSGMATCHING_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/PaxHeaders.7332/OTFAUX_MsgMatching.c0000644000000000000000000000013212544237152024413 xustar0030 mtime=1435582058.531899952 30 atime=1508138855.931419821 30 ctime=1508162366.269779487 eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/OTFAUX_MsgMatching.c0000644000175000017500000000457512544237152025615 0ustar00trahaytrahay00000000000000#ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include "otfaux.h" OTFAUX_MsgMatching_Context* OTFAUX_MsgMatching_create( void ) { return OTFAUX_State_create(); } void OTFAUX_MsgMatching_destroy( OTFAUX_MsgMatching_Context* mm_context ) { OTFAUX_State_destroy( mm_context ); } void OTFAUX_MsgMatching_enqueueRecv( OTFAUX_MsgMatching_Context* mm_context, uint64_t sender, uint64_t receiver, uint32_t tag, uint32_t comm, uint64_t time, uint32_t size, uint32_t scl ) { OTFAUX_State_enqueueRecvMsg( mm_context, time, receiver, sender, comm, tag, size, scl ); } int OTFAUX_MsgMatching_matchSend( OTFAUX_MsgMatching_Context* mm_context, uint64_t sender, uint64_t receiver, uint32_t tag, uint32_t comm, uint64_t* ptime, uint32_t* psize, uint32_t* pscl ) { /* * return 0 if no matching receive was found, * which is 2 from OTFAUX_State_processSendMsg */ return 1 == OTFAUX_State_processSendMsg( mm_context, 0, sender, receiver, comm, tag, 0, 0, ptime, psize, pscl, NULL ); } /** release empty queues and recv in free list */ void OTFAUX_MsgMatching_releaseMemory( OTFAUX_MsgMatching_Context* mm_context ) { ( void )mm_context; /* nothing to do */ } eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/PaxHeaders.7332/OTFAUX_Thumbnail.h0000644000000000000000000000013112544237152024141 xustar0030 mtime=1435582058.531899952 29 atime=1508138855.96742072 30 ctime=1508162366.265779137 eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/OTFAUX_Thumbnail.h0000644000175000017500000001243412544237152025335 0ustar00trahaytrahay00000000000000#ifndef OTFAUX_THUMBNAIL_H #define OTFAUX_THUMBNAIL_H #include #include /** * @file otfauxlib/OTFAUX_Thumbnail.h * * @brief Provides a module to collect data for thumbnail generation. */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** * @defgroup thumbnail Module for thumbnail generation. * * @usage: * * ctx = OTFAUX_Thumbnail_Create(minTime, maxTime, 1024); * * announce all interesting processes: * OTFAUX_Thumbnail_declareProcess(ctx, ...); * * repeatedly call for interesting processes: * OTFAUX_Thumbnail_handleEnter(ctx, ...); * OTFAUX_Thumbnail_handleLeave(ctx, ...); * * at end, for all processes: * OTFAUX_ThumbnailData td; * OTFAUX_Thumbnail_getData(ctx, process, &td); * .. do something with td.start_pixel and td.function .. * * OTFAUX_Thumbnail_Destroy(ctx); * * @{ */ /** Opaque type for using the thumbnail module. */ typedef OTFAUX_State OTFAUX_Thumbnail_Context; /** * Create a context for thumbnail generation. * * @param minTime Minimum timestamp of the trace file. * @param maxTime Maximum timestamp of the trace file. * @param width The width in pixels of the thumbnail. * * @return The context. */ OTFAUX_Thumbnail_Context* OTFAUX_Thumbnail_create( uint64_t minTime, uint64_t maxTime, uint32_t width ); /** * Destroy a context previously created with @a OTFAUX_Thumbnail_Create. * * @param tn_context The context. */ void OTFAUX_Thumbnail_destroy( OTFAUX_Thumbnail_Context* tn_context ); /** * Declares that the process @a process should be handled by this context. * * @param tn_context The context. * * @return 1 on success. */ int OTFAUX_Thumbnail_declareProcess( OTFAUX_Thumbnail_Context* tn_context, uint64_t process ); /** * Declare that the process @a process has entered the fucntion @a function * at timestamp @a timestamp. * * This function needs to be called in monotonically increasing timestamp order. * * @param tn_context The context. * @param timestamp The timestamp. * @param process The process. * @param function The function. * * @return 1 on success. */ int OTFAUX_Thumbnail_handleEnter( OTFAUX_Thumbnail_Context* tn_context, uint64_t timestamp, uint64_t process, uint32_t function ); /** * Declare that the process @a process has left the current fucntion at * timestamp @a timestamp. * * This function needs to be called in monotonically increasing timestamp order. * * @param tn_context The context. * @param timestamp The timestamp. * @param process The process. * * @return 1 on success. */ int OTFAUX_Thumbnail_handleLeave( OTFAUX_Thumbnail_Context* tn_context, uint64_t timestamp, uint64_t process ); /** * Declare that the handling of the enter and leave events is over. * * @param tn_context The context. * * @return 1 on success. */ int OTFAUX_Thumbnail_finalize( OTFAUX_Thumbnail_Context* tn_context ); char* OTFAUX_Thumbnail_getFilename( const char* namestub ); /** * Writes the processes data of the context to a file. * * The writing is designed so that the data of multuiple contexts can be * written to one file to form a thumbnail. The @a create parameter alows * this. The writing of the first context should set the @a create * parameter and provide in the variable argument list the total number of * processes which will be written, over all comming contexts as an uint32_t. * If the @a create parameter is not set, no file will be created and no * header will be written, only the data from the given context will be * appended to the file. The width of the file should match the width of this * context. * * @param tn_context The context. * @param namestub The name of the file. * @param create Create the thumb file, or append. * @param ... The total number of processes as an uint32_t, if @a * create is set. * * @return 1 on success. */ int OTFAUX_Thumbnail_write( const OTFAUX_Thumbnail_Context* tn_context, const char* namestub, int create, ... ); /** * @defgroup thumbnailreader Module to read a thumbnail. */ typedef struct OTFAUX_ThumbnailReader OTFAUX_ThumbnailReader; OTFAUX_ThumbnailReader* OTFAUX_ThumbnailReader_open( const char* namestub ); int OTFAUX_ThumbnailReader_close( OTFAUX_ThumbnailReader* tn_reader ); int OTFAUX_ThumbnailReader_getWidth( const OTFAUX_ThumbnailReader* tn_reader, uint32_t* width ); int OTFAUX_ThumbnailReader_getNumberOfProcs( const OTFAUX_ThumbnailReader* tn_reader, uint32_t* nprocs ); int OTFAUX_ThumbnailReader_read( OTFAUX_ThumbnailReader* tn_reader, void (* process_handler)( void*, uint64_t, const uint32_t* ), void* data ); /** * @} */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTFAUX_THUMBNAIL_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/PaxHeaders.7332/OTFAUX_SharedState.h0000644000000000000000000000013112544237152024425 xustar0030 mtime=1435582058.531899952 29 atime=1508138855.96742072 30 ctime=1508162366.265779137 eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/OTFAUX_SharedState.h0000644000175000017500000000212412544237152025614 0ustar00trahaytrahay00000000000000#ifndef OTFAUX_SHARED_STATE_H #define OTFAUX_SHARED_STATE_H 1 #include "OTFAUX_Stack.h" typedef struct OTFAUX_SharedState OTFAUX_SharedState; struct OTFAUX_SharedState { /* unused OTFAUX_FunctionCall objects */ Stack functionCalls; /* unused OTFAUX_File objects */ Stack files; /* unused OTFAUX_CollOp objects */ Stack collOps; /* unused OTFAUX_FileOps objects */ Stack fileOps; /* Snapshot writing callbacks */ OTFAUX_WriteEnterSnapshotCallback writeEnterSnapshot; OTFAUX_WriteSendSnapshotCallback writeSendSnapshot; OTFAUX_WriteOpenFileSnapshotCallback writeOpenFileSnapshot; OTFAUX_WriteBeginCollopSnapshotCallback writeBeginCollopSnapshot; OTFAUX_WriteBeginFileOpSnapshotCallback writeBeginFileOpSnapshot; OTFAUX_WriteCollopCountSnapshotCallback writeCollopCountSnapshot; OTFAUX_WriteCounterSnapshotCallback writeCounterSnapshot; /* user provided callback to release an event data */ OTFAUX_ReleaseEventData releaseEventData; void* userDataForReleaseEventData; }; #endif /* OTFAUX_SHARED_STATE_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/PaxHeaders.7332/OTFAUX_Stack.h0000644000000000000000000000013112544237152023263 xustar0030 mtime=1435582058.531899952 29 atime=1508138855.96742072 30 ctime=1508162366.269779487 eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/OTFAUX_Stack.h0000644000175000017500000000217212544237152024455 0ustar00trahaytrahay00000000000000#ifndef OTFAUX_STACK_H #define OTFAUX_STACK_H 1 #include typedef struct Stack { struct Stack* prev; struct Stack* next; } Stack; static void stack_init( Stack* stack ) { stack->next = stack; stack->prev = stack; } static Stack* stack_next( Stack* stack ) { return stack->next; } static Stack* stack_prev( Stack* stack ) { return stack->prev; } static void stack_remove( Stack* stack ) { stack->prev->next = stack->next; stack->next->prev = stack->prev; stack_init( stack ); } static Stack* stack_pop( Stack* stack ) { Stack* pop = stack->next; if ( pop == stack ) return NULL; stack_remove( pop ); return pop; } static int stack_empty( Stack* stack ) { return stack == stack->next; } static void stack_push( Stack* stack, Stack* entry ) { entry->next = stack->next; entry->prev = stack; stack->next->prev = entry; stack->next = entry; } static void stack_add( Stack* stack, Stack* entry ) { entry->prev = stack->prev; entry->next = stack; stack->prev->next = entry; stack->prev = entry; } #endif /* OTFAUX_STACK_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/PaxHeaders.7332/OTFAUX_State.c0000644000000000000000000000013212544237152023272 xustar0030 mtime=1435582058.531899952 30 atime=1508138855.935419921 30 ctime=1508162366.273779835 eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/OTFAUX_State.c0000644000175000017500000005155612544237152024475 0ustar00trahaytrahay00000000000000#ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include "OTFAUX_State.h" #include "OTFAUX_Process.h" #include "OTFAUX_SharedState.h" #include "OTFAUX_Thumbnail.h" #define PROCESSES_HASH_SHIFT 10 #define PROCESSES_HASH_SIZE (1 << PROCESSES_HASH_SHIFT) #define PROCESSES_HASH_MASK (PROCESSES_HASH_SIZE - 1) struct OTFAUX_State { /** The processes */ OTFAUX_Process* processes[ PROCESSES_HASH_SIZE ]; /** sampling timestamps */ uint32_t timestampsSize, timestampsPosition; uint64_t* timestamps; OTFAUX_SharedState sharedState; }; OTFAUX_State* OTFAUX_State_create( void ) { OTFAUX_State* new_state = NULL; /* Please unused funciton warning */ ( void )stack_next; ( void )stack_prev; ( void )stack_empty; ( void )stack_push; ( void )stack_add; new_state = calloc( 1, sizeof( *new_state ) ); if ( !new_state ) return NULL; stack_init( &new_state->sharedState.functionCalls ); stack_init( &new_state->sharedState.files ); stack_init( &new_state->sharedState.collOps ); stack_init( &new_state->sharedState.fileOps ); return new_state; } void OTFAUX_State_destroy( OTFAUX_State* auxState ) { int i; Stack* entry; for ( i = 0; i < PROCESSES_HASH_SIZE; i++ ) { while ( auxState->processes[ i ] ) { OTFAUX_Process* next = auxState->processes[ i ]->next; OTFAUX_Process_destroy( auxState->processes[ i ] ); auxState->processes[ i ] = next; } } while ( ( entry = stack_pop( &auxState->sharedState.functionCalls ) ) ) { /* entries do not have eventData attached */ free( entry ); } while ( ( entry = stack_pop( &auxState->sharedState.files ) ) ) { /* entries do not have eventData attached */ free( entry ); } while ( ( entry = stack_pop( &auxState->sharedState.collOps ) ) ) { /* entries do not have eventData attached */ free( entry ); } while ( ( entry = stack_pop( &auxState->sharedState.fileOps ) ) ) { /* entries do not have eventData attached */ free( entry ); } free( auxState->timestamps ); free( auxState ); } int OTFAUX_State_setupThumbnail( OTFAUX_State* auxState, uint64_t minTime, uint64_t maxTime, uint32_t width ) { uint64_t timeDiff; double timeStep; uint32_t i; if ( width == 0 || minTime >= maxTime || ( maxTime - minTime ) < width ) return 0; auxState->timestamps = calloc( width, sizeof( uint64_t ) ); if ( !auxState->timestamps ) { return 0; } /* callculate sample time stamps */ timeDiff = maxTime - minTime; timeStep = ( double )timeDiff / ( double )width; auxState->timestampsSize = width; auxState->timestampsPosition = 0; for ( i = 0; i < width; ++i ) { auxState->timestamps[ i ] = minTime + i * timeStep; } return 1; } static OTFAUX_Process* get_process( OTFAUX_State* auxState, uint64_t processId ) { uint32_t process_hash; OTFAUX_Process** process_bucket; OTFAUX_Process* process; process_hash = hash( &processId, sizeof( processId ), 0 ); process_bucket = &auxState->processes[ process_hash & PROCESSES_HASH_MASK ]; process = *process_bucket; /* search in hash chain */ while ( process ) { if ( process->id == processId ) { /* found, is this an error? */ return process; } process = process->next; } /* create new process */ process = OTFAUX_Process_create( processId, &auxState->sharedState ); if ( !process ) return NULL; /* chain into hash table */ process->next = *process_bucket; *process_bucket = process; return process; } static void update_thumbnail( OTFAUX_State* auxState, uint64_t timestamp ) { if ( !auxState || !auxState->timestamps ) return; if ( auxState->timestampsPosition == auxState->timestampsSize ) return; while ( auxState->timestampsPosition < auxState->timestampsSize && auxState->timestamps[ auxState->timestampsPosition ] < timestamp ) { int i; for ( i = 0; i < PROCESSES_HASH_SIZE; i++ ) { OTFAUX_Process* process = auxState->processes[i]; while ( process ) { OTFAUX_Process_updateThumbnail( process, auxState->timestampsPosition ); process = process->next; } } auxState->timestampsPosition++; } } int OTFAUX_State_declareProcess( OTFAUX_State* auxState, uint64_t processId, int isThumbnailProcess ) { OTFAUX_Process* process; if ( !auxState ) return 0; process = get_process( auxState, processId ); if ( !process ) return 0; if ( isThumbnailProcess ) return OTFAUX_Process_enableThumbnail( process, auxState->timestampsSize ); return 1; } int OTFAUX_State_setReleaseEventDataCallback( OTFAUX_State* auxState, OTFAUX_ReleaseEventData releaseEventDataCallback, void* userData ) { if ( !auxState ) return 0; auxState->sharedState.releaseEventData = releaseEventDataCallback; auxState->sharedState.userDataForReleaseEventData = userData; return 1; } int OTFAUX_State_setWriteEnterSnapshotCallback( OTFAUX_State* auxState, OTFAUX_WriteEnterSnapshotCallback writeEnterSnapshotCallback ) { if ( !auxState ) return 0; auxState->sharedState.writeEnterSnapshot = writeEnterSnapshotCallback; return 1; } int OTFAUX_State_setWriteSendSnapshotCallback( OTFAUX_State* auxState, OTFAUX_WriteSendSnapshotCallback writeSendSnapshotCallback ) { if ( !auxState ) return 0; auxState->sharedState.writeSendSnapshot = writeSendSnapshotCallback; return 1; } int OTFAUX_State_setWriteOpenFileSnapshotCallback( OTFAUX_State* auxState, OTFAUX_WriteOpenFileSnapshotCallback writeOpenFileSnapshotCallback ) { if ( !auxState ) return 0; auxState->sharedState.writeOpenFileSnapshot = writeOpenFileSnapshotCallback; return 1; } int OTFAUX_State_setWriteBeginCollopSnapshotCallback( OTFAUX_State* auxState, OTFAUX_WriteBeginCollopSnapshotCallback writeBeginCollopSnapshotCallback ) { if ( !auxState ) return 0; auxState->sharedState.writeBeginCollopSnapshot = writeBeginCollopSnapshotCallback; return 1; } int OTFAUX_State_setWriteBeginFileOpSnapshotCallback( OTFAUX_State* auxState, OTFAUX_WriteBeginFileOpSnapshotCallback writeBeginFileOpSnapshotCallback ) { if ( !auxState ) return 0; auxState->sharedState.writeBeginFileOpSnapshot = writeBeginFileOpSnapshotCallback; return 1; } int OTFAUX_State_setWriteCollopCountSnapshotCallback( OTFAUX_State* auxState, OTFAUX_WriteCollopCountSnapshotCallback writeCollopCountSnapshotCallback ) { if ( !auxState ) return 0; auxState->sharedState.writeCollopCountSnapshot = writeCollopCountSnapshotCallback; return 1; } int OTFAUX_State_setWriteCounterSnapshotCallback( OTFAUX_State* auxState, OTFAUX_WriteCounterSnapshotCallback writeCounterSnapshotCallback ) { if ( !auxState ) return 0; auxState->sharedState.writeCounterSnapshot = writeCounterSnapshotCallback; return 1; } int OTFAUX_State_enqueueRecvMsg( OTFAUX_State* auxState, uint64_t eventTime, uint64_t receiverProcessId, uint64_t senderProcessId, uint32_t comm, uint32_t tag, uint32_t length, uint32_t scl ) { OTFAUX_Process* process; if ( !auxState ) return 0; process = get_process( auxState, senderProcessId ); if ( !process ) return 0; return OTFAUX_Process_enqueueRecv( process, eventTime, receiverProcessId, comm, tag, length, scl ); } int OTFAUX_State_processEnter( OTFAUX_State* auxState, uint64_t eventTime, uint64_t processId, uint32_t function, uint32_t scl, void* eventData ) { OTFAUX_Process* process; if ( !auxState ) return 0; process = get_process( auxState, processId ); if ( !process ) return 0; update_thumbnail( auxState, eventTime ); return OTFAUX_Process_enterFunction( process, eventTime, function, scl, eventData ); } int OTFAUX_State_processLeave( OTFAUX_State* auxState, uint64_t eventTime, uint64_t processId, uint32_t function ) { OTFAUX_Process* process; if ( !auxState ) return 0; process = get_process( auxState, processId ); if ( !process ) return 0; update_thumbnail( auxState, eventTime ); return OTFAUX_Process_leaveFunction( process, eventTime, function ); } int OTFAUX_State_processSendMsg( OTFAUX_State* auxState, uint64_t eventTime, uint64_t senderProcessId, uint64_t receiverProcessId, uint32_t comm, uint32_t tag, uint32_t length, uint32_t scl, uint64_t* recvTime, uint32_t* recvLength, uint32_t* recvScl, void* eventData ) { OTFAUX_Process* process; if ( !auxState ) return 0; process = get_process( auxState, senderProcessId ); if ( !process ) return 0; return OTFAUX_Process_sendMessage( process, eventTime, receiverProcessId, comm, tag, length, scl, recvTime, recvLength, recvScl, eventData ); } int OTFAUX_State_processBeginCollectiveOperation( OTFAUX_State* auxState, uint64_t eventTime, uint64_t processId, uint32_t comm, uint32_t root, uint32_t collOp, uint64_t matchingId, uint64_t bytesSent, uint64_t bytesRecv, uint32_t scl, void* eventData ) { OTFAUX_Process* process; if ( !auxState ) return 0; process = get_process( auxState, processId ); if ( !process ) return 0; return OTFAUX_Process_beginCollOp( process, eventTime, comm, root, collOp, matchingId, bytesSent, bytesRecv, scl, eventData ); } int OTFAUX_State_processEndCollectiveOperation( OTFAUX_State* auxState, uint64_t eventTime, uint64_t processId, uint64_t matchingId ) { OTFAUX_Process* process; if ( !auxState ) return 0; process = get_process( auxState, processId ); if ( !process ) return 0; return OTFAUX_Process_endCollOp( process, eventTime, matchingId ); } int OTFAUX_State_processCollectiveOperation( OTFAUX_State* auxState, uint64_t eventTime, uint64_t processId, uint32_t comm, uint32_t root, uint32_t collOp, uint64_t bytesSent, uint64_t bytesRecv, uint32_t scl ) { OTFAUX_Process* process; ( void )eventTime; ( void )processId; ( void )root; ( void )collOp; ( void )bytesSent; ( void )bytesRecv; ( void )scl; if ( !auxState ) return 0; process = get_process( auxState, processId ); if ( !process ) return 0; return OTFAUX_Process_countCollOp( process, comm ); } int OTFAUX_State_processFileOpen( OTFAUX_State* auxState, uint64_t eventTime, uint64_t processId, uint32_t fileId, uint64_t handleId, uint32_t scl, void* eventData ) { OTFAUX_Process* process; if ( !auxState ) return 0; process = get_process( auxState, processId ); if ( !process ) return 0; return OTFAUX_Process_openFile( process, eventTime, fileId, handleId, scl, eventData ); } int OTFAUX_State_processFileClose( OTFAUX_State* auxState, uint64_t eventTime, uint64_t processId, uint64_t handleId ) { OTFAUX_Process* process; if ( !auxState ) return 0; process = get_process( auxState, processId ); if ( !process ) return 0; return OTFAUX_Process_closeFile( process, eventTime, handleId ); } int OTFAUX_State_processBeginFileOperation( OTFAUX_State* auxState, uint64_t eventTime, uint64_t processId, uint64_t matchingId, uint32_t scl, void* eventData ) { OTFAUX_Process* process; if ( !auxState ) return 0; process = get_process( auxState, processId ); if ( !process ) return 0; return OTFAUX_Process_beginFileOp( process, eventTime, matchingId, scl, eventData ); } int OTFAUX_State_processEndFileOperation( OTFAUX_State* auxState, uint64_t eventTime, uint64_t processId, uint64_t matchingId ) { OTFAUX_Process* process; if ( !auxState ) return 0; process = get_process( auxState, processId ); if ( !process ) return 0; return OTFAUX_Process_endFileOp( process, eventTime, matchingId ); } int OTFAUX_State_processCounter( OTFAUX_State* auxState, uint64_t eventTime, uint64_t processId, uint32_t counterId, uint64_t value, void* eventData ) { OTFAUX_Process* process; if ( !auxState ) return 0; process = get_process( auxState, processId ); if ( !process ) return 0; return OTFAUX_Process_updateCounter( process, eventTime, counterId, value, eventData ); } int OTFAUX_State_writeSnapshot( OTFAUX_State* auxState, uint64_t snapshotTime, void* userData ) { int i, ret = 1; for ( i = 0; ret && i < PROCESSES_HASH_SIZE; i++ ) { OTFAUX_Process* process = auxState->processes[ i ]; while ( ret && process ) { ret = ret && OTFAUX_Process_writeStack( process, snapshotTime, userData ); ret = ret && OTFAUX_Process_writeSends( process, snapshotTime, userData ); ret = ret && OTFAUX_Process_writeOpenFiles( process, snapshotTime, userData ); ret = ret && OTFAUX_Process_writeCollOps( process, snapshotTime, userData ); ret = ret && OTFAUX_Process_writeFileOps( process, snapshotTime, userData ); ret = ret && OTFAUX_Process_writeCounters( process, snapshotTime, userData ); process = process->next; } } return ret; } int OTFAUX_State_writeThumbnail( OTFAUX_State* auxState, const char* namestub, int create, ... ) { int ret = 1; char* filename; FILE* file; int i; if ( !namestub || !auxState || !auxState->timestamps ) return 0; /* finalize thumbnail sample points with one past the last timestamp */ update_thumbnail( auxState, auxState->timestamps[ auxState->timestampsSize - 1 ] + 1 ); filename = OTFAUX_Thumbnail_getFilename( namestub ); if ( !filename ) return 0; file = fopen( filename, create ? "w" : "a" ); free( filename ); if ( !file ) { return 0; } /* write header */ if ( create ) { uint32_t total_number_of_procs; va_list args; va_start( args, create ); total_number_of_procs = va_arg( args, uint32_t ); va_end( args ); fprintf( file, "0:%x,%x\n", auxState->timestampsSize, total_number_of_procs ); } /* write processes */ for ( i = 0; i < PROCESSES_HASH_SIZE; i++ ) { OTFAUX_Process* process = auxState->processes[ i ]; while ( process ) { OTFAUX_Process_writeThumbnail( process, auxState->timestampsSize, file ); process = process->next; } } ret = !ferror( file ); fclose( file ); return ret; } eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/PaxHeaders.7332/libotfaux_vs08.vcproj0000644000000000000000000000013112544237152025061 xustar0030 mtime=1435582058.531899952 29 atime=1507797543.92689217 30 ctime=1508162366.273779835 eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/libotfaux_vs08.vcproj0000644000175000017500000001457712544237152026267 0ustar00trahaytrahay00000000000000 eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212544237152023014 xustar0030 mtime=1435582058.531899952 30 atime=1508162197.592230554 30 ctime=1508162366.257778439 eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/Makefile.am0000644000175000017500000000121312544237152024200 0ustar00trahaytrahay00000000000000include_HEADERS = otfaux.h \ OTFAUX_State.h \ OTFAUX_MsgMatching.h \ OTFAUX_Thumbnail.h noinst_HEADERS = OTFAUX_SharedState.h \ OTFAUX_Process.h \ OTFAUX_Stack.h lib_LTLIBRARIES = libotfaux.la libotfaux_la_CPPFLAGS = $(AM_CPPFLAGS) \ -I$(top_builddir)/otflib \ -I$(top_srcdir)/otflib \ -I$(top_srcdir)/vendor/jenkins_hash libotfaux_la_CFLAGS = -prefer-pic #libotfaux_la_LDFLAGS = -version-info @OTF_VERSION_LIBRARY@ libotfaux_la_LIBADD = $(top_builddir)/vendor/jenkins_hash/libjenkins_hash.la libotfaux_la_SOURCES = \ OTFAUX_MsgMatching.c \ OTFAUX_Thumbnail.c \ OTFAUX_Process.c \ OTFAUX_State.c EXTRA_DIST = \ libotfaux_vs08.vcproj eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/PaxHeaders.7332/OTFAUX_Process.h0000644000000000000000000000013112544237152023634 xustar0030 mtime=1435582058.531899952 29 atime=1508138855.96742072 30 ctime=1508162366.265779137 eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/OTFAUX_Process.h0000644000175000017500000001412212544237152025024 0ustar00trahaytrahay00000000000000#ifndef OTFAUX_PROCESS_H #define OTFAUX_PROCESS_H #include "OTFAUX_SharedState.h" #include "OTFAUX_Stack.h" #define QUEUE_HASH_SHIFT 10 #define QUEUE_HASH_SIZE (1 << QUEUE_HASH_SHIFT) #define QUEUE_HASH_MASK (QUEUE_HASH_SIZE - 1) #define COLLOPCOUNT_HASH_SHIFT 8 #define COLLOPCOUNT_HASH_SIZE (1 << COLLOPCOUNT_HASH_SHIFT) #define COLLOPCOUNT_HASH_MASK (COLLOPCOUNT_HASH_SIZE - 1) #define COUNTER_HASH_SHIFT 4 #define COUNTER_HASH_SIZE (1 << COUNTER_HASH_SHIFT) #define COUNTER_HASH_MASK (COUNTER_HASH_SIZE - 1) typedef struct OTFAUX_ReciveQueue OTFAUX_ReciveQueue; typedef struct OTFAUX_CollOpCount OTFAUX_CollOpCount; typedef struct OTFAUX_Counter OTFAUX_Counter; typedef struct OTFAUX_Process OTFAUX_Process; struct OTFAUX_Process { /* For hash chaining in OTFAUX_State */ OTFAUX_Process* next; uint64_t id; uint32_t* thumbnail; /* function stack */ Stack functionStack; /* cache of recived messages */ OTFAUX_ReciveQueue* receiveQueues[ QUEUE_HASH_SIZE ]; /* list of pending messages */ Stack pendingSends; /* list of open files */ Stack openFiles; /* map of begun collective operations */ Stack pendingCollOps; /* cache of recived messages */ OTFAUX_CollOpCount* collOpCounts[ COLLOPCOUNT_HASH_SIZE ]; /* unfinished file operations */ Stack pendingFileOps; /* last value of counter */ OTFAUX_Counter* counters[ COUNTER_HASH_SIZE ]; /* Shared data among all processes from the OTFAUX_State */ OTFAUX_SharedState* sharedState; }; OTFAUX_Process* OTFAUX_Process_create( uint64_t processId, OTFAUX_SharedState* sharedState ); void OTFAUX_Process_destroy( OTFAUX_Process* process ); int OTFAUX_Process_enableThumbnail( OTFAUX_Process* process, uint32_t thumbnailSize ); void OTFAUX_Process_updateThumbnail( OTFAUX_Process* process, uint32_t timestampsPosition ); void OTFAUX_Process_writeThumbnail( OTFAUX_Process* process, uint32_t timestampsSize, FILE* out ); int OTFAUX_Process_enqueueRecv( OTFAUX_Process* process, uint64_t eventTime, uint32_t receiverProcessId, uint32_t comm, uint32_t tag, uint32_t length, uint32_t scl ); int OTFAUX_Process_enterFunction( OTFAUX_Process* process, uint64_t eventTime, uint32_t function, uint32_t scl, void* eventData ); int OTFAUX_Process_leaveFunction( OTFAUX_Process* process, uint64_t eventTime, uint32_t function ); int OTFAUX_Process_sendMessage( OTFAUX_Process* process, uint64_t eventTime, uint32_t receiverProcessId, uint32_t comm, uint32_t tag, uint32_t length, uint32_t scl, uint64_t* recvTime, uint32_t* recvLength, uint32_t* recvScl, void* eventData ); int OTFAUX_Process_beginCollOp( OTFAUX_Process* process, uint64_t eventTime, uint32_t comm, uint32_t root, uint32_t collOp, uint64_t matchingId, uint64_t bytesSent, uint64_t bytesRecv, uint32_t scl, void* eventData ); int OTFAUX_Process_endCollOp( OTFAUX_Process* process, uint64_t eventTime, uint64_t matchingId ); int OTFAUX_Process_countCollOp( OTFAUX_Process* process, uint32_t comm ); int OTFAUX_Process_openFile( OTFAUX_Process* process, uint64_t eventTime, uint32_t fileId, uint64_t handleId, uint32_t scl, void* eventData ); int OTFAUX_Process_closeFile( OTFAUX_Process* process, uint64_t eventTime, uint64_t handleId ); int OTFAUX_Process_beginFileOp( OTFAUX_Process* process, uint64_t eventTime, uint64_t matchingId, uint32_t scl, void* eventData ); int OTFAUX_Process_endFileOp( OTFAUX_Process* process, uint64_t eventTime, uint64_t matchingId ); int OTFAUX_Process_updateCounter( OTFAUX_Process* process, uint64_t eventTime, uint32_t counterId, uint64_t value, void* eventData ); int OTFAUX_Process_writeStack( OTFAUX_Process* process, uint64_t snapshotTime, void* userData ); int OTFAUX_Process_writeSends( OTFAUX_Process* process, uint64_t snapshotTime, void* userData ); int OTFAUX_Process_writeOpenFiles( OTFAUX_Process* process, uint64_t snapshotTime, void* userData ); int OTFAUX_Process_writeCollOps( OTFAUX_Process* process, uint64_t snapshotTime, void* userData ); int OTFAUX_Process_writeFileOps( OTFAUX_Process* process, uint64_t snapshotTime, void* userData ); int OTFAUX_Process_writeCounters( OTFAUX_Process* process, uint64_t snapshotTime, void* userData ); #endif /* OTFAUX_PROCESS_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/PaxHeaders.7332/Makefile.in0000644000000000000000000000013113171135225023017 xustar0029 mtime=1508162197.62423278 30 atime=1508162279.702464372 30 ctime=1508162366.269779487 eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/Makefile.in0000644000175000017500000007122113171135225024212 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = otfauxlib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/m4/libtool.m4 \ $(top_srcdir)/config/m4/ltoptions.m4 \ $(top_srcdir)/config/m4/ltsugar.m4 \ $(top_srcdir)/config/m4/ltversion.m4 \ $(top_srcdir)/config/m4/lt~obsolete.m4 \ $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/config/m4/acinclude.debug.m4 \ $(top_srcdir)/config/m4/acinclude.math.m4 \ $(top_srcdir)/config/m4/acinclude.mpi.m4 \ $(top_srcdir)/config/m4/acinclude.omp.m4 \ $(top_srcdir)/config/m4/acinclude.pdflatex_pgfplots.m4 \ $(top_srcdir)/config/m4/acinclude.swig_python.m4 \ $(top_srcdir)/config/m4/acinclude.vtf3.m4 \ $(top_srcdir)/config/m4/acinclude.verbose.m4 \ $(top_srcdir)/config/m4/acinclude.zlib.m4 \ $(top_srcdir)/config/m4/acinclude.zoidfs.m4 \ $(top_srcdir)/config/m4/acarchive/ax_mpi.m4 \ $(top_srcdir)/config/m4/acarchive/ax_openmp.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \ $(noinst_HEADERS) $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" LTLIBRARIES = $(lib_LTLIBRARIES) libotfaux_la_DEPENDENCIES = \ $(top_builddir)/vendor/jenkins_hash/libjenkins_hash.la am_libotfaux_la_OBJECTS = libotfaux_la-OTFAUX_MsgMatching.lo \ libotfaux_la-OTFAUX_Thumbnail.lo \ libotfaux_la-OTFAUX_Process.lo libotfaux_la-OTFAUX_State.lo libotfaux_la_OBJECTS = $(am_libotfaux_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libotfaux_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libotfaux_la_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libotfaux_la_SOURCES) DIST_SOURCES = $(libotfaux_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(include_HEADERS) $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BMI_INCLUDE_DIR = @BMI_INCLUDE_DIR@ BMI_LIB_DIR = @BMI_LIB_DIR@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLOCK_GETTIME_LIB = @CLOCK_GETTIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHLIB = @MATHLIB@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICFLAGS = @MPICFLAGS@ MPICXX = @MPICXX@ MPICXXFLAGS = @MPICXXFLAGS@ MPILIBS = @MPILIBS@ MPI_INCLUDE_DIR = @MPI_INCLUDE_DIR@ MPI_INCLUDE_LINE = @MPI_INCLUDE_LINE@ MPI_LIB_DIR = @MPI_LIB_DIR@ MPI_LIB_LINE = @MPI_LIB_LINE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENMP_CXXFLAGS = @OPENMP_CXXFLAGS@ OTF_VERSION_LIBRARY = @OTF_VERSION_LIBRARY@ OTF_VERSION_MAJOR = @OTF_VERSION_MAJOR@ OTF_VERSION_MINOR = @OTF_VERSION_MINOR@ OTF_VERSION_STRING = @OTF_VERSION_STRING@ OTF_VERSION_SUB = @OTF_VERSION_SUB@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFTEX = @PDFTEX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWIG = @SWIG@ SWIG_PYTHON_CFLAGS = @SWIG_PYTHON_CFLAGS@ SWIG_PYTHON_OPTS = @SWIG_PYTHON_OPTS@ VERSION = @VERSION@ VTF3_INCLUDE_DIR = @VTF3_INCLUDE_DIR@ VTF3_INCLUDE_LINE = @VTF3_INCLUDE_LINE@ VTF3_LIB_DIR = @VTF3_LIB_DIR@ VTF3_LIB_LINE = @VTF3_LIB_LINE@ ZLIB_INCLUDE_DIR = @ZLIB_INCLUDE_DIR@ ZLIB_INCLUDE_LINE = @ZLIB_INCLUDE_LINE@ ZLIB_LIB_DIR = @ZLIB_LIB_DIR@ ZLIB_LIB_LINE = @ZLIB_LIB_LINE@ ZOIDFS_INCLUDE_DIR = @ZOIDFS_INCLUDE_DIR@ ZOIDFS_INCLUDE_LINE = @ZOIDFS_INCLUDE_LINE@ ZOIDFS_LIB_DIR = @ZOIDFS_LIB_DIR@ ZOIDFS_LIB_LINE = @ZOIDFS_LIB_LINE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_inttypes_h = @have_inttypes_h@ have_stdint_h = @have_stdint_h@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ python_config = @python_config@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sizeof_long = @sizeof_long@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ include_HEADERS = otfaux.h \ OTFAUX_State.h \ OTFAUX_MsgMatching.h \ OTFAUX_Thumbnail.h noinst_HEADERS = OTFAUX_SharedState.h \ OTFAUX_Process.h \ OTFAUX_Stack.h lib_LTLIBRARIES = libotfaux.la libotfaux_la_CPPFLAGS = $(AM_CPPFLAGS) \ -I$(top_builddir)/otflib \ -I$(top_srcdir)/otflib \ -I$(top_srcdir)/vendor/jenkins_hash libotfaux_la_CFLAGS = -prefer-pic #libotfaux_la_LDFLAGS = -version-info @OTF_VERSION_LIBRARY@ libotfaux_la_LIBADD = $(top_builddir)/vendor/jenkins_hash/libjenkins_hash.la libotfaux_la_SOURCES = \ OTFAUX_MsgMatching.c \ OTFAUX_Thumbnail.c \ OTFAUX_Process.c \ OTFAUX_State.c EXTRA_DIST = \ libotfaux_vs08.vcproj all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign otfauxlib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign otfauxlib/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libotfaux.la: $(libotfaux_la_OBJECTS) $(libotfaux_la_DEPENDENCIES) $(EXTRA_libotfaux_la_DEPENDENCIES) $(AM_V_CCLD)$(libotfaux_la_LINK) -rpath $(libdir) $(libotfaux_la_OBJECTS) $(libotfaux_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libotfaux_la-OTFAUX_MsgMatching.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libotfaux_la-OTFAUX_Process.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libotfaux_la-OTFAUX_State.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libotfaux_la-OTFAUX_Thumbnail.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libotfaux_la-OTFAUX_MsgMatching.lo: OTFAUX_MsgMatching.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libotfaux_la_CPPFLAGS) $(CPPFLAGS) $(libotfaux_la_CFLAGS) $(CFLAGS) -MT libotfaux_la-OTFAUX_MsgMatching.lo -MD -MP -MF $(DEPDIR)/libotfaux_la-OTFAUX_MsgMatching.Tpo -c -o libotfaux_la-OTFAUX_MsgMatching.lo `test -f 'OTFAUX_MsgMatching.c' || echo '$(srcdir)/'`OTFAUX_MsgMatching.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libotfaux_la-OTFAUX_MsgMatching.Tpo $(DEPDIR)/libotfaux_la-OTFAUX_MsgMatching.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTFAUX_MsgMatching.c' object='libotfaux_la-OTFAUX_MsgMatching.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libotfaux_la_CPPFLAGS) $(CPPFLAGS) $(libotfaux_la_CFLAGS) $(CFLAGS) -c -o libotfaux_la-OTFAUX_MsgMatching.lo `test -f 'OTFAUX_MsgMatching.c' || echo '$(srcdir)/'`OTFAUX_MsgMatching.c libotfaux_la-OTFAUX_Thumbnail.lo: OTFAUX_Thumbnail.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libotfaux_la_CPPFLAGS) $(CPPFLAGS) $(libotfaux_la_CFLAGS) $(CFLAGS) -MT libotfaux_la-OTFAUX_Thumbnail.lo -MD -MP -MF $(DEPDIR)/libotfaux_la-OTFAUX_Thumbnail.Tpo -c -o libotfaux_la-OTFAUX_Thumbnail.lo `test -f 'OTFAUX_Thumbnail.c' || echo '$(srcdir)/'`OTFAUX_Thumbnail.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libotfaux_la-OTFAUX_Thumbnail.Tpo $(DEPDIR)/libotfaux_la-OTFAUX_Thumbnail.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTFAUX_Thumbnail.c' object='libotfaux_la-OTFAUX_Thumbnail.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libotfaux_la_CPPFLAGS) $(CPPFLAGS) $(libotfaux_la_CFLAGS) $(CFLAGS) -c -o libotfaux_la-OTFAUX_Thumbnail.lo `test -f 'OTFAUX_Thumbnail.c' || echo '$(srcdir)/'`OTFAUX_Thumbnail.c libotfaux_la-OTFAUX_Process.lo: OTFAUX_Process.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libotfaux_la_CPPFLAGS) $(CPPFLAGS) $(libotfaux_la_CFLAGS) $(CFLAGS) -MT libotfaux_la-OTFAUX_Process.lo -MD -MP -MF $(DEPDIR)/libotfaux_la-OTFAUX_Process.Tpo -c -o libotfaux_la-OTFAUX_Process.lo `test -f 'OTFAUX_Process.c' || echo '$(srcdir)/'`OTFAUX_Process.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libotfaux_la-OTFAUX_Process.Tpo $(DEPDIR)/libotfaux_la-OTFAUX_Process.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTFAUX_Process.c' object='libotfaux_la-OTFAUX_Process.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libotfaux_la_CPPFLAGS) $(CPPFLAGS) $(libotfaux_la_CFLAGS) $(CFLAGS) -c -o libotfaux_la-OTFAUX_Process.lo `test -f 'OTFAUX_Process.c' || echo '$(srcdir)/'`OTFAUX_Process.c libotfaux_la-OTFAUX_State.lo: OTFAUX_State.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libotfaux_la_CPPFLAGS) $(CPPFLAGS) $(libotfaux_la_CFLAGS) $(CFLAGS) -MT libotfaux_la-OTFAUX_State.lo -MD -MP -MF $(DEPDIR)/libotfaux_la-OTFAUX_State.Tpo -c -o libotfaux_la-OTFAUX_State.lo `test -f 'OTFAUX_State.c' || echo '$(srcdir)/'`OTFAUX_State.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libotfaux_la-OTFAUX_State.Tpo $(DEPDIR)/libotfaux_la-OTFAUX_State.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTFAUX_State.c' object='libotfaux_la-OTFAUX_State.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libotfaux_la_CPPFLAGS) $(CPPFLAGS) $(libotfaux_la_CFLAGS) $(CFLAGS) -c -o libotfaux_la-OTFAUX_State.lo `test -f 'OTFAUX_State.c' || echo '$(srcdir)/'`OTFAUX_State.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-includeHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am \ install-includeHEADERS install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-includeHEADERS \ uninstall-libLTLIBRARIES .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/PaxHeaders.7332/OTFAUX_State.h0000644000000000000000000000013112544237152023276 xustar0030 mtime=1435582058.531899952 29 atime=1508138855.96742072 30 ctime=1508162366.261778787 eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/OTFAUX_State.h0000644000175000017500000003242212544237152024471 0ustar00trahaytrahay00000000000000#ifndef OTFAUX_STATE_H #define OTFAUX_STATE_H #ifdef __cplusplus extern "C" { #endif typedef struct OTFAUX_State OTFAUX_State; OTFAUX_State* OTFAUX_State_create( void ); void OTFAUX_State_destroy( OTFAUX_State* auxState ); /** * Create a context for thumbnail generation. * * @param minTime Minimum timestamp of the trace file. * @param maxTime Maximum timestamp of the trace file. * @param width The width in pixels of the thumbnail. * * @return 1 on success. */ int OTFAUX_State_setupThumbnail( OTFAUX_State* auxState, uint64_t minTime, uint64_t maxTime, uint32_t width ); /** * Only for processes declared with this function and isThumbnailProcess set * record a thumbnail. * * @return 1 on success. */ int OTFAUX_State_declareProcess( OTFAUX_State* auxState, uint64_t processId, int isThumbnailProcess ); /** * Provide a release function for per-event data passed viw the @a eventData * parameter. * * @return 1 on success. * * @{ */ typedef void ( *OTFAUX_ReleaseEventData )( void* userData, void* eventData ); int OTFAUX_State_setReleaseEventDataCallback( OTFAUX_State* auxState, OTFAUX_ReleaseEventData releaseEventDataCallback, void* userData ); /** * @} */ /** * Provide callbacks when a snapshot will be triggered. * * @return 1 on success. * * @{ */ typedef int ( *OTFAUX_WriteEnterSnapshotCallback )( void* userData, uint64_t snapshotTime, uint64_t eventTime, uint64_t processId, uint32_t function, uint32_t scl, void* eventData ); int OTFAUX_State_setWriteEnterSnapshotCallback( OTFAUX_State* auxState, OTFAUX_WriteEnterSnapshotCallback writeEnterSnapshotCallback ); typedef int ( *OTFAUX_WriteSendSnapshotCallback )( void* userData, uint64_t snapshotTime, uint64_t eventTime, uint64_t senderProcessId, uint64_t receiverProcessId, uint32_t comm, uint32_t tag, uint32_t length, uint32_t scl, uint64_t recvTime, uint32_t recvLength, uint32_t recvScl, void* eventData ); int OTFAUX_State_setWriteSendSnapshotCallback( OTFAUX_State* auxState, OTFAUX_WriteSendSnapshotCallback writeSendSnapshotCallback ); typedef int ( *OTFAUX_WriteOpenFileSnapshotCallback )( void* userData, uint64_t snapshotTime, uint64_t eventTime, uint64_t processId, uint32_t fileId, uint64_t handleId, uint32_t scl, void* eventData ); int OTFAUX_State_setWriteOpenFileSnapshotCallback( OTFAUX_State* auxState, OTFAUX_WriteOpenFileSnapshotCallback writeOpenFileSnapshotCallback ); typedef int ( *OTFAUX_WriteBeginCollopSnapshotCallback )( void* userData, uint64_t snapshotTime, uint64_t eventTime, uint64_t processId, uint32_t collOp, uint64_t matchingId, uint32_t comm, uint32_t root, uint64_t sent, uint64_t received, uint32_t scl, void* eventData ); int OTFAUX_State_setWriteBeginCollopSnapshotCallback( OTFAUX_State* auxState, OTFAUX_WriteBeginCollopSnapshotCallback writeBeginCollopSnapshotCallback ); typedef int ( *OTFAUX_WriteBeginFileOpSnapshotCallback )( void* userData, uint64_t snapshotTime, uint64_t eventTime, uint64_t processId, uint64_t matchingId, uint32_t scl, void* eventData ); int OTFAUX_State_setWriteBeginFileOpSnapshotCallback( OTFAUX_State* auxState, OTFAUX_WriteBeginFileOpSnapshotCallback writeBeginFileOpSnapshotCallback ); typedef int ( *OTFAUX_WriteCollopCountSnapshotCallback )( void* userData, uint64_t snapshotTime, uint64_t processId, uint32_t comm, uint64_t count ); int OTFAUX_State_setWriteCollopCountSnapshotCallback( OTFAUX_State* auxState, OTFAUX_WriteCollopCountSnapshotCallback writeCollopCountSnapshotCallback ); typedef int ( *OTFAUX_WriteCounterSnapshotCallback )( void* userData, uint64_t snapshotTime, uint64_t eventTime, uint64_t processId, uint32_t counter, uint64_t value, void* eventData ); int OTFAUX_State_setWriteCounterSnapshotCallback( OTFAUX_State* auxState, OTFAUX_WriteCounterSnapshotCallback writeCounterSnapshotCallback ); /** * @} */ /** * Provide all receive events a-priori before any other sends. * * @return 1 on success. */ int OTFAUX_State_enqueueRecvMsg( OTFAUX_State* auxState, uint64_t eventTime, uint64_t receiverProcessId, uint64_t senderProcessId, uint32_t comm, uint32_t tag, uint32_t length, uint32_t scl ); /** * @group Event input functions. * * Should be called from an event handler when reading the trace. * * @return 1 on success. * 2 when no matching receive was available * (for @a OTFAUX_State_processSendMsg()) * * @{ */ int OTFAUX_State_processEnter( OTFAUX_State* auxState, uint64_t eventTime, uint64_t processId, uint32_t function, uint32_t scl, void* eventData ); int OTFAUX_State_processLeave( OTFAUX_State* auxState, uint64_t eventTime, uint64_t processId, uint32_t function ); int OTFAUX_State_processSendMsg( OTFAUX_State* auxState, uint64_t eventTime, uint64_t senderProcessId, uint64_t receiverProcessId, uint32_t comm, uint32_t tag, uint32_t length, uint32_t scl, uint64_t* recvTime, uint32_t* recvLength, uint32_t* recvScl, void* eventData ); int OTFAUX_State_processBeginCollectiveOperation( OTFAUX_State* auxState, uint64_t eventTime, uint64_t processId, uint32_t comm, uint32_t root, uint32_t collOp, uint64_t matchingId, uint64_t bytesSent, uint64_t bytesRecv, uint32_t scl, void* eventData ); int OTFAUX_State_processEndCollectiveOperation( OTFAUX_State* auxState, uint64_t eventTime, uint64_t processId, uint64_t matchingId ); int OTFAUX_State_processCollectiveOperation( OTFAUX_State* auxState, uint64_t eventTime, uint64_t processId, uint32_t comm, uint32_t root, uint32_t collOp, uint64_t bytesSent, uint64_t bytesRecv, uint32_t scl ); int OTFAUX_State_processFileOpen( OTFAUX_State* auxState, uint64_t eventTime, uint64_t processId, uint32_t fileId, uint64_t handleId, uint32_t scl, void* eventData ); int OTFAUX_State_processFileClose( OTFAUX_State* auxState, uint64_t eventTime, uint64_t processId, uint64_t handleId ); int OTFAUX_State_processBeginFileOperation( OTFAUX_State* auxState, uint64_t eventTime, uint64_t processId, uint64_t matchingId, uint32_t scl, void* eventData ); /* * Also call OTFAUX_State_processFileOpen or OTFAUX_State_processFileClose * if the operation was an open or close, respectivly. */ int OTFAUX_State_processEndFileOperation( OTFAUX_State* auxState, uint64_t eventTime, uint64_t processId, uint64_t matchingId ); int OTFAUX_State_processCounter( OTFAUX_State* auxState, uint64_t eventTime, uint64_t processId, uint32_t counterId, uint64_t value, void* eventData ); /** * @} */ /** * Trigger snapshot writing. * * @return 1 on success. */ int OTFAUX_State_writeSnapshot( OTFAUX_State* auxState, uint64_t snapshotTime, void* userData ); /** * Writes the processes data of the context to a file. * * The writing is designed so that the data of multuiple contexts can be * written to one file to form a thumbnail. The @a create parameter alows * this. The writing of the first context should set the @a create * parameter and provide in the variable argument list the total number of * processes which will be written, over all comming contexts as an uint32_t. * If the @a create parameter is not set, no file will be created and no * header will be written, only the data from the given context will be * appended to the file. The width of the file should match the width of this * context. * * @param tn_context The context. * @param namestub The name of the file. * @param create Create the thumb file, or append. * @param ... The total number of processes as an uint32_t, if @a * create is set. * * @return 1 on success. */ int OTFAUX_State_writeThumbnail( OTFAUX_State* auxState, const char* namestub, int create, ... ); #ifdef __cplusplus } #endif #endif /* OTFAUX_STATE_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/PaxHeaders.7332/otfaux.h0000644000000000000000000000013112544237152022436 xustar0030 mtime=1435582058.531899952 29 atime=1508138855.95942052 30 ctime=1508162366.257778439 eztrace-1.1-7/extlib/gtg/extlib/otf/otfauxlib/otfaux.h0000644000175000017500000000031512544237152023625 0ustar00trahaytrahay00000000000000#ifndef OTFAUX_H #define OTFAUX_H #include /** * @file otfauxlib/otfaux.h * */ #include #include #include #endif /* OTFAUX_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/PaxHeaders.7332/otf_vc08.sln0000644000000000000000000000013112544237152021130 xustar0030 mtime=1435582058.531899952 30 atime=1507797543.930892299 29 ctime=1508162366.10576517 eztrace-1.1-7/extlib/gtg/extlib/otf/otf_vc08.sln0000644000175000017500000001105612544237152022323 0ustar00trahaytrahay00000000000000 Microsoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libopen-trace-format", "otflib\libotf_vs08.vcproj", "{6B9B49C9-75CD-400D-B736-5EACA04D0A82}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libotfaux", "otfauxlib\libotfaux_vs08.vcproj", "{6B9B49C9-75CD-400D-B736-5EACA04D0A83}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "otfaux", "tools\otfaux\otfaux_vs08.vcproj", "{24587836-ED5E-49DF-A7AD-419FDC208C08}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "otfcompress", "tools\otfcompress\otfcompress_vs08.vcproj", "{B6BBC220-1492-4BEA-A299-9D062133ABAA}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "otfdump", "tools\otfdump\otfdump_vs08.vcproj", "{508A823C-8EAB-4C56-9DFE-4D85B0D24491}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Release Static|Win32 = Release Static|Win32 Release Static|x64 = Release Static|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {6B9B49C9-75CD-400D-B736-5EACA04D0A82}.Debug|Win32.ActiveCfg = Debug|Win32 {6B9B49C9-75CD-400D-B736-5EACA04D0A82}.Debug|Win32.Build.0 = Debug|Win32 {6B9B49C9-75CD-400D-B736-5EACA04D0A82}.Debug|x64.ActiveCfg = Debug|x64 {6B9B49C9-75CD-400D-B736-5EACA04D0A82}.Debug|x64.Build.0 = Debug|x64 {6B9B49C9-75CD-400D-B736-5EACA04D0A82}.Release Static|Win32.ActiveCfg = Release Static|Win32 {6B9B49C9-75CD-400D-B736-5EACA04D0A82}.Release Static|Win32.Build.0 = Release Static|Win32 {6B9B49C9-75CD-400D-B736-5EACA04D0A82}.Release Static|x64.ActiveCfg = Release Static|x64 {6B9B49C9-75CD-400D-B736-5EACA04D0A82}.Release Static|x64.Build.0 = Release Static|x64 {24587836-ED5E-49DF-A7AD-419FDC208C08}.Debug|Win32.ActiveCfg = Debug|Win32 {24587836-ED5E-49DF-A7AD-419FDC208C08}.Debug|Win32.Build.0 = Debug|Win32 {24587836-ED5E-49DF-A7AD-419FDC208C08}.Debug|x64.ActiveCfg = Debug|x64 {24587836-ED5E-49DF-A7AD-419FDC208C08}.Debug|x64.Build.0 = Debug|x64 {24587836-ED5E-49DF-A7AD-419FDC208C08}.Release Static|Win32.ActiveCfg = Release Static|Win32 {24587836-ED5E-49DF-A7AD-419FDC208C08}.Release Static|Win32.Build.0 = Release Static|Win32 {24587836-ED5E-49DF-A7AD-419FDC208C08}.Release Static|x64.ActiveCfg = Release Static|x64 {24587836-ED5E-49DF-A7AD-419FDC208C08}.Release Static|x64.Build.0 = Release Static|x64 {B6BBC220-1492-4BEA-A299-9D062133ABAA}.Debug|Win32.ActiveCfg = Debug|Win32 {B6BBC220-1492-4BEA-A299-9D062133ABAA}.Debug|Win32.Build.0 = Debug|Win32 {B6BBC220-1492-4BEA-A299-9D062133ABAA}.Debug|x64.ActiveCfg = Debug|x64 {B6BBC220-1492-4BEA-A299-9D062133ABAA}.Debug|x64.Build.0 = Debug|x64 {B6BBC220-1492-4BEA-A299-9D062133ABAA}.Release Static|Win32.ActiveCfg = Release Static|Win32 {B6BBC220-1492-4BEA-A299-9D062133ABAA}.Release Static|Win32.Build.0 = Release Static|Win32 {B6BBC220-1492-4BEA-A299-9D062133ABAA}.Release Static|x64.ActiveCfg = Release Static|x64 {B6BBC220-1492-4BEA-A299-9D062133ABAA}.Release Static|x64.Build.0 = Release Static|x64 {508A823C-8EAB-4C56-9DFE-4D85B0D24491}.Debug|Win32.ActiveCfg = Debug|Win32 {508A823C-8EAB-4C56-9DFE-4D85B0D24491}.Debug|Win32.Build.0 = Debug|Win32 {508A823C-8EAB-4C56-9DFE-4D85B0D24491}.Debug|x64.ActiveCfg = Debug|x64 {508A823C-8EAB-4C56-9DFE-4D85B0D24491}.Debug|x64.Build.0 = Debug|x64 {508A823C-8EAB-4C56-9DFE-4D85B0D24491}.Release Static|Win32.ActiveCfg = Release Static|Win32 {508A823C-8EAB-4C56-9DFE-4D85B0D24491}.Release Static|Win32.Build.0 = Release Static|Win32 {508A823C-8EAB-4C56-9DFE-4D85B0D24491}.Release Static|x64.ActiveCfg = Release Static|x64 {508A823C-8EAB-4C56-9DFE-4D85B0D24491}.Release Static|x64.Build.0 = Release Static|x64 {1B9223C8-DE20-4538-8214-776C6017D22B}.Debug|Win32.ActiveCfg = Debug|Win32 {1B9223C8-DE20-4538-8214-776C6017D22B}.Debug|Win32.Build.0 = Debug|Win32 {1B9223C8-DE20-4538-8214-776C6017D22B}.Debug|x64.ActiveCfg = Debug|x64 {1B9223C8-DE20-4538-8214-776C6017D22B}.Debug|x64.Build.0 = Debug|x64 {1B9223C8-DE20-4538-8214-776C6017D22B}.Release Static|Win32.ActiveCfg = Release Static|Win32 {1B9223C8-DE20-4538-8214-776C6017D22B}.Release Static|Win32.Build.0 = Release Static|Win32 {1B9223C8-DE20-4538-8214-776C6017D22B}.Release Static|x64.ActiveCfg = Release Static|x64 {1B9223C8-DE20-4538-8214-776C6017D22B}.Release Static|x64.Build.0 = Release Static|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal eztrace-1.1-7/extlib/gtg/extlib/otf/PaxHeaders.7332/TODO0000644000000000000000000000013212544237152017453 xustar0030 mtime=1435582058.523899952 30 atime=1507797543.930892299 30 ctime=1508162366.101764822 eztrace-1.1-7/extlib/gtg/extlib/otf/TODO0000644000175000017500000000221412544237152020641 0ustar00trahaytrahay00000000000000- re-design OTF's error/success return values for handlers and functions - ideas for future development - add memory allocation/deallocation record types, how? - have more semantics - have less semantics - add general purpose record types like (type/owner,key,value) with no semantics, -- can be used freely, ignored if unknown, -- key/value are either uint64_t, array of uint64_t or text - add record to write wall clock time or epoch or year:month:day:hour:minute:second with this, VT can record time at start and end of trace (request by Robert Henschel) - create a (graphical) tool for changing definition records: - grouping functions - ... - solve the problem that when only reading statistic records one cannot determine the begin and end of a process !!!!! You might introduce a new record for this. ( maybe like begin/endprocess for events? ) You could also write a statistics comment record when the first event appears, (in otfaux) - add new statistics record type that gives the caller-callee relation - only write this at the end of a trace run - use asynchronous write (aio_write) and maybe even read for performance eztrace-1.1-7/extlib/gtg/extlib/otf/PaxHeaders.7332/acinclude.m40000644000000000000000000000013212544237152021154 xustar0030 mtime=1435582058.523899952 30 atime=1508162192.435874275 30 ctime=1508162366.069762028 eztrace-1.1-7/extlib/gtg/extlib/otf/acinclude.m40000644000175000017500000000077712544237152022356 0ustar00trahaytrahay00000000000000m4_include(config/m4/acinclude.debug.m4) m4_include(config/m4/acinclude.math.m4) m4_include(config/m4/acinclude.mpi.m4) m4_include(config/m4/acinclude.omp.m4) m4_include(config/m4/acinclude.pdflatex_pgfplots.m4) m4_include(config/m4/acinclude.swig_python.m4) m4_include(config/m4/acinclude.vtf3.m4) m4_include(config/m4/acinclude.verbose.m4) m4_include(config/m4/acinclude.zlib.m4) m4_include(config/m4/acinclude.zoidfs.m4) m4_include(config/m4/acarchive/ax_mpi.m4) m4_include(config/m4/acarchive/ax_openmp.m4) eztrace-1.1-7/extlib/gtg/extlib/otf/PaxHeaders.7332/docu0000644000000000000000000000013213171135477017644 xustar0030 mtime=1508162367.145855959 30 atime=1508162367.741908015 30 ctime=1508162367.145855959 eztrace-1.1-7/extlib/gtg/extlib/otf/docu/0000755000175000017500000000000013171135477021110 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/otf/docu/PaxHeaders.7332/api0000644000000000000000000000013013171135477020413 xustar0029 mtime=1508162367.14185561 30 atime=1508162367.741908015 29 ctime=1508162367.14185561 eztrace-1.1-7/extlib/gtg/extlib/otf/docu/api/0000755000175000017500000000000013171135477021661 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/otf/docu/api/PaxHeaders.7332/specification.pdf0000644000000000000000000000013112544237152024000 xustar0030 mtime=1435582058.523899952 30 atime=1508138917.928968163 29 ctime=1508162367.14185561 eztrace-1.1-7/extlib/gtg/extlib/otf/docu/api/specification.pdf0000644000175000017500000065234212544237152025204 0ustar00trahaytrahay00000000000000%PDF-1.4 % 3 0 obj << /Length 401 /Filter /FlateDecode >> stream xuRMo0 Wh3K}Ymk~l:le$:$9b+P-BWz%%Fȥt+QSq^(Ykͥzq[#?/ae RAO1S=$/6sٻTS!8|qKa(TD 8ti xs("PN:ȿt ͌jngvoc 6=hd @EjXeR3jv n]l$qihgw'f#l.t2#{ߏ"/ -ETw~x_?muj qZ*|9ftKa endstream endobj 2 0 obj << /Type /Page /Contents 3 0 R /Resources 1 0 R /MediaBox [0 0 595.276 841.89] /Parent 6 0 R >> endobj 1 0 obj << /Font << /F39 4 0 R /F41 5 0 R >> /ProcSet [ /PDF /Text ] >> endobj 9 0 obj << /Length 761 /Filter /FlateDecode >> stream xXr0+X'H˼'fI"B1 &+ 6Ŏ3 >xsx'^ғoWxDK_<!%D^yOy]jWY"8/ b01SaBSM_g6 DP+vq]3 O|%)zoqc⅐G@eغ mQRT/ $1!+Ȳ6R+Ë2KP^H5Fl JC-J= A8%.#(VZ蝅QA?j8+ѼY2hf sR7& 0R:DTta4Mر}!enYd3۲K9Ģӕ UvBHeJ,Wz7|J6kYya !1$ s(B4@_. =e7oDY *'1SRUlWl:6Fg]q6$K6|A7G:jhJ2r]6 DQ<98X`s8?V4RdpY Q? 9ĉrsjsYjD?Q;!쪝U{m8#>-d[?7Z$[`L#:en$ _w]K#Qr-d\=9L,u1eu]\WLo~Vy]͊וlʙA$*[RnO(XrҢo endstream endobj 8 0 obj << /Type /Page /Contents 9 0 R /Resources 7 0 R /MediaBox [0 0 595.276 841.89] /Parent 6 0 R >> endobj 7 0 obj << /Font << /F50 10 0 R /F39 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 14 0 obj << /Length 1958 /Filter /FlateDecode >> stream xڅn8ޯQFmzYֱ4m @^{%& K*E5~΃DH G/[{H"L6q" .-2lxؗpcm2MV7wq&y b.(IR-4 @UM{QED4G& YCj,t}bmc1 ;y* wh.mo?D*~%DYQ0ޤ)Vu`ǻE3u(![[AטAFQxUJTu7g%KƢ/J&9Fݵ{ NVFZg`!DTh=^/6ꌔl4BnmOGVV՗1=grlUC:׉\ 3G k^VճlUImI񻎀`p)<1I(PKt?B#$'9d/5v@̈jL /̇">^VcLi k$>F46x~qV^#>bLBQ9:8qN^8F<.C@vWjR a}x ~j D%lذfSjM46nX ^2pUj]*4TI0 ( I"lV`aۀs6h.meUj PN>xDzNN-RaV\Jڞ+f!ch GܔP# +$sQ #s[ʾe_YT"Ed+]`@0G N1}Hmш~t @e \p,kv{*e⶚ynqD麵oc7uT=t"my*A|zfh(tc4N?YPƸ/z߼1HR*+5zSkm'/4+ lҷ:84̄QV MO}0}n}5Vxu8 H^iz;);%|'n@ҝ -[FS%e訙{cHzc18za3| C EH=B>(4\u ]kw2G֊GN]wr'N2FmGi鱯**peK^x?ȆӚ-Qp8ރo(Y%$jyDΦ~v MT8 n=cܔ@OO}6)ΐSF5;AF,f+MCYQ}cAR\.~S|8kT`vdm)oU{K,!p2?T7L9 Nɑf%[vG$B2l@3 [!ܰLg]ӏD`B/4r+]`R e\h?ɬPaluohMI>?* endstream endobj 13 0 obj << /Type /Page /Contents 14 0 R /Resources 12 0 R /MediaBox [0 0 595.276 841.89] /Parent 6 0 R >> endobj 12 0 obj << /Font << /F50 10 0 R /F39 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 17 0 obj << /Length 1594 /Filter /FlateDecode >> stream xڍW͒6 S(ZQ[t3CN<=2mD<}jmxAAE(e12"1VMD*ӺQ7}Ҫi‹isώr,ǁEoo`Ymh#mֲh{Vy=~Pd,f%edx|4)=Ң>>)x@?&X 2ۤ])_ޥɟ۟bvDeZU.o&:ڔ<3F.Ɇeم'oU^;+Y@,$y' Op<,We2srO3ht'#% T MZdYI MG>{N*&i<7x)/[ N Zt*c U#z/a#"hiY k;GYZ6Y"v[GYPpLZtb$bWx݉8G9JH:kRP0R \}  ]\xkb yɂt39=Inab/h3TR -:Mk!R~#Ģ0ioJ7VpKڈ|6OZ80bN?kakpKAߕ'&6 kL*fWO `6֮sR7..­ſJsHXR}I¸C j 341'y(2 D蜰ʋ:ƍxyVg^mj3V!j@${=ޞg1)l +AA&]f^9oW`};rq1$lƶ@-= yï BNި3=(he,#z?aQ/TSaoXRae ]ѓ ֵ]w \o.F&pX餺`/0h#`D)Ss\0?Z\G@Qߠr2 AI.6QB, 4vx$0bG&*4L h8 *.*l֒<碟@.;UdN+^N@bJR.lщ$}SDVݼ0^#-|z>C&V*Z @`֟xϲ\?mb endstream endobj 16 0 obj << /Type /Page /Contents 17 0 R /Resources 15 0 R /MediaBox [0 0 595.276 841.89] /Parent 6 0 R >> endobj 11 0 obj << /Type /XObject /Subtype /Image /Width 520 /Height 218 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 9195 /Filter/FlateDecode /DecodeParms<> >> stream x^}yo4mb4C MC /A+DXԑqHuMbdצi9HEAՐJiQUݠ(rHo's3{ў=3sٝ~ow+K5k.i}v:߰aCZSU)pֲe}]}I-nkjjjttݥWK?ukӘhR>~֔O.0l̨mS@`d$م%շy.AvAvXtH`]]PDOIB`]]H"R@`h7dd:SRQ@`h7ddR%GZ م"Z مb!`M&^مCx0`ӅgO,X-fz?مPǒʑC0ϟxjo 2)O`]]T( _eӝܽyly7+.+1Oҳ+)c(d< WJԤ@uܕx?eұ[B6b3Eɂ]0 MFO$EV*A @b`È/xgh@p>r#ֱ~̀FPv!HDP!Rc?0`|! A20 jca\`lfg9yuV_X$c3m6$rv4篆hnCb|Қ1gK^քE[[2-[S $ԓeeѤ@( ;yA;40! H1x]Lc ]KX+ xVB ] )2g@ctr`!nKOi !?<Fv!TDP9Rch?C:!`p"Nc^<zܱqDvôa(50 >@6 o`(>[qC},sicx3)PŽс2L `ǀ> +)c/*rkPK> Kc} Pj`(m<00\0[zL0'vnQ2S.*J t d'5v17%#;pE%fa!nnh+*aq\᭷IUcxCe`Bٯf ɸDn0SX/)nFXpvii.(I q Q' X`y+W*`C{ٲg]7i \ആ E P};尳}X5Օ.$rd@  |Xa hcaRх"v!_TT 8م!ǀbG;x,i TvH9aU9;LoYxѽ^oa' $RP@a J駟[dlbYtCZ]vAv!:H!<U RB B?rI  IAvAv![eJr  ̓AvAvܿW@$ b@9 P\R C`]]VRC`]](U.)UI0..D{p)PN10..*ddbU(ȪU_28d͓ Q[x=%vׯ1J#@ Fb2;:Ӥt S@`(RK* 0ШڹCK"2t`S@`(RK* 0ШڹCK"ԕc CUH[9' 鵉j$+ 0 ob@) 0(PL/-T@`ha5ZeQs)PC*wiCZSE d* 0(PL/-T@`ha5ZeQs)PC*wiCZSE +I@y^~srWpʗR@ C-X{{޲Go&VMUG H  D E_^tn l3~~  3Kd4.Q٤@  7Q2tMB2͢H  5pfd:iR@`1P@م)hC -t8s{N3`]H. Cs΀Av!M 0 essx`±ŋ{msمvǟXd7h8;K6MfaǼ}3s'&&¶BXp%,qʞg_;jμ '0 %& Q0#^- BX?$0ol+˩)1-0t aP%+0 M&z†/r3`]z8زIo#>9^~9~Zߪo?kvf9=S~zJj2ʗطv0`O<<+h`GCE8/F 9>% 1(#J<5 0j@'j#v4؇vae:I ʂf;^ksu>9m 9a R)Z{  ]jErAzv({w~K-;Romv#3eI=7~NP.y^~'rU3K >%Ə],܂w|&|~'v=VwW$ Z{u8cs:Um hBD+02YV95_VcXwm]-.xW--- dl_V+bE C(0XCv^q_E; \ vJJ5p0RESv; S~b+ɽґ@`۽tz"PASn-c`l Fw߻܃sbxxѧ3o?M{={bk~bdιoG[KÊ՗eNrxᙥv7JHF^^egy,Xc1ϵyvЌr`{`G{y]V_YQ斮r)a^Gݲo. Qڨ#0Tյ-[+@0`#;y"ĜV+c`G kao̮$Z e^)v.YWXCu{ɂ1ЕTg=rfg= 5ە)Byr`B2 ^eg&t;Fi>`wvyH;3H]I[5wל+f ͌;%b>6```۝'F7 yEpDj޼V=XgT@.u㫾iKZFo$XdQ,1 5\Z]05hv0Ѝ[hbv/WE;ayߙsI8Y/< kLΙ0 *X:W~^l>>7;\qڳ}yS "Pkp`:aMjquWɢ_Y]ڵ0Dlq^ˮvaUI*+c 'xHl DgNo2='d^,Fd͒.*ּQV&50l x[DR #L<ɐ1ލoUB ` p N` ⛟6M 3ڬ&cX&C?Cbsq*=vvXBijv&0 FR`. ❉{d1CBxpZ |F`M4!6`Gfo;ⷤJ+V`h `%^v [V D P?x2FU#a0c`ͺ ba[J>_y` o` 1(P_'!}04bVE¹*^O.FlD!'ӂ FL0 عļ6>\k5d" 郡@Ymrom AV!BvJec *Z Bv!M`Tq B7/]`H ]  9+)xUd:f!VWd:f!^Udg!VWdg!^Ud:i!VWd:i!^Udj!VW.ඝx OϮ]fx<归a.SjL掎EUK?|NJSgZ ꪫZLK@,ʽ袋 ؼysm cGcc+@mvĐXeJ) ڥozhh8]Gj+]b@ H).vj+]b@ H).vj+]b@ H).vj+]b@ H).vj+]b@ H).vj+]b@ H).vj+]b@ H).vj+]b@ H).~B) n֭[hKrݺu(7(*(ŞcE H)FF6|~bђHK+$ '@|40#>4#]0VŤyH eNy+z4[$ qdK07[<+R Mλ=`ycԺ`#C.` ' .H П>͖V9H Tadkrc'8a{!'LJ(/c9W2) @ $뢱"Zx-=@xɆ8^^WX*I) U XWZDp{7H@w?z_yH9"mea# sW*ØVt%R@ _t-zCJe֍ rֵ*,@ܺF;!l8u?AR@  :RWt@H) c@ H) + ǠC H) t H) ) ȩr dR@ H0SZZS H)S!PJ&)  3;9r dR@ H0SZZS H)Srd暏u8m F>/<> c&|=ǞVJ/#/_xcyfMNNzɫ1S)c:؀$ÖoΗ;5bYS1;HT% -^({xĂeE& Ӊrm O0Gxc;nDzV?S)+h\,|Od> `g 3X>Ùց]RXGiD^t'B@vm1/ʤqx3zR@ H t PB7N [ 8$ * B>@)I)Q<Ƿa]I׆4 ʁ0:U) *8sDs]ED`cTdH ~0^ q Lz cx,() Q !0@]vq/)ʌ  w``xӻ(&0$rR@ U]0ϝD#,tUìC)쯭^] ڧe) @R W酻+cWC`u2UR )4%F@w_s*R  mh%Q H)P ұ~ endstream endobj 15 0 obj << /Font << /F39 4 0 R /F50 10 0 R /F56 18 0 R >> /XObject << /Im1 11 0 R >> /ProcSet [ /PDF /Text /ImageC ] >> endobj 23 0 obj << /Length 1469 /Filter /FlateDecode >> stream xڍn6PO5WEQ`K[hJV6wCh  9 8CxyiʒCπA;xԆG;ݳ=:N@^"(Btx{q ϼS? G>pp %QwG篇8OOQJv˽c3^pP-bINJV ,(U7֣]yHR4: >K:وW$UMVSi/}pG=dAJB?ķ8ߌ>L~$+r`DKpd?N}wћvjt7 n/zu:ǾTC5:I0JgYY Ow9JL8H$cZԝ~) E?($XEKG[`] y'Z QAO(kھQugTCcGqq ;A:G H<2O,sGgV+Fd_|.tL)ZD[fQFyb' &4NJ/NB~YFB\oVXEE^l-7ѽ5L~3T,=1#/ #<+!OB[ /W#h FhϽ¨㞪.멀 D$ RK'hLvW>\/\岔^iĢ<}5|ZR ηi_0#|r5,dɥfؒY\l[W3Ǿqi) 4 lfn{5hY4G 48 +i&Rk0;:gvUU}h." Xt5 uDheZװw6Bq4 ,e)H<'h_a" endstream endobj 22 0 obj << /Type /Page /Contents 23 0 R /Resources 21 0 R /MediaBox [0 0 595.276 841.89] /Parent 6 0 R >> endobj 20 0 obj << /Type /XObject /Subtype /Form /BBox [0 0 500 330] /FormType 1 /Matrix [1 0 0 1 0 0] /Resources 24 0 R /Length 34 /Filter /FlateDecode >> stream x+2T0Bkjd˥kZG endstream endobj 19 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./files.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 25 0 R /BBox [0 0 595.276 841.89] /Resources << /ColorSpace << /CS0 26 0 R >>/Font << /TT0 27 0 R>> /ProcSet [ /PDF /Text ] /ExtGState << /GS0 28 0 R >>>> /Length 2058 /Filter /FlateDecode >> stream x[n7}W-k @( b $"! =]R=-[0,{`p wu .F`YqZ^攭N̖.YӇD|!&6JkDHFI ߮&ד'_EPB\TIc!xA{Yߧ)뉒JY1JbݧWg_y1]N~ywuifZNvV|^3^a9`3tڦ}fh1Ku5BJLl3@%ZmB:d 2\"v[Jpc^L]Uffw[J5 UVN!1JY­&uR2.Ju^Lo/WlHH[MG.ydi5GeFѥ`TyWK7  C1|o+LtS88 BًZi،~MCP j E*S䞆En`^l-p_mjAĔ6epKJi'S+\g]@dKx,1cQ~=grqD!9L Ysn<%xАS ۊ hELiM^-Jd3JWsK.ق~d暅 T ɮuh)Әj{3ft4Fje2p-ŸrVNy_g諙k}+_ddz,.@r6Qu*4T7h(Ø*hl/QqUJ.AFFt_O*בGK CGW*ތz_Gi&V o`nGK%m5Z I֍tS]`:`tq2Rd괈`v|V2!7s2TVUxg*룲-;:]>)`f:ɏN,i'@'nd%vI`R7eXӦ)s K,[~:XW[.8`!Y }Z fm55{+߂\ zyHEW/w.8@6[-i)K먰G-QQUNt| y??p$b2:/*~ϏЋ@ڞJkTZk*$(*}*zȸK*Q!Zti>L6 %xtt}f?heT5!2*!2 |=뤠HoW'SßSt}0-{3~_D*'ۇSݾ-o_[eE{-ї_V|msK# $ ROAhΊC; j!R.8sތߑACP+BQuk~D>=qyS]+Wy -S7K9G)eo?H/# 8<Z٧t^94dOk }R* R,˩R݊=TnXӑR9hȀqZ@bYpr?T.Seo2ϬwܘA;+Ҹ4{:tNYxg ѽ}b w+A ] evFS?BRKXz$Dz?f6 !p+1O*-r5 [u#>ʩf9O&mUPݐFY7b"7:֙ڷo֝*Tަ4A'}h BE1 m: endstream endobj 25 0 obj << /CreationDate (D:20070726133535+02'00') /Author (brendel) /Creator (Acrobat PDFMaker 7.0.5 f\374r Microsoft Visio) /Producer (Acrobat Distiller 7.0.5 \(Windows\)) /ModDate (D:20070726133536+02'00') /Company (TU Dresden - URZ) /Title (Visio-files.VSD) >> endobj 26 0 obj [/ICCBased 29 0 R] endobj 27 0 obj << /Subtype /TrueType /FontDescriptor 30 0 R /LastChar 120 /Widths [ 278 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 722 722 667 0 778 0 0 0 0 556 833 0 0 0 0 0 667 0 0 0 0 0 0 0 278 0 278 0 0 0 556 556 500 556 556 278 0 556 222 0 0 222 833 556 556 556 0 333 500 278 0 500 0 500] /BaseFont /ArialMT /FirstChar 32 /Encoding /WinAnsiEncoding /Type /Font >> endobj 28 0 obj << /OPM 1 /OP false /op false /Type /ExtGState /SA false /SM 0.02 >> endobj 29 0 obj << /Length 2575 /Filter /FlateDecode /N 3 /Alternate /DeviceRGB >> stream HyTSwoɞc [5laQIBHADED2mtFOE.c}08׎8GNg9w߽'0 ֠Jb  2y.-;!KZ ^i"L0- @8(r;q7Ly&Qq4j|9 V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'Kt;\ ӥ$պFZUn(4T%)뫔0C&Zi8bxEB;Pӓ̹A om?W= x-[0}y)7ta>jT7@tܛ`q2ʀ&6ZLĄ?_yxg)˔zçLU*uSkSeO4?׸c. R ߁-25 S>ӣVd`rn~Y&+`;A4 A9=-tl`;~p Gp| [`L`< "A YA+Cb(R,*T2B- ꇆnQt}MA0alSx k&^>0|>_',G!"F$H:R!zFQd?r 9\A&G rQ hE]a4zBgE#H *B=0HIpp0MxJ$D1D, VĭKĻYdE"EI2EBGt4MzNr!YK ?%_&#(0J:EAiQ(()ӔWT6U@P+!~mD eԴ!hӦh/']B/ҏӿ?a0nhF!X8܌kc&5S6lIa2cKMA!E#ƒdV(kel }}Cq9 N')].uJr  wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó ti zf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4 n3ܣkGݯz=[==<=GTB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY .=b?SƕƩȺy چ k5%4m7lqlioZlG+Zz͹mzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś nLl<9O[$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km endstream endobj 30 0 obj << /StemV 88 /FontName /ArialMT /FontStretch /Normal /FontWeight 400 /Flags 32 /Descent -211 /FontBBox [ -665 -325 2000 1006] /Ascent 905 /FontFamily (Arial) /CapHeight 718 /XHeight 515 /Type /FontDescriptor /ItalicAngle 0 >> endobj 24 0 obj << /XObject << /Im2 19 0 R >> /ProcSet [ /PDF ] >> endobj 21 0 obj << /Font << /F39 4 0 R /F56 18 0 R /F41 5 0 R >> /XObject << /Fm1 20 0 R >> /ProcSet [ /PDF /Text ] >> endobj 35 0 obj << /Length 1648 /Filter /FlateDecode >> stream xڅWݏ4߿"t9q&C BT d_YS5کʡN?h,C"XJ8y ?Z}6eLįnQkDky UIV?^ Scf dM{`NL#Yle zܥʽCfר7e.U5@rإyIV<>rBQiAQr$-&[e0D~NAX/ ip4qq ]q<4CM;KEF&$x`^i[W;: Akf˾Jϔ!$`Fa|hӾ&%e"#QǕ ϵkpCn*^/$n iI>P$sJ #-Ѵ%znॊw[.$k b?`F#3/fH5җ8h8 :x ago݁*u;jw[mzx+ŪKfB9zD֍]"HV!G"XP)UJ\oه_%ϓ-c^QVF_F7K4c^KdI哖4sXqO{<{oi%O#/)I_48ueNT%<Ӧ5ZVu}] ; nu=CB 4Ra 'DvKk9?Q 9.P((,{EZ{`&SpWkpWw }qcaHxmx5$-r6UƧB^]G O珅^ ^'. $ ~> endobj 32 0 obj << /Type /XObject /Subtype /Form /BBox [0 0 440 220] /FormType 1 /Matrix [1 0 0 1 0 0] /Resources 39 0 R /Length 37 /Filter /FlateDecode >> stream x+2T0BC]S 0PH5Vp fa endstream endobj 31 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./streams.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 40 0 R /BBox [0 0 595.276 841.89] /Resources << /ColorSpace << /CS0 41 0 R >>/Font << /TT0 42 0 R/TT1 43 0 R>> /ProcSet [ /PDF /Text ] /ExtGState << /GS0 44 0 R >>>> /Length 3185 /Filter /FlateDecode >> stream x\[o[~ׯ8m36h ,l>^'BǛ.3R+)t#X#8gnF0Z֕LRJWv޼z}ͧۧ3/R4=>lt?m^{Xp 9=)xyWO:i~0'Ǚ$$_O?ag>5r$iy"3Εd=N6.p0vkPvoyoiYiio:iI}K;#%v .QKWA6L2 _a1$vPk(\"l XĿX#q q̈́p&\^Ŕ<|$O/ϏσT$`*Nw 9|vo)ͫUfz K^NCGђrA>6"YGm,jm~ܒ:hpQX|HC}wq\Kܴou#N! 3#[P?;DMpH|~7ӿ{2 ? 8 4^ַZyZVl/vhzuU s{.ߟڜBXJT2 ӵ_P5 |r\-ows1è%70_ ,̧8ZBͱsa>ӊ 0PZ4_)? ]c|cOlZZܞ%9FBT+b6h b/ςIEH,(BS:9G͗} hrH1IV! =`f`~VXAhݪ(s8 9VewJAoIF HJ»R$QeCKPAv($%l%!E΃ B6`SuP\J6P(4ܔ2IjHE@uX)Yԍ. UZ RɈ w̽*>T4 ~$#j]zе2 %Pԙ1 [t!{a0 %x$wb:ZNrR{ i+LKxKnq{S! 2EGD8&XQ=y^^b"R@-mRH4>no^$fMt,ҚwA, %ҁ t.+;*RvwcsB@$ 亙?uxG^[f=k#ڼmo{Sߏ$=S* {+%ĮG?&DQp.hO3lJ)sDm}|IC'5Qh W𶗖M닥+(/RH*=Y=~yB&/visw_/v5oJ)E!'Piۻ J;.YyFςZ5S_ylxWBPN"Pmm]<0z]ӚrRT&Z-~k#,eTi^U25jؾQŘH MK_W;jEEKcca>ӚȐ]voa>ӚpNc 0iΤ@ bS; |VpEaZw(^tYUHiO{ R>RjU6wk\f`<<jNXʓ>i# aE{2m{ Pks䝂u b9}߶jWԗ9P3M<'y舁Ӥk-Hm8KmAt 4m!fS0Q-thAOeHjK&pA5*sA+QܰPa"aJf? KNSiUp!\_=y1)Fő9͈XU)O$$Jl _fXrGnf3Awȼb$g/?\T%Iؽ8eNu0k|ͦcNƹUlzpIOxExz4j :kbi@a+Ͽpxs14Bz<!OORTM},O>sGupr`LiT;̍߃m7ߝ逽C帶&UѶIgׁ _xᗦg>oj&B\ 'J4*.HX} ˖zIm=c{/n+KU5]/9BuےIL wĨڀkHts_Be8h01f^G7`nM#_BQo"Si{I'PCOĈڟiuFJE}+Z-3VSpD(4jFR٠P eۏNRԛFK>,56 jCWs%ht!7aa>4jx$GNV>ϐ 4kIIgDuA|gY|^WAt[j|Q I:dyfp$ZzvjBR'$&)e|G GqUpk#;pڨO@eYZ,[r-f=b(qeJvi8#@kez좔>Y+ } St ā{a,7x˚s UQT ]{ F endstream endobj 40 0 obj << /CreationDate (D:20070726123256+02'00') /Author (brendel) /Creator (Acrobat PDFMaker 7.0.5 f\374r Microsoft Visio) /Producer (Acrobat Distiller 7.0.5 \(Windows\)) /ModDate (D:20070726123257+02'00') /Company (TU Dresden - URZ) /Title (Visio-streams.VSD) >> endobj 41 0 obj [/ICCBased 45 0 R] endobj 42 0 obj << /Subtype /TrueType /FontDescriptor 46 0 R /LastChar 121 /Widths [ 667 611 0 667 0 0 0 0 0 0 0 0 0 0 556 0 556 0 556 333 0 0 278 0 0 0 889 611 0 611 0 389 0 333 611 556 0 0 556] /BaseFont /Arial-BoldMT /FirstChar 83 /Encoding /WinAnsiEncoding /Type /Font >> endobj 43 0 obj << /Subtype /TrueType /FontDescriptor 47 0 R /LastChar 121 /Widths [ 278 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 667 0 722 0 0 611 0 0 0 0 0 0 833 0 778 667 0 722 667 611 0 0 944 0 0 0 0 0 0 0 0 0 556 0 500 556 556 0 556 0 222 0 0 222 833 556 556 556 0 333 500 278 556 0 0 0 500] /BaseFont /ArialMT /FirstChar 32 /Encoding /WinAnsiEncoding /Type /Font >> endobj 44 0 obj << /OPM 1 /OP false /op false /Type /ExtGState /SA false /SM 0.02 >> endobj 45 0 obj << /Length 2575 /Filter /FlateDecode /N 3 /Alternate /DeviceRGB >> stream HyTSwoɞc [5laQIBHADED2mtFOE.c}08׎8GNg9w߽'0 ֠Jb  2y.-;!KZ ^i"L0- @8(r;q7Ly&Qq4j|9 V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'Kt;\ ӥ$պFZUn(4T%)뫔0C&Zi8bxEB;Pӓ̹A om?W= x-[0}y)7ta>jT7@tܛ`q2ʀ&6ZLĄ?_yxg)˔zçLU*uSkSeO4?׸c. R ߁-25 S>ӣVd`rn~Y&+`;A4 A9=-tl`;~p Gp| [`L`< "A YA+Cb(R,*T2B- ꇆnQt}MA0alSx k&^>0|>_',G!"F$H:R!zFQd?r 9\A&G rQ hE]a4zBgE#H *B=0HIpp0MxJ$D1D, VĭKĻYdE"EI2EBGt4MzNr!YK ?%_&#(0J:EAiQ(()ӔWT6U@P+!~mD eԴ!hӦh/']B/ҏӿ?a0nhF!X8܌kc&5S6lIa2cKMA!E#ƒdV(kel }}Cq9 N')].uJr  wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó ti zf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4 n3ܣkGݯz=[==<=GTB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY .=b?SƕƩȺy چ k5%4m7lqlioZlG+Zz͹mzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś nLl<9O[$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km endstream endobj 46 0 obj << /StemV 138 /FontName /Arial-BoldMT /FontStretch /Normal /FontWeight 700 /Flags 32 /Descent -211 /FontBBox [ -628 -376 2000 1010] /Ascent 905 /FontFamily (Arial) /CapHeight 718 /XHeight 515 /Type /FontDescriptor /ItalicAngle 0 >> endobj 47 0 obj << /StemV 88 /FontName /ArialMT /FontStretch /Normal /FontWeight 400 /Flags 32 /Descent -211 /FontBBox [ -665 -325 2000 1006] /Ascent 905 /FontFamily (Arial) /CapHeight 718 /XHeight 515 /Type /FontDescriptor /ItalicAngle 0 >> endobj 39 0 obj << /XObject << /Im3 31 0 R >> /ProcSet [ /PDF ] >> endobj 33 0 obj << /Font << /F39 4 0 R /F45 36 0 R /F15 37 0 R /F46 38 0 R /F50 10 0 R >> /XObject << /Fm2 32 0 R >> /ProcSet [ /PDF /Text ] >> endobj 50 0 obj << /Length 2081 /Filter /FlateDecode >> stream xڝۮ۸=_9 m"}h}-ʒKQ{;7YW hf8wZN;%Oo~Nd `WI+U=w8?jTIp{]E\cZﴊkUkvIW5^Tg>&~T*i-tFQ9@^G(5˵z~Q̕ 2Ҳ$o0t;s@.43Q?iq-HCם_7o_\2A9ZaO&5ւiUDOg KQ9ىxl7 YRӴ`#1y,:l༨A'/<0 _jpzZDJ$YIC0e105ssKF ϼ"gŃ+Tf \\ .Z\̨EEpچpFGw2AL߹#a⛬c}+8/3?qd y *a lhP9DSjZ L⺣JcM!/Pŀ cxŸPYA}R[A'D+V{4vQpsr7 ׇb 5<1d4JR\*'q^i uoxdqU(wTLZΦoHjK4>my)Q(I4Z64W@g̏*W ~4P4VARmd}}ʋא[]PI&z@:z(yYF!S ,DoSu[ 3jOMЬOw!$;@Qad[580VL$9(~rsoNBUl SSYuLbHpK'u7nf\ˉ_1A:"~ y3Sas+`ŝ΁G.a=.XьH<`t_ n$C I@@Bf]_y==kahaSi@ IeX`af& [L2]:sM1T4{#0&\{2!`p_KyY*Mb$.{6ʥ<#Uym{s*8wNjyp$4M쉰Oٍqs]1d6|DFW?`' I'|C>k:|fv.x 6Oe%A0YHrȜW> endobj 48 0 obj << /Font << /F50 10 0 R /F39 4 0 R /F45 36 0 R /F46 38 0 R /F15 37 0 R >> /ProcSet [ /PDF /Text ] >> endobj 54 0 obj << /Length 2536 /Filter /FlateDecode >> stream xڽYKܸ WQ]Pn%NSIaĞGG @ñM]")$@=$?u&0ED#43G.Uw72+㩟7Q"jj8x:qoT (dV'98MOF*7JA9hl`eMCt9 ;}KIA$x0]g(q$wM7 }=b+ ~^C%`3aL== 4?8Ӣ0 Ʃl,t܇2( ϫ`IfϟA2t~h -YzkMT0X$r I%Q%=POO0Q fN'gg툃< IښrG2}29pS Coo0i]s|R lc$x XNg\܋%n)MSVmi+J:.6x^I`h XL4)%{ qX>7`a<@ b6b<ʉ6I)Q)6Q?UY{=KEfn hY8ϦDA^ܡqnR%br!a39?2~*G "Cى 7IoP(,%rD(1ۃ.|S *C8Vh[~(8dbE#iM=wApr8ژ6t|$u@Ye;ܺZuk߈fWp6ټUΣvkWx^ ?K,1jH6s`7)FZˋ\6dh6mΜڛe ntmJ$z`RL~fwG$b-q]OP3rT !5[p ΠB)6tQdN"T B;hY;z~& 4I)gnrFgrN71͞ Ϻ2PpXS[yj7h;D@fб*gMOyD[Cxޅ53gqĉZ(#*yj xudXK\v@RFBˆt-ZoJRlf 0Qp{߮׺^3uR] P"wZ ?~579ӶgJ[Xy-o/::aLՓT$}"*Q; .z@7 ʣ -wOշyr5^Vs/5G΃?G?: ^TRJE]M={~9§$[\U^Iw;?)a7%|Zy u!>(,v2VR˻;5^iſ/Z>YT  L^ফa(lni"9>zB[Bѝ`!7%l37%A<\/Q,g,jօ+{ ~2k m=GO#'ߨ-L+/&-M}JKڠ /'2r| |zN,gփqY6pA\ΰ 6?$LXe;F;Y^/H\jk ru;NtO/n|WeU-~? Z}w,[x ܻ|˲痧?MMH*zF7`/˟"HYE "d\m*R?7PXƇŀ,|E/ Gk endstream endobj 53 0 obj << /Type /Page /Contents 54 0 R /Resources 52 0 R /MediaBox [0 0 595.276 841.89] /Parent 51 0 R >> endobj 52 0 obj << /Font << /F50 10 0 R /F39 4 0 R /F56 18 0 R /F45 36 0 R /F15 37 0 R /F46 38 0 R /F21 55 0 R /F24 56 0 R /F27 57 0 R >> /ProcSet [ /PDF /Text ] >> endobj 60 0 obj << /Length 379 /Filter /FlateDecode >> stream xuRM Wpi6v|JJU^|k{ 𒠵!¤MUifx3~fzޱ-~vGў 'yGb:P^h0'n_gH%SϷiRœKrw07c")10BSx6^-n@NJ%l"Ⱥ3j'I přJ?Oyd;2/<T|hFUn%q>㲭H?4 dS2> endobj 58 0 obj << /Font << /F39 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 64 0 obj << /Length 1105 /Filter /FlateDecode >> stream xڅVKo6Б tiRn I|hr%$6}j :p8~EEmXXdOH8:#3yrF*36Sn%#-ω= mMwB}7Jrf/3Z7XwNi%TJTҸޜ΃{sPX0T#hu% JMVRy0S8];"TM+k¯*BHܫ S泜{xm'6ݐ({ 4ЩV+$QU5qsmw.L;;Q†'H8ZdS'Bq̋5{ sޫ sDAL怚iEтz"eҪi6xFO{`!֎ca=,mI .؞&Tta֧Z 2X>MB^b%AlSI$# VX,+ñ.Nڅ߭kj9ߛd-)<8?|xC}Eu_y;)/^k|h+8sg)\r$NHkF>lF{ǔsw{ѧ6l> WF0?J,8G=g2v-nj[K+2NX|(ú endstream endobj 63 0 obj << /Type /Page /Contents 64 0 R /Resources 62 0 R /MediaBox [0 0 595.276 841.89] /Parent 51 0 R >> endobj 61 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./classdiagram.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 65 0 R /BBox [0 0 567 519] /Resources << /ProcSet [ /PDF /ImageB /Text ] /ExtGState << /R7 66 0 R >>/Font << /A 67 0 R/R13 68 0 R/R8 69 0 R>> >> /Length 3609 /Filter /FlateDecode >> stream x\Y$79ڄ\l ͽ6L g6̓ Ė#vy#2UJUUTO8&bIKQ*IO "݃!xNs_F u*ǻa{#egmL9U:4_H檍Lǐ?g30;X󰁵,ƙ ]qCgu1v^;t~;v3O>c `.P Ⱦ'K ;]Jщ4R?"MN|>գvT(\itGg|;v烈');( QC2K7GXt{% * W* RਪDVAd#p( I'ZYI%BHtTfن'sѐ\$HhhދPNδPgTb, Udδқ2C{ҷtY{ʕW5ȕ=BLת Ep0@-N:/_`2=Ca)Dp򑠢9:fHokisv2~x"e% "󼴴&yQl(BiZl< Ȅ/:(7;΋/8{#meDa*QS/_1]>4С+V؝v8X<{fAnMVA^\R];Re]$dդgELq%ptt0~ oZkk:{;u<7 L,#C bj2uT*XNA"3}')h b} )8ՎO7Ap3O!1]">A$.*xJ: ѨbX8mRҤQec2r1,uQI IA浦r0wPv!:Nu1qnkl6bXL(:;RHD2v'lҭF6S}fD> QXΘ(/Y9e\C)q8LL͚0p_6B+No p͓ez棩 ůVGB+SheDvX=mK6~bc@leu?s%-җC/Ӏ=<^ȑ(kj1]ڒӈH\lU?] Y/$BuU\ pӼp[VO h{[ewi'Jжg0z|*VѻQi3z|gs#DůZ[_$*@iAIP]`.d0PS36JcV, n|)oNqeRlBo@Z3moץY%?[d#'c6 0R2i+Ò1"jm^Pq +sV͆;=>f-v . 8tuબ 93KRxRXWfѳ-Am%>\p&ɯ2R=G*g4Z^8C͙T0ڈC珵)FTi]%OLaXK6Q({pe> endobj 66 0 obj << /Type /ExtGState /OPM 1 >> endobj 67 0 obj << /ToUnicode 70 0 R /Type /Font /Encoding 71 0 R /CharProcs << /a70 72 0 R /a69 73 0 R /a68 74 0 R /a67 75 0 R /a66 76 0 R /a65 77 0 R /a64 78 0 R /a63 79 0 R /a62 80 0 R /a61 81 0 R /a60 82 0 R /a59 83 0 R /a58 84 0 R /a57 85 0 R /a56 86 0 R /a55 87 0 R /a54 88 0 R /a53 89 0 R /a52 90 0 R /a51 91 0 R /a50 92 0 R /a49 93 0 R /a48 94 0 R /a47 95 0 R /a46 96 0 R /a45 97 0 R /a44 98 0 R /a43 99 0 R /a42 100 0 R /a41 101 0 R /a40 102 0 R /a39 103 0 R /a38 104 0 R /a37 105 0 R /a36 106 0 R /a35 107 0 R /a34 108 0 R /a33 109 0 R /a32 110 0 R /a31 111 0 R /a30 112 0 R /a29 113 0 R /a28 114 0 R /a27 115 0 R /a26 116 0 R /a25 117 0 R /a24 118 0 R /a23 119 0 R /a22 120 0 R /a21 121 0 R /a20 122 0 R /a19 123 0 R /a18 124 0 R /a17 125 0 R /a16 126 0 R /a15 127 0 R /a14 128 0 R /a13 129 0 R /a12 130 0 R /a11 131 0 R /a10 132 0 R /a9 133 0 R /a8 134 0 R /a7 135 0 R /a6 136 0 R /a5 137 0 R /a4 138 0 R /a3 139 0 R /a2 140 0 R /a1 141 0 R /a0 142 0 R >> /FontMatrix [ 1 0 0 1 0 0] /FontBBox [ 0 0 1000 1000] /FirstChar 0 /LastChar 70 /Widths [ 500 636 1103 493 343 478 678 838 612 635 615 634 390 390 550 278 521 818 411 278 392 838 635 611 592 838 770 675 716 613 770 352 632 592 635 634 974 295 720 1042 635 686 634 762 712 435 732 636 636 698 278 683 343 579 995 712 716 575 748 635 837 774 652 752 595 734 687 695 636 318 636] /Subtype /Type3 >> endobj 68 0 obj << /Type /Font /Encoding 143 0 R /CharProcs << >> /FontMatrix [ 0.001 0 0 0.001 0 0] /FontBBox [ -1068 -387 1975 1123] /FirstChar 0 /LastChar 0 /Widths [ 0] /Subtype /Type3 >> endobj 69 0 obj << /Type /Font /Encoding 144 0 R /CharProcs << >> /FontMatrix [ 0.001 0 0 0.001 0 0] /FontBBox [ -1020 -355 1681 1068] /FirstChar 0 /LastChar 0 /Widths [ 0] /Subtype /Type3 >> endobj 70 0 obj << /Filter /FlateDecode /Length 145 0 R >> stream x]An0нO3CQ1pnhQ,QYHExHFbx~y:z~G3q-u(͵h3ކVsx{t:bc釲[9=)ANg')9 endstream endobj 71 0 obj << /Type /Encoding /Differences [ 0/a0/a1/a2/a3/a4/a5/a6/a7/a8/a9/a10/a11/a12/a13/a14/a15/a16/a17/a18/a19/a20/a21/a22/a23/a24/a25/a26/a27/a28/a29/a30/a31/a32/a33/a34/a35/a36/a37/a38/a39/a40/a41/a42/a43/a44/a45/a46/a47/a48/a49/a50/a51/a52/a53/a54/a55/a56/a57/a58/a59/a60/a61/a62/a63/a64/a65/a66/a67/a68/a69/a70] >> endobj 72 0 obj << /Length 178 >> stream 0 0 0 0 49 66 d1 49 0 0 66 0 0 cm BI /IM true /W 49 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID &hHl4 ?oooc EI endstream endobj 73 0 obj << /Length 117 >> stream 0 0 0 0 10 12 d1 10 0 0 12 0 0 cm BI /IM true /W 10 /H 12 /BPC 1 /D[1 0] /F/CCF /DP<> ID  EI endstream endobj 74 0 obj << /Length 201 >> stream 0 0 0 -67 47 2 d1 47 0 0 69 0 -67 cm BI /IM true /W 47 /H 69 /BPC 1 /D[1 0] /F/CCF /DP<> ID &h_\=< ս}>~W׫}ɪom~]vl/ %[[l-0` EI endstream endobj 75 0 obj << /Length 175 >> stream 0 0 0 0 52 66 d1 52 0 0 66 0 0 cm BI /IM true /W 52 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID '_____ ET(wN p{뮖! UT(R @ EI endstream endobj 76 0 obj << /Length 184 >> stream 0 0 0 0 55 53 d1 55 0 0 53 0 0 cm BI /IM true /W 55 /H 53 /BPC 1 /D[1 0] /F/CCF /DP<> ID &\H#< ׽=y.+Ao5_wio= k  ,r  EI endstream endobj 77 0 obj << /Length 194 >> stream 0 0 0 0 57 69 d1 57 0 0 69 0 0 cm BI /IM true /W 57 /H 69 /BPC 1 /D[1 0] /F/CCF /DP<> ID &h H-k _Z#KD?H>zA]kW_{av\0[Bix{  C-<@ EI endstream endobj 78 0 obj << /Length 195 >> stream 0 0 0 0 46 53 d1 46 0 0 53 0 0 cm BI /IM true /W 46 /H 53 /BPC 1 /D[1 0] /F/CCF /DP<> ID &8g`$gx'<XY$0x.KKKAp.LKr3P- T?} `ʰ  EI endstream endobj 79 0 obj << /Length 143 >> stream 0 0 0 0 51 66 d1 51 0 0 66 0 0 cm BI /IM true /W 51 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID '?@ EI endstream endobj 80 0 obj << /Length 187 >> stream 0 0 0 0 57 70 d1 57 0 0 70 0 0 cm BI /IM true /W 57 /H 70 /BPC 1 /D[1 0] /F/CCF /DP<> ID &OB+oO^jz>^׭zO׫~ޗ6  EI endstream endobj 81 0 obj << /Length 181 >> stream 0 0 0 0 70 66 d1 70 0 0 66 0 0 cm BI /IM true /W 70 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID )MW-Ko8.^׿u{^n{^+~ EI endstream endobj 82 0 obj << /Length 145 >> stream 0 0 0 -66 60 0 d1 60 0 0 66 0 -66 cm BI /IM true /W 60 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID ) EI endstream endobj 83 0 obj << /Length 178 >> stream 0 0 0 0 45 71 d1 45 0 0 71 0 0 cm BI /IM true /W 45 /H 71 /BPC 1 /D[1 0] /F/CCF /DP<> ID & C==8zn޽}_kiZVQ\- EI endstream endobj 84 0 obj << /Length 166 >> stream 0 0 0 0 51 66 d1 51 0 0 66 0 0 cm BI /IM true /W 51 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID ' Nz믮믮u_]}u_]qZ EI endstream endobj 85 0 obj << /Length 139 >> stream 0 0 0 0 39 66 d1 39 0 0 66 0 0 cm BI /IM true /W 39 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID ' "7  EI endstream endobj 86 0 obj << /Length 200 >> stream 0 0 0 0 53 71 d1 53 0 0 71 0 0 cm BI /IM true /W 53 /H 71 /BPC 1 /D[1 0] /F/CCF /DP<> ID & HUyރNo߼O}r\z>N=?Wk쁭 . .A5 EI endstream endobj 87 0 obj << /Length 150 >> stream 0 0 0 0 51 51 d1 51 0 0 51 0 0 cm BI /IM true /W 51 /H 51 /BPC 1 /D[1 0] /F/CCF /DP<> ID 5}05“P EI endstream endobj 88 0 obj << /Length 171 >> stream 0 0 0 0 74 66 d1 74 0 0 66 0 0 cm BI /IM true /W 74 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID 5g u_DW}_}~;u߮@ EI endstream endobj 89 0 obj << /Length 172 >> stream 0 0 0 0 44 69 d1 44 0 0 69 0 0 cm BI /IM true /W 44 /H 69 /BPC 1 /D[1 0] /F/CCF /DP<> ID 4ZZZZZXKKKKKKKKKKKKKKJ!UWwsD{{{xooooa EI endstream endobj 90 0 obj << /Length 124 >> stream 0 0 0 0 17 69 d1 17 0 0 69 0 0 cm BI /IM true /W 17 /H 69 /BPC 1 /D[1 0] /F/CCF /DP<> ID  EI endstream endobj 91 0 obj << /Length 142 >> stream 0 0 0 -66 46 0 d1 46 0 0 66 0 -66 cm BI /IM true /W 46 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID )3"p @ EI endstream endobj 92 0 obj << /Length 158 >> stream 0 0 0 0 19 88 d1 19 0 0 88 0 0 cm BI /IM true /W 19 /H 88 /BPC 1 /D[1 0] /F/CCF /DP<> ID 4|߿3!) EI endstream endobj 93 0 obj << /Length 193 >> stream 0 0 0 0 53 69 d1 53 0 0 69 0 0 cm BI /IM true /W 53 /H 69 /BPC 1 /D[1 0] /F/CCF /DP<> ID &f H7 xA<'ZѬ1@zA>z/?Uo-l UXa``@@ EI endstream endobj 94 0 obj << /Length 180 >> stream 0 0 0 0 43 67 d1 43 0 0 67 0 0 cm BI /IM true /W 43 /H 67 /BPC 1 /D[1 0] /F/CCF /DP<> ID & ooo}\\isW]ukC EI endstream endobj 95 0 obj << /Length 197 >> stream 0 0 0 0 45 69 d1 45 0 0 69 0 0 cm BI /IM true /W 45 /H 69 /BPC 1 /D[1 0] /F/CCF /DP<> ID &F0A;ق xOZ,%8\. _\x~k΂HB EI endstream endobj 96 0 obj << /Length 171 >> stream 0 0 0 0 52 68 d1 52 0 0 68 0 0 cm BI /IM true /W 52 /H 68 /BPC 1 /D[1 0] /F/CCF /DP<> ID &.#<'FOGP7 ~> EI endstream endobj 97 0 obj << /Length 163 >> stream 0 0 0 0 39 69 d1 39 0 0 69 0 0 cm BI /IM true /W 39 /H 69 /BPC 1 /D[1 0] /F/CCF /DP<> ID &QM`a?{Cbp EI endstream endobj 98 0 obj << /Length 154 >> stream 0 0 0 0 50 52 d1 50 0 0 52 0 0 cm BI /IM true /W 50 /H 52 /BPC 1 /D[1 0] /F/CCF /DP<> ID &6Bk*%tO EI endstream endobj 99 0 obj << /Length 169 >> stream 0 0 0 0 55 66 d1 55 0 0 66 0 0 cm BI /IM true /W 55 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID %,8wwruar!8UN\ GuPAHh EI endstream endobj 100 0 obj << /Length 158 >> stream 0 0 0 0 42 52 d1 42 0 0 52 0 0 cm BI /IM true /W 42 /H 52 /BPC 1 /D[1 0] /F/CCF /DP<> ID &Bk )}>Aa=  EI endstream endobj 101 0 obj << /Length 177 >> stream 0 0 0 0 48 66 d1 48 0 0 66 0 0 cm BI /IM true /W 48 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID "`û{AEBP~!UT(R4  EI endstream endobj 102 0 obj << /Length 204 >> stream 0 0 0 0 45 70 d1 45 0 0 70 0 0 cm BI /IM true /W 45 /H 70 /BPC 1 /D[1 0] /F/CCF /DP<> ID &P^DQ} pA:5=IOUk a& v .   EI endstream endobj 103 0 obj << /Length 173 >> stream 0 0 0 0 80 51 d1 80 0 0 51 0 0 cm BI /IM true /W 80 /H 51 /BPC 1 /D[1 0] /F/CCF /DP<> ID 5 AkOvQ Si5ka )5 0P  EI endstream endobj 104 0 obj << /Length 218 >> stream 0 0 0 0 53 69 d1 53 0 0 69 0 0 cm BI /IM true /W 53 /H 69 /BPC 1 /D[1 0] /F/CCF /DP<> ID &"%}OC? k d $h.+X.KKKAipZ 0# `J U}hY5L!u}} " EI endstream endobj 105 0 obj << /Length 124 >> stream 0 0 0 0 10 66 d1 10 0 0 66 0 0 cm BI /IM true /W 10 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID @ EI endstream endobj 106 0 obj << /Length 179 >> stream 0 0 0 0 73 51 d1 73 0 0 51 0 0 cm BI /IM true /W 73 /H 51 /BPC 1 /D[1 0] /F/CCF /DP<> ID 4k5m: `0`qSDݬ4 aRj EI endstream endobj 107 0 obj << /Length 156 >> stream 0 0 0 0 42 69 d1 42 0 0 69 0 0 cm BI /IM true /W 42 /H 69 /BPC 1 /D[1 0] /F/CCF /DP<> ID 4XiZQkkaa EI endstream endobj 108 0 obj << /Length 218 >> stream 0 0 0 0 48 69 d1 48 0 0 69 0 0 cm BI /IM true /W 48 /H 69 /BPC 1 /D[1 0] /F/CCF /DP<> ID &Al@x #'7~kX\.@d8 h-.Bz#/:M믎MS4>^]^k }$H.  EI endstream endobj 109 0 obj << /Length 171 >> stream 0 0 0 0 49 50 d1 49 0 0 50 0 0 cm BI /IM true /W 49 /H 50 /BPC 1 /D[1 0] /F/CCF /DP<> ID &A ޿ҿo_߫ҿ/߫ҿ/ҿ/ҿ_ EI endstream endobj 110 0 obj << /Length 138 >> stream 0 0 0 0 44 66 d1 44 0 0 66 0 0 cm BI /IM true /W 44 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID ' /%W  EI endstream endobj 111 0 obj << /Length 164 >> stream 0 0 0 0 32 69 d1 32 0 0 69 0 0 cm BI /IM true /W 32 /H 69 /BPC 1 /D[1 0] /F/CCF /DP<> ID &4MFh {:p EI endstream endobj 112 0 obj << /Length 176 >> stream 0 0 0 0 56 66 d1 56 0 0 66 0 0 cm BI /IM true /W 56 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID #`\pørp!{ֿK `Apy*B  EI endstream endobj 113 0 obj << /Length 186 >> stream 0 0 0 0 42 53 d1 42 0 0 53 0 0 cm BI /IM true /W 42 /H 53 /BPC 1 /D[1 0] /F/CCF /DP<> ID &aD:B}֎8Otd ?xx> stream 0 0 0 0 53 71 d1 53 0 0 71 0 0 cm BI /IM true /W 53 /H 71 /BPC 1 /D[1 0] /F/CCF /DP<> ID &A͐Mp>O%Ǡu}{ɪka;[] .\.? EI endstream endobj 115 0 obj << /Length 184 >> stream 0 0 0 0 51 53 d1 51 0 0 53 0 0 cm BI /IM true /W 51 /H 53 /BPC 1 /D[1 0] /F/CCF /DP<> ID &!*N|'}|u>qOt&M{ү145x뮺A EI endstream endobj 116 0 obj << /Length 174 >> stream 0 0 0 -66 60 0 d1 60 0 0 66 0 -66 cm BI /IM true /W 60 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID )F׭z׭z׭z׭tK],%$UUT+8N 넰$]UB E EI endstream endobj 117 0 obj << /Length 188 >> stream 0 0 0 0 57 49 d1 57 0 0 49 0 0 cm BI /IM true /W 57 /H 49 /BPC 1 /D[1 0] /F/CCF /DP<> ID 0Ó\   <<<0x0x0``n   ,,, X (( EI endstream endobj 118 0 obj << /Length 187 >> stream 0 0 0 0 49 69 d1 49 0 0 69 0 0 cm BI /IM true /W 49 /H 69 /BPC 1 /D[1 0] /F/CCF /DP<> ID &H>}B0|uo_o_~o_oK_ EI endstream endobj 119 0 obj << /Length 153 >> stream 0 0 0 0 57 66 d1 57 0 0 66 0 0 cm BI /IM true /W 57 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID &\  EI endstream endobj 120 0 obj << /Length 188 >> stream 0 0 0 0 45 71 d1 45 0 0 71 0 0 cm BI /IM true /W 45 /H 71 /BPC 1 /D[1 0] /F/CCF /DP<> ID &A Nh\='}='z_?ɪkmv[[]1N? EI endstream endobj 121 0 obj << /Length 188 >> stream 0 0 0 0 57 48 d1 57 0 0 48 0 0 cm BI /IM true /W 57 /H 48 /BPC 1 /D[1 0] /F/CCF /DP<> ID &qa`X,,,, X X @```aPPPU&x0x0x```axx<@ EI endstream endobj 122 0 obj << /Length 156 >> stream 0 0 0 0 32 64 d1 32 0 0 64 0 0 cm BI /IM true /W 32 /H 64 /BPC 1 /D[1 0] /F/CCF /DP<> ID &-k_\ޢ?ɩ  EI endstream endobj 123 0 obj << /Length 125 >> stream 0 0 0 0 9 69 d1 9 0 0 69 0 0 cm BI /IM true /W 9 /H 69 /BPC 1 /D[1 0] /F/CCF /DP<> ID ɨ EI endstream endobj 124 0 obj << /Length 141 >> stream 0 0 0 0 29 51 d1 29 0 0 51 0 0 cm BI /IM true /W 29 /H 51 /BPC 1 /D[1 0] /F/CCF /DP<> ID 4 oxxrj  EI endstream endobj 125 0 obj << /Length 195 >> stream 0 0 0 0 67 50 d1 67 0 0 50 0 0 cm BI /IM true /W 67 /H 50 /BPC 1 /D[1 0] /F/CCF /DP<> ID &?]~]?]?WO_OO}}}}}?}=}Z|@ EI endstream endobj 126 0 obj << /Length 188 >> stream 0 0 0 0 39 53 d1 39 0 0 53 0 0 cm BI /IM true /W 39 /H 53 /BPC 1 /D[1 0] /F/CCF /DP<> ID &`ČcpC  6ִ\!y a, ap]u}axd=8}d8 EI endstream endobj 127 0 obj << /Length 120 >> stream 0 0 0 0 9 69 d1 9 0 0 69 0 0 cm BI /IM true /W 9 /H 69 /BPC 1 /D[1 0] /F/CCF /DP<> ID  EI endstream endobj 128 0 obj << /Length 175 >> stream 0 0 0 0 40 53 d1 40 0 0 53 0 0 cm BI /IM true /W 40 /H 53 /BPC 1 /D[1 0] /F/CCF /DP<> ID &,0 Z֍B uz?5_߿mv`;` EI endstream endobj 129 0 obj << /Length 168 >> stream 0 0 0 0 21 81 d1 21 0 0 81 0 0 cm BI /IM true /W 21 /H 81 /BPC 1 /D[1 0] /F/CCF /DP<> ID 3rj{{____ֽk@ EI endstream endobj 130 0 obj << /Length 168 >> stream 0 0 0 0 21 81 d1 21 0 0 81 0 0 cm BI /IM true /W 21 /H 81 /BPC 1 /D[1 0] /F/CCF /DP<> ID &]//z/ׯׯU EI endstream endobj 131 0 obj << /Length 152 >> stream 0 0 0 0 42 51 d1 42 0 0 51 0 0 cm BI /IM true /W 42 /H 51 /BPC 1 /D[1 0] /F/CCF /DP<> ID 4XiZQkkaa&@ EI endstream endobj 132 0 obj << /Length 186 >> stream 0 0 0 0 47 53 d1 47 0 0 53 0 0 cm BI /IM true /W 47 /H 53 /BPC 1 /D[1 0] /F/CCF /DP<> ID &`<''G@#|3nwKm{Ka0mmmma ! EI endstream endobj 133 0 obj << /Length 177 >> stream 0 0 0 0 45 70 d1 45 0 0 70 0 0 cm BI /IM true /W 45 /H 70 /BPC 1 /D[1 0] /F/CCF /DP<> ID 4 OAr07OM{׷_?_Km+[JJ+%Rj@@ EI endstream endobj 134 0 obj << /Length 188 >> stream 0 0 0 0 47 53 d1 47 0 0 53 0 0 cm BI /IM true /W 47 /H 53 /BPC 1 /D[1 0] /F/CCF /DP<> ID &hx zzzz: ޓ}?O7j_m~_vᄶ] , EI endstream endobj 135 0 obj << /Length 156 >> stream 0 0 0 -57 57 0 d1 57 0 0 57 0 -57 cm BI /IM true /W 57 /H 57 /BPC 1 /D[1 0] /F/CCF /DP<> ID &` 5`_@ EI endstream endobj 136 0 obj << /Length 185 >> stream 0 0 0 0 54 53 d1 54 0 0 53 0 0 cm BI /IM true /W 54 /H 53 /BPC 1 /D[1 0] /F/CCF /DP<> ID &`4HF]u  ~~Q~k w^l/ -kXaa7"  EI endstream endobj 137 0 obj << /Length 156 >> stream 0 0 0 0 40 64 d1 40 0 0 64 0 0 cm BI /IM true /W 40 /H 64 /BPC 1 /D[1 0] /F/CCF /DP<> ID &pp}_z5  EI endstream endobj 138 0 obj << /Length 129 >> stream 0 0 0 0 17 69 d1 17 0 0 69 0 0 cm BI /IM true /W 17 /H 69 /BPC 1 /D[1 0] /F/CCF /DP<> ID ɨ1k  EI endstream endobj 139 0 obj << /Length 140 >> stream 0 0 0 0 38 51 d1 38 0 0 51 0 0 cm BI /IM true /W 38 /H 51 /BPC 1 /D[1 0] /F/CCF /DP<> ID 5w (`ַ& EI endstream endobj 140 0 obj << /Length 218 >> stream 0 0 0 -66 95 0 d1 95 0 0 66 0 -66 cm BI /IM true /W 95 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID &. pW____N:/ޮ_zzOzUz_7 EI endstream endobj 141 0 obj << /Length 159 >> stream 0 0 0 0 40 66 d1 40 0 0 66 0 0 cm BI /IM true /W 40 /H 66 /BPC 1 /D[1 0] /F/CCF /DP<> ID & V?MnEO@ EI endstream endobj 142 0 obj << /Length 191 >> stream 0 0 0 0 41 42 d1 41 0 0 42 0 0 cm BI /IM true /W 41 /H 42 /BPC 1 /D[1 0] /F/CCF /DP<> ID &c猇xO&<%[zXb!aXamaxAB>Xa,0X}  EI endstream endobj 143 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 1/W/r/i/t/e/R/a/d/S/m/B/u/f/F/l/M/n/g/H/A/y/s/space/C/o] >> endobj 144 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 1/asterisk/one/plus/space/o/p/e/n/parenleft/parenright/c/l/s/w/r/i/t/less/d/T/y/greater/a/D/f/E/v/S/h/m/I/g/B/u/U/three/two/C/j/k/F/N/b/H/R/zero/period/four] >> endobj 145 0 obj 549 endobj 62 0 obj << /Font << /F50 10 0 R /F39 4 0 R /F41 5 0 R >> /XObject << /Im4 61 0 R >> /ProcSet [ /PDF /Text ] >> endobj 148 0 obj << /Length 1829 /Filter /FlateDecode >> stream xڥZI6ϯ. mzhIS61CM{THoko}|dGG/2xr-pDJl )sDfmL 8MW\OTMnEji䚥()18RTjn&'SF6@ř*6?>Mu Ϳ]n&'qcM5`X٩ 1&Wt_x.~]{AP8<D)'|s= ,D,Uv1T닿!pxUb 5ڇ`gl@ I!`DBHX oR~pn>a0Q7F*O9!V(c%Vۧm)Uw /pn>H`7 }p;' cxusyux=*/n=fD28XjNhH@ f>]a⩌QA  wı4pDVgc}mxM)LdKÄ?FO Ly!ְ jXvyxFÃ(A0Kd\v$6\h(,Jjo*&mFfeMi-/_W-v&;|ߟ9ޔ)e{ܾs؝oknu{B`ä+` ڶ۱hxb8 'o~"argz9[otJe5s?㫽g),\V=Aa!:WUu]yﮗw0A]^uAq$HX-c 2[RU¸,& Eo,Rs»xyUnFTrO$5,0q݉6nMgQ '"`66^d KR7FwJ9F4q)hJ؞3tTo Ddh1fqȊg4<"lN" I[ |{kRD3U#YoS -ەܾkT{N!r[ 'r~%G1vgOL8!@]:<2Nc~U٭,JăIAȐ*1Xv40& l?F7D~9OmctPЏ~? oH~5K'  քҿl-p;) :@\{_s9Goյa/G-:Pڝ }"r r~ =yհ endstream endobj 147 0 obj << /Type /Page /Contents 148 0 R /Resources 146 0 R /MediaBox [0 0 595.276 841.89] /Parent 51 0 R >> endobj 146 0 obj << /Font << /F50 10 0 R /F39 4 0 R /F41 5 0 R /F63 149 0 R >> /ProcSet [ /PDF /Text ] >> endobj 152 0 obj << /Length 1623 /Filter /FlateDecode >> stream xZK6A@&ME@I8ZFmm%oSP,{==?7fH&7 M W1IL ۋWohr{P"M>OnOaMI^^tAJ. 0r; BYFiiцaԎf8cā+CVc|)P\'IFp6Y]%/VOR|n*{M\jJa wٗoV/[8h)\q b|oֻͧ^nYnjKAhPv4Fm-!e+w>Z?FG,%hdDT!N`?#fS119bR4vtDF+J5\ pc5!t q}.ֻ0h!w7ayܤi,w#]NkJy2ߥj?o;^ci ʂ0/ڼܗ.62v 47ЈI7RdŤtCѦ.>J((щG2FS?k-Ԩ ɇo˲y 1TЀ^GUQ_j$-֌:Όh3"Y|)Pcmݮ]`8YGGMh(.Zjs ~菮- SV5qĴ oGmш"@ғ,ݬ˶mI>'yYa( B^U)T_5bW-hxJ(iY:!#f;QCt뫀vT7o<ƈ4g B0B8EƫԬ09)ηc'.r( 'ƈ 9lWP5KHd>3uMagDaV4D a=Z;JIL8׆C"#("cX,z*IH"<EX(Dž"c$jmnf/X0Σ u:8bzœoGPd4bēq\pUlUujdEy5 ʉ >}3 ;ߎ}h@> endobj 150 0 obj << /Font << /F41 5 0 R /F63 149 0 R /F39 4 0 R /F50 10 0 R >> /ProcSet [ /PDF /Text ] >> endobj 155 0 obj << /Length 1795 /Filter /FlateDecode >> stream xZn6}W) 6]$-4>%ȶZh46ܢKF-P Fut{E*ы-N 4Z\)sD!:?#bY,x:MVˢNKs⇧LG#518:)md,O\^:+I֠ )\sqn,uwY}m/&&'{_anw\%|v }tSs"f1W*)67I`2ݴ7K{\o:Ȧvk7:k-\'y9bvqq,3diR(L .9qRn<_|߾#ONo|H \ o:+. UZotpUox)Ays!ֆiC20B- hŒzsqJijs&sq ]Cf7FX# ^L3 hi(\F1%c>- !&5u( hiE t7FbT}@{c!568E\ːZ,@.x鍇>iќQ3 }<üa  01 BڕNG0 (,Hu$vhv{:(A)o<}yz"a%o<}#{0_ۭuR$WieN׋}]dԙ(!Tٹ A5o hh ƟF0ѯNi tث,Ove*wJak ;\H\wY/Q$LVc o0Y%cx`5oyjhE`Ľ16ZD{[mQ#d|1d>Ȱ8hw@8~#GG>pQyYduٟ="L?cϞݦtOMZeJ5!f`HñH RS Ƴvc~oS;&5Bi2/@΋yzã<HyD`DI?1>Ly Oc`7ձԱ]}T"cP]YwA;6|0 kA2_c )3ͭ endstream endobj 154 0 obj << /Type /Page /Contents 155 0 R /Resources 153 0 R /MediaBox [0 0 595.276 841.89] /Parent 156 0 R >> endobj 153 0 obj << /Font << /F50 10 0 R /F39 4 0 R /F41 5 0 R /F63 149 0 R >> /ProcSet [ /PDF /Text ] >> endobj 159 0 obj << /Length 1892 /Filter /FlateDecode >> stream xڭZYs6~͌ԱPLm4I}H2#6'ӴޅJ"`b/ G7~:{/O>g:"iIty#EUc4z5xgU̲ } BR <+"51 e҂#shc*` r)InWy:bpgX‚WK}^/n;67mƲXɼ9VuXAi9jCa1b,1 \|-&E3B"&V- BN{ZD@9<,c [v y_m_OgahZ Q00cن۔nժ {)h "*eoj) }tSЛB@v;9/lxTLQ0h1_v>;,_g .W&i77-DZV=䮾]TדEc|2[MӲ>eʷȺRhu+ QD#!ڼ!Q4[nc~_'83´.wnrȆ:BDPh:B¹MR߂?]l&-`bT٢Mͬ5*P )Oծ F} L5sȱ')J;;KMMĵ{vff @pϡ2MCbJ\س'NҲGI ->Xw$z Y0hF\ّ,iRl{EZ6 \+bj= ]x96DaӤ(1ub&9}^oÝmsn'%ٻE6=RxT@^F*{TVNϛ?Pȃ4cR88RD*nUvS d&vm}͓yl#adzcI'΍I1r F5da&|"C/]bxc4O=w,k6Mrrw?\m掍M]P ?xX7_^Liޛ'LH`bH7FĬF&gWi!k¦C%3 zElqVBgr[=/?'J/\8Ax96aBа_.c4B}<⏉uy;6`Iq39DjsX[hv x6tfÂƂv8/=zm3܀dF R?PL endstream endobj 158 0 obj << /Type /Page /Contents 159 0 R /Resources 157 0 R /MediaBox [0 0 595.276 841.89] /Parent 156 0 R >> endobj 157 0 obj << /Font << /F39 4 0 R /F41 5 0 R /F63 149 0 R /F50 10 0 R >> /ProcSet [ /PDF /Text ] >> endobj 162 0 obj << /Length 1897 /Filter /FlateDecode >> stream xڥZn6}W>v &y.REue))PKlI4S}2sfx8~:{?ޜ}E( nV! 4 0,giU:_Pg1u\i5xv3Jb3n0ܫe旳w7gLH@F Fd}g,/F, vb = @(C") $!󰂫IE|d Axr g6 $mqHHfuɳH o- WugHR3ƀ#Í<ծ'cSc΋m2p^禔~;c 8/)b+?9 `7何z} $dĸn&l8<Cz| b F4O11-b{`Zi@@O7J ip}$ *B$RxW/${SBCD)Î.Bl8#TMuVeCdq UڊŻ.߾zbfE^Z4^0b\NcG66Q(e ^,SuYtԒZ]`U}>/bmXZ> JzmS FaGgO64 >GWnYP$Vbk9l~Y<>M_b3IwgK:Fe!R#f1!gE#@ZE ̄=Ww;gP_ |e ̅ft9H CS /u-l/ DE~=a'|0'miN]45-{/k4}@b C[3 !i endstream endobj 161 0 obj << /Type /Page /Contents 162 0 R /Resources 160 0 R /MediaBox [0 0 595.276 841.89] /Parent 156 0 R >> endobj 160 0 obj << /Font << /F39 4 0 R /F41 5 0 R /F63 149 0 R /F50 10 0 R >> /ProcSet [ /PDF /Text ] >> endobj 165 0 obj << /Length 1797 /Filter /FlateDecode >> stream xڵZnF}W. ؉I4mR$@Z5ڇ$0X ȤKQq|\RA %QGs.n#xFg 4bch* :ߟ}L|>D8=OKaM~=AJ. <0r; BYFiiцaԎf0c>+1^_}pieĸ#"Fz}*"iJ/^ܽ|uK G%c2Ie].|.d #VN2z `HiRN ƨES!N6NMߑ U6i*<XGv~5 4~fDgsdH'D)`:w􇊤IZ2 $) a.A h|E p(_E_ˑY"Wq#+z<<~ M?VɚH9NTAd-N *nVE7ib@FL (JL` E@C{]I|/zCY PcQa$ 0C1@XX,4% `a7ۛÛ,#aeǃ}T?-!11@[q~q&u,V.iBBG>c<95_I}+O24!0ԥ KS FŽ](F9%yeҿDy|S&j)H8z@ΠZZ >ݎ8o?%!9*Uc 8q$o};ʚ7C⻥[F Ҙ(||+Uw;N!3VD \hZV1ܫ Z{r/*M<|E *n-&)MMJ;vz#Hn kQ-"7M]y(yhȐ^^^/Rԥ'o :`Ʒ7?Oz,c(9t8'@K[QΨIJG0@֨{z?@ ZUSpP~&Q`"J+ͷ$իr(N-DSI &@I;P!f{MT+_.H.n`Wv~TI)0\ @pZ1>NNcV7r'9mg{?U|dE}ƃmƃ&7HlhinXadun~\=(V/hqdg͟nsw[=nl h(!hC ʟ\= O?\wC5pֲڞ}Iq:Å ֡Vx8x: 1:p&@؉荐\rvENfZ̚՞f'NNʴsæCad e>ݎ(g7YI9A E;0'oЉ3 ! Z#"q(@͢Zeu9cQy==Љ8e*+qT(BG*@q8R~z-k^/cɈ/kΪ]{PQpoe~;<>:fmt]1n5Ck(, j> endobj 163 0 obj << /Font << /F41 5 0 R /F63 149 0 R /F39 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 168 0 obj << /Length 742 /Filter /FlateDecode >> stream xڭVMO@WRn+PT*!UU1&Xuv=wHYN^߾7dJ(:{p$hIbJA)F'g\cBAXC:Ù3f`Ѧ ?G? ؂pϓ#Ɉ&kE 8( L99ʶ}JbwHS`,iԄi(V 1:ŵآYK'ZzHFJZ+ֆy8Ɩ|b,re$(v/4c!mAΦr ŀ٥id;fNR^M3)o֬Lo7Κ~ۋNREyY>es.3},({=EwMf:j.փӥȸ$P ?Y3G5\MOH3͚QD=P0ʼ, |u]H8퓗GaOǻ endstream endobj 167 0 obj << /Type /Page /Contents 168 0 R /Resources 166 0 R /MediaBox [0 0 595.276 841.89] /Parent 156 0 R >> endobj 166 0 obj << /Font << /F41 5 0 R /F39 4 0 R /F63 149 0 R >> /ProcSet [ /PDF /Text ] >> endobj 171 0 obj << /Length 2176 /Filter /FlateDecode >> stream xڕXKБ|\Ɏ=X.씋 ǎ'>_9C; 4~w v߼ d vaIN]f~,H0Nwg/ 2b4m?D*>V]NxwacHԂ!<̘m8LŒ$>T# H eQ R&PeV{w57b{݌gqL,s8gH?T*r)?ώ?ݜY8ZΜDӂHOό!1-0GodZV/I# Xi=:,Ӡ W3hlKP:C%qJDzMJLbC/orh)(2$4"3ƂT8~ /xZn`ĉ .ܖ[X{x?.z4>XYŃ +m]O+&s|Mlp6] e;UWƁ]6*Hӂ lǮs&G_E`?6lMk,A6WC>*v{UAsoF %qaVvg{b}ET}umÖ+GDf-4ϳBFNjÚ{#Tq.Jcso>L =#0׬4 aӡj-%9,؁;B B^@ &Xq>(˙2_6 NdY%̏Tʾp[ziRgc$\ opɮ6zTk_IJ:##!@1݆M]"3 Eb`mZ;`w6ki6tuIH,N{$j$P ,m*&@644omWez(56fQC-ivضA( HT9p8br07D6/H#i륱Tan7u6L{z"jG&F{\TV5 eKA+e,@ma uBo3MGӔZXER$Y/m}6u4qmT:9z9 {ajMS6 ᢛ7rsŀYSGeRGrDsFǮbom?0 ]7\h 'm*Q9^{ y˹XG&%*Q{Oذ>F#oJS/#k&:}[gx %b%X(=*M'ͦxv)Ipc:b<ʤjo+ @3g-덖?ƙ+S$ :B~LɑD2ARLY V?4zG+F6M7ɆJi6Z,OSP j~ MH k$C7[ Dhϖ ,ʵ}C»0> endobj 169 0 obj << /Font << /F50 10 0 R /F39 4 0 R /F45 36 0 R /F15 37 0 R >> /ProcSet [ /PDF /Text ] >> endobj 174 0 obj << /Length 1881 /Filter /FlateDecode >> stream xڕˎ6>_ {H`M{ ڢۜȒ#JeɣK.&Y*ֻJNv/dD߽.M:ye\jW&Yb~/vPNm&.kZ;x>݆~؆!G1u˜o &5n}yYRF ~!q,-XS,u:9Y=??4Ӻ gg^IQܼѴE]i "E4{LA=uZkm_x޹z]2"42̏ItZE߶ ]gFWFejn7׽0@4SN~pfφku}QȺpuBfӶYɲU(&3C;;͖%sJR6Mu+<*b?ID]9dUžͯ֐ 6"/ܹT \di@(Ȕ7|Jd=Su6pNGG:jNu[5ch.TB1GbѼOn _4Ըց44TC庈mcO8c9 sa8e8)徙u,oz:ʒ,Kq_#_Q)PeŸq =,.-nƄdY%K\N,c6hC󰕁)xaPSZ2L68z!A;ࣹ޶ ?\3ß\DbUǵysq[1ek3f`$n@-t*}+9E\u]%d`y5Gt`]GQ6L3΄I3Fȇ Nx\R 7"vft(Nb.[")-W \2!G >~rmxn36b(W~ZOZ.(~qGl"a|&S[0/fKOat`h^PXJUB Mu)> endobj 172 0 obj << /Font << /F39 4 0 R /F50 10 0 R /F49 175 0 R /F15 37 0 R /F45 36 0 R /F21 55 0 R /F27 57 0 R >> /ProcSet [ /PDF /Text ] >> endobj 179 0 obj << /Length 701 /Filter /FlateDecode >> stream xڍTKo0WA$k$Eڕ!Tyj֎3΄ݶD'AGgt~?Wgz, $j1ETx9MBg^x?IRJΛFZ J)YlW UVq1d+ߕJM## b5A a[?@i'72ҶR(%{| M->8x>b {^FI h.%\Zmn4%@(DOv+r#%(߅ WMP{i 5+]H`)}=p):}Q]\ϫ˥<,dEض|Z.ՀL:qm;4JfUrxAD0 X ɔ}o'HmX!OAZZӗqc\YJ`bx$>nFDd{9cР5W JzD Ai71N#LnLadntki;~ -̿k?FG"9p\ nNs>f0(ÌhZ#Fv1Q2*850* Kw*ŷ81vvЂC= =8.羁) ԝwss&ދYJ9y:GimnoEV vX+x_Ȳ<q Ǚ2ŠTgc}z endstream endobj 178 0 obj << /Type /Page /Contents 179 0 R /Resources 177 0 R /MediaBox [0 0 595.276 841.89] /Parent 176 0 R >> endobj 177 0 obj << /Font << /F50 10 0 R /F39 4 0 R /F41 5 0 R >> /ProcSet [ /PDF /Text ] >> endobj 182 0 obj << /Length 445 /Filter /FlateDecode >> stream xuR;o0+t9c 5"Cҁ鈍BT)R]x߽#' V[ LeNbu^ EI=ye@7r4f?[T k&u9f.w?0GESƁ7QtFؽ#? ;k\_TS;`FM5 a /BCbk;?I|_mEY[5yՄZzؤmo&K?8;{'7aٺ,% }cD=AVjƝj,W/p2(B۠T6URU z',_~jn"=莡}FqE.t=W/ZSOAnV_/0}]Xd^ VWeY毨7 8 endstream endobj 181 0 obj << /Type /Page /Contents 182 0 R /Resources 180 0 R /MediaBox [0 0 595.276 841.89] /Parent 176 0 R >> endobj 180 0 obj << /Font << /F50 10 0 R /F39 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 183 0 obj [388.9] endobj 185 0 obj [600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] endobj 186 0 obj [826.4 295.1 826.4 531.3] endobj 187 0 obj [361.7 429.7 553.2 317.1 939.8 644.7] endobj 188 0 obj [531.3 531.3] endobj 189 0 obj [777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 762 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500] endobj 190 0 obj [388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8] endobj 191 0 obj [277.8 277.8 777.8 500 777.8 500 530.9 750 758.5 714.7 827.9 738.2 643.1 786.2 831.3 439.6 554.5 849.3 680.6 970.1 803.5 762.8 642 790.6 759.3 613.2 584.4 682.8 583.3 944.4 828.5 580.6 682.6 388.9 388.9 388.9 1000 1000 416.7 528.6 429.2 432.8 520.5 465.6 489.6 477 576.2 344.5 411.8 520.6 298.4 878 600.2 484.7 503.1 446.4 451.2 468.7 361.1] endobj 192 0 obj [500 500 167 333 556 278 333 333 0 333 675 0 556 389 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 214 250 333 420 500 500 833 778 333 333 333 500 675 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444] endobj 193 0 obj [556 556 167 333 667 278 333 333 0 333 570 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 250 333 555 500 500 1000 833 333 333 333 500 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 930 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778 611 778 722 556 667 722 722 1000 722 722 667 333 278 333 581 500 333 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500] endobj 194 0 obj [600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] endobj 195 0 obj [556 556 167 333 611 278 333 333 0 333 564 0 611 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 180 250 333 408 500 500 833 778 333 333 333 500 564 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444 921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500 333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 0 0 0 333 500 444 1000 500 500 333 1000 556 333 889 0 0 0 0 0 0 444 444 350 500 1000 333 980 389 333 722 0 0 722 0 333 500 500 500 500 200 500 333 760 276 500 564 333 760 333 400 564 300 300 333 500 453 250 333 300 310 500 750 750 750 444 722 722 722 722 722 722 889 667 611 611 611 611 333 333 333 333 722 722 722 722 722 722 722 564 722 722 722 722 722 722 556 500 444 444 444 444 444 444 667 444 444 444 444 444 278 278 278 278 500 500 500 500 500 500 500 564 500 500 500 500 500] endobj 196 0 obj << /Length1 1635 /Length2 8964 /Length3 0 /Length 10034 /Filter /FlateDecode >> stream xڍTo7H4#-6FRK Q.I |9suݟ>߱0<疳YaP7P<@ ?  [bF !0X( ԝL3ԂAn>886! w-@x, 0b#͆'&&;@؀-r Ї@( &Byy=<#;wnp^C( ͝_= ^pJ|08 |(?lN ߝ? 0яa0׿1sοZG)/p >(@3C~/j7N #4/̀B@/-_)9;g@#n9`w+_ScV [9ѹy!He')e'>() }y=ywf@ȻEDq1n% N @ wHw`?8Pw.v0jDZ"Q?HNABb޻_0?y7޿e|d^=^߭/'/?]c?,527npn?40lmf#XvV-G6*zf=Z`S\ʜ(S˧lة-z=j} 7=uɽSif7tň>D]2},Oj{&x(iwtUdjӈ,Z ք(,Z2 ONgԐ8Nj"Z%}"VQĮ2{xS쾝NcB*mv=Vapۜ-K*.o>K&_F4 p4IvW,:hxL/^iqiKݔ5Gۅ>N&^U$d gvΚ=a 27Muh3. n7! pV>m1][&WGt3"85JcrX[ܷGamhx%Qmy䭫$bK!1UYB?nl1dAZr"'kvH>)޴Òfh_ƨ`?pИ~}1+{t {ԉcN,`ٳ?l~W1*}w=+Yö>A%wYwd|:_xgc tLܯ5A:#Muo czGز.-6m@~-vZFe8н}㒌!HȠ1g| G.VkNl2[*Z8ٰ -@:ZouS#}rI/.ܲ{޺AKr_pnj}$/QhwE>^*7iD2YcѶJaVkȢT4onyU la 8RrAl Ţ}Y^-ٸŢlg D@6@E|yI7ptcBfsHÕl\W7&8}4QP.sq&Ag*>|g6Fjl-ƳpT\v( t"Vj#"흻* j|͎> mhp)++z\( j'~~!\iiTM>. op׋pࡓ|&[˪Ϣ1=IIW33uQu7 {W)O+& -:qdXO%0V[o|8Q@o*E]ǞɌRD#"vSZ-*C'tp?䔸N㢝x+Y|(9o7{A2Alۈ#ҔS-I_flGٛ8Ô꓌V* t+l{ Ü͌ЏVש[+YU>6K SNd.7ʫNu1 ï&PUuSBճ/Fʟ)f^ 2Fꍔt9@!޳#v5$)_8L(еH&YJ+\*uذ:͸3DQeoੲ tObhuN_PXkJ 9PJz܈ ]bO•ghIT&a`豶B庾gg餇cp|qd2R݈d>=fhRXhڜL|gؚl+i)E i" 1uˏ-.'_xmsa 5-7շye .c0n[ X2J-:3U7Aq̼ x'&邕|$i^OykzOZIiDa8nIUz2VѶnZpY=E>22.8AY]Q .- OR_;g:}=-Mm|֒=yگ)K0C}AG%@XрNԈƗ}EpvlɁ#ڙ貱($AϷ p1W_  8j8_ℍ/`W ދRtzmB?h7vR r_jE>MUVe}V}tt:~^\.=7sU/ĄDd'uj>yIXx )EPz3#HWVXn"ZFTX7dI+Vd"Raf s=wg*JTk! wsBUMWow4<]z ?Xi+26c?ayZWjMXDѪJ7fMIT~&8sAkIni͎v݃l%L@d( &ԉW~3rL N mpP5~xo[cbhԜa9ɦu!x*eH{sg}  #0N-n_W^*ށ8kФkK5㉰\1Vv EUXm'.6B e٭L^9ĤͱتWϋ9-miІxq7V5*ukCXTD>%8Ṽ16sGpŠ!\.1¸ũ P)ui`^o0RaT nmb4}=/iY$l'>-D]9ݯw8m/.zWsP*~UhowT d"( L3ŭNovbഈ{F0Nc@ghoө\>M-mGA bZU<ij;#kKK|/n-= 9PKwUF~VTnxދp#)7_)8lۊuսCM dy r* "lZ HxBVD>+X(.EnTI!bǭ2]+:ӴY: 8_EtCGVO_Ki(kPgdq G12~ tm/?3|SnW$b94J'NֲP]_#zqQp~*o~t646j1ZN+wx ee+ِ'HoXH4aܛߌq(aiUTDix\Jh^@+&y\ۜO!W/z|6-N":z/WY O5eI[KNLs9GGf' e% 2 ~&ۏ/_T4@> )݀yCMd+-]\Wַ)GJ +E@:*4D۸/i}ro%'A/EDpZpՏ+8 E -WɏɘjGUtiPa5Wc[:t ֈP:9R}X3_,n9S&tBF(ޘ/yYrIyZFkua0GQkXhLcubY2[Gn}=؉լ +z /ͣege]m%_ ?+{5NsCqOuLWdpg[EjLM1\dKoBrn_;_6iSGUcrc{7Q)NV>e?%67 ,4Z^ qW9q<i㝶h*2qWiaoδ, ^x^E{))`){T_jM"zL✟/3o5/BE +T8w G,DtnI5p}2,)ub9[Q#}m_{eS\<6[5r)_T5DܴW])iV>7x2ea wIs0ٷuDJ/.X{/.8{#2o-Pl^@^,i]j'Q:V4<:̞?bL)sˇE5T,aGEA#m)umW?JaˆCVqgmiqM[0t Kf?E?,Z1g_ҳfE5nHG`OՉ{[:`!qx) LK1Cy1n}6 P7d=\ǭ&]1z;Q3/ʡmcWG@v]݁M+S!:@2*+Z!+zZ%=7GWb]v3 P~>B򂖸]mSM*@AcYl@L/'fjZ//"+YTxRFt^M?6vmB ߀m<|mU: 6Һ(;)I6k#=L,Cwo%O.;YѺ^DdFnO>o[_XPp}ZR"lGB(?peBE|~*v9ffL53eP1?<*uxua o1ھʮu*2u|8^Ϧ5t2EиhEc?[_y@k"/2'}A*O]LrL[s(n[ǵUkGj~MVrˆ-f'7D0bO kCײ<_YD9`Xڴzi`g}!ws4Gv$ceԁk"Çr)hfwËPU$  ɉMAձـ]Uu~ N$EI ='퇗Ö:Ls2r5[UKZn1m <^a"j-UXd7Zu^dͫ?0yX^;7<kxy@T["L_/o?9Ÿ+ͭ9YorC,2~AvLr>mr8N>i>2n|YƓJRJLwfža3eox%n'S?{*c{qz]y”sE0WvlfobB,_"ᶓ<.7:Ș6 TN'Y>Zu~!PF`%XMs- ?;.2U9@MHd?IPڐM@^7-z6&dѹ&Ǻp'I'\!UF{Yd%|4mc ΨR"ܷ"?H]"{)$ީ2R/"l/6P+1bOܜ)bI:[tnA4yM/LCsg >Ćf}d69/Fؐ}Î[BN!d3R'RQ~92RV5MhwXJ㋈#qbKO= \EyVq%S0)0pUe, P᧺s$- mE(C,0W~Ed:S3R_5Z"1\'5.UTRA)b7x۪f y}Đ1{jb߉QQ8]/bNT![skC>T W_vd+S\-oYc@;Kjih 0Bg{z7ȴTa.4,)vFfg=bm;ӟ/PkL 8ʬ`T&Eo?'ObzQ7Mˇc"FE훅sR03r ܛ$H?_6ת aJPd+NԳoUUXJ|Cx|XmL2-䇯lɍ¼o9b*Gh4XzyMvF}Wu?::kU# s1.L,F,(4u5"4lR%Y5C)ƚ(.|p2XyO_uY#Aɥp!CB{uT* AYYatgW:$$qBrz%EVZr4 B9'0*.[~2ec~y2Me YT~? endstream endobj 197 0 obj << /Type /FontDescriptor /FontName /DVGZTC+CMMI10 /Flags 4 /FontBBox [-32 -250 1048 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 72 /XHeight 431 /CharSet (/K/M/N/a/b/comma/greater/i/j/less/m/n/p/period/t) /FontFile 196 0 R >> endobj 198 0 obj << /Length1 1438 /Length2 6548 /Length3 0 /Length 7523 /Filter /FlateDecode >> stream xڍt4kׯ"ZD0zF5`0!z[H$DDoD#Ir{޻ֽkϳ=6f]>y{-LAE--51$ 1_jb6cBJ/E)A1X?-` vDyH^p{?@QnpG' G,..; A-( 抭hE Pvp_)807 ooo~+( c04 f uAO0t Po U v0$ቴyj7^_w_P;; G:@GE@4 P[Ρy= /xh;͏#~A{H{E+ AO ^ɺ QH8{O7#$ VE@@bBbB;c$+KEr8`A0?`<0;(;0ڰyzoa)SSAb+BLrӜ9 ]`+VmřC{|T6&N__L?a`&{S`$QэKF$kmFs6śvzxvK[My&5}>uwZׄ8 , 3djށy.`uo e>%aj[?ʼdQ۪R)Rh0)٣$0uΉvJ!BK0s*(L*7o/f&r`m3yAyX*;s>~|4UA%*8C' %\ p"&w!qkP~#SeB+=3 n=<@D)j JU: viyβHrj혤G/nCߒko"wo,(g[JQ&L8퇜{4Ghτ?݌FGq㛊61P~XmAfkVBߍ,As[gS40]F9&c\01%'1/Gn~Y{*OYNe67>7q\y6Uoٙz8<>p2Q]PQ-%{rӂI5tk+GF @DyObT '&jpS5 VnL5(fTn*Ū;}hGTP֧x 1ZxHei҇u S]K/M~s+]a+ 8Y=w}[;0siK|f%_d =!d0,' [l¬6 |-5O}k4 r~49n^{G¤;F@};JCCDfYo!95N4YY (9:UL$\NN.Z I4K[+MT|PMPm CE`0]0T p wt/ְj@884}?em\9P?{6jx)*NaqIuoŀ31&,TD0ZB!iu7w/ڳ4[MU%@zy9Cl'A?]3,_]#!}(&8Y-^iut5[]Vߜd0}rZ)E2N<Dvr 5k!jzlj-eO˽W (^'R"8PdS>qr#XW~]mrHP|x1K? WF0G2U1:$1S1$~wsM6C;@t,5!ƘiYa*tXܤ$6OAklG>ooŦ'0}'͏p9kht?.*de6z<$`m!}R:L)p9glکS$>Sc~ÌBÅ A~;[k櫙_fNtX}&"  Q nAT%>LG!7E9C`6wyw"'WvQ8wi3$ՠ\]z*Gs,\k AZ[zfS6@ȷwqs7u[F`J;ft87nތ:hz0N=r̨ڼQ8oQz!?9!++Чmm^ ?@ δ|xw)Ka 9O{bn%9g&T\V%լ j~kZ D43 %r C"5TnPYEj7(+tt 7ŃWY: !Gmuj{SuiJz!e`]%KӃˊP CAY~':\=7Fݨo:jDk1Ӷ1H xؕ{ Δֺ?"^ʳ`\yUt_G/+. Z(B&7^7+b掜f"4zzH4:vڤ7|9֙qyα\NZR޷xC$gžI7os\Q|#6vy$ ]3a{~X1o7 2fRFz?xxf4*< D u>V/( <7($ QXc]gI4\:%%2'$P$nT\w֪"Ҥ8 ġ%j ȅ)"/Bko_,([=vm*뤷}XJŰ ̐_ /1%<@^zR)6Fe9F.=aM*WKӕL~ԲDD*^o<  N{J̭r0c%%w©xs~lqO#s {HȪOق v@MsOvSkĎѾ_Z8-}ͧU_DƔAQ>w+eCYȫ="|—v */Ƞs1eK>G7Vn#=]!h:l:z [u<7ns+PZJgI\Rnw K^ЛxAմ 4քMLTѣ!WQ#`D[W;smF?Is+<n"eGٔ%/3%r,Yq;rf&A2u dx4d';VCs{5)ot6Yqu >0q󭜋v ][?Jw!5g7o'nSb糤?!2I;S_%e{ƶ*B(9zMX߁}F݊A';(.?h@̣a.{J}$JWR^z!9^.CuqzqMkdƑ&TlKAܛ!\mOÈ z0JeGU(VL׻Y2@ ]#k,_]D (Xs%ĥBch/.lWڧ=xqY^}swʓ!K,.|wLW}@䗬"'b%qo}O>Yl沃i2+sh˓a1Fl/q_/$8Ԇ?MI0$P?=6բN$v,\B?f+sn{ٓB88DX-[j6 ;6QPo4Iz4w?ܢt]M&=R}p:e (L=|>w1EP+A&Bs|웚4j:$0Rg&և:09OTdɝPRqeO*9%Z+f?vMpFD!#Jw8۪Y) LW)Ge?'(n:{r=ޭٿ5qk4pJHG5yXrY1#.yI̵_+UČ$^ʯcP)-h`{4<`;6yMLFȃZ/38ϐ|5%U]+/?t4L7OǗ}{@KөV<.o˂R'Wqz g8PHQJgEYߴpdk>#@} 56=ʹus."iNB\ʞTs^2]2հ:SJdʀaA!38S'df~F}lVZ+]eZ Cgۀj:C-'=q'J^[qM3U㥕o W ,Ng&'iwi +#q"o{2A]?uJ&80=~p%S9:LvpK p吱0eb"e̹FUuN8;Vys3E$H!c:nF ܩʡ:JmMIpW:ѽPڶ?QX{"b ͱS:qT [ȿp!5u~}%}VR%nX;I /@}{UVj㵘zR JgKiRl) b+Wh~lз-5"Id1H!i/+a@]أE"صt^BWvյeT|U~\EÑI?җrB- d6++hHFTAr*3>SW$wą+\뭓UFZnېg z)bk8ʩ"]I)d&d%)4]3 IRTV쫓]?/^O è ؐuk{V"}ޟ|H 3W}AS4.6Ѹs#Ѡ{Fb$Hg&L5Q^X$ͭ T~ `8鶥h.y9a6 ڡ@;_ߪX}>|LrSdcW$-ޟғE1W@)Kh94ݳHQ<@ a F1FQb_|G+EaAUӳo?<8yya@{A'^E`;&=_\ 彛9I,-958ȿWQ_x5&|ӻ*w><@ؖ3,Ŭ 96/r/sUJ~CY=נ! E~+;j߽ ~i_Q`Q3K,m0ȞK$32-aЃ> endobj 200 0 obj << /Length1 1534 /Length2 8590 /Length3 0 /Length 9597 /Filter /FlateDecode >> stream xڍwPl. KJHww ,. ,Kw#*t KIIH,%H+)yϜ3;<]u̲;ۃUa> $@Q(gg7 `|v0  p0q)wz07$⒂!AA%p=g].nPBBsq . 0twr%@xH ܼ2ܼ_`}߄: 7F.?qCw'/Pug swZ]0Oe?x/ߎ ?An ? p@]-~9VAA> dAy}_o7wYV9*a/SwiO`.No07X]/;?3=`?=;;`?  ) 8B{3w0]?]?03UP?2w?@ OHTdw'AzsrH.y-n#2ַt&[j~7%A)ܵ7n,ߪ?GYvo:t70g?ix@z˟=wC!0dwnxnR{D 8W( x7`?Z sGܙ+*AOw; ['.g>8C7"v}W ] q|` ! w`:xt]"q`?씻TkmT;yz_릯gmĸYK \rsׁ-).l_4R-_xHn#3$ f3G Fd~$'d#/yw-'+:hh-h184K>5K3/ʬ$k|gہky(NOk)5epV] '`ƭv'N't9/u "szO|1-goe{d}],%3ӱ!S:}9GWؠh t"AAG {yA?+tڗ'Hd֑b:h]b3;}Ω/U nD ,WR+3k%e+QW^ꏷw=(34BPem'oh!O!2%q⸵rR^`C7N?雑xTv/ U{v|X=X(E+sjh~ Q*}&G1LM 0b{<۶F7t FgѺ |[e VZA5De`B_rLYS|Wc_9̉Oढ़A,m‚2;j2άZ<S)9+rϛWyY~8.laζ$gƕXj?|}Xo9x5H5ԫ1|-!4˜7Gš,Ϝ"HV'9)j4 Vg⓬!$]' ǞE*j i h݁8/jvvlONMҧJ( VveU}a[Pmp:]{l&`Y^ƭn3Y_]E-U~khx.SNx6`ejG~z"I_#gjhs$DRbMpMow7Ɗhؐ7Tjڱ&v%0 ]LSwuW65εs+-Ѽ:`s=߰ >>|m\AG?w'/f (NBA5 8^3[HWp$JL] z/zٲf{<ԟpKG98!ʾ: Tc6=DBE;9#/vBKzn%>.ɢ 5_Q9p|9fu-[MA]p}R6Zu2tOFMyh9~ZwYzƎ8O7!kwdZV3V۞ do&_4c+Q4F &jxQƷ=:G5T>5V+5]2k ä%6U{Jt2m]p5 7۸lhP$<4jO#_t Ae ̊-Q{2i'ʈk^&T3]|j<ݔte֭XXy^M)Ì' FS꽰?ӃUmQEKLۖg*8Ƞr. *0֌sSMX }Zo Ȩ>$b"ڴΰJhl-LH{UDx=n".)M)T?_D=ᝂO^9Q ө-|h(mQ|(2=D&U? \D 21o'&"Y>zT>ʙQ&IP.sUgE-dgo } @ĊIqb@͓/ǤLqN<")Z$$ 飣Ԟ*.Hqj{p(yo}[oH7I^f'&%hfÙt=0z$GG`&d=.EGy\at|CZ2SVebqX6>Dٌ1/3NfzJ O(aM投 (؉wyR?&R*\83t~ŗK-+vEO5^SI~jy9ӫDBA9]~;~ʰJ^je42 uLXTObZb"K"nh>gz.xkU#S$a b4/Y4`mBtw1ӎm:nI.iC2E;3{qSU" FT?lt'vE1Fu:-ϫx 2v,řW}=֚X#atc傝_75#;&IԞq6Ƞ[ .# nӲ:,KQWy.ðlF?9K0[X*V>W~f7 :* K6O2v~PiUZ̓ћ{|VZ6 DRBn{^]~,0f|x\v:u|Ia/EQ9!4>ӆ 5`#K#ߘID&G,&(9aPsHf ~T{RHo U1GB>x8?~Ov YN8β㝉37QyuW^r9-ۇE|1^U^2.LO$L-:2UԼ*}srVa#_WgԬX-q΀i:gH!q ׿0;sQ#d,V z4K2IXQp]WqCh}v&h l @Џ~uyْo6)qɓ>T4Ї^ E/{aև\7kfQ[zI2P/l7?kSnFYOo{[#j׽ZE`iemRF;S$7P}z.hntTS!se̫-G}1t1p i9 m%X5r?("U[(=1z_=1l>ȹ/#“6j)SP!t|ϗ(/k @ECB=`wPh@\#M{n *s ܯ.#)nz  WK\hN4؃>*š0|N3Ov27a^:KɾP\ݴtXavPݚ>x xkԅxR?FiηbU&G$ƨѨDÒƸϲ^dwG6+_SF-ow̍NUW BiS ͏*{ܾ7ؼVU=k\ M,'/<Vl/d=px6.l=rv36_U5ODq|{?`=K#I!a]k݇mc;_3*H>Osd5(\#H /x)WZ@Ȣ ˉ޷x4ɴQ(#2ۚs{H zB,uVZo A.Ll/VȍG^~0OiDd?6@CgvgrtAX;̔S q[o>̉ ]ځJ-}iT)1l@@Qd6. ׃{BH6Mcfb^ WCe-~%%4m>e+״՗w٥-~Bʶ|dʩko:N<_rY%ξ50h-wJXt7مbba+Fɭu R7CӇol:G=Yw''p*{RZ)/=P)@Z@q{t^vDB(٩,k sv|Lym>X:FYjw̙3U1la1r| )߈lqN:O!94UZ"o6e3F8OvNCUMTxy6(+Tom<뻱O]T[0UD)!Odo2sgd\M]ִ[dn oCwM4&[ZH*?m8\c.L~,:ުy2`Q^#&D &#&Tƽ%+Tح~kl}>{)MI¿ %M2{Yp]~qZeWs;à瘢-7GUprCjt;&F;d$wfT7un p :k+?,Nᄷ85(5<矩31c_Y4)S*U$`&N[X῟Aܘ{Nbיii*Gbd<ũ8⦌mC6(.᠆K;+ ą>CI4EkN/% U#U9#QT /B3jzLk|*V5//-h8T2f x6L%)e` {O& X^@7UC^81nֻj^H@f1-Ae}> uC;7{ԇI A+ݐGlOE<,u JE߉bܛҕ(-~<|`h6|`OIc׊npU} Ja5]UN% y !ЫV-dQ$L;srMd"֜_ޱ 7B%$*=7>&sT揄ڴ[K _Zr |;N@0;mIMV6%:BSˠ'`?e D@uv%PhhP _C|Ԭ(DŘH8$oRP\S?;M <iEf$u'f&!D }cX4F\Q.l.,yL ٰrV*2'^lG& rFB,yNzd2G#):uca0:˂ xqߝӲ=d hĹӿa«|rql9R 뿶!Vq#uXdǼd:Hy{q=6z$'?("2pKri*@s['g#Ua^dy;코.o^_ɴI*\™Q`MZ&+W(H5mopCxFDz!M2)8X 5Ja zۭhgC$,AߦeaP(S`-VLi?S4>`@1gJu5IsEW<8D@Wg}H;cۂܢ8M71$+Q:PhCJ›w2#=39tEO(3:J"V nhy| ^)j|m![gES= >9~A=:{dn *۹X5+()~n! cnc`Vu9*1])9cUשS #Vڔcק~;sT΢=>ܥlN916ܿe]S6j,\՜[carb2[5.񌲠 oLuӠ{.?I\jx&^K16~̢[sgu~hUvl:\QE*Ao{|e5 be.ǥ8܊ח*3tUQ C}'q,75*ϨhU"A.Mi5+ յ%DT4u톏̲)Weǿ} 4 Ğ2&3\/]`4jB BdL6R;"R [nӚ[=_ţ=Fr #tD L^nE/ "$-5QD8(VrSs_J9Y,[+ ӓ61LmU_j=/Twg mw>u{vdyWGFNgGbH'ק>p6Iiz䆾gA$w "MB%J7,!3 -k'kuU?>3)wWkev<Z,\@czJtǒ8Iw}e5g`{xkoE$0 5P=?|ꃝ0>#h{S<>D!pt1h}'ࡂXўn׼;VzzLR9\Ɖ"ŞϙQtu鏧9X&@~S$A P@--v+%쀬}3g/|suL(%뤯W;\I?NK$/Llt\47,(86ljs p8!^&) tvS^ɠ)ʞzn`%^XWKQN(tGKzg;d)/JpvYEƘͺ~Dͭ+ endstream endobj 201 0 obj << /Type /FontDescriptor /FontName /XWEZEP+CMR10 /Flags 4 /FontBBox [-40 -250 1009 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet (/bracketleft/bracketright/colon/equal/one/parenleft/parenright/zero) /FontFile 200 0 R >> endobj 202 0 obj << /Length1 1396 /Length2 6108 /Length3 0 /Length 7056 /Filter /FlateDecode >> stream xڍt4kׯޢĐu z]t 1G"jB%DA$;kݻf<߳aa瑵[0$_ //@bAB,F`7_vy70)(7M8 @q8??@_oG8@h00Ew@}pbbܿ`7 !Ψ6 (@n#" rF8@ym@x X> rP ( Ca`76@_Uq j@^? ;`=4x^HnfEQ  F9nPPBq B_iP;;aH n`ԭ{ sl~Auw3A\ yTكa~~~Q1 {8JnmFwء !v`/ oBlk=F(5 `Ə"-[8 7P0  #(Eo쿵: _'*uw (90 &eQrB[+ˎb;p^ km!mUEP! s lA8!3@B``8ˆ5'S@M ZTm휀&@ % |{5GB(x;y P/W%w77f߫{mf6kUyl KNllJOR ݋+!JPqUD g%,Z3=wNjF2gba&h >Kbx,T٬ىO 8Wo KT%sEE@TKȁ9լ=N~I#'[vӑDJ>T,Ȟ#&Ch?_&Y65v= oy̡Yy +DbD$Jm[0:!vCBՓ /5#3uFk@U .DiFh ?c|Q CԴMʤ1ɍM,/4naЗΥ*t9Kc>g=h/hZ-0"қ TvVK2DnA lо0N~*Qi[S˞]=j.=Ɂ,-*I1X'Tn|!فat~7W6svoluHВV:S@TcӓA^{h[]mqmO_;=to+ (~5l&m&}xu~҄0"B|=yc| e<.C /rFIոBf:񔳒Q.;LP]qqX z6=I8Ϟٙ}Z)ho|}34Qz9s*U@+HdQ gR;`2p|YapJ9ɀ 4"7t/t5؃:ub3Av=~E XynYx%NuΩzեq^kR;˾UMfLɂu-00,<3 kZWt11I2G7˻],l'+d8W)I+SJvm1X3Vh[hPfUwk%kƥ_yi4GG߷iJN)6_&3p?.# 7G!Yn(=sRrK}''+F}Qsr(5QTʉZssZ6A*nNd xڭk7>ʫ'ap9o[H#Ĵmr\se1i 6*Ò'0X{ң\sq;6vw38pv(&Y ?6F [SԦ,v^` нӥa~D%} z46NjBDf;̒-(ח bOMOWONiE@ [yݪ+ۀ ,.mROVUycHt^M|1ʾmjg0_3(4aE<~_۸KIz@U6['z V,gys2tiZU"[^wYތ!e^go>5Yk${t+v]naD2U)ñKjss&V|B2`|F| Ě(@W}XiY81&I'H xe vP~g: =*sxXVu1'Xa$eDkx x vHMFsFD' $KЛE,F/o '%Mᄌ1CL; 9.3;bŦĎPRߟMboχ{SL7Y1۔+yL*6r22 gWŲ>|_/F#$F#L+$X_OX~{=C*t\?#F\0p\GuXH4uZ}MVf-GQz;z{>3M %{pef v2qRQi@N%UV-1hs* XM azGRm!%_Be*>)e]_zwWmETGmy-Y,OcǚRxyxyeʏ k"࢞}7rꚃW 1࣫유o]Fp=a ݍ72lu\/eSl㹶>"X˻ eBJޜIbW9;|oU;Ճ ks <΁v ~`cGXN{}XaN^UaC]^SM..N{!I3fv \f=ݎb}WW`m]v /VơT@W/J|├.-*#8t5UdՍWQm'kGDv(Rɻe~|'s19N}2zV]A.4j=P7HA Hqқe5c7چUF!b9lJ1 GVdb:ݰZOeCG9|Wb7a ) ~+lז#j.W#*~ ݂;٬c j=vk)"CGVpWz||9 x[_-M` >/0@D=M.Ƅ^?{(,w=~ p3𱠤*^0w\59R5"WZ  Rf-"f_F^'<:W M"-/^9zݛ@*k9''q+Wv"R:ɡ862ٹo& oՏ4*wF $l"e^-^؉a ~ y{+%nH, =HO/,yI)MfJGuoIo.PZ}zG!bDh(Ƹ)zkr6  zfuh٥扎E.%5fn]QT^U; endstream endobj 203 0 obj << /Type /FontDescriptor /FontName /CTDVAL+CMR8 /Flags 4 /FontBBox [-36 -250 1070 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 76 /XHeight 431 /CharSet (/one/zero) /FontFile 202 0 R >> endobj 204 0 obj << /Length1 1520 /Length2 6875 /Length3 0 /Length 7901 /Filter /FlateDecode >> stream xڍx8m۾U{4ԞAB$***jMUZF)}q|ߑH~y#,Z=v(t`pXA E: l@` bXW{>z'NA(/@q}"a _A憞C{@ `yX"uXy'8jgt@uṯ&ny* y?Zί^=( uC=;äHF:A=99[p^W:[fb@) c:-*N.s)#*jԂ$ySh|{,udjU WEQQgM&OUoBb *%2QD.cو,-lKtopV0^]>1GH՜],Rmq:yP-æ`uњEjbk G4OzO~I<vn>pYD^pm1\LpJ+U 8P=BTC<Ѿ&pלis i݅iGZ:>!VqO]Ltx!jnY>~BՂeh84anDWPJ`ZnUK9B5k[W;_zlԣY̓뙰7lTMsE-%{<\TZ`2t`(UV/?[VDliT 3ݍ}=w}kkcoC+PcdwT.auza-A%>+Zc|g#i{ѨTKnWf5ŕs>LăhR.?]8EH;YP0-pNԾ5@WڢVO(2y(N AE c/SVN$7 }Fw/l k5Cf_ZDSj4"OB?҈|#E]);oH.PzLm',w8{gM۳&#KRQXZF5,/qm͊#p?DxT*EpSDvڥA4QB,uvr2K>q@ߨattP[W`Є+|z9 BG䏊/yU"͗6&B@ٖ'2sGXJ#pҍNGu):D>ٝDڳ7: E1goxdoW u@>~ˏ9>* 2L,!~Ş۵q̟Zo:r w+=\.c{ٷEHFv-?r6v%hx%M&dRxaq eLjV'Ǎyqq-z 'ᑭ3ƹe;ɝ:-G |5!&c5 ?s~`ڽ(-_Ź}>I+E ՞KXFK(b^#jVgd~) <; H,gOUjǿ}5WuJOZ ǺTdG,*Ť"OPG7?ϲ@2;6o}xJJKH=>nR?U|*FhJػj#}>5.hD+b|CcCcfp|,7/*bFjKO Y;zU`a셜*׍'ؗtbx:b8W+K2M0+e]EouK8yf5 }X~R:0Bttݚ}Kvۦar _?*5i 3v)s?C,vmrNi©h_˩79-o}j90E=3,F]8Mrʴc³wN/˩$0.[">RBKT D+mgE&c y&`͌а`Ԏ_#йr,c`e!-CY~覄]Pc/,>aT[Mh {QjسSч*>TzZYYv9Mgn.[D:e/YMg"sKz=[s|Ysk{#gOjǓדV50D%N}kOcy|t݊J͓>x|"hoGyu|OV3_2qw,dxV*6;)DǞю ^-Oh}Vv٥>>mV5/M߸AN(0+n?}L9t[ )4Ӓ(q2osZ9@qz/aZ˹eQAm"s_d⾧KԫYƫ[4SgfggfG؇`悋j6G?f>U?OmZFz|9aʓNiQl99..[ܛBx_V ɹ<`us$EnolWOL oPsG|x2.y'-ik׫mXVВ21Y+^-'[\/ܞ(9h``~-uSB̎ R&hgnS_&Kq݋n5IiHHzTھ ٚEz+v)ulB9↻ZZ uaO=XGV615͐uIɚsݼ\<Ϫ f*7:ejӘl1턈+Nvٚθb=Mxca6#,7*^*-JZog萾t657sf岷骊KG42G-uYBz#qNN T4u͛Fw )|glݑMO e?~_q@ 5mgB1]]DY NNIǾZ˂2 qZG?SK'xNydMv;ѥ&d j2EQ޻MH=S#ˍWR&1wc܂PR XVZ9[@I-a:`V]GBѻ8&w/u {=:F/+t%+3 p0O>h͆Ff+v!,z!-W*? B q$-nzY}I/Sg ~5_>轵9ҟk tfO"4ƜWQbcQ4/cGcs݉U 6Yc9a99*\g1&ʅ7E|}NʩLxl![UdD-! 2dfY4"z˷dcs _@L,~6z ߬+FD]^͗mxȃdJXab'&-Sp;j[2D# yJ`Ņ&lҗPJ^~/sz\ $&zHK-}ffG.ƥ$R{e+;`y/7xb;ꧦ8<d'_u( &t֎rzRcN ,~?K)O)W.ކܴ6Hsoy {&ğG\xS'343Spdq2՗JA.l=]oEdnmzulVZBTIâNhĜM tߑ2PfYmSౘ}yd꼿DXyZTQTZk<~а9fc>f=:E3uC@\d ^~'j~jF}һ-fST.ӎ<%aMS5՜Hm||VUG3nyYOE+c5F68<+ K2I]؃xsUs 1wt~|۵7WꚜۼR&LqY>n̯~2L+h'5SxezYBܼs0)lC)Ez<¯Qx'wՆy˃f JSJ%Nw!kNN/kC;\[=:jOlžG&H5tp{"sd=-KF{wvc|a"xyghM'cQŦa(p}ۇ9s|'瘱!/; eٰ&J~,u!}T-yh_ }C`CIoy[r#WBmȷixW &*wL%H9WR 숍~mKO[QziNk `N4>$Ak,d> b¶.(vp!3RZ2չ>Sg+/ Zizaqq,aoGjW^)UVn9!ڊrL_XL*%[w0׆Ip"ۊeP}%RA5(v vE#۶m5fl<]d [f֜Ǵ}H:MxbB~J\\Ij\J5)*exbj<33Uf;$sdPgxU7~eLwv:\k.ޣ#qnuͽT%-U7r;vֳN(r'\TN+kue﬐y *B zJV} Qg[Ir7'pͬz;9pJ\DV 5ٕNCbD@lf*x&:471ֵsK]ꧫ]o=ڷwls?h.Z&g X*֢yre1k?c3yL:G3Y9)T;?rr4)8 IEcS J,H2ku>$?+Ѧu+[j6ԅ/=l<'s 0Pa.n3H܊R%qN{K]8y()a5~v{e~*  I -_ư>r2+"ܚ-"=`ꏤN0/ٿneZ`<5pPǑܛU>ܤ[/1[ٟİjє > endobj 206 0 obj << /Length1 1417 /Length2 6123 /Length3 0 /Length 7088 /Filter /FlateDecode >> stream xڍuT6-N et)tm ) J(! "% 4H H7{}y߳s\wFJ0. e*FR@0X89X_f)A2+@ `q6UB<\¢@a aI0(KBU!PB! pp%~\hBpW\G(h"Xsbd@W vz!@C8ÀA\@cGe@#1 $ 4uznp`?( OB 'CP@:.p]+ a!.. A@p'*!8@7,A( Ր0+~ͧ@ákYg$ p2A"=Llp,P,-!!& PG_}࿝¿8~n(7=<a0O8oǿOaa $83|4hqOϓ ^02P65?>ee7OP  K%%. o>p*j"Q@?p7Ͽhdxp2`(K[SoUE讇o7oᆸ"\| Q. 'HYCxW C 連,ǎExa,^  Ga8,0|8Aqo na]pW E~OD\A!>0d"8 d {7PDaq)@= VQÌ8 "߆uz8=&nϿ{áqT6UxQG/_c,:ű\ud+?Kן,gq4mݚ2ֹ-{ C1: J,Rn=2EȊYdjJy3fR; 5 P);A+W k*U9A"P1g*!lONWgNv{Dy$5kn_r7: JIjsH9BHgtu,!íG{w)2Y5Oh ;_]un܌΃&niԒ,+%{t wMw1N{7:6)9كJe^NȎaUj?'!S04GVSr15A&˦ZHn[y׾L3ґssweއzů |bOzEϰ$#ٍۄK\TZ֚-*_9<'yGߵ;]B_?Y槊_ݞn$ h8*w}Zo-wBB9#{B.-EMW9)Q5G(>$x蠰 < ]hs)gWHYP,qcH!r4Upur^~dѧl,e"m"w+m<鐣XYy$A&[2W:φkdU+흔xКX[kcn] @V M-a٭&MP$7)71SFE" lkxoQczH}i薲Dh4QܩWVXC꯮A]$}j]z)8b#V^Rml^H Hꦡz@?C Hҿ-#{rE:bLÔ%HeP䈾)NrQ~CK$?}:O_-? :"1v7 /wgwVLB)VC~"st1DVr7n찱c  & ̣*zZr5\D䣇| !Dѱ_<>3(2@_~ݷĸ}U.χFy2iv#;e#\LQqMaϫY|IpЯMf}-Td?- 4dayɔ3vE5dk6g-Ax: YJ>ƯY]:[ q]vZꮬ "瞌9~51;Jj+vh <80vJ Mi 㹸fM쥸,haUt=e/z4 66lQk,9t7]i-ЫH揪:%f@IIYe^I*T~$IM̸fåv {˜Lz3l/9%yI"xF$M'i6/Og),ý#W [ʠ)ۋly 9.}yZ"]|dew٘gs ~sC d]|mʔgH^S6K!s&-tU9[P4 ͞j7#n%<԰5U+E·>Q0&4e&5.o[q 눰xB4.7 k|GK $WX|Ցt_]Yw-ԵtR9INJ_sSҥ6<3;xʔ1x 5 =ؼSCI엧[D.yRf蚖Gt*j.̨Ir quMx3w2 PQ%b E2}ĉaWK9$j_ J|$mNp˱nzj]j=!PEbstRuAp^U"gB7-YVP ff 1*L*j]g1g_^8պ!-gV٢ćLˇndǵ)ң֭Sl 64\THz]Sy+l\.0(G7KPpHDB{t9iqW^۩z>ӗ=:ceOPRArx_[O꤂sSڮknqY v%&ͯsȒW1eaZ¯W@騚>YZ.^c1~ZkGKr^#O< ύ7Ԯ W^IZRl0C*Uϯ;f<`iX$߷*\1b1h Bԅ%ԥ>M4fITwn,|<{De<Qi.c1 ;LZd+:8!S>=;B=\N2Ƌ3}7.be {gMD+ dZjݵ9zˆao %wݕe-wymx pu^ĭQ4]Z ZBDZSuYОF^|DMr\Z^(xN8ل,aJBsʖ^AvtR ժ+SK1AnA1k[YuC'RG) .^~%fZߜ0'p}.2TM#Zݰ̐STtQb(K+1"(bQ_P Sv</-%f}GØ$wrӺ"g} 3Sbc(zKkm4JA_sɵ֡4OB3xjD/imwݛ)Lߜ0&t ߓf )չNjF}$()Uro\y=HufG+ J=I.r ^v "lV(4B Zu[.DgTD: Q8ckNȕqIz$CNEֆ|>KA_ A S:mHNUZ@dx& l01V:S,J)pǘ=*{4Em{8!vr+NI1:+|Mgk%(6 -X"JRtӻbpY{\ޟ.{7Ay}|1[s7Kت7˕ Y?A3S}yaWlF_w<tt =Zb8d5v995Ex}4_8ڍz|^̓^SNʗz$K` >G E{@$'VFvSτ]߀JbOUORM?]c;o}L|PBRQpy_+V2U^$o>u4;8,BQk1y=gOƋΕLS8 X B+Zfi"tEjLuD𵖔oɼR9Iގ!cP dHO>fHxLw5 #|_?I oD6g1:\n6]Fۏ17U&dswN{0\.Ο|1y~uX@v oF;?Rn_Sjܭ-"˼fĆyKHl~r_ԩmj^m95yEDI^ܔ! ҒvrK49F8br[ ڎ+}VYʡOPa Ye[{UK7jg&Ozl|p=dG 0X^ڃce0?gICu.f:A_xRo1  zqa ~k%FrIrۂghߑ*ru*^oG&V>q!CLVMK}3U_բPޢag-Tn\߹#af)]W#4;Gܩ᧵܊Ub5/mG YWȐ]8YRl ͘vʯSXUm Q {-b#WQ/Q<_ć*i+H==bxLHZ*_mG5|EޞL`]Vbg<#7ǃ՜K羶4't'Xf>Ym!ia6>H{JaYv94=vsE\~[:씟&gMQ7!|V| c\nb_4c")f/".9_:[2} ~Za%_ endstream endobj 207 0 obj << /Type /FontDescriptor /FontName /XYBSMX+CMSY8 /Flags 4 /FontBBox [-30 -955 1185 779] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 46 /XHeight 431 /CharSet (/asteriskmath/minus) /FontFile 206 0 R >> endobj 208 0 obj << /Length1 1328 /Length2 1193 /Length3 0 /Length 2037 /Filter /FlateDecode >> stream xڍS TSg04툥U~Ґ$e1,&.S/ȓ佐 X,qZ\ōR*"dYԨU*(Μ3sr{ sX($ ʅB<@HOc!aoS28jgGB ' JR@K2g.ICq1a%$U {_RSqR#8 p C%A))1TH n\ G/)E)?\ 1:p RC$$8!i v'a61 㾐 `ZL6)1iI R$4 K HRPJ5LNz1p( p.;m;=%Z~c$!ӽF̎ Y!Z1I.|>pq:;}HgMPy{  7J$qD#kWXFz |?{ L!M,SHL~aQ9. #28qCoқ! dcUB\ š8IcCz')6.P1Z!\zIzPk'`CBM% dGAFc\ZLT;c]snZPc4&1uԸtq]-kzZDuH|"+]YoL{-z[Y&Jbۙ-x Vs^*G_Tiz78}Ll*|5u$SXS겳&,\țb^%(*9!hh<4Oճy,7WnrkeNg ݏlԃjǴs驎ڰE&]xfu@CjB{l!}K,^ڛzwR r޹5n#1;l`Kr*b#-^&|{=sW,E ˿֖yݖYy;_n>ַ$Rmo2_[7gT6o,m~UusgpIa@\[]7_V7|d嵳?pka]gA~tZ}ޓ4'޳C?tu15f[~X&W}SDFأ)c]oUu [Ϸiٚm>%&ϫ%8'pǫ]_9/y%N_5O*zqq9bvVkzX_2'tOZd5w*UXf-\6kn蒯C]Rc\vT6sx]ݓ*A΢QksR.&zck:Jxm<;-ϖ n^iΩӗFgF̅bPK>Ba&73H]!{9v%D#2L({LnFģiy.un x5: ̙+ϰX?^SytFѡדll7:wVY3JQn9?2x8D6dZ7_w{YjY?Gh| oCXe$w[SI`7?|un}7#ExU27g ,ޡG.Oq0$i7LeShg]kb'-r`,Ҽ\tω|Z endstream endobj 209 0 obj << /Type /FontDescriptor /FontName /WTMQRX+MSBM10 /Flags 4 /FontBBox [-55 -420 2343 920] /Ascent 464 /CapHeight 689 /Descent 0 /ItalicAngle 0 /StemV 40 /XHeight 463 /CharSet (/I) /FontFile 208 0 R >> endobj 210 0 obj << /Length1 1606 /Length2 6882 /Length3 0 /Length 7700 /Filter /FlateDecode >> stream xڭUeXIaHASB$aaf`N IABQiDAJ҃~g}_s]^Zzag3AXCTp4$@dF0S]BCp%" 0 ` `(".P;{4Hߘ_)kDnOvp@:A[Al0@QWD]GcP!. @`"\ n %($ =CC$ B~( 0Wn?. -F]H4ඪ_< (mʹA]'v sEp @e @QH-+ ^ bP0ؿ>{ s'hfO  Fֶ ~/:oG g@wyl :mIMe#Gw%C`: ܾ0rANP{1/D R}}\+E#i{xΠ<8q-h*~{6AA\>"fZ wS\ݎ;.v3$, s\I^8sjBhX])|}?M| =y7̈m8vǙef~Sp?j'WD85]=ש(B4ʆpzwf/fbS _},d mzY-3bX(3jRNiLUlU]d2f@&& 0gX x16RMX)FؓmvʻX%ީ`$n$➲Fd-0d&U8v;\n(Toe Ԅ|f@XFsl0acۆ1/.KHgOה/F_~VK\ _%@$CL3 7bgc7q;}Y04pzuZkq 1 qJ5ՒKM58G5IrZづtѫG?^aȘT6afa-M/l'e&G駪6H~ȯtqJ1#SX8t QaQ Čy{OV)é`z>9vѝ5YX_.M.YB#8c%{_ʴ3Ev"dsk:$r](̫TD~K1`Ӂ*ugn_c$## eCI*w_W+z?wUǴxw`;sk~DoߔJw6YWu\|/m*VcZ(M M%n4:K1]?+ZltXiv$r͉nL1 ʆ70E`^քA;!Er{Ąi}:5~uv).>KxDG5BW^hƳ= v3W9'dI}Kh!);(\f|V N E6&!ЭmTjx $t~6&̆: ͞ 8~[nb_;:|I2KqEBsxsL zׯ"*~_PJ10OTr};9p0q^3?qmDZw`%?)" XUwS_N2,&Ow\4` 1a$0iQٛ˫І yufnZnY{3jKKz^`n{ vv!`vD2DxUB3clCG.`.^S쵒_BtܸDT]pcuN 1))Ec]=\1I]3 `[NOCs2b7]oS0U(_z\chVD2>UP/Y⩮_VWDCe7iH{SC9p_5y8k|SSa;UA6zrC /6dGMe2E8C"]S!V‰^g(O䴻gb16C8euj!@q? &GcX?*q,)kࡦG}ߎH8fvN"W2U=HG`߁Uk@u/_fr;">lt&hK[ggTv+F?3sk,.^)_w.Br%9ktUq/紨}e+qd9}F(JP]NW,Sܲ4|'F[Mk3E]TK mv[MJ^8O:!P8iw 5O>7.\n(APĮ)"(OM9㋞3DUޡBu5{BJBpxK%/~w֧{GxmcoCFdq.͛c맽1펢ĺt]Z%XN|r0EaB\/gr䵁-t# 1f 5G֪n^<_ h+'bLoFJ9;2/_^4w%lĥ'"?$]%$([7qҰoI$ ~B ݩmf(oEՅR`5RS ps:Sϊ}~X @d^ɒNYb+DV3)1 > 1iY@* $G$쵇Lq>#XNB7&ݏB]I{$a9R{I/ Y$=1"(Ph$=rLL"j2OݷD#G,Ͼa{:s*]# VEl޴s5cG8xIoT#,.)ҟY 7h' _@eB+b>ҕɪn5iaA'7a1YdҢ `W5\f˄LY+G;ɉKg<\U*ezBر!2͛#ެ5 ʅR sY?D){U:QUƶ({VZj=khgU%' \ :1m%aJ` sVXVl@шI`…ѶPB6ɗu/𖞲'ōq!}z5q 19^zzZ5N.읲V Z숽 &;p5v|T1ȿYƨJd[؃ڧ!e+K=7:A09b-HNyAwL;28JSz IԷ@U  y7?P/ewehR5<(y.f4RX1kӧ.ŽR,n.^1y3VȃEB⴪MP!ܢL34ѩ>i#}{%' !SE?_AksC鞲p56wɧn}YOJ"RğCTfF|X~v TYN]TC nI+/*2cWɼI{XrAuz{R&YUgP%;Wu Ynȗ"W+x91Rm>wUU>FrAqG 6Pٸ߉5%& `I>hOSNJ4yۉ?O!QSa/~sTjߩO$P@lafIM!ݨF~@ĥVǤt4GaV+QLB2Ʊ$~dSQ0n>*zkuB+A+{iEL1?Sڝ^MHW|9EsՔ$VO%XOg6<3N~1w.;V c!y*bM$)\eV`OhjYfg Ե;ϛˇHpb0/UZh4 >6.N_*-Ӿ. Bb{|fjP:[Gs 4?iSTV.&< lo&zVw2zfm?,s+罀g';q⣾3T>$pU9q.wThv//Pd6܇RؾٞI`sڪ;R̅&'@Z(S4WRqc9(L Ô"x? S_v،'ܕHyWO|NjӐ3ɋɗO# nD͐҈Hq'R*MO׷lD\%+z/5lw&iV 59ٱ➔Y$ ~ȌF! U; /.zϛ?2_u]1f `}?59!IVh?Dަ/ t{9-q;8%WnRiR9/4WT;KJ So:Ş~u10՛*,>v ni`:+SB]Ojܓn)W^jIh{xhXgȚhkpC3*_#Ô%q[gE8Agm,n[`;Ŷ /d h?*[ѪUr .0`v3q9{M=x kYkc:E8bhu+Q}U+A0 b/Zbmt-c6DX>KuSL_?UP1jqJmyن \PM=K{*$Mׇ36e%⛾l7x`! {iEFh'E_h}$k=&vLY5X> endobj 212 0 obj << /Length1 1612 /Length2 16757 /Length3 0 /Length 17579 /Filter /FlateDecode >> stream xڬst_.Xضm\b۶mcc;8}U5z%#VT27ہ.rvt@s_#dio'jr4Q Ņ@wp4(Ք5hhhO?<w:[>mlvU@0D%j blci49fN/&vLK`pvXt7:8l->,NFv=,Ll\L!nf/BN#l);M,@YEda'_7o?%ddi A2L-l< d/.Ζvŀ47r2:;OwNVǿv+?9X6fLs6C`gPL8Q33TIxLf )w*ω? #kC_07=@cc 7?lm_Amtt*ZL,fF6;/)W5@|&v.'WQgPSw꿢jRpK"go0^tO 3 oBN&&C0Zd[2#ӿ _Z71;{fEddgw鯪: t -ۛ[geF&Eu GBU k{w* jC蛦?=G0m(zSW>$T(4 eH^׋PꇻJo0ӝ,NpOT$褏_}M0PɓN)~ @a'< M>r(!WAҟ'EF9 [2r@*yc%DTM7S&x26F'tmchlVs>X~(}fH B!Û&.16~}k܌3*ndYL޽T 24 @oo6G/ Ɓ .0:;HFzuzgWg_pP<  7DT(Is2/xGU(QRZ9~ C;&JVJBzur-?d$̔-wC;i%C&b~:t[|~P61+;=xz l.GFc.5#{i[VR,yB@dI $] sY5X j"E/{l#!Ӵ˯*) ՙJ#GRy{ʲKIwϢC]}/2ƱSre4>HA>Q`P.3'}}7 b9 K%2FT@.(ߋ a"| >*}hr(AD y6SUo 7Ɏd N|F!4`BSG# CxSaϳ7[5>`rC-jˉ7Y&~m2AcE<]IDVrZ݀RcQs(6ߏKtaÞ 7x(r&3"qRk0bkqk1@ۗ{,(|W%oV鏑8F~5!%U;.]lBݷ #&@:ʷsa8Ǔ!r;ԍZy-Dq޲KT4/w9lȦE kQ!(W`u~<&1|?=_ lꨃ RVHMa;q@DqSM#dD!4z W`ln%s7Rpx&+5_em}Xl?b͇xD|NSqn䶆睞PKap"{LD{hezcΤ@eDXO]v/g^9WD<8e;1m9]WbÙpUU_Ea6%wu1郗AnwAY_ t?GF:_3Y]NSTnwZZe p7/gzAu&LV qϢXL=yEi C_*p4cJn3 |]SK!̖s/o͂X 8)VwUo~(Ncgbۿy2;:y_]e-Ǯ5T=}Y(2ժٰ<)9dlÛ9pvlʧ#Jie:hp<)Я<4>IårgFnE5ZH DBc Gk_PyN ۬6[g8Ү&X pU[i|CU8 Hī̈XɞAvhK(}29h\Js=&HD~r,JD+=kn ]iqVNn>\;GLxGV1 f4(4,h> YŬp/gWjjTsĈœ F/0iQ pM ?l (֙#RqpU \T>f [I% dkEE('Kͦ yS Nke?~5 j TgQdAz͋$+:<`u&}ECQ|5|&G6'YTVUU$ YkpekS)Ss7$e'5[jSav7߰Sh-(aeeV߳Mk\qE. 栗Tz846)qZCg;G3 j.uq ?VIk $],J=j YK\N'[ã;(iK/>j -O]X\kajAi%]T'0O=1mp} c!($"jO(%C}i6\G{ZEޭ{j@t9%0ޖ.4! &fոH敟 l0Ky)M< n5Iƨ$y;L)'q_o;Md%WXPX뇡:̑n'FbZe4*?+1?/|k|I%j)[-F_߈[Nr,%adJ Ջd8 }]/83妮?Ӟ ) qr[yMgpunYyR$"m)hWCZ'b&O8g*Kш.+ r@ D1S#'(yq ANK6[b]v_^-TC'abX.WI< `~44?R/Lf/s0=/TS.>תb^R>{O9jض^̬Ijk_#[˕nN0̈́֫YT z@<J?KV4Vc㨷T= Dy2wzY 0_R*ʄ_Q2 Oi3Dcrh)^\bw GY~!pJ/v1qIߣC?`VW54L9[0=(Ԟ*BUqVF kxI;uL>?!OȜI ![ɴ4v%Qc,֊Vo^zHa88{>^k!JȰ#DW@KH\$a$VZMWB&Bw̼Ţ}oC!@oKrZn:IٚY֜3O)gt`udHftw=d} j\jĮ @߅# NT}e'1NѾp/h7"pc?M r:,vv$A 2!E`Ή(x7<O.6'o\R|G`/W6}'QQRׇ$!OTMr I~s[_64uKUrB/?g_곤ݎT4WǪΛyn!U!e`E+FݤǺz _%)_0>gX-Ja;tiϔ.=T@rn͂g1T5lb ԍ6,]]"R(HA>GϠx=g v$LM 8O[[?+{MXB Lz[#IQU7}B-I?M[YwOJWl=&N@Xs'4s`$b\*}hYhtaڹ# E t[φ8WnOJ7[8qY/) BѤvEvn"dתs"C<{-Qk+uxZ9aF5mk>F]\YG ٪ #ս>F"]h|3!  ;0zZX `Km9Lq2/@81QF +-gX׽c:Zkv`>[+@)tU,tEfwuӿ-wm-(z֡ `!?.#rWWyS^RJ*戺i3hTC8"(v$ea~: 1Nӳ 5mf"/eygj9‰ 8jiVOM4q$r:jW%rM޻&)4 (H^Ly&ZLxP,/~."-?X1|̷3s^ܚEg!ĨѠcC`f 5-&VS|^FQyG*$ V%OIht̗ OlH:3~/yJ+gtV1]Ԏl7zM3_ө<ä8xt!#<WE}/bL iRMKRdtX8{:g0A8R^1b' ̊m ,{j. ti^#۠O yF}`)%meСjmk&)rw CCz-X;[zXO# SqAh/ߺ\fo 2pz[ulA`(ШG|2j'S5kSsl˰14}  1 5k㒿b#v'F'قn]ڲ};".:r!]{ jkUiyW -K6&}%j+)≭}oA-ev?;ŁyE^}/y~/1Wz $-[-MswUN / <;3#FzQ|0"TNk"1el"ӟIQb,bLw }ᒔi਍2-j@dwd X!FL¦VRf(OI|oVd "i1{a95^oIؼ0;hࣃڱ^ESHuՄyGoD2Ѫ I|ѥ6lTF⤄o_xVX`eT\8iP=sbmvԽ]_[ |arXZTf b;R-w\.-ٓ~MO݋06A:ŭ$KWbjIK _Ł4>`#Pb"½=3;b?} mg->༎;rSJAolb8 [Ue3_ i ?`|;dk(D8VJ Tg_6ʕDy.onise~4^ؖ㙑UGMd됖(U6>~_ m7l}~[fC}(_|2{ 'oa,ÆC)2K1Cv:}HsB0eaȰQƣvciu\'; }nM<LͬsYd|xӛґ&uh餫 \vE^28}*aVaϤY|vkcKrN0a5[}<yH5(e,kI AuoE[.JK6s ~ uiBb6K?*/1d1]]O~3fyr'hk gQ{4ߍݏ "˴ܺ;T[cb&FB 09lMfF>'hz[So=8Bz7MNw~qj5sӻ7\kmIޕ6y׹߼>1ςʽH!ͱRhY.ը¾ĵ"7S+d~Əp& Wo`oi5Ŷ sElq盽iʒ+a+mGKqzXg7m:ۑ\qHFܹtDF]6KKg cjC:&I)STl:>LN;Pc<&Ο+#/l[ކ4pZ(* _U/הq{1w dƕdFYf:I*ͮ! $XsTl橔iG2S)}k6 Qenk]p BU)Ε =aۇ1ϗu qSvtH }sZ[VPLBF 8r5LȆ1 iF4DzΙ[ITeXqOxB5lJ>rV!„^,7ƼԊ25A?X6ae+.5Y4# YCѩ}bU諽M' o7' IY| Y/dU+6xqO#W5D;'UH>^P1/Q.(:}=g>nuV ba`SS#U;*S"X+M(1ݑgx:DP[uܶVS~h'R t;EN%%n&Rn67!llnI5gC 'tQE,+sS̽$FiڞNLK̚{衟Vl&9ZjܬWjĈ-tFy 05Z5=F<SiyG ?ܕNm* m75vu^n/EV^I!34Q sY~ L*@<~cr9Qխ͝P2 ؋8Y9_eV2wڍ+m_L>دp.IבBjt#&DhSϻCPyp`%*[^M7+,Bm 9&Mv+&،k|G(cPjzf?SoSۮ&0y?Q YC‰+Z\)ziL0pҘڱcfg3K5|A"t?|Ё&߭灜Pva4CќA8HF+Njgw.!= We2 #dtyсާGW} a\ɋJfoԒ WTW΢-ǽ;ndvz,չY$Gs^kqeA+\gKxË|2ߣboHHiwJyMƇe+WĪ`"9qvRia̠yD>[h!f[ån&˷RMX!V3?M3EWmjQLYV,u , q//m #'YU%A$]0ϾJQSMddz@Ea%NĽɔHmD"4(Z!gfO=8 ǫcnLmmK5xY_y8&L6X`fG` 1"mDWmUvT+6@qٰW03c2ܾDYUᴷ2bi12ϠfC-f\È-A@/U51Cr1xcJ/ N vj0}oE(*}CV D5iCp1|d>I(e}aEמwQt,t3jh&Ϭ~.A?i2tQAGHsb.ٽ; !Y;ZˬK/exIXdvd(fNurCJ)J];z0 :C'WI=4A>GYI4dH.ހ W/ qRnVu/)oy/x}kJyy{lUjr0B,)5P :wnX1[!;0_<Vln}c]RXKocI? ݔ|.?* Ma9֕ K"S$omOتQ &n/ - 3b0*Ta^t+]EwS: $;tsq}3ΦT+XLuꬅ1aAP̦" ^ =b 8y38kVAa|TXߥ3P] _/?&}~73Vʒ$~]  \c9kdZU|R W-JJ׹ñ]ee8,Bk&ѠK_i~@7Sr.o)3`-8M3ޤ㏱{NcR䷗#zpEc(gIw}M"jVx9?qu-q ]ݰcBstGZoo6*vk~{AseYϒc2"?oνrk:{"V/j;EfxhggOvH JUREk}&+!خ [c7c`9[QY>Eקu[f7fR$ l$k]MZfT9 ՓxKt `- $t !׻gLB ;&fl [azv{=GqM|#"hQ٦K sO ʩܳ3Q16w v EZt_3Fw=xP6\JWTJq%5-*^䮲%$kl7#$E`N?}Oڳ.4ij6ӰҪtck{>ߝ曬gĭk^Knj,+usk qM~˕-J+G%$+`SY0ͭmYe?u0ov$~[:iX.XE VYVx`1U:W(ksuqK9mGVd $EUD.㘰OG /_mA؝v(IV dke"7^DEeuS>a8>K"|~JnF κUnNG(>{l *v#NN?^!}WKo X}ɇp65a9j,MWCaɏ/M!0G~b#dGQҐجO*!HaJ3AiÓXN$SH,8\ăy.+#bڬν1^`7R~@ 3beDźU2>X䶣M 1lquYk,O(ސ$" /@f&rf̗Bu:,⍆PtS4 ?XG!fZڬ/>;H6r%U?f\u]pr|L/& 05 UϦzE )M{BT/RXғbsCvǚ"-ѩ.tOmh:"k( ]˦ŋk}N/rqg|je%$דj1;e($CnF8%Dme'i~7e%1'%7B!b]x(Rb!m5&TUXn}!IaKQ,e7:?XFm?6~rw"H?"NoԤ;Wf155P+ }C<ꕹ!1uRmxuυOh@zw_au%l6At%x'CXAn SΧeiǫ&Jȱ(k5o3TG.Yl6`` mH=rko3ƶTiH-zޑ%:Yԯz|抸z^$\{< & B2B[0!}SLYe榒η?j m(jsM+9zM  \Qcijdt7 >]I, Iց-+r/u'#gP@k 3 <K\&fᐺv_Je|/FrTfo/ilZ Lj(l#; SaeUx-׭ [؃|9G-2" h;T$np0YEE"J ED{H %NccݥȒF ĢDm㲪4KCna*zU.N1%om R$h:$N vDPcZ]uD{FK" oNHspͫb^k:'0{;~̅H}h0`a7j;l'A#,хLaֿSD~B/|}E,׀E޴Y+IFjgqѶuS|%Udc#pz_1 قmv&D0Gs//=Bx7;B@Tt:-aK4!lͿ+C,Dtݪe.%RrΌؓa ԣ0/#p+`eÉ<ȍkߑ.FhjvV*2qӂ3_aˡ&. !ez|^wft;>+}#3 w˾ a Tc)/_T'Ȓd$ DW9!zmWyxR:DEk}OB*='7hxy^m쪦uSU-JTZa$ٵ?"зAz  UU;Fo `MS.DuFizӖ#.vfQkkTlʤAG3?%:Z/e?KwfpԑfSq}g.~HJV Ge |V4ua- ^`)Tzt]ӕ<t51CMuP3rykȫjMXޤ 6wN3x@^"Cyu8s#Y ׸7sk:]*ZO\( ]Xov\z5\da!zUr7O\I<.$fs7e^ Vh8H & != e.2[+ŵy !%XI/koJ8>\/]$Agi` zK a/J;MS8d8+msxT/cm9oUE-(SGWC(҃n3 IwӇN*d,׾s-h}ASQ +ppQ.P)5rHNL$Dޥ<>_K;T!F+ns(A5ܟjz#TEsn [~2hlɃNRO&q@OtXW#/4(Z!.f6ʋ3(@%,WuS ֡d,8{Bn-Rf莭oMν?"Ѓ;is˜TVpB'YAmOb}kxDOc9z|CncaA*$G#/|o\MKs4?K Uk5%&3PBO 'm^Fu )f+A3/ũMug" 38ِ6)!R5(IV,cv݇ӤkR'w7!2U-4h|nETgP48k7k|qqsط)™B>녙(Ė6to^-JO |}E/#AZlz*VUJ6[T,f&L :aޘy^ 48w|ĆP^k&0P졡q$'4d_bHHEPa2ؑB\D.!#vV+?MTe/ 62Tڭ~wGY۶MV}1V>ߊzr7r&D->SClp={FRC@%@:!eD2Y#vKpH[,XuH=ZjoF *p/tē}'Nffo+PO :bj$Rt\H0t<Ĕlv5аUr+S4VcͻpxM ^xq1`$Mň<tSM}vq0v4|\Ӣ P2_k`z_H?y$"& ꤜbhE32p\Zb䡿0! Gz)lU&2rFSsqJ w"r%oUj xeb_-)^.7zWC0C 'BwA!1Xt7+Pe0kX=pVXUo؊bt%3 endstream endobj 213 0 obj << /Type /FontDescriptor /FontName /THCMMS+NimbusMonL-Regu /Flags 4 /FontBBox [-12 -237 650 811] /Ascent 625 /CapHeight 557 /Descent -147 /ItalicAngle 0 /StemV 41 /XHeight 426 /CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/R/S/T/U/V/W/Y/a/asterisk/at/b/backslash/braceleft/braceright/bracketleft/bracketright/c/comma/d/dollar/e/equal/f/four/g/greater/h/hyphen/i/j/k/l/less/m/n/numbersign/o/one/p/parenleft/parenright/percent/period/plus/quotedbl/r/s/semicolon/six/slash/t/three/two/u/underscore/v/w/x/y/zero) /FontFile 212 0 R >> endobj 214 0 obj << /Length1 1626 /Length2 13030 /Length3 0 /Length 13869 /Filter /FlateDecode >> stream xڭvUT]-wwwwwgݸ%8 =`/qnߗX_鬚ZTdLbN@i'G7&6fV~2UAىOI h ˹$\fn 'GI37 ?@h Zl|||HT ' @C/_&sj=]A֎l+= ',Q.fUws{@dtt\8,-AK`p-@n@/ /# tq@k3G9@x[9 n{j޳JJ_]Ajջ_%{u39܀^n2,A`{3.a6syWwU'To{bsZ9"5+rVN6-y]n_3C` BbQvr{O G+Gs_.}fx_2f=Ph/3߭u@+do:979Z!UTY\brwKLlӴY9E?T@GNYiz߱G)JNy+~q~oR_g%37nV_' #hdh9ZO R[gZ -/:Yئge KA5 :uoU>׆27My/_{piSğ)z 1֩;xX>dD^+nsjo>}pA ( Y5|Go+:9N:辂#bȍC0K9!Kv6uix}Ch%,3jX~02o/~vPJ2w+Ts=qi_IVs6rp4R+Q]Ja݃q D S?#Ε2UXoǥ,l=w+pnDR4F;Xz.b>ߊat|L8Dؚ-s~;<~G+HxETj7!c%3 礯h* [')Nc|֫\^$cgi^븹 ꢡcy^z'%N"fJfwPV'JQF ȳ;Enmܱ:#4ϙug&pDgE}Ao3F-uswҖ1Ur&Z)pw̼n9'V(}GOwF7 ͟k7xdƶX$DlCM^Yiգ7jWLNO5BVL=c_a窠G/qu'7y߇ q:Q~2KȘ+8w_Ƽw m38r՜蚰tAW=wDIum&*ܖp ^O+ES1ïP˩R*-\~ 2u໚?uY9 U߆kRsԼ R{*\Ts1-h*rfO@MćRG?7;ܴ<(v%[i"7Wq]=Y9IX>7h`\'TEY~>T`Xx%xu+\Pna}cȩ -~,)ٗP 8oj3Idǫr,x'琺tMNCWjLUNGdVJ,}Nt:yI!ꊘ_JE|~'n̄w:旹G~\ß~;8}]7NM07ܦ,>0DMZZ%q̡4`V!5]VwOISwZdZjX ̰ȼǟk4:*~%O>:?CtpjrWNy{/3+(*h#Xi4S ̾LB."T ynUmǻ) _=;+:̏ηkr~k\>v~G[PÇN6C*㰥ánP~P e~n (cWE)G̐VHv¹p(%-l(wҺI^פs 9{zU*q3r5b9}~XƘ$!$WʙqLeʠ/N}f|w"Ӌu?>+UC+we_.pry3plivY,v'xI+NjUb<%{OWr4plcй;s'26SC֭7\BY5 #񁓄$^y|bjXh^l5nʬ#* ɇWA~y ;佐΢4K%m 'yȕE(^N҇UUxI 0T[X{o.Fd>~#*m'tyAr )_e@A+Nw25Oƌ%}9muP3yL6ߜ޳ңA%ݱfj>E1y lh$ x}h~h;]s2 ؜/IIOe#V{,~IJYeη _;[:0G&h^b}D" {F@ C qqk\R["-lakC ~ ,eoUs(raGG0OE9~t]خ ~ N3f5G/-W+y:cүM麧d8Ii]͹Y~6EX ,PZ-"(g u-m! %7 lIK^S}4wWtu ş$Xo ,2vi u+jPz3UP뜦7Vk\c8IR!1HKBNGC{33 `,s ]gwݟݓM غC/1L bg"+5U"C0Gğ6iZEnLCan ƴ;cXAv3/kH} M4xjRj#&DKVe;Xի%-U}j-zȦt`[.%[5:5fHlqUkɘ3Yer_wFqU~p4!'>7d+I iMVߺiWߩ>č,[_HUmfՑt,;$ m6IHJb"#:{ϖ!ƕ0I[WlcȔً褘¾ oVbBɑzQfc'>IӹZ0.y`FoE0 #4_!iIU30:-<0*)pI1F)(˵Qq xbYH3Nr ɩO j2WRM)LPH"?t(R+\Wm-54+$%Ǡe F(]Zť̚.D m6pK~]E޹$ eUk6AxLX~y'JcP70HEB=^2WfgJs:d|x*m#>#~J[v: Xs{hvӵO!7-/쥡s0EXmxEN=2bQ64{|>jU]2)rB;NSYXK0ơ걟1:ǪzTS7ok tJ*_q|݌OcӎӡO^>n(9(ρ/K,<ʈv!6[=򫡽/QdE iܸ"0YѿBG3eH=Ti 'y1-8}dTűVl]OH/Ixo/&7J .N M.Ij7~?, W1,` ~r˱O `78 a?Ѯ2'b#[^*Rg,+^m~\:ȑHe)*%&<!"=`rouskpZygЄ2QОI5-3njwirp~UPa #~߆BֲJmt=+t?>",<ݽI0dtR9udays80ow!F-YWz,sz܍0H+'t'1xH |Ս}g~{th"`+^Y%INbܗ+y afٶlت}K[;;u\+ҷ Cg?u8ʏjFڌ723٠fzC,$(Snv>j7cm6W~kUC\6iP?p+ I+?,))ZTNv\EWCJ'ed*,TNAיPp~c$I2id&uέtօs?gE\~-!ѻ$_rƝM½`2eč\af Ai^.4d1b$&!ݦM'i2귦]''2,jQ#`Rۦ[/'-$|.mܱV?..V L}R0L9`ΰWAR$j;|f:j6;g1mʶٗO  Q"nt~u!-#ǟec~W"ϛaU֯:?C5hw`TYцX/1PoZAa٦`]?:5ɥdT7 Y[ s|{; uc-WI7( ɶjiT"C6܄ a!0pC*BI#5rփ8'`;% SڂSXL%Qǃ>"HM=Cs.ȀqMdL[xo Fuį9[#Bj2绉XLN& *YX4ݴ d ]Edw8 ب:c+duʰ)Ss/<9 zO^w_P?{#g Ҏ -C?4`fDUŔܴ&(aKTu$qKn,Χ+z0|4Y1wk(y͘} K,n$F%?շ!eploȋӘ86` ZK3ָ+C:R%r΀ 4p@oތ]Ƹ ݑUMn0ZGq["9GN窯8Dk.-` o蘚.Q+o(Ί-u\uR-AP)lz{t%޽[!E"=b88|u0(Y72y݊QZ+*7E^̐C`>Z5u)!ĩP8*Nf6⇯F:;Egܗ~DkUgƀ҇\ؠRV nb^WTJ2,O ҭ'HJtuO,HRW w}Q{G+(#W@ oocuc'n^n۱>>t 4g<2BO~( !y<& Na)ʼn?G,aÅ1zN™FA V»3`)8 ~7g|O.Ke y!M2-rf.#9Gt\ +AE&b,!#/]'A;{D1O=fII;e$I%9]zAxl13sRYOuPɃM;iZVDtYP.Z[;gO l|v HKAb #tJxSȰˁo(ՆWñb׆3kJфzRή>U%Ygm2#DCl$x"R"9\sc#Kؖɮe$[?%$ j6a8FzVB%x)g;HOPfb=6Q*rn3awKzJVe )eVO~kQDWO}6z;<< Žѕƫ9c4]S#B_Y\[,/#=lJ %s*r ) yhrH3D-DhAr iM(' qp5-5U5S:3KYR:K@rmsZ4EK0`gz+Q1*~baxF:( ϕ~wuXY5'YTފ1:!`UfP ]Cܓ5~YӺSYApA$G0 |3{ʛR`k>N}bC =6턼3Bsuhi}4a/z"Z ,s5=rDvAQ[2AxlCcAg]oeL:ctB/SyfeBQ+o m̽Jd)Fw׬6mԚ͛μ*Tyl^>ͻ'59tioڋr8Hxl|~9kQ] yb .Cׇ щe]"L4H-F JzRZPwS%evj,&͒ E,hbдIGkhGcBய)45UJRZDs<o?>!UmmCåpF<84Qs<}a_[NnQWcŀݨ}ƴ[l9YsW͚̏{}_smZ+[:ujro3*LEEXKD>΄/Fe2&SLپ'T2n^i*:s4ewy 6#۹Jٝ)Pic؜~b#i/Az/`_-bF.LrXM\&E!x7(L$Mf = QiYGa $?#9v(Ve&JG\k#`eRYW+aCx`[b-@O#\`詜cObEفRFTLRcŧju돑Մ@9._k.^ 7s`lPk𶿄7!~J8׬q^ƀ+yv$ zGpkG~ IQQQ+2̅,A#R8$XYC&0p ) LJB2i` |(7[qWjg0=_^? a̟Kva%>ʑ; ,C0iB4^1~7>9fX0 v%gv8.:jUEv t|ć#KdiF7Κ:8B[fxʆCX`M&-7:/MAZe'EC"E ؗ(TȏuL?0t>Z @V4I瘦;.vi6$vqu t,.3UJw e͞jk0RZg;~c1uU,JKV4%,r v?ql;V8!uȰ ʹJ1Sӛ`8B7Є =D 9S:%@}r50Ga 4m@[syjP)JZk;v8} Y(ElV$eڻBei6/1Ю!L<N;ӵۛTWRe20S348nF=N[IqlZ$ɷP7P:yуL@sE[q m&I-oC ֍];-:Bk7Jhs `]گ(&5JRB ^N#] ` Q얓<6aål%5'CJl%ߑx);z[Zao8|W祔yA0f$gRxCC I cCӏ;×嫠"m0?B( J&P]73YnKm1ʑ7_n'@ԶEU}Yu-PYqHu[:#9; PdcARi3ijth?` u0Wͦ)W/Ñe}n9Wxn又FC<.JӮb»{!%T: ,o*ϵMS3Nsvn$28C%7!qxnp:Om!+ʲ2eX'+KGODU>jҞ{G1-?e ]:͝sWGU[P-G; ziwhK߲O}}zMWra3U9]8uh9M`< Ʊ"ucG<nK HeTgvR{.WOmQ|NgVW΋c~Eh(Dx!:31ƔGy3ci?hE!<{3b䅤Z%F7ꖦPlBEeiγ6Ɖu9ws@2)FZ p6ա^፝iZ-Mلb-q @`䋗wdqp:ee<%(r&[9jvƙx0 JVtG #gE 9,E(%58G S&[Y iQ3~"4"KJd^O (3@ޢ6, 0.fS Fo?ƒ f1+%%]ocaO G_{9G`>hJ2l&&A!_xvqɽM;y=6*Sڿ)O?؄Fa+F`GVb#~)C?sܢܪգ{ w*c R3*#[I%C]kugk#210Fk^S1;'\"t^@ځqmT":YF.ඨM )4oje;[b{kWW2L@s=c2̧/͙z`B'JmXsizS?`8SH&|,(R4-B?Rapr4{DEːZ!Ʌ&,WB;`OgUVR&᥾., `,B㱹T(;ژ aR?o5!ChR G ;>0Tvk~+ yiFpu`6Ɛ!Ue_dV=.!;HYpU "~Ֆ-N c,"O (V6Ey UbմduZAE7*n:=pW`|* W+YͪO6:8ts^X\C?nm X!5ûYXQ EQfcTffΥjkau#-:5*̛* t͢ь||`~8$D.y܈]҅^r]P#wQ?<Dê4|V V.-Ť((71Rz5 Pe%fWMAO0o, Ooˈ\wgV4gQ0TN d*?+xGOJ?6כ+q\c-KR0bxѾ'?1uy79Y5o ^wKMg-@D> d^8Ȳkav"'&;o9Ld |:, Ś` h4v>K.yq.hǻ)yz|תhtjF0 %kaU!yR14(g@<]uX ./;6b{4,ql>aF$O893 (G@?A9&50g+/?H}yKoshHSx:rV=vSVNjYyBUV|vN(Bǂ0Wj]Kux=AJ$oF@״GXNK [-S>w=C21=w)}ƩCbrI>= AeM[6ܹԊRzQzֳY~y?t_`5,Aî H$i_A@J I\}3w܄+4:Ns, J' endstream endobj 215 0 obj << /Type /FontDescriptor /FontName /RAKNLQ+NimbusRomNo9L-Medi /Flags 4 /FontBBox [-168 -341 1000 960] /Ascent 690 /CapHeight 690 /Descent -209 /ItalicAngle 0 /StemV 140 /XHeight 461 /CharSet (/A/B/C/D/E/F/G/I/L/M/O/P/R/S/T/W/a/b/c/d/e/eight/f/fi/five/four/g/h/i/l/m/n/nine/o/one/p/period/r/s/seven/six/t/three/two/u/underscore/v/x/y) /FontFile 214 0 R >> endobj 216 0 obj << /Length1 1630 /Length2 17806 /Length3 0 /Length 18639 /Filter /FlateDecode >> stream xڬuct]eX'bTl>m۶m'W~_wt^ s)IUM@ ,<y, ௜򻣙3$jl03XY,v@ Kg-H1{_O'@ Q li0ژ+(jIKh$f 3G#  4196>L@Jsb%08ٛ؛9N G#8 +7WBv-l)99;8*;OgK#b;v-ML\)_0F@XfSJ  fF6fNNabӝTodoo/oYNf6,c8m33+R s; .Cj3302xL_G%G?C%c3Y?1x߼ٿI9m0/5̌āf@gKߞK25srXNhb @t+&91M9yÂApVFsx1p~0~c{&/ 89;:ffWؙ3:*F ӿ?M\qܛ-ۙ[e;O @ؗ64| alhX:?z8ڇmCݛbvOCN_EEwȤ_~u(ɬ~;_h֟ܵ$! *P-t]N%ogCFWW.V$57O?.$0X/و->dܮBbYIƿϨJw-Kr_4Ygr%ȋ8?i$.fj&J3CMWRb@+TC V6X}0da9rwcҲ z\+LJՄ-R1eU5? #ۍV&sO&eD-Kw~kNwOG ҂@L.G㰖d%X @|/{;qPSNԉJHνDkv=*WAqPHkء:t1& fSMovys~-Dꮟ&?~?*6(]]3rރ]qu7g\dm[[i@cN t+5K纺Zo?f)MؙRjDxVKWjI6fVsآ;>c<( )Z5QEQ~ _i&*0U\؜ @@lha ~+:8 "#T|1@54^ΩloCѣPEv }iҺ+@v,~p RA[lu2EgS O}ڦUo=吸FdFN5koJ Bx(tTK9M[eSc1UTͪ[p.&qL4NKĆŲy  1aEH?6[Aafۯ7.*D'E746 qR{zxry(l\ҝB awL{o؁\iU-SpZ8{l$e4-հz%Jڻ-jzrF[O xuoV N4&+dd1_&61\w ҭuk(w-P2Eb)M32Yyդ=|= UUXc;4MLk#sټ#:!C.\b(~xK{imIKkBL=nmI JWgXA&S#G&X愙(0aǾXWz~|+- +oV*ŧN=dw߷`*4΃>N R)oV]VԉhO?գܼ=]~${ A_{3q{_^mHd !r톂L\t:)=s'*i*#eZۜ:5HՖ͢Tig{[t D#Y|H^gr%:b0enDY獹mɔjSC37r4r]PbSǗ3D+GbK !>-Ѵ6ﮒ}`oScq~$sn -f2bnDHy/< v ڏQp>68 Ń~j&icBr6xNhqks&~C\h_9[6 .9Plܨ΂r I.$uz7;ei vks-=WpKsc `_GZǦu؟q|ꕯGH>r_l@C+:?Fz:e@Q(]<| $-HwK>Ȑf(+,_\2_=r&"êYmѯ%j/dEɯd+}nL]apTUVkW/ <^G'!Sÿ ӻl.51o22[}89%l)aۤ 4? '| hdu{@YCQSZM'‚D:#Ug@}[e /.dY TR٣c#4=EJCr{gV*֕-ZlDDZ7+h(q|t9xR5#Y0$[dNhZڠ 6%ߴz\}FEXPTOx@.sҮOxeSΕcÅ*YGJ 琳f1nm&K% RQ/,Dugj+S$+CDޝڵ+Gv X3u{ڊnȸFh ծZD$/>rRo.hɈʵصgPI?QMiX ,M-amJх@X0w֯Q+(>|OGDI D?6Lۭ g /TvB Fх<{c3ՙ[-5o'iF}047 PN+D$VJ[.ْɞY\kFܮhKGƌ[09rkX3rMp)?}?oQR__i't:vʘNg4i%8gYY-!dKNx\֒ lEDq'W^f8|s\R'+/CO|n*a%T&vj }/Hwvn0ͧ"HCԐl"61]B!jXॣxMH{~s=_(i@LYQatF-4,Lz41cBTYȱ))n.݀]Fqq84Л{M_'_*'Fi#33ٝO<6n S]:$8,5"rE%cˎ5| VKAbF m 4>lq O'FRBF;v>\z̐&@tJg2&K^,G\ͩ[_ ]Gw9"~OUF;)ۗ~ra{k9+I]g ?iCOk>Ws[|P-ߺ;y>/ rW"t2MӇQkU0&l:O>Ա-v=UӁ_6۫+- fN\Lֹ'=$456< =}C.!:%E77vT9&]  Ya1H\i‹AaW_g0ȊK-ĊwЉ .=TĘxv3!m[nQHi̲ LBI|KWЇItFѕT1UD0˻911-DV#h?,t (nYBnEG +ٶ(ade[q'=WĨYrG]l!֓w"- JQ1&LLOQ8$́ _W QX @=2=>9hn3Wڶeuɒ ĹMI ('c滗"?Ei+f!θddt5LVQvбeN CL2Ml8?AЙ"+)|~`~6!\NW:gqʄ>q-|oc9/ZY"ϣyF V٘9<(sy_!iX*~o"_SS_hvYHC밟1zEP-3ep#n\6`cL(h% ^+[nNIjtux:dYυ^FƽBF\dODuKj=7Ȟ'[&d_p+YǒP&'P|/=Om@87l RzKS}4Zs[&R[QJHBTk@Gb̞b* Lytiǽ t_pKʁ.ʋQ3sw!+/6BRU*,GGQllPʺzyIho%}ގNT0]|g Aڶ}{l.Ew<ՎӚ܏b"LlJH>m*؃˽a=~w{`XWJ-0WI]ˠJ6 Ҩ4pcNӑ=^H⛕ZM` -e8_]@SM([M+E|7\r>wxRn|Áè?|UDy*NH=G, {];yJ.~=j4}@b:+9ĎFj 0k,g꫱n %OOz c B>v.ma~vߌׯ==R™ea+tr@uL {"m'ǖU:?xqw6=jD?Cܭ}?Rϴځjߦs<= %V\*nL)lel]O`NF5z"CCTdz |+M7Xb|?cR2F\H~j!rrN)_5kCOB1"Ykha{hO!8B^ނqƷ+{\[IOyrEXɎ#(hsa4iӏc-í&F$(qkxIG~}_}H5v'UW8>UoP^8oV|„*k3e*,WA fl7ȧR(a!*'Dltm 5?09YTI4F" wD^d5]z}3sM&`˽9m Aٳ&}z3nixۣ*5)Y-M2vkJy7C?$Cn4T#i^!`4K*;7%ZmL쩵O2z.Jk'LE*fAK]?tt3u\&=Ȋ2uN`e3E:H1#a,g'\2]8rKkb6 |Rp|X2K=mڒxy1}U-hՄr`eQ6̒s-_Ϳn­ɯdsJ_㍕ ~2G.=`(P fwٰ?}f>~L.eQ4U\``!xPTxWE<e0jZL*.p.te <ͬK+Ex#5c43L1b1R7$L^ ɥט(DHD?ecyLgBVHډ*jOIp_<12ĭdy\D9iG0T#s՗^!ٱyvAVeSf*bl hdGR P8f{pNu\RֿZɇvԾ,Ya 5l3Y[ratyVayKsHr@9n$; H T7{"hBۈΟ?i{hś<@US'Asm1O5=0C@Eԥv|`Y "S c'6e!֌*CEookAa*o:#$YT P:~pD{f`Iܮ`CŞ4BpE"0O\e۩J#@S[d$k/ɳ2.ncgas <>fh[H%֛rƾ;pDnм e1t%I3}"[!I25Ԋ/\n0+-.)~tЙJ:.n9> aƫͭ`%;&Q$ټAh(h.[ș-vv bDm&ͣ͸ۦx :_uJD9]oz-F[[0]&Ec8) ON^!BSnEdB[jsN+SHuJHy$çiL'1˯nT#g!`)- 09'KDNdH3B;ul賺BЬs9Rg_庖hPM/ǭ盨}gZnm:ns׀/b`ݶ Y6ީ!KWz 1vl(g ݾ7rK*ݼda =?ZR"W)':mވ]Ҍ%Ro V+ad}Hiw̌;V)hDxgM%E{,rHOު<;rD]4WȃD/8K،:/NY[pZTZxR$eiuovnO;3 |(uoxǰxE lJUx@|Cv ؞TKz'@1=/MA !PDfIn J 4XV9Zɨ}Z1qx>r*=F˥Ŗ Pg{U)En= Xrxb oJXQ,̶3e'إ~I7axrb:F5NIff7EPh>. @L/n!6ذzL5*,s$x tBpY +ڬ 05]n )j7_ b b3mfy\IxвYIdɵ32iS&βŇˆ4,s0?uL͞L- .uMg:(Gp)O{X|s^ߍ8ɆS:)1|baʏU[r7kZ}ǂ<ΘFK"OpE^-|ts~5'Z;CYvu뱱_ܧ)KR5z[ UxI2eR8|G}Ss|-Ŭ+ӻeh4r8D?)DwئU&s_jj˅usLl4BMdFvκ'(gT0՜W~ 'nhGL*$cYHӐqh J P`%n:@{?8/>Ca.Ǵ;-6&6[,?`ݔVG?}-g5ುS.92qqVjv8ȸbgT)tHd>AgT|:KA4.-0R?ӹz@m¡ ^NT}B EC7#nL#SB:( n8<ɩ (^XD(/ ~IlR6MBkj+aim&dTSܿ23PZ;QQFݲKzl7>6a,U5sK3[.F'`;`:X\b+E/4cC*ӧX116G1]Jh! [BR8JnF~WuPKB.xV"#n_\:ȥ0(L2Jդ?_q3]83٨vNXn /+Zz|pUze0S*ܱGo(. };*Ă{T o4 ȶKFbD7ZmvZ88f+KV+vԉuIMP&~w  8Nm_>0\8\Ռ4(9 'Y g7xr뜽ރU: `,CPaA~hu sK+5k۫ Z;f"DNI2cCf:.c2-)*tZ,V!NLPwԽP& Y 83T * %s"LycgOIk)Q.X3^Lq"/={.*%tr s$h@/ƚ=;'ʏ* ~B%[b:c 3EQI$\1'َw'VBovNAC^H"?SGsrj_OGq%Ɵ:0cf<?7YL&|\͋;NRZXj~ơpLxײWQSd7zABg;[ mSK3(DN%/ jC gUfi5 <ءk"J8W'>[B8tX$DV'sςb_å6a0y,Qn ,!pZPKHEBչ;D8HX]4iO`.Vڥ~ }S!څ'/2zv*rX|MIfJ+A9ZtM0zcp8~eשQ_)IT )\%~'K gd!/b3ݮr'*$qͳSvSM$o1sZ7 wI=aYKF( b֍4ԸQN[ÚmQ"=bS`b!t(mySZ1m9"P^]9/Piq8)3 ȝ`PM ,jk7='c^w Ô*CGz!?4//'jZE.1'..xKK-l4C29h6-%e\á?at7mh Ҥ:HjgPt\L?T*NW;jBKfvU[| A+'їŮ'Eud^ZJIng|5\Q%[:D  Or2)p ,ƅ4ʡXtܑ[uUYj lbϮ!P)lRI7+ +@<X?F/`C?/<f ̪!P+Y7)U#9%i+dMA[mf%G=m_1_Gx`sp'C'.ȳ9)5=,9 s  _\r@&pͨS<*_g((4֟LmRax8,ku" ܿ(G r8g Q'= NTvkЬe N귺 EKoQyM_,Tmh V' onM9veHL!ZoUG m K6TY Q?~HbŔ_D:?ݛGUS@guCa 9Fc8/@_ F|ZNrS[`1&ԑpt >]r}WģSȞ~cU%z/]P;V3TDvG*yHeڴ4m-sR˜Wԟ<`Z|V2ydB~!7Ex`F+0 0k+K6bĵ#[,@>C*A~a v*bZS!C{&)N&ҟ\EJaSʀ e-lVfnܭZḓ!m[*ZҭxǏ' ǚB[aT9DB[YGND< jp|۟V%7H McM"T?D]?ifS+uG"qHz5+me1'A(a/h|x QVW?/!vy|pQ%X+Qq :*^r\I[l=kp vANO FJu2+PoyApl$+D>-S .@|x}4b4χ/џ~q-`(Rs ,LTrܻ=>̲WlqZe s'tI)ppbECti_'ާο!NanץO`_`EWoW&YAT^=M1~Y08[lv:"; Duz-2 5PQ P˴˒IW7°nZNEг@jH4KkRp[x-esLj6.)mB'2&7ttMfSB@u-P# y`3 gb-v(*2{Mj,rHH Պ_ g,=T([ܘ5i>6EfnRd$Ih1>?45lgvs6Žֿ lBcMr*. DP'h6ܪNqY&qT"Y@:ne9e=+oz:`@~lbB/4F$58!m4c*aGgCpp_O{e%֊=K5vp @O*5{FL|jakөat p)"s^PpzKP|u͹3UQȣHbQ@dz휖Y#Z&A =YVvq%bu`1sw#qv){ 7_ yxqBMrη>gL"o9KX?9crv5V{:if@[ݩ~0Zo3!*Gm@a#dvPgYUr9 K9n*P3]Z4?l63d8sQMDXq*{)(c:҅\1f $BMw 1ɃŹ1+Cp<ۓÌDH[ٰǾit=|)DM9_54q{q:8XFaQ6EAN;[=a}ʦ2|[׮D { y|B~۰ `l'~:mhh[Z^*M0'_ jvx[IIm[XHsUt9B+n#DO_Ǹ<^Z]/;%K-"@9=[]U0Id7g_.Bk[7DB|pa.rړBBO<4$~5|•$ 3EDf(`i`n=Ƞ5<{)|Bd6vM h!%FX!DcA7QXpX$vA^RIi= &~$µ/m6v'i}I›'[C]NV)Tpjd18IjzOB%3P80;w)ɒ NVP{)2+{cᰂ3 fbmMuE1^(b ^g׸1Jқ+wްsjR'I _́ Iz2KڭHr9%ܯjj׶پWw0fP_7`65gjaOoW1";XVFh+ٽbkf _e=^͛P9N !-=d\7S~nqsx2w \@v)=xyxvFݞ75wx2t eu3K5"*At&e` q_O $ 㢍s\ ggJ])*Zl -9w]WF "0]Oluk\U cl(MG=uug|ô0'kt^8` endstream endobj 217 0 obj << /Type /FontDescriptor /FontName /MEXSMN+NimbusRomNo9L-Regu /Flags 4 /FontBBox [-168 -281 1000 924] /Ascent 678 /CapHeight 651 /Descent -216 /ItalicAngle 0 /StemV 85 /XHeight 450 /CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/R/S/T/U/V/W/Y/Z/a/adieresis/asterisk/b/c/colon/comma/d/dollar/e/eight/equal/exclam/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/numbersign/o/one/p/parenleft/parenright/period/plus/q/quotedbl/quoteleft/quoteright/r/s/seven/six/slash/t/three/two/u/udieresis/v/w/x/y/z/zero) /FontFile 216 0 R >> endobj 218 0 obj << /Length1 1647 /Length2 7741 /Length3 0 /Length 8584 /Filter /FlateDecode >> stream xڭWeTƝn]CxKJܥxqwk)8šXNq"KwϷvg晙w 3%H,Pmg'ug1Unm-\t%=VI3(oΏR\[P,Vjq[S;,~9r±Nږ:ȥedG$¹kVk}8b,̧2mVtF3=-/剟Uru I3~-ae.KkWoOw1u*άLf _}MMzg 08Uy] 5My=cM Tdzsr!qGȩfp^# Giڞ 0h(hW/8˦=Gs! OI9 m~~WZ^֋"^!!̄^o.\eulxvJg"OnD^ ku)B=潬\'oySnC֬hh0A|$_Zg(QGE+W*GT?J},!#}ښC-"E_# $q{Dʂ>BRzr%,#!);)qoG\)uv2/ANR;{Riz<]GI]"MܴRa|)c\ |A[q @5yխHMar,M_UOW4Fʋ&9θ"ؿ8Q/ϱ]kxC9^S1U+h6|'@t*_J"pt/ "cZ&VAM]"T슘=^m781i}N1s;C[E*&vJoGe #YDoO]@sRԲ2S/qx%^eG} 62#?\`Ȧ=._(z0pew07ȾAQLܵTGIVftb<:Ť D)$E_7[Q"̓[q+JZ, Q |x&>9$nd.j( SR2`ut:[?;۷3NQ?IuJ"-K4ʴ;Y.'dΒgos-ViK%U>|[Ppc:z~e,ؼ[2nYJɍ/Т`pÝ155bWP뙗V c`eb B!$? oSݺr `}sd񕪞qYc!* 8>CM<_gʳ}xc 3$`BDW'Y9@kB;-3+5Ry' -$\~gTozPQqw辎nNMZd{2P)|<K^fq!FѾ8* ~; &}١HҟڬS[|0dtuf}Jѹ8p}LyzAxy4r9\EX m'^ڛư,;ls ai>ݫW'>F9 "9ݩAUYErtLi{+>6~aU.e~1W" 2揷~<{k A\ҷdx|Yq%)5ڈ-8tF4Cb_YJUuc7Wd`J7M:v.eeϲCwVO˲Rw>VsC_fP^bmZKкvwz·1Kn$l*^C?db GR;VQ8U@;LB-3U*řh.r5,eIaBw>~j0YԭӦR*;zJ4lWě8+_gGeoسS+yRhB A2_gN3Fur(:ؔ >%v ~JY2HUt+v@No ݝS+lC|Rg !4M;H})442 TuM4[>@+iv\)]P pa@ >&g5H-UDZj%[`'y.7:5"z0N,>ש"eNË-`t YP͠zB7RaBK'_ x%u.5L&%h׳ _#H/SZx 8<@ne=ifEV7†]çKgŻ9G!k7fR*Yiఋ&o.V9Qq^ Dž ]>zGz#?{;eݻ-`^}k[(謚JC`*Y[g@oYڄ&U9 Q*dǠ8JTmZs#S3[a =V w_r1 x~O:8@? gfZ$zqf\MFg_7tȗop׆vrp\WEImOs& ƃ5Gƭ̈($52)TbgKՇHtģSȷM'ka F:{d">@X딩4 SIx||?s`]5T\uq4iUAC0? Zۦ y&߉.Zq0M˭jG:vxʷQjD=NM_`%qLm?9ȔiX7-wEEL~n)~ß00J(& UQ 9fT:q0j9@aW$+۬ĺbx9C:>b/q׸d88 L0nY4BV`tz\(9KbF 2dx"kyK,,'FPueüu'βu>v--j6XjyLV3^?Fކl)N\s !s€Bu!S2q"=jP&*>ɢ<՗KJ„[s{E< :T^@_ ⳦ĸ+hO["6o};Cr֍)f${a{8]q(g:7A|K&]P?a^z$4USMˏLΡYc)jR,p7V3\xK5KEګh?pn|43El{@(%d['Uv (Fٺ'@'1.zEkZk )EKZ1cwLF)JIdEo FTFk6iѰsՅu56&Em#|ʙ81ԒJ C8*kzlYAI3;yOq3u!R>7{Db ~6J 3~y"E@+^I <=15E2r8>GѵI^LN_B2@3Um,1ܭ!ɠ1g:O (KRfm󠅉Ecs7LBp2SJ9<"-֢!%.MxOccgRV4M*g3wSwֆ ~e0Lc2&S:-!ҽ[Fd6UMIr ۼo՚-'< E>mFRMw4˧CA-65Q"eДΠM/WrDZFlqΆ9J:|4] XEI =_3b^'$Dmy4OV'wTd'jrpܽ3C]drЧ->*ìץM{(E|!g] Oc}zҒW,|@ޭt0r;r P&`D|ЅR]{gU{̭ݤpӏN݊e^+82G3."w`8TKFJI+6ijm6%KeAojm$8V+3dsyK+Ə!>|p`V.Z"KMdꤜ&^LUdTf5A XZɸ8wgc(<~U%fK]Ƞ#Ŷ6H{ w䙾@Ճ%mWQfx3Ԗ6ݎMb凱ᔾNvJ`v]:-N+@PL_KZhHjG&sbr5)9ho9'&dQgW#_zc8۞STm]JHC 9Mn=+ܗu<nݎ;J~mrx|{dVWO(^E||X f'yT 5Aɕ`'9$ecll@"d+6]Tm9Π3?N]L{<4ed ;xc]'Sr, d(j)>i {mEplNCX9b`Ć6R1i:>!K"%<vt޿&tj˒koD=rmy!^T Gu*VEٕPL̬o>j7V(<:凁[G&}^_ .roY_'p /P"ݦ(G/zFȵ<;*L$Kէ7_<*C i궆գopx8.>v4 [ZP2c٬R3Xav#mJoWQ@m_NNOC-O0I5R> endobj 184 0 obj << /Type /Encoding /Differences [2/fi/fl 33/exclam/quotedbl/numbersign/dollar/percent 39/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater 64/at/A/B/C/D/E/F/G/H/I 75/K/L/M/N/O/P 82/R/S/T/U/V/W 89/Y/Z/bracketleft/backslash/bracketright 95/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft 125/braceright 228/adieresis 252/udieresis] >> endobj 36 0 obj << /Type /Font /Subtype /Type1 /BaseFont /DVGZTC+CMMI10 /FontDescriptor 197 0 R /FirstChar 58 /LastChar 116 /Widths 191 0 R >> endobj 56 0 obj << /Type /Font /Subtype /Type1 /BaseFont /TEYYDJ+CMMI8 /FontDescriptor 199 0 R /FirstChar 105 /LastChar 110 /Widths 187 0 R >> endobj 37 0 obj << /Type /Font /Subtype /Type1 /BaseFont /XWEZEP+CMR10 /FontDescriptor 201 0 R /FirstChar 40 /LastChar 93 /Widths 190 0 R >> endobj 55 0 obj << /Type /Font /Subtype /Type1 /BaseFont /CTDVAL+CMR8 /FontDescriptor 203 0 R /FirstChar 48 /LastChar 49 /Widths 188 0 R >> endobj 38 0 obj << /Type /Font /Subtype /Type1 /BaseFont /BNHVME+CMSY10 /FontDescriptor 205 0 R /FirstChar 0 /LastChar 103 /Widths 189 0 R >> endobj 57 0 obj << /Type /Font /Subtype /Type1 /BaseFont /XYBSMX+CMSY8 /FontDescriptor 207 0 R /FirstChar 0 /LastChar 3 /Widths 186 0 R >> endobj 175 0 obj << /Type /Font /Subtype /Type1 /BaseFont /WTMQRX+MSBM10 /FontDescriptor 209 0 R /FirstChar 73 /LastChar 73 /Widths 183 0 R >> endobj 149 0 obj << /Type /Font /Subtype /Type1 /BaseFont /NDBTMM+NimbusMonL-Bold /FontDescriptor 211 0 R /FirstChar 97 /LastChar 118 /Widths 185 0 R /Encoding 184 0 R >> endobj 5 0 obj << /Type /Font /Subtype /Type1 /BaseFont /THCMMS+NimbusMonL-Regu /FontDescriptor 213 0 R /FirstChar 34 /LastChar 125 /Widths 194 0 R /Encoding 184 0 R >> endobj 10 0 obj << /Type /Font /Subtype /Type1 /BaseFont /RAKNLQ+NimbusRomNo9L-Medi /FontDescriptor 215 0 R /FirstChar 2 /LastChar 121 /Widths 193 0 R /Encoding 184 0 R >> endobj 4 0 obj << /Type /Font /Subtype /Type1 /BaseFont /MEXSMN+NimbusRomNo9L-Regu /FontDescriptor 217 0 R /FirstChar 2 /LastChar 252 /Widths 195 0 R /Encoding 184 0 R >> endobj 18 0 obj << /Type /Font /Subtype /Type1 /BaseFont /QLZCOJ+NimbusRomNo9L-ReguItal /FontDescriptor 219 0 R /FirstChar 2 /LastChar 121 /Widths 192 0 R /Encoding 184 0 R >> endobj 6 0 obj << /Type /Pages /Count 6 /Parent 220 0 R /Kids [2 0 R 8 0 R 13 0 R 16 0 R 22 0 R 34 0 R] >> endobj 51 0 obj << /Type /Pages /Count 6 /Parent 220 0 R /Kids [49 0 R 53 0 R 59 0 R 63 0 R 147 0 R 151 0 R] >> endobj 156 0 obj << /Type /Pages /Count 6 /Parent 220 0 R /Kids [154 0 R 158 0 R 161 0 R 164 0 R 167 0 R 170 0 R] >> endobj 176 0 obj << /Type /Pages /Count 3 /Parent 220 0 R /Kids [173 0 R 178 0 R 181 0 R] >> endobj 220 0 obj << /Type /Pages /Count 21 /Kids [6 0 R 51 0 R 156 0 R 176 0 R] >> endobj 221 0 obj << /Type /Catalog /Pages 220 0 R >> endobj 222 0 obj << /Producer (pdfTeX-1.40.10) /Creator (TeX) /CreationDate (D:20111117165742+01'00') /ModDate (D:20111117165742+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.1415926-1.40.10-2.2 (TeX Live 2009/Debian) kpathsea version 5.0.0) >> endobj xref 0 223 0000000000 65535 f 0000000606 00000 n 0000000495 00000 n 0000000015 00000 n 0000212537 00000 n 0000212196 00000 n 0000212884 00000 n 0000001636 00000 n 0000001525 00000 n 0000000685 00000 n 0000212365 00000 n 0000005737 00000 n 0000003868 00000 n 0000003754 00000 n 0000001716 00000 n 0000015172 00000 n 0000005623 00000 n 0000003949 00000 n 0000212708 00000 n 0000017179 00000 n 0000016963 00000 n 0000023353 00000 n 0000016849 00000 n 0000015300 00000 n 0000023286 00000 n 0000019577 00000 n 0000019850 00000 n 0000019885 00000 n 0000020284 00000 n 0000020369 00000 n 0000023044 00000 n 0000025533 00000 n 0000025314 00000 n 0000033371 00000 n 0000025200 00000 n 0000023472 00000 n 0000211034 00000 n 0000211320 00000 n 0000211601 00000 n 0000033304 00000 n 0000029071 00000 n 0000029346 00000 n 0000029381 00000 n 0000029657 00000 n 0000030054 00000 n 0000030139 00000 n 0000032814 00000 n 0000033062 00000 n 0000035791 00000 n 0000035676 00000 n 0000033515 00000 n 0000212991 00000 n 0000038639 00000 n 0000038524 00000 n 0000035908 00000 n 0000211461 00000 n 0000211177 00000 n 0000211743 00000 n 0000039378 00000 n 0000039263 00000 n 0000038804 00000 n 0000040747 00000 n 0000063709 00000 n 0000040632 00000 n 0000039447 00000 n 0000044687 00000 n 0000044805 00000 n 0000044851 00000 n 0000046215 00000 n 0000046407 00000 n 0000046599 00000 n 0000047225 00000 n 0000047555 00000 n 0000047784 00000 n 0000047952 00000 n 0000048204 00000 n 0000048430 00000 n 0000048665 00000 n 0000048910 00000 n 0000049156 00000 n 0000049350 00000 n 0000049588 00000 n 0000049820 00000 n 0000050016 00000 n 0000050245 00000 n 0000050462 00000 n 0000050652 00000 n 0000050903 00000 n 0000051104 00000 n 0000051326 00000 n 0000051549 00000 n 0000051724 00000 n 0000051917 00000 n 0000052126 00000 n 0000052370 00000 n 0000052601 00000 n 0000052849 00000 n 0000053071 00000 n 0000053285 00000 n 0000053490 00000 n 0000053710 00000 n 0000053920 00000 n 0000054149 00000 n 0000054405 00000 n 0000054630 00000 n 0000054900 00000 n 0000055076 00000 n 0000055307 00000 n 0000055515 00000 n 0000055785 00000 n 0000056008 00000 n 0000056198 00000 n 0000056414 00000 n 0000056642 00000 n 0000056880 00000 n 0000057112 00000 n 0000057348 00000 n 0000057574 00000 n 0000057814 00000 n 0000058053 00000 n 0000058258 00000 n 0000058498 00000 n 0000058738 00000 n 0000058946 00000 n 0000059123 00000 n 0000059316 00000 n 0000059563 00000 n 0000059803 00000 n 0000059975 00000 n 0000060202 00000 n 0000060422 00000 n 0000060642 00000 n 0000060846 00000 n 0000061084 00000 n 0000061313 00000 n 0000061553 00000 n 0000061761 00000 n 0000061998 00000 n 0000062206 00000 n 0000062387 00000 n 0000062579 00000 n 0000062849 00000 n 0000063060 00000 n 0000063303 00000 n 0000063445 00000 n 0000063688 00000 n 0000065856 00000 n 0000065738 00000 n 0000063828 00000 n 0000212025 00000 n 0000067784 00000 n 0000067666 00000 n 0000065962 00000 n 0000069885 00000 n 0000069766 00000 n 0000067890 00000 n 0000213103 00000 n 0000072083 00000 n 0000071964 00000 n 0000069991 00000 n 0000074286 00000 n 0000074167 00000 n 0000072189 00000 n 0000076389 00000 n 0000076270 00000 n 0000074392 00000 n 0000077425 00000 n 0000077306 00000 n 0000076483 00000 n 0000079895 00000 n 0000079776 00000 n 0000077519 00000 n 0000082082 00000 n 0000081963 00000 n 0000080001 00000 n 0000211882 00000 n 0000213220 00000 n 0000083126 00000 n 0000083007 00000 n 0000082225 00000 n 0000083864 00000 n 0000083745 00000 n 0000083219 00000 n 0000083946 00000 n 0000210542 00000 n 0000083971 00000 n 0000084078 00000 n 0000084121 00000 n 0000084176 00000 n 0000084207 00000 n 0000084807 00000 n 0000085109 00000 n 0000085468 00000 n 0000085939 00000 n 0000086412 00000 n 0000086799 00000 n 0000087773 00000 n 0000097927 00000 n 0000098195 00000 n 0000105838 00000 n 0000106063 00000 n 0000115780 00000 n 0000116064 00000 n 0000123240 00000 n 0000123465 00000 n 0000131486 00000 n 0000131770 00000 n 0000138978 00000 n 0000139216 00000 n 0000141373 00000 n 0000141590 00000 n 0000149410 00000 n 0000149665 00000 n 0000167365 00000 n 0000167906 00000 n 0000181896 00000 n 0000182268 00000 n 0000201028 00000 n 0000201561 00000 n 0000210265 00000 n 0000213313 00000 n 0000213396 00000 n 0000213449 00000 n trailer << /Size 223 /Root 221 0 R /Info 222 0 R /ID [ ] >> startxref 213716 %%EOF eztrace-1.1-7/extlib/gtg/extlib/otf/docu/PaxHeaders.7332/doxygen.conf0000644000000000000000000000013212544237152022241 xustar0030 mtime=1435582058.523899952 30 atime=1507797543.930892299 30 ctime=1508162367.149856309 eztrace-1.1-7/extlib/gtg/extlib/otf/docu/doxygen.conf0000644000175000017500000011146212544237152023435 0ustar00trahaytrahay00000000000000# Doxyfile 1.2.15 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # General configuration options #--------------------------------------------------------------------------- # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = "Open Trace Format API" # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = doxygen # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Brazilian, Chinese, Croatian, Czech, Danish, Dutch, Finnish, French, # German, Greek, Hungarian, Italian, Japanese, Korean, Norwegian, Polish, # Portuguese, Romanian, Russian, Slovak, Slovene, Spanish and Swedish. OUTPUT_LANGUAGE = English # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = NO # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these class will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited # members of a class in the documentation of that class as if those members were # ordinary class members. Constructors, destructors and assignment operators of # the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = NO # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. It is allowed to use relative paths in the argument list. STRIP_FROM_PATH = # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower case letters. If set to YES upper case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # users are adviced to set this option to NO. CASE_SENSE_NAMES = YES # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like the Qt-style comments (thus requiring an # explict @brief command for a brief description. JAVADOC_AUTOBRIEF = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # reimplements. INHERIT_DOCS = YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = NO # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 4 # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consist of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. # For instance some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources # only. Doxygen will then generate output that is more tailored for Java. # For instance namespaces will be presented as packages, qualified scopes # will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = ../otflib/OTF_Reader.h \ ../otflib/OTF_RStream.h \ ../otflib/OTF_Writer.h \ ../otflib/OTF_WStream.h \ ../otflib/OTF_HandlerArray.h \ ../otflib/OTF_MasterControl.h \ ../otflib/OTF_FileManager.h \ ../otflib/otf.h \ ../otflib/ # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp # *.h++ *.idl *.odl FILE_PATTERNS = *.h # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories # that are symbolic links (a Unix filesystem feature) are excluded from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. EXCLUDE_PATTERNS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. INPUT_FILTER = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse. FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # If the REFERENCED_BY_RELATION tag is set to YES (the default) # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES (the default) # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet HTML_STYLESHEET = # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compressed HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the Html help documentation and to the tree view. TOC_EXPAND = NO # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be # generated containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript and frames is required (for instance Mozilla, Netscape 4.0+, # or Internet explorer 4.0+). Note that for large projects the tree generation # can take a very long time. In such cases it is better to disable this feature. # Windows users are probably better off using the HTML help feature. GENERATE_TREEVIEW = NO # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = YES # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = YES # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = YES # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = YES # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimised for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = YES # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assigments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_XML = NO #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_PREDEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line and do not end with a semicolon. Such function macros are typically # used for boiler-plate code, and will confuse the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::addtions related to external references #--------------------------------------------------------------------------- # The TAGFILES tag can be used to specify one or more tagfiles. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in Html, RTF and LaTeX) for classes with base or # super classes. Setting the tag to NO turns the diagrams off. Note that this # option is superceded by the HAVE_DOT option below. This is only a fallback. It is # recommended to install and use dot, since it yield more powerful graphs. CLASS_DIAGRAMS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = NO # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = YES # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found on the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_WIDTH = 1024 # The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_HEIGHT = 1024 # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermedate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::addtions related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO # The CGI_NAME tag should be the name of the CGI script that # starts the search engine (doxysearch) with the correct parameters. # A script with this name will be generated by doxygen. CGI_NAME = search.cgi # The CGI_URL tag should be the absolute URL to the directory where the # cgi binaries are located. See the documentation of your http daemon for # details. CGI_URL = # The DOC_URL tag should be the absolute URL to the directory where the # documentation is located. If left blank the absolute path to the # documentation, with file:// prepended to it, will be used. DOC_URL = # The DOC_ABSPATH tag should be the absolute path to the directory where the # documentation is located. If left blank the directory on the local machine # will be used. DOC_ABSPATH = # The BIN_ABSPATH tag must point to the directory where the doxysearch binary # is installed. BIN_ABSPATH = /usr/local/bin/ # The EXT_DOC_PATHS tag can be used to specify one or more paths to # documentation generated for other projects. This allows doxysearch to search # the documentation for these projects as well. EXT_DOC_PATHS = eztrace-1.1-7/extlib/gtg/extlib/otf/docu/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212544237152021751 xustar0030 mtime=1435582058.523899952 30 atime=1508162197.568228884 30 ctime=1508162367.137855261 eztrace-1.1-7/extlib/gtg/extlib/otf/docu/Makefile.am0000644000175000017500000000036312544237152023142 0ustar00trahaytrahay00000000000000otfdoc_DATA = \ $(top_srcdir)/ChangeLog \ $(top_srcdir)/LICENSE \ api/specification.pdf \ tools/otftools.pdf \ tools/otfprofile.pdf \ tools/otfprofile_clustering.pdf otfdocdir = $(docdir) EXTRA_DIST = \ $(otfdoc_DATA) \ doxygen.conf eztrace-1.1-7/extlib/gtg/extlib/otf/docu/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135225021755 xustar0030 mtime=1508162197.580229718 30 atime=1508162279.978486734 30 ctime=1508162367.137855261 eztrace-1.1-7/extlib/gtg/extlib/otf/docu/Makefile.in0000644000175000017500000004063213171135225023151 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = docu ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/m4/libtool.m4 \ $(top_srcdir)/config/m4/ltoptions.m4 \ $(top_srcdir)/config/m4/ltsugar.m4 \ $(top_srcdir)/config/m4/ltversion.m4 \ $(top_srcdir)/config/m4/lt~obsolete.m4 \ $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/config/m4/acinclude.debug.m4 \ $(top_srcdir)/config/m4/acinclude.math.m4 \ $(top_srcdir)/config/m4/acinclude.mpi.m4 \ $(top_srcdir)/config/m4/acinclude.omp.m4 \ $(top_srcdir)/config/m4/acinclude.pdflatex_pgfplots.m4 \ $(top_srcdir)/config/m4/acinclude.swig_python.m4 \ $(top_srcdir)/config/m4/acinclude.vtf3.m4 \ $(top_srcdir)/config/m4/acinclude.verbose.m4 \ $(top_srcdir)/config/m4/acinclude.zlib.m4 \ $(top_srcdir)/config/m4/acinclude.zoidfs.m4 \ $(top_srcdir)/config/m4/acarchive/ax_mpi.m4 \ $(top_srcdir)/config/m4/acarchive/ax_openmp.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(otfdocdir)" DATA = $(otfdoc_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BMI_INCLUDE_DIR = @BMI_INCLUDE_DIR@ BMI_LIB_DIR = @BMI_LIB_DIR@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLOCK_GETTIME_LIB = @CLOCK_GETTIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHLIB = @MATHLIB@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICFLAGS = @MPICFLAGS@ MPICXX = @MPICXX@ MPICXXFLAGS = @MPICXXFLAGS@ MPILIBS = @MPILIBS@ MPI_INCLUDE_DIR = @MPI_INCLUDE_DIR@ MPI_INCLUDE_LINE = @MPI_INCLUDE_LINE@ MPI_LIB_DIR = @MPI_LIB_DIR@ MPI_LIB_LINE = @MPI_LIB_LINE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENMP_CXXFLAGS = @OPENMP_CXXFLAGS@ OTF_VERSION_LIBRARY = @OTF_VERSION_LIBRARY@ OTF_VERSION_MAJOR = @OTF_VERSION_MAJOR@ OTF_VERSION_MINOR = @OTF_VERSION_MINOR@ OTF_VERSION_STRING = @OTF_VERSION_STRING@ OTF_VERSION_SUB = @OTF_VERSION_SUB@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFTEX = @PDFTEX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWIG = @SWIG@ SWIG_PYTHON_CFLAGS = @SWIG_PYTHON_CFLAGS@ SWIG_PYTHON_OPTS = @SWIG_PYTHON_OPTS@ VERSION = @VERSION@ VTF3_INCLUDE_DIR = @VTF3_INCLUDE_DIR@ VTF3_INCLUDE_LINE = @VTF3_INCLUDE_LINE@ VTF3_LIB_DIR = @VTF3_LIB_DIR@ VTF3_LIB_LINE = @VTF3_LIB_LINE@ ZLIB_INCLUDE_DIR = @ZLIB_INCLUDE_DIR@ ZLIB_INCLUDE_LINE = @ZLIB_INCLUDE_LINE@ ZLIB_LIB_DIR = @ZLIB_LIB_DIR@ ZLIB_LIB_LINE = @ZLIB_LIB_LINE@ ZOIDFS_INCLUDE_DIR = @ZOIDFS_INCLUDE_DIR@ ZOIDFS_INCLUDE_LINE = @ZOIDFS_INCLUDE_LINE@ ZOIDFS_LIB_DIR = @ZOIDFS_LIB_DIR@ ZOIDFS_LIB_LINE = @ZOIDFS_LIB_LINE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_inttypes_h = @have_inttypes_h@ have_stdint_h = @have_stdint_h@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ python_config = @python_config@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sizeof_long = @sizeof_long@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ otfdoc_DATA = \ $(top_srcdir)/ChangeLog \ $(top_srcdir)/LICENSE \ api/specification.pdf \ tools/otftools.pdf \ tools/otfprofile.pdf \ tools/otfprofile_clustering.pdf otfdocdir = $(docdir) EXTRA_DIST = \ $(otfdoc_DATA) \ doxygen.conf all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docu/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign docu/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-otfdocDATA: $(otfdoc_DATA) @$(NORMAL_INSTALL) @list='$(otfdoc_DATA)'; test -n "$(otfdocdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(otfdocdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(otfdocdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(otfdocdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(otfdocdir)" || exit $$?; \ done uninstall-otfdocDATA: @$(NORMAL_UNINSTALL) @list='$(otfdoc_DATA)'; test -n "$(otfdocdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(otfdocdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(otfdocdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-otfdocDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-otfdocDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-otfdocDATA install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags-am uninstall uninstall-am uninstall-otfdocDATA .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/gtg/extlib/otf/docu/PaxHeaders.7332/tools0000644000000000000000000000013213171135477021004 xustar0030 mtime=1508162367.145855959 30 atime=1508162367.741908015 30 ctime=1508162367.145855959 eztrace-1.1-7/extlib/gtg/extlib/otf/docu/tools/0000755000175000017500000000000013171135477022250 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/otf/docu/tools/PaxHeaders.7332/otftools.pdf0000644000000000000000000000013112544237152023420 xustar0030 mtime=1435582058.531899952 30 atime=1508138917.932968263 29 ctime=1508162367.14185561 eztrace-1.1-7/extlib/gtg/extlib/otf/docu/tools/otftools.pdf0000644000175000017500000032220312544237152024612 0ustar00trahaytrahay00000000000000%PDF-1.4 % 3 0 obj << /Length 929 /Filter /FlateDecode >> stream xڭVQ6~_#HYm Kޒ(WJAJ>xY6s<] >؞f<}~={4 r//=i&K"19#?v#_$Y 6`!IZSNS,Rvh"!%<$$MOc~Q ǡ0V$8#oyI^`J5q۸uw?ՇN@#90%hTq6p~h[u.,L22gA1]cFK Hq%F]鿣|-w>܂tGyHrPV6/Ul.v2t=MX aRcmp k j8OnšopѶ`áW 6q|Ze߯2NIȒBѹN:q=T#WrЅFhvZGLT:v DY6S-Ma^~nUD 5[ǙRIPYI_-')?~|˭}Uu |]jjWo!wrS˄htV(tAm`lT9[@Ϗ> endobj 1 0 obj << /Font << /F28 4 0 R /F30 5 0 R /F33 6 0 R >> /ProcSet [ /PDF /Text ] >> endobj 10 0 obj << /Length 1605 /Filter /FlateDecode >> stream xڕX͎6)ܛ D EiQȡFzHre&*KHfᐲhbCr8 n{WنLaq2_*cB~)ᬇuƓ^(WY*T mߞ.w|?5U\߷TTyRm*y8Bt/c2Ҷz䫱tG:adP7DdTӶ95`+x4㲄A\lsT28OѬt}fWș9gDen"%+jř w\tc>s.%kW$Q?hݮ$ H  tϸ[d^v RMψ@U;n0M  8UO_0L44n~!+6R ؀Cz,ߩ,j}@/_K\UQ"zl|+^q@}vO]`cGj[Gt_ens`{1.&WLwUW'f]}@ʮN l&($M( -lM?mPf0g}<.ԕ@9cDyDߙc-"K*9vѱae 9'jINI@NjHBӅJޔ)IϾ k?YxvC~ (KFiKlvxUGx T'Bxn xX^q[&"Ya]:0r( !qb2Tc6ӨLmAްM;uHpƣ2)@ 釵] _G$֡){j$RIQCB>q QHY'+oPR +Y̔J +s9鹞ZPB^/1K`yloNSQދ8r;u8(AmʠUa;?B^<(YYg?u:\ a&I/iп%r&A!VkuW`BNc4 eň\:݈zK.'.X|wޮӼsGzC,&@Μh'ݢ]bS5W\qPXB|d@B0-mo*Q0b' ڴԟ$PgI5,>60CZ7bL ml7- 'a2#p_/M endstream endobj 9 0 obj << /Type /Page /Contents 10 0 R /Resources 8 0 R /MediaBox [0 0 612 792] /Parent 7 0 R >> endobj 8 0 obj << /Font << /F30 5 0 R /F28 4 0 R /F34 11 0 R /F33 6 0 R >> /ProcSet [ /PDF /Text ] >> endobj 14 0 obj << /Length 1891 /Filter /FlateDecode >> stream xڵXK6 W̭3@J;M{) 䐽%9xl팱c7__Ri4WVkcMH+ew3b機'.1I$AE˳ir?tI^Gߜ/y6rVGfYNmE[m hFs}S1Hۣ [8ե;|}|lkO9Dln?4rRUaQ(dD *Mu1P!"Sb#+f"40(J !Fz_i'󗺩n2øcxn*A=²EibȔztDa1n N L-33.]URJ87j&gC,AAV&[T,&04|[x$Т֘v mCx+Ω iٌkHSZPG, ^YO/|$ץD;ףS}EԄS(=*V;0@1)NfVaA샕,-˲]}K͌=Z?@`%ۀNnں& ,dʊKUH:8m˩<BFV0̴r1Rp,֊Zb2>bt eݱ|9Z؆<.^x+e3 !: a"#enKhoiKO8![4ۿW= T43R-R?~QH4VsG4)A=\A]NF@&:z՟56n>*m<|]8IlxDϾ[o4F*tOtLָTVMw۶`p2'![LUcJ{:jaiѝ=SޔC`BqCUW4e*ND^( 8WuxHGX se[4\R{"VJg9m-Uf8D$n0ARCpzd1PL ~:PrjHxP|AO}ZVA]XjDr( FdX{q#U]|?<{̠ ,x ZPz5@1$Vή[DΨA'ۂZ,梘K>ȅ[I.O,$yChQ G:"$#i oM]Q8,I0TzF"FC*.dτ̗+^Vh@.y!$oz Yj w3'Hy?(WOqt8@(sK}Ũ񙖷_Ћ!F-*1C'e(#HtJA Пe'3av4(p`xk8}pȥr8*qcNu.u]:0j 1N> endobj 12 0 obj << /Font << /F33 6 0 R /F30 5 0 R /F28 4 0 R /F37 15 0 R /F38 16 0 R /F15 17 0 R /F40 18 0 R >> /ProcSet [ /PDF /Text ] >> endobj 21 0 obj << /Length 1087 /Filter /FlateDecode >> stream xڝVK6ϯۀ4 ``hyȺ}x,q42ʈAxc#7m=#>um?bj#yK8zU;,y=ʡeĸa}V#m6z1ِdHcM-1ϒ"z_ez wK|OH_s{{lܖ]`3@kA6ԼjYtCuhQpl0͡m`Zե 6֬ldDc``$sZO]t坤ciB}Kl|K׼\7)/vg%ɗ0'?~3־K_?_LO endstream endobj 20 0 obj << /Type /Page /Contents 21 0 R /Resources 19 0 R /MediaBox [0 0 612 792] /Parent 7 0 R >> endobj 19 0 obj << /Font << /F28 4 0 R /F33 6 0 R >> /ProcSet [ /PDF /Text ] >> endobj 24 0 obj << /Length 1248 /Filter /FlateDecode >> stream xڍV_o6 Ȟjfban8\.a$rͶ [i}āIE#ş67?<*X|)WQǫ,Xkz`D?VJ~a~D]v{D|y70d %IFG-t=z7`Qł`zY^DPO7 {12 O`sU @܉.K88uj<'hDFI w ݰOg7=ٞHUjA@.TԃjVvZi03F Щ3a5a}7^wlr Zvu(z`1uk/d'|VPc_iL^k0$[,4묘jt">;(ߩGN<_< $z5xL0 1wr1vE*iu%L`P nwH|sӺ'bKqT|ъA1:৞F넭s_.47Ɉ+xPYWU|i>[ް!t]ҏ&'2 Zm#?]hXz}OuFTR:@G-ÕyCn%V8I տ 3RCWU"R1?-}LHu3hL wM',;$}=Az@r3OT}3mwcڲM>4%ej074*;7QRnq #bPc7;5L!荮\_g}p8قtF꾃[ xsCݱUyY٥ ^g{ҋi*4+}zq `d'Eɛ_67EoY endstream endobj 23 0 obj << /Type /Page /Contents 24 0 R /Resources 22 0 R /MediaBox [0 0 612 792] /Parent 7 0 R >> endobj 22 0 obj << /Font << /F33 6 0 R /F30 5 0 R /F28 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 27 0 obj << /Length 1031 /Filter /FlateDecode >> stream xڅVK8 ^1jѶ{ii'=́I!8~) {r.a^ l%%w֥Fpb2.Sg]8\ ph>y~4t jRVu]/'p0bQJި8tޮ¨;h `x5ب< uKݢU}_5ѭUyR1Yw58>>h-[uCݣ.q'^&협UM_~73,ѰzlW ?At NVeפHd̍9KfcvkۡY(zݨ.;F5J'|Ň%jL fsj  &p„PF``Q?Yh]%?%ydF:"3'#S9*ZB.2$u8r7Y !~mA[mtgA6ke(=ydj4~i?Yzͪ0 z S2~V > .顇߃ כlOUCaklVn7pً!ٳؤ0lnbt<)],Y_&,7 K45sS HR5/(~dPt>q1a2ܭ2LV BLې(ȭ.$ &|[J(M@iѬuMt\EȒ(t(a)_8| LO'ئf:=KB1LANٖtE}}k#u}c ߄ -X61DgX_.u6 Y~GrꃈO &Km.f#_ZNQ(lҴ%ᥭo)T> endobj 25 0 obj << /Font << /F33 6 0 R /F30 5 0 R /F28 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 30 0 obj << /Length 863 /Filter /FlateDecode >> stream xڍV= WfE2"Mx\HrU }vy,{x%$\N;5A{V@izoRX 8S?QʑIC[,ʌf$s#@W_`0Z.)JAysȱ:\FrΔA~"D:F;OGFkwilPbҫRHH,WB\JX|$(ŜR, ;~=M yh7rn ܠ- 5 s]T$4X,mՋ|bV;v7R͡B9Tth=eZ F֙P|Uk۶)ER7j#%Y bWQlU֟D{9{6.OVr@Kpzux95t?].*xѷVܖѤgsoBeS U؁7Ae@y]f{;)~ZO@9X{BB/XnVf4JezCWբC)M!\[wk! eY%^3YMVHvdBmA=o[bn6A!̢o#rsO`Jf#&sxYN|Sf3]\*jZnW[A ?i8ғxQԕqh%[CGٕ7&ts0OPl`#憻(}?l?B5|{ } endstream endobj 29 0 obj << /Type /Page /Contents 30 0 R /Resources 28 0 R /MediaBox [0 0 612 792] /Parent 31 0 R >> endobj 28 0 obj << /Font << /F30 5 0 R /F28 4 0 R /F33 6 0 R >> /ProcSet [ /PDF /Text ] >> endobj 34 0 obj << /Length 808 /Filter /FlateDecode >> stream xڝUMo0 Wd4K.ue@fˉ[2,k(Kv4iL[3H}X]E!H)4Hi*_t*Ȩ-z 81!`pD+Di.n{g,%yZس̣vH}l6>U=@s0}Ǒܵym@-toI[T⠾k!Jjq?$G9 aA]ܛ$$Ͽ>v ‰(N o]h rU{l\7Tλ #Z_ eIΫ/Fmg򦇮<Àd$) PJ0.% SGcYC͈>?B<v4:%I5֪o{bFşϡӢPᜒUSŭ(&ή8#Y;Jo|i I#?O^t3{ Sںi&ou38ضѓEMegkT ck@jXR> endobj 32 0 obj << /Font << /F33 6 0 R /F30 5 0 R /F28 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 37 0 obj << /Length 854 /Filter /FlateDecode >> stream xڵVn0 +|Zd9a С@ amJ˰׏|P$"H_Wd(IYSe,4 1TzRt=/_h4&qBQ2M+I^"6%܃QIX{WT i*5[̆7R[{.VZʺԼ;E<Ʈp12^ZϗB {ț@$ CMl2rWFJG1MqQ5$sHRp!+i,ESW"`vy(ԋP02wxt7z Xtw=+_GU  pej;JP&..e aiOLt!{lh[>܏w= OyM#"~+2I> XRGpJ7.}=Xcg@ժܯETs]"B|L(p,fYEWB!ap[VwQV55Ҍ|W~;s)Z1H&fp@B< q}8t]odUݬX~Z$TQ<W&vpa0r^CRR-U xŝ4.ƾo~Iy/eak { ZxOv&ktW` TwThTNv+W?&].y!LK9&7?e endstream endobj 36 0 obj << /Type /Page /Contents 37 0 R /Resources 35 0 R /MediaBox [0 0 612 792] /Parent 31 0 R >> endobj 35 0 obj << /Font << /F30 5 0 R /F28 4 0 R /F33 6 0 R >> /ProcSet [ /PDF /Text ] >> endobj 40 0 obj << /Length 862 /Filter /FlateDecode >> stream xڭV[o0~౑j t*u[KjҢiRLb`jC/Č=)>9|7ӫ<0-HҲ}7JfWt8\x4Gdʤ߻X%~CԶ[r ՅmF.#Sғ̬>j(}.W0m866'!S,[x"^rǫb3G*ޅZ<@dCdm-?鍳f{ֈBig NPYјY8clp"yzD;p7UyߙRup/Tnϝ^d 2;;+%»&oGD!73o!X91aPӿf?:jIpL](%gfRbGY+Kgy$:Yj7_AQ!~oy8[/&1LC.0éǒ{T֒Ǿ+N{&|KtY\07* endstream endobj 39 0 obj << /Type /Page /Contents 40 0 R /Resources 38 0 R /MediaBox [0 0 612 792] /Parent 31 0 R >> endobj 38 0 obj << /Font << /F33 6 0 R /F28 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 43 0 obj << /Length 845 /Filter /FlateDecode >> stream xڝVn0}W>%R`.TUҕVRj.-1,6I_A%mO`f|f||O* ='/XB?X:A/$sf9XncI4掊2c3\pj|w\r& [ ZSY5fR\Ƣ8 wC7#9nKqn1_ua`2kА&̐&\מ|n7MlzQH "Qx\i&K>WÛQ A ҪX{tXLѲ֊d=';1;DaW+roҷ!Xb,n6])˫fՑM nX `$ yjo$Ys> [Q0Gof@xP8!UQ|:%%#Qj |,=x1W{2Ґ?-m:,=o]\Hnm8}cKއ_"L]B|U+eGxM #b!/u^4TTwAP(u%W eOߋ`IAl@rdxU%mT6 #s/RI{QG[Ԇj%W\L,IJU78 SX6?Z9 `q]\"kVF# NUr$Oe#1Q45v5/MJEgV4v>'`@stV 8]AZ9P[TG|VF?s 2~veb1*CѼnjc+ʡˠl.J`XPQFݟr59Ǒ endstream endobj 42 0 obj << /Type /Page /Contents 43 0 R /Resources 41 0 R /MediaBox [0 0 612 792] /Parent 31 0 R >> endobj 41 0 obj << /Font << /F33 6 0 R /F30 5 0 R /F28 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 46 0 obj << /Length 890 /Filter /FlateDecode >> stream xڅVM:ϯ@d"H5EEOzMp$Va#+>{ӗ$ 4E v.إ4e#NTMGK 7?_1آD-`gXk*j\b,Rem "2Ri?^7;&= 0_K@y&fQ=!2mE alE(^߫eehB: RRv2/UǛ:)B 䉼u_%6N2^q8|L\Gڎ$VI1im#7e]:IQۙg|!;XWc{5-=_H:ٌoDa]mB /GUϼovnT5.E&ş"OBpTuJ &50H UWR Noavr*RxՖ 1 .NC i=e7V`cC3ܙBcOi{9kZٰ@>P=2O.0wݙ1?΄SY!67zAJݫ;`L23 AXA#7gP>m "/ H2e.M3+vP S^vOy",X+-7q;\]M/h]69ЇBFoOnWPuarԜK5dd \g8FU ww5ڥiP#0WjPkS?6}Z endstream endobj 45 0 obj << /Type /Page /Contents 46 0 R /Resources 44 0 R /MediaBox [0 0 612 792] /Parent 31 0 R >> endobj 44 0 obj << /Font << /F33 6 0 R /F30 5 0 R /F28 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 49 0 obj << /Length 339 /Filter /FlateDecode >> stream xڕR=O0+26N4T,, 0Drv ?'R)޽]XmKɮ&U3YR"+IH3m!$ TDګ/jSDy\k sb/'IM)Ek:SxҺbY}"^f;io:%[k%$K08eQ<qq;ќs2 x* 3:{P!1c/>_ 1ۀ˩e#7@$8-_MgQc5{N)LJQwzHBkϋVQs,,e856RA endstream endobj 48 0 obj << /Type /Page /Contents 49 0 R /Resources 47 0 R /MediaBox [0 0 612 792] /Parent 50 0 R >> endobj 47 0 obj << /Font << /F33 6 0 R /F28 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 51 0 obj [777.8] endobj 52 0 obj [272 272 272 761.6 462.4 462.4 761.6 734 693.4 707.2 747.8 666.2 639 768.3 734 353.2 503 761.2 611.8 897.2 734 761.6 666.2 761.6 720.6 544 707.2 734 734 1006 734 734 598.4 272 489.6 272] endobj 53 0 obj [564.4 454.5] endobj 54 0 obj [272 761.6 489.6 761.6 489.6 516.9 734 743.9 700.5 813 724.8 633.8 772.4 811.3 431.9 541.2 833 666.2 947.3 784.1 748.3 631.1 775.5 745.3 602.2 573.9 665 570.8 924.4 812.6 568.1 670.2 380.8 380.8 380.8 979.2 979.2 410.9 514 416.3] endobj 56 0 obj [600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] endobj 57 0 obj [600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] endobj 58 0 obj [556 556 167 333 667 278 333 333 0 333 570 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 250 333 555 500 500 1000 833 333 333 333 500 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 930 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778 611 778 722 556 667 722 722 1000 722 722 667 333 278 333 581 500 333 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 389 333 556 500 722 500] endobj 59 0 obj [556 556 167 333 611 278 333 333 0 333 564 0 611 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 180 250 333 408 500 500 833 778 333 333 333 500 564 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444 921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500 333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 0 0 0 333 500 444 1000 500 500 333 1000 556 333 889 0 0 0 0 0 0 444 444 350 500 1000 333 980 389 333 722 0 0 722 0 333 500 500 500 500 200 500 333 760 276 500 564 333 760 333 400 564 300 300 333 500 453 250 333 300 310 500 750 750 750 444 722 722 722 722 722 722 889 667 611 611 611 611 333 333 333 333 722 722 722 722 722 722 722 564 722 722 722 722 722 722 556 500 444 444 444 444 444 444 667 444 444 444 444 444 278 278 278 278 500 500 500 500 500 500 500 564 500 500 500 500 500] endobj 60 0 obj << /Length1 1478 /Length2 7753 /Length3 0 /Length 8751 /Filter /FlateDecode >> stream xڍtTk/RJ4) !0 34H#! %%Ht] ‡{޻ֽkϳ{.!9yxrʼ|~.>&&=(9 wp@w]Vu. F0ܝ]+WTTw8@au lWAP0_)X$lH1nnWWW.= dB60 ڃ@a@tHWp0]3 UVh:a9s9^.+;0w( ځj\H7$C.@w@6x> Dp!v0rJsw 0+9=DOݻ;ᾄ]aKP/V03XYϝ ȆW=wo#/oOj D]3- $ p~[% 0ṣ/?';Yav1.1N>A/@{a ҧ7 ])D3|CX>etwT[I۬$nN>)\vMg+KkUBYdfC_I̒$SM-yR;\T13oT }0!q/~o:WOs(!HMɩg0#)bZ^[q#&-hr<wIU쀘rF<&e!LcD3aކeC&JTKƌ-`&$Sϸ8fes*:ynU#2^,]bJC}@|$sjj:*Y|-OCoUibGo ́žUe)R61μ=c2Š>.%r0/M_oT?i~ٷE{}7'87耨 J b=?7W% bcm3+,v|}0H}YLߞcgYǀNU1pӉ%!_!/_bi4 >2Y0pHBR` ޲ YQw p2՘=oJWbUޖh0Xux+\9:L~?bs-@P%XL|7yDI32JF;‡ZX-OJ*.GJd$zo1xu6OIyqkSG jsSmԻ'i:m;&bY| > ^›q:m ߪI0^ A _6۲e׃jNEgvi+Ȓ|P,+bXߦ쑬2#jx>pS`uJQ`(|>LZ#>̴@ݦ]{VyE"xgƅjQM y[~i>c$%؋qYԲzNh/M;s&*NUvA1wX-)Y9+{^bII>.w} *d$b4Z $f|qi]`V/b]gJ:촐Hp x=߬ Rc}`V=8hfF~ksew:m‹dTqڰ fl b܌Ӣ\.*ooCtz/o>gR-7&^MH?#J.P}bD Wp}0/Td黭R­Zɬwė*R+ #q^QnL_J>ȥ[z IWA,1&Ǝ^+jby1uiO<UY5bpC BOS906/}wux-T׃' 㯩OUTR}%8~.w^lz-]Ya5[l=h2GZ/T-b3M+ܸ2Qeb FSc0j~YDޞ~j]Ǯ(͗MQ]mO-Us3GA<)63-uY7Mt7X4Pk>5~Bz9R? bjK|sDUE8$Ls3*6Qdwi;@J0KɸOk`MS Z>睟nu"ԯ-˨ZF i%4ņi/B%DXrCF| {qkn}32i9(S'yq?t뾨Ql0dNV=x@Z eXT~6D{e)9\ˍ.n6փ.rQGK,PM!]-ׄR-~dp훮fo4T:tR>Y?ڬU8,zO]ʣБLE 6ZG*j essdD˘'@lZl|)!39+CnE`x>;ABv~b01.X8,pD{V8ׄvLc{umnRG$iEU= %q. s{%^KD3 ElU.cbԒgQh03aRhrm햖l} P:VY)ꙡx?iyJI%OTV$<>7k B$7!^}=,{}a[G!AիGqiƻO#thǙdN8øZ@X/2I[sQL-'!7ѸԐmЌmojEwq9ӄr}R~bYuW9_c(_3/e yojΗG[^XT@IWR]M6t)ժ"֡]B6ݾOpNT^WJQV }ⲯ#%_֤tvKC?/o"w<& 19iٓfǔ AQpK jXǑGe]y_\vyj#$MN޼64w{M%yf@4{Iz}8-R]rd\¨jm(W2x3ʻ)ߐ07* 1zkQI.x'Ca"N-ӳJqyoGEN(?9講1"P~L6|Zxߎ -c.a-O\7螔ukiTa,k~KY6n Zɰ2VrK)x@$3m`>Hڄ~~JhJ"`5ZNԿ I֝uW4kS^]"ͫq#>)41 Pk#sW+ g Med\轥%8}ɡ>Ek݂?$w[)efvF Z9g[Ty| vx?,[B#.%4#I0]oM'Z5؉7Tcݒ]cYaFDH^56EXhpp^#//[ c΀r *>P5(GT*ዬu;SᨇcpN@L_kNY0}\]eW31d*DDLN6(-o1mһXXݰo|qyZy9iwZU҄ggdWWa&3?tGon ƮlrZ,f5x}0wR5|S(*(V&7~ DK)݌̝86=~}hO n,l]螟Y[ dj3= #(H홿G.|D%f樂^e'H@_2've1&>4q Ûwj-,=zRCl'вx.Mnt(QOW,IHjI1&eׅ,7^ lսYOyVm69R'rhYvE<\Wfа YKS*.Qk6.ޢY(|i7 \b;\/LG|]%"^hguD˫R;ro+MImp[sLe[sW5?~zh=w}*0|N&&q>gƷK1NqbRo.Ϭ/b(kvHzKb>32W mYs!DoosOcM mj KIʟ7==P-r@}@wӱ}oG;r !͎dt *K7Bo<޺r̀k?dag\keMRҙ~SgXNjt1 /^\#LKad |u>W(LtJo3\(Q2 "dNG[.ڮ Jԏ_^maU!p\vffk NW%y |H XL^"({_L>!ʋgJ;rјEz" GNޜj8`W-Z$p m$Qs^Aja GQao~"PmkH?w3+TF RP{+eg@Ebw Z1͐Yi`HHnu7ިQt}Vm+|S-\R ϘZAՙ7^ʈnr`CZkcƴE5pC;;=\=o{> §V-V0ŜOeo T>c!WKt9l/]J_k|6sJjpqՒVv-pnP~^s2:f(u`>s "8t%5aɶU\ݚ}f&(8' ܽW`9ȗcb 5V/y@K\D0U+Vi$Ke*qRU:_fe]mh-Ҷ%u)Axv-UuaO fv#8 v'X= SghgQ?A_C/Lbq!|rBlYW&c؞5(N{Ea1u[JL1&ggՄǑ>pKĪ7ϛ%M0w Cw$_h6ҙ;e!XtFH9K=XZu>ܶ,8)u '>y<jbb=r!;Ur46qxͥ눝nX\@ R{j[D'45z1ɀ|\g0Z5oLyf7uL:+?TzjR;trE=kŀWG&r'G\uB$O{V?޴ܜKa_}ڐ853:1[ ѫA1RMK̨UEVlXFa}كNHM.8 f<(@⒴#-(kXxsPkUW~1r}i$NURb7B Zu"ݞH2g.TUczi7 -r=r# }3)03%0G!߫ 69|]^:jC>z4hhZ̷br. i3#s7q, x&ibi5{)@Q2??쵱Àv'ȉlnf/hy4&3QBgL.+ͧ]]|zl""t@lw[#5{S{rkI8YuG߽VU9 x1;1e)zcgRkW%4ښ"NOCKgj!2aW9:R -WٛU4ROb56p(@ =LRKt [y#+@udd^o>-:1\8{=o.Df[{D> endobj 62 0 obj << /Length1 1421 /Length2 6319 /Length3 0 /Length 7290 /Filter /FlateDecode >> stream xڍt 4d2ƾ`ٗ[l0f0c=l٢PDE,.K}=ss_uYu m1 HZZj",w8/5EbВA uJpO QTJB$!@& (=A#d`E/b|yg83 `lRpI;p.pg^D}恰~Έ?]$c!Aw-  4>௻+W"$w0G{#tT4p^8>Ga1x[~wT8_6nHVD(+ Ѷgg%՟ avo?uBc<Ѿ vH/.h;BM/= b@x8J#uvxG担{ ;-A-X#h?2~nH/>=(O/[  jA ` B1isՅ#jOF5g {\ 7<?7 6{~߈+ݐ; H_x.{o]!V5h{<"?z$V酰El0Ykh. `cc;=_2eCmB0Q&/_(~om^  18|a~YB RAҿظ |˿ aC61 s|pX%ɿIx3XS%\\I26caΗ[5"TVoY'_N=`bxM/MEĭ@9}dO*b ڍUٚ7$Xw]q;'.ęEkgiH7%yVR~Ꜣjcn VYRdR!4*v[ⱞIkJx@+US &)1;!l]A"LP05T<=w->VzZE?Xd l"Js=W6Yv`@AcF)<(M~5 UhWN{vFcp ~[DT3}ۊœ$]iJ#%= n/[t!Bn5K$ yY*G33ԘO9vc,Ԡz'ʊy\r}=d1ի6f(qW A?7{iC*&O VTQhEb~V! ,eE)V=+|nKMbԴ-O=0KN*N=MXKG3T2$S14r>/I牥IoNt%jNrA ;Sv}5{0Vm$MdaOv/Eװk_ vs^=)gPU~4| Q%*9  ]˫.=ks &WGX!a؋y!5Kk| X/2 y cPn[ל8X-V iyuoRFO?޻qcnT\G9=qPėzܼqS7]OuZ7%wvu wkSvv% Js#ǒۘnV`VCi&(8??*]N̞pN;?5{{KcIŃ&PudJʭ?SOyO?n4Ζv};1K$w3681ew^QmםA1aW|ӐD>tdtG/=R֨\GQO^9Վ)Ԟȑޠ[YuN:OT%˃)]_Iǯm}gb0vTOiQ&~Iޖ4$b7GIM~A_T:dek:KH$R>0 {:tvOҧa5Z&Zg-$yQNM랫_ 46_ZamZDcsK(S\=[NW.gD}Zyۏ$ ۅJ扚'r#j^ Jo251(2wlA;QSx&QxBueURL z78>^i,&cD \w*5Q3k-l8C+3ψ:;^͂D0<{4O^XIUi|dH_m6ī^BLzC[=[Wӵ#$ix#{ѩx7thgsy֪zN YyizGo*b'=l.{ަ8 b Қsl꫋ȘbLw_̎4*.%ˈt)"g9';mRܯ/9+ !hy[~@ύCqUO:'jV|[&[mB4~_#S45QWZ{"$6!箄 گ.7͏'_j~y!+l,RΟgjK:m(>}xY[jEB [ITߨNh5/_-VB;[sɅ%{B&UOj~Z)'j[y/Ikl2.MqY# MF-_Ͳ'|r`+]1Sɋ\t3P~{5$WYqҽ*/""{S/}Nay$ V_ju^%xs| lywL˼};ȣ(*`0NzՂeɡeϷ6R֪M;^]krt:"bz`K3M/ZX53++yK/TS.0Y[=[G Cu`S Di'ܛIWwDxcIp#8T12"¯9I<_k1%NUW%OL Qe[ܳM +z.b! Q<}"PD{o[Uޡ1z~[{Ȼ-*+aTɐι1Fdؙ}g0JJfi̠$2J/c?2h𺬼a҂;K̴* o5{70c}D&rv%m? gI$dV< xs0nI1y/2Z߇#$bnp# %*I/Y9MՅ!u3Ev0RO2д`j>.ft`}2_2T72`M[a Z`m˛mLeU!o1?&9E`bc]6Iɽ!OO8`ߍXb$ CN]-W쬉yW!^kµQ9R_`3Xzs5%`qE*w ݼez0riޮeԍotіe.~gEC ta)#$ ͸>Iؓqޥ?g +3ձY%+\̩2XOVRY$o~=2qr]R}c-jT uģxeWXE/{nobNz)ʆʬfub:AP' L(";OFTldiº Ү:<!"+"lNy8zwG"/\gUՉj(%oTdڙ JP3в JtsO|.mhTA# Rű]WLVci8'J60+9uJtf5Fֵk W~#L&F;U`r 1]r.!?K8Jkv+\'Fi!pev ?ngq&ޫGVw /jSҦO#dt}Q{ӭ]$x/*h7y1Z;[i4}::aEOgqfT< ^ф@O{A;Z%06+T [Vfy¡k6P2?-׹7-teۿDї"Viu K֨P|1N`{@tz(2ŢxRHũD`FS Pl(@o2`hKP_s BְzӵWSYµoӻscolFn>EOU> endobj 64 0 obj << /Length1 1455 /Length2 6274 /Length3 0 /Length 7261 /Filter /FlateDecode >> stream xڍt4\mۮ.J.J{h$1fØc0zA(K F QIys:gu羞^n3u(BbEE MC%(yyXLk xQH堉xL O@\ . .$@Q  PH%& 탁;9c eo 0p 0can!` ð>J!ŢļEn(M7 <`/0L` ` p 遏DBa~sm1|MODp`0rC>punbq؛0@^`8wU9n XQ8'Ei𧬍j`H>b;Dy#,HOPO ょ(9i (+/`8>h/O B$`pGCOX6{E).!X Ov< s7lx?l򂢐ꯘo44P8@DBZ /'sj'>Mv ?#F(a(P+&Y_t<_f_ v#|8O! ?v=Ɇ0(X0~:ԑN&p,>=`PSg3I`%q}KOzu;yVbvXuYƒE]$|q9ͤ\OB8L} yvaq]fQ*ȵrp\P{_S 4Wd|ҳnW'*<ʦ9c&ELϗxV&͠< i"YjRDZ8k܋N\ bV`3rEP%'܈s%D#{eSXORU[5/Y:0ڽu}v`rҨx]OVzE[gHmcR96?PhaLo}pFCYl!,Qlgu`Ƙ^ 5Y)* Rʄ\¸TѻFt%8C6L% Hg1oqk0ki\v$lri"FEZW`j5mOc c1)F&\%W6*2=&tмk`M:Baq c\0#36| }7|w%R1s^񌨶R3D6ycϫFk*ǹ+|N-&k^D (FZ$ΨS,on2o2aiH9܀&\r+j=& ' 飫{Jˊd?>ɐOmaFƩ =DTV \:% ^/O(W5_L%SLw)-6pj "i %]̩*HfEl+>pKz(„ /PZ j{ǹC^튊.PGbž60̠錎t,vt#2z&"@ : 1ל_J*Hcv|us{+s}Tݦ#j8IlM1SǚCMpx))v1Jlo-SRn8]Ů^+o2G_ hqL*Aj*GHUmtB؝0^{~KqeUP%V,[>j[co12\|?$*&tOrB[UdW"- | Fvȹ.0U QA+jj7gb4l ې̹}_> BoL}mL\m9@A-*;oq{2U}"qqum1zZ†]{=͜h (z[ַRK9T\=Cr bqyd 2$W2.+ >q.!)GUwn&y߈u5BǤIYx:(:%^.4x6kqoId]|Dy!+4GԚ eekEnTUz|_R.w:eM%P\KG||YWZj+ MKt- giGٱ_asez1DKojh XQGot`=wCW'ӧ2WVF! o Iwiԯ 7IE Bnqvk0?[SgqVt7:"@ xV=c`?5(9#<;$uh4macg_WҜ9ĠD%F }m6i[Y6&?KiJhV{K߁P\OIcn&l]*ٟ+isEN'Gڄ}+9XK`[OGɗt8,\1Ί^!oUx؟o=E/GG숑]k 6mD6nKǘo~%`I 6yJXNU6u{Ǩ} N\Lr]#f|lmG.nL<ůW1;W={koAHJ-,+,6AUc. ӌ_rj}ANJ8Ey ]7UQjA@d M?_r[ިc=8i˫`}l~x_bq`쀑C?Վ"FWv&X?(h-֚tHʗ\[׊ӉH`I]Ĩ#sJ@*+v'}|7B_^5qbQ\-5#z7$Oc dI#y9 pRŲ>)<&jP5yG7zn:I+{3нF+ oU3͚$MeO=91#:튘>5*'#lIN03o=$:@þIXpia(J fH:)d[pz̸\TLb%;2Hj5vEiU6ٯ*F3p+߳#~iFU1Ye>Rno^(R.|rN)=$=%])iH;0x/M<Բ)5S_`; 鄙jGXOcͳ̩ ӳM*jB }q1_3)bQI7ʜYAq/y(V!a9 z"nPLu6z= Njn^rK ᑗ/˛хeMdk.71C l/Um"Ъ<qE$[(ߺoYMzi$gy),n۞XPǑhN'yO ^1[,=t/D{¢̀ _0o0d=<zgohEK 4ZtY" Ű / U&!A[6Yo U"բ5ծ_>ۻTLpufC[iz|oǵד 7Tn[#<'Cs-%칵ZR>YlnӾGV47 ߇I1JY8_t{a&ӗ&{Kr1BtkRw"378,8EKC5byql )#1 ҂W;lē=7ދONDW)l8~ n,A|@]M8=Fh~Nij BC"jb,եj aH#9ZZԷӵf@Ld>ړk!Y/ cw;5gbRj۷5>]ckN:1xN6uu 6s;zѴNάkýZ/[CDMT{9Z5S~y:4fG$㟙T TF6R6AW%z!R3Xgkꄑ7ąO$CP_L!r#PW7ct)͌aeob'_mם}kE۾c^;:Q>D(҃6#+֬wW % dI?_VUVi-UsS변~פlW ,M>0ڥ qeG4#'~\ Tjn"$7mOכMY*!1ZDʆ#w9m@k'FazPh$|-x5imdι3+S\?[T'J Z;aT& jyVʴLZg+G9EORc%&q?;Ybd(7\⿗{WZ+? ڋ~Jg >t"}``q5\$KocO!#W$6eTsrCO$w _}6&k0L4,LxE#6^mWÝBb30a;mR[+MQحۜhzDh iHΝvbf9kInMMsX2z:z+bS)-M%&kgV 饠i,GJ&I* o#nmqԷVIdf$1mN7hA'P=[f~ k E_kpdL38&xf-SʔׇN6{$B*y'C攓]Ⲯ{*ECXn+b{6 V!ٯe;iTfjyt>̗셰{_^8T^6 /qsf2S7B[e4VG͵oB7y_rRji@;ե\th&#a^"4<MwҎgW.ʜ_Sӓiin# _Zzb4z`3(jf"\k @96,1$UfպDHCԛNOr^AxUܣ:k@O>ڍu|y %&`//Q%m%} ~iS! oOUo75YO[V>M8ҏ0QdSLzY(g_ ͎`&|]B6Cfz (Hx&eVmUj̥ 7>;[[ uv2a$iUE 92c_877)0\f+D̗KPb ڗ- 5Ze`}/=1pi]Zu endstream endobj 65 0 obj << /Type /FontDescriptor /FontName /JYCOMV+CMR12 /Flags 4 /FontBBox [-34 -251 988 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 65 /XHeight 431 /CharSet (/bracketleft/bracketright/colon/equal) /FontFile 64 0 R >> endobj 66 0 obj << /Length1 1401 /Length2 5902 /Length3 0 /Length 6856 /Filter /FlateDecode >> stream xڍxTS6"wkEjH $*IG^#Eқt)J/"={ߙgfgv6;1#Re]cK! M(o;> EGm*(4PhyB"!1)!q)  J DxHT콠]F+#}=N(to\ n8p tQ`7tE= `A(qFܥݐ'9n>7 0#^`G/={7jg(/1#!pG]`w9п l!Pj:( hC"^P{5EC=~H@Ba8 J>fU2 G!OWOs]o+E]} TAms@I11Q!rUیp@4PP@ts/$pPh3 ;kp[,faajJJ?$_R _'7V{GFM8&G\Ɔ z!PB_C;_YWH`|=ətu}L0.5^jNmW0@cj5`q֊3 i>F du!}3fI{#%1BFn0?6AY W 2BɦP93&DUg5Jy{=֠$TM⻗bo}ѫD[_-;l%-L-0P=ֹްn[VH x <2cf4VM;)=jK<Α cVI0HYZ×Қ@(5d / 2L07^@<+Ѭ56AF՟+"7IAµ+X4ƽy}[ԌtVAO{(2򙻦r6~5 VJ:-Fh+ԬK7,L Tn3C4<]jOiHcN˭y/>QV[sz6m/#\Cg|Z[A\NW2xlKQ!{1QsHϕ t!=)v(dx@=^1 8(<z8aU}U]Pa/K#,2Lfŀ3ArW,[#iYÞZ;\<첁2pC8UX/EX$=S=@kX֦HX  TPv|C$jge|a{!U<[ GܧkR Xzf #<` w6ɧ`{S̵Ɇ5NcBkO |Eѓ,1%Y"/r^MVbDkE PBLl(ѭ ;|hyq%^E(Ƒ3;[q>m~M*tS`X}Eٶ,L"S?ګǶ hgA2`epb~qMEE钆^ L TM)t*CTIcp9~%,cb#%Fl[ڤ~vLP]Y0 }?KB`b7}{jt}E:DA#MEwN3>_Y*)ȹOn;wcǯЀ $3ù<˝<@;& p3o|} ؐڰ܋jt4;a#NTw 7N p C̼ݯOk&7< 5qɋqRqS_j(E݁ysF=Bֵ8;r@qKpU],t ߺIP:u\oVfXjx6ޜoţ@:?gH ]@)W7Moz}Eim1*[7=0j=U\ƋnxFЪ׸)0 A1F4>+K!]ޮKQ4LBxPޣP6 ƪ^3yh7Y@@wO_&3Oh:)&&-nϾ%w'h >eFqO .>.wp.y^~!́> h6#:N:9e&-;WqBDq!q<:F})F$d[+WʱR2ю1s%ĉDbӇx\!rPzgo^_R )XK^Uؾ0l2m>O`E` X%b1LȤQHȵj4CPU=G]qQLK}_ ˶b/̽~{Ōa*T߅תT_:ПqNcA$xj-vm vdK0B0){%S8S\y)_pO.)8iXh`.5s->8Ud\?<0kґFڛ3Jwtc-*=BoaBbuq盨Yd4vAHtϸlQ^md2O#v*qh=\΂[:˰8'봙e;W2zi%G(ƒhKVWEM(njKf?-3Mt88Y<6 ɜ  uk]LStud?w+y@D52}92Y;!,]eK_79Krngavn$Xi/]Ft2?vc]~54Z+rXx>!LT^o.&Os|毚B9\;dv-Tlm˙{f}i-%ymp2r]$;3̰YlrJA[MLRuMI`U$MY䦝'-3۝vaj}E- J~6DOB؍;drV{^t{k֎}ɿÐ)Wȁ\i;l)UVz<9R]=BM-9k3>gb{)KA1t>W~QAMb-RIA;0ΣKS/|-{'mM)Iw4(ɈJ?PXW~΍]}#ז9~*鮮n;~SC8/ O"z: &TȎK'y5O֫}54`}=[1m'VqAu\q%ߐqYj'^|=8!ٚPj+AVA#˩lZ">glj24TOOp}Qɾ P9_-JQk1OQ{#AEf# դ%-5cL/*|> )^{8%F=Kl{ArsA".aa-קU.jTY*DAu!9MB2]@;FV]ԓ={~pnuՐ/d&>xZ'˟GDn?ȺϤ]ѿ]SELkR?ge3XvS%275(#OBRfՖ7HW`H4&yff 7 w:%%߃J[H16 +Y| q5r-) {yXJKL#cZr^oYB貌'!#ȺGO%c iH)ɫ*^'o}֖'E{w IG:/'8?g;Y,Y}yj>b֜7NJyq gJ6"ߺy4y_aj,{Ϝz.4_Pn88_~t]-&}M,R;7;vlwe.2xIQ =uVѴZ?*u5CWvQM ^8a6zOt(?y]5? KA2+Z$}g"檟.e (gtb 0,(⮔?Rj<8C"}J4eԴI76n8m{ 6IƷ2lo,k\bX|ާ{XT ۥfwd*0E{E$fr7G?$.iwVм@:`Vyd/d#/{vdxe)b7XuynU߱04sVtJ}cW)cZJmǬᛪrcv^/jM@s8G`XVt.U8ᾱ(/Y)OGd*/MYS+;nя^|>xLҭͤK& m )5 z'mɆXQī~t-C-/|O&+W#snYN̲a]gE:)qG('5>ޔJUt +^ AƱx'BEԻt<~BN݇=cY3.8=(YE{;̾HoOlӟ&1*i$ym؏w4qc|*?up|'V;PuwrW]0g"陰>vƐmAw˕ו4MK޾:dكN:< _ҝ \It~^$+ȵQƆo]o\Pm̈́Ieu!ZARtSrCBoSY ۟|Jϣ]zJ^}0A+'NfIx~xOQ>.+=FhmhziL9,/k4MumTtG剗=T&3J^Emy϶L;ޝEsytp f|Uyvgp_oðwS0r:߼Wdi|IYZҀ?בψV~rKXqR96@T$Iۚ ?Y6َNnj[U/(n4R.I9ϤD*Cd= ʮ> endobj 68 0 obj << /Length1 1606 /Length2 6219 /Length3 0 /Length 7029 /Filter /FlateDecode >> stream xڭTeXR!@fnS%IAZnP).,a UBQ<|@QCAwNaǏP +PP  (@8c< A 99tG#xr C8C;A}(`vP2MY C ; ЀpG(; e85G;,YGA]P!.istHu7 9 ww;0#9wUu≲~v݅L?;( ;PPWZP`r}怄[ !!vPG;;W=iğrvVZN d=0~cW.fohQE /'Q P`nFpiC3F7?bl``[ !g~'޼ꪺF MdܩzpGD@iƐC<b1~(׿_&LZ^ FF@~o> -?`'$N?wV uM"RP3;Lcv:T=-C$,X\To&68V[X[t^m9OD9Wy S"<5LD W~꙽¡lD;eev`9q 'UFS6T}z~zrݶ]4c w&c<yTpu"ZhAx|"P%ڨǕ AS<:|kU,/ ir(Uu/~qL$B;[o\r\- ւO8c/}[?pwGQsܫſ˒ٷ\h~"p]4Ig+`wX}#B$nb,)dG-ܫ>>Oigs|dǨZ82yq~ݟM{ee/ |j*KCW $9=(an7sM✒=龸$e0ӟYup`vXkτ<%h7=WF;׿l[]]X-f} Rw)c.!)r !yT36(ȕc uMls>Z$39d5!{~ԟ!>LB i\/Q"v7WcX=2V[p}ūg Pfϩ;ۡVeۚt,9n ɍPm|X9\ۧMvݏEKmi"iJ?>[ 1ZDO:jc΂&3^$Aavr oծo[Qxb2/LșY%ͤ^҄`b9` ^WqY<%^m#fH1ePSW3A fk(pZ(E@L{Lm{ͷН B6yZrLP|: s&A~EͲhc^W%<] ť^/ - UI۳~_%r_2oD1Y҄°TTdVWݚS䒏 W tgfǑo/$_)fZ&qݶ5ωʝ%{^-1D[J`."9QҖv";| et@Tյ:3HF"Dװ0(m(EsAU: ?y9Ȝ'L?8f|PKF_P*Ef:~X>{Y tWLƱ2~Uqb{kFBmN3KJ vmG>%.Ȧ^MqX:`Ga.Ǚ }nAv՟/3MLĝav:,ܢ{]J\]]68؊r$-hnkLjѯ*83DV SA}NŁ])qr nO)SbO,wiDM*6682 ֳy?=۟0tMuOZw/oP(\+QUvZE~%(;nR :0r8!?`l~Eb˸犝Jy>m+5t:grQg )dg)KR^<̎ڂ=X[Qy+sp{E2 J'HQb\" 2`e"f&uoПLz7iE= mmHxec0ZQ a$ńCW`Gys5~^ԡWQrUכG Paq=lM1h}G8T^<۔a(pd6lF1K4x7$;u=Zɦ]\b; ՟; Fp(^PI*%X/^eXؘE6/*O_YO$\QE; q '/X`fN_m`6PShJ5F]"ÏkU%:Vm^ ߞՏ cSsz2!s0jRR֍(b#Zbq=46&_[R;%I?ǧ9G٩ܱ=n)$"jɷ&t=9*(Ma/T謼+L@m>f,NRV2A|Xk>uծ]:GAAEL8"1l<"_ "C+[z2b'b_K 8_ZmW2~;n{o͂v% AdջgޣvZϿrBEF~W>~<@u)\ߨy߅LF'_}J>m6$]1ĻGn:G.6Aa,Α] '\Td:^ ]*‰P١Uܮ\(ڹȺGX8T;E11`GbB/ Ȱ zZ۱MC:݋hKE!ZYPzؓ2{*K>o~u 'BE" b,4d$OR^Ӱ9+F9*>/ʱ('zPdP\VmʯMមO;b7Ӳɳ!z'O)<)|g=o G?\^o!~"52x|AcC*ݸk6uNm}-14y@+%k!f].Co8.jgLr:eɤ\ϫv;'_uCT\_q۫/Tt {U˨ܿ[xAhX"ɸ; SAgRo[mq}޿ӈyP{۞[/>\g2͗0;5`DB|x!=8k  _1s5_蝹`ƺΰAפlͦ@K$q:*?`a-@ N7 -UVoNjvqb'?+7[^E1MHԍYl@ ղhAN$?; Bm2aT`儃y@Ȣ4B+߅33YQFopU\1 MYYj>gL'͉|HJ^oܑ~/쩑 !gjŠ@}Qܩ/٧^@ B=vâ4|:X' =*5=.Nrl&D񡆏igNg$s^{gxu9ᆕA͙X&K/uS$}~a섖kY@\Odom=s3)x^=R ehI55\ \< !!ZYr* WNϋţD[4x6Ikh#CUFWE!GR?G\|Ntj=Yϋ~Mpǔo:dn-ːi;Urva >4SS#u$J&$3r_?oK6n/mG4SHNX\>N< +vA^NiӉPê{"p;#-;l.d `y4,NO-(rg`b8FK.?qW [pLzxq'ѓV/XltM^R؞&bj(ͮ2Q(9u1,yCr:)dyxP=ruS܉Z:ğ㹉ZtgS#ᘂd'Ǥ_";4//~Oe=#̹ tx,t~a_`.M>V`#AHKl[vZuj<0̟0O? HUD%y .XjERU[Fuq?$ZOmPwr(J7`0r'* JTb0,JJjA,xJ,^x RSQ;1PrO1?XKYc4P~b#߱Xm4auPZ~@8masE3eLj@-yd:V^YMc9cStwkh-};Zr &VjK=#UU~DYVrx4ϳ~=pygbIWGTkLn`H1FduMzxJ=Rtezڹ[L@/;ns+{L ,:GX ? tncxф֦A.a6N)+fNfWxEv{.dv'g~Gk |i i77ҹ#X8XJTlX$ibtnpB׿,kr>;Z@^mvjW/z+&Vr^n?"b7᤽ؒY0D1?7g^;I_P-% dؑ$IoHՅRmeV d߯V^rB@Ţ0C{oilնcF,0|I:'1D%cEمdDr:Ʊ3B%S9(4nDcO!jDO[=z"kigw?s^5路|j&X31l/c*S4~JŴI;ݽ?r$MRgĿSQjz+qFyb)/*qh eGQv6ej#9qr%^.qȐtw%x($!U s (e{{}B"+괥 rVTz:1g$ZR\>4m3|-%*8ܛ=bcqd\;Z6L:[rOd X M2'A4v'j;QĖMJge/x;׃TJT+,zқ"dS0hPPm=  exYrxA8WJ"qsN$f$jSPҀ`">z u7#X\+:ippF%ީ*cb`K2$}'Zgu'QÊg`iA焑o;Pkt6N.9$Vs%'̽[,e^Y]0~f{Jb 9X1gpl.ЯH!F]Q|)bүvsm.I endstream endobj 69 0 obj << /Type /FontDescriptor /FontName /KIQWYD+NimbusMonL-Bold /Flags 4 /FontBBox [-43 -278 681 871] /Ascent 623 /CapHeight 552 /Descent -126 /ItalicAngle 0 /StemV 101 /XHeight 439 /CharSet (/bracketleft/bracketright/e/f/g/hyphen/i/m/o/p/r/t) /FontFile 68 0 R >> endobj 70 0 obj << /Length1 1612 /Length2 16386 /Length3 0 /Length 17229 /Filter /FlateDecode >> stream xڬct.{Ŷݱm+mN:tl'}y/YUYc,rbEz!S{c3q{;zf&}~?ģ͍%5K=#Nq4tzh2ǫR p;Bt5, !4YjM9;R2^R@,B=3t; 0~m%g䄮c I ӂc(N#Eo9c?tm υkGM:hxVl}ݽ hW)SDCˎOon"cL &#lc.) idN|dnK$3#:#pp 5YҤ[<0z>V>))Cp.)ZFmGfѿ eD"/ERb:rQ*ySPxe7`oH\tLP4`L94n,/ϊDɔ ?CеĠRAy< ei¯帩#PJPK>_xoDiR?ͪF@IHȯ~U2Sp[VqK:kBwKSaJސH^ y _)}M8 SrFd*e;w#ѤY!op[ʕ,6#nj /n.,O1GCfUu{ 3F3=!QA!H v* *YbSa,@) =b@l7=kO|i[ƨ9 Y @IACGwC}X vuIG]ҡ-v='G{]&0)HԼ:*zE} ]I sh,{#kJ9/(#c*.~m:_l5t=Wi) J>&0;Бlӫ*-xt32،4YoFk6Ħz*f4< >v: (AWݟB/El2,]{4 <Ӈw\ie(RIWak< $?TZ˱s`ɸr|QtȀ2 O-(I`΅s C9`~؀h߱4 WTanaU3t ]HZb*yd ƔS.+WY|߬Gk R zc8ie0,f0 5=w&I݇8QOA}'\:eO_c>/?#4TO.!{>-!rCjO{M~4p#60~֋ TƼ!Lt0@D& |DڝR6CxG,$f ܞ0lݥ(c4}Rw-ji*,""DkI DT.-D~G b`d!zG;5bC, kxw۠Jkנe ٠y Uě1aI!e:&9-ؿ lݾ3Z0"#*t^Aǣ;҄qH5[u OXw~&Uj Xi,i7l#PKDD6[7Q. ( ~S0lrMZgRa?M!$\(,RǻOd%ԬzDR.JP? Q}R` v},<$Jr#pvi*vDYt'9(%wРS%5]UO߄MٟG(A "V {9)SQ'NO B ~/ʰǀ"=` NQ%Q;&nW !ʉZuRXqTl-d[#8.ϐq^T;pwtH2F}:j4&`%{l]4GԀ3=:j'J(MX$ǞL* z%9h}BJyRI#qTbD ur#&ژ`]8FNؠݟMJM  땮D3onNVCJ6Vʋmoy׹CXhre"ԣ="p3WBȞոg5[^ U7'v3 ?<>W,QTg[ƽO5[(%<9F23 ƍ!oa߉9M+ҟ>?ІIȤm}=3Hi`Γ5Z!{aXI&=\2h[B# D"HD:WM Lf+jg _Fϴ6~`4p0In BZJC\u?,;q| ζvjN `(B&V'Y|]IL4vN,Cb^KDzIHw!B=U*V]~}[ٛ#]qO#r@mAX@[->K[Z8TwJqh gZEN&iRQz4 Mo~e}KX3\X gBnd}3݈XDsd%?~^wǶl)ATvN{_>Ĝ}QB[ AbwJH_@HuK<'gX[JEPYY_Iހal Ӫh2qb Rռy/!G (}jzؓKVΟodPzݷ: @uY'緈0Htz*;jx S΃::TYBCnX/A70=b,60mNOwE>o9KJII,8Tu}4*M7/^'}pݭ%[+)X6OT>AΙWbdgΒҲp;.r;b["- 0 |}2C~o-fZ9fJܸ xxؗ Py*ߗr7mJSK"ΏwXVWoe!d ^. !nÅZƚ4r8 yf}_/>ّд 1\EJ)"Ƒ?V{2c,YW+3rޝnO&},f/*=]-AUBg^@a{ #O &/mYSc 0gyD5Jxr ڻ'& Go+!X[ڔ$KYHù7B5@kD-dbR"1tvNq$a8*mb_W 25[tm~ To~M~Y:a3^WB"`DVvIcX9q0׭QAeO{xnBU[8wg U<||+c fG-}e{ZG<$|/p!)?SSdUt\[_Q?sw]K\5WzRZ6Em:_bVpMYwR}[W6-c32~Hdp''z"){X0)XOjLC/SXDy `OJ-q,9odFrcm,{.f" oj@z*܊>}^K}Ts]u]ZnC:DUhTUګ$R5qCTg!hH fq"$|@;8բTӬHs*w腯*H9j3u3,@)\^D`Gba*QݖnQq1W eũ#<~COJ>o;\`rs!3.Vhɫ;CqA/ms)6P矪fH68q܆~`|vb0%:);1`RvLr=$I!"ZӰC]~uA yt5`֏m3)PZ:q3>q~>UBa{VftԎTƎe,nZs.ɩP`L?=([s<:5/spйH킃ɴNl1.ަ 2jt!Ne .ŽY+ ߝ)xOM&Nϗkt΂8*hb_7(M=HL C | %]'VЫt+}Tz kߙL/ҕ?ܵ +!H..~~I/&ppsͶ>-5]=wP۬/Gzbh78Klk" NIZ[7v{16_5=Elq,mLRW}~CtEtIP D<ETdׇ>YX*5 Mҗɷ1'eˈP*U*!s"5~nmJ қpU}. LefÈGX\򢈖^ A(DUW31]٨jĨ TXHr ksǬˌYb(;*RQz0bnOUҗp"(۔P QE$!^9_Bۋ6* Vh%V0vRHתy.vXBpi28K C U$n8Q =?_sry$wsYiXHӒ+.-UVK,Ӥ IՏ[ݥup}L(h5'8OdDf8@"@or8|z:5 }'0(1\N}bS">0?'\\v?^cSi7VY=o.inj4{)0 c *S:Rq;"fgA`"0MRyS05y*{: 쫞']m둥60b"'ןdHRF?CU"wXӢǃh2Q5yUE@#MěȼmM=Hv&gL;krR ͜5U B0N賈UgPhz鑗Ai/E?qggs2ykV%;'plNBl}v|Q j.2GVKz){*DoȜK|F{|O)/lMP~eaQUNLR\ vu<o6Xű-41CmZIa#Vń!AĬ-7v's<UPpsq22=Ǡ5?4=Xb3؏6 g S!vXq(i~&0 g4 ^VnWi#ExSKOsSiT,{Lͧˀ"ٯb suP=nUjt}jKWC qy2J{ ӦP+ tysaULUƦpb ry8,"Xj-,!x7:fCy+ GRݙk !荌iQd$bGfLwE8i gJvRWmo$Lm}=M1ǧB*Y s͑8G:+GiY; O+#%&4QKy.'6#bk\[7%d}g%Dfe44lz+Y`ݟfY+Q^hըSWɆ8qZW}+I %,KnA]!Io }!,^J|~àg7ѤTxob&})k "ҞJ "ؕ1SP޹ o?Nyc4(k1Ss+mي`X-%:]'! SDh1tQ ݢ+*?"HQs\ TnlW7غt}P?|F|lR\}+Z3L#ky}iSACa0kJӽ\o29@u3^">̈́\$Dx munrug|m )~iWʢ:l빷JYg;쀃}Y>Y=V c, 5.mc;,k} .1m[Em 6 LU&9z^ +:& ͭAjCl)E;/bz-р!.[-Z^uѵV2͇ [`g %7!sɹخ͑ǻ?PBKolzjiH[;4N·;(#HӐ9j\xBr"3H`Hu9F:Pydk哨EyLm5*!.wmc~HܴG O>N(gygpq~j:^ >s]jj3'6gZ;nժl\6%īn W..t 'DN#ѬZF7){(-^cB%Gy mը%Pk5(;i~|}˄ӗsM13 R K!qA!'iJ<9kyFA'E3"TrYA0/G?zmhhpfm:+bZ,?:Sr8x鮾G?]wnOLԄYuSz7?M"'ӑnq(}6o鑹'vj& *qxӲv~e&Z1k0VܲbA2۸BS.vĿֻ>@y@fn"9)#1, e͆ ]Z7G9y\]G f[m=5 5*_]%YWQ%u2MCcۨkҗڍKϟuQρY9߆ML` |4>(rLGC Ǩ2w ;Ί_َOL:i/c3ϥ`^lWQF^S'jv gB*O>ZIʫ%f@|RC(2z"5] .ǕdT9l~s\j eKj~l%\1L$[{2?1G 9v{bvK[şED1+\%jdd9oG vQΡ!R٢/q2L[Eik8OʡZ6$I 4Awx:_zo˕B сg ^?PnR܉$[4ۣ2'E[Kt/m9\W.E|YA L]Nm|zKoz<~(Q1}4:RǨ(RРRN fF-YF6gMmq |dJ 7] :I?:s(kݖP;?HFg`ۖ<5 ;e]8)&/**N@(M ؓSW(TEX$˅U8ZF_hvsT}.onb!± mC͂Q2ZSMs[b:/q&LDwWڃ) ?39e 7ޝ9l:9~!qWzM_ИhZCFZC~x^Ӂ.7Pu4l;B{E؀'!e36QmZ$˃:?hF%[N' `" c(s\^*}}|ĉUCCRBy0>A)t2]b 1?-\1=Ke3aB ;NmPqt/wpۆ[?zmOh;* I\G*u73g~# ш_̹rn&ш#Y94znfZEtUR$o xP2b(|ܡLrjH-9ch-Xb @ڴ˿<ӃYbVN-}Ҽ8ٸu A,>091iLa1.sߙPr~#O7.x裂\{VWMhV&hSn[HHr?9 PHWqa!Bj:{J&a#Q'@sYKvb5F\d񛈖a@pSp4B{pqp=ΌHU;N>`Kɘ?SB5nB*.=EOb =D KUɱL\BWt|IpUM\b I^S˱Qff~.;"c7P߻YMd4s,,aQ[@~jI GG Xۉ-(o?)?C>J "03l=x(pM^A(_*貽{s="03;NC.כV"%1!U˾%seu=Ʉh"5f=P ^j"Q1+-zbW[VhZǯ)5Ͱj m1PcR 'CLj=zD_ϗg"^ZA~#"@ z{B@c"-d[=1;"5. N%rx0I~߳U^ՆqAme9蒊^\`#) g زH咀mo{P¥'\~ќ<|%&c'K`+_[ƃ`*Y\apV~GX}㌐MxwҾ>Ȃ%=?w~eoC "W=0e a(.dz_J<S޴4?]b"힄@v&X鷏q2Fd+(J$җb$7EvQf ,2{eb!ЈHЮ} wg_>w2wC쟭*)2(X>.  /ӥ:Ja'T 32F@?i _*>QC @0= 2PpefGvi~gu(zxOH3f?z!A6IԒYBZCMVN5;~=#̅e{طHHp7$zRLŭ~LoM%M?8[^KàO 0j-SbHc\HǁQǀ)tINqv9N=U-];-&|[>hr5MP&nHLzDn$WwǼZ AFl'ذV7{n};~5lTT)Lw9oE.UE7ۻxc<9x!},6}3IS*~ch wӜaʁfk|]?J8xS?Єc F]Eau _\2?1`FY,h->[~$} M -݄2_v9QG*?{M8Px#߽ ڨd}3yԡȹ&Ͼ­?@N R2>y!5/B|jCFX߈?6]P@@~]6 @+boI*]2UWMҽT޽ 5-5]-"J%v fKTM9A恱D:Tf# _Y~#r>n*µbzOvZ6>NřnOP._ͣVzi/} ZaS"vxs bA*6NoNR?#]7+et S=y8IJG=5v[̐ Qꛟ-b:]yu9TJ2B46Qe{/X 9k x%u{cwR Me!W?.zF KeQ_k&!\;9 cK 6d6xms`բW 9,T})~ߴVtFоA]jwTՃ, 5wOFT,֦xbjHagdP}ٌ֒dm+ 0lr>YNT\%DrDꉌ>T'.Ȫ )B8O3$H i1ȷaD&IeL y~3zMxx|[ ً G5[5X0Tq%0&df41pt zcw`>fTJyZt?81?_Jɫ*ǔz,xxaqt.ܢ(w0-Bp+=\(~jo?R X_Gj`.WRaU綢 SpPT;ܜFvWlBǝFvxPە{^߇ i- ٖU]ayƞ]vV Zof.p8-@41q @ "(ڲlm3K&>8X7_xxS w7'(U'J qɀ50ku|J%Ö/ImxzN`AYTǾl`EU\u7\jS!ALG< ,[ ysiloׂlu)I; ?Nj;XCfpwcw6i@r+X\]##zYb(Jt?Nb~`ltl z0م O&1ْ#'a^Gw&qׅYYq A";Z)ɳhDd:$,,D,nl;֮GM5Y^zfSvs.-xFm\1~4M[U9Tk1sq@AʯEgx҃)~yVL"OdHfa;zT}>l9nY0͔ /WtW.#࢙#FkJq͐81`|>5TY2XV,٣ !H'h+dn ^ھVҫ0̳I"58k90<6P]gF1ÇXjB(CӶ8ޟ+ .[ endstream endobj 71 0 obj << /Type /FontDescriptor /FontName /QWSGPG+NimbusMonL-Regu /Flags 4 /FontBBox [-12 -237 650 811] /Ascent 625 /CapHeight 557 /Descent -147 /ItalicAngle 0 /StemV 41 /XHeight 426 /CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/R/S/T/V/X/Y/Z/a/asterisk/b/bracketleft/bracketright/c/colon/comma/d/e/eight/exclam/f/five/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/o/one/p/parenleft/parenright/period/q/quotedbl/quoteright/r/s/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) /FontFile 70 0 R >> endobj 72 0 obj << /Length1 1626 /Length2 8964 /Length3 0 /Length 9796 /Filter /FlateDecode >> stream xڭteTۖ-A] =;A$Hא`!@s8ߟ~7Ʒ5ךko-]i qrpr4.60ODDC  k(*g  A@ `B|=P! ,B6yۻ@7+  2VP0+jA kgl Pۂ\=A,; i͓K` tق@> ?.v{=]3B`W[gg/Bng3ivj)` S@#[؟=<{`WOS=ݜ}k?y;dotyz>vH+ ྒྷ`k  Y~FCҷD\f,]|K5Bzί %( xٯ t\F{.& ,p!F֕whbT8MjRGgqn<4aKkdǩKXg٤~e럜¥Ͻ6;,^׮iםK8GW1CWkj=s`|r˪rɭ8oxtˡK~5㷭 YBif1,%ꃛR8abEyXH!j^KFwk׳Э2BVגN-d= ⺔fTa`zۈ8KeAau6*nnōU܄`F KpUe3Rkc{QxuQ:{Ol/{ZඑG8!x{5m9mIC&~>;y4]n~aǽ6׫i}A2-$:Oh'[ ~q9K1_ ߜQ۽XQȔ$ԘwX=(X;l * rcFѤuڮ|i[4hҝJD;ؘ_ 2 TaX7Ob ]WT# )+q3/3zP7' |x+H: t,U~z#T̩rD5~js K׮:g}B[CL8ίѼ5'ӚVAQ!c?MY6HU#PD hᤸFt78I`t03E4ZFwؖ%6s^*FLD$WOYqthj~} 4zHՍ83LCC䕨 H2Л 3{s$҆1ƅ\Mwl^V}{,wgơ4.ve+\zjcg؝/]Fk+FJm}n`5ac*[#9X}ܚlF85RtmERkm!ֽNM#~Q3c Ĵ# 5˝Л!Էk#F*۱ROOhi=pLCȐ5=RpYf\cy 1?^Y_E0Jty3%a٧ _z_v7,eR"Icy IzM%S`ܔllZea)<Mgl4R[S~.8S-uUyL҄wܤ ^`I ,*^M" SΉՁ@-!${ܡI"iǀMZXg>?nݏM,8 URLjaEtywQdz.~1Frbd{1dll,&m?p?#/ 8;6_&oaVƢger5=Ĝ6uqp9.뻗d=R{uio ~p9y*YuWUUS bs5ww9^ȏ `-W{:ſ["F ^-Y)3 ]yo0MΦP%oS/-1۽QsH.E,N.J 鼫y'Ke9z1F} "p4bН';uNwCOGޡ;p\-=)Bs}S~VrM$ r"ⷓ _iLήitd[(mC(\`#4RU;nYcd-N%LYBi&'ZbF Vo)(?C,$~Zh {5Ր'k]nMTl!5iḾL prs^Lv/`oV $ӹ{+-C쯑MKņEA[&{T P&~JJԈHN~tI5[g\,_nA3$гPIw27 v 0Xʡ<ҫ-awy.;3c-x٨s⮿K(z2o_m;~V(*h߾~X˞hX6?`&HmU%exH1s$M(\oe~~ژNx$TO/8=MPTٲ{AJݕvƊ5DeɧˢmgAእn,^K|,_~z%P)_O5tgxJ+d3;'-޻\*ĈIv̍9B$X{Wl/ &eV*SoE#SҊ"wO0W }Sژ) x?G̢6\܏*aEeq{L50Bΰʳ)I;^ |*d.VGڮe )kFІSo8bo(K ]` q/8g D/re,-c;&J P]h験*aBCMd*VL N~LUY𻊲AP@i6Ut3%qr#a6΄WݙTkKnO/m'}~qKs=Qt<$F}hch֩.7}Kr(,_?9NQ:'QN/ӈ¸_ xbTq1i{WCJKEjY-:|ge#W αr‡5~g2CǴN/xhD爬KxN9^ٱElY%1 +617Nk#+:]}T¶͓5>W³rs͊@G h s ĹDޚKӦic4pۣ5@ [N_(ȵ ۿs.3OS_“;gP\ק_8g|mNI)5JO?EZEN;L(*"~ڙ"Y͛/ ~jN7wO)(ڃgr²F |7Hylf/lxx}u"Wߜ GwU|cpToO2~D5^ۧ-OWϔ .SՓ* H~WdMߡ1 i!S<IVb8x.oݱ_`j8HSBdm:SbP }:mN[pV#/Wxt0y` C6WJi ڱ5Jx#M9 \@"GT ؇QUSKFps 6D ,*bTc.rLn+yiuhu60t.J4c4aBIzCC.ssxg@G=↦ݻlgVΏՔ GC۲5O{d-u5^A{7q |1&8!̏m_=  z ݝNL-peiRhTRs,(Rmx’)Dtk# Cx;q᧕;oxs.-U[?|Tu&^$0 iHh~C鈒ͩ~ff')"X֟"]Q1vtkh <?{)j"NCs*#,5(GßS1 /Cr79ti\16מ][9~ƋT ᛑȽ0?*i,7{M <"ϧbDiJ[$UICzy_Ch S.Pa?r'^g5ljRD}P[r9^R?Q.+Zjl)-꣺$E:6Y?-Ŗ1Li{mi*W`sϛt.$d5t&Qy_kK'3vgQIg;!,<^5,YF҉GǸK?Vx 0Y[ݥBp8H0 Ke;ᗓCB՘P8L%mEB_S j&q IA oV܌( i1R xVt̞*A͔o>yE-+e<TBOVre-_.ox088Mv(4ƊW+6b$^ԪZEis&T:%g,' PsYX CH,N\`}ᾕSeլ ŷዦÌ|߼74ʖkN?Q6wFbİ#?T׎X!w+rnMW>]|2dw|Uvav)ovи1'ntq>H[Hր,ϒGSw b]45W?ljpŬcPhlbMॆX6~Unvޝ&Oc 4o{$'!M~16_qC-XBG?h-QuBŪ5!h('L{q嚐&O#؝ceW\'φLcR6_IrׄNDeLt[,,LD8ÎWey-cM8ݮZ_i B'2lޱnO@PYڸN9|fzx;.}8q3+ ,eU`֕1tzu %N)ᮘT[5[{>'%Y"ƇoJl#aeX}aJN87JGi鋠+ʈ7'h]u)vh.fLԑ i#YQa!xk*-${-G< pꇗ=nJw$ endstream endobj 73 0 obj << /Type /FontDescriptor /FontName /KHBCGK+NimbusRomNo9L-Medi /Flags 4 /FontBBox [-168 -341 1000 960] /Ascent 690 /CapHeight 690 /Descent -209 /ItalicAngle 0 /StemV 140 /XHeight 461 /CharSet (/I/a/c/colon/d/e/f/fi/g/h/i/k/l/m/n/o/p/r/s/t/two/u/v/x) /FontFile 72 0 R >> endobj 74 0 obj << /Length1 1630 /Length2 15633 /Length3 0 /Length 16457 /Filter /FlateDecode >> stream xڭcp}&wбc۶m۶ٱmN:m۶;|~9s;e|UkZUIh MDlih96.Nv6v4&f.zh!Gg ;[agN1@`&{8Z;U(S ?,#,l?\MmLlB_*M&!9y Y1 @ bhma02u29-l-i͉/dobd757 `h`wv [#k 7WAv=l99;9Z;fwvkؙ43r:X:Mܝeh0p6/ſpq5 &f&NNab3to`oohy,LMi4r]50[ob6W [NoJ˴}$7PB oWG+=2w X8b l,=OQ[$ E/5VZ8Z[8L _z[cGk [kzbS60LlkWt‚jT/Gaэsx0hq02oR ?egG w߾_`DlY%g[?\&&&FkvF\AiuÓZ E5v=~iaMӜ_mKGhd=)&8>D}[lTGtjQ^7;`G{ %L7/D(pF M@Hu/dc#C=w}T9P$\IF_olNUKY-j5*n.O1 WLxfˆRnס!01E B3ʒ iV10MbiDE,_⃋! <3lX|$"pucI{Ѻ>x<@i4<4 n!Q?˙c@R+,Bu> az E߲i猒%y~HmNa ]ӟ9o*كh*⍑eNּ[4jj֊<ޭjL`O<0퓺䧌ÆGX- !I?љ[I֨C5:4#1L^#Dl@b W?6$UmG@yf.Vt-}JFט+ֶoLߜqH3/25UKFVR-]l,0ag"M%MS-fLT>'P,-\b`+L/ؽI=@IH pUZM dlb' Z{ GWGٖIy/J>vÌϒ R{o/_ĖxLV'L:XH8~  c8ԳXLu,T,։iklzBVG\}:se AO^ "2kh=h6"ʅrwtixsן]6 f5BFs+m~gxsaYJVqz 2}꽀<)OY4bv4=!p;J"|z6:±ΪxK70/D/VrtObUo>iwÂ]YJ讥{[RTT)0=:&k<+[( ;6ə.^>>8ݾw7DN9Π_F 9ϑˬ[lKGRlje F]!_.#M2 B K9.36-t|NOVg,sGg-$5j+l2QMyLdRMl`9X_1+4E "ťW])*DpPA~D9/| O>k|k*WUm|.vIxh K| \8:\L\n14P5͊poEO 7#P6sl#SB|תI9ZW(g濐F,Iik9ڨ1*fQQzFla߁RC[3p[0_na?X.% YM5zIՖ.q3P_\E@'s7QR_'v1_nWv iXsshf>(z [:1ݕN!WP{=YsC gRS~"$wVPaЛc!VՁ+Ǘ7zկVr@*Ad܃0bZdLjAatQ !IYmC| !+pOL lğ ֗}́, qdNH&E , MfljYDn1+n" Gʡ; j(obߪ||">=OwΎ0?L\F9V< *5qϕ\z=O$m 9־RU/[?· =լW;ߒ@ ]c87+c,mSj_ i,b?Yt7ZTbF#cxW)Kw3uTA$%wY+St:%x7o6 /uc gᑨ"b@se0~ro a5vJc"?=nbL1gmo]ymG<ɅQup!;7M1r)#|^)XqǧVvMBI=ii+.`lP$İSxF=l| I'~r\VG a}yg9Kg5ѷ{3?ΔE>WIe` ٢! ΀Ai`>5CL 5el蜇u|$uВӰh/Ji"q6Wϓ3+},0 P͊I= ĄgLUٺ'aפ>!cҽ'_Wٗ6iS^FdVXV8# 6ãRrЏVa@70}F MɰOVtSOw]fM9$rjA) }F}Y?Q!̧wҩ=딁b{%EKNW9! }UϾUFؒr)2(tov@1@مc,|| rn_TrfKf #♻2OSpK| 9r9>omP ?^VBHGq͗cǕC=TN0'%c;oC3gٛy*H 7K:'0[/f{[j[DueQ~ Ȭ\ވU"a FXU| |/Jcc'U{u"hY/qEv$!n`F9,nQF(_ FcV3" _yL~pґI 64|O]?l]hn(֦E$68ޯ ̾vxԹ$gO=rL:?DBڤz;3kfk"(#c7#۬pЂ4J34(Qx5Q)E?j]e'>CKi.}em3!0UpHή!‚x[ݘk8Zλ/:t;ݎn՚%b+Ph! G=08d6ڮúdBWe*7ߟ[ڄ;O[=eebt[;&)^N91.sZUe(Wf,z 4I" t#BnNl/'m߼y)fZB<tgذ2Sz3PWL}b%0w#^})j˼9zUbG>o.|h ^ IM8/dK\sMj! {ۨ}(aA l:i؃x>"[4Њ3h~AևD~BFT WD2*o[/gp)F8V N"XhgĈ(3&vʥr:ofvAzFZqpE:ה֛grң2yxȦA;Cś`=Omxپ,0Yt|!'甧,j“C+Lg MrR6=OII9xH9XlL`AYzI^l1{ֳRiP9zcU{ɥ${,Eq"~;eq}=˾y<=-Vze<c(/]7Ǵ-` t?(7"{]>+iŭXq'* }]6 h-{LєK==tR}=^0)6:<xLݩs4!~׬uС[ŖcDf3%O R囊og l BKL=?z#Q tr,"bNAg/=ߢC mO.׼˵K1,,ܠƢ%7!"cg錋f8+}'EGs^g[p#K*Q45[P-;.+vҋPSus}7Ο>c(|>dw<ܬM- Rc /0)z* ܣŖz_BJwL5?r7S,a^Feʨ<ݛmV}dRuS(螵Fvs_mԖ|[(#C@حZDyq? "rM 􎽱+k[ ̬H+[3<./c$w|Kr6KVXX D~4#<fʐjK} Iմ/3G"Q@@4Wl=1l VF`QChݲUNc,Κa9@8{+ |3+{YWvgFGΙAöGU~sQI[xf@%> ]Å1 9pwgq0sԜ}uNPi UOHV IeGh 4GRD@rcOvV?|SYԡS*ZTdPQU{Z e:S|r44b Sba#B6Ui睃R'? v#_5?ePуfysաjx>o2&V|3eg!_{E X],(ЏBbq Yn'Ųbڃuae"'"#ᓡta ̦TS ¦`& /$w^ADHR h qGz\)A^5h}Z|nZ^o/48Lk4e ;o#(mU+7]Q#m^,o$ШI!^a|%AakMFhCc|Pq1UEY_q(U _D2{w@@Ip0 |AIx|oNͳ[ /PGBfˋ,($ } , @U3:<'_eYudldL $JX՜nSw [o",MNG[~Unգh6SdbM) GM?zi뜛D@"ٰ _Ffe0l)OU:MQ(^}Egh|a,(Usdb 7(u޳S#%v4J]aRR X{%s#ًe6<0MVՃux^,X:mT. ɔHO #f犽L_ń ȼZ }%[yl9^Ĝf౏"/AOUKV]9PCo]~~>(I`6_~Z5덺Ҷd{Bgߋx?\"_ٺcֿh-Z6$yܹw$(oC*.ψ /웉Qs'N8B ^z*R`ԁ11KvPXJp_:lI9rL-!B+j;?GI"jIzcu 0 k:mIp|`=l`$4] & upNV2̱ы:*yvXAfa \~ղ 1V ,>u{şdLax ıVFDm܅Rb0e,lVM!ʔkV'7~YV @ZFYapU3*!/2z Bco%a2 V;D!Ԃ6_ 4xµ ú{1'[d&7RY+'Q=:[./VYxgIR JL|xPC#/E:"atdAxxNo|G[q6"Ju* (Ml_nk#F瓧D3{o_W$jc l%@9nfakyWQ:Pg[y qfw|o6s@A޿^xYeK!L0hhPHcLqWf1pR}l35H>rMZ0Ն¼4ᓺLjߣR g#k:k3' $вL=ATeT'JTsY =z oCu"qHG@"\/QM^ l كqnq-Rv7qݗJ涏}p/'.dnQNQK?ƽ͉S I8.d5jCTvՒTlEDv|f|"S],'?ycJeM= Ћ{3n #IAR ҄(O` C̐菢1Ҥ_<2 g6{(𴸚NEZ?8PJ4ݔF|%~~x  !0ՒY^p*v 8VQP^/7@j$ }aL۩Ӣ_29E?#Zz7k:x}樝uS8v1|rp[Z/`Y QŽpsg+͗Png5uL/љ˯Sp|=MW{ ',ɛhՋC%h{2DwLNq@0O Dմ _45Qyˠ ]`)V>r/{>m%OL6ѵ:7sRm/a9p2 ͹xx\P #p|biĴl"~둴˩ˉ(=Qȷ"UA.XD ?d4 ?u !j  -drh\g+4SM7 ꁁ]#zH~O8%k]R)g$$-—f"Njco! !yeqBU@.+dQ@a7*Ê.60k >I>:=s7q9I㔞701Ui|}ۆ=Rǂ$}+$ʲy{QWkRz+Bh )3dhjO*Cs7,D~s[t L5DCSqx؝X PA !]>Q?q"<=nM4pg\瞿|<Ek(&騋Uv˗vEêl$S[ Wo j[**dTЂ|:Pr0U֯vf}A-bx\j +/ `Fm̻щƽ,e&2ct~Y6nIp/%zv}]!P*ff#Dh} 0tL`TrI(U)1ףE"~_*Ytj+ofA&IPts.ΆKU?~;Njz_:9.QxP8:Zو󃷰dI[~*ҏl tOB;Nl˽cc&e`E/0|&@M9QMP: ?!aE8~^sLR_ 9}M,TI+̏{=_BٗtJ_TZ0I}Uw}}1W1FEڃ=Hu)EѮtx$!d+5Wdbdq%Ȥd~ ΣrVO9S3ۖ9n"j v#"X/% _E^ԅ^Q7Oyb7?N*Z @86ݚh~/jb2Ԭf$QpE-1gy~jqL{82 hܑShj?v."䌑l,k9W RtR]nft $:Gdh:.hZAԺر2QLgq)AN}Wf,B"RMb3g=/2R3V-6>:fZO:#~X@H~FۏD`P-QZtp9L<%+: 1늯z%jou0Y u$8_P۠' ¸e #\)ʐIoQ#{t`j] QIݎ$xVK#XxP#sU)xC͡W_ÅhY"Tkŋ8{ E >hJĖ}&ep\쨧 Nb5TFlCRZeYͰ6g~6@⁑i8/C5ay墨do@B [>1"> zs{n\N2κNej67FA}>\RRKT"O^Gċͷ Ƭˀ,F-qe%`p78_b;UX)o »Z%zGW'Ro[Uƈ]#hjWd3\gTM|%L0@|J1v'zJ~I=B@tMyy# ez.'a=SOpiԏJ&_0I(-fHܱ9h鶂{SU%$#n 60zq8 Pu:9˺ۃu9WRWBDq7\+,>* ܎RC{|#&0ragHayO3~=Ixaj ;}y@q +yZe)X6?L̡%MT3UkHpܫ*gBXIjP@$[ k藉T7dT-Y1ӷl]x6ZFVj>!&&2 8ܻs~'1;{+BO y<^(WXi-go86؎.!HI=e6rj5}`MjkB*+ S񲲅E qo Dޑ`>_Hn ,|Ũ@ gWL@k]0W~"8SMR~M?Bwci㪵YPhתߣx)A!֢'G#q O{ f&d8C7}0̷% ^>X%9肚te}x". 'oQ6&ϗ !|tC$ obQ)(0pk2ʑu)=U@-J `SwW>hh2K&ӑhi&)F=eTdѩcPcxǣJT}@jk͉ r*d.<3sM~+fY߄w\98{ q \8Ӧ!`7Hvـ#O8`eb+ɪ͹Y&-JG<@M6)& Ζҳ 3Ӂi9qsJ4k7\h[E9ekfNS"~lӊ?b׀O֠y] .]#ݎ%%&~)L ]qrgc[Q:x'Qg`9 *c/ȺNoNjƥ|2|ğyv 켎1P* i\보%dJ2gg` .ڦ+ӊ0]I:[siey8Oбv;~PݯT߻GV?PPe 2e򛆰צ˛i9X6SġnCRo<zArlx2!x@>:My0Qw E[unvS֍ERykLȋq_ <%$ '.)(xL 0HàɟEO\3`r6*('LOePo ɒ?VOqYwId| ?JVfu \Js2%9BZ3IGҤVnnvEO(nd]VEsbSyqA "d ..]1GMj'PK~lWwJD" Zm:DW4:7 Z aO ַY$^OM.O#9"2H!=?Vμvïi/Aئ<{/\ }wt*qV& S)<+%a'L_[͝ WO2$/>b*}gXHᢰ֐p :.I_RZֹY;[%돜;ѯ7!OEAogh0u:*B >5O6S1U~rqѨz~?Vo!0?K2SQE(]zjT ;5؊DZk]&H* /Iã8v q5)sCPm'gYs0p,7 X4V\qS!(9g%DfD; eZH˜IT<& k[(4 )^@m@هP1ѵ#e{qV>jfoȖ9 FV5MD` L/U~ΐ_>ǞcPfdϙkDEN${QY׷3'5F 'FvIlvS{\fv/g {w>Z⺼=R>kt0Xy+<=-pH-bVrm>1\%?8"@O+_XSL{u&+0-E蟛4c 1׿{FZyt/A4N+=$ku9 pa?&[D endstream endobj 75 0 obj << /Type /FontDescriptor /FontName /FDPDBW+NimbusRomNo9L-Regu /Flags 4 /FontBBox [-168 -281 1000 924] /Ascent 678 /CapHeight 651 /Descent -216 /ItalicAngle 0 /StemV 85 /XHeight 450 /CharSet (/A/B/C/F/G/H/I/K/L/O/P/S/T/V/W/X/a/b/c/colon/comma/d/e/eight/exclam/f/fi/five/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/q/quoteright/r/s/semicolon/seven/six/t/three/two/u/udieresis/v/w/x/y/z/zero) /FontFile 74 0 R >> endobj 55 0 obj << /Type /Encoding /Differences [2/fi 33/exclam/quotedbl 39/quoteright/parenleft/parenright/asterisk 44/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less 62/greater 65/A/B/C/D/E/F/G/H/I 75/K/L/M/N/O/P 82/R/S/T 86/V/W/X/Y/Z/bracketleft 93/bracketright 95/underscore 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z 252/udieresis] >> endobj 15 0 obj << /Type /Font /Subtype /Type1 /BaseFont /DXPFRS+CMMI12 /FontDescriptor 61 0 R /FirstChar 59 /LastChar 98 /Widths 54 0 R >> endobj 16 0 obj << /Type /Font /Subtype /Type1 /BaseFont /NOOZVF+CMMI8 /FontDescriptor 63 0 R /FirstChar 97 /LastChar 98 /Widths 53 0 R >> endobj 17 0 obj << /Type /Font /Subtype /Type1 /BaseFont /JYCOMV+CMR12 /FontDescriptor 65 0 R /FirstChar 58 /LastChar 93 /Widths 52 0 R >> endobj 18 0 obj << /Type /Font /Subtype /Type1 /BaseFont /FXXUVH+CMSY10 /FontDescriptor 67 0 R /FirstChar 0 /LastChar 0 /Widths 51 0 R >> endobj 11 0 obj << /Type /Font /Subtype /Type1 /BaseFont /KIQWYD+NimbusMonL-Bold /FontDescriptor 69 0 R /FirstChar 45 /LastChar 116 /Widths 56 0 R /Encoding 55 0 R >> endobj 6 0 obj << /Type /Font /Subtype /Type1 /BaseFont /QWSGPG+NimbusMonL-Regu /FontDescriptor 71 0 R /FirstChar 33 /LastChar 122 /Widths 57 0 R /Encoding 55 0 R >> endobj 5 0 obj << /Type /Font /Subtype /Type1 /BaseFont /KHBCGK+NimbusRomNo9L-Medi /FontDescriptor 73 0 R /FirstChar 2 /LastChar 120 /Widths 58 0 R /Encoding 55 0 R >> endobj 4 0 obj << /Type /Font /Subtype /Type1 /BaseFont /FDPDBW+NimbusRomNo9L-Regu /FontDescriptor 75 0 R /FirstChar 2 /LastChar 252 /Widths 59 0 R /Encoding 55 0 R >> endobj 7 0 obj << /Type /Pages /Count 6 /Parent 76 0 R /Kids [2 0 R 9 0 R 13 0 R 20 0 R 23 0 R 26 0 R] >> endobj 31 0 obj << /Type /Pages /Count 6 /Parent 76 0 R /Kids [29 0 R 33 0 R 36 0 R 39 0 R 42 0 R 45 0 R] >> endobj 50 0 obj << /Type /Pages /Count 1 /Parent 76 0 R /Kids [48 0 R] >> endobj 76 0 obj << /Type /Pages /Count 13 /Kids [7 0 R 31 0 R 50 0 R] >> endobj 77 0 obj << /Type /Catalog /Pages 76 0 R >> endobj 78 0 obj << /Producer (pdfTeX-1.40.10) /Creator (TeX) /CreationDate (D:20130130133540+01'00') /ModDate (D:20130130133540+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.1415926-1.40.10-2.2 (TeX Live 2009/Debian) kpathsea version 5.0.0) >> endobj xref 0 79 0000000000 65535 f 0000001127 00000 n 0000001023 00000 n 0000000015 00000 n 0000105066 00000 n 0000104898 00000 n 0000104732 00000 n 0000105234 00000 n 0000003007 00000 n 0000002902 00000 n 0000001217 00000 n 0000104565 00000 n 0000005187 00000 n 0000005080 00000 n 0000003109 00000 n 0000104009 00000 n 0000104149 00000 n 0000104288 00000 n 0000104427 00000 n 0000006600 00000 n 0000006493 00000 n 0000005326 00000 n 0000008115 00000 n 0000008008 00000 n 0000006680 00000 n 0000009424 00000 n 0000009317 00000 n 0000008206 00000 n 0000010566 00000 n 0000010458 00000 n 0000009515 00000 n 0000105340 00000 n 0000011653 00000 n 0000011545 00000 n 0000010657 00000 n 0000012786 00000 n 0000012678 00000 n 0000011744 00000 n 0000013927 00000 n 0000013819 00000 n 0000012877 00000 n 0000015040 00000 n 0000014932 00000 n 0000014007 00000 n 0000016209 00000 n 0000016101 00000 n 0000015131 00000 n 0000016827 00000 n 0000016719 00000 n 0000016300 00000 n 0000105449 00000 n 0000016907 00000 n 0000016931 00000 n 0000017134 00000 n 0000017164 00000 n 0000103608 00000 n 0000017410 00000 n 0000017716 00000 n 0000018094 00000 n 0000018562 00000 n 0000019535 00000 n 0000028405 00000 n 0000028640 00000 n 0000036049 00000 n 0000036270 00000 n 0000043650 00000 n 0000043901 00000 n 0000050876 00000 n 0000051100 00000 n 0000058248 00000 n 0000058523 00000 n 0000075872 00000 n 0000076380 00000 n 0000086295 00000 n 0000086580 00000 n 0000103157 00000 n 0000105523 00000 n 0000105596 00000 n 0000105647 00000 n trailer << /Size 79 /Root 77 0 R /Info 78 0 R /ID [<70436163F2133D5B7FEEDF261FE02037> <70436163F2133D5B7FEEDF261FE02037>] >> startxref 105913 %%EOF eztrace-1.1-7/extlib/gtg/extlib/otf/docu/tools/PaxHeaders.7332/otfprofile.pdf0000644000000000000000000000013112544237152023720 xustar0030 mtime=1435582058.527899952 30 atime=1508138917.940968463 29 ctime=1508162367.14185561 eztrace-1.1-7/extlib/gtg/extlib/otf/docu/tools/otfprofile.pdf0000644000175000017500000107756412544237152025134 0ustar00trahaytrahay00000000000000%PDF-1.4 % 6 0 obj << /Length 2721 /Filter /FlateDecode >> stream xَ]_p%aX$ېm 8dLG<&(-#FR+w$H$~$_O6N$@U1l(&R{:T2ǃ8ͨaU>߻-mTȄ~ju=zuI"ƻIWQy3&TⓈٙD :5,2q.tw;]Ns_R׋r?Ij4Lm=m:¨5Š?]Ӱ`Ro|[k_$W苑qeזzknHnv%d2},U͋}_4<駖]5] 0 Mmb+wbGc|>Wp@a< p8\8o5SnH9Xiu--+lAhRApDw]ݎBFRpU5{PЍ '/?"1zԪy96!jq+n/pkSS+q4ϭDD#7R{+Pa~y=˿, ؗYXw܇lz/ ȧ`0/8x,J4M w6H~a%SE=FX1fn%/Gq8F׵6]%T,o0DIJc/>O@ٮZ< S*|hM)~@|2V\xpE- H8%Nh&s|U$p%To.x@Nk*R1)JsO #Zf #H&#g{Z!ȤjU_H- oKő p~^:S֓T`6]G#';z=f3bvS[AB{ôA:Nj|2t(%>ْjΫe7G9E]_Q"KuZ  {Y'6lj<3q;)nx5hεH(Ӟu3(?)Yr3gQ'}Ň%ojC>|0^4km{pU:Ds2Xg8yU|V:17wԤg4}ky8~RqR1^ákRv,ni-:"8s3E;d#%rԞWQ:`Lg:Ua41oDJJzg,bռq¬kqa\v-~FRex'nv>{i46,`u-wIUg6ZpԻ;Cn݅wV>>= 8-0fR+GLa]@|-h9lZ]i{Lcӭp:oSۡ'|; YXWp{QS-hwC1S2)KwDw>Sܿ7JãI]B*9LSR8xz8j6o&BOXVlU;õwTRI_?*Ǭ'd'%GFu|^hSoWj|\ts6CYw'\:әss߯޳|/+~XeϪxuCgG bh ߗ |=S|~/`Fxa&{8Z8^/AwK|x\? ě}pi~N:4M܂.t,DZ΃4$ endstream endobj 5 0 obj << /Type /Page /Contents 6 0 R /Resources 4 0 R /MediaBox [0 0 595.276 841.89] /Parent 16 0 R >> endobj 4 0 obj << /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F16 7 0 R /F17 8 0 R /F8 9 0 R /F18 10 0 R /F7 11 0 R /F14 12 0 R /F28 13 0 R /F27 14 0 R /F39 15 0 R >> /ProcSet [ /PDF /Text ] >> endobj 19 0 obj << /Length 1610 /Filter /FlateDecode >> stream xڽXKo6W,rJi4u"4Zv K"RvKz^yH=6\Vݓ<_oyYja-hͶ~\xtl qw@ ~yiU$$YC "hml(}dJhՌHpެn( ,Cˆk**b$IE_(Z#|~z*W~RE!?z8|ߘ'ݽUBlȁj|Jg*HI-p{rЊwPrw_a'#q/p~-GKԽ6djQ>/pB;/U#CZ JX_':s.lpΒcڳnh5t46G*`Ç7|N6;:7*Қrو=r+ޘc,7X?L&: vTOn=>ГwlY5DMw[V DgÎT_C>uF'u7i09|T[:X)f<B^LXCfy[o/wD֒9,QqTxe qx %0dNH"Lƍo~PQhՁҚH$WnXkցQ䥉P:V9>}qN $'˧qaj] b ͉V_P "-M yh.ӉʵX{zAGLсB-$}&mBPREUرWQxf鶢ĉP見}mf3s]'JtdtnqjE4\FQƋ[ua~kjxI *X>.}[zEM+ܳm:wr@GߖT?"O=舑pP^|nh3+ga7+j+B#ΕnMGuio9k6Bݰu$'{ɷB -.Uޥ`wk ph>zħ2UXa|A ىiW?>z5 0BE&H2q%kP׉:ih!bdI(0 r ,pAds\U\_=J( )l]BP}D'y])(mUЮ>_\j|wskکE qF'AνAL_|cM^O !01(7ȇJz2gE"@q[Paq@5wT[RP}U6P̹,a?$ endstream endobj 18 0 obj << /Type /Page /Contents 19 0 R /Resources 17 0 R /MediaBox [0 0 595.276 841.89] /Parent 16 0 R >> endobj 17 0 obj << /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F8 9 0 R /F18 10 0 R >> /ProcSet [ /PDF /Text ] >> endobj 22 0 obj << /Length 1074 /Filter /FlateDecode >> stream xڥVmoHί؏F*}::RH'VX6grfk@N>v"mnli>UqWE|`֢T!Wo8sBSφ]I8Roa΄,(R7kjœzJ](@vm i^{g8,IEz@mi$G+\1J-B;ʮ̡Bq׈6{3Uf잝G;s+*6 cn7mN?Rl•P 0ͳ%O[:cHdS8o= (i ABw$ <  t s6 ^@Lc-3:|}֒ %<2?Atg8q] endstream endobj 21 0 obj << /Type /Page /Contents 22 0 R /Resources 20 0 R /MediaBox [0 0 595.276 841.89] /Parent 16 0 R >> endobj 20 0 obj << /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F16 7 0 R /F17 8 0 R /F18 10 0 R >> /ProcSet [ /PDF /Text ] >> endobj 25 0 obj << /Length 4189 /Filter /FlateDecode >> stream xڵ]w۸+tNo cwdDi{NGk+Z[r%9"`PFd0,ċ<`P#>zy}9ykaGB3M>;rN3hr;8=^>+gƆo_j(f3_.GM~~q6yHgӎ07>~q}OiWegsLho#ςSk {H+;2ŒX -&7`8Rjʹvǿ 34uQT.2iǛzvSW.٥`sVϫh;ERO e#vYw=۵0,eO* ŴeeHɤWCo]a$ 3NlOF;ˆ%$ڶ-?b(dC%۲BsÜ@b@Y[Ϭ諜/pWM:MtzV4<:7r!Rf)a3mVgB52zA*0H쥜,Vd0F=y/|Bpށ-s7 [.n* ('z)' ܕ&"eX'pO½7JH2fy]5z VXhYeDbDoir~1JtL4 z {j{ `P#̪{5@ᷬR4r\n A#('z)' A"wew4hC^rk w0OPԧ:u Mʖ&\TkdB:KCWگ8+5 f*hho!`LI|ϠFrQμP^"{WS:WeO3od4tV3dh~q6N=Aj52Ѝ府9gQt ~ eйM(.t/Oo~z?9|O`\` *%UUV#HDc$d@T|OzLY*W@#Blwۓw˳'1U D`nnDU9;҉\Z(t+lY! D3Iyןf7_kwFP?fOyuE=@:upˀ30'(Cu _uUgmޟ^ë<(̊~,%lbə6?(c, o_! Rfain>.Pm Eyՙq"H7TN+}2(A izͬÿ@6N> *Z6Dv~K^[lrޢW9_⯈WG35˰0(CJT@=>fRCF H4+R($ft>pwO6O:;+B*uPH`V07 B3Rk EC($P~z"gD.4$«0rU DbnF"f$1ܲ` !@=[=XೌD*8ܻ!|`Dd"C x 0*C($($hhIfOW=V}>ˏDgz^.n>,7Ӧ965V.Zmêl|Yͦ]a]֎֍׳Ym]?^/ۣusruoܮU9MI`;:vVOWǖՎyOnvӵ骒1b> endobj 23 0 obj << /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F16 7 0 R /F44 26 0 R /F46 27 0 R /F50 28 0 R /F17 8 0 R /F8 9 0 R >> /ProcSet [ /PDF /Text ] >> endobj 31 0 obj << /Length 3928 /Filter /FlateDecode >> stream xڵ]rF}W𑪊&s䍖eGY)Rlzw JԒo. O^(>=Ӄ@G_Ft|=}[Gsz;iIujruv/?e:) -(> ƿSEGNWEa:+#6b(KԣOv2]Ύ* _>ֈ4XjWQFSk-}`Dx{FUy{a]AP@ې oP=_cx/>mW hluQ۶"`sVD;X *K$s&'pYlt) TἀhkΖ˄,w!%ᔷ=)bX%@L 9ȅ&湀B<m+g7_2]?^lz[$0Ԡ1;eA \~-J{:0n9CSDRKgX'( 9 _$'XBZ6 ☦2@FvàJ`dA@2ǧmq`:TfwpD(̈Z# 3HR|ts>97gWEs `9p09q Klz1"T'庸y';Gp!P4C@ s'V 3sefӈ6DZbHHѿ}#O.?^^_\iB%OASl"#!7ãHJ1N5bP!& E=zl=Z_ !n(X ʿ?hq2(UT m僡;8G0?oy.B010%Ls ɉ[L0% N#P - Q:דɯ'Qlx}~`:tUe$F:!Q n$ af.ȁZCvu0pO?|‡%p ?ȷٙaNI IZY@mnM< R]~wJ $`n #t\ !d-ͽ΃K5 \|`:dUe#F@M/Kb`?XJTF:PԠK]:p`?S-NLr"JtF3 eFX=z B8Px!h0r}N\+ \ ]HJA.t|߹I8wPA>vU# FH? 3Bȗ ~XIHBu="Q`~샟#WL~mdZXr ܥ8I ȉFf|azryq lQ4 Ҍir0%fI^Ή]Ps(k`ëNͶ"[ԡ"b(ќI2ےĤMN܂ M/GX *u1`}(rc)QR9SRy-&ܚc8BRћ˲8 i~r~:y`{:TS)J$%nPeK)̩TF ~)HQfĈy8s1\hjZ>@ֈZ `lxʍ# ,-dE+Z鶫];G9[.PrfرhaNṽ.iDbqIY,ex:IrED*2v˟0c 72\+I#A(MA q!Q C^An1ۿC֚Z*.A*8nQ!;0Ԡ1$$ƚS~ͥQL ZX &RN#}qT) eߜpԡJ,#@+D@n1pB "hR;u YB-PWA[ Mȱֶτ2Pp*)2 Z>^IhaEZ@*h!v ,e41jAnNwr,M/O&TlQ"*cg*b5BbhdF̂(e4IOs~:yBӓ$0ؠ! 8yU@~ `K`XbLb67'pA Hp8U4~uX-WA[<]'61XG(P ˆSU(*u[p:UfVMVw5a7}V ;Ɍ5J`80$M}u[\ ^5JhU*A0ku: Z m~%,V4orF:߽ȁ1# 2n 1cnّGZgelv[l#~knonv=~1?~[ ٶ[ou|f;`źM*q)}\5r?ʸ|Pl  >E=7|\_2'_f,eƋmu>nnvSmÛ,4Ζ6ç͢˙5X?g5_w]uQ|VMr> d9jSlFv1o>vaĮj6/7ˇ%x/)hc>V?-Fi#T[?[G=`'WgϛC$8f\ch,|Xy?{X[1ݪJ9 ؾh΋Ԋ7O5P$; ״: Vu[E}j{nkۢ.E+eE+TajvQJŧ<^=mEIy%sȱ,#VĎ$ mHWb@r MSZPJs9BIN 1Ҧۀ,MWu0^t_-#:Dhe6DXvjr ˏ7 endstream endobj 30 0 obj << /Type /Page /Contents 31 0 R /Resources 29 0 R /MediaBox [0 0 595.276 841.89] /Parent 16 0 R >> endobj 29 0 obj << /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F52 32 0 R /F16 7 0 R /F44 26 0 R /F50 28 0 R /F17 8 0 R /F8 9 0 R >> /ProcSet [ /PDF /Text ] >> endobj 35 0 obj << /Length 2843 /Filter /FlateDecode >> stream x]ko6_6u 4~. Þv n^H=HQg4.PdƜ3sDRo->w*$B*^\oFZ -6:8Jh8Z}r-xl||pbgl sK OXŕ;fD/Vi}_1"-X!TB&Cq}a+\+~ ?,`-{ƨ1--#A5Riuņt"ѹ;~Ž4s8p+I Vպkdۛ6_5T+ŀiI q)]=(`6߄ 7 ")VXQH'YxLɊu<ۖh<& ` 3+yA TTGYwE!xOcJ㴊:c٨8Մ̗Vꄶ.b]*$c3X&poUD l@PZ {B-~#};@Qka  ;yx:٤dSCM #MN 55Hsc)-"+@b QZsD~VJqœaԴ(ȐΩ r]NQ%|Xt h|s녒 E())5'eV+e$Oy)JǼy̐rGbrr2 dBϚΒZ4F XX4dQjD#ij9tʣW6pGW!3</@\:"ʇI𿇢=x]jR72{nHV}+d 'K UCJ0XƑ1 2tZFӟ4DJ׳+Pe:d/oKe2Q;1bb)vἋX 3]0A[H+`n^Pkr71QNҢd;vy-Σw )jeг7F)Yx{d!-䶱X9@7 ^Xc1`P{؅R8= qZ)rqc!@ֲXNi |>cQ'VJ+P]/+vUڌ5vb-(f Ku+År6vʢvqeƭ򖐹Qtsߗ$ɭ(NzzV_9kNC#N |㎒S{@b¥$͌(If'U}x-֢w )ze = 쁏j\'ѣZ)B^Ϲ&NW_hHV %/ y0%dkۃ{3K&𤡿"^,vUG%q k}#&=KxY-|lS*Z^oixwpS;(&: r endstream endobj 34 0 obj << /Type /Page /Contents 35 0 R /Resources 33 0 R /MediaBox [0 0 595.276 841.89] /Parent 16 0 R >> endobj 33 0 obj << /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F16 7 0 R /F18 10 0 R /F45 36 0 R /F30 37 0 R /F41 38 0 R /F28 13 0 R /F8 9 0 R /F11 39 0 R /F7 11 0 R /F46 27 0 R >> /ProcSet [ /PDF /Text ] >> endobj 42 0 obj << /Length 3068 /Filter /FlateDecode >> stream x\r8}WQ/T:8vz\,Ǭђg~. h%SH=8o Nޝa엷D'Ieru(4_Mru>M7jy~]LWWm"#vFJ꛳SDF1UF& wן$)S5;{sufL4'$,.L#g1E3 pR#'sQd1b6R{/5ZB bU]Ɔ>9F:ER^R` \!$ N%Ϡ⌂M É*gFu2AĊD:37{rĽm)ze kcm2Y^[Ȓ7< JrcC.xpU< ^?)MW)T($M1 ;S eҜ6=Xr!(xq! {c5`" o~7(َUCp;.0OQF9> ]FȨ\T'!Ek >N -jH`8oexd>n3*))2 3ȹ&vT"b3d1%j)#[q4[= ;Z2g1-PfMXOdDn^$I ҂DRQ^1yi%ǔƨBX[9ؒN, ga;-ANGhOZB"I0q[_Io__?~ۛ_xQ:Ip~.&8b! R+8FҀ߂h;H K![JKn98NL6r7!8ڗHpQނ#SpРu3me|K؃USG ;&vsL|# * /*(=@oP艡^}fƒIv MVxzC46 1bk$9@ZK>m"X'6hT"$l(9w,C >\F+Ćb5i(V!4<tnti˜_x,!Ou0N2"1ZGrp!ޫ.l&Jm%O+< `u)I?&) Ҏ%{`d?:M!<&mkܦUU.yʃa:) ˬ3x`ԙiԮCהc愋c   $E4X@L[&FfDO#<GU/ǰѮr|N+ ,W9 £ķ[ΊeO/?_]xsX(]~yuaŃBPeծ@! 0SmSvXh/(+ ^jM Q\wp(eSwb!!jC莒'^Qե;~5[d!t92pb7G@+T"QY W 跡sCnf-!Xw``a&vT 0.d񞼚 " `s9bEvx`d;z' 'u\TG;V9y.s VV 7^htW%ݪ:@ ㇗Yoo^~nx_Juyqc+儵rpJELtS`s4J{gהDɓRW{ $`+脫,wG=X5@BO0ˑM0#5Tr\x{7BOwBVܢtJ Տ,X3 7Fѱh{D=7~ ݛgf@8ִDH$줉DN$DlJ$cJe<J `uYُlhJ)}jSz;2~ܱq5E g)qʤ; *jZJKsu;5IIܽx;ۉ 㾴=Um0*~'0λCbf{lƄVr5QޝSo,,JX'X)0i* gVc?) vJRs1nX!fU cCa䘫HG)υw,@ONa)Yu*ۿ4hcYNàD4:BJ&[J˓5;ɱ`tRF}{Uy.&^3ި)_[hg ;rP}w$UC6=&4Mv@*-,ySOH:Z"7D͇kvOA,Ψ$"7,˵vd{`!φwA-AN/9}o;N{ T-1>3=sGsFG?%M|7(WjKb7hcF_ϡ/w|Y4`LFw3w"]B]⻫~3Yښ6ۇe.|m &].{ϵ4<OX3enҵ{~ &O>lKLl2߹&w3ty_LK;<]k>TZ̶S\I< c#*lat\p d7&ܾE=鷻4)C RGc*\vHG{w ݸc_B8YN}Y˲x[baŬ?판zQxH|=gŕHy.ou,%ۛd;C>`0nfEv^(^N+,$FE~'7p > endobj 40 0 obj << /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F18 10 0 R /F8 9 0 R /F11 39 0 R /F7 11 0 R /F45 36 0 R /F30 37 0 R /F41 38 0 R /F46 27 0 R /F28 13 0 R /F17 8 0 R >> /ProcSet [ /PDF /Text ] >> endobj 46 0 obj << /Length 7792 /Filter /FlateDecode >> stream x][sGn~ׯ8TrKJljS*yphU:MR&> ̱7F1=giqtoވ%WI*5NN!xp~ PߜF1ޑt?8лI2~`:J1o, slf#F^[]FK%b m؜ KV\\<ў&L 컓bA:鍲53]8صBAʻi;CI=ÚJU\pՃrо⪀|T V~g(%EVXpCzQMc{b N 7X 8N z.:WqUpm*g\0ܷ .F s;m~ #\,n*( A;Mõc -x՛ ]d1X`!X\`x\`XX`?@o1,&ЛhD`>*g0؝Oa<X8`=hn{cMP QdOh7O8!;$7+U%YXG2h0Sd `L5i[TdpjsnfkV` êL6 ֤f༑\[ wڪ( Ga@2G5i3mǐ>IaU:;ql"j/i3Me,Qd<-zG%ocW]}mՀ4 PrnozGjy7U jVJpWYjWcjV/Vֳ3β0pg1~_ag=,wVw6YlHg~ѳ&6{|=j̏ǧ~ѳfYs|=띍/z;ÌOg3j+<w? ;,aoWQ~ܜp*yݍxz/Ifdshi5tv8 9Y\ˆSvCN8%838("DSPEj]G~G`oh|"sVR0obˌSpWJ…I).OCJҢ pzǵ1F!Bo \Zg"h'n*DHX \`Xkaap#fղh3†A(U:A`q\j ,Dւ6C`^#Pe)'e *l#"CXWI+1;VkQz:dv 5Ԅ#$Xfd2 un1O6=J묝4T Xlo "z7]X1@sɝ|S\5X<؆@u0|6E_|iF\Y@&:T|O"< :V)ޖ[O!⟇~")w q]RZv pvUtPym0ZAL(xpwZ̤npd0+dIg*oHȗii`qzS L`ڇק "IEz ] g"ĸl &Zg" 5=`YAM IhtEAΙ]&&]ę wdƮ[KA{^$mMp[H̠BH5a iۚ ܎5MK Yյan[I HKDK*cs2GE /E?xJp:p˙N3"#6JЈpРF Ap"^`zlHޕfӈHwO# 5  |=n`93ǻ{d!BEyr{cIQVUZ(!z>h&]]*eRF Įܙ4[URh,H1]AeDz7Na`^\ld!J\ᚬIS? ^k*͂)\]N4aꥁK$ה肅5ILbw&A7h| vT 2+͉!:PbP +׌XF4/qqCNjR14/.7 F}}`!#Ti6s Ѭ0(٬P1j@ Kn0S_OPhcW8+(aMڤ(/~bk +pX /'er^z0!h^\l[@L z,XLfp? NUC_i^),rtj\jH_&$(R%^ZuZ /_M*(XO٬ g¯6|FBQfvƶ`+Fp[1x~RPGI` `i+]BЭ|(tIJ-ki"8!z\Vޤ65#d`Q LjkLL)ӵI"+E*a%6,B _h"BT RKl/kx+W{B#,JIӤyW|áQ17$\ȋ+|z|nFt//ooָϯϏ?||9?Š_@?p?-%#}W|e0VNλw#OO?s5KD#|!#|9F%bT#[[5e9x?4[3|ͩFtfАnDkАrDpРvDu@zDz@~D@D@EhH[ڨH4:6NJbBRZ6vj6z6ۣa(7Q^=+.:ҕF|âJ +Jc$UiF7\*oH𣷺wTӛ~t1IE5hч'!D${rxI@⑇B';KhEG>CPcN#9: D^l/V-/9ZRTIZMKhgYzgug:YֳYjhYFwuh:]V]al.+ZrvWmtWX[ˊ6+eEݍY %=0Gh:]VX+tmtW[ˊֻײ18X^oô ah5+,`.+"(+[m]?C*Gさ[bePƌĆJ17\e2Zmhqv1ת\pQ4b̐p)"j0(+my,53j2F:۪w&5hl KN?ApqSu8m^[#kxi8X6ۯ>P[Wij*Ym}6-\25ںmC_vl~'g5 gkn,&7SAe&tT4C6ݹ7ݶY7ٳddžu+\b횅+;٫YM6jp]ynf\*Sz٪"P4a2H>m 򥷴 r!~1xUu~*"v5REuU6EuU\la)JĻjԟn7X;\﷫m."??鸮V5 UIwj4Ҭ)QgTìx -(^b sYD{T%{uU8 Vs(_.*ޯxJ, :wB#L ! 2xQUQ^MU1^];UQii/FJK  닫pZ#5jS的aYr"˘BM"9gÜ,^UrVVK=+РxSMIEwWWuZ!ML# hkyrwꯐw&k֨2]1Y2i16iզ2e -*+t 9yIa|FW6$e|ܴ֨uF6٘]Q_ӤPZ}V矘FPWiN^f|YAp _,YCݤ{=VljleUEM|I[r+ޠ\Ǵ }<15h1qUda6q妑W2^Ei4ZUi-L4:5^'[3WZgNhu5=EqezbKOO%^'V:_彛r.'*񛵿h}Q|y_dxhclhFĹ3P<=YmGE8 8-6@+3 n [?-6@+3 j :-6@+3 n :-6@˸ O);Uf"h& cUiFj:Zbwp {*a }/7OTz9vssuwwuuuuwwwwww{V[=Q vZ¬0'e6NT˨2lD :Q-߷uZma'eƉj ma['e։jv.}j41DIA4/<}4-_T7:-%Њ\s_t_qQ(92 )2u'B>ʨe')qpI.x)KVy "$ꥌZ9I̮.x)KJ@)/CZL8^*/7鼗7k)Q/Ak)2jKh֓];]R,,_aun(/^邗7?#Z73ݵ_6GK9hCG㶙缃7\"~W|Q+N 4}W;]RGuQ^f'av< /1h `چ jKGö邗׽d:ZXHQm%wv];Rz,Rnia\Z?zxg&_cT0b3! ֝lmƮ ɹpH-2&}7cyHM̐kCPiIkQZScҋc"fD]vjA9[ZTƤO},TGf'<2@`0!:|n!'L[Õ!elDBBa{OF19vj a|2{{`c%5\c-*{c0{Q>PXٽ<76]<|qcQs>ڶ\=F?)XϽ9QAa3<_wA}JGOpkR*mjey85iRz^ͭ2Xp=v|<xcۤH=amGMf"[,ݞ*%kx~?NŒ.Op= AwqBDNu;Jo^'qWUX ) Ӣ*FJ.Ljb)QH 3'J. ]W*Z]ŅtݸO%]F8@T&/toܧIx.\nDN^>lkӤWZeŲYc}Wqak5ZVsϳ#*h1#E*μ֠fMޠKhdSmWq9 wx*'FB"kl=ݝf$v +* JtYaѫ !ƫJGBT jte"YaѫP*kCNk4JT%Wq7Xxz5 xAtˆo6/_Kī *q_>Netr$|K,}k GIwnBalE{(K #}ݗAx˺.7oXVeRD\1~{T nB:=I?OGYk~H/3{=7ZBun+4^D7A3Υ/';`^Z[}7yU~b^  V$^j-U+҇G/|,`N\]*< 7g]lvz".p0=x5~D ɇ"-– ʓ 1UR:7b{d0Q|>}{b'Tqj5aa(#0/_tݭNZ^*6}^qo2ڻ6(}TGGO\\UƤQ=|YU57jSlDD1@Evb6me SUȐKFOw1qJ9x×$-K /1fE3뗇w/_ro_症YI׬(i8%˝|q? ;}y ;EBܜKJ~??|9^n O)Tٴ3iT?<Y[y[~6x<@bPl4O/k~.@AӒ~I0'cw/9삦37w BkP}xl=8Z2?,?<>(wڛOP=%1 ![&zet?9$'pWy2/~Ag!2N` ?>fҥnk{4`PIz> endobj 44 0 obj << /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F41 38 0 R /F45 36 0 R /F50 28 0 R /F39 15 0 R /F8 9 0 R /F17 8 0 R >> /ProcSet [ /PDF /Text ] >> endobj 49 0 obj << /Length 12415 /Filter /FlateDecode >> stream xڭ}MȑEI-o\e;32ш75dffHD7"=b?9Ïÿ^~[zCr尸r+oGϿ??}{:O_k\?zK5/_Ö˾l=釿=T{Y.~/|}te)k~pem~w >6Tʲ|xq n5e/cxRS9zDR:-%N ‰QF)jNA#ᑰP$kKoS9:9z c^_wAi]&njjz1-GL/{S)|OT]~/'5*ى%gwg&5#c*5̷NkgikΨU^pi](/.._(մ"BŒ(8܍gվԵFbtl$9FW`>9VT}8ѝ|4'T *2;?  KwΦskΦt#^&8@k2!U9/[f'/Ԍ/Q\4Oj zN:Ksjݗ;%f&l5y+)eYxB*,NXLft1 Jz^PE|9Z쯞TZW=?9b9>JE)rԶ_-V;ND篦9PkZ!fuCJUTU}9ϴkk'V*%yޝOXRhBjf˙Gj,†9|Z*3{ wfV31tSf >ٞ_WϯZnŠ޹Ɣ5 *u;5 svŴ8[jҋSju{"L{^_=V7BZ:"z[M5 _VZTZ姊x|Em0;/W-m`_rz )ɁZ 0^OgW W3S/5Gjzbق+k].\k]SQ~R>\HlXZͮyUxFw.Ky|9zYeD+6X%|*pYɓ#5&a+'U-{=V΂w/X!L{ZvV<[gZt /~Tgߪ<9RcV!權2:[fZ'NՍV_k3iՂkɳUuwP}WeNԘWH9r\:[_KS_u{*5Qj _LY۶lN\]l{vzrvY5 srq !N*߳4C7s-_k3iՂ4VX~UXk lHU.Kwrִ\6lqqC1)ѝ+a]i?pnΩ|J~8hBĈa\tXm~Ѳyge]$$ :ŧG⇐K!D$ HIbji$PŲJu&$xW'A*NXus@v@6gs!e'\a HeqqKX#BYS BELle k9e="yC*8p,V@!?!e,@vDA]< ]" C/;h֣'pK/6.ߖqrHAG`Xl7f^X$8$$kJ}hh]KPR| /K i K,ϵ zV`&, /*&`&P'=tO{Y$1|e""]KmO zF&U1Kp͈R*`S (жhSeH*Fnq #L4H1Yَ)kaBO,,z*qzD^ t8˷Upr0zcGzDvƸ~[*,' B`$#tv `h#(Q]"s5B2r&BH?B-FqnVrdmtnwQ2QH~`E#m"m_wlOzf`/9(D!S9{`e;*P%}T($it`,HB76ul d /ڢ\f[/p (B4phhk f{ep~( S@[-e;cla lwO[8^4 ~Agn# X]m h.փ'=fAsPB*͂m=`W)hMUVw;F-zWZ^=)w[j7q;T 5׺:I"x<]| g.^PԒ$Svpoܸ #'<|1ia,׹rM\XL{yy+@|3 2ӹTs]ߛs)wS6YHL"gCB#.hk\\-9/DpA/t61S['RƯ0N,pvkCBC.f7lTJؗ"ApFmن6,Li!"1t SA%1|6p!Ea?bzŅ2HiL!炩cDnBc~nK?E2t a2Q".)4j.7 e<~d ! u.dkDtbPuXᬭ4LiT)-'@* @P slGneN|H THHr\J+Qӻ5.t=Z jqWOl?7(\Sk[5 .+ID k,I6v#Y&Vۭ ®_ zH46t7U[RhJmW<>\Nos} {v1ϥiPH9|7r7~Dƴd\m+@$l7b7m=dbVmk*vdm7+ &ΰ1) [n5'5%p*AAgiÕ޲7"( \pwj38~HƬ2C8df|= ӊa)ӗ( @Y7CJnp!C&$7`K j at 4<~Ls a?aVs;QnT [dww!7CC&fe70q-sٝ$ Px+0;; 0"_^>hRNjє(Y㿒>DATRl4 Ty^{i ʻpR!EI#P"b7JÚaRxC` o_.) B.t4@~iv)o\ M录5 I!=,.(m 0h_ŚϵA>E!Itp0DociT[kB:IS>C.f7pqkvnTM(\\0N7 Tƅ6DH!"Q&хTƀ!*P~/j $6 ppt1`HǬ:LSQvt$.fBH%n 1;J<)zHĹ¥8Tŵ9-LZ| N DbbbQ&хTƀ!jP3BD!..fb|H5͇L̪q`Zǣm8b8TǕI=I'm1db$9TɕYM9[ (GuBE9JʵYUye!cD *˕6V[(S(I9T͕xq6ڻLJϥyG2Jk{ۥ~Z߼\f=t59L )ɵ5zJݭq!t&Z=-$ FD!B"W8 L )µIh۷ԓc8 T~7:[8ލ ]/ Q=;"p(Bnm?aVs7.5w1&.HLbBLaJ&zSY_0.O _;~*o&;Bp0Cፅ='/B:N2fuc[{ xuGR\+ ʺ`O([duBUK'% ]W($^\ 0\ii{>lF# =∉hTCZY_?+/s򻬑)gL.TέS_Q/=*;H53 Yڎּ9ܗ<[.N \.](l 0h 5ss#`%;7ґDN3݌Nn6蘖Ν+W HG"`a*ч|Ŭ.;{;uH4SDhcI! l\Q jiDFRLTirzu # &(Mm 1+ a#w" k )kFBZk3qCD !C2 F'RaT̊l Bf~o[E `"]Hm 1 KPґKmRkk!r>e=87Tr!IIuw{@ )݀R V#fwgB|>a1QY1ʄJp1Bk*pm (#BD+qm> &8%xu@HE!GIK*ǕB4’r. ptt1VRg_ґDNSNH]n 1ˁ+]HG"`a˵I]\=M.r+ *ˍC:t9qxܓ\6\P](ąƀ!9BB: ``&FrcI]tX\ ,t$9YrD>bn 19qyQ#D!8WxaҐ >DBjS Mf B~[2 ~h8 ctѾNgMP1*h cRq8#¬` Mi}6r1@..sO;+*k_J:@/񈄹P`/l]#"_}(TѾP#&Y~B2 P־@GD60پ{/@* XIب o_ha5׾:n_9;(HN: e<^d],(H ֽ@E!IE ͋Q/T zf !ZE'uq,^@$sA`ڹqaXm\*dNdZ\<M ~Hd c 0gAPֳeamYFˢ8T ApA;E!نqa T(@'0szĤ>搎#r2,Grt"u1`@ƴ,odX^l 8$L#Le9\ 1eOi!E2WL̍#2&yB򣍿̩B0A9L ̍#"fyg%Z|#.0 sp1`DƬ0d{eE"q0aA0a0C(sm>`bR7,]kX'vkBp-&щƀ q"q0͉A0 0ӜCNm>bbVsv&,ɹ؀ (24'Ts!:I(0%gQVU /LsJ5'8S՜Cr봉C2 9t!:YX6R1A4'I.\tjѥrRs+G%kT rYP9x$iNX Y''P7pمW\(MυLzlǸ`$2.Mt!q17;LTp M@DBn*!r0f.v=TMo \D0.C.&&Pa=08Tm&:bSy@6sUb$p*(ךBiMm?bVk!9)uvp 10 (AMe=aRhv,YK,) )Mqe0.Cfu&`zap"M^=^t oj!xkҁ2 VC"f6amK!_( U0\mi;`RmwLī5R Åؖgv'T)~T /A6 YI0D0H5x'R \j+a0)P0ZO|q&0H!VD*;H6 J[ڎW9!sp, mP\i̥68QR`Rn~.v.^T H"mF'RmFtLN-k!mFBpk!0wڎ_1h[Fint"51`HǤ6,]՝ Q&Fnt!E1`HĬ&L՝ (t$Ad7\wC:f7a2ϫ,#t}][FtL]a}]X"lH 0G qt"1`HǬ:x'DA8L ƍC2f8a;ґڋq Rk!x:xI&Tb`PxDä($X<$)dT9T!˕Y]9uyQd␌!" s)T\xS-A!PeD++2Ź6 K$M(I9Tϕxq6Z&R*t53-6J,2}S#.Z80cVwsl0D!`a"ʼn!еIL=G](Rq4.pEpA8q"1`Hǜ@G6LzhA:R-N\Hn R1)ё [˧F# &fZ(n 1)ё[e Kt'ND7蘕@-C ft$\O L >|Ȅ@ ZBFPvI'Ua R1٪@2VE-4.+bs sGRk!R5 Tb`P"сPxDÜ:luU 2u(@se<`R:ϻ69$cb DuG~wb?з컫/7~xK=nүBq>J .en(5.B>rS@i=|h (5+k޸)Դ5[vUiM"*qe/Y̌kёDd3ZDh4?)"aj|DDcqcکKfƱaf\ Kcq=R3P6m>_sV6 `6xͬ`SfV0efV0[fV}6;L~p;nf`OGgbC$vp;nSf5!DŽqgY:&!/e۶߰-nkl,m;oukV EͪH c8#_CZ,1᷋?;ErLIaUJ<7UBc]"귝\׶)_ls9 Q,^mN9UNcPئ #ScMc <؈ScӌtͨfVYo>}޼WE }Xo%t/x@c/2Rdm;zdzYh<if$uuPͿq9.yma,̢݈oܼݸ/aͳo^)u}<>i.Z[7#rW'.0qZ|X(M3z7̭Z}60q[IsOiq.I~3b"-+7eG}I]7ci2qH2lal'eeMHdfECEv[ vv3uGj7Q2148^X[[9._UdaZ-4ce߶qq b9\qgr;}i{),ψ ]L>UuwsD;6Ӛ`;\vT?PUA\:Gy'UkHm}_^!ҍNdqf 0~Bw7|^g.%wH{-˜@̜RJ2pϘgamt"m 0պg;֕-^]/Dv3bٮZ5g*3݂|fE0OKtʲ.dTe';њLvKrwnF,ٹ+-d .-rR%exfF'2ƀ_jr:8ە4k 9?v7b.n2-ˌ;--$*A9W&8Q=y|{+0\f/ޅ~'H5 59TqoQzI?f'DY 2NDkegxnLPsf2&l@F_qt¼TQ> s09:97;%ww3Yޓؾsތ/_θ+3 Qީߛl-|<߀t nmooQ+m݌tKX߲glמbx θ8%cxfYG'2ƀ/c\ڛqڏGDϚK{-Kôw#ꯩ˱2- +gsUx'FC'2ƀg:}n7ֽjm:Ǔ qfē^^c彰觿h qgYщe 0S^+ϥY)Ud mM 9oq\\2ekR\NYщ̸1xHK)fK eB?~,NʛϹUM oa\%\4bO~PΛH9,D`<277_:>k2/ǯaSތxʃkOs1^rvZp/kSS4NdfKZb77U ΅Gݦ-d0Tix_r- ~w釾ere[Vv^꼌1阞o7_|}_U{__>?o}^4uׯoU݆<|i I[_?}zWv<սtPtR}:ΘNOsbO?8W4/_bnCVzJsL҇U:wnL3_?}8NH<W?<}{:\=Gn|ގ?~|}LPiy9|?C?ª9<~z>oo}~i [.~,?K?} _>X7|,PP /Wև?ߊz[Ͳ\>=?rBXv!8r _kuuoz%8@W$vuE G5 tc׋dp endstream endobj 48 0 obj << /Type /Page /Contents 49 0 R /Resources 47 0 R /MediaBox [0 0 595.276 841.89] /Parent 43 0 R >> endobj 47 0 obj << /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F16 7 0 R /F41 38 0 R /F8 9 0 R /F17 8 0 R >> /ProcSet [ /PDF /Text ] >> endobj 52 0 obj << /Length 6773 /Filter /FlateDecode >> stream xڭ]]o%q}_q5@nM>HO0O)Hϫb'7mTۂf-ώ5ܞhZQ6W ܘ"e)A9j]]`rF1c7ϋ0"B^NߣwLŀe Ԏ5:((KGҾF9j}mi*44.TB7"%̒G*RR~Ȍ(a})nt$D~W&<BiJ*0;(n8Y|}k}"G_^0R ͝7=k.qEXR[g :_C" 1U RP͢]) ҇ Db@e T!FF,y1x/=x6L{ DXB^_ F U.5 hۭFbpȀQ{H0o0@rÀ?ɮV#pȀ"7,!-FUnrJOC^: 5a/H0Ām 0@rÀF6{G&`H *Z bK\|^ي((!,UD@t<Q b 8zx—C pg)i[!(W@pX.N)!72C|:\d@A%T V9rяAdMn*pꈃC) 0>!v6DC" qCÖJ7X%(2GǶ {DT~F{FY)'5YH< =sI3ˆ(Ԕ򚁯GGTl(|o<aMQ>Ɇsy=-}DVy6Ccz{\iC)>x½Wyzꛀ^T81}%T% 8U85=XH3_YJB3[AeK°ƱXἠοTp1nّ5QXWs/V>iD=hTW+TObӪFT= Vޫ:LL|PXBzGt= cFT>^A|V{GhG`}Kmqm#*!\05yTx찧wDfv׼Tk6w_0$м{i` wP 4=\ukQ{Ow7t7f8ð⥮$U޲`OuƠ 5Gp Gp}F? Q!V^ow uhK$tx4& v p=?8h_jKI,^AcSjV{##j0„Ȃ]446>!N1~#j0„Ȃ>~V,wOm|K5)NU?j48/>/d$`G{9;~}DűXRZ}/54ɂB vV{wocJZET/5W%勤}wpm0YbٰGXBA_KBU y"QhlNR^QQi7ףTPW/YK3fZQQi8ףTH,"-aǭo1#zӦ UeGS=@3zaʔM:BՓ,<3o'psh0vw0*cx>s8_7q16OTf&ӱ{ZxE__G3mŔRz2Hw/~X:-DXB'ʺ' ^BKRQDi92e-IK@~R amr=1z= ~H”c1FߘF{= 31:=]+6kⴜ=/ZGeqG/ڼzb|iZ>0eX̾۾+qʕ{K~~aݢP E?ﻅJ:WVk8Vgw`VlaՋoXY] ٷؤչ?G#'} c{VrO A"Ha-ڎzbg]0c1օ$v?ɿx`5N]N3J ֭E0[ dk[ĺxϺE-3c1u%Y:BL ־ĴӚ"1a揠׶-ڊUĸ|d%49mTξy mq5F~}# X16&ܭ "S{Rxbσݷ""s\9t*ڤv~:vlھuMͤ:ԺkfSd3c r;r9HK̝ f/yO90rW|r@!# Νi6!`)Tyhc'q&H·4yHƥ9I{Aےc96V嬉뱍# YY۞@͋[FmG.""aN\ȥjfȱ#ku/x`ېٜj=4"bVȌ<ǜl"Ef.EP3w.ٿ>_rl|yPRZ' `s@rYo30nt d"E6.EPw.x{u,ڤ5?FZ V?r>dd,s9ґ,6rR5rN_(K_GZlfQٜj53c_b/˩hHKtsi?^ڊ902R?0ra# ]E1 ]#/c!:lx11r"#";εX9s5?l$kQ٬FZw\͐+,6s>HK̝ Ǯ?er̬YiÎ]v!3k=p#6BfV'vtԕN Bd|=5m b>b};o^:]% Ԯrb[uӑȰY .vm]n$|cXظMjʲt ,aز0h hPe{_V%#@·2&$DV-4@{yrnM\N oa/IkMwA=sZ=3m+^G:_adU!oҋ=_/7ieo_nCgo~{ oBmkik);},-s|&HZ|>UkyQ^:n9aC}zy dlRyח@ .&-qNrw ?_.i_%yv;E?_YO o~ۀ'W)\ 3"֓?^W)"q\Ž`tۉaEWvw١TZ8.|mqa/',0K@i\ endstream endobj 51 0 obj << /Type /Page /Contents 52 0 R /Resources 50 0 R /MediaBox [0 0 595.276 841.89] /Parent 43 0 R >> endobj 50 0 obj << /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F16 7 0 R /F42 53 0 R /F17 8 0 R /F8 9 0 R >> /ProcSet [ /PDF /Text ] >> endobj 56 0 obj << /Length 4438 /Filter /FlateDecode >> stream x\Yo~ׯ0}ypw<8~KciIvSwhrkw4ŏu9HBug{+b;eMo5u8^!9pG닇|p_}ѓnAgdy ?^t~8#;?/_=ʛqx|ܿ>O?\; @;CD$|{Ko *凓;#zWxkM恜o;q>'Ukq9Ç}{xp2G -w`^F8;wUU#Ƿc9%OH kvO}>Og%{;[h)m+Q##8;Ԁ!0zR \{=Vȏ{>W?]Q`M:i3:MlOntwp ܚ|=~]<byA:#{vB S6`0ENS %< s0= j p83V01L#e'Du\1ȒYAW l x˿o"ftO3H3eFd \Pxc//8`0jf+Lk*8-%3+M@22NuFz-ѽӨ^'T 컎Ļ T|PXNE 1J+V&^{5RGX&8Ga%Bg ODq0 eW(FDϥ 5h'4y$}QRMx~ɽP 魥$$*'MI&8seBWL/j0R .˄ Ka!Y?) $gz4JZq9GM2V4܌=-$j@S`'j@Q{mp*nI䈃a5Κ3U yIZESkXAĩ"Kpp!% 4eH)AU"JLP*XfxR(S UƘ*TbLL*TaXR{0U(`U"I KH*X^8RR Vj g%}0k CVQɒ(jCh(+ E&P wbk"1(PaJDV5 FV56{ʬ,S#L@ej)naBBEb|@h`n`]6S#Lc aVB:AXurS^T<4X\*Sc*KPLYXg V:Qf4[]D jX5  WH`urEQ*oI`LAf)Ǫ͢(fQMS nXO[b- 87ۅ>ma.|147 |\^>#0ݶȧ-%-u-Je7Sֳ^*u)0,22R%)f\DEs_~|-oO?οtVsh{8|<)J>ڻ/ 9 +AfuSt\擫|rUOU->'4\ޓ{rUsO~YW)J%̘Uve¬3e@+X.s3[YI@柶Q[tyno.M[n'0 vfɩHŧfK]+FNGGAdVZ]z˓Ss y# 7A$%OMP'`(l ֙1SbCGQV`z|?º.@;($G=A洃mQUm^uA3g#x/%P?,9(f=F9ʜqQ0~E"^"4yMмVt9`|E@i\n w8(PG./Vؔҭ.) . Y񭡚Bu9`$,lϵ}ͻHmu(ZG3. /_ + Y qQ2gLo;|[$1(Pމ/ٞ^Hڳr(=d6zh2g\_pVA4`OE4"619Q挋 .2[u(7 >]5NQ2g\oH[5KHhE4"VHeN(vg=SGc3u>SW3uI/;`QMeVcYۖMj&V 6IڔYMؔmdu/h?a6EIT)k۲[.q&Y ][GT)ۇΨ20xyF5ι33~X0죏6? qXP@- ƫ tL5 3YN9Z12sohY$tt$cx:{˰,jN0j(H2gsRⴒNAcdl %x/VI#I!pk(dx |h/Vb32TaPXA&96aX!09XuJe'2gCt<% >HqT$@Cl )3VA\- JAOij\XXRN͘.. "5)gWA&\-;a&A|CŪq<?74o&{A ?3.W aFH,*րPQfT7 ʖUӸGU(kBY§bjhH18~ ~^cw:ĝx")Rw]zI9Tc 8.|M_XTGnw#&@ܰ}:w`u'e[abF cˤ&=LʜLJ4 /J@ޒqO*)Bǝv]t?ah endstream endobj 55 0 obj << /Type /Page /Contents 56 0 R /Resources 54 0 R /MediaBox [0 0 595.276 841.89] /Parent 43 0 R >> endobj 54 0 obj << /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F17 8 0 R /F41 38 0 R /F50 28 0 R /F39 15 0 R /F8 9 0 R >> /ProcSet [ /PDF /Text ] >> endobj 59 0 obj << /Length 5704 /Filter /FlateDecode >> stream xڽ][~ׯGazy<ƕo*SR>8yPct)[_WMKJ3AM~Itƿ+."Zpbtz $3:߯Urei̢\Xt u>㗠*\Q^@ahIo\+F1*`<{_T-O/6hO&iE-1ۿL&#%ܞhH]U[ֱjJ H.8R g\pMq>,AJ heuǩD!Ggvo[']pZBoO4̱ tg]_p\ЋtѹkC຀_-9'׋F c;mxmF;Z.*#&-(UդpZAUX0R%:/[ah+hrQ{oMXZ!]TY(' b؉8g1rb0FY1&|Řy%&lx{%cdX8W1Rb0FU1$cD(f;SoLxиḳ%>3PKpc@B\p8 PfVDޣ* &Z &j sn&5 k r-1X&"U4ŒZ7k saQ2A[VXa*7HE.0c` fVX`rXNW8-rCKDj}Ka] QE] "A\ a1]!\xb/xOM C]z $X%ΕsZ߶b*jISN7U6YtSEnS<馊ݦxf=%&7+zxƊRT cm,&gΏg'ϏgnϷT~ճF~s~W=z,DUnc@ijQÒjaQe-*ų3$U3?]*`^/~x(z::7EH2,' ÉjÞd][4roS\ AB<([6%P$@I=L>mOKyoRdI]Ĥ=0G:g]+ݾMlR۷Dzkѐ;sFyeoQڼQD̨]'ZaߨIF;ET͌F-p6vW ̻* #]-m(ׄ僇m7 0C:NLSN̯A0V `)¢UXvuV8pZ%"mTk&6QN:X;6X}-iiZjtϿuj1ʗMշ%Ō~ֿy`8{z3lmxu6НMͦg6G9!ll {dsCB7Ʀ)6 9m!l#l ҆M18rV??zVGS<6Z oޏtag5[G.PڧJg{lr! `o?#' wb81b~`"C a5"O"?Q#~O\@?5% (W0p?i^ b[=S7^b[e8v/Zys8 5LN 0p?^-d{9 uL& k>8c.nJn-#H8N*m y| ? 4iAyvT,4[ҊҐzFXWXg 9k݂/Žw@҄2S Q S NS S Q îS ٚ29{bFN fFNF2ڔ;{|4iN'`v *(& ֛ʼn?gYNFg3gkt*IP!E',!НB ULq# 0e@`ոQQ0MVab3,қFs=ٖ+1i6W ڀ( F/؇rMSdi[o3q-9n4MSISFUk*֮nXFХFF1&w8>K_ӵ Dy,:p/Nx/*lEPL"㛗=Ο"x3cYD1J*hea])* 0_.B#2EZR/T0 ݮgC" gDLp8׭oO_2Bi\R ) >_]La` 9E3@rݎ9 ru9E@nbMir'M)rtSt? .~]Nd04SḀ]͵[]gJR7VEU^06D2* ;] $!5 BB=&NC=c(|JP12bIq:b K 9#*NI >am@K ?(~JX51rbi 3fdPr62 FU#CS1A#)%$S1m%{MNOOt&39'S9'S9ŷ(1}S|_r{5oW֙^_% (cIL+  i0d!t\p7@$,!RM2 Di:5$Xw5>ayg1I8[t4& S#[V?sXp Snn0Fyzztw5g4h5h] o)ih}SW PwnIsvТT1o2ʴ_@01GN`؏7O/-S]Mp@4;&H h??&Sֹ{)q`@ݣ耵o0/t{"Et\^NQÉ3DHB<DtT? cL]o86*8H* ւ}eȶ\O\'79uO5?) b fCJAjEѵ͹G.Et9"ȆEz掋 fE欋V,]ۜ~"%` Y+Nm0.mL9uQE VRvﻨ`6]R^QumsbZ=5>}lȝuъksۏ\i&2`wMqrY6JG xs:ete?ힳDmVD]z~|h8M3uPl{(к@9wQEOtwQlȪs̮x9wQEut}l,OO6.*Du:[QGt;VS6. )>ކKm*;Uz'WTHy].WjB4d*FŻNBdOyS <){V/Ζ6C7_-O{6VtGAowd$ZT,_؇+,啰-0FM_gc'cҏ.{x6>C~m(\`T`ICW7ݥ>J&`Z[]OQ[O .U73;_$cFXTL;߿U.7uyrT_?78QhK~%ꆉ3$⭢*y{y~aOKh9dq uӭ)~CވDozH^V|zmݳ~nIZaפ&~ˤifiyl 0?ѐH3?|YSZp 8U endstream endobj 58 0 obj << /Type /Page /Contents 59 0 R /Resources 57 0 R /MediaBox [0 0 595.276 841.89] /Parent 43 0 R >> endobj 57 0 obj << /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F41 38 0 R /F50 28 0 R /F39 15 0 R /F32 60 0 R /F28 13 0 R /F8 9 0 R >> /ProcSet [ /PDF /Text ] >> endobj 63 0 obj << /Length 5432 /Filter /FlateDecode >> stream x]K]ǍWܥ5~.d4,dN %X?d=sY dYU$K"/_;+S^Ei-ŏ}}Ro$O%E?S=SY_:UIa= ?پX׿63~,*l̬"(ktIdd}ynҤ#ɦ,¾hb g7'򻂧E;0LL0܊3T:;C) хAmN8g QDPZZa\P6HRu99fy7o#p\"%%MhM bQo8ᵓ_'p\4B}uÍ\qp^Wly)<ػ}Plt07n߿텑/r@VKg8+x!Q:LZINnSfXyȿWR)jbd7 ]5>!t?3 Q3 130 1wC@1_C@PGC00/Ctg^jCss! pg m[! jO! gC! d{g=-aB |"ḂJZ#fN oDcBb^n0ئ"9,0T6B<(S,;8SSA(l`Am0Vqn`:aS, rT#(9jPZܶ`IXKLB͉b3_2ؗ-X%&H%%%ȣnX.`&vϢ˜!0F;tA6 sa9`|9_LN k|r:?g.,G o|0 K 9?0pi,bL7 Y|ݑs |ſ'/``//ziz/~͋߾$ʰǧy}f'lV;50<̎F@Y#Vi[TF{Ý),dY,xDWjPj w0pج O]<ЪV~_kC+2ީZ' ʡߝ*U1YഥRFZ e=aɯVIš4 .wTʠ*mq`dEَ`|s۰r€"?D.Ƴ"LTx#✈I q@CJ N}ig>E0jh2WHz DW6:0!+k ^G#VzPhl!Z,fq 3m!T!=}Z~NӦՇi);[Z}ʎէi);7Z}Jϋcէth);Z}΂~uٌ+[M5e1tw$q @ٟw{?_^|OyP~~W?O'_?z?;^m-7P~ L5,ugRL)4uKN [e:gȘ`2B橯 IyZhHXHHZ$ (I\SH$QH^S'QH`SlO+QhOb$.QcD6$d6E\{=M#D#M$D$M#E#M#E#M#E#M X؃3~ʀ<7ŭ<:~ZԶxr-TkԊM\qԊ7 } ҈=? W=7UXp:y<ݹqX8kѧ-' sxvQ#.מ<^Bv c6[;Cv bc?䞏7"w} 1%rkȽo8ϑW^"S% r g n pz:NȑAؑAؑAw P)v$)vP)vd)vP))sy}`bGrbbGbbGbuE{stV ,N l@At DtK .xyY _0V[g. V̅b*V,pVX3֋N k|ZYa\X+8+ ge6s7Պg. V̅U9/ kgU>Sa($dNԦԦb$ [vr$`5N@EX&v ve?Rsks*dwU*]hof"ݟu>`+h(dV^{Ixkۈ6lh5U4H~ߟZ:O"O{J?/8|e h7o|x|W?eCJTޫqh5.^U00d .J+W) =s*nI٭L_Xkя+u؏p~:o~;o~;o~;ǯ;{l\"ȟ߂1lqUoP, ob)٩mhݳA/ vr/r{= 4o>wwش~vN{;lU`}6yo}ͻ_o;i}L+f_F4o;o ;o7Լ=;oDǴ_<);Xқ;>SOXjGc\eus+^N!a82U>u_޿~ K֍*ܮƐág5pD6oV'UKy͇[bΚ'(#:k{8ae"p6UmI$pgmur= aq;z{C8c7y蠍j Z*>޲NGNGE]Ʃ=(]6 q냕"q:Eq؎yrA90Oy֛QR 1GϚ=ie*r>M hZ72,TA37;XvI:,`CY-dOZh垛 UV>j]6 5о x!M䶅Rꬅ@k Uyq)gk 'B|褛6+7DX~`{miڧvc̮tc:Fž՞ V{Ao}tv墛m4,l0W9 oxB \cј }`,TAr;VNܱPBQ ΆyU(@:K7;-d0t%]KiUys|RnR` oBT(EQw(e`&a ;{k"~VxSV0 qtzkRUZQ  xUP+{ö9UDVժ|ȋRb0̸I )jjf)v26.jølœy7>tHXW` c݊f]g0pUB3XrnxP0s ¨AH|4xG+btx6W|L:ޔND~24=r?ѠaMwh|s/u@/7(ʿщLwWxe Ps&/xKhKTgGk1Ɂa4D\6cޫd=N;|/՞!{i4a\|rwp<,mv#!up[V00_k66${[mBa`lHiK6aYDLu[;ibAsPط"0az!/ɇ[>~U'8,o_zuǰSJu@[_|4~o:c.`uqQrۛa' ޔ3~q|~bItT7ovp}`dkmxo!,M. 孪¬?,Խ/zx1ioTH> endobj 61 0 obj << /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F41 38 0 R /F50 28 0 R /F39 15 0 R /F46 27 0 R /F32 60 0 R /F28 13 0 R /F45 36 0 R /F8 9 0 R >> /ProcSet [ /PDF /Text ] >> endobj 67 0 obj << /Length 6513 /Filter /FlateDecode >> stream x][Fn~_яV~IHbY$x<80&>TRUnO,E*q8WE^Rb\w^xWJ,:{rw2usM2~0Uq8g0]W.ʌWǐFKJҵҋQJ$#F˫uM,ޢzbWdba^Cu]^)Xc^@~p{ U~g(u, %ZgX%pWZ+zQ/B8 UJ heUǩD!Fe-ظ378.%F)N*piN*4y.l ZՓbINk%_<.|<\$ߌPu j*.0TJ4M3N PWJlC7+hs~g<:z['|3l[t2`u3`x3`պ7g<.g>g>0M?N @x ju,YBd:֗o^?p $/ʠ7]o~OoMU"kwF ".Z}UHŰ:XU@NJvF'dVaSµ\)Ђq=ןRe:%%88b]hugm:ۑNb\w'u~yNN,َt"! )@ȼhJɘuN3"KG)dC8['b² u J:M%|`Ƀj AI q[wg0B y{Pp7KRG*oÊ3'9FH u. `*VY- r}pQT IY)+'eH5q0g >D#|CeB,~~ې;0"ׇݸ ѭp}ۃC[!l~[B7Ln!lal}\Ʉ/xGjރqb*4 {@cَ7;>z3'x5L$Yv ~T~Xl{ V)D$e Ha=GV(2h ?wWXo|ϟ/Foa__>}?}X<+묛]㺔פfcsT#@aZ!|'] wTX'9.t~y3o[sHR 4]hǡz4N(B 9\sSparlNPB9YarNdAY:n: &'L*xSp-azNq;ׂ &O \'g=d]21v~u}FLr~ǩP RzϪPK5HlW6)eѳr_Tz;>\ ?@z߫ 12Hc.b;@n=#w zFq2@m#w^4@n=#w2p d3rg.;?h3 4,uHWHVk*Ҩٖz$"aQ`I"JZDH6@+lOPBZDHN@+BKA^JZDHn@+BkVkL42`(,N 0= F$0 xp[S?Ȼ J2BfT uvg畫N{h2\:=\b4nBK&%FpXԥB j[R@ZƔAeRaEˤ6i9I ;;%dJ NNjt~a͐ы~Y\ Vx4M ZU ^ iSrX|P58Zq4$km+5'3‹NiZ=2=w܉I,L8*h˨ E9l(_{I4&FnN\L/ [LB}S\ř\T3FSWnT ?}vѢ`]ʫ 1ۜULwvަs%U`I&eVeV\)jpwU1^Mpj+EX\j9k&R51hMpNk+Z\e[c[ ݚ}̾M6}h0vkw/voenZdc5&lVqNenSqM&/s_x߶ {g=e`.byRq20*(S-2q*20*V)*}XwsxBz*}Xz' 9_`ک()u]J]NS5wjDe ,:HT6LqܗOXvW*lwoOy2{} <]7:lK T/?~/ٗ_ɔJJ)t9r/, ~SiDSuLbJo*hi3B[4R`*& j`*f 2n`* j`* 2j`*f n`*f 2n`*f n`*lqN!?^Legw /\v~lEHY"&L\AB-%g þ,3Ņ 0SK*0[gWUoN{U%иYUMU%Ԭ]UMUeظaUF;VeM[VeԸgUiUMV%جmUMVeؤqUM:W%ߨuU7@UfܺjLZW%&jֺ*flֺjM[W%جuUMZW%ԤuUCU 6k]`U UA*uyuˬ̫.tU UxE F`&Xd kem}0k`/ nԀє%9qME[[n?{ r;Ǥ>u{/WJ=׉6ȴgՃ6C$СzIF=iľz0z~?0Wg}(L \j,N/Tz"E8VlvY\U,4:~bRԓQzO@jSPQ 66f_AicIs2 (hUC~bmȾz'YpV?+f JC )q҂T*J.SQ %LT@*2gUx<恊*Rm=" TA* '38mQ 6$Ʀ!Un ໌U ʭ}t&JXI_33I;ƨ`q/X7Ahg[->Hwpl3H_,T|ԭP V-Yut0T nG4] S <N@Ҁ6فhΩPo礤^@!өZ%{p6 ?]#Ίofk)xv-8Q!dOM9p^|/ɛva%-#3gkH b>7\AJvb BKPs;iiSblxS}cB؉X-ƪPaeKz[BoA{Vz' ^ wNm[+-!H\.<,$[ΪPa_. \W; qS:O"6ln>Axu _' AX ɴ6x.fZh/}Gl_Iea~t'.|IB9 =|e48BF)6R.|\uum#]#RS Y"AdbЋWc yd!ndld)x>,8oa4J[ډTL ~H`۰ BLnKqvcՀUL Xٵ +3>'x\02,* "48'ėxp<ARI/ k3`vbX4F YGߘyY31.z\,u36,66v{ UKAPzTr6v%o# R6óq ėp^/ F.U3(S %'%A܏^qb-s#ZV/xh(3tFVZ`KLq 1p4OVL4 :^<:G 5U5=g}~Bn;e6V po`q٠xBM9O׭(<._;؝UF Re$@cv;eo&$Xlj v{fTqnh&ZiAM)> [. ߉y\0Ao`IcT e1J4 OXROYIϛA w߃Ӊ?k\ՀA턪p*TA/ԏW {. :豜0 k|X|qOTG!X{G˘k/{_|P/~4hMJz}-no;~l_V°_)\SB˿0=?᝶C0`|<%z5 r@ ۿI_7>JE1K(JK[iSm`!ؠ7&cd1_޽|*}w'\Dܡ.\pj?R3:\ߟi@M]`TkLʔ.\X$.A+3a8ovk hWMϘYo۾`7daG3g2%-)pJ MGSzSr2'+/vgĎYߩQA2?-% endstream endobj 66 0 obj << /Type /Page /Contents 67 0 R /Resources 65 0 R /MediaBox [0 0 595.276 841.89] /Parent 64 0 R >> endobj 65 0 obj << /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F41 38 0 R /F45 36 0 R /F50 28 0 R /F39 15 0 R /F8 9 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1 0 obj <<>> endobj 2 0 obj <<>> endobj 3 0 obj << /pgfprgb [/Pattern /DeviceRGB] >> endobj 68 0 obj [963] endobj 69 0 obj [489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 272 272 272 761.6 462.4 462.4 761.6 734 693.4 707.2 747.8 666.2 639 768.3 734 353.2 503 761.2 611.8 897.2 734 761.6 666.2 761.6 720.6 544 707.2 734 734 1006 734 734 598.4 272 489.6 272 489.6 272 272 489.6 544 435.2 544 435.2 299.2 489.6 544 272 299.2 516.8 272 816 544 489.6 544 516.8 380.8 386.2 380.8 544 516.8 707.2 516.8 516.8] endobj 70 0 obj [477 576.2 344.5 411.8 520.6 298.4 878 600.2 484.7] endobj 71 0 obj [799.4 285.5 342.6 285.5 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 285.5 285.5 285.5 799.4 485.3 485.3 799.4 770.7 727.9 742.3 785 699.4 670.8 806.5 770.7 371 528.1 799.2 642.3 942 770.7 799.4 699.4 799.4 756.5 571 742.3 770.7 770.7 1056.2 770.7 770.7 628.1 285.5 513.9 285.5 513.9 285.5 285.5 513.9 571 456.8 571 457.2 314 513.9 571 285.5 314 542.4 285.5 856.5 571 513.9 571 542.4 402 405.4 399.7 571 542.4] endobj 72 0 obj [638.9 963 638.9 658.7 924.1 926.6 883.7 998.3 899.8 775 952.9 999.5 547.7 681.6 1025.7 846.3 1161.6 967.1 934.1 780 966.5 922.1 756.7 731.1 838.1 729.6 1150.9 1001.4 726.4 837.7 509.3 509.3 509.3 1222.2 1222.2 518.5 674.9 547.7 559.1 642.5 589 600.7 607.7 725.7 445.6 511.6 660.9 401.6 1093.7 769.7 612.5 642.5 570.7 579.9 584.5 476.8 737.3 625 893.2 697.9] endobj 73 0 obj [285.5 285.5 799.4 513.9 799.4 513.9 543.7 770.7 777.7 733.6 847.5 756.3 656.2 804.8 850.1 449.3 566.3 870.4 699.4 992.9 821.6 782.1 656.2 810.6 777.6 627.8 599.6 699.1 599.4 970.5 849 596.5 699.2 399.7 399.7 399.7 1027.8 1027.8 424.4 544.5 440.4 444.9 532.5 477.8 498.8 490.1 592.2 351.7 420.1 535.1 306.7 905.5 620 497.5 515.9 459.2 463.7 478.8 371.1] endobj 74 0 obj [514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6] endobj 75 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] endobj 76 0 obj [799.4 285.5 799.4 513.9 799.4 513.9 799.4 799.4 799.4 799.4 799.4 799.4 799.4 1027.8 513.9 513.9 799.4 799.4 799.4 799.4 799.4 799.4 799.4 799.4 799.4 799.4 799.4 799.4 1027.8 1027.8 799.4 799.4 1027.8 1027.8 513.9 513.9 1027.8 1027.8 1027.8 799.4 1027.8 1027.8 628.1 628.1 1027.8 1027.8 1027.8 799.4 279.3 1027.8 685.2 685.2 913.6 913.6 0 0 571 571 685.2 513.9 742.3 742.3 799.4 799.4 628.1 821.1 673.6 542.6 793.8 542.4 736.3 610.9 871 562.7 696.6 782.2 707.9 1229.2 842.1 816.3 716.8 839.3 873.9 622.4 563.2 642.3 632.1 1017.5 732.4 685 742 685.2 685.2 685.2 685.2 685.2 628.1 628.1 456.8 456.8 456.8 456.8 513.9 513.9 399.7 399.7 285.5 513.9 513.9 628.1 513.9 285.5 856.5 770.7 856.5] endobj 77 0 obj [986.1 591.7 986.1 920.4 328.7 460.2 460.2 591.7 920.4 328.7 394.4 328.7 591.7 591.7 591.7 591.7 591.7 591.7 591.7 591.7 591.7 591.7 591.7 328.7 328.7 360.2 920.4 558.8 558.8 920.4 892.9 840.9 854.6 906.6 776.5 743.7 929.9 924.4 446.3 610.8 925.8 710.8 1121.6 924.4 888.9 808 888.9 886.7 657.4 823.1 908.6 892.9 1221.6 892.9 892.9 723.1 328.7 617.6 328.7 591.7 328.7 328.7 575.2 657.4 525.9 657.4 543 361.6 591.7 657.4 328.7 361.6 624.5 328.7 986.1 657.4 591.7 657.4 624.5 488.1 466.8 460.2 657.4 624.5 854.6 624.5] endobj 78 0 obj [531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3] endobj 79 0 obj [295.1 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 295.1 295.1 295.1 826.4 501.7 501.7 826.4 795.8 752.1 767.4 811.1 722.6 693.1 833.5 795.8 382.6 545.5 825.4 663.6 972.9 795.8 826.4 722.6 826.4 781.6 590.3 767.4 795.8 795.8 1091 795.8 795.8 649.3 295.1 531.3 295.1 531.3 295.1 295.1 531.3 590.3 472.2 590.3 472.2] endobj 80 0 obj [611.1 611.1 611.1 611.1] endobj 81 0 obj [500] endobj 82 0 obj [569.5 569.5 569.5 569.5 569.5 569.5 569.5 569.5 569.5 569.5 323.4 323.4 323.4 877 538.7 538.7 877 843.3] endobj 83 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] endobj 84 0 obj [555.6 555.6 833.3 833.3 277.8 305.6 500 500 500 500 500 750 444.4 500 722.2 777.8 500 902.8 1013.9 777.8 277.8 277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8 277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 444.4 500 1000 500 500 500] endobj 85 0 obj [670.8 638.9 638.9 958.3 958.3 319.4 351.4 575 575 575 575 575 869.4 511.1 597.2 830.6 894.4 575 1041.7 1169.4 894.4 319.4 350 602.8 958.3 575 958.3 894.4 319.4 447.2 447.2 575 894.4 319.4 383.3 319.4 575 575 575 575 575 575 575 575 575 575 575 319.4 319.4 350 894.4 543.1 543.1 894.4 869.4 818.1 830.6 881.9 755.6 723.6 904.2 900 436.1 594.4 901.4 691.7 1091.7 900 863.9 786.1 863.9 862.5 638.9 800 884.7 869.4 1188.9 869.4 869.4 702.8 319.4 602.8 319.4 575 319.4 319.4 559 638.9 511.1 638.9 527.1 351.4 575 638.9 319.4 351.4 606.9 319.4 958.3 638.9 575 638.9 606.9 473.6 453.6 447.2 638.9 606.9 830.6 606.9 606.9 511.1 575 1150 575 575 575] endobj 86 0 obj [625 625 937.5 937.5 312.5 343.7 562.5 562.5 562.5 562.5 562.5 849.5 500 574.1 812.5 875 562.5 1018.5 1143.5 875 312.5 342.6 581 937.5 562.5 937.5 875 312.5 437.5 437.5 562.5 875 312.5 375 312.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 312.5 312.5 342.6 875 531.3 531.3 875 849.5 799.8 812.5 862.3 738.4 707.2 884.3 879.6 419 581 880.8 675.9 1067.1 879.6 844.9 768.5 844.9 839.1 625 782.4 864.6 849.5 1162 849.5 849.5 687.5 312.5 581 312.5 562.5 312.5 312.5 546.9 625 500 625 513.3 343.7 562.5 625 312.5 343.7 593.8 312.5 937.5 625 562.5 625 593.8 459.5 443.8 437.5 625 593.8 812.5 593.8] endobj 87 0 obj << /Length1 2307 /Length2 18385 /Length3 0 /Length 19739 /Filter /FlateDecode >> stream xڌP\ ww.!xCAww',K+9>s&W`3.,l %qv6' 5-?r$jm^N ˛LfȻ9<ll66@7+3 @lrF;x:YYX#Δ;@de (],AvoM B Y8YN"Lw+K:2E  5@_ ; xZ\\@N 9E_Ɗ2`9v_vVs+[@EZÅ 7h ~l&oHo ř/ykdW}VN ӷ{pmAVf0su`ղrtIMGfrp@%_ 4=@+qv;h|Ao?H@7O"$vv dae'd/vNV=cۄm=}ĬJ2MJqq`g=ov?]?"ٛ"ֽqd{mA6 ݟgf3}bHo=ݿ @;+[[ͳn(6~kfW'|1{ Ydjbj!)pllGs6oY7{otrz"x-؃]\o|`'N*_*X%x;UAV? *SxކzˮeW*E|oAo[v?-[>zg_3۾$\\Iuzf [t3+c7?[/՟"8n҃]H?%d7?[(uEv?"'|^P s?RKuWVGߘo4/ro7sk!߈:--˟o5notqoo<ZH^ U7uuzߗ=;"-΃M;jĈܙw&gw>3{/:}s}@OF,iceKٳakG'8vS& I5<;h@BvS:c߹x/V( ?0ъ,Ag5OLuf+gL> g:Gj&s7.> 54^<ނwiq/l𘡥9m ?U|2f.lw '[mIe -Y=wuyWR,b+gJxH3o=G'Z] >1_~Oؑcovf<ñVea!(U͌kJ;i(c)eSb&Ї:hڰpz\k9Xs4a5™{$ǁ'v\7$mΙX Ôڃ9t(sVq 1H=R lK8hf6Ix_YеP2AW.͐u8?ϕh{5?nEQȏCzH"KrC- }"]iSZGuʧXI7Is3YtЭ|~c 4aYl#<4l&G7|o }W435h!x9ƒ{~`-́d3 v{{7a)b.| lZ2V3i2Y%yQ,m(Vo_3l-)J)>HY袆eKJ 0×Z7dC5cPb|c/3\lGl\GlSnt?:%$yg4tA~yݩu\P Jiw4j> HSmlLvDÝTMQh@&j"I2:]ܚ11h[(ap[%%t/WK{AHfrqR L]~7V2xžfYAȿ%b5JZWQx|&BYl ~m#gѻxQuh+JT:]?`J;nuNz3EoG!E2-8l"Ґm6UR6_뼲9Ɛ}}MNHmM392PEк~S"X`P"%78s`}^}%RqOzc_{%))5X0>,[0*/ ga,>[NtաW&/%2/[PsxZlg?ƞv'L# ;ok^d~UM] Qݳ8V"SEGnasb6Ԧ|0dpPi0 p]$rjn%\P^\ v{>zɬ_&BZt;? U8R"[ L8aٶG5k;dOc# ?um77QSICaZEDA9%j Slӿs)>~?`q]!(L}g ^)z/zFw,k ˯[6ڣC_y?!iZ5qVÁt_Q>9k <̦a(¦Ǚ,WG @o2EM^?``3O)LTXxmðcqM$!.ޔm0::TV! g&Czj$iJ*e:rBL:S,OюyjDWu6+R+0Z+>3Ky&}{%^q5&EvZę{ ⠀2{RS/_'9$\K%K]6ueCp}\Eg2_Trj-BYօڠ&Fz7| #}.BC!_P)vՉV{d)ɐw3;N,†ܚ_8|d5)/jrt\L 2Di">ltOyW d`U73;-.0;B~&^l(i1$`o"C8ۚ۰\Y]^w/w"־hc@˼22L@K䖐#q}<;XXҺk"sawOOY5/&AȮΆV! LA~gE~LDAC 6_Pո3GʭGBM4OЫs)֋4ﯺ=oPp$0u]F th0wB&V}]Wލ|ZQb=id*'3Cbfq SViaYJV(>a .%:1÷Rox~|1}KX4|^X+s݀;)Zc6[('.6R;ai:5}V<'O]v0-+lܸg s!q>Md&rbGC>b}|2|HJFN0Z|!.i{eK=59$)(ץk+?9JCu+#~z PgQCUZr=T'v~@3,W}% *sN gF^&lQIݤ05vJ^p[Erk3iOfv@>ӶaQ?30l"5JD5{>1̭~{:KH}TF4qz};闣Pg_?K.M or6Xpd}Dϫ7o!GR\wsNAhxƴnG(_0%klJvS] DH|u/*]|(i:cF$]6=Yӓ2uC7ŋF$Byg9gTy?_lfx9BSV ƻ )9r!yy`~l+4x1H 4S;bP +X+Q6~O6>eѵWfN4sr]H(`A'J'#1{OO5CIlENp+/UήSfN:AIci:HhhBMDƀ0^)ߋE"8@t~gV!UrYg80B02he z,33wU(gnd % 踜m[b8gШd_FW#YphR`y^%,!* i\lQ`緞n\1 ;-&o~WhoFv|7,Y\%Q}{.XHX8Ȕx0!mR4(ypRosg?Y7h/EQfXk2Vkqaɟh竀@36rJPZREZCDY_b>ӱȢ4P" dKmgLa(ٵz )q%CY)O@Ag?#R1F0.sYYeȆސ_8]-pmjK)~gw6*$e]A]$ <fE565s;$?aJ:2% tܭq*\m8̳bOh>lBM4ue[/@+T{ x)RcPrɅH ڢmZJx~(CNZ3AB#YɇكӴ-6sʚWxQ'v OV>!W|6QW*=zge3,} t|Si&R]jX;p.,< kDaQZ5nvb7OkQH Wj.GBP$SYL(5AGP$oy$&M#% /OX-ȕekiz8bB@j"h0&fSGq7eXUa/2+vx9*\řIa|\ѕoܐ<<>e&ьr(E(w:F@ԋ<Sbo+16 #?ӜpMŗg&,f%$WTn](w;Q_>j- lgj٫skjrS("WDH@ޒl]2z)i0"5 K +;-V4(~j5\oNDђOZI &{?YF=ׄ M&8PIU1 h[fțkIҌ7$g*@kC/Ǔ8N.k%>ڮXPf0zqjCW` 9"lM. &QE Tm7mϘ/NhGeͦMP arVu_Zd?OůXB)/mTfvgD>bnhdÆþ:U-4"/s)5|BڸϨ,;υ|^P6k3/"vm*Җnwp+jtBEBtX<#h[5leFRуYihBOScnEx0񧙬<qB2z&Ѽ1 0R58Hc|ʹ|>2mja(^ĔB?z;nu98 Dqζ嬒zFkvhzr(LF7ᒡPsN=kN[扏aPү׮n1wy~Љז[!4j?~0yuHؼI($ZxT?!L71k^{^qR݄׍w'Nbb+㇍kAϩ nFYC3 Ys$ǾG2#MmUwG=?)FOHLMunX~#Qm$wzԷQG,w)d$4w!*Yol>8NK 3vg;>I+G1s=C7YoE!wR:uJc CS$0Ȟ4{X~cB Y1 fMK=QӅ",`#S{mhcgjhVT,BpQŗ,M̒}^:޿V\&X4ɀsBľjC꫽}{Eq߰K[B"CqySwp[6ׄHiDfUJJc !}2\kLWMQe_W73+@UŘc=!l-:k) `=)<#!{7.E5b8f*xT<Ơy<yܸd1vK miw U9}GK0MNQNAS*e"*~!o"W(=C䱽c9\^"tR YOz8hJ4ܧZx}ֳ)g X;vkRDhUӍuqn\Nf] y+$np*x֙n!"t]ـ֩$5ߔط{6v G_冾s^.PgFm|{Њ9=կ5ӭ ?KLtya.{{s0,]%t}Q5BFG =}GHzty-P܁5N vG`xr!$;oevÀJQ y&NCAS E3Y=9ߤ*g6F {4- T#@E!5j#_"aA0NU 0({IYcX rp)3j=<_u)(Dc68pBxhE/^,̾.VZ)L`98Cog\A-Xeizz݃b@ UGVG4`a=Ji1||n=opV7rX*e'< v~qLd'-cƮY:xKFBIu}TX<ѓw|FV3:0ZZaPe>d\ա@7Ԗ2V%:iHzE`~QZ.2o5vكPnnĖ]Q@+JM0%%cֽzLA[7V~o{5tqHɇwؾt% Fvڒnfu+ &yR贒0 yXXL4:j+IJ̆hrHc㬣#iaV,8? }:q1wsB=B5{W;UBA|?I[݅G`mtEﰽ/=h*إ Wb+ʨԜM:n90)a?_3ugّ_gKJ/ ]\-GTI8ULPÇaw ѧԌ).f >dvx <7+O,SʞuΥ 5bgXDقc= 2 P. |3Ó柞TXU} jSs^ hE>+\ek|G|g29b :"}Gld^W20vOqqH[SHNax?qO OXQ-gFTT٬'"Ij͢Ȗ2a$f)0>M}{}9`zUYqA=gT܅.LDn gu<rӎI~4IMyW Qh{EV;8gnmc3RwO gR; moG[:6zbέ(W[1wHsJhe`f~֣ˤxne',STdq^HR}a։j*u3 JDY: ࢮ(2YU! 0U}ƬLj tvo_u~ފ)u_P-m$[νNof<^ቮ]O;H4|W*3Kؓm%Y֙X/zgl.Fu\%!2]YJ't9rbOV2߸MDR`2"s*dծ{K<2#[DC`~R{ITo`ovIMB2Dw\TKB7Ȩb Ԛʺ zsg>$'tz !=P{񴩰_6tU:E|{^!Kf^ iVxnNdzHm(yfkUHdS3C'srWΙaGNAvl, :]Noٵ\Y,X ϝf_B]?c5"/ HB~mt߱@@4tjaH624I[(uh(Y`zo>- gz`yCDTrs| _ig֔yv2g'z,urR/wk. h='Ørb\h>SL]|:X"DyH )OTYT}c̾ܙ4I^P= 4umkcrHi}iY) ٵQiMօBJ "o&TE7L, ~T-^/u$P+ VFҒS^~<#Q;%DQ/x2da= ݼ ? wJ_pz E.nlsϱB;t'"q` = y^3'R7"'kvԭ;]!kӥ*ۉ x/I#'lmOGpx5겞E㹵2.xc dGmf&h7KdӖ*Xd2/H[0oS‡~dzhT܁'<0)P]Ġ S "gvKۂa> x?.[0Qi_I NCA?7w\˅)}B̯݈/reCl@tUt\ZnVO3-l͕HR:i\>/ AկXgޥ|*@{E`V8O{֦~.ݧ3y6 c7^2VMǁaU4+`m SYӻl1MDWE.tmKtdvP78pNz૩=T+ ,B)"Iͷf"jeקDgaTҳa?ŮeX8F?a/bBA4/g:r@: ~N̙"ޓR׊٩lG Gmpiӟg#l!6M-$ ^9A|O#^MZ~vύV-L#"(bdd4a+ O@Aޕg0 ;'ʖkm7:,mۃwVB%ȗ>!鳀xs&i`xlZr. bB.'.% & G~[6n7g|u &Ľ,M FOwHLRD sd0H~ B w0dZ||zOXy.ȼfʭsZ𗠉`2ȿmw`4XR b`VljDN~FLD6MRL1or)]6^_J[=gm5) \w'QI\k jҕ:ES?Ƹ=t˱QPYqt2SSVh~Z"H1 )Ecᯘ ԛI wɕ7p)~S? d`t{وPeo٨,91 K&Ck;Ri81~PYOD*l'4vsKtPCmi0M~CmBX%?#x4OT~OiUÐs#u!ߟ _;'k+ߟZ?"n~2Bǹ^P⮶m|iSɢP؎AҜeAp>˵94`~{ܴaIЧ!@O> 3˿*0Ջ fQg5ă仱bJ5\?/5;OW`.Kۛ7}%;c**l>Vr[*uWLt`C'nYE'Eg+^;Jr3ݢape=jn^_eR(V s|S"k?5I%ˢs3>{US[[ G'Nlt1;K &5y@vaľOMUA [քAeޝY[(Yu NN VNs{!b9'0/]SEuߙoo݋!!7^=%h]%$Tďo+y)q"?*6b*4p~/&UQoLYso8$gTGASH_9~@W=Q7YϿ΅Bȫ+ӊӨU|]3&V p_ujէV% &<&1hO壇vA(CKhzbɓz;GN-SU`SXw5Ŏ&0)H#cD 箮qӯӲX|U SţGU0(,RL(_`{P\wGQKmqô{N#@dZu^h-mgNZ>+ )LX LfZ}Ľ Y<%_J̼&pT0&όzD8R84`%͇GBBaTe퓸w"LWύœ4JQو>;4=?_:ڏŸF ކ`“:: ;/*XBvTKK;y ^'B[^d@v҉uoYT ѭj =h_ װ'+\$GTzbTJ$С^R&COg,xW&xxOa{Qn/~JJHi0)L9l~2rTCW䓞 w1#w ~"?N̂P~ko'EprBTmEs720;?M2V /kttvhEÅ͜~G$4Ybwn{9K5I'p%ܤ2͙Yjɾ cwdޯ$e4 TNIc*-5iVJVqR+|MJO"(WBsG̢ԋ=cl:6D9Q`WR_ԑi(p&ĪP:f%2(U9N_zsQkˏc$V+pb~bXw OED(%䭋ԫ]zפ."B,շ"I/~0OkB7,Ky l;Q$8(E݆I'q=_WղW1ήS= 7mVTuUi.8C@z.܎o5CS 2 u:kzRDs_߷ͿFYHɸ Z SZB͹i).|u$kn:QTQI6&p|$8hSp RcFw$ Aq$isty-\3w?t陛alHGqb> X!]"fHӏ\:(BSr[kHXayV~/k_U($Bl SUVB =gĿ;2^ub3{5eEZYi_TO|qf6ڋ5]lA|T_}rWfkFT?٢kQ4ew}r C\W2AQꀅe`7D2TtN fk$-9DZ% +=\=Z^,áE3 Tb^ŭgC)V5;6عF< ~wGY]1Wnf9ijPWl3uҲtM{ڰGZ G|r>OQsi߱^[*Lr瞋tqlp@*9a{Z\byISf؃sBX3#Y];Bx̀Oh.L z\hMߴzLHK6V\k=_""~ͷ~[4ٕ蛜c7R2/ N$s&Rm3ZUh _(mD#-'HDYgg`E$HaQ$}"+TIV6p-Z._Vf{N,"X3 ͭfsɡ;p'$bLyVSVd"yO0.d ZҢ=ٮ\Q<bEd~M{ T4U@]jC;Q ˏKkУUqf> p*k~ܜx'-qE*(!K43XD -Iv-,ZƆ%«{>>mH /ipggaaxݪ mh\Ṱbv֎԰'d6f"syLlМ*Y% w"Hү渺#sZڦ{S[ۀYx}V< 8$\]S#Yo9^=ېW7kN"$ ?jgED>Vmq@ "&rZ@Ut$!}<˛FqƮWRvY6lgf?JuL̥r+Qa3tg'^@i2d;|xMj1<2ՃR0Wvy/qNpNn8hډ[x۳sg&nD m?%zv}=JY%@Uc>/L!}W'z9cqT9î!ӗlS'"zƒeD7/]OѮũYe&E!Cj?E;Šr北d/ RyH0^%4-;~AP I!d:Z1hJ !j*_'% &E@w"^g}qZv zk zs`e!|K#.HHj|kND/  af y51Z^>rsV(I)jP|l-2AQXd@2Wl讯~ +^y]|cDpH$>gs!ӭ'ħ.27+o,FzhY]|= }&NEZs= , *?긝|B.ep>0#fV^M=SKMun8`o[v;?d@ĔYlNXt¼-B—X (<+x%PǏ/"'a8BHzo!jh|:hqSS!Lng>?#|ltƌ +*"{o.W+7V԰BN֖L1׮v\V t?lnW;g`Q 'V2ǔdO7wlѬz+PB[&Q]⽿Ѥ g%LR,ul䥑!@Yknb wdv|s!WcrWҩ]Fu<5?ۛFFeK>իZ )`7d# }JHJuk[J  ?# yS2\js &I+mM*x`uwe^}sKmSWߔhiEiirҊ״nb)ҹ4 FQ5#bFøѥr>pC>\&Ύpw_•u* ,xAo4m.sF;IMvr٪[ح~ -o ,;H d0,aO.ql OX7ۗvm %x7_;ÜuXeŋ2*hzow D g}k2(,-zĤ# ͡Osj{Q9PCc'&-{d5h4Ty7kpvS1 ?D",݃0My [l~Ķ z<9wzeyO[ے'rQRtş<8dl1la|*$M#ާ0Tɶ%@[t~qSJbzYm7óˏa)͎bCUnSkcnܪp>+?`2(Y+pxpA*, #bw${<G7d0ź}U"b°u9Ė6ڴpCgnk"T)G͑hyA)KMc̈́逿#Tg?5p-%"&0XިFGzm4?5nqٴ^*Ss 6;FW8%F89Fe7Vw"X&ކB(VSsƈbBW|YФRՇH[{9O,rP  R$@- ʳwp܃;Zi+N̵oĕ-wc endstream endobj 88 0 obj << /Type /FontDescriptor /FontName /LMGYRL+CMBX10 /Flags 4 /FontBBox [-56 -250 1164 750] /Ascent 694 /CapHeight 686 /Descent -194 /ItalicAngle 0 /StemV 114 /XHeight 444 /CharSet (/A/C/D/F/G/H/I/J/K/L/M/N/O/P/R/S/T/V/a/b/c/colon/comma/d/dieresis/e/f/ff/fi/five/four/g/h/hyphen/i/j/k/l/m/n/o/one/p/parenleft/parenright/period/r/s/seven/six/slash/t/two/u/v/w/x/y/z/zero) /FontFile 87 0 R >> endobj 89 0 obj << /Length1 1981 /Length2 12312 /Length3 0 /Length 13520 /Filter /FlateDecode >> stream xڍP- Aw@pw 3H]{p 'hp˖yޚu֯\YY,iqffca)gcr#QS[:ۀ#G;:YAs_d  b`qYYCs\-M ,Y; Z%t&6>>?"`GKr۾D4L,Nٞtssc:9 3,-`'+GE-XN)̜@` qz1q/j2%{0/_&o?YB4ڃ s $)AL l^A K AI¿s2qwvbqFn^,1COlw߇k sxYBL(tpˈy!\<|nb#=O%|f/e},/?H^N W0o#$663ln AE 6 ;@e|y0S;oG Qcv/f.3; o?t?)UYo23;_Et?=t =#(ڽ3@{XXM^Ou7#I?t?zߌyvq~  /U B٘N!"sh$i6Ut6ks /m,!`e;'?.3+^vRqz9?U;?vrty ;eIM6s~10sDD@?D!^P7%A<oJF<ob}S^T#NPƎ k˕m[GG3//y @_$@ΗYx[\/2N f/ۗ{h/`/\_]d[=`c{KVNo6-|2ۿSy9\յ^`ǿkHM\_2uy?`;iaD ت&J؍y{'zf6;4dʌW"Ƀ˛tš?{?&Nl ?FYݎf5Lt,u /r.[{mJn9䇒Ihi xgfRDw˫)g2F$/5ϕ2uvNB*BRK /џ)s^E_dC~jC9pVw, oNƙlP٨e`eN>!9>yFOg8 Y;)$ڼ o3e{0$m]߻yvg./;Q+Sq)g u#!P$!6 ,xZ}XB1Fvx=(~>0 ^4ܹ}jmA}%x޴D<f/dW˭M:)j%1p*VUz]aQ>a9cBjw1_8K/Ţ8v&pr@|l!Ky:ʠЇk#\g4sј]߫M7 mW3-dh,I&%xyKu#Ӹ䖦j=0rX;>DU B㉢hvU> L>$,SC/ n΅]H{?@t6ZĢ8c9^B:޶f$MqʔiEJƆ_u낓YZ6܄2_P: g~.\d7͌%&;8 y![۴@Ҷ^)vNwRf4MzW`2r;#ت[+o]{2ƚS0z]Mng(_(_|U.7 ;6"VR^O+ DFY#[BkLBA!&i h J_LU_zX>,f`07i;clPŇ߄tJGVcGy7umSڂŕ/&Ҋ¹n4|Ox pߔkV0w=g \ 6y {t*7W_14HXah!&g"Jno/[osy{Ybʖ? 3#-䠩1 qhzړUblf*6Py^A{80N%q:~Y!UƠ2eTo JэSա[uFvzϩ,fa'}a)X^`{y{CE:+k ԺCc~P2۩`klvF迫%sVՅD#d{Id3#g-jdSwr ZZ%"*a eےIuLN-RkzsW7`d6I/(XgM\LdeuB- 2"s u[bQ+'tN?-ݼDM߮V+C@dvxh&xQFPSA rmӗ2!Ts 9eƐ'[Y\--;܃A*RJ ʶ&USG@~fUq_!|gE^u쭱ߨG@aA8duOº#yyv rS0׻-g[+J(|lW#7,$$9 ;rTɄ8y?_8jR&Wz2[֦T#>t6T#&Q$#8=;:z 8UގBh u,埍ˮ((;bɔ4Fj2ypDO/?/gĎRSӈd?9eE6yD[ 5ӮHMM2'vܻT#u0ԙ^nq5z;}Q+s#zى֊PRehFRu,ovn&9 ,F΃I1g/n;_zÕ&S9~)@I st*kX)< D@ C i$jCʧ@p6m1'I9` *n2{69YMAI=RIӰ qs]W6 N?&cکE-ϖHυvˆ>.RHgWMgKD14Fyhe~O)ˬį_dLC[ JR[e)!xVTk*0} n7cXrV _y1RGARHdEHAvEX-:qT%gQri>P ~SxE(B'>|.15^H_l70~^ ="} P~ѿ*gj}}6wꮃ-֌5)2٪YpNJ\t0rVq`D=_8bK`cs8{N0 Du3?ɡ5D"Ƈ^0 s`unrSw<#߆oR`?"&G6?]H+_oP]9m~!L?X`*$mT(4ɱ7iH1w >Y'M =f谵THHے4̳kp۝|4M{~=+io 6fJ."9_x{y+${{S*k3oNޟ R͓f-9#2ЂFMDZǗxR>jTo@(v(s .1+?z@I ^cGa_Tl\C8Mp#Frn~0[äɭ1SE$q5!Q35R3 d! 1 Ë @Ԁ gū9O'HՓeE,%Pb6Y˦u˗a,dВAU\^f*b>CsW󛎵{0-Y-fyv_; h>s,G #&Gvk|&d<'B#g"g_z{9ANZPG{*ʯxX|MO$#yC?2+\\ 2//MOk׆3b\;}[{]0 Eb6YWxesW]NZzŋ. %NҢ6vh3S_^n*:HMmB~X)@$dPlTH+5`*ynC30"{EK+ FڥaT(M4ݤ6Q ]2mF-+g53 h ]d/ogY)MNK+4.($H#FХqgŁ|DN X%c &@9my]5j67Em7)5]zz}5{$>|Fa|d3/h#=rͼܮe{/$?Zد[ZJK3j'5o_w,'m:JN q/PW*HP訜J mԛeC1L|hYS42'EA28]k Lumyh2֕wFrEM| UN6-PIû*#c&4nE3 Ÿ5^7#;^$/m٪IwiYl3$>Ny rf'>f^0{&dՍe{{+jmU㩯L0DlikyD1Sn{I`vȻIvޑq g4ԮJ)%)j^Gz!ܒ~U*RG퉣/5UY PgDi,Fùw֦ث  n<*ٓcfmj B,FWDRHoL\68 ka̲Q)~+ H'N}ЁyZP[U7p#X J(ϵ~ @#>M#-*];^i&Wli^;청o Oq-Y#1}tl>pJYX|).+a$oxJ,r, C ~,lIai:wmrzgD7/Ԍ.$6Y];(Q{XZ-"ER_Tbu>٨ r"_u ۻP|pF*$UrVԢ>|UPCYtmzLȳ-%XUǭopt"3Z!=!MUF/~߱DЅzIPĊ|RoAcm\h ]3RԳ#_EFmYWpyӆHT;*EK`wy[hnсJ{ӪY]z7a4  _.6 '=L.I kȭگ%0mBj3z; jIqWx! 焓*=avHऀȞ/`' Blj@/|.f~zDܭM#( G U#Jaрz~v:5?5y/w%ӕ,m\͞q{J[M8Hّ.S.q#PS>B)6&az};Knm6>ptI j;g 4ElK~+~W613+ jG7ѷϦy,;*T' r3x]3b`ɐm䐕_M-gV( 7.RZ jDfزUپCM Ȝ3G$d;ա%/]uxcrzwR,!J$.:5lluH Z(Q)t3B ՏVvy1 CdTw^En<2'^F$ Ӈ2!__BV) pv5 JΟu0l^ޤs8PqXlP7);&g & vq'{H>/uZGؔ7SY<˵V2o٤F̕=Ս{);g%}<2h/ƣKkP"~7~FI3RpVu;r(2_M-/ܹi2Bϙ @Unnѯ!hcOV%*i퐂t~59 +f97P{Sv-= cVS!88}:n"i/*KM;THs0g]mS`X['+v+X8M 4DmŇ $#2iD;ҮN@}`4ᚚDU4&rJ v/O6H 8TO{I*gyP猪 +B~d;pYJ|n/[EhR0Z?W^r^*nQA[_h.ͮ/!AwKܐFt柲ao>V gۥɭڐw*j>(rޕ6z9gv!tq! ՖaO| E鞰c \w/ %sdEOfW=^V/$jojvq0o}%M,PzWtC!boY6"0G`&\8ئ#Y RHqU(`fq#t Qe?4hA@XMv:^-Rh#]X/X5HAte|H_9:*:Jd>bk;J䋗o^)z.IgVqy'AIK[I}^?7Q%mD7dKI ̛i$ 1npIgM, =\ڊy!<0F嗫4ړp7^˝ ($CY#"aP\=bWb -Rƫb5zqyn66\%'Xv`.l!Jѡ6e w+F{˖rQC(CkEz(=.}fq?@f&~ti__/RzE{=tPEF7 v)/ɰoF[c,͙_g0N\5'Whh^ݾ}՛dրhYv'K<9QER*mj* W&btnsia.gq>k4߸, TA.v]#s~r(qUAWb4~lôRhigŮT&^%vz.RF( [#/KXKa=X8˽El y۠&i,,qY 70A߮ĄiI$Nmyf4bS$"ܺEi& ޒc~X1qth2f39m"~p`;fE׻uP 6z%w("rsc&Bk _=85sx+S^G$™wy$ZyLɎF\jWZ*R|'0xRxyCf`g4_͉JCB0Ag>z)D{s)5E?\zO|i,|ʦ.WƾJVw:s_ɨU>U޵ք1z) 6VMR% +Z:HŠiU Uww"Y@Ƭ%d^PbJa #`}BPlRT D␌nQ.^7g-b,Zu sɣP}jtJʸY5 TІx fr-R+ +<_I8):_'9kwh`m(|VV>Ýdcr\1!Ȇd}Bxn=8>0æ~:Ox#_ 3a AŔc4X=chZ,Z]y$JC^Myjn(聪$*-j̼,±'--0"\MHtk̫//XpXp.xhF=ѱgأӯjM:9)q *l3nx??@C ɘw:KP<:<جȃX; mj<{mZ+@pLPhMФ+P$gqǡ;#7u+*VمKFߴF;=K~ZP 9JEpL[*.nc"eRJ0}oņ$Xq1CiFw#a}׮?z]iNq-|W:tHRϴOVɟˮ"82#öL3+`'jnӊ~y.pӷӆא0nwUDS%a\YA=S4LI Z?. !0sjvbw}V^ mޯaݡ=i+Ν]{7F@!#tqŲWATY{TZHR7gûGØ% chD~F8wa+}JacKղD}nԪ0 ˍqON,Nt6nYLݭQK;(Cm;뜊 #N@OPr:<ɟհ )F3?3t"2&z7HO;xDb78l|Qaf>riAo~2вgqz-{)d2`7߆_ژKykHQ#4} c9rx$cUybg;÷ȝK!3KVbw6VOê)JA?TВegdӍ<ݟC6iABFkD`]G-Ji/AtdJHڣ_eGfQ6|[ްJֿm-|&M0#ˑYc=8e&zc,kCI!)zu" +4wQ*2i(i` U`kFkJ sз{ ctxUxC'F^CY'|0_=З,7f>[7,b3De1O.Ft~۠R_x1s:g娬.ИPk-8 E5{ټwqC/09r8 bӒCO.i [u8SuybcbAFRCpVǢ}?3 4*HЕ)a'v.5jj8ܷcfXKgkَ4%zkrac*.D  k?7ǧ s<#4"17NqjQ$/O$"[|?yw3~)U.\TT_IM0G ('J\ /,OU [/\7ȿF3:Nci'z;7@BbTK9mAN?x1` 4ll5 WOc:A`Ij/q۲wqT%**KHzۉ"Ix27)cޘci298%S@~Ϥ(IyS˫6's]np#Lg*9LvNjkF0Aۈ>Ɇk7`A ns%t7(N^U\,NqDZ&o("'B*XvIH,0x` $7;H=N.$gl(+b0IJKr4ՒD˿YBRll8dYD֦8v-}gu?']Wy㺃p*yГSw[=V.]OxS^%B,KZ?nBdf 0%,ks2Lu$Z¹%O=Rv 5*=׿YPt(=.c*mP+xS+X@7Je^:ӟ﷮ E=x,o6\=w$-Wrb9$ EJuCҕXoHPKL[,m&Ow*6C)n-9%Mr:%PY _KSȥń?WStñQSAm` rD_ ?% q4 xv.n׶:4_g,y Bq^r%lӭ&=}5X"mԍ[ u aKxHj,BJ~t}7U+ ͜!5aqK}`%"8${~Q"U܎frHL5G.*t|R^#kA+]7:?;"E$%:UE\C'C -j'_Q&~?1`4ʭoS} EkIs:~=*}Nz_/{ (PNo_vme4.susvr*/d̒^UؠKAVxpQGtHYlp,("M%Tvh\1A1{ݠʘs04@[n"/Q'0 QcZEY\ 0~:+K?yz0Ty~Tl4@ZhS1K n &""uMؚzBpRJӔ^qR/p`z0<ʟTghSU[@9].&/})`daSS{\E==mXHM40{7yK;{'OIvB iḱʳ'85t$L]fTN5! P2{NFë #7§ʄA_x)&/N@lc"2Vr _fG0L ۽PoV2JK#k~*19B(qF&ax}ccc$nޔW]ZPOW뺦7g\m(&nis,]`B&!> endobj 91 0 obj << /Length1 1667 /Length2 8815 /Length3 0 /Length 9895 /Filter /FlateDecode >> stream xڍ4k6Lt A0:QF%j%z2-zGDDssZ߷f^0ӫkqɀE8 #Ss23kCvĸ̺A!e =O (;xBbb<<>1< q0.FG;WTTs=j 5D @ n 5 r인+)vN+i Є8A.0w€ {ȟq2NʵHWA- 0{ gRRr$IU/7 dawܡ0+%xʍtCr@0o" ~orA@?"e4Ju@:q;A~ 0C:OXܗggmapW_ [NԁA!JQEȬ H 0YXvw-Oz8\ $o#\^^jC0ߋ!#n#~p?? 4U1TU3up7O+*o7?!UA J0K8@<\ V'2X?/&sm7 Eg;?l?j=/(;#B ~A\eYuJHr."ICNzp Ý/:q*6 0 8 @H{` r{}r^K8w?y@ߢ?0-D#[goV#B@迠h/xok住 779ۛ:+ؿX'B@b[: S: އ仏_%pF o?V\{wnn!`)Bڕۈ$7Dv.9D%o2>w-+}ͧw A&DC ؝{㴍yl!~>揕*eħ8Dkw`wRM۞Yi(iɋ˔Nt!:d]z)8|@YǏLp+N'6ʲ#t:9EWgDLx-/Ϛ A 4s Q<ѫιY$YQpKbƕE?Bu `UF{wL%# m3`Xm_Xy>}NeGBPѹ0 ZruPlT/%%Kʽupkrpt\޺P_>v-w}aYfXbLJW?`c"U.nßp&.!&U oñ.q~W\z&,U )-mz3\RzVpDڂCmh5 ̨֓<&4Jɛ>)K\bs_uxYnI 4 |] nJpVV$/CgUd-X&dm(DֲbjnCj 'ѕyIm @3)?ޤm*UmbAh: tCjHXH0s-`ʴBWᅤԡ¸br3&veY=_*;#7+(o  /S>g5<'ooտcBg qUQρe~X'^x 5Ͽ . r9ݠRF=ِZ\b@cr>A;c+VT<>o!ҥG\,*vy)l~仓!ʟV–Bfau{S}ӝ}#/[ӋGX׵$&௬sEDv[] j`/\Ov\Ӊ #@|()}I"!#Enm4EgǞrr~P/S_芜]t;}FM3K4|,ɽ?![ܴ>GIrlAnCЁ#2P"";M1һEI]"\8ԅ?߃2ҝ%D pG1Z=uJ)OQ\K>틂)"HX^`3<||1;g2znX?%kGT0!8mSRqĖGFedY^QGUkYEC6sncE 6EcX}zm[@Nl/8>tJ'ra!Teq[P\ ڸjRj1Ψ_2Q/l?)!WYz Uo0)s:WDep]Аma1emG[cc${ 0trϥKzZ Ӿ ̌-W(YrNVNP a~/#gYfO%(Ykk 58ªn0\&D0q"+YEfB\A5,Ѧz/fRԓ?3]pzTY3'g4XET# Pw=v([x`Z]0;j,YrUV`:%gS6%^P5-1Xyân2Ok* XnFCJٜu5C@ϯ|ĜǏ5+|uDR2a\dfDMϥCOk`_w+XU_WUyF$ghR]e/Kz\yzf8M9ssEթ<g~nTb=:ڂv)gO;ِ˲ I8qϪGzL:*5AaGSWZIo(ԕѓt|1寵ʼncw9 =4"LOmtTrR8Ş9CjOv$JiF pu]^ Nkt! 6 @ƊoqA+f[;53_3ҍԼ^|rިMߍ‰C .e3S!n>GxwAq?lPJc{m@VN7nJq.ܢ/`_,Ã/g<ҫ9b[N\Oa ~l:q1_<{eG巊 JvxsԽ͐.sj?YA~] LI]Qwg_7ư'vd$54hE!)Lw̹C0|XOyfZ:i@-{<z&AB)Bn×1O}޲(%6f5?;0 *|-rr)_# Q pD*q¼΄DoF*/J;K!d8_7o ϻ#!d=zwR;_[0S[iȥ{=fKKM9MlbD)U7U9u;Yq\>RXmӜ;Dc\(}ޝshZR}/ֺ)dD,ҳn!n(@M,0ӱ(6QHe`xZ3'cb)G|؟Ugv#Sf5} 4) n^dBY6fn+a}~XCOa)KPL/P>,1| Ž+9$jJmbġ9,=G^`^lw*Sy:eI@:0q mծ ݨt#ipSc7Z#f*ç!s@15FΗ>%[ri}:sga~ՇjݻF/F,QׁE/܍ܰ: :9)ȳ;AJ3\Òl?0CdܾtLu\+8ŏF/\?W8.ۤL_@@y\K:`ySoͧr B'_Ͳ skus=? qY|5ԢP:fg(|)l|& }$ņ*J,coA^A$&6 bzݙVɹJ 3b ~7"b"CFzп ;- 0Uc⯃F޹=u,A j]? JSFyFOJ<ܨSa~qw}ξhWge+TM}p('Bdk(v&~: {bjLa$rܹ80,X{&sqO8II~1A~,+[.]sTl2*Hň*[Vc5݋~kػݪ$%cosxDc#Q x쁺9Mbl0q!EH)\jz2.Kj2-FʮeiBλ&~{K1=g=F][L8])Uйڧ/͹܉ڡ-KwP"j~P39tc}FY;Ʊ72 F 9)|m/T$0&3EJiWl8-NoctnP}".z%ܐJnnVoNb"ˏ<7ůk FrU=.@S5iބh ٲZAm0=, ƹm 4>K6~9~ *Y'-'@1R+XkVrԹx w7VO -"ήIǪW0+*t hI6z{6j*=VJzDNZ]֥i?ifC[BUM_ qxwf0z4ݘIDzrM]Y?|?k[֒5[GK)RkiÉz#Bbh1VJ]Þ{)UFU@6tc,z;hpsJ<+VfE;=Ҫ%IH&K ۷kBC2Pipi^.IRJcwZ]toߗ@:sG(]Py"sTT% D]I"Ü瞪A&w2u`<0kGklvO'׺l9s?wѩdǒ,zs^il%CJNKƦElnCR~0JKRi>v\+O=cߤ$rYx3>K~zMzSy$R=w3--ll$}p}"PHV8dzëe>yhueʑ(Jh82zڇeطVs8WFh_i+_pPܘ0pj'3kBϭU~]z}H03ekv[ŸArzCv[?d*s4La+u~7 ~<ϊBĊ XE 5tM0v;3eg?_Q}}W5*O HM=bƸTT==!x|}Sfŗ-G *i[!`h&oՉI ͒xbu*5xa3"@Ӿđ[ٿ#)uNXб|AΔgw~Ő(VKWMZe~ l4ϑy9?fbrpqTqs\ƥ-m M "%9͎dLV38drt=ɔ;u[ĤyMcJJhbp n++1aM1kxLboZDv 4[6H^iCX}" ' i_MpsdNb P݀NpNu̩K˄U\UUGS "Kz&x̹Ī⮾ #R22咐9[M$`RbLJEA_籎A=ܝTov/Ώm 7且ͨc91|Ky#q>O\h* hYyd8oEn'Xgb9)w~' Lx`r(dоW3_DVQs~AGE.P]$z(L  nAAE8vh‹L9+p^GO'U ;k&?R,7Ӟ~g<0&w$ޚ"),Dop4V,X@ZJ{mbo& pjePxhņ$3 oH}3UF @u=Q~i]BCª,IϹ6'Z9[VeIË} j/erU#Q-;ZNhQoj ;kߢA.xϜ_o/5j%NMӿ˔/7AE-(=ZSk`` j;%0e2a곙x5}-ǯ Y4CLCHWn$w.5FDp᧏sf)#\kS!naR8mVFm*e4D$):"c(E_Q2l=)rCJf8͇_C?2*$$Cjb _#0R7g9i]d2$`rMy |})tqQ? {h[y\Rsrҧ1M Ӈ}ǽ`nCRzQ}BС}k>5Ukm`1sXT1X( endstream endobj 92 0 obj << /Type /FontDescriptor /FontName /ZBKZLJ+CMBX9 /Flags 4 /FontBBox [-58 -250 1195 750] /Ascent 694 /CapHeight 686 /Descent -194 /ItalicAngle 0 /StemV 117 /XHeight 444 /CharSet (/F/a/bracketleft/bracketright/c/e/i/l/m/n/numbersign/o/period/s/t/u/v/x) /FontFile 91 0 R >> endobj 93 0 obj << /Length1 1446 /Length2 6279 /Length3 0 /Length 7253 /Filter /FlateDecode >> stream xڍwT?R*!"@FIww#"& ҍ]Ңt#J  )!t^>O?z3ncAE{ B!B`)& E`a nn "PHP8N;ꢐ".-`ɿQ) ahp,2 A8:uzxInp BqNp7|E;+e(á@ OOO!Vqx"pN#8~BA࿡ QpL? (';8ccM>YO@ 3+jgrCC# p(#C=W( u(@M#kAqX!,'F4cVE+Hg* ޠuA<IO S$>\S^E%nHgo4SFxpCዅz8}-Q@ {;"dǫc^K0~'+G4i:tL~Jv>YWBlgV0mio{Cϖ7pp'l:fI>w!5gz6n.l)f"W2-xFD"Kb}_v%)dm|ݴ_fMu]FM¾_ׂNؿ§M(){8(ΊOݑ{l ѿEPxomf(>$7F; z( &.~ȵj)ΌD'Z} [h%i&/+P9 ^|x5ΰ?d-QlnK^ X +meAdBOdo823d^cla]lnl)^n6dHԘjO M.޴n{^1!⿷E)'"Z۷DzkX{KV9϶)EȦ%9ymCGNMa<$i炣Ʉ E*hg&PUG㗚bj}ؗnp+#|XXb` r0LFtq: I1ddfWZ4*[$iQ܀cKv+ΙF ʥ%u@f:ĒϝDtn^Vt}#GchAI1դ-;G|>oo\[EspplγG _i kS߽?H\whir>}8?meE!(|3i(]u&:d~jS0Cm៿WFnDvvR ɑ\(?>0''t}j$c?껑g؂E[eMպ[5ԝVہycNڕdp bc;)7ie)m !ܝW洆ʍǁU=QvC-?Fi׉^T.6JɖpZ7:ao1b= Of RiQd]!ж[[ؕ;}}j-czػ(p:)W0 $60GPCNs/LHh<…̔m [! ;o0=?U9YО"zF_CwPydgXZai ѫIaJVo QhIJh^ZUhMHA}>ܛӿ&XCT} TujQz\=ͫE:=^M\`FF#R~~fhX%CzM mMKFYB]Zz1^O*+$r2nhuQh` X 0tArb._d = oӋFbJ P`jCc 7pSOrXw=b)k4o",|˼+Ge]b5k{o;I-zn`(imJ'Ia&WckjE?#B-K j"Iԧuo@ <7 CɇQL(yu.=g'4u(I d'bs}GԉTkkP R6N{>EgAclf$9PIM٨ObږT#rZlϤTɄV@ۊem{{3s4bzE̼4*,$M% /r+;{w Q٫O>Te %`c X뛇^B dT wc;W-љL* a2T}uH/,x-_y@12GRu=#\~vfaVx:1ŽO__|>1l=Z17_ߎWVe;WAZdŜd>BZ2ܯN ]b@CENM?oT1^?u;oY2k1 FAoAh[N,e؋H[7I.1m-CN<7B+mSr$c8Qt&iVF8ʯT>U0<0TaZKB=7}[j8}!.HWk\)kEZ;ܑ!dMayL]TUC|u`hn\c߇ǡnk?t}X|nYY& "L]TOT}4{̬=u[إ}(DQfpvTz{f2 =s8AEֱ12TUpe؋Zy׎Z;:ڥs]8YuAG/&4}rZ#]IFe _}hk:7MzFoc+.; f1VpJ)0ƀ%[W<ޮYW:*o$n|,gcԆ HN)vVŕVw|ؒ~YHIVk ,&~' G9;Q2sj09AѬd8 QmV~%airc%Oo{XawB}LZD;^=*+'mw٘ﶟz*RYlh$v_m|-KxK4vϼ[L\o$ QOu17{\YwxKǗ7#ӎ@%f)F2>+.]ZHVvxp[-%"E<`e8C 7p=IS$]MP[ᐽcFPsh:\>ұ4Ν(;'3?m Y^RBj5 &~6u.ս(l5ӑg^Mױ~/ECR~PZǥo_Ack`|.=s!z͜SǿU%Le!5i'la{Im>@"Tχ^a9ZR S@ I%"s߆WчN6=_^mfrBln ZUs 'w^Վ2)YZTV;F^kD^b#BSNeZU4&v /[赊,7oK;ykԟIX\ ; ~4G>Ns}8+aT솭֟,>vgB_T D5lȫa=H\_p5`E{q_ yT^E7p0uӪ({ggѼL"!h4Z_!ȔU7uʓg%!$I]>,2(X%d\XcgE 4Ox-WEn`ԛtj~'黰lWp:#5ഁHclsRpy^ŭ=$1SW?ج^$QUK.+1UK_m.c| /Nfꢹc̓KaYP UD_GRcnfB drbsI? BlBU%VWsL IdFU'arLӡ&ݭ7!OCC}s~{Bn`Rl\tǺl3P"ov`^I뤩e>K9G/뇋eM]6`eZ= AF?Rc N,TwD%_<ꃤ.EtZ3mvdї)h\mh5\6etKTHߋ+ ͏w :Jh|qMv}JCR}mium&Ğ_`#L;cַux-2E :rQڗ*XOJq!k%sdKF0)TlS`\trDOxq.d\ YIl}{/sY{[N5KF@bcѲbNm~Bb_Lxfh׸<| $ƐRg]2L;Wd%S糕c[vu+ut!蜠]Be%vw;yRg#WkǪ7{5[6N4M^rEĝ{gMF|OF\9Z1|{5#ZhV4TA A7/e:(bWYNڱ<+{Zc m/VQ4eDk.v&J0wب-\Hp U>h\8qofȽF#\]T)9sU({/*zH*~O~aeOIODPe!k̻∛}f^"{&9Wu`>L0czT{ȀЛO?!'17Yb QdΥb/ok@,9|/ =|wsGKzrC}T'E `Or+lp8YW1Ӽ\A2\29WL*_pm1Hm`m^upvKa-9pPP!ќk6f >? ʨdo ܋D{g>S F#)GMdHIR\R|e9*|V9%PD4u7`󃱬V1Dp'x 60zyLY6v,!*{mz9ͷE5]Gny\Gg=xv?ʼ|4J8XtyNOvPIN9R0x lm y+o%unj@FQIWn(4+F|&zF;aZ BL /о /ko,mUСP ,]NT%B(~dyaH@mrML+%Üܪi endstream endobj 94 0 obj << /Type /FontDescriptor /FontName /MHSBRZ+CMMI10 /Flags 4 /FontBBox [-32 -250 1048 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 72 /XHeight 431 /CharSet (/g/l/o) /FontFile 93 0 R >> endobj 95 0 obj << /Length1 1514 /Length2 7534 /Length3 0 /Length 8545 /Filter /FlateDecode >> stream xڍTm6N)t"-ݍ䒋4 , ,K,ݝJ7҈4 %4<>Y~3sss΢kEZÀHO_P iE (G_nvc/+ BT(4D4B"!qi! iAA@4@@M$Ftvڡ p$x`pQv0'# P*%kB9K xzzܼO8sz_:`'fC; vG8pCg#0Wp63  nBB)WBpd0tr#[ xGyx`D=pG5s0 E wFQU}˪2 @O [dHO_ E,`4T]la(yA~7vv:#6h0 \aE $!(5 : c  ''hyAG+gbJJH//L>a1A@*7^]0)Ap@_<<_+ :Hao.(&A?/?6twtNpGh)kBP؟UpwjPDآ%'$/(w½`P]8 bGH}#E8,A~UW{lz݇*Fa1qMCPoH:A@ՑL!L1L)?&Z=T7G?a4/ wWW4C`^0"j_qRޓos\A#a <ԀZAn΢V%p_ha߭rzo3>f-uds{s-&iJLe$@m ؉8=9(ʁa:]_hS1HZ 7Nh8םC6b#uiv]$y֒ /3DizoHUeTDqk^yfZ+S YiRZh̯XqD%wem!/EzC${f ]v62M}pku#vV?o 3j |&9~AV5tY0i#;NJV }8#"Қ(a֌kpuۉ9+2xSk\nQ L#c4)]& &9DQQ{=EUfV!ye_êŷáol<P0N.YXG j:T.?mb@3RB /~)bK$.m[.&&d(eVh.Z#Gcܞ2%6L/K{Yp"NiKo bͺe &^ SnsQȳWsfwgn{#6۾ G_wl }ٻ:BR}ΛDhq m!;dކWČ׊ڗJWWae`~[lvF'W,4N?}"Tm;㴔KC7g*Fu\[FϹ֭l nIb֦/ѐ($d2G5yj9#FmFQxa uGl$mM zC2㽫Rm׸JJ֤Hs7yupxwX'2tWţ @35G.Z❋(ڝ/\)ɀhy9I{cLގoMۛSViמ%Av۱f60L"cgREGWݚfIiD;ټ.mѬr}WDL J"Agx̬&)b"+]\ɫ#i:5579Ombyt:nOUt7YemiX˰AsքwmqH}Ysl [>}W(FE#Jڊi$0j?>}:n#:eӔd#N-ΙU,?`e|m;elޯ!{X)*~7vbGK#GU;{ QMʀW,wCM# bxH2UI)Ekgx@3q)yJ =Տ_ag-vz&tjVPf I3 3ۮ?StSIYiHA='W :AR鑃,WeiS2ERkyw;)(>VI(QAqjduC4fyΧGBVS6)KC})1bw0_(LQdU&4iU2*d2jM5ǰ؜)?:Dd6e6qQX"3qgfoȫ<<(˭:E:w_KAODb|ٶGxo&Dͳg8~}F5Y%sw.W _au]~g@.zuNkŵ᳂`폫w{(&T8?p:ߏ;Kc=qU-b %Y^+uDϰQ-50|Łز{"p}KT2=MwNC%\FH4Aߋ)N$a4z[yF5+-"jٛ~ $5 _֒D˪] ,ļ.j{}SϳMFynRn :Ӝ ¥ XIqt&EYFEFO?W(gYT ,M>)LDm;{,ثIٕEC,rB՚p aѽ /ec%15Sp:ř2[pҸJJsR݈|S-? yMچO0u;TeNߴ_Jim*J{7ߵf5Qw"3/_b703%<ƥ)*2Ǩ}lIe/ j&M_: NQ[Mh̩U]"ڕlY*xhR&E3Pǧx$gw+Sԉƭ &O.F.}#>"Ɗ7͔YYLePΠ,m5`ڥpb6:ͯ |a}Nx wEbz+&× TiH ;?(A RڬnJW:}m-LDRy[T)P N yN%>! &to峌tFg^fHXA8'nCĄSMSIrE`MC-a@HL ԏwy1ԬoV߅{TҲ6V00/:LZ@N[xr cԘy_䫡w6~wy.ncC<9^;@-i6FټT14 =Zq.GRu䰷rOfwUi Ki w';2)KMm9w Wѷt:]Ac:ٕ.ur3䐋p53H&`y?Mcv?^arC0s/*UIo؝h)eJ u4c)HOHIJxWwzQ֏:-M&T:]jkL c,:J=pwu飠{Mt^^!ܧob)nf$) kqK_)S{1hIK$>gmECfӷ:zK36 rE//>`޺|{.Փ#neroᄋ  x-{*?RۗVnVmʬ, ^HU(}pwk᛾Hzd`hKS|d2% x7;Ū_t{q |4ę_ !|sD+[M\ݺLS|jƃH*P[,jrB#!R&\<ϽJVV]ר{F Oym'ɉdzFUC KM='=i ծGaYw&g o0xi)^-ar'>k鏽|nVtM-9)c}{-2slgJHiy!ݨ<Ȕc7#$aa K-&OHX)KW-H}`]\|qKBjZn#ǤqPIK免Y`|E 8"y6kuˆESm[ODkKQd =kv.i9WϘ=U@oeZ5;0nb8b439M\G_ -Y$78C&۠ %"em'}!6gv.'Ui1s'/makzIlB>1^lȪi27s|dٵU{1u~=<omţ ܣ{%; K|Ύ]4O(XW^TQy7*ξdZ0eݢ+ܐ f xiፆҘ|cX|Լ ۇOS/4;}\7G *Dng*TQ嶸 4H(r}!-nmsJ'9sϯ4ihךٸiy:iv`gW?ryLә`yBnzj3L'NiS5O1LQ큣9fvTxSU |OOKUsvEQ bO E-&\O-0̣'zgr (:$vYr?*W< mgyN֨G".8$Tz&O06OW]&n2ݽĪUFNUXaP=QSyG[~Gaޮ\q*vgE>ov2zTkdPܚW],)QT.jSioPt!+.i LJ0`/&N]'Z-he#AP C&`z> YFʱhbW tHQ+]M0!.K;bWm^K1?z$Aܚn0 Ũy1^77QH&()%5o)HxIFrԍbc[tt ? WU U'KkrْOެV1ǝ>}|6*.:tMmd:(5 a[ǣ~Ys\̔}Zca1@ONpSh#R>Xry'uZp@!9An"s.bNeחEP^_"p,SƉvo(>TKqrk7v/BPOѭ2}if110k4<Ñ9bwhlϛhIJ2GEq\{x׿zVEɱj)LIz]׬{/j |52,.{BʽPPh~w5>~-_xI^2m;?p3E>Ii؛*`[dTP*J:%mBٕӣIE}y=дQ\zё-[ωމYF¸~{9:湳0E:{=϶m[p!Sobn>;p8N$8^)s ?ZEb m؇@[xtV!I'"QQySVuħ2͆!=eW PJlb>-RtA@RsR9`R6Z/.>Hՙ %9£ړXg7\/8 Ę*z&c' RN)βst_NC}_Юf再-݅3tލ Y7鱰`d{L:&z7N~(3)\ o0/ךRӥőydNulAbp˝yTsEdxt Z`u:d ʡs]691kycrOstZD>7Usiy&J0('<{*aWm&DrBPz]'N n"& ĂȇṠV&>@2UlcɷVršѬF7;tM Op8/|\^+ڤNRxWiW,;e.ҧIXNm1](]* j|QYl:YghngWp=II,`FJ=/RSsA@` OkZ֬s]˔O0q(< OGs|S< WU z}A*.V,'GLe])z).<RDLqqH qu`~wuD iIK~I,h2 e ߷bI #oF˔6!ǑkxFuNW<.ǒ:4+CIjDʮ:2=+K ἹnX]ex1C3!D/! $2Yk}D;`4Hc=Ũ.w#lm$W4kFc:GװRhY 7_yMbJoW.YgNc (^Y?/ endstream endobj 96 0 obj << /Type /FontDescriptor /FontName /PRJQUG+CMMI6 /Flags 4 /FontBBox [11 -250 1241 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 85 /XHeight 431 /CharSet (/a/d/e/i/m/n/slash/x) /FontFile 95 0 R >> endobj 97 0 obj << /Length1 1460 /Length2 6263 /Length3 0 /Length 7248 /Filter /FlateDecode >> stream xڍTT۷DR$Caf!fJ@Z.T@J:$DJzc{{ky+4a U@Q\@QXYua({5> CE3@(:Pqx > P/G(@ Թ*8I*ppY۠0u9""B00Pl { <]rqss9 n0  uvB?4@ȸX60o r0 { Gb"\3s9@GY vV7^n޿   n C j(wCG"0 WdqU9 a;QHn$'Di0]CdP8 I>93inp?  ȣ9@`TD謡( PX_Xu@6?]qCº=˨CX#zqkY2 ;i B( a%_>F ԠRFM/Ug٣*~ƲCdJd&Uݽ=w[CT\WwY^ \/џ}Czk2-r}W3N54[9j1ϓ"zcKGS4KeD Wm@JY.Mo#Sڳwv5Z?I1Pb~zTGaf8Qz\a5|(-M""+4 '8!oS#g|=?}Y8xu_WC=Ue$ی:a)>-d.X~ `RdA;4]SI>ň*,:q#Zg'׬sj?V@x}̈(Sx#εܑϧ]hǙ3)2fi$Yut+*R%)b'0ê`l׋Ew6w({? bU7KKJ3g@2]{GB ѨV=Nʚ:yaL]p/;/9(j|+q76_Adg I3fg1U`4@k[#Ď)78le;a$>h]m/Wɝ@/q/z# 69o1jZ ՖW+OO7{X5Pz]jJP4nja"8|vYZ}1&~y䲽ܫ[#g &GnX,S]4Ec%wگkO|i Q}Uvǐ9KH{Uѷ={`Tat`)-f~^Irɴ}%?0Mdr7Fٖs9*l&RPT( ssir$'.~YX+OWw=bk}[I]+KǕc(F2Vp|[1jh`XJZ Sb:;86x<|1zUl//党vtkXX ڈnk7cc4%iC.˽"[#vt>.x`,w;m\Jjne$`2anAPi6l/3fHj7vÁA$H_̹QW@( $ P3de@$F,!۪VO?Fry?Gј?]IaP@X t2n[KgHHFDc=C`sv]VEJx :utonOD7*4_ ],vHF%t>d{X>"3brdvCσ;ZL_^8>7'9VU|Ѫwb q/;gAMxaRrXц^8Vb+4;%kk02TO/mjٿ^J gѪ=@hlrƲڤK-B: B<37EdKe7ǥ/dܸeqWmC)9OP k;pqS7A|去G7auG8AwD؈2k$)oX1,S6Z./c&d]5por:q& 塧eT?s`ŧ[-XL؎(<8>t$}7(֛dw< AOkij]gkߵ<=|1wDX=qr.ЏfK.Paڒ}GԼ ۇjk+.+TsvՂ6eM[WLz$a{[s)KC1]$j.2'\G3ۄ/];vE4^h+imW~Ih,9Gt$6;v@3"Q49? WoO}Rq%qiϟE 푻f=7~HDrsEe\]D\~b2+ i4b]Fz#)dz,#1'ijbܺ#}Yޤٝ1>B߅aWa/zRۺt8 J^Coy/ם6)o\Es.^Bk"jd]DI_}chz9 Ռ-R_+LlxL&!͚Ds\5i@OZy'SJ0U i~218a]07((匵0'G6GVDO]~; Dq*Sc ɩ {РdINgKkGѭ_5ZNe& B}/:C,PR!(#䪼 F!NB ^19C5M"uvR<ޗH/=/Tq9':2ר2"d (FYzX\Y$p[[Pq^e gDZ*kAnM9{өkzHn$Ŋ`Bk,GU^IJAf,3KgS$tޢ;T8c-NzijO )4bIׯhhCton]J&Qʟ攷_ݜQKy?2fH g8A/ivܖ&.ffz#Bzĥt^I\n]%]|2D-F+9ͷp.^Jεrj!\LR]LO/uw 6 }Op'><O 'g%+|||…h*9~7P[4T,FOY 7a6=y.o^A2qdGEJIՑԇwHIyj o*u$[lO DS uy8Ş_qY~^j>E㴄Fb9R_,O/rXgD8"/mNHWX%N܇UuժKJAۢJɲftt84}y^Vajg1b1 p{R%*,,.W*w49!%_vy@X ;;l!} >r!J_]fWؘ0q m`MBW o M/䚶L16^Ra25:kM )RzB_7}ckK G+Ą տi׳I:vتˌ$Qc#A[83D/5⭲ׯ4˞ Ũ޼"҅R&㪮⾶I&k&1Bѐl:JmQ{ 3p"] (XǓZ<":?^J>Ȭ6DeM|( ,"5;p]cκq&'4V!N>2p/@Qޣ3g9ۣ."[dgs )ϻ͢Ddm##m+i.,zMٔRhL6z ^~na;*7O W_αT~z~DZrIoj&ElcE&ѥċ?+<wbc&g%Qrϼ-PWb3R#╸8BfW9>%N6)8NJӊZ|Lϣ}I<|>pJ};Jk6`b쾇/@ҩ_$RlL V\1EM:EUwPӡUݞd{wȿO-,~PyxolcVu`+s&@\{XcyU=BeFY~nE[GohLqv¶zvM!o@2?Q\ T BO!*Xd)⊭i2"5%:O0tɆZ\7"o4V?k5Vw>g{# gX+G_Aq>6521ѲvQ΋z^ |)P L@g sr8ru}0bɾ|wJ8̞PpuxFҥB1p獃eO|^'Cc9QҜp~`Ӵ[Ez1Dq5`.%?%8} g7wOZQr#*ԗZ'Q[_>M> endobj 99 0 obj << /Length1 2334 /Length2 19241 /Length3 0 /Length 20610 /Filter /FlateDecode >> stream xڌT%z gnl۶m۞ɶ&kɶ9ٽ`wn_7ۿMAJ/l`pwgf`ʫ03XX((Ԭ\mQh]ya 4v~;dl̬ffN&&  ybVfy=B#MiܜtVycWKGDSc[(,]]y=<<\-hV h`_1Q,\%Wu0w0v>V@{7{33#8@UZܿ togcSS;Gc{/+{ -(!J07̍] _%2Eeq{3Q;; _Y9M?;x[ٛU#PZ&"?2 +t=M-WrdKQ#9;33`!  {Mcm=_FM u1--U_' @`k8?/*[;0Jۛ;UGSׂ'C  PY}=&v&ӏmoBnlmng!qTSY_y[V.V@3%+WSAokeTrp >Aq*=oHq{S`l1aP3߫ `dwpp|0wpkFDBF? (q8+Q>8 N_}pAlF?#AZ뿈#3>Ll? _;?Md`7:]>?FFޏ4 X`@VY K<-dK/GK?,>dVi~Tn?aCjT'?w si'9~<Ǐ0!G4'7s3tb(|B@o"]l],A˟3C(n=vHAB?}0yS7Z<"@SySP·o{3{i4>K]nOH_ij7S -5BG'+w<~V[Yt"0HK@&d]"ɍ Ic@ҳabe<|~OyC}z^P,EI)+=!'KOۻܟ2iNX}t6YתX\zpqupoƧ)}DSd|ʊW=sRWQY2kTb[ǗwBw[0 I1k; c]Xm"kw֩ܿږ'>ύNkcC-c;~̟-uWWx2 S!+\'z4(t_^ |<1o11pAnTޜE]@yPx7zyYk*nN)@[l `ܬb+"Kf_=L^&-ٿP3e]pQޑ^L{C?q4"6}gv}WY)byxY)2խ㢘.)Vr3kBv&Nbג3SAW!-FAU$?({Ụ(V܏-P+%K! e-"k̰kEC&H¯;>zl^tpϔ$ ;ԱoѭuCӑq2.V& S)@Q9Uֺ\1-|rwqB+^:-_X%^6(`1 _ÕѸV_rHX@ts2PovhHbôaLQc`@v0FR~+瓄ԡRnM # 2@. ԋLȸVPpB%riLOK'_0!I,XxJII[7y0 ?m̗MT qdw򸘵>jyQ}[(5g xk.O%>69k~ןR Ȉm~βnG VXR3~w^8DoDzNzll$.j_0Mc6+es}86p=sF3HYqdҖeX9Ö1#"ZF gQdHV"'}>zjO9N< ʎ/PPX|1Mssb^wKJϋqrdن@,S?.-r])wr"3Upˬ;"/TwtF”ԫH~8u?H1P}zck}EߡPc*(m0_\  f1 |ċ>gy@(X#gϮzAYN26G*izSRqgW .n:g iTC9B*zl7 Ԣ9^STmjB(z ?y#?۶BI%HCFUDqB4Gp>ۖG<5YT)L HH(ʢCj6%[Uǡ&8UU+bjh.wND !(2(lZurqUYo Jl>J<<}^6UFzX12CoјM۸?{Itb`sVbig@.W?>"]A;F^\Z2Yxޖ 4B6ABOvDiH1^Xg=<9`mAӃB#$^eOS, 3 jI^(T\.+(Õng+[uE6O]BE/s %x i: n%/-^'.$xa2&Aj[dQ 50m 9*õӵ%]h4CGF'SK0.& ś&O ۦelR}2oRG^lwe "QڢբOfBde\ S6 1@fx {gm$cK@y7ު@Q^6>uF DEw)kL@7 8*TN(vP؞F H"feW^>Չs2ک&B=cR9]l&wVd[t6F'сfZao2-zAN(ۅ~-PB.ܹ"; %h8= Xm!/U}a`Տ"GUɰ)$L-_67u#<0}5_yW$1PIYEnؗ_Hg*uS&L+X8e:D^\ϣ-o=1\tk&%][xUȹ90(#jhpG4bTD UDmx6-hgԳ˗Bl쟯`\DCwT#7=3Zm.}9?$؝Wj#(=@w. cX&-hY霂bxsjح*I/h*ie`b䟃5gDmLV$b8ܻJ\Nˡwex34=ُMWqЪTm<2uB !Lc+N`_lԨ.sPxsw݂\mDxpN~ Ly3*1GTY&Y+eRBRi"!j*19*rj}iW׍R7ufjߔAaI~h==y$+ŕ84-m=%zYTb]ϴZ"*YVh:y䕴%x!!ʧAb„6> gIYG`:c{3 ,OIYL%;XvL1ޕ4jn,ؑ6RL{L:ۃpeKhU^W xyu1%)L 6)6hǺydxT<\ezXKS宩U{)>pvzbD"FQft"90~*L{>R}*t `{:_*+aُoqa31҅LÏl4A婯AZJV}WX}m kکm^6H_ogN}@צ]O:-Z(ڀeg8>YLv߼‚ےlT_BhW/{%TIĮӅpp6[U`nU/4mg#B;e3"hb5@+* }E"vqEhOnRwn$P5rc-]fm0|B/iNkv &?_Kb?=:h^tx&/~ f1j X=BTcίF6f ,s3xM?_棕 FNF)<5&G޷3Fv0*\7 gd VP:Z@#4H3(|K`!OIc[e &a+9qK객ƻny|ZO^kUS`O:F,Xʤ2& 22 zYigIIS4CER9`eœG>b*|,7.{%6Z7IY?_iїJOKSPFHzI?ɬr",kB^X RZ>A܏G^ES#6Yz~ 1@LCRnJhӀܩb2vQ;TU{(($`Mçii+)P0<MmoB.uR97yK+L M:){7C6Y-II`67X 7(6<:F:bIOzM:SamzB*Q`,_]Vr.yH}T_Ji]C{"1+6} `(iN$rpU|gxUIBkZUF1Rd/|͍w|/ő/i_gYAϸ>w>il_j=?/ggq5<?^Co`IE56+3ƚiťeVi䦗}[rB;OSVpXB}/4"FN/X _KKhm )}]Y+;WWu@:5P V< [$ўؗ ưڵy2|G4H|6:{TTf tCЃ<<0RpLq5 3aQ$&ڍW!E" tF$m!3uAX s9-`G9$( ^_b=Aj- ȻJO;|-nCºZM,Yv:{M弱~%f?Cxm6MwAsA,+!@WܠD1X5Wz'ix͝:#\4@d2Q |(ĸ'J `2 ##zɻnoEʧkM D|7*'ޟ_z ZKCjp}6Eb)ߩ_'[T )Ot?&av,U?_Sm|Z䟦u@Q)s {C=l&jLaNpE^rcrA*slw6]O"b>MvoԨ%1i?dy\k+dҹcc /!(drX.H'D| SJ42ZCuc9JYmYZSTYJ#M#A: $ߩ_^ħ5fUeY՛?˹-9hi}h1*ym祘ZFVG(I1jFD7j0ЄӔ<͠`~:1W ga늡O/oI#=,!L)7p nBP w0aOӵ.Oh.|-k{=vpV$>0U&?r+.OǽP* 懎gG2Ԟ&$=E02>Ƕưo]i | &QQ@l!:X|UC)0u'HuF"MĽR2˵BV1[-$H>ܰRymma1&]H˲|`NЌ΍ ߯CnJ)ֲY nà߰u~ue!x,luZx~5 @D] eBӲbVJG$cIԈvp(Pm3a!5Fa`%t%yFsaިI>>u } دh]*-;y+8je00N}6yr@YH/|q{O*{O3I![sW/Q]%d~|(d({Uj%aX#R/O-\mDbvblV- 7=^8d̋şM8*ˁy /p ^C qki5;~r9ܵKZQT`:QE=@m{ڔ3 `29*}S L}Ifu_Wۄr5يҀ*Ac%K Z.bMIqWSJWs(cD9SWQ &V9"܊eOq J齟m}v#꒍E @{n!z~?xi,?qۓFHgy7x)50kl(Ja>4s®T$'̝  u 0Mnϓ[saD:|1 V]Lg@R=1$im1 ؿ=*@Vm| ұ'6uxBdz@7{F~g:,\b!n-Ym @6q4'<7>}GmSlBQ`L<՗gWpG'iK;X1/]-oG]*-٘x+'c@g_QJ O5{ lAR%#ٞ#knYţ: Va GP[8cN{WZqdOCܥk T8Jvzd$,)FyUUFw3NIcJ)jP#qA[A:cɥ^,' A/Of~ 3sb{'SM?018]{XY8oXRI|%kSz+20KyyF.*Fp~kQL,qoʱ®O#:\Ϟ@Yrv&QD=&8kKu܇f@P'-󩑻kg nVl.>_NOEN!k#cJZ6?6)HʊNԎRK_sBCN$ TfqiiQgG&c}S{l|KϞǺ1fkt ∀t͊niXO`kN5"`}59E9G:ϧgr$fAڄKȵ:FkF…;|վLj8{X{ <qje챋bv}-߿BB|8B\ Jcv1oҒ|pSF߄㡲8 [?93~#JΣ3bF Č)ÈT( iN[wc4wC a j4 ue3]ZRu dHsьgF ˧'pV^~qgd8[$F)6rgcy"7/M{Y:1a>@PZާu` W՟Jt}'v9+$/X6W8*D}ep,ab(/]e(nd˗(ӛSZCm57e^;Jg&;]* {֝RcM6(8V5_ƋZ̎~e @NeHGB٥,Y4SV C/X1U3A !!rJǰ}Rlqϓوa[h⁎tlcG/}})w35~Y%up!Ql۞9NXPW Ϋ\z OU%> *K%T쇚^hW{= }3t+Js氕4N20*<Jգ5c;fyʿ,#+GG mn$^^;8ej59/;nwє (my'9,T̝;eּl.!39vӻVgag8z;[]Hd*CAP zF7ڴȫO6o× \%Nו/oe%hW[yɶQHG9"^89/e $4OYkfO ‡"նR!k?rxÓlׂTx❛VV,*boMWy#eAOc'7 "Y*ib$v!@CpתG$#^t9oTЇ &yԺ#W|V|pnKWFW\5[丳3F\9ssV2)`(tmZ?mbZjtAF1_qk;+[05 )KV.-O"kCmj2lmyirbtm1XIn+?e0Bx3p8F)uk8{P#~Ń:SL+Q ReG`?O"~fN?3S  6'm8e5SiGwH5qWET7Q^o3vXmGyˈ%pu( Nj='.{Ȟ鎹l"`*+Q^{(eB"OwGI};[ ݄⥍wW|E!6 gjxBȮv6A_Y^kJeO(\k u gS}xCv426G' 5ɔVjH gnhP0K;¼Om0g'K`‚h6 eReۖ񾔋W,k4#je:)Tv=YЌdDC,teJqw<#0Ș%>Bf7;W61wpOԟ*ː4V?#GJa wߠc% XwO˖xܰ[.N#݄vq(.9ڮ9㠏 c[/GAtatQeXlM$x #Ge!݌(lu,f{VVHo={AD }E 3WœMOX<+MNJ `xkN!j}cbsf 匄U1b˔ԊCȼ!Lynj}iB tURX5?83|sR~ZS'œ*, ׮kfp:Y5Oo+77gAIԧyoo[= b}iy>ro?ɕ#HHyķR|sxHFDryTϖSa}˟58)I"0 hKcWm6$ 1fL# "e$UCRϵK]|p: hE2]ݶ~!=Oa:L<>2ؓԐi ?I=@Y'(Q?Lj3=( t ~zt5zYyRD{EPOtH MJ'o4<f-?~vTbQj!^2ɉJ LOv9Xyс#4o}) Hpw6A+ԑl^7:A6dX`8Jg(u:ϺU7orKhgfrAT|pvG7(Wѧgq.vVV9lZ]aF4a|Sص(0P&Sk7b7?$fX>m8#zGѠBٱy0.fE*Zy&o(ԼjF710$w*P: ;7$O!]hnqL(ű'ą/:"A*Mvxac=|ΜgISv3qD2 >?  7RR,q1Z5U\B "o9h6UW>>U#) T5gߖҐg9묤L5J=[TXrg drڞm4'lio-uxXOJa9k/\͉75UILJ>N=Z'tcވ-5%ہ^K6]S (8AS/d]\F,U|iկR7oha"?nvy}fd 0-g^#I%qDGL=?O~0:|z#J~W#B أ0VxNJhVd?u9>d [F#=Ek>mL " +ߪ$QuZXl^TSo:2^Baڽu> Qkje$ߨ|X)mv[ˑ5uu'M[ x+6MA& gNV%UUԴeoTiK0MOwN(_E-Ov<El }z-)96mμ8}"|ۮնw"ڟq)Wͬr w]NPtfJ}*5 soCHGKUQevV_W*W5H"-=ٓns1{VLҪP 5C>|ZBjHYʙp"E\ DYzo$}_> 7g@R 0k>3{z. 69(6(ixF gy1~ Y3ȁcE?cBbAɱM&yL'x㍰=!xqMi+TIH Oذ!%Ⱥ,;X<&p[q/ 4n>%Ǖg]!]U\jJv<_WA&3W~V}X~O:)G|!tӾ"?5^!"R[U_n[w9mX=vꊌƏ"i4r}Kj9]0!z)2RZhS RN]k η:gHITAJ j: Poc"ˁx<۶cVX lM GˣoDШ R#K=8L4gRf='#>ڏL bKYs(*NzسFC2 #Io͇bNgtU*$|30^ufowF}IYn8N̖w>PfņVk Ԍ/lN;;`zuٗvkEV0`Ѥ;HTe'ӎc/ktL^w @kU+,1+ܪ`xWm"L8΅a}"|<':xĭ`}SsDf=TtxK `r$0mQUHFt<I+?#"0V=$ )3 ͥNfG{3$uxgF E8&aD<>f F] tR:Ok[执& >|߱ &qtg#)HHٹ`r' pcjՅ]p.PMDGKls3Say6{zd}Pgv=ЮQíYayRYGGNו7(l'wPt.Ν;UROZtCapL}4cca^H K9O7o!$7|y{`pLZs2G'S/KĻ gJDy  '2Wk6+Q *''3_C A.dN~(SO/P]KHwjV_]2dHi`XN-vzoI@c?TP 6QX5dGo,ٚ W#Og5Zcw/¬l 努j: A:(Z_[^#7Ij|T]gfosôNu)/[yHA]It>ڌ1s br`ݤ\pI PX,gY‹H*# 'v"# keH'8N=;_P5̧JQ@1H@ͤL[CD,x-Y]i(JŲP5`B& ^벝=ZoCuv"%{[eXl6/Կb&%7mWBP~U[t#ـGykc33=a^5ZRK) B;m!0LTcitk=14 7qgA6Jk1!sK L!oH{qa&պ>h{ôDu AګI=o )Ež\;uX746=8l,;;Qd$/=3= i³Pgq(tRz?(>8*pS*o&c1F`& {4DD#p5FpC a55mELtAyOФ%-|8//?^pq{hg ]oa M.?r6y_΄St?}:?)D)``Qݥ3Ol%%"0^!f(A?7_1<)E %W}y&+8EvecB[T*ڣlvGhZTٲ\OȐ36O#|>pg]\b1u~o6-<0p:{:bKNM&ry14հ̟{/88tU;Q~- ̗6Fʎ)pK@(JqudGc?$*Lq/휅!Spga27f8q-adOfQŝgr$b>y0Y H_œXzvv%^ 7;sn٢h Q?ST?MYF/tOV<c>+c3T4!{yW*7z.OcRn?whl$wv@iIi7JdؐNԢ9_x:sde~dSKEx$?|][q? CZo3Kyutc|EP %|ΣǢ |>,uXq(hZ&U[- 5*ǁD܃Q>aдS3]zg( 5өȴ+*~~Mrz{P͕"(mmfR0Z_NM{ q/Yufù\EEx S_usӫ:ӗ Q'^yӗg<;B>5Ln]w T쭒8kEKg5"ӲIҎ^GSsYWٺ|\~mh?084k⫶/`doxQ-}Lb9S7% 0b N~U޵1Ȃ9>)mQYw3AQjLGpWMj^8e| Di&tJF h;k^7OpΡZiբ?^-w{s_7 EϠQ/7Y _NSyW8k1fJau(Wx9V9.0%#04O`I$lE]E4I_l60Bj =*F6OxXбS1ԍW\a\4sB[vy YoÐaN5M>a,YzE endstream endobj 100 0 obj << /Type /FontDescriptor /FontName /WVUDXX+CMR10 /Flags 4 /FontBBox [-40 -250 1009 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet (/A/B/D/E/F/I/K/L/M/O/P/S/T/U/V/X/a/b/c/colon/comma/d/dieresis/e/eight/f/fi/five/four/g/h/hyphen/i/k/l/m/n/nine/o/one/p/parenleft/parenright/period/q/quoteright/r/s/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) /FontFile 99 0 R >> endobj 101 0 obj << /Length1 1941 /Length2 12051 /Length3 0 /Length 13253 /Filter /FlateDecode >> stream xڍP-= w 2 0ww! nGɹ*ګ{u : H&TTcqq hX9ۂ#h NV`$! KL S]lvv^66 i$< V/#Δg9@2@gKˊ@[$,XYXvN, z&%@ (@9cAhXZ9W7wvB@)R6A/ _dLY,9V` -, m_ꁮ@+[ ϝ29BXl)K$@`g'?'e_7kw{ ̭f0sq`[9,@n666^~.r7dC^g/{ 9p|o02u,ȿ_ Cl/`O/efM~Y%%UrONB`fx>x3{ol,ltO =WPiewgf3}* ɸ3Il=&tT(ڿڠ&YdfbY9gt-l9F+'+w_-[xT읬xkll{7SL^鿗ڛ1w< @f{i/nnˀl+ b`nAFyB<V߈*}ax S`U^4A/u7bA y6w'W7_|9V^6f"kn?.P,_k/g;~V \rN@ ח Ge='[$^,2lΖп DU/7xKzyy|%^?/d0ko*d]~S-NƼMxfK;k1*+`r%<܃cCRl력15Q(^mb y;~RbޏZ6-Н4y.|*87n}uK![Uqǘ&gD9,[㈹\.p"&#$M'*)Z[KbݥRRҌ EFM+H@>!.wbĤ`l[ǭ¿}[繋HWf\G%έE+ܲ|&Xy?h<̏n,MEV޲!Sy0׽ [ܓ L1'3;"Cd\)FHlR+xh䬌A#ڭ̪ݶ~7䛰 Rg<,Hoccn`B\e H`ˇ<хkWu2 ZK`*&()Op> ke%X +fZ%ʹwl!bf~RFww/8݊uXCoXҹn_fV5OReߜ hn]^؀c($~QƏΧ8'т:`{f "/;iH7ް9*I6F`fի}LʼgVLT Yn2eG%.GloH¥wdz!91!-NF,-%F8&bܣ)b6%sSQIL/SO#P1Ry􈪦grMӧ>}d$S{ϳ>/NjPz#3AIVx:Ҝq˸?nl ;&:`Q h<T;aTj{ɏͲg!^*]cXGmgbpC==[;$r R^GxhBK}\[L% l:VZ>\b;3iı=7\oU"m7 `3I\Y6)60m;yB>)-Ȉp6!#wK- >g$U"5Zџ o(#PL&˅" EE`8gC{똎OHh(,'@jaclCTnm ש<{:7,/#FTh4f\agّ_ub$V 1;M1h˿G#d׆X%\;5+Um-awGŔfk1QA8@-pt@%u8q}gh`D4TڃW)#\iӈc^rZ= !4G#nxDM\?t&9ICܯqF"jz*~Tu(:j|-3;7S_&$9:D] ~$k/Dt."z-tă8-)%> GPASMGs<^m[&^nUJAb7&cZm?m4P*?bp3wIWSp:  =I;+MD՛~/=eaYA :Q m!It:mwHT;j3/$?8#290\YXA,Ibr p9/.xВȤS ]9Uɰ(N{~^gߙ$T*}cOبͣ>̼Bާr^XWhl&@]ҖamMzgڇwNSTa~q֣0pΙLn{Ί"a5Tz>|C~ns ^帼`zF]a16kT 9;J3%Ԁ$)m{^/E5L߰<M<~)3^;RC.KnP[0H "&&D7kEDXu!A!JT@(eWZ[mtM Mz:H_J( <~ͱ4}C> gMR6,ګp(b%`ZU$F;SMFZ t͖rn͌ TLBC l-h@%)&f8 Hqh5wD˶m$FзDt͊1H3*Z #Φƭ3y?2cj*u%gУW$M EbbցXn5Z y_`6+bh3&74CD_nu (ULr>XIp?1lwKH<恨q. ]@RJ7nul|ҥ. #v@T֫ 5a)qR̀q1Kg% nMPik&=q?6+HTcSoB7t?6:pccſS&_o˱v}3'J%#51G&Ș_rrϙ*V[߹+AiUQrOBt20&fV؉f+_uΧ~;t6iՕ|J+- /hI>{*:[l<@ WU躊O]L Gς l6膵 2[I'.6 >L@Zn+E y=֍C'iBLJc_ou׺i- [eGDթ_3n}6c!.O Ҙ )$l)^WrS0z Gڭ,Ɍ$y][H}lݿy1Gڗ{љG)bV.Fj$()!-,?pfޏQ+~AZcNJS6xOAf3ap-B=VKda}55]m=q;#uAub? PƇJUd;ُC ]들W2NY0߿- ʼn& EҏbXoSmnb(pboG|yM৬*&xْG)򄺫VZd㟄X[vvcmgKㄈt@miGQMM\g Wr<"gL$(bh-Ek"<惽kcD.#V*pu&P[pXe# CMdS4'O$EJTw{ va;B; +aQ̕@^O7V>+al$L/UwG YO !ܢ#'"YJszVY!^!SFCloDֻh*ВSܨ2gX- C5ݩ\4JRsevdRĘ =Oa*j*Y /aG}@ k-U=% ]0tEvd٘/cb7t>Y(YA*5aƞQ^Oo2QÏ3rKWX]{K+|¨9 Gp][g M}N bl]K$GqB5b G`x8Txk?:t5ᛉЫt?[.;R1m{֝e6x%EI-ƛC躓~-R( iPN9ӍXvݒ?{M>k jBY4 $iWiH6F;3Éwv=u,+T(.haºTp[h#SGacK܀&V7ekּ]g>lnzOXxS3sm\ڝzxos~QqVF%=]ᎍ_H 2OD36Tn)\ϽzB _:9kBT~P0 :~YXh&̘Dzl0S :vukM/Rƒps@nTb^z2Xyq#, >e1To+>]qZgAm;^g~׺R3:gi t[iCĦ F(_ :[X)r܂Y2EPV8hnfJmIǝE|7U^ /!#Uzj?6'zAX%Rոpa7–#\{&^&ɼ|~fڍ!/ɞg5y[*|= ӄ} -U3~osR`)Ҙa RMF2yhXAV6YB&=;trgKK(/d!ԘQ4w1UP)e(WP>^6wu&ObByýMeL#i]l,6"=r!]v1{O]=ڱɲah8^(nɺˆCС vSWVQ{Q(QWI3Qb5f#*̗V ڻIYVKM)rO &]ǝ6N_Vj>٘zwQsm^'HEa M[IfV&e:k8ip{\w+nl1^ G|*.#ޙ<ڼhüT)XkynZv'vZGeosȢ\|aUf Jx|K,󓀈g@[+25ޡ~йT=ʡoFcˑ.#yv%=!k>s*YNi# '@ge馹oQk!CgѩIdu[aw}r:kP~zWi*=ʟSauIH֪;ַ{ֱ%mv )UPDAu_OUKGKF3>q~Zk ,_%oΝD~ g;Q Flhʲ /q{+XX.RNp$ej,{:5]yQ;b>4s#FF_zi.F2t&d^j~s jX0lOơ{?v!!/ʚη$QWfJf~_U+{,98c1ÀNL *;YUu9@$2_VP]ޭdz~XߩÛ SCumX$xܵ5~T'pJ8C.d2$5&V\;,:fMU9Q/ȳfނ(1wf "ۧQA&}'aU)aޕƽqXT3C ([ۦC<=\iHB|{,5<vaޠD iW ,Fp]~*XZr^bEo:71VAύѳ#𨮘WyaqR3ZvhrѤnרZ {#*: Sض.p0'`=Hǒp`$hμm\~6s]+WEQS=Bk3">40jӃN 9=j}ܗQK)ey[P 3o" g i4;% JTӠ}q&M=j$oF񀁼3p[2@f$]cX(w͈bJJF &ȟER ^?hWjqE\-.JyF3K'~`I ?YOxS*ɾ2MSܙZx|9}w@6("C~p[):K#?`bP].gfp*tVZ(g7Մ({5%dKvO5EM>R&YL[\a|ѯRJO x0IՏVndKL7?~Pŧx@!׸rДWC Ӈ3>󈪁 G޲&Ǐ|>"|)=>R ROn},$땕pOgto\$fl+gPT.xQ}>bZ_ТќvNW%~w|LA`7:^?VT/<\Wbz.z+~Dmqv4t\>:=i?hqaf*s om.7 eGrp$RHz|wͺFDRvQfAڇip૞\uKQxx^iGY:hw=8(0atUd#cܭ3JCmjhå>}#Us<ˌ)ȏR2YFHnNh'$@z!ӑwszflR,ٖxYB|/}&^ؙš@ݩ]1Y P5y.}6] ~ųUQܜ=O1ʪ a(.(Eru{C=R$,ٙ < M ֶ+Emd؜ T]ٮ?kff = 0"`"< !KРfͺ"F >%v\Ԏ]cRzvvNҼ;Ng't~C4K𫀜ub1l! b(n ] թD5(wKWsz![h),bf 6ظIc,U⊀p8ᘯs wZ]pMEҺ.3j,mAr %@GK'"9vp0m hFM~{6Ae;<[-tl'ALFnG~DL)%f{ tk%ك\5}+@cW5ψg^=pk`='c3C/n}yƕ.)Kf,xͥUIUσY*腎Q= =Y_rm0)ݕ(Cw ]Q}%VMy4F9˲1hX/:^ow`s3"j=] xJQ}C!;&MsW)[RO(Ҽ)fKI&-\UUXo޾w\!'s Wew?F/la?BgLpZFdyv#V-Ĝ~KFm6D-%J{D` JtGhJs=p%MN֎sY suNк!WWnRU LI&)&q7ӆuCLȧ䪣O*n:U¨n*nrjPAoJkQ`~3d<ʋU դ4.uA\ -m$@x=hpBJ5-}`Wmr㖊mS}@ix}ѭnד`v4z9"4V^!CogQcuç R0>Td# ǡf9 W̸txyⴘq5ʏ_o~ 䂿ł/#G.4? =NZ#uH޴lTIuUIQKRM5[iX:b.$!凰ה n!;{$~a4<Λ:ǾkZ+UQ!Qv5b/(7ߡ2|T fݘa>~QH)+X JU͆3J4|o]ZضTp`.@SYñdk9lG7CV*xvΛs.؛1ɴej%|VoEםF&heUI`>Gmvkb+hPNhۄ6{&7K{>ҡT%%:7ƒw{K_]}Ji?(HI+S(S.9 8M=`O?Ç*0凎0Qx@`zXElX댛"rݑWDߊk:mɕ/_y=(qY,g3 )XQŁ y%Hױ̞4kYqҾ62jy } U6/ٔ'{t\@s QBU q~ȟgq19, oh~X6rnzs~dZs.!pTA2#T̞hr!KeNU'o-Q,r_Nt'C|^_FbwN)KG(FD0ײY!_ECMӫ ~ׇ)kJ+Y;U|K{1ŜE|v#6';Xu.E%Q0`"ˮ3aAq@5v߂_1ؐ΁-QR~IhaT!?]ɪ18x/(~I b}izU]ǕNȓ6x+R&%{4jhQٳ`R\J`=dexݾ&M8v}C͑UaKETc 6ªXԜάa: T;*@/qBU $]弨سĄ*VceWIPΎ|f,C:76ib"B+¹W+e&)l.P<^y 60j>Ŷ2ᘑV> endobj 103 0 obj << /Length1 1430 /Length2 6441 /Length3 0 /Length 7410 /Filter /FlateDecode >> stream xڍwT6 #F)a l86"H "Rt# %! !N=;g{xOnQÐ| )@( J 4 l0cfJ< RR~|B ( (() oq'& vs&8\.oЃcgA ̗yfWe;5o-/C|cl.65ĺG(H0f3anEC H?`»Aa'3K5WSoJRwsBb0!4#1Ak? ĸ0Np~ (/7 " ^˘ ]@@.(g_ACfNkxN̟r!Qd\١ˈon-r+|dni lM5|6hb5qޱmw(_>7 qm?BIRzߕG̬Wi\MśYLӱ G?1E7vͤC/\g"p6Xa"EFoIwrxOiYˈiOinkzF؁cRtԚq˭)%)"9 Zh-)k}7:wwil/O4mʑ d֤*ḓ/V-lyJQ ei]Hg: ,O Lj#PP$Y4GI5D*6⃭-|궋֟j|Գur.Ӳ"$ΝHm-,p0@͉ԞxE!"kZQ}k'tL]5o=7qd8گ\XoF}ҏD͢;R7 v`AlZ{>_D˕zp|a~v?1>ސd`=c/V&if?Kb L񑽊p1X>[S}ceoWu[K*ʆ弼GQ9T x;kWgt%kԸ"(\i? Wm)L2c)h0U@y9f 2 NޓdN5cdL@ʧͣOo [r"WiU}9XCu>rϪJt^+V,vr8zR/2V#ZPgri]z\*_;}1>/nnR+8'kidGQ(NK#c{KS?-Z Ⅱ ݫR^]=qTO7덤#YSylk,S<"{znpe7IVc>+>yɡ{{4BlasX!{L AȬA񊛓mtQBN9ʹ uwA|hih'6_?>vV ^pߢ"l6&wiΟg.r$2W-} k2KNOVZŽU6H&kq|pNC$}~&nQArWs>mǻ &;.q<+ܩ|L=weU.x'\/Ru2eD^ fVP߭jw[m HJz3]Awר&`Fux2P祇u?G"=0+78-7*}Q͚zXosm+F>B6w[\1Fi-A2܂h{lFF֘‚:rOnN?m9bl:!/l '$"XZ@. 7˪lֱ̥r&A7^&Uʿys%JP#Yeu6' sݵM|v IO_\XZ*Cٙ~붍Off&;_tE'xkWLw]s GƓ^LxnM̮N>hn[:YlޙEҷ\{綕TCDlbc}\;޸MH0.~ˠXI5:8Nli(HW2bL7 x^w5x&kHaQm>D*kz%um3i&H P7_:EzkͰSnqQ/eKhj9Xe3]DL%<:YI%sWessgJr'dq7H ExgJ =2fR^i}BVz( cYDQ:s^ZKхsԶ%%~1-b;Wd:8O.ݓtY/oZ< jh.`ߩ ދ8»B%ӟi-3?Q=Z3ɮpߒ=#4KW^*Wc(V JaRʭsz2Z{<Nn3D"Bv[*<# bJPng$jzh<ox,,AУ",gBJϚ߉c^`[`HtڠFpV_Z17R7kV.3 wؑRrtZZ{ZE) eJ|X>m1ثQ+3ՎH)|ΗV$qwq6xRicӝ24K#""6ɦ[S:N=4i7L{ u3'q36g^ۼ8+}.J<eE̡: !f/NJda'r'8+ g{8yi^ylʈ[|9|ĵ ~[YW-`EQ7߱lq]3%:NI fEŷQUvaM)mOnp.VDd7=: {ql6Q;[4دDÎFacli盰[V̊&Gǜ9R礸vCi&쯐_w7s x%^aWd1-nb=k EB&zg^!*®GV]< u3oxpo|.GSip\U&ljMƻwQ=[%۲ͤUc'fAfݼ~X RE[ omWژLg/5:]F u<{Km7mǽuiVmBʋ?kH)Yz|TʵyYGD[GqOH& yKiri1'L <{%q O4(1n35~nGF.tFGbΩZRy~me4ljtЩp!Fa:I[H- ݝ1,@P kvw{?5qb~e' eAڦ)O=J0O3G/)^,M΋Gw@pkGjuN%hj|5Vq\a)(8pʙ* \]%H%4̒>mΜb-8lsV]t K>6g@1qp%CͳsĆa4Li> Ū4]?:+8#DH]H͂3x7&Lۅi;/rldGçTvxJ\hCd>A5jFnp4]--bԆW串StrKG덏XH JOX'oPē",n:S=cSqd4/߯6$&t9/ܽ{&Wa|tˌ5%%d7Fb1{ud(>CJ9\籙h4UJqZ|[=xR4Є]PJ;-<ꮆנCqűDtIHby"b nFcòCv/++Gq=Jb#vwxV·~ouRzqBv"ImQ93^!ESeDtLhYG ~p|ĕHpR ^EB z0xn;զ5 $ + G)[^b"Kl_^9^ԃk7=(_>:I?L#й".;A/( cql`#NQ۝6ogoXp5PXP endstream endobj 104 0 obj << /Type /FontDescriptor /FontName /UZVBPP+CMR6 /Flags 4 /FontBBox [-20 -250 1193 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 83 /XHeight 431 /CharSet (/four/one/three/two) /FontFile 103 0 R >> endobj 105 0 obj << /Length1 1410 /Length2 6309 /Length3 0 /Length 7262 /Filter /FlateDecode >> stream xڍVTG@bt(-f Rcl0` -HJ+"HKHIH()%"ws9{^76Qq851hD,T30`Z±>H Zհp(Sn4PB r`0P C.@Q. aHW7_G ?LTAH 4(|Eh!w@ Q(GuU#qn@Sw 4࿁xnH?f O$ ]X 6LGhG0ϫBD!3W"$w0à@$@zF0v~P'q(PS =!Jd q>_#pA8#h/.^ 4^G %`,`n_࿍_j|^/ D?`C a83#"xA_Oxn`О.@7M`4PDL @ĀC迳/쿵P䟽ɨF`@_0"wC p ?Ka/C7?meV( b_~# 0@%6 }QiA񛡂v>1s@c| ~`?&8~]R ø91I) K`~9]y 18|/`)% R$d ,ߊՅb] |Sɿ3S5_W+Ze `[}OID-`Th?h*ro5$ۜbr1tl0=zȓ-^rvs嵐sHK޾2ƅ =ZsocVM֞KQx'h`Y:[x'A&H@3qx4N7r,N/]2񩹘O -3!۱Lˊ&|K?tkM-K"e^(]_s]N8֊Mv.\^E(|NCIu[:yqY>^KXF`SOCOj{+nL$;֋GgB<^k>c5Y-R@ֆhZ5M-v54B t{9)?),BG1g nQk}(ꗔyT*qi29ӂ c쬎%R7:EX+q/ӎ?UpJ UۅHeQg J?tg a'T`sw:_>u\#s rP%({٦ 1x`DKB0CyNaY]~2Faq6/S`+%.*2*ݗAͰsDlk=#ɇ*TJ bS|*JzV>nUsr8[ GۢS(C f5~F&Oq mQ{ڒA2{nj2r]v%̽3ôV&yzp$l1wݮW*ք[-=-\=K YkU+צ?osIܦ<+ygVxyU#@lTvU_]صVjGn~(TIʝuA.qzC{M;=I߰[rBZjr5B\q𭻶( HHjNH²A*xtQka* Rf"^u^h 曶Pd}`MX~Kfl]$ ;Z&a G< >ә{ټ]9du͛<] pO\)[<Wn IZ[ M\rl˒WZ"uՈorƑmոs -eM WُkzY}; >cot=\Wi[sQ ٻw5)Bsk[vsZ:J<_ 'U~U*G$TiC'łҼ׈KKýظrw~bu>p*\W(4Io6ޟ&Tdxxy=3v4BnѫN.Xj@pXwoQ v$\&R:DǃPwxnO"f‰ًH֍}ۡot[Ew[xG9jτ*ܖ}  d$n"H8-#燊_Y/poziI|y wH;E'Ls$ߧ>|B:[x/PF赜)4/1/㓀5 7GcIlO8ne"\Af3%w2 &ɸ#1]ѝhA k I?=Fi^6'\afOe|yE.41*= 8.4pUGI7s3c8ث]]dLՙ4tGdAѦ=qT#Hu|46+΃:F}GM/Ÿc f\m0Ӹ"Y]f;=gFN ̛ʎ+_V9 K]ZZ2{.}FÙ wVQP;$4kw*JJX.nҢHzCH.ݓ}~zpf/]޸sN@+w cԨ顖Z< wQ'ѴAw%%Fi9mSQFM͖oE׻GFLn%ܝ[./Wh >RkHz)@PgZ<#?=V?$ Xc笰9  Xx7p0t!خM[KrM]J. sk|=8u(A<*IwR*h|f7Cz|Sی09圡}Lg$jf^Sv#'b"{j7Aᔐkg7E0mא}ןπz,u%wMHjא $7/-=)'Tzw&@Jw81E$--ݙÉ :E=H*v!͹ozv /[Pn[^L󅱛Mg,IZ7ɭ{݈>N߉O9zMk y\Moy˕wG!:ʊA?}%<^-ښ['|}.0=x?*\:XPsMTy LˀW?OZ) RGDXloJD*[3}ǣ03 0}΋:ynsԭRP 9AZcOy fxz)#.%t@HhG_Kg|{&IL6_qm60-R9:9熏Z=9WxP7l #IosTђRU_3(!q X=A=zSs<+GkTsZp֋ZlNZ+ $~>p(̐[R!jhvspע cJP ЂMMa^u㮲ĜK?bZj\O-);]!J-G˚\k:߷% ͽl=F[w7+Znݨ-$z}+2DYVDžUSENr?AהWh; WB)]fǹy<1ҔHI؍QhzyQɓI*ĐcJV'ZWZ`N M7Izg4L!,* t.{Ty^bwȭb̝X`OT(nesWW*)u*A'R29Wq۹VBCWm [,ߺν@eF:=WaN %_у0Bdscw&e,~ '9_fc!Pc$J?^e($ Z~fWϴZ."8YUtׯJύyO18 ZչWus~"_5Cٺ[(F Q*dSa!w*-Pl8LH; _[mE XkO :#ԑr ۨɐP%X,zA5#{ʽwoV8ﻯGjuF#g$jXAy鲈ǔ 9P~"43oV5vmEJcX:ѕ߾v0k엏hTb xC?ݷ;:Ӧ?*/L+|%Zarp _#"VaJ] [M\KJ7mdI0`er xDxVza=)x|E<\sB{lé:E*Zx%{s!~Ґ] %hDBK/݈|k53Ȳ3JcBQ`RkY?lp}7g~Z%zӮ n0n% $8N(1G$slTah83>+vkI 'Cym̦euǴ!pqW1?it)[\~S.7Ɇ8+$OU”j%6p^:b}ܱg32QSL v֙p758k'kJ/Xk#unFJSך9}_N g3\(;ıXT#g=Qh^ӰKEe$S^D7 LdJkWI$Ibknl_ GMжd'jʷw{fV4.k,ENs> endobj 107 0 obj << /Length1 1411 /Length2 6458 /Length3 0 /Length 7416 /Filter /FlateDecode >> stream xڍuTj.C tw 3 " 4%-t#H%?߽kݻfw~wؘt 6 e8 (h? ᱱBP-1 $] dD(7-8 @1I @HPPoG$@ba  bDU%$yAn[k@rFU _)8: .~#.^'!@n ;/mkgo`xlCFzZ(b !P0;U` q8kqu5 ?tEJ;Xü!0{t5^H^55G[{XC6(ߍ[(|CغA\~ 4KV)A0$W7-ֽ~ 9!0;/v.F0;HM/ ?:{ *(((.\ /[_ ]@ը}].0 ~|  @ C`xɎRd ^3A_N(naP!o^_>a1 ((.Gcյ՛2p_k] GEmQ_oqWew(Z;CQ,vG6B >Yb-jHkf\" B PHzf|@Av PmV%`p_;'$*vsC %|y5@GB(x0 < ~~K@@"bԄvU*lZ@u{A /-4Vcj9:OI/|gZ/S-ʥ | YXWBZVZSqv_TuߒnCiZW_ۜ>n;?,F%9ii0(ԢcTDԗ~7 xu :P"#ڗ1iAiu H2:5('h9{-~]I/gLRŕJzqNo8\aD\0FێBmCRn|qz3CbѨ)םTNurԺ3nj/TZÇشcp`ǚvt$٭ZBX+ I@/yK!\PIU&xw <1JTfzy'ZE1ga%I~0Y BfV#}C3RJzQΓGßD1LLXNIWiMsЗΥ*v;+}΁wAVиVBnL2ʣ?KrHM:DfIlж8Av2AyGK۞=j .3Ņ$#"E>T/\fr! 'Ā꾙5h``2xi4&޾uDȒV&8X(!gi$K׾vWsS\S׶Nu XeQ/FM$͟^>kY{ ۗa %: ģB‹ĦMm>j; il ,R-t9c$B=,coWXɪ79gUWn'Zj2 -0 6)R/fkEa!Fu?l WpY9)HV}I~ *I4&vbOE Mz9`s*:VjneԆG!7y>^5ѭ5| /gljpol5>>BbLv~]t7G, jXGB\yMo_D{ň:'Ra*G8UPRsTv.zEk2ЊXx!} s;]ѡܛR% 9>4qORq>|z]9Ļ6kWd^8҈04՜EzL򂌋&0eL,?Q)ĺ𸝇֑FTiz8;*LohuIwvvR@F$ϕ߯dv>U>z|IZ.`+\UO23 5N͠ 3;rQ|S8K飇1Vz:'f)_LoIRv\V]pqxD*ݍpkʷJ^:'zxavSt :- ]ls:3㠣sڸ>quG)WeF)tKί|='Gi޲ӓ8(>X=N6gy0 1U;18*ڊJgWzXLA45Ȼ7h`A:6{~$;.R a~AjJ[Ł!۷by240kt+dN SKdܚ8V/HM鍺K^6qu0HiOa1=Ь꜕f2owCXbzl CR:(HmncGs@4Kr(}-A49Rg^ <t7+Ǻ=z9uu55]D!8jA yUʣ؞:SBrH V@4GУŭKӵOTX{VHrJ׾NlW/kXxʪK{ֻ65/6#3l?aҋ%qð]I6R# 1$FH`+=~# yJǡs6y<:IxNPnB?[)ī҇>MB;jK-ݔfF֒1;y{0W.^7p<\Ϗ}cIV؉}eV=/@ysYr߈C''+>ؠ£߅a6'X`+^T%{o7ZD$9q 0b#5vi7ʬipTzϗaȎ`p^&*jV]N{CțqkO?ݮ ]W+:ߨ }+pTALQuj=O4J7y2Ɠ.KБ\|}|yIE=GxJ="Eӝ~;x"nJ_~x?Eiq t}p%r/%ˁX@]_1sn &{Gx*Cί)X 4ipfHO2>S 1?z)kvB <qRo>xcS6 {no.]w?fmrc܍P8Mlˇy*O7E8ZT.W=1;lTzPBs(΄42]AvW(^)$+$F#L +4GH~=C.d #FT0xR:|4*}mVf"5Fpކz}ÇS3g #A')Vsلc#4 @FɲYv -mc׶3ddσSJ`olFS Sw#ޤF&5 yT Jf䀗'rO)VԶ} +rz,9Tki뙦MB:1khj02o~I<>m|C9$7cz^}W/䖒VZmS_E> $('~DW`9}J26,kAtW'48`R(V3cBNJmibV{w@*%3!{d2!|H,~ʗN(؏p-}U5nv{Yme붴 ߆G. 0Sf)\ȪԼUq.__v}nbsYST$/j] '%.3}Xۿ:}5溙^ܞP󬚸3x&^ڛ X~)'֔LfӦA!"UJ/Eˋb`Cʚn@fQվe]n%6a`=Hr~@0=RKlG6jB=)썥}6cţȊ踦LʰF})Abǧ)_9/$j֮p_Jǧ wG=bqYd<*-op^d T}]9^Iu"<AwK438>J-PxaÛ^oGPN{}Pa*΃+yӮ%ڛ<={!IsfNM Y\ ~c}f-QTB 9gqGw~H\V*tN7^T<ɐe/HUnCq:7"!6EGUZTIEF(լ *(I Hѣʤ<8Fb?^ׅ`65P`3/\uxt 49d Bw)94%}yh3O5Zu$^3"%RDtu*5GE c#moz*/I⭺djcRcɕyi5'"Nz6 Cr+_ϺSӶ&/1٧d( ˜' +3&ѱ:ɚd[ *?ͷ 9D EdT+Qٟ |{/@=S"4u1?ox1gZ~vƴ_>}Ѷ3֎6%L^8]$ endstream endobj 108 0 obj << /Type /FontDescriptor /FontName /KXBCZT+CMR8 /Flags 4 /FontBBox [-36 -250 1070 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 76 /XHeight 431 /CharSet (/S/e/period) /FontFile 107 0 R >> endobj 109 0 obj << /Length1 1763 /Length2 11127 /Length3 0 /Length 12256 /Filter /FlateDecode >> stream xڍP- wi]k 4%@C$Cpw  xdf{UY{}jh)4Y%,N@6AV jSFvv89 r\e g5e'G= 98QtrH!e6#V q}#c:@ 9A6`g {_&m\]l 6'gkQFv;-$ƆF в)tr9{%)PTVSWi@6 '( h ؃Jl,oE};b2V#p@VBz\,!PW6 y.w|gsսhϟg+,ݠڎ7n`y4EhȬ>N ia۸ -~X=X|\@`#4 ` p!hXϝwx 9d<[N^\vye 9?tr X9y8@.^rC?\L0.<`?coa<\V/cȺ2?,bays?Es?ws>7_?,ovW8<.ϫ7~vj WRz8synϏ?^V0l0d!l[r[%A=*2Eg'r2cef.MkEæ:ЯokLl7͏|(QKJƪ%[;&vڏo>zy, nT**d֎2 (5Ϛ!Bre%Ga=Ğ13Dό{͕cs7RALCl@D;f(1=FV;0rs>+x|> vފX<а Outu_~ƔTnG Qb#w YoaD?KMXa sśo%i#yBeo[~lS+= HX&r]5]&H5ob#G>^A9t2boy=_L!?IMTw6~9Ď1JQ dDRvJ+~"{\wDDBY[&ӕ{h_؎!EKoVYcO||y}qHF0@6LʋlupL,+ڧDym}wRӹ_V{÷OX}AU\$O(cT ?{qL:7m ¯Dϓz>IDGePE5,'ͨi_0AzX=2T٩R:\B4O{(u$'߹w}5&_N }I^W!3ej(^/[j.d'Cz9EκAgKA!0oT!SWM]pʀu7"%$2VXz7߄|py/1T y.:@0Y֤i'Yp"[Ȃӹ}EIC%΍ +ASDŝ}{q1JܒhCc`़"dj$yftڹ/43Շ/jP08 DbGl;y}˾\[ς3Ť+ޯ(x㳈q7 &trsR=< Ju\ٺӹz(@e^, [I~|ђgs[@Vh̰e=v= {P3 pÂݢzJ-KSg^OAdHVki)-; 5<Q4?ηBNva怆# uc|zYJxVW'1 lѾ']^Tԋ7PG& /$CAsZq~7şx>VE k~*(nPP6D3;a1{Q;Lxɛ$2;Eaj{Cd>?D <&jtSSjcL8ff|,;@s;@ٳE]~mb'*_;6&mUƴJwzH2n$;%t-`Мesbe wzNN`u[%~&D"[1O)Y<];Y]j$na᧯P!ݬn"̡(;Ǣz^SHYH-Q __ fcy8=N]l?UihxR=D}hH4[(3կc" 𩜢뤔L${*X|dpӟ/0/tځȭ0*>J U#))׍1C?m. W\m\iyZhnDLgf>,_tǛw?R,׵wSP2O\1S9Bh+ /UD̔ݐ"H暆~-6_GVZ jϜ1t3賱^뼍d擘.Av߄^҄4uG83O M;PPzԒ8UUɓ'қϭo>7GLF-8*DJTie]P{sf&_oW73qVjuư!a6r)9# iҜ V6(x%,YꁔaMe_s*w%Sà9pwkObwjFV[_p\pLt5vXq?@JlJ[IƸզj z'gj=UJ;_2ñbxRS5ڿ!Pk Ku~˄ dL> .I@,:0YYUL2sTMd:qL=[Ō9%[2Ϳ}~S!`rOPWI;rc?5FgXs=@n.yG"_DаKAVb-7&/7 ƊGOGd4,d4hwѷ*Mt:OM` >J?(kI?׉_)p, }N:<pjP2[^/5v4+L_k*Bf8p|nq~zEi;/G`8k3π]X*4Sk^00[2v.-B1o)*;w뵏d`L=)8 QC(c_%Qm4&QÞ[9N 6s>ąpm 2gFƥ4{;a: JEm{qH$XG@t0]0f!,pW^h+m' M XqsXĠN$OÑ6WeUN}ǢPo*ti[ɚsԚqR3+0:6} G·Z}џ:*NGW}+X("BQ=Wߺ(.]k3\Yf8S,3{wsI6ڏW΍&v+0曵P?x6jV+J,W)pL-Pgj@F|O"2Oo^Ts u' ek쨸28ƉaS`a|C#Q~j+|Tj2=CA!fuY.9da <7NgnhE<);Y aa$Mi(;Y Hx?-Ft+h/^Jc F0ʈYNZJl`iQ-ZLTՀz{3+iDwK׉!e˯%KjbgZDpC!S%őt]=^N觢i<1I] }V4/&=0}e\y#}ued~:*"I[M"^-OA'{=HiTSRGL %Sv- ^x/lDE:Ι'J3dbju+U)b Qro@GȾ׵ WbP|.3HT 0X̓[k.4atc#vRXR5A ysIQ6\ :Er^ y+Y,e\0ak3[ux$S.֯RbqWfC:8!ڧ' tG[0Jhp 41v it/$dAnmz^qDƐBWh3O-YѠN7tB0dաnJ{^(mwdh4 ?X:n?YQt`ZE3a>uxe3R Xbk!h/ḷXdFQ<8͙ n E㩽'BAڲUk_y-\{.;^u";2:ؠ6}mW`(3ճO_׵wԎz'4_~^M&%4cqR=NՙֹtlbF~T9+6<t>"|/+70xsJbVJ~ovg 9جc8-X"+Wx*CvYEڞtR:kprA?&}9 !´Dyfgn{wk>2s1P?7/7J&tܘ& 8TKtni^*eoטl% FcL$g(&yǔ)]uJVB—: UgiQ5p-"8gqB>HFcɚT&_"8|I'O@PD]3uf;^hLH^0Z/"kހm|D6YIՋ[k[DzPsI5K|)J\mytj&jv.8a_=r% *ATadyQe OٰsG TTI7v)lR)LF0(n$eF bn/"XE̊91ԧhlIF-#g5"*9<)|$2m񵆎3/% R 0IcZ63hfDa{?b6lG%F;j;-U*Dž".U7&[,;O'N]o8?:4zq1?q)-@3yP5"ިg¸#\w-j>t}‘`b<&#QEޓr<$=} }8K )K~WR B ꮏYk%/lësS H OJ8Ģ/;__`_}S;.]PWg/a.!t./DS ci]VGp_101vg3@oͼ.{<'"9j|=[`Pm:E=51L.4>`"ozq1Q%ܪ3q3(?\,.o!ow7=+xz,vYMcR{ fhH4(;8ҍ; Vn.FqCJ@?`3֛3Z#KoXpEV<珇&w{p0 yH {ڳW:޽wrL)[կ ;1,DЪq$֬9nLK33)`K7U.>']$%2Aح!"ʕz[ $@cU/J( :+>;X~dU%nЭ-D--:Yb)L"fX|z5];wg 5v5;kN?6 0ȳ~@I}hh8Y&Ҫʀn MQ/o`o:N-xt/m?FѲ(r]_xF`56ƚsI\oӿ+ &ա5#1dGpAljD}ǶX1=2EJb7q4P旇pSf>eW0"@8~D ܿ>^.qPՒ&b^^MPd q|?}Rs=؟)P) |mSSz4 R`-K/L n~5e:f-FR.FZ  ҷ~nsRCǕ[[}Z+; n©O;NO18 }hyIFiX{E8֡Q1ggz7L0;W/=c0i3O,:gLP@sUa-:*9>tG0㽷lp;k /<5ʛVG:7Z(9P,JwHi ߆; N`ଦl8'r&S0zg+g]^&%ZAIA:x@lFCӹ;y ~CUSm A2SwZbu#ÑEY=\@VUU}c[ȑ &|a(%2O@Gk\Ôȁd̿_izْ&iQ.1,zТ<ឍ@׍w2ҩƾx1gsP߰`\"|1d]xÞv}:a]akѾchQDC۝F!GE _? ; e`vV=?9yMScp_lR4-!VŪ1{o PJIcց1AolT+RD YnN ,~canZ78ɒ yqNڍ媕:dOܨs%nx~'z/ |lj;A_,lOP갿y!ZyqfuWMx5 MIC3#/{%>ƈ9G* nH]lYaAYӳ._}kdؗ6[Zb$9 2*ZJen)) EQ\-0Et[>3K&Nŝ6:WuBwJ Z>-ˎyp4^k4ŲmU7J.pKXXg䱽w/S<ޜQꥧ~GޒFN$fƵ-#JZEt~_sy єz=gY?+$ƛ;rF"G*8K39K,ADJw0S5p"n~"Fd--#5@p#h20cLb|I&L3 -xHd1Yߵ]uvaf\^9\c85ś;"4YY;tw|H*zC!ï HKFful$bQ~'ĺ w) E(E`JRMy$-e9!Ov9\kXaCk8 |aY$镁^/I2Dy{7u0f]t'EyXhQ,zbHHrʌAsj۳ݕ/ Cͥdzkv~M!X k̋Fq31LĐ<j'Jw8(^nyIoϚ?}c{GŔdYtŠa-^%zU0~xKyxƽ˂+ 5 KKRu2e\Nw]49&+2DۊV'2\BTRu4-Ys2,7NbO rQb1dv=bG_7<,GFWVJS'{SB}X qT0uRw-W4Z+ *\Mkxpڦ[hSmlMhLfIbfjk6X 2d*p98#<&_{hw+5nwٟu 09&>Tt[9Pv#oTk76}2Y--a^MfҨ_n XHk]5Fsi@8}KƆ}ƨQ]IQ8%@ ۃ"Bh0yukd+Y͖=el(gaNޗx8g/`Cb@eB*=~9ڐgo1.l;ia n7+n}ԽW` ȵ(#RW;;a< #'0?لw'dU&S0fѣu޹c7u&}-iS3dA?zֹ[ B()o7V׺ͻЉ4Kʴl47s[+H@&fEtq˫nG2ߪ-82'Ze5NŮ)w@ʉXߐG{'ANֱp#pBN#?32,N?Bxť_F-Y'lJB"J8i~;|?>p ~B8lB2}JWq>;i 7vFO08VŸ 7Xczᩦ8aAnM4V@$h#(89k RiaVN*C)S(7^$fg>R/FcSdYfӔ]BX:Џt& IIf=k(<ҫ*z7 сd^1 Nٓ\2ٟ]`6?:u@ErvJ)ZOش"R{7b-3KX!iSi6^ [,k>K!価86n_ V$S WovGE5c 8T1DΏ'Ȅ؇*+ü4"7_qݏK {K~p>¤tج4u^ TӂIs $:-ZU[Rn-53MsXfqPkeȘAl $9hߚU9R~V h_~JU"Fի+3L caCWP 9^$#,0=dF qo-kttHU;xQC})|mE_wv:z(GU΄~8L%jKG]%~Qo$?nTjm4rCw Ts j6cujFJs9@p8Nj$Y!%,I;aJ5Vyx7 h#+?Nq޳MؒV7rd9՗J*#JK)&8Q$"M_- Nh"ϩp5VaFһ !ϻ/DRNe ɞ9X}[è)ˤg% H{ZAĻ8|Y`xU h}䦨} |4v,&W L,Ǿ(cCu=-:!,M=s^w͓~&P`.*ˆQF#Trڍ}<;C˥|ǰ< ZR ^ܒ3C?AolKS)sϳd?߉ endstream endobj 110 0 obj << /Type /FontDescriptor /FontName /IMRGEN+CMR9 /Flags 4 /FontBBox [-39 -250 1036 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 74 /XHeight 431 /CharSet (/P/R/S/c/colon/d/e/eight/five/four/hyphen/i/n/nine/o/one/plus/r/s/seven/six/three/two/v/zero) /FontFile 109 0 R >> endobj 111 0 obj << /Length1 1403 /Length2 6029 /Length3 0 /Length 6987 /Filter /FlateDecode >> stream xڍx4ֶ Zhчu{NDc0D{ !: G'JM=5k={_{p (!mHZ$(i PD&0пD&Pw ;ؔh P<@"H\ Re'-xD@QDJHWw#S[7Pp `@v`*Bp!}#*%$%vA "dy^0#{B(t.?8F0_C= ` p@aB<vPw:PC E Ht%!~!+C8ap(@WUKv`8 {ap-{`>a sEQ0/B`ڬSB@hѯ)ܡL}3{eCa*dy@5`0&h(PRLLG_|\~HW=4f|P@  B`gǘ1X1>(TL PSQ H H .. guoz`؟GF =  L&GƆ :HP\@!,{Gpo?_v} 0z@cfCCM 6^ 43# @P0o qKK!Q_L_>A1~g]ikE`wwF(U;oH4&G:X(@#1vxc0^u( !ABÜ^(0x l୬vF'E9g9jgM)ؽ37W11|Qwnrz>Ko]P`qI0&NqDfckb:s.#rPr(9%gMg@)ub?1ge_E?"naakhimn_Qfo؋J:*ytIPXJilt.86? ےD<to>~QY>b1.Dr99ڑ&]t(ZߋK \֞Bka/4?snLK ||(gv7]auZ/yҌ%qmPO! dpYG& &*bZYd5OB^TA~^[Cyɹq#Y#mLBsp)rRJ/L/= iI>^?@^~KMD[C!a+·6:\a'gZS=~o#IAB]CxtjdwL3_vpm{7\RI +D[-Z'=O,ΤmZ}j9pQᦨ M5.)B;S8$PmxC BѾh.@Sk9BqQ/ 8DU⇧ȇBfbo}]_n[1(hE[)=h(4O~Whru%n-rEK9R=͏D=IG5A߆$9?0aa2VI=*jI> gQyEmzɬgX_$DPRMi? Rpc.G}yahPeYAVY;8Ϫq+ԫwPFOJgu9!}r\?o"epc o*ItBYϋ5:$JCT&ȺEּdTZa륕*7eN4PJ+Wv$#%pMgkV8׳®Ϧ,Tu憜zHd 32Ө-Aч1n/N(h1ܬš[ rWËIlƥr'ur)3a➤2z TY|NաHZf}kG$2E' (>5ANF\tl_㇓~YYki;3P\J>k5/^[B%Rjn\t[74.91$}/!U,n9c%'pñX`;h4b5y|dI!OKhBpu %Ydm cV}[ 0d+NvaeM z%(CXX2Z'xP;>qVNi)7"5?(?1FzuE .O} ):p@}|j]) ج2Yg[|'?ES2Œu<{K >L4X껞v'2wK=Lտ9,LCOӠ*M<8HqKYV-)ɱqCX?զ }bjjx3rwSWUf@K#[a,!>.ع./jJ> 7!汫brԋ߷j~89n71Ii+ϹADi.F@x$wvmX6XDf'TkFKjYǴOu韝{W Ǭ8ȁ W{.amXd.ȩ{7[_k@ Oڏ:wA@B礱*w3"!,*d:G>GbMty/#xxH"OKa)5dEI"8tgX$s*8xĒjO&~1~i_<>>*[G,4qr%-B}S;f~seBЗB%*[tS.T3oԝZ̊ {D>7qFY-b U>$յZ[r灻(Bqb^2aL[@{Ȳ=Hud2'8Iɏ I3[ɻlكh;!حiTެEGaeW%RO?4 ~Z6J]$l~8fM/8r_:6GT_*[k)s|f /B S(`xηiꆌ9F@Be -tAjk ؑT/tc˃Hd|MZzdH>.Ef쇒*4N2DO,yݬ&9+V0Uwb֧=۫nXV^/Oka,Jzg=a1a_zMgEIKݞ6jўtz_3 zTFaSu$+RS"sE=+  A\.{YƟ%]Y;Kmp̔%+ydYq,b&Wn^y?HF;;sIQ._XtҎg"u;"rt a#n9hBix:ì{̚Q}zʷ(csR\S6~M}̀o׏<#rSI9HH ^͔m{*BUEK8'f-zB m)t\"(IXŢclsqayY5W/L%4d=K_,Jh!Q"䑲Yw迦O%Tku6b%,b]Z EJ6O]lGI;<'ҕskr;co$׎^t;(<"h["WH] iEt:Z=K&Ij}7śuР<ɚ{81%]Wv*wO{*j,rk,ו/NYL.i ~D"d>{mJ=s6O(oi<AG6V^8UDo|I!Ҋqǎ7M]3w^r#_= _w_Ub}#rȾc魖bw±\' LN }plHlプ:0B*\WtEo#̫zf9$^[ڕM=dV0Y ?4C!RL2 1Zt+%!.T ߳b, F<˃(v Z1SJ%^O!{ZN?㡏5+#;|ݺsj\b^GbfȻ5u#s,KL{,vƂTf"S"XflIL{iԼ|1 _{s"g,y ZtͰ3Pس Kc*u!{T#wbzAB/𾏢x9;|y4GX=#[lg\_YeE~h{۟[ML3%פR;s!LnPSO.K~xZU[^l:DxBFIC%2`Hjx^xYv56KߴYշ{?Z!NJs˕ssc {;2Sd՟=WE iƤ ]Z%u)r:Uzj턜7:83-nN|UNѓg\hԗ`;Hr0q/h,ӇZ=w^G9XpG+fvPh5b-hk ~jɗa˂ifAgќyK"'krTUGO(νʨPꥪ޷GKI:$g̬WxҒe` Y%WDS8pHG1R&v#SYSSĘG&5 _+,/w1r^+/_=}b+Ք6_:Q8U9dS'8vd`'=b7eTo F?liG:Vt?V^.}|>V6L+Vi> endobj 113 0 obj << /Length1 1392 /Length2 5904 /Length3 0 /Length 6856 /Filter /FlateDecode >> stream xڍvT-ҫ4!$"B ")@BAUz/"J"*HoJSt)s}oFH\k7"mSE` Hcd! Ā (71&6ah( X\Lt(;%eR @v(Cy',EVDAbh7BO8 `<`P/]`7@a( pF=X@@UboF@Pp#TX/B4# v8C_0np,#~Qw*(_Sq-fQhO_ 8 Ewui(9°  y;jo ]80 C拁xX7wN{Ep{,G9Y. ~}t'/(~Eiaܽ{h/8@XF\'WQ$]o_{P;ix ]4N0?ʷIq_o.W{C4 8%cqA㼁o쏓u`P;X(G…@8 AX{?:*p3pLz@Lg{`p;ysUPh/JH nno2Nc_0ΥPoyD(4Wq8~]+ 1dl憳oq fO6; ~XRSxehq5"΢+\3I8Cm-@̫)?߇;/bT>q Ep|/[oYTZV̚ xqLтQiีfna? {r9gެT|et>9 = Yu<{J8 < Ȫ 0+w $"8AC.3v֛`|f,TKTBR'q,ŗcDQy݂drOݭy\ߖ^¼L6[ax d٫t { =Σf;N\GXu7u6-ׇ~?/~䆞!v{B;1TAs9.F(H+3#[Jydu+g7C9$R Ni#;).߼̖ײ3}jٴǾipz3m D/Qp<yEZzTE TVI) 6d{NNW;ͤ{'xm[Fx'p?ͰR>Ap`2 )_;7c~l tC1u[=ɵX\.mpucN63V CJ_rV)dk> 4Y( 3 a8 ~ bϤmT'x2̗E(t*p<17}Ȅ$*%v n v%ԾLX.T:s~_1C%?kZ( G?&(2RTv$_3ጚ ̧K '~T{* w#zmc܆QP'Ȁbǰ"!YoUs-){)BQZJ WYV `Ibɓϒ޲&5uR!elRTm1'P=96.".HgY֩jXeh}_rI,J~Ra6ڥ hdCV龮- ;+j 6$G~{뵉mu׳4yb> 76 omM]{c8츧6uFDXF)"?歾'Xt7=]\ΕO< Pĭ]Um Nn6BhٖU'˄BTz8d BJ[(4r]'9 SdfZceY9z *l:9k]Z]_eXr{u"7)j_󂫚- f~ZSo7TIJ9A.Bɵp^hY=ߧaʥhi5cRrEZH(XVHGsIa}0㏖ۗoɆQ6Fǜ+Fsŷ.&RXo}qIlI,m.l6Kq6GIzM'!yRHCALDbY'"*2Zp+F׾$Wb03@+% m u]Yc l6(&9{~ } FK'˼ǐԵZRJ/5U6QoBnӆSZf9Yѻr?v\">p tlYL ሴ-8!G&71(|A(PEj+xHnNV*%ONf3e_"BuЇv@7̺ ,5$w\Dr:V^:Q߰ uJ8P4'EDɿZ'D)7/4 9%ػ4hwdg\m=ө#`P|R}}cahlV.dNq"hY)ܘUVόd!Ak$X%Qje%ҀJƇ{wGmI(ޝ=HueQzA5Ɖk>Gکs㔴R䮜]kx.M@?[\xBKgge>] UsEٸDgZ>|६y1SuǺ#z$\!Bx|8PNG4ey^#l$ZZU6١pj^6U$-\$ZrxLG\uA7ոJmգx =g' -/N'طFjc jGVez(L}ԣ>pO)`el`4sSvVDS@}olG+wrj~I'"ftcSTmҰZwDT,7Pg yk(BLjGN{nx xIK6VzYuݗ "xfR̥03dTW{ퟍ1>"5c~P [|EN00,5137$I Ea`FuPfꠧ+sFPz*̣S9)=;߾PIXʅ_ڼ~f:$EE;;ЅpKGZL>z[iH2~LZja gعKI*w~0_m`K3$dc2}'~|6dS6 a:K3.'Jv٬]~-"9(ps]fak0ǎύeIR{irO1R;@̍C,Cl`Jb}me?aǚEK:^@YcG誗0  ܨl!ƗvLHC_S' t<~ݭ<6N F@ǝEs3mBDf#lyy`@q69 ԢK<\ ⵘMˋ 1}L-$ n$̅2UzYA*۟︺|Կy`ڥM*Y=Ų+s&B$Ge#O_HH~gEyVItvxWp5 8蹋QV*nqAo C|ѮIΥTi-S34װUTei5U}?dQ'6q :4ꢶKvtգ%|Q%,\{/I#8^jJt$p:ĭŒA:)3ff+KoNnu Քox,o`,Rɲ \<Agx;=ڦ^rRuؕ9&Q{VKw»kfy̬ۙdnϖQ]4sXČDiaX>tp:Pθ0NniҼGr0zN}ޘUlEap@dՓW5!Nyyx45u;;ufe+CcsW-QLs]F /"%Z Pp>rA@/F0 %f #*jĜ_w{[>vC endstream endobj 114 0 obj << /Type /FontDescriptor /FontName /HBIEHQ+CMSY6 /Flags 4 /FontBBox [-4 -948 1329 786] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 52 /XHeight 431 /CharSet (/minus) /FontFile 113 0 R >> endobj 115 0 obj << /Length1 1438 /Length2 6071 /Length3 0 /Length 7041 /Filter /FlateDecode >> stream xڍtT6-HIP%F )c0F t7Jw7H(!g;;gs\}"i UE"B@ixx aX8Lc Ec`HrPFCAX+ $@ߎH4@HCƣDyaX\xwBRR|P4 BAX3" 0(_)xeX#DðP ~耜 `߸BC8C\+EpZ]YOoBBI'g"W0 F:@O`CZX,t1H\< lqn*@8ah ?) L}D E`1d?CC{ s! v?I@\QF+T] "bb@)qq1 z7DA~8($ `#Aq?dEB}'2!!l0?q07|4`iO?+ H_47SSU7ؔo~a)$@HHT !!w4oP=dTG!R97?2wi G@1 %Bo%+A0]F߮&߫ \۪Ca8P7è<=[HWC@ u`'ܫT{FB~n8F<ɀ8 pk z7@PB8;$XAgD6Dƅ\Zu +3R PL6 yXJŝidf54Ƭ;D {k3K(EA8,X9s"*wv'hvV2a}ш$v\s)94c{D\uu7| YcJ܂6bT+/{g,甋q&)L<ܩZwr#u?w eNݥNHuDwjZ wI?`k *xI&pw_BU6cywSlKnW QGY 5xYSWwtSL4j -*ռ}HMT9%篯{l%y_x:>ݹM}׀]֌DƍU񢤙]# 6UxoU8F|+tЪCU5>sV3+\vJW"G?ؔ &Kf^&YF=>M.BraQ {=/.||)bVM~Hjx9KY?+Hҝ. p#<OdzޏCȖY[Mtm#g_XOG2̄yAWǖg$9!KK.թY ;/9[ym&!1w#t0s^ =|GIe<ՠN~rnwn_cQ.2>g]܏ؒ%:/In0Xî|x-*Rbe/l<@lsIJhofg,bؾn(Jnâ!ܦgk˻~ꍴ̘UB9-Uݯ? |Dce_ٖiӗz&WO44LRpKWLGI}ZU*:Wm0a՛0xrR*Ya{&@ v'愮]&!-c'2)ɔ޴r.߾}*+%^3g ~q @ .HqIڽ'])ӎѻ ;9HH)z*7K4ۭ51{5d77 {iiϾ3߮H lkԘ\ɐy0&"N^"!Aw s#)K ~k1z~_R@a'hGʶ-rL9lPPu7s)X2׍śa޽;Wa׳ʜA{CnxPeӝ Z)q{ye4"", Y뼚HNjP|Wk:Rv/HC-ڛSTE ȉ 6Y$]n}xl%UvI4 :&~HkdT= ~ez7⁎9(U;GE9`!ioګ<O`,yH' {).|!BKcҡvZd"t)ނGM.E|T&T.r:ۥKdSf8S.9 nJꗘmX]ӄ%lޟbqxQ 7cXLan/#Dg ({'"ㅺQ R41OAEK d0x^]L ҶeC?N{J@=AfѵaS#7mvi ֋3C>*o]%=Jepe^pY\~aGE-qa洩Xzx>mEpmYhTnX89\1|¯lS7zk.t٨ƕLh %)ٛGO3s31n`ؘTՂ.xƽ{`!=iH Z},6ZfO<ϧ&\&-ߵ3fPcV.Ӓ^'GC|u!joG$uql_,tM/u b`9db2Yl0W0u6(bmӒ۝9>REk㣖>SVEzl'G5b!Tbj|`-fhDܝc1ޱF}߾;[YQ5EBSw>˩0)6gЙqNq䟞TPXShbui~qm$B*N@d\4>ONMY~88.MЬJUzm3rMO8V-w`61 mw[|L4LX&rJsԢw(⻌8X8{eרmݴZϛsHyԫ%q`S?p..7c'xwˆ=;H^aD^!uc"05~].g|@Հh+co3_&8lr`[<ޞ5Jo(8WNޣE7{[KQNDq]=JL(֭CFZMdSh%C|+WP;mZz{n o I/EH}υEL敞)o5v_ 5(̓k U3i|5#]jv<%Ma#1jy R* 1$.Toi=޻B}}QI4qfUٻ1eL_&&RξTNAMQi g_C1m A)`y!<'ϽٍN>(.2b } P(na8Eo2(TKL,Mi?7(/pmq+tOYB#c^wi6߻ũ߻g~|Oކۍc?k׵.8I'or+INxTkz9HeT8crg~It?Ŗaj-]:[!00DIf\=,y!ㅊ.eIZxmqa}E-e 7K:++UWA&>:baO|ZzVn@p=ĨEh겘xJq\CJpЧ&ǯoԮ_FcJQKe)Tp׶rf눏%"4Cg,S>v5A;Ӑbj[/VشZvO4on_Z| I i1;+kЯZ)JnzbcZkT VWLa_ }YC5.?Mż%9c | I;m\PHFe%Ī=[ib9y=0QH-->7Jt')1RNLhzQP$)@ s (7ȯou2z8׺0*7+ؒ K\c7CdӓIEwϹ2hr`e#"Joj0Tקz?|\;/C=Vz9>8ә_3SDSQQ V]tòD5~ ӵKgֲ~" Z!]Ky5P>^1 cܭ-1)R0$L{zrZoU3&)Ri@Y,9bHX-|=/xٻ >2X旷֑0޵ ;mMpnڻH4"skĝ+z4U#< endstream endobj 116 0 obj << /Type /FontDescriptor /FontName /ZYGAOB+CMSY9 /Flags 4 /FontBBox [-29 -958 1146 777] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 43 /XHeight 431 /CharSet (/minus/nabla/periodcentered) /FontFile 115 0 R >> endobj 117 0 obj << /Length1 2536 /Length2 17958 /Length3 0 /Length 19419 /Filter /FlateDecode >> stream xڌP\k tpw'k .!$ wy%ޚYmgoJR%FS{c #+ @LAU†@IjbRlio 1' H&n2TȺX\||,,6;č,M LY{;3 ?4&V^^n"@'K#;hbdP7xO~ >ffwww&#[g&{'sAZ@ tr*Ҙ(R؛9 jg t*2EݿewsL oYldbbo`diig0%\<\Fv8ۃ܌,mAn 0UM,\-m06Kؙ\O h'?2L],]2́.Nv60`@/1_o{ l8}_ 04q-Df w谀Ə@fjog#fVSwU{9lNvn/T߹#=_%z2=4^Z2|M3@guY8YL@_WoWIivum=h?_4tZ#ІؙΒ@S%K'?nciTw0hLAw3VAv&'4_loVЎ=m3 `fבrqE qE n`xE,f?, vb@]@E< v?ħT bW@]kA v"^3%%(j5H2ڞ*@&E`&6/&D T1XY@3c]21S/HocOPZ5h C@P6(@ OlNP,;&Ct@G zp q[NGA ̎V8ڻMma_n)/tG8AΠGiA%:9[#(?y]f '?T?@1\ g{tn޹l V@P_ tWs:3tbzMM>XՇx&Bθ7!0KN 66;hN$emmWVx6{gv)~"xBFU}WG@k6NY|GWB>)ձ\r/3j1s9xd0.Dptswy$ _֫Tٜ>P|#=L].+Xee'$=ӑeqZmo`ES1tw8AYģ7sw*Tl- p7Up齿 uur+wrV?5c".若CxSlUNQk5y0sR8% 8r8C ^VgÊ*Yv:ܳ;aMd 1F I™6vJFCw^p\it)B}AE):9}Ӊ@ˡIԜvNkKaԧ[(iN-]~$p:T2=w1`RQ,Z">TgS∾ \J+gȕ7EWU jzG*p[3F؛/}L{[{sc6>n0PJ\'a, iG2^P%Gߎi+&׉QiuXYY:y}415d&=̪/f,]>\•yG9k;,|&JE6AfQiFz^J_T4ug  --𬨄1nKef]Gć\}~-[EJE_De~lDp^>`1Θt9EvٛCejfx$u(1[{n"ta@))4+/,(6Gmb$ Sm44_*+szs+nK4!t`SjkSGu_X]$&fZ pY?K+ 2\8g>@бup0絲w W~Z5:f%C(v)6ea.ݼ-!y}X[I&G^{-g 2O5j㥆7; u0 dgIwҐ~8$UwA i8['CPnY TIGm~5O7X[ L[\P;Dl@UjUFuNW1*>A"PRz1ZvzH3bHqxpG/c-5ݱ65^wdHc(&};߆^OuenA!hΔ ̏g*ԑN hy=j)Mꅷ.)iu6FJ) k[˒Ru֜TYZF}prj^PuG;]o^ELoFt5j_`i\d-"X  |Tg F Utiatb0N(.Gڙa=VҐ{2bsK4u6EH2XƒD1OlV\6XDx1?wz:-%&{pi}񋘝/`7v'n5w^9m-CA~G(;*>f$UB]WLCfR/LC3q[[5y0TR CQ2+$t#_kɫ`C>L! " X.cS;fr-R80ni2 8*iv촧!B+ $b5\وfYB*a >M*QObQM>8 JȂj Y,.5;KDӥ Z4& OM . @ MV=nW: ADC6k+_&2]q8 ZDg`#20p1~7](w|dH&I 5͛zYY[X] n`Ƅ-bփDs+To {-u Džw Gm><$J㕙 lZЦ="AZ1>…*pz6h4X7tZŠr: DF9=f ̪rb }EqjH[S};݇sޙ7%)Sjqeen+d DÇнsQM3FYYq#_%⭟8n电e_v[0Q"&:HQ8H"a/-`\EA | |Fxxr1u.eܞY)7Ӛ E͙VbG;{QwMi4Vdr#Bpn ^?U'IG`imصbNMz1xxuyUz9Mv.,hHYU&\f1t] i*-˒p-6:}BB1]Kw.jbSaiZEayzG7m]s&}>H07iϷeG6ȇi$P>"')j:FAA.MnЦy 96U- qԈ3JPVK FLG?CycIF:}3b~Q7)<v7C5PEu ).\GPV@nX?F²٪;G TVYI o˦KQ'i.~?usJu!y M#Ty[r}3psRW\) bzTaiΜ^е9J,r_-X9{ e1X%kK{ U/['.J6cwt,ĔC+{ꅠY>_6&k6!l<'}4 p4/Ѵ";{6'OLD@ݹrU3-sn6: sDuq^OJRϷP'lg(Qc znj]}u  c%<NTK- fG@(}""("r ;k<}RĀ%Vd{b$x[~Be4E=S:OgKƘVX?] K!Y6ؿt @2nip5)DUؾ#4hUqA0w9[O\ 18M4T^E%=,ƻ`T[ꑒ/Z魙\JCF?@ngcn֓VhCk2Y 7qJ/z[/ÈlzP_dGH a"=r PޠvWK}_&>XbC:ĖQ`{>" ^ZwK*#ۥG~X٥:BW7%9r5|>pB$kBPF=8|,B/{mș`CwX740/"335!OƄ2W<12R )c R%ٸ#B&kS3߹IyDG~ـ3!AO4ͻF!ȵhWVϵ^HF׌05! nÓtlJz 6V'dTчEeT[bܮ1M$n6>Ֆ,?>{M;J?}hp:F,_q ˍӿ USy\b#mE+쉉F$߲̐9e8gMCx ==2R|OP@Ga|ÙO9c 7%Ɛ=ʐ %Lm6еӗUcIjؙ)N*kf+AUe+Xsjٯc",k1<{Yj:`C˯J5փlL[24lSz0sf Y2 Oì'QdLȉkw^9DXt"]H-òCY-b9ǫ#L$ҏLדt} UYƝ% rҌdB[ ͉c};/+QUeu`W,T͇cu 6 Nkޒ9k˨?*DPK D@V\o'x|B3lE^_\;oY: 2kۍeh֙,?`P*?5U=AQCXU!|JlcQmčgADWs.(qoIa=W~5+j=SAq]cfnZ_Ynk8c^ 7O`WCSE`cN0xMdA.#GS =T9]\[b :"mၬ(cyxA ]aTB8'R}#pp[ejYD7~|pRLCķK%_k˹i.龞]|ފ,LíSa-a>L&,mNYY6URRGk# ^fIq hZ_/ IpjZ@ƭSf4fV2״`&_ySk4TxN1sPsd9.)\2_iCh7m5>!s'V7-NOh&cn@zA@0rMX{koTAD]ՉG8U u˺~a<4^^iB1u]  UxD}?O"%Hgfɗo3}{ N#NzG:?/4jVEWA"A%pEah7wL84/ccq€tЮao̞H6^yfhc 9yCC1b&,ڬQhkRZxXP ?wDW+okHI+ņ-r9;8F]ݍkd#YPTܪi&KEi* .uz9U Uxg|~\`/iK1<8=.1>]F`cDfg'5ao̾yw#;@sgZy`)Zg a!Nji2C,B+#1a * {a_@ԧ;:ٌ%`ۍ;{X3foE!#!jbh02٨7ԊXne*^qC,PYgwԼyF%]}C_Q*ˋ'Q[g 1WmF P#;N+i@1%d5uܟ~Zh}H1ʕoe' XX;zAٷu+. Ԙg_>w |b'kkte(y C_ UbGɖ.Glv+ڽc\_V?6lubCDlT ٵMK@vd0͚qJY;i~m[,C|B'~XߘKlR1B/_VV&Q&XUۼGӯj4{+4DAwv6R%%ƶ+'erAUr>+M,% Ж;FgO0 hwR҃x7VlRk#NXQ }/f`ǭ">OchIOV{iy 443W]-qD7yd<"͎g/P1];[UX#VS5L̨<'ն_Tdva }أ} KDGܜr:)+Mrk_ۓ?1+КpRqb܄ܶdeò)X ".ũlS 3`EY>ixpb6. vr>N|]Hj-0ƍo4gs 9'F Jk&?3/ )^/e4N [bC>$}^ PnY\&Ûb;BT ׽겖{v}#!ҵf٬Ɣ%J J[JA' r}Hw"x1g%{ȶX&gxb ﰀ܁ֶ]nBuUM֮fOczq"R>Me#h}mʺPEcPMY]#3m8:&p/8ʿܣt7,.zz١N#(ڔzeEhqowXFm5ċ{< -YF'v].`) k+JVԖ+KT%G \$ۛZr9xrir DK^^Ǚh;Ѐ.܋5Sq92_ќc% n)8|ASHdwfU5 Fa4ʥMUFY]Ya/)h"T# UBjUӰ55ՆZòRtljts-LwŲ`ul٦ܜwH崚3&"_2|}wG)ubܞX$hs>.I=u[ e=M9;jnoUORZ&|&sR E!})v7Jů+^?j%WTM!yVn]I@܊Z{^kI1~xGgi)97kjx!o0O#pcPn vy*‹hF}4fӱJPO`/p6`?zLȪ2T #>Y1 lgw̖gd]E Sl>$nVDT94" LM1obSr#s/EN')\9pŚK-_Q_xEvJlي GبfUM}']oS- 2ws%qXÜ&` rlxkj/4-PqR bIU_Xw6*>vWӍkdSj%/=]Wio؊фh~Kق]d.xD@ hNڏӺYXGb}`EEnOD^)W!(_)Qz_ٓLVs $NOOO ȍ _~_m!؆f[ʔ֎%涎z^U*}=hMma{Cnh+ɗk$`%x?(mp^͌!bL-kw[:nKW%Z/ij?Qh97?e#_^: .W?]%KǺ ݄asEr X:}pFia)gA|Z?Lr tw꽬o@WqoG=|mfEqa?"fg֑ ,y|KhOvKGLdΨ~Ѭe3զ/>CJ,ȟK[IQ[Ұ[Bpê(lA#lreXՠPO&0e CIЈ+`_oqP@;T (Ml~,g$?..xr¤gxSY0@V5=jU=z~R R}3(8`CU[Nn#X}laNLڙN-&ɚ!ZML;_~ KZl o[w)-'XLx>UY qv,?DiNb=8 uA,u;n.n9(CDK'm6&[!3^]eaq)+%(z5只{ n5u,s;e4 [چKeFUwtycY-hZri.Hg)k'zg Klb) z~gӽ20dV9eϚ|7C֫֯ɚ Gx9ղpFv؞:NJ;CG8u`fRz=]l=*/}9!,#[tM,#6M!%]5%\ԴG^naa'Y 4fE`~lXD+]oM'D.WM [aC%RǢz#5d!I?X'Xm%?rvL<_|^J^rB/OCKsf  ϙ#nEG9-azUOtMތLK0RZH3 9LD`Oo:/}Mt93ݽ]^u~R|E'*Z" p _M3Ma = "z~l f*Pe}XAFS xv$8NM=U$,냄|cv-s/s>9p`g S=Re@ԣV52wDDxê&%vH\\[0qOe̐X6/ -(T,"φIqBaᴒU;QٹBE N2 ^qY\f ?g_JbE^I]ƭ@WCRc^!`Gm.aSQ q-JN~Y+ `:Q H*U:L9KDAhbhɟJ𥮬辇 -Yc uw3 qkJw|,1S#M} `y6mK&znKF{\ώMJ[YO|ipM vTC}'Lz|'u[->P5 %-4Z~3*hc~CęGt]{ . l)|]TcoUxe ^E)`S;X%~?HIQu;jGNڿM >8@\s  ׯ<`PH|tهYJ/9"@ *'H7i2j &K㚔!.=.s֡C $bP}x-yBT&KoWЧJ[RX ,?3ׇ =lxݚ4@w~ XCw٬!8D}24$ӏͬ5 ,vx 3 N)[tGTYy$+%)@9tk䪥b,YEܻgx<;tГq3ocѠ|Rzv,`+Z6Ro)3+A9<@םPn#` ϯICi˰sn_{@~nᐜ]rqkYKk.hSP}f)`aJ>* ~B@=ђM|%Άw#DηX淬"Xʄ`U,SVpg\U;5u|c>ԿOkOO 1-e(?1 }2d-@ejGuFYgˎsoױ)RVA;]/Fe[=.Wlޛw]/Z.LW9Cdv1xCcv*ׄ{0t( Ր ^us~" q=naˣdF_wb\pp$( 5{N Cd~I,`gޖY^8cp};ұ]sV,b&I=8ĢזwCwkFjCR!:@{ u3<9bVҎVÂZz WPa:|MqQ L.i<-)PdPC&@gQyMj QI kw!,+8nc>(r"v "),ACfpW֘E&.:Ab}D!Ql(;YbdZJl)F#i,)`JK% a6[%!}ÓKNMUD7#[qЎieE)"<:SP.w-zr@oZ&!},@ :}ƾ.zJҕI(R] J–wO b>X >t$;RF۫S̿κǝbhC jӫjaX֓왴i02񎦎z"r@Li[Axw< T-qx0FB/d7wYd }G3ܪ8>bGR5eg4kް*)d'7'mhIVijOӔI D9܉M{trmEG-Dʺ7ytC[=6cCl:~B؜zŻV5t&X4/,&qlF`P|R'ʪǒCi>03ԴW-?t\hr ڂm~W;av8*MI6駮:ڲFFA3*[g2iF@JC!lXBS;L@d8_Ml{o!)EC v__R񿹌FO8`oZ RGY~LY'-ݪNƋ blz[PW@p5`?y 2h8{oJWuIJ.*v1OfpثaةPN\:խbzsVȚ+@sAFlj|uЙ2TXq]^iT zxs-9gjQ4VHPT0]Y'J&KRA$ŒrXVvAg-}LEȞ#K ֦m毨e[Z̒~D1he8 Z9/gLNHճ1BH޵q_}2l*?Qen+(B*=諘H{] =OMw>u1?EQARAE#|@Z9(m)ۂȣwG؁Q0P7@sEBz1I x4^\ \=>b/U};\H&-&E,ONw~Q_hٻdpO ϟ.bW`tP2OV{_p(uT|[?$mEGYBo%5F3$tuX+4'NTbJWQyUOB>wuQl}'dM35!ƙ{ |.ůi/u'M)L|*ic*c\]`ÉjÝ7}I*@k KI"2^S~~+=Zo~RnMMEҟdi"YGKEUٶdcmOc>sy}GP[Vf4|bjf)q?vxgP)DwMIlBӓBoyW[l%hzwŪC*Xjl'MqZ-HHJKD} $ML%'2 '=$C 틒%!nQvp ;OT_L.^+=X6 J9٤ݤ)0v΍ޒǷaak >(NNduzUW0Y-fbG/H4:Њy0{TI#\}I6J  6ܣ RSɅK5Jw[LF UIA.=*5@ \caiFYh@ju bOr/9!o'\AMft _#[o(<[Epٱv eUO }#oVwńZI^}^܎4 !}Ԓu%F>6XK=^ʕ_\.Cއ)DjN|V\Hpg\)rCo8XWT15eZkp] ¯պ8k~`ݦgΔ4p2 T6 s!ڲ-shc;90"U)z,M .LLCwh--bي^+(ҢCvΐ-i Eص{@òr/SDE"2vp>^5c.uHA_fdBkv .2N43jpl+gqk}v`үΨ-Í. b<6F;bDxiglgiSpc8gڛ`xRjj)칿)DDX֑&NB|YsHELKa!+Z,gu~Y:, %p9c|7W!\\u)+hRrk},].ķ`^=0.S&fQ!zi&І2.c  M Gܺj='6)nƐ^2",Y/&!֨7:W8?)G*poWЩmI,\Tw0tXfACa_\[Ok|0`e>l_Oeɰub̑->j n:{1v!sa_Şdۍ95rS=f"">z" “(3q2ZĴ`6 g/Me1qv;n xɇ7Y,LE9\'r i,A}^{u[7`3rRԑȮ,~s DK4{ql]{d͞~71 xï]^US[\]W?q8aٌ`Pư[;|l%nT&W*yE4J"VO%zQ:#&;'vY¤5oej%5,&f0K/rԄeRpx9e1=ysaz(Bv$zX>w?ԉԣd[vJHLa;p&ͽ63yF"H-gzo~K7ñ鲻,ewyq&,'ie:ڕwi-k*~%C/ :}K(Rw۳t*mx[7@}*@@J^+Mѐ7EOmL qf%4[7Ʋ-Tw Q6j-4۠s[ +)?BB7&4|[{R9)ܕ}acĕza0gZXzC>sL2R:Fݓb_#JĂ(-hEtɬy;(PmL]M3%Zӡ41//GufL'tIKN펚9mXf0 Y:)i;oS]{w~fxN1-:GY~ʜ x 9.(ʋ(<a8>ROi$Qϐ?mfv ġ@GYh9W*qH/)J:S*J/8>SWyVb7+ `ebGt@ᇰ$@5RNw :P&sY0 ?Qc3m)? T=Pe \vTal?/QKimA76^ qmh9oxp ]ܐyA6,,9hF.rr?u /^Z/,09@p ~uS"ڟZV ͍V,@P1" !6k->o⧼ܙ ~~UkH!0 V>1B* gIYzGrr -CaRY`$) n>YQ'kNWB;m4Wnۊ~ '7"̱ p$)2Ou V.(n5 ?; $^y}FWTּr5k(-+3,̛s̀FN7tsƣvfٙ @ޤ~4W&^sO =3iwzq-3_kDvcb|ۑ_y;yRaޭcq΁HSΙ)@fDa?<Ԟ? MRӆj75ЩD#pAG ">\>rB endstream endobj 118 0 obj << /Type /FontDescriptor /FontName /UDCSBA+CMTT10 /Flags 4 /FontBBox [-4 -233 537 696] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/at/b/bracketleft/bracketright/c/colon/comma/d/e/eight/f/five/four/g/greater/h/hyphen/i/k/l/less/m/n/nine/o/one/p/parenleft/parenright/period/q/quotedbl/r/s/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) /FontFile 117 0 R >> endobj 119 0 obj << /Length1 1483 /Length2 2121 /Length3 0 /Length 3062 /Filter /FlateDecode >> stream xڍT 8mNˇ ER<)`6KKI5o2H!)-#Bhꗲ},I9~}^ 6;bJЁ+I ńD::LD :>0`({ p$ \@5Ts:u B4 с+ 8c('c<$0H bx:`<!xG^ ?з BdH$"A!| 10"D `2pB j$`!/#A<.‚Q>"D0݁J _._F`rD^n"{'C, 8.$X` =| χ! C@8 ~| I|;Ƒ{ O 7Dh7l 0"aBxw~a0P(KML`1+<ր cnCtd( 88 8!@ё lTFX"(Gu syʍ1mA;;L "fb h D\;oǽ2q6ʏz+Q,R ]O,?O1/)McU=G A\B5uvو0Jo ~Ha"`+\=0>2c*K _9V0a`|~eaգǃ"\_433Iw ǥ $)g 806Rs3@fƭ%\[?,@^òdR‘^-\sDž7gәYB_qYᄾo aI#Ʋ|!"ȸfXݟ([ӱ\={uIncFe}W`J/hY%xC[TF]IiFQ*C|!kյkk7@wwDR:9Fa;2{VX|:NV5Iar$ٹK(LȼR`wQWub~m͛=Uhfϫ 24_R ]%|eƪMN_Rc$yfYo];N+s|ڋGˤLK∁vf4G+Kпlg|gV}[ȏo2{5M޵&T,7 ,Hҷ9Ev&?z5{mwg Qg_ZO KpiwZb%uVʉ⹎5^d5Ɔ9"V[ӝD7^\> 6P̬]D{[7Dm|dž:s<= R,RMzueB5BKί3|7erP# ȇ% vsެc‚s^V+cA%G_`PCEū28Ḱ1M9^/g~;rdCV|UKO><5jX'Fkb\H%?;^ JPEhӰnGGvcF9-Cs ~]xEvȃաUϳ%Z;U;լ n7Wv3'dUf7WomHt>woSOa5׾9;g.VyXE^^ܶ{0E<%Vy,ςA5u܈Sb(goǖ%J0~N.bP+2Ol:v]v/1u^j\>b%"$[N}v&X9|{-ON[IJYnûjD='2fl-=5ܬW^'37Z; uow\ I-+ ^;s>lb4r*'32aa,&: +e }EJ˼eT2SHV?8\,׮1g;֗:sW*c_sz2W=oԹK[!$/K^eld%zˈs%8Lz8}қmqfw5-C 4#ewT|SvfQ^~p U9 KQ;1J 9I#d;,>o]o钃GQj;sA"eU8݊n<@K'| ;v *;_ybgnAt )?Z[{2!yZ?wO1J+#(úӌn6%VI 8x{Xj=YBT|3=s=p ɟa(p}vX_[/|{߆WSE`Zm썎[mQ_O],+=uK_Ҳ5rīW\/c*x[ -WtvWKQH{9_B˽W>{ڋH "zT]7\6hڐcn'7.#Q%WO) RD~|C*>xޟ,.2c-N)60B0)ʭ2|L[qfY&sNQXܓicX rMڊ*oP-QmݰIhJ.[ ${X:QSy, 8*D􋁊*s}CJN:W~"d!{JLrRJ[YA7w%vy_vu)o];'`]Sms.5 {Q7' "r҂yI7ҧʧR${3/6z#uN-M4#s`bi# Y3]U75t.uU2ZA;Y[tWXߦVד)37O;olq3|MxҮ*h~w:Un88C י6N8RLΞ򮚓]oJ endstream endobj 120 0 obj << /Type /FontDescriptor /FontName /FNWYCH+CMTT12 /Flags 4 /FontBBox [-1 -234 524 695] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle 0 /StemV 65 /XHeight 431 /CharSet (/A/F/I/O/P/S/underscore) /FontFile 119 0 R >> endobj 121 0 obj << /Length1 1835 /Length2 5064 /Length3 0 /Length 6187 /Filter /FlateDecode >> stream xڍt 8m~",5l,3,I3ee%Fɾ섲edoTou}553Ŧy_e SB!` -@ )6k&zCc(_y4 XNn;`a,*!?@ZP:"u6 Ðrɣ\ K,f<u1逬- 0"u(f; jC!`Xb$&ZZ0 3N P[Of\%:A0A\pTԀ;v0OOk6XܯBdtA -8QR:c(pPG(j (8a;,F9(xZ7eE<bHOS@afYk$ ˀ#Sv{/Eg$. `R𴼶G|1pwCp ;b0vE 3,` @ ITǹa6g~~{9 i~5e]wLN C~!a!"D_]7jBZ?F _01_qԟ8q ㎲Ie_qbwjjcp$# cW )&A%pNp5T  3/m9Ѹyaf#C(3I_ߪoyLN]B"-[A;:3 w}Se'iޜZ҂&%hGMzhn,cTkkMeZmN;2f@#4Ӂ9c3ʑ\$A™$WŰ ې="MRzFCiOd8IcI/b\QGΌ@ | g;j#{JnXcmf3uF#H'fCbܳH\[j]>(YD6{t]wf[~dPrX6|C *Vr%v#)1JVu/iwM+6{cu2v7,q\FU=B_~Ry4ݸƤ^jfa"#7-Ȑ'*`pIZV'^ WO8vZ';۔˷u,Gir5w->DA5a=2c}A>LhPƷv!c=jAXG@[)oCt\$QXMJ\T3tOAuiVf-Y*ɔhs!wWGپV4RE;7+a`>cRinJ=~"bsV% p},*Zl;{;'uIoB#$aw]c6S*M@=jZc Vd1=)º7+z['%޽,i#QPo);Gҫd\䕢c5VwvF%C8 <3urw^˹0,*摖 ^}lU4gnU+_nNﲏ-os?q @O}H>[omlsICF䛪L'D%:UdŲY'^2`r/%3qOg6-fh<ٱbi?Z_ts17*NB 7Obj溽(*/BZB!Z|[Ԙdy9?k ċKN>1;쵗x~jt'Fp/y҂R▚X[ (E\^x<1>4}'^[~ҵj&sU;7Jt+\ 49uV<5rGLu_K [u 5 ]z)zswƙ)x$\l" 7nG3)2gANEx͗&Hɖ508aZXwsBH|g)NAC$p>JFlߥ=aٓoTƶBh]nJȻ ۊ(o~ LYaYŻVb0 #,[j0 %iH0ӈ7Q&癀פ]dX!Ъ)K鶽Y|=li0,[zRm6F{6*O_ps!9-Sѧ$EkҶ0c߆~3FAiUZ^?!n,x׺%F_D>\T %G)@UP)$Y)/)uཀྵo5d=(`R)%.v(1Y6&}=y,6tRMoڇK}yHH?G;|HJ7{MoLۋ݀XH+׷8)i0r/V} .梸\bt3{2y&Zp@f:"^s5߫ܢ h^ /{e8@f|ze!j_j׃Y]q*!qul_[Z=H%x9&5F${H_3=n_IPջ/a0`֡g/tl<EYR_Baek S >-X*U1͜7Ÿ%OAKlM \ܮFȉ.vܟ(K f`#nR륟ʻ[0ܰ JҞ۫;gl`<_\. (gC֚JPv6'".HG%Ӫ{' c՜ZkĖ<y M{[j VG;çm_rvDgQb,^|wPoQ^#Tv F(ڔfpV)XQENrLrtD pҩJ̰}S 7eۺD+W:3r- )iu6H.HO?+yHyk!^ SꖤKG<}9 ih] k!Gލjm6a<2k"& Őzi_JJ!53~l މƠHm%Ӣ%Ob1$I : ŊFל 'Qd:HXuR֫!٤!;3'xjKc[졍E2Set/ 7'Gi=Lqg)hxd2R Te5Gm4&a>Q0 CPf\UAY"EYP cm1F\kwv-O|pV;f`|BSRPjo>|UBpx99|0˃< ΟCkޞɡ[,>֍Sǧ 1DK7mGoYJ=S "g/}u##CHnk^áF)Hj1Qe a*ۏ VN&_fS_/TtsuSџ.k@ @:卙D pDK<@*e yiz~7@%,Tc(7ZiDUU_*~R#ZVݬBR\N VD7K(Ґvĝ>" >f}=b8"J  j1sgjLlRxda+]}\ji$Z)y쑄E2y&dwjBBXUJ+͋FHW(_ESW+{!ϰ`˪zYD)gVp"A[>͗f³L) VdVBDw< X% t]i_l~ɧc{傫[^UPz3Dp4zzɢTo'Y_D#-`chpqc(8_nYfZuK7;g @,HTw5:{mɛvnF\[{6:{TunrE WF!tߝi,E ?sX`LS޴WKiɍ2]9-drkeϬڇy!%M\EێDR* UY׈sCL@:ԖRduLˍ\? `R[ 8v.J'ko'>0՚lEͰ1bYKƫ)'vik`;۬1ɨu*4*$WRb&k?ˌ ]\Z-U(K|(yW{ƙLvQqSW/j`GT1 F2 ֈi|z8lҌnH2upAwKak%o_}VX)?Zի% 뺩kvDS>ʍ>#Tr,Ohb)FˀKivtfgcזt+&_zE[~Pݝd'1 y$3Č`|\(,PU?Tp|M0|xAtQ[$י֘ⅵ;^N.xI* 4Qy,W ϰf9.^aP`Wb3{;1aѴ qU屲0=fKE[BФs 7t_ qi\xyxJǠuY񉾕JѰ n|Iy5EMɋ@wo&A[UUCIJks5E87ʌGPt#0FU8zUՎ}<.0?ϯ3Oo0jDdXimPB4ilvF3$cld"ARPqsfϱDc,z Bf O(Qp1X{ROR_Ryc ݢ ɣZ ' Yat'kETiuof+v|z7_SqVau;Δ m;JFJ___O [c-$By8ֻ1o{(W/|efJկ̥C9>yE(pDT\05E]*tÓtJ endstream endobj 122 0 obj << /Type /FontDescriptor /FontName /NFZGAS+CMTT8 /Flags 4 /FontBBox [-5 -232 545 699] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle 0 /StemV 76 /XHeight 431 /CharSet (/P/c/colon/e/eight/f/five/four/g/h/hyphen/j/l/n/nine/o/one/p/period/r/s/seven/six/slash/t/three/two/u/zero) /FontFile 121 0 R >> endobj 123 0 obj << /Length1 2329 /Length2 14825 /Length3 0 /Length 16182 /Filter /FlateDecode >> stream xڍP\  .ݝw݃[p<ιsz{c9nrbe:![#=#7@DVE BȌ@Nr[@tpp@h.5tz|q0ع8̌\1uL/6@Gr[;w{<(L\\ cC9=@trNNv ֎fTW9@ tp" 3=9@/.m=mLe)_227&z_@6;Zڸl + @^\͉`hc򗡡! BwhsrwYE0]189"U(hvw翁)/&v 6 {gMEdf@'###' h3^o;oO;[;; 7h898=_0;f ?@wg OebkcePWꄅmt:f+3AK?*]xR61xoX{((0T g>@adc4~b< -Ho55aMՁZdY j ߗCm9܀& 'c? dTuu}ی-o[|_(fclk1  ߇ &@@ocxg 0u@@ B A0A\"F`  Az.g޳AE{v?= `PkQkQkQk/zA:?N"wQG׉3c^ÿ;?tLA.Kmwẃ]|ggNO(wW!ζ~= hL:OcX[e~L\ wb ]o =˟w/1L{ο߷ƶT?=?{Wy=*M",Nb LOO@"bg <ޙY!޵OGh~iHFs8$0Ntpn(73oD_bi#Y =6|yu|'BRF03;w%v(v)SCˌj Q `?r!ӷPbOLJkOuT> w+W7]0|N4[.eb]]O;"fDrEgK]̹[EjOw߻ymљJTaC[&!&=2΍unoD,f9ŤÊ~8݂ >t΂35gj:%qH!5HJh8!¡`dXgC<:VI]p8^[(d|˲͑Փ [n.J(L=%v|jdp<_[pgKbu9FLm6&'!C"=ŢK7*_s<ቂ-rq!F] ;CZG9qS^:`&V1=0KPn[ XIֵR]&pFWYkІ2.jP '?y⥰,7%Yw<qHqezBc@'F鬯U҇4 Gfo^dOH͐$x_aWY/V7^Ρ.U.vWfo1S萔 Dye0!BװU9/ƿ3o?ifFzu cQ.ϒ"} RvxBM m me Ef[R>J"QиǪ-s7"$݈ݿ'd\ʇIW }`%C686nZAX^ArG(eJ&v4 7UB:p?#p*Y8`NuďYB n6vqz{ iï멣A#©avz)J9^yvOkC|v8&(|kaP,?-D\*V~( ~ăg~gF( r Ll1"/73O^ TqI|QBtbNlg9Let@cOnI:u?glDcV8,t֒W7*1..2r@.i_.ՕCί9̾2gi.!ijYvw0Mqkߍ_c#!9H?XJ+=kA[/E[INM^Z^ԗ~qddbb?8wA ۷w>0WO¡47g:hƭ]YwcQzB _jNN2}Rܐp|k20 anvb|ihMW22骍3dD0H ΐ=%Sil9T[P: Mms\Fī,M>"^ ' Z;I?ܫ0w{&JM&-V\e%|ݛ[+nDI+Blm\%2͆oC07IʳlsYV4cQm`5MV(U{-g%+ȡ`u-8F,ӵ.:ɖi67̣~`.S޳l,֛i 7U?ʳqQB|:&%L%KcYi +=ݓ.7eJ (]>f0}npg4\&ڿT}o8-s؃PsGXK}^\_{ '4,gY0VAb`j~OL!}JC.6f<.7e>6#zA]뭥sMxnKN?(44/Z+8/FND:]y ItMXojEJEa9nDRi6PIV;F|z2+s&~B?munX8S5$Z&bQPbaM*D?'`D't0KDP 1wfGI~S)]WGa/u0 [MEuxGh'{֖2}E |i & }R =X "9,LPc\uܐ8!됎uRӔ 6'Fg?]בAW~n𑶲S>8PʠkjN|U%qV|'?'ӣBB4z}o#cPtD~@X[v OEr mu>)WU\/dvMo\yo$aШ :O`-B-x^DI "fZ3bD껳@{{a:a#?GbBn0 {M !au3s pB 0e3"үب+4\Aӕ=}LN'9wVɌIo,*:3mgQqVtɍ ^2W8$ڝ7Br;_}~}K9E"p1+{v1fcTUgR9$3_'G Eż!#)Uɕa_{Vf%TrKԏDt@J\&;&պu0 +۠[-3bI;)iG ?Q<0eYC@No>wNBCU{d4e6] `϶nW7!L]dSrA)m\U#ߣ+Fk|58=$+!*6N $#;~m{Q֎\}Yii6;BAB hi-qgyI`6+"Y͆N }`.+  bdr zKA&.5MIPTD^E~L^3o D$&][pRwәb[ʙdT*9Pݚ+/7(ŦuV6)_ ](s>A&O`},s&Նl FᚸkZv`as3WjgŻ=Hs|gOF(k0(-4Q:Iyަ VEbzl Nt,H[ӑWN=ŌJ.;3z9;nWI+qn"ѥC'ڲs;9Bo3B4.Ηj՛2K9#Z[EVu5͂PtfrMz}vnR{j;Gkd Ww y!MJUT+T]iylsq{3MNS&oy~u!x5%$O$hzuÁqgh\i5SּT zul%_a# 2!ݙdN'O9>xe%3h cO~}T{Zt{0 ;ml-W {N%] > MSnFCX>7CwQ5^}*9ϰ) :ө|?7s۔z\z{.o3Vm, D(UړܙN +$MCM OIx|O29TCQ6+Ql8*y3 $vw[yvMZ.,S zZ YA0V:7X$ (GߔN6u"P=I Jk PΛZb iOL ]AԞ3OW&㽌𪮗!$DM ጣ&r, :Kt;4&)Yǥ]>0%_.aT|{5: RRl3`Oas+ƴz,@t {ǁ$VmQE) Or>W2 :i_ e&U^pFg!͏Dlro.K:XX!~#K{lK.CJYڥiیFSԕ^z@qzA|Qc4De{+ŭyW4tY' WpXϝW6yƃ&~Q4" tfEA_i 1tRyW][gq(a(ѣd!33,[ϡ@Gda F;2zmi %T쳓.Ol\LXyc-&Goz~S ~h `|(z(}lb3S0qÍͪk8E𽗢teA iR@=уI7u ɗ֩0>_v!VTkVLT t37he?I7 >wd+@Q])ji $Bw߈}՜ Q{d$BZȄ?7`w'j$'yyZ9eVE< \/DOmSEΝ J5o{8rF"w̕}cO.F?>!!ij Pһ@΁DLʹ*kC-3nͼGXQپ_0Brq煀XcہNX1 Ut|̒j $Jh29'QZ,^=o~~L\G]lƲ)ݘ(Wg7 (q*V`'9 #r,#klm-_Aj:W7ƔU"M}L'NsudX>$fSiPqX`2ȏl40(߃Tg | Ywxmd EA_6[tˮMq!U,;O%znv#Ie>3fg-) }Kp[3wn5UxƬ"<NASDe ݔbsx}VkR5,c77ĞY鮝Ì+}7u!#  8$UNMpd~nA ,0!-x>TnJ IqS^yu]%4z|80P׮ ,=+:E~@>JچttvCg|s]EZ %~XiǏjl1 U䆙NF1.}+a ,Lqʏ!B.mz^L9[t)'q62I9جs.NΛK`T,%Wy3%jǘxԄ9VO؄PW0DžwfQucwn.`l!63{AgTD=]_T \*-BįyX}PHrvܶ6{XM'lAc lnr9K+TYDrey룻SvB7 @"MAVAݘSm]%PtXxRυ_Us֣ ˎ_XAw`Q%U&=m5vשȁR/<  lF{Flˋ|G,ς9 %/ ^`AqHg"ՏrT`]VI=5nz钙_j&Qnv'bm8#M8`oc %Fjꇢ͂v WG,rC~<7}.R&IMR|Y(s7{n,SczS*fe x !8$//Ui/ǂ䞪&B+ieʬEno2Bm0/ et&aG0[]] Z +ٲdnE7sz 7;we+w2ªis6e6XE!+ꙅG1auHt@Qc\_?R?ڙF##(fe9c,3mY'e6Qn.׏aWl&>~w!ϵYšyKkJQ|d crxs>ԫ]i_YyR EY_”69<.č`/ϗGDg#h_L8.sjP,q->v? 2, *;V'۔[tP\x rپ Rm{;0̢ 4)/m Z שϥ;u6 1<.U_!3mW:̄7X<Ͱzm+d%Ҡh}Q>s2~ŽGmWx[ѐLn]ouV :FUMFIr:3 n5,Mi4Wch^l\0W[%+=6xd)Lc1۝ٳsޒ\Lν f+#kBS! YjWoihFa^=NfOӧMeug^,K%4T ڊ*9Nt*gmsp-{GQQVϡ1E|o%1O$hTLXVt%T?B Ku䪼L/f',qwsWhYB]f_kdܭ7E#6˟0L\~R!MEURt4-ظ,_&l\Q9)3nMlI ѥB#oZb:|eI8U$a9I^^.Vϫ-^ r8)Ig|iˡnmv|#&=8EHϣ+F,Á&#v"V 3fOlT՟#)ka.tKGBI)|xX^EqsY/ W)\DV^ӐtIDk 5RwymsJnvv7yB" #B5,Dgqf[29 '$dK`gj& 20IUIjmlx1QW%>_tݔ9Y6Y0",|1M&!XC YY6JLxd"ld-f"$0$Mh'D.+-M?c;+"2{ ï&w ,3]T"\`]F3se^9-F%\8~Փ;JWNc7Qd{b@r)Eph[mtL D0`VTǾyC2&+IR@~n,ڨZG%ÏPs8,OˑW(avhnd"25~@-o6{D ")ԏkJIBd󦺜kڗ^q^iAq.6nI;=Gzgw;cB48 5-ѣҡoc@y*M~rHaMULJe+PaP!fhv 葾#( -x֦W92/WvDQ1鐝:-TRp} ͗Ȉ:i,qfTpSP'^~4}׵F|N:^to;UAy[ҳ cbdAOEsO_F!9kf ;疕eVܛ+{4} <" ҫHCd[+~DZkB Նk; PgP^FWjj:pw( ۖ:8s+>x i[ #c|PdB踣O;X&Q(L9ȼjc)%mM adm֙gb ϶kA$Cet(thS}jٚYa|zjZTmuBrNqZ&]0CJvAʅ}cdՇ4x`ª…S`-%,|?TT3|9>;9U=23`Zee57~sibkV 9/&7h@Xd D80B,ξU 3oQÊA3o:}GKO) XɈT1 EAcjzcYm8lQ}zYH%VkLSHIcR7AOPpK܅PgFZnA4skte#(,!LlFK[ zWȿu/$ P_qsfѺq*]3B=_ (bK1Qƅ>Ü+5f]! :Vv\.!W/*?]6~ zTLM`=l0H#Mæ:Ù\c)ANX ֆP1k˭wY {@'ɇT1!$,tϺ.$>{:-_7␳?"+gj{V_y-F;$(慲n]oreJ=|1>hS3w{*`&zlc:ˢE} =7[@fB- IlX F{rw)ufS`#WBWJ+f`_#3,d|u,<?[:i>ziAY&mQFf Bs,Esn*qnRʙ"LEMK ^@.r@P٠+/KubȒ(<\lug$ϧ_5FDxC7cɷ^UY .{{[E~ۤs_fBOt "ċn6^?qK=h% 1=|[km㦳WM#o`0pd7ʍCteU0 W?/Y+Ү?'S0Y"d7xHQ2eC% 2`T9Gcݖ~BgR8JNy$k3I Dsn?bym*KΟ& ϱxcc|_fD"GCS!a o3pHdK:A-irgo90IݨE>WNq+=K8Bv|v74u# ɉ*Įh@+L )Fj&$=RMS5A#X,c)+rC63m󥦺O~4[ϝ9yi/,c3%Lbƚ%_ҧi\\)B?y~Iȷ.Wԭ3;J{~Rj\tdb=i30,J&˵z$)`|qޝ]ʩ5)~N4 s3YyK8<ݎRk/Qzʨֻ* {;{z2ʸݪz?GQz5Rr:x4R*̛LHdy:FHaȯgM=lΩRLSDxC 0i9b>^Cv4 "KvңwdW<3nVG$0aBGuqq_2./7A1J6. =P7sNՏ#CdpyB3h6.S~,=Lq졽Ȓ`0 tM&&\6F[K*RݖYQ_cd9V[75GI_o?}h9(6VV+eG!-v;>H{9\3쾭;7g\iܫ#<ƨ k!MbBoP9/jMs!( FO,%uDnWf9Ru4]T'8J֟'a= ĩ+\#6^"9;IR4.*~Vlyx0l#/m;JTҵ~Eh b_o^DĒN:79 |.Fd= v7Lݻ1bogï%͒AIN[І&+k<->1ʜ;h@=lN+ 8 *| 9ImmCnn_jG!"9= Tֈmh16rQ7%}+@F'@!CmRaJ´xil :q&K6&{q- endstream endobj 124 0 obj << /Type /FontDescriptor /FontName /WPCHAK+CMTT9 /Flags 4 /FontBBox [-6 -233 542 698] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle 0 /StemV 74 /XHeight 431 /CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/a/b/c/colon/d/e/eight/f/five/four/g/h/hyphen/i/k/l/m/n/nine/o/one/p/parenleft/parenright/period/r/s/seven/six/slash/t/three/two/u/underscore/v/y/z/zero) /FontFile 123 0 R >> endobj 8 0 obj << /Type /Font /Subtype /Type1 /BaseFont /LMGYRL+CMBX10 /FontDescriptor 88 0 R /FirstChar 11 /LastChar 127 /Widths 85 0 R >> endobj 7 0 obj << /Type /Font /Subtype /Type1 /BaseFont /UZQHWC+CMBX12 /FontDescriptor 90 0 R /FirstChar 12 /LastChar 120 /Widths 86 0 R >> endobj 26 0 obj << /Type /Font /Subtype /Type1 /BaseFont /ZBKZLJ+CMBX9 /FontDescriptor 92 0 R /FirstChar 35 /LastChar 120 /Widths 77 0 R >> endobj 39 0 obj << /Type /Font /Subtype /Type1 /BaseFont /MHSBRZ+CMMI10 /FontDescriptor 94 0 R /FirstChar 103 /LastChar 111 /Widths 70 0 R >> endobj 37 0 obj << /Type /Font /Subtype /Type1 /BaseFont /PRJQUG+CMMI6 /FontDescriptor 96 0 R /FirstChar 61 /LastChar 120 /Widths 72 0 R >> endobj 36 0 obj << /Type /Font /Subtype /Type1 /BaseFont /OBOSBG+CMMI9 /FontDescriptor 98 0 R /FirstChar 58 /LastChar 116 /Widths 73 0 R >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /BaseFont /WVUDXX+CMR10 /FontDescriptor 100 0 R /FirstChar 12 /LastChar 127 /Widths 84 0 R >> endobj 53 0 obj << /Type /Font /Subtype /Type1 /BaseFont /CDOWCQ+CMR12 /FontDescriptor 102 0 R /FirstChar 47 /LastChar 121 /Widths 69 0 R >> endobj 13 0 obj << /Type /Font /Subtype /Type1 /BaseFont /UZVBPP+CMR6 /FontDescriptor 104 0 R /FirstChar 49 /LastChar 52 /Widths 80 0 R >> endobj 11 0 obj << /Type /Font /Subtype /Type1 /BaseFont /NYVPOM+CMR7 /FontDescriptor 106 0 R /FirstChar 48 /LastChar 65 /Widths 82 0 R >> endobj 14 0 obj << /Type /Font /Subtype /Type1 /BaseFont /KXBCZT+CMR8 /FontDescriptor 108 0 R /FirstChar 46 /LastChar 101 /Widths 79 0 R >> endobj 38 0 obj << /Type /Font /Subtype /Type1 /BaseFont /IMRGEN+CMR9 /FontDescriptor 110 0 R /FirstChar 43 /LastChar 118 /Widths 71 0 R >> endobj 12 0 obj << /Type /Font /Subtype /Type1 /BaseFont /GFAWRG+CMSY10 /FontDescriptor 112 0 R /FirstChar 15 /LastChar 15 /Widths 81 0 R >> endobj 60 0 obj << /Type /Font /Subtype /Type1 /BaseFont /HBIEHQ+CMSY6 /FontDescriptor 114 0 R /FirstChar 0 /LastChar 0 /Widths 68 0 R >> endobj 27 0 obj << /Type /Font /Subtype /Type1 /BaseFont /ZYGAOB+CMSY9 /FontDescriptor 116 0 R /FirstChar 0 /LastChar 114 /Widths 76 0 R >> endobj 10 0 obj << /Type /Font /Subtype /Type1 /BaseFont /UDCSBA+CMTT10 /FontDescriptor 118 0 R /FirstChar 34 /LastChar 122 /Widths 83 0 R >> endobj 32 0 obj << /Type /Font /Subtype /Type1 /BaseFont /FNWYCH+CMTT12 /FontDescriptor 120 0 R /FirstChar 65 /LastChar 95 /Widths 74 0 R >> endobj 15 0 obj << /Type /Font /Subtype /Type1 /BaseFont /NFZGAS+CMTT8 /FontDescriptor 122 0 R /FirstChar 45 /LastChar 117 /Widths 78 0 R >> endobj 28 0 obj << /Type /Font /Subtype /Type1 /BaseFont /WPCHAK+CMTT9 /FontDescriptor 124 0 R /FirstChar 40 /LastChar 122 /Widths 75 0 R >> endobj 16 0 obj << /Type /Pages /Count 6 /Parent 125 0 R /Kids [5 0 R 18 0 R 21 0 R 24 0 R 30 0 R 34 0 R] >> endobj 43 0 obj << /Type /Pages /Count 6 /Parent 125 0 R /Kids [41 0 R 45 0 R 48 0 R 51 0 R 55 0 R 58 0 R] >> endobj 64 0 obj << /Type /Pages /Count 2 /Parent 125 0 R /Kids [62 0 R 66 0 R] >> endobj 125 0 obj << /Type /Pages /Count 14 /Kids [16 0 R 43 0 R 64 0 R] >> endobj 126 0 obj << /Type /Catalog /Pages 125 0 R >> endobj 127 0 obj << /Producer (pdfTeX-1.40.10) /Creator (TeX) /CreationDate (D:20130204130735+01'00') /ModDate (D:20130204130735+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.1415926-1.40.10-2.2 (TeX Live 2009/Debian) kpathsea version 5.0.0) >> endobj xref 0 128 0000000000 65535 f 0000073743 00000 n 0000073763 00000 n 0000073783 00000 n 0000002927 00000 n 0000002815 00000 n 0000000015 00000 n 0000288829 00000 n 0000288689 00000 n 0000289531 00000 n 0000290789 00000 n 0000289951 00000 n 0000290370 00000 n 0000289812 00000 n 0000290090 00000 n 0000291072 00000 n 0000291354 00000 n 0000004944 00000 n 0000004829 00000 n 0000003139 00000 n 0000006345 00000 n 0000006230 00000 n 0000005076 00000 n 0000010873 00000 n 0000010758 00000 n 0000006489 00000 n 0000288969 00000 n 0000290649 00000 n 0000291213 00000 n 0000015174 00000 n 0000015059 00000 n 0000011051 00000 n 0000290931 00000 n 0000018390 00000 n 0000018275 00000 n 0000015352 00000 n 0000289391 00000 n 0000289251 00000 n 0000290230 00000 n 0000289109 00000 n 0000021879 00000 n 0000021764 00000 n 0000018616 00000 n 0000291463 00000 n 0000030092 00000 n 0000029977 00000 n 0000022105 00000 n 0000042881 00000 n 0000042766 00000 n 0000030271 00000 n 0000050003 00000 n 0000049888 00000 n 0000043035 00000 n 0000289671 00000 n 0000054790 00000 n 0000054675 00000 n 0000050157 00000 n 0000060856 00000 n 0000060741 00000 n 0000054957 00000 n 0000290511 00000 n 0000066663 00000 n 0000066548 00000 n 0000061036 00000 n 0000291573 00000 n 0000073575 00000 n 0000073460 00000 n 0000066867 00000 n 0000073836 00000 n 0000073858 00000 n 0000074273 00000 n 0000074341 00000 n 0000074790 00000 n 0000075165 00000 n 0000075535 00000 n 0000075739 00000 n 0000076089 00000 n 0000076795 00000 n 0000077327 00000 n 0000077783 00000 n 0000078136 00000 n 0000078178 00000 n 0000078200 00000 n 0000078322 00000 n 0000078696 00000 n 0000079333 00000 n 0000079992 00000 n 0000080622 00000 n 0000100481 00000 n 0000100885 00000 n 0000114525 00000 n 0000114874 00000 n 0000124888 00000 n 0000125175 00000 n 0000132547 00000 n 0000132771 00000 n 0000141435 00000 n 0000141671 00000 n 0000149038 00000 n 0000149272 00000 n 0000170002 00000 n 0000170426 00000 n 0000183800 00000 n 0000184143 00000 n 0000191673 00000 n 0000191908 00000 n 0000199290 00000 n 0000199517 00000 n 0000207053 00000 n 0000207280 00000 n 0000219657 00000 n 0000219965 00000 n 0000227072 00000 n 0000227299 00000 n 0000234275 00000 n 0000234499 00000 n 0000241660 00000 n 0000241906 00000 n 0000261446 00000 n 0000261924 00000 n 0000265106 00000 n 0000265345 00000 n 0000271652 00000 n 0000271973 00000 n 0000288276 00000 n 0000291655 00000 n 0000291730 00000 n 0000291783 00000 n trailer << /Size 128 /Root 126 0 R /Info 127 0 R /ID [<3F3B7B4322A26904748504E45C8C9FD0> <3F3B7B4322A26904748504E45C8C9FD0>] >> startxref 292050 %%EOF eztrace-1.1-7/extlib/gtg/extlib/otf/docu/tools/PaxHeaders.7332/otfprofile_clustering.pdf0000644000000000000000000000013212544237152026160 xustar0030 mtime=1435582058.531899952 30 atime=1508138917.948968663 30 ctime=1508162367.145855959 eztrace-1.1-7/extlib/gtg/extlib/otf/docu/tools/otfprofile_clustering.pdf0000644000175000017500000253677212544237152027375 0ustar00trahaytrahay00000000000000%PDF-1.4 % 6 0 obj << /Length 2053 /Filter /FlateDecode >> stream xڭX[6 ~ȣ̚廋nu[ÀvJ$B}lt#EǹK%GRJ:ς'l}R&+P&j_eȣdEt)Wo6/~k۾ d\io4iozZ f+m?aLкv366?BHhR2'5tXz;k? Bor*@)0%]IHMe&E FQ,)Vl3{yc E L~n>݂Pi;wF샱#0d{@KP{:NCOg#,ǞdD"G R(d˯-.s[k0dҌ4 3>+ dHke,"8*D q. ﷻu$a;I6_H%P$Yh*Yxh6 ޖ޸^ ݠr̽Rn:5 ]g[C# - MN4Tߛ=zb̴iHSt@ k"5>xp>WP?4閰7?O̤YZ<ڷ.XV4L_ hض6ig& ɟ1!E\(1!wѢMag`=V!hp,$Ma> endobj 4 0 obj << /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 7 0 R /F16 8 0 R /F35 9 0 R /F8 10 0 R /F36 11 0 R /F37 12 0 R /F11 13 0 R /F14 14 0 R /F7 15 0 R >> /ProcSet [ /PDF /Text ] >> endobj 19 0 obj << /Length 2556 /Filter /FlateDecode >> stream xڥYY~20aa,F6 b`M%q+ljTuUd6r6Û^IDpܸ^((D/8͗}џw m"QY5u۳NNK}uڲP};K'1pR$A@wO>`۩4guȬ\*(^)cUi_45̓Su]/u-w}9VmnBcKۮ/YQh_K^zCuU9WR͟<2ի3Ei͏>wƬl%OwORx o,ss aDv'-z-N΍cv .Kâ}GzAwV=7YeѶ }f Į!T}@ c@8j /G^eIyA$]S$=Ox?1xֱ(՗}ߞ—K dp.Pq1 gth grէEi6s ;WNiCSH}C;Z8>Hyd.فk܋G 𲷱2{ƞ# jAvE\lF_u&nUV `Lia$ Xmc3;<3;_?4[> WIU#TLk 0b1>.\Q#ݠ5ͫ 3bLs%`oA4[^6r5qi6_SlB(AJsz`Y>^IĉO_ Ij]j ݜVoU7T6TܫyG)@0OFLXӶLΠU YC%57oYl웴|v=ߍ/+;P8TZƸԛu4;Cy+>Œꅢ9zfVjELt eG@wƱABVL HړXe%NMn х qiK1ݙ7{?qz0dg<.CcY؉&a;|4=;pEW#vvvɨUZ|đ' ͞⚤m[Y#Ŝ-q#$"bێ> endobj 17 0 obj << /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F37 12 0 R /F8 10 0 R /F35 9 0 R /F36 11 0 R /F11 13 0 R /F10 20 0 R /F14 14 0 R >> /ProcSet [ /PDF /Text ] >> endobj 23 0 obj << /Length 3807 /Filter /FlateDecode >> stream xZIW-M8'{2N;ZDKpd}8^nÎ}A&H_f$)ҰTMߨW7?meOu/z'Q{u.6H};z4Lҵ9$ݥQr{&vh\@90i\ N͈eԖs4w[II֪bɒd6Vea>2/s=uy5nnȃ k0N;9~ROdMʲ Siz1O >$1HQr];d)9@1$ ] 6mI~A."q%((c"3/:ܖA&8{75;=@37' 3u-GJ+ rhD/ۉsm! @0#8,WVЕS5oIwe}8mN?NOmlř7 1="&н.F^CLĘcPŅ1csWLYɊ϶v fZe5AiQJC̐ E@ZYoh4]sQj.T VP* | "_I7B70* +$II* :zPm\#^>_erq  }^r?se $yZZuCVu1ߛNXL1y9D32}<ΏV۹$WaZfr&j:8|zUbIiY?` XDߡP5dP27[ 4Sb(LA*X7]{9`8gBKJU%>ggIQej{]#\Fy6kdWr}:vzۉ ŜPɺlΐ+vba8wcOO[Cs^1jlDMD] \NVƠQEVJ*6 ^׍5Ͷ6E5 I|q)?FB3.#@cqP3dƒ@HKcIrmB/ 'F 1tp!zP9es+#Z^QRI^h<ܺVN,36/BF2t ;E~b#q]H&Ż#b-;Jc/'T]>l2d'f܇U kZwUTWulF8H#ώ3jUNBe# 'Ƀ8Ȭc?*ekvfQ\Ϙ(/r/CP%{0٥(8I`0,~sJq|S E ̓zH+(P';12F8ly^yM$'?Զ:zx?X6:EGas-6PyQ^<͓F}q4+ D9K+A兪GNM4:\avc,+N< daM/zs ]) '5'Pvh kn:a {#tAI|"shM{m )BF-&rpiadA罓튣wsvW.# ;ҵjN?JIgaI/ad?~>_?ABD endstream endobj 22 0 obj << /Type /Page /Contents 23 0 R /Resources 21 0 R /MediaBox [0 0 595.276 841.89] /Parent 16 0 R >> endobj 21 0 obj << /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F8 10 0 R /F11 13 0 R /F14 14 0 R /F10 20 0 R /F37 12 0 R /F35 9 0 R >> /ProcSet [ /PDF /Text ] >> endobj 26 0 obj << /Length 2801 /Filter /FlateDecode >> stream xڕYKϯQZă :ٍZl#B#f)R!)'(:4@x7z髏&(I7&QqonoԶ~=C6=Pd6ΞǶ+qm]Ln[_~:&rno`VN֩^慩Jgs8+ҭ?j8^&lRGu)m<ʣ  vQFv8j>?.ȥ&0|3^h 4;]YxJ{kdn'E)@.LmlqTf2fۑ^j{ݴs[Ia69*VG6mHhu[  hXs|Tޡ+m3U=C5߯RgQj0qqhv˷}7@Nvh#+qOR5 9)N*DZEڊ]p+/s!.]I LU~SMY4%sWL?u[<~loh%:FDi& v\{V,"2?ײ*څ`k6d q=E8Zӫ@ 2;:AIz4o9]Z  nR:-Do1\Nn{.(\91b(\BXǓ؄8)$_I܂ﱨe ̽3V5C?Z{xH(ף}o 8?n&9Șə(1DŽ3xq6 6&TYF ̍ _ DY~A[W<(AUXb@-Ľ5|@FZ3$\b264@`/@ ^# ALtjo%or&{RA2A&@F{BXW GBN#i+}lZ80 pmw_­J@"ϐ("yYdӅS`r4qO-Ȍ<j e|NOሹ ԇ|U e}woLKȾ̌&y&XlxdU](5jS.B. rvrTMJB)aTv[$<\gJUepb)ɂ Xn&V[N ^_('W^7\}߮Ac/5o> endobj 24 0 obj << /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F35 9 0 R /F8 10 0 R /F37 12 0 R /F36 11 0 R /F48 27 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1 0 obj <<>> endobj 2 0 obj <<>> endobj 3 0 obj << /pgfprgb [/Pattern /DeviceRGB] >> endobj 33 0 obj << /Length 1275 /Filter /FlateDecode >> stream x}VKo6W֊$JZtSE=t{%""IPx{"9/!%OIX8<<>*v.:2JX}ovhfU ͞Zi&RvdA gb7SC0lh2[_Z¥mV47w'֝6 ~6+k')Xۤ?CFiWEAq 5lsf(p2^˸QhM4H^edJܬM7SXM)nF˗pTa}RɠFQQd9UF.],N;ɰ{=NՐc _,mB )INāE_<($$r@{,ѵ>N٨,s[EuEݍP8j[-72  3*9g< C ڑu+|*l&%Lgq3~2[oplXD)/e0*)=ܛfTʗFDVe_*3Vͯ8a4>[Ft$/Fg)@ЂMA֠llC HN;{1wΪ!Lw>=C>`D$Gp[CwS 3vS(KRs[TH;oZ> IsQvqWo뎢 Yw}NV+W@. @;tXp_+K_AolUTC7l{)KP`ea3XhL_n^ c7L]M ʴf(Rj eY)/" 7B0J endstream endobj 32 0 obj << /Type /Page /Contents 33 0 R /Resources 31 0 R /MediaBox [0 0 595.276 841.89] /Parent 16 0 R /Group 29 0 R >> endobj 31 0 obj << /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F8 10 0 R /F37 12 0 R /F35 9 0 R >> /ProcSet [ /PDF /Text ] >> endobj 36 0 obj << /Length 699 /Filter /FlateDecode >> stream xڭ]o +/?^LZ'm]rbFivm~$8Qt)Dd 8!Α;/;6MZVjQQJʅ\O~$jRLIN:c^:?t/;~R.B%jR"7o&N·Zd[7x;~F)jYpV Dccʤ[n$OG%3aЇ )P (P(P&蜈4%(@ dQ T HMlВK^a[G{ŏh*R)[ZQ9'Pi%PIqP HDԡGK}SS_s\ŻF6!xguƗnjuy 2<Kf1pʿdy"D"TKI q2P!MbQ,E:P@ޅީSu{(N# U P%H )UDD(bYq2(d=up t<Uj5(fbu$&b` ;ؗTc0py]1#LG*w)`=w6D!Zy?̗ws%UebI3lXul_{{׻ƿswzÖɢFrtس<X endstream endobj 35 0 obj << /Type /Page /Contents 36 0 R /Resources 34 0 R /MediaBox [0 0 595.276 841.89] /Parent 16 0 R >> endobj 34 0 obj << /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F49 37 0 R /F8 10 0 R >> /ProcSet [ /PDF /Text ] >> endobj 40 0 obj << /Length 285 /Filter /FlateDecode >> stream xڥQN wI0@R>ΤqSI¯g+C.0GyXpౡR)Jc bT ,Bi&JpS5"XJc*.]V1RS.x@JS-4dGH$5!$ 5@V ޻jʈĊaq׭\% 3HluhOO\{ZÝk_boiLpWc^QCaHtrNЈq'W:~}v胢:5AbxE2 . endstream endobj 39 0 obj << /Type /Page /Contents 40 0 R /Resources 38 0 R /MediaBox [0 0 595.276 841.89] /Parent 41 0 R /Group 29 0 R >> endobj 28 0 obj << /Type /XObject /Subtype /Image /Width 1600 /Height 944 /BitsPerComponent 8 /ColorSpace /DeviceRGB /SMask 42 0 R /Length 254279 /Filter /FlateDecode >> stream x\Y}{vꮮ J7);(( E`{K#;! :"$M&SN93yθ3jZ}/2WO#y}%D"Gȋ<_^ |v/Rn#wsvY%0H_oc>| ?_.▞^F#ީDUldK, Z:AhCiP zC M  Q$LHM aC0|0hBiC3 kf-(Z`qhch壽C66lڹdKB'N^tՃ-HJoO ({{tl(Qyd'A Dԍh"Nk3ƮOzf׿vFLhn=0 ֋:fXkb[vT۷* 52t ^Dkj Us"/ߵ,toحCԍ爼T"obv7s_s?rWC3'/| ?_-EuM,W௤o_Ս_WXrWQ+x%AaIW\՘QX-d%6`Lp& GbÁƎ'D+!Œb_W#Wu߮H etwwֳTdԢܜ AC| k + &{5,J’$*,ij!X_93(,Xdʬv YrنkƨiUȃa_ +qjJ$+0W # 2ȊT]Q^ZTH㑟iZi4|l}{W_&RoWabLd%e>j{WnO}+W_UA'3"! LReIVgPŕ KXE\},#kXp6 P~!Xu_!k,͂5FVx%bbI(|/bdW_ypwy[WߏW_# w/FSƠe$#x;T;oeI!PڛbJ?EeF+>1.'`}`I"ŒYdt_aJ=t4^m2y)AU6q|&gXb$~M.C fѺCG>D:..X"KtV+uLdkD-!ՙkDq FWo'.2pZo_SM|nJ\<mX[Y\[@jI/-zvO7q]7v-jsט-nqVlmň;/~ M}zfZ7Q\ѣ-Fs%k`gG'&H< FjBn *uio 4UUʫO[.:pOUm_S{Yf۟) JeY ע :Eqs~;aώO(RnNSV˗ΞA!K.HUY\l># c5/Qj*ʫ+ʩ .L\oNңS"r KCҢ^ӈkm-|ymdPO{[xWĺ:9=C7qi8}sT6sogPR6vLoi}Gs b X [0%k:pYJۻJPde5\TEUClؒ8%bFlW a ?Q'U՜=#pOg|[>0!lUw]9+ū -*} YݬZjRbQpuP7#RD#%S~coPUc0+Be0H:[I,JJAvU폮vE|3kɉw f[kPUc#鿎X!ÜW徛 nU mjB>eп3_"Sؿ`sAY..۷{׎[a'ՋS|Bq'|y'#P$䷬JUykΞU\T2J._U PQl(3eqW pmVkB̏>8,}drd^v&@?_d{>#ADI R/jaQCMMtCܪdX;YٖPMCZa'2発*%aVNLe~ꠎddyE:d(Wnz?0c鮛MgF++M9Yp< :dЄ(EFŬJj=ȉFfU)uz7kе*팞 tuu^t@q?MQj[d00ӷқ fYz6UpfquCξq gECMyT6677eٯ^h 6"{&T5sCVt6ZٵszjON/D[D &˧56u ڥY[>m¸gP[USM~LoCM?/loa5 6Pl]+̆mh>Nb+ |yΥ]BC|k8&(1j$daװ@bߙ%޽/7J g3_p_tJueņ (iv\LN8+gSE$Ov2šb{iID?*soH<6f׳4?ZL4)fܑ=|_IQa& dKzFQ^2jڬ+f̫՟iUW[_Sjۨ˕Jjꋼo|ii]M/T6#h6m>2w[Am`_I tGUWz)+dSX><i@ShtFW52K#*rWtԔVt&k2ٌvF7CY\/kb6miOe0+HJf3w[ )  Ӟ8nV3I{ѱFO KȪ ٧ͻuYֻuv)6*.lmo)5q32"%# Vk;i]3w`bEWқ;Z+8g3W`A;uaնԠ:mNh4/3zz0S)3vi*[ 2Yq9;ūaަ~@mom7wYj0mG5dM=]m &d+IiAx=/UhՖ7v`QOWt:W^Go/橸g]38хz{z&s4]]5%5n,1+sV5uWLeqE:*p(i,ΊUٸmh [ vd4U~`;XUWyU ɋ'մVD_X2w+XS쾎&Q.?}Ǎxǽ2r2+Ï.{UV%QUV ;fkȪ:Pikams{,H`AQUȒfXTldb3So75: MkysXPN8ȕK61op g|a'#N[;{VjJTM$_dOET4_tteԅ-.\_)NQ:^\ʊCB8'ᒹSxߦ$dKd{U;2U[fΖNiEה];6Eϧ{t}bdW(QTZOC˽f }бgI]cCcs #JxU i)fpG:1Fb!56AoD)59G'é4WYTڄ&i6G&LZ`X|m% yκӵ^\Uu߰jKiE6[oYaQ(pS6kfV Te{b9Wumm5:3ձopjvV>Okm2 ;kuFа-3̽ל5~uߦwwxnֱ {co_mUj'DAym,NChbh6h l~G[{4t}gaݣ |a47Uu6֠B: lj>٘xETbl9G밝GJ*`[U`Bz{ E{IT52'fM =stzWOKֹKK%q ?> ;4KEs U=$L śQʫjyɫZWFXd!֣yTYtAzA~?(3ֳg*"eTdi~Dr$1˒Ok9Yhׇ']ҏ2_̦ W\*JK?sΠLj#'3GȖK@aWX5 n7:F<0sW 6*:4wfot=b[0W2Ԟ0V믰ih,P (M'dT*-R?QuXy˜zV9VrBbOUa8{SӍ6{U`nH&J`ߎffKU.%7INJ[ "M½ԝgZ3GVK.},XRƑ4v,8z ] ٢FeZ+LYYMU^+ 7ÅQtA./CB#:.fmpl b${9z Mz! 9jq2uVS<&3̕׿.?(x9ƞ zHZg)Ac:k<23y k<> Z$@t:W{B 䉰Bv٨?;_;+^Bj ҊŹj'Եr:OZJj?߀t25gtTZs"¦buu _7MQ9QyMTAt+tn+F -efse R 1}S[dTx1 3| ~RC)wb+䢎D.:䒧ڨl]AcoQ+ejv {ENɢfeȨS+`ck(ãEEErQ~nUU{$_)6,;&jcbZeK.[>5'˓* )5 (wFK(VZ:{:lU~dɀ<7=!]6RRDZӳ㯊d$8Pj02 -dpn}ꯐQGQZ_[^EI!Ƴv>5ԔRht&bVG3oA7_1B}V3rj(ct[,UTϝgU,0߻d(כԎ&:KH)2p%ǜ TEvWڭ:lRzQ.&d.fFmInack[D:ǐ`=a&vUvX 2+i쒪Z۪t.dּRKYM eŌήw ,=y5eːʢNCb&r*UvDݝ}RLkmE]Yk#XQP eDiGwܫ03gHqo, +3?A}ۂr ȚܻK0weXoKsZi\A .hk-|sjR7Ŭ/H~khA[EG"+/cvVL\mU\}W kg4vT5ښ _`W`Y sUŠ˽YMȬ7է"5'Zy|쨿(lTT1՗dzyegs 6*i?ohd2XkxJodT]0<_!7u<ݰ 5zVhn)Fi좳Y`iBNKaʨ9J[kmHM&s]%7 0NZ9u=:EL">Igvu>CLhL$C郩]=y0ɸ;m,zJW?sفd9q*D?Nn 6bdT]jXn!WDլ6VKl8:uV-ͬezE_Ґj I{D>L6fߑmO}d451ʹ^ce<>L\}UWiҸWZx1Cق2, {`MK5E\qi#v9h_3k,j-\S v5®@^|nSƠe$򲤄֧tut֯ZDAkr-@j).^tMJrwhsY| `)X/KXqcg#w VCo \ zޖz܏}G 5468 b-٫6N633'i)nK*7w,yW MAb2;{.Xdu~ܷ &d,Ҋ}w"(3Wj^ 1XClj,dC;T9'vޮ6쩅觭Xa܆.d9d8̹#]?}@IgWhO ޏ|bTUX+ +6\:}cog[+[' L~nd}3-,5Z:'YnAۻpՎv֞suXڊ=m͜PۢWY+G[11r1Y}D C. EZ2XXc \M.ι:i {;˚v5y5s ?NNf4EF ܳ?hbPWGY@"++vٲ2c"}}YAU&l0aU/N`m+:on F7DΓ$8mU+XM~gR%O5W"/[sՏlћ+.ut2#.dUYVOIMJ E@y9G2 )@A^n9L$ "Y=+/o,4kh,D%b}6Y"cOkB!%Ug ,AhaI-a}jo-y8t dpS\C.4:/]^CUb@C8+!a%X c?)`V欚oUSk` CEj+nCxm m%\IV߻yّNNfdEWe_R6_th,GBltSGXS5CԋgV+#:>h]V0g56Y4aƹ F^L:QF4(DiFaŏ`!-lx]?,Y ΥU*$-q>8]vDZ3!ŵȠjAM, 'g1gۇ~.@ qZxmyPAU%tucW=9 40U%tWGģ{qcs I*^[&ER2ws1dU=*/ Y@F+2"?$Q"*<^4(ACW PȦ^vŠPC4!xMC990j"80,."PVjYW;bmZ;"$V!)D*q5@-(i| v|@ݏ3/"l^< ]SU^Uk/➀+xcAn5oD jf%)}u3Xž劈qV_~>;`2KEy0B+8 ?P$/x(>QԬYLCd dz#7L#9ߐu(-P&ig$ ex5bjEXҲEL*OA()Jj"6lbx*iM|i| &X NNy \&"/%䙬dD :%V']- pdޙ!1 |>U-V0-VlFŪix-Y4D0]C˒EgbdZ-bĩ-KtI]_60*JMUh$ +!gŐVDk+ɬdJU#7W`*J`Ls`LWWW/Hldۏf/W ._,+ [. wE_TBc|Ѧ(?'7+]*iv԰YxU)+?*ɤHL³ B/Gv _fgI%W +»޽PUVUdalW ?v%AJ-h83L I*$|ʠ^AAA["V{ J_P)$_*/qP,wHL'h[9Fу*ޗ=ҫh> WOLO#HKf+‘W야ۋ;^g_%EszJ!Fd;&S~?) y ._q'0dGvZ4ug|C_re<*!=`+UEg 2msX=[xh`Q# r2DTIl^_Wn/,]"_E;݋:!Z? **dzR7Xr#V5# "efF6Y>w]|c9\JGц|_GBL+MZ!fNqѝj/2R$+ p-k"_e& ?0G22[egf&F>I:>|Z0W{kr1&T_eQv!sϼ3 Ⲉ} c_c_fgqRIMN`+ eo/,lm%," ݧpdaf̼Lbw= S,goA:12#mlX:oꔩs4@L!#uK̚zj,J&>.&,1 _WԦ"˟=rf4ky7+`^EeҒ\}D ;&-JBd RN+PSu^qғV.̔W~5 4R IJznt6q%59Ab7nݘY$û* IÅ]55H<6w]"\e}uo6!IQ1ӧ x_cG(C##΂ qY#/ΞC ?ĕ-Mˌ=vJ ݦfNS<9a5JnS5tlckǝmb,N [ ՙ:/rs$/ZjKm3d'9Đ 8ygXUe+#w3}.SQyN`o{͢#$94p^"[!#VpcLJJbTcjXۏ,Z?O=@uZ]q8j)gN$ּ~׭z%\lf_"sef45'DKyuJeM=96W *7D|{E !we_W,X͗/;&jc#R?X~'"ʗpvrǃdWn*k) 1TuozpJa%W")RjoїydJy%H]e_rEssL^p"!马qa+Sݍ֣*_B-R1!MːM.>P(ivO_/-d"2DWr_g.ea!N%; v,K/g(+bC_yT]l~z~Nm3V?aN+1Xq6&]M7Ěm8LԖ _Ü7hYdâ]| Y|l 7n]\*9H_EƻD\v:.5o'W+*k7&[į5qF*ǜdJrxgdf At>2_؝AI j1mOs#eI(Y{\tMddggd>[$^ȧo>1ԦrWh'olT'IPB6⬭Vw}BSIY(h= 7ISQZ#bo^on}=ݍ-H*'pd\ ؖ9 N6FZU:y҂{oď8FeC[[.V9׉Ϝ@cm,Է Luʌ+n09YV i!봙km)ݢ]2w_6y\Ek G\>e~;6BlsNxo|l+%v˒,7[4g)jy?Wͳu 9 54\֬yV;k򄩳|>WYi\tx;dyK§"A\-"|1+3WP ƞ*LJp)~>g$_<\ʥ~ __ƞ*)Q+gSUOOOyIqEI)yDc W௺K? BZZ߇uu6DxS^R$_d|U<\>Ƞ ௾"aWqUqH$ b߇wx뫾CC/-'a!|y{|]na$ W$j,$W4V?*[T^_IKxa+m7Ks"n=>yqYͰ*n0$cO?sxg[OWgoO7owO7O_.>*w/W/Oww7 F{Ia~!>85PO-"pD| _F( )2j :zI&xxyuzWǭ}{آ*>?+"?;2730/O%g߇_}L<-#o_Ipc_`|(Up.u+jܫEҎ@"_ _寤 fej yq)1Iqc"#R)Idbj rp,iD)iYdD 9<ݤH⣣R|;쳰%'p}LJZ9-;2;߸{}kNގ_z?{sOG'<<~/mmu/CNe=VA^}lܖs8k5kgS*ʧ/"ˉWdY|t]Ӕ{ifF<{gu&*e#Ml!zܴpὃd9Wya~QWyrT1K'T%V$WK**J K*E5YʺFVQAh]p޺3WԜ4E,yIQalhAoEΘ>}jiBU4j3ԋ5K<~4CGFD|DC+O2vDwT L{FًO:-'sUMr,TwAj=Y37rQrؕч]{ o1x_^/nP,_IM_ ;$TWRJW"WJܑGd)|KU`?'i$2/Xt25+C $Rpɂ1HYY26֏J~PxVΙ+lOY8`с{c3'^5޾9aDszp=wNQ<`%mߣ73oe|`|utwmejY޼ԽIӭy[ȁY2EIDbJ>fPM[pjkT4Cg*L3nǻW?GMd95*$D'ɺ[<l;"(BT]J˴sKV!%0|F\ey96&++CPETW#uիWؿr֯0řgFϞC]iR]]8a_D{#Wvhzp7 ꮽ ƚG7輖ζQ 'ͮ@۾O{]Gށ:,Ũ7l Fmx*+#zJ/d@BJ85#^2Za%_Ǡ߁*诤 9/[XX1,'"qOD>q˜az nj5V+/3einÇ~'ǎrPɄ:dY4'?Ճ3H:,J|c|`/HxMLѝgĪڀ_BLԈ<7;jWֹ$ޠԒ2\>XTLQ6l8zY. >~[\mع̣feܸsNj׷_9qڲeV-:ީkz!g}'R:z+Y]_]p*?-pŞ&OVg['=ځYr>|{@jƈѧ FOrWŎ.'_4/d+ _DJBג_-+S"KVm$74+pv3M+o۲kZtAalQWWC)[~\l?*?R]ciGwgqKFE_IL ,Y tZ*ʣh>Bto~e1Q{g+6D-Z4x E&e-쟗 S` CZ9s~na#Wwn$ڛ8% ͘%z?t?v>7{tֿj,Zz|a#/9<pjh+%8 WZA1F62fPJ6E#W⾗, !e)W•)_IԢ~&%r{ 2F,|PF%2;$aՍ*g8 oU nр>KܖӲxgx#|Z*k4uv.>zta_%uz憣 o MHMJLç ܜ쫏<p vtx%(!6Vy89ՔVf\adߌN'$VZ>)@ aF_:ߍnH7Hml ij.ST&-0{q321_ )rjVPBAkCٗYKݿ:Y_9XoG{_a~9送G2A'?:~w.9{ͻܻz {-6廧.szEOsւ͔-wM9_ qc7i<ric;Uq8/71ts9!}"X}gI2/ԓ+ckpgz~V< +JA 쓾WW"M""򅿗ԬLqnf+W,|J\"ajZiK}?e>ܫtx9ȥB4}U]&,[ouݳ1lUV??t뷥œјߛ}RX]Wy>+,0.((VX鬰Ka *h:^q64V@v3E''p'2 r5Jwݣ'{7;;$9ț* wY)C\=޼.ϟ<)ƟOxhzoNlP8pbκ; 9p݀Ur\j%,n_նһm_ahᄾ+N>,?w"hE<#S".9Q8ٟ?.SU I꿥jN'j6l3嶺=|]Oo@7yo Whl <5;zdX$H[ϰ*hԅl\ԇ-/ggr9q_^+[pu6 7)\\vIIׁ}O=@x:pN}Zhf*v`[b&%M+<[tZMb/> ҾҳEõikҰEka=~OuvDxa)gBX)EsM$sbv./V)߽l}] odޭ=lbbckk{ƍ+]gų7f,Z:rȉ66bۤq|Վ4v:(NXǙl1ڽXʭVƇO _hj6_{- Oz?}`~~l o}Tt~Ѥ W`F8 !G%$D,K`?Vd%QH1VmdJjJBd1%c_vն#.ɉWE#{Kn3޵ȡG?lqGMX9iW.})&GL59z򈩥sf>һ[u-wu88EW]^=vsz橳=7ow9}Ի[}p%AJpqU53Z涥-w|r?*<<NIVK\1dN"x>ـK}dfLͤ~:3yN} _]/_\.9b5d|`jr{7Z߱=}+h{mN8ްqy֥lӈwX?~pɃO\rr'q*q:!q-41پ}-یNVܚNQAayyyZZL:ܾm[~n[nmQۑfAMNr)gϜhsQs .Ϻꧮ(X *" %!J|EB!u{{Ϝ{9=DNVu,hwyϣeY-ԥp'W1V }'+v>=h-Mu w)xIX+82%nG~V7,/LmlSmor7[3aĿ?S91K,F _8;WzWX܆W3K/i%h7Y’Se.Fߌg^zah ~5Ëy coXYF|uo#dln K<PΧ E](*HpJ(( ݓ\R&<H`~q fI86K6+ 1)sG@y*X%L;+/;:N4O)DM]PMJeb<j" !B!&oսl|VSQ6B-6|TV"x#(TZ顰CwmKhUVh5OZ-c?*VtAk/]eĂܱcd䕇SWSPVPTVTRUPSVWWUQ՟*ϛShN'~%STDw t^̮O? YǠn$Ү%/%KM$ZԻ,"=  ̛<[tB>Y'x֢R& **t㉷)t#KLFpv]M˗/pcÆ hh${0w_J|LbLD^FZ~ffƸqqqԿչ}25t5tvtk[V [[Mi[Re1+2PpsLuft*b/^%AC302AeJ6136Yv6sǒܚϵ=Qn{5]444:4iPW^kdkmSqѱs6W|; ɔ2\)+11m]E^D:ׄfX}a(h1EE5rR]rǚY7/vbF_k5 ➇8~e7[β ?} a]ueyIy:TWT'UWW={(*"aab|*$ EK%%F Fgs$?xr/Ռ1TJ8gimMȰ$$B|LuHo"ԋmM{;:Z7b{TWF9h~#D'o%yYW7M"x<ݖXVEk5o2b|zwoe;#n{]#+7ɢ+]:?}jk>;0z"WX1"PcPFKPl-AkzѺh`4 ='3-,07ahbT2͘K wmRe}sZ%Yu||ܮsy`s}t 񊋪Zm?huZcb ͮ[ᅁ|~Bx;Rɲs 3U)r<ґLf+,[|GפV":9n6VV*3]%u ֭]yӦd}ϿK\tw۰aýw1s#}n>$-rMV@`ɃKA型ƽٔYe\Ԃ%m <$ j=+iɥxwyyx?G|[g.p#S9h=ZCtpsC}/.A;W_ͥ>hK&== K!!=^OY23JS,#3I1D4=dKո {,e,,2'ES 5 O 7Y\LT?Ձa;P&dnp{&FًKѮQSz ?[P| xb!BNjʿx-HZS曩Ǘ}k;ەW]wJ8(?'pd4jR]~Q:bk02mxpT͝5;N8хɉWAar&>Qe:+7-pfׄ)%]+%U|d~m @m]]Owg vn k"D{E(pzˣ ',/wzr9©t J3Z 烶@k/s_xTWW744zŋMMMțׯ^mi}cï?vt=~d~У|,|O=G" WNE?z-^qD@W$j$㩌4|W$ق=xXoP>fgQ.o"oe?ӃV޾}{\߻oט5utN$]*0jCwDGGKJ_Q;tvÈŕRHufƼF3lm.]t&3s}P!WWwW?TU,Q!Ρ^njMG5Vh(%5/g脶h m65lͣoL2ˣ(1\N3!**{[l)[n8 𯾇ХRiѢPj͆FhNѯhȡ--WZC `٫/#W/\ոXWhԿ̱Bs_W$L 8z姮N4eVgcUI<ŏ"$r2cA#,bN/yZCR'f:3-%,6yC;q^a:8bC28ozĜ>Cv IE,y.yx]K;v;i0J\rrrNZ|>q5k֯ƍ0+ZJNVv6Wgi~9%Vf.n^:ުABRQQb+ScC7ccb/vCKo}H{7q} 5Ί| 7;KRQǤ8=n2I0t,@]e\,Yz9{Brh}fʭ]hO[vwKzu&[ E*r8X+5LG?5D:cY8Q}ߢPTYEDFCJ--=\0$HIDx0ؽcjI!O76]^$f)[XRc3~=;+SUY?X6F|FN (5(T)|I$o`qſaj/r7UBCBhiiY9w c^]pq[niYaug}m~aaO>eM+=mXaIQO^zGeE]"&Zj*)qNś6QQ~+YW!g.<<,ɒQr3yX6&>wSɓ*{d;rٰʝ<wOvu5ż9oaq }^Gu%EFz/޼~=1.3UFJ&?;KWGݽ֍A~IqiYi))Iiɉ)qё̢G]+ʂzrGE]Y,fǛB[O BCd2?\ ui1cKLVYًBݿryv>y% 8PVV}3.GQy,vw1*hQŲ 9vKTx jZ2tEBЩ0M*֣8Wo߾m644م%%%dffFFF" ?izL+C)!3jt ,ѸW8?p#9΄{n90{;^&|:"L33DLA7Bhn]ʽfh=j*L%%EEE020 \߿4{Y||58-F zY*Jcq,d07;-5/3x-$Tcc]D9(E^KVQຽ/}tGD4Oj}]qT չ3WL=7uއʺvNLBVG(n^1I"grq4U WR9jmj+̚ӗ a_Ao+eܿ:/VQUs][z,.U7WzWHs=5jt/M97%ybi'\WLpͣelLW_0wjˋ x("-#'.%kdjPHXࡐB|B¢B‚D5 L m!̴qQ-u₼)FfP|NkkWUTuBZ%y$\^fW W+KP5>xV>䟗xM{}|7%YNu Deb"#qlro\&P.❐Ԗ k:%1S~՛nEެ޲yݷw_qq1Ur|6z?YQ|K\zjBugCnWYH5q'''jhhXXXzjlޖ&YόYhGhf0_a4`v*ʻ/w'N-S%u㑇b<OeECIq*j"rRr ȅuSP ZRTVV uwwKJJ͍򲷳򊌌LMI)**urr251+w浈 K'?\F&)AUO"2lٲaF5UUwWYW=hmmcd`l !飯"%ɏ~[Q~7TMy]Le22H Yl`xMnw}sirw_*( I\ǹ/՞=+@w?5ra_$̋U' JPpSJQS8pfr&SL׭^MDN86f!\')A:ѮH1{ES Xf۵^MvaM!?CpHhgmN&JN8|<O7\}_[FU%%;Sӧ55f_egy iZ_ ۩_s֋B/|<͙lw>PC(T7j[ATCvL/bRPDA^ua̸P}kad/D곹2?Ma9_G_.UlT.ޢq(10FsqM>Ts%=$}nTS5,R3Zŋcr^C)f $Y2f!}r/r?e ik|o\(/(-N/)v L+.^Thbi!PlQ_c׮ =|M#"tU^媱!z#D\^B(#fI}kJ&k7|,&G館`̫SNHKhΝ۷>_Ԏ6+g-L]$[;+Y6*"iQP?l@١PY(g_oQ[|EDT#Kt|N\9{CRHX[\**ʪd'qcx{]- ۬7.!`yq+UUe8./}-JJ/޾w۞M0 3wq{r%F(T]v;K-ٰeMQ1 C΁9%m\W_lY?8_xJ16Zw" eRU@sQ([+owsU^RjjlSRT9/+cBLcAT*dDT*Cer"۟?^__}؈捫yx!.LK qF&D4/ujpm*1[ 2/y &_1@+iI'_ SПb|&~P+:'*ߏS^^ {`@@DDDB||zZZ^nneE̐ʲ1eC^]U\HRTVF^FQ\EBMBZ^UiÆ 7o{nߌ+mM z@?_OWAW>5>?Cv:I97Ž*?!:L*q{qL%fHv=d<l1]4E3'(W$DW819+`wUwaAd_+aɬDӪLߥ )a!66|R(u$µiĽYyR&U|H0~-n !ږ3p\^j, #b +`sJj1xy#Oz:/-0kmknpIsV6cLՈDE'kkvpwq8?ibcxps()qvt]W'GLO2$ũ4DbБ=.s\K윖Y]: g DuiɝQ)GtNQ#"eYk8?H{F3(+!Xx) |6Ev:n+dLTl4{NC'(zT[򾹾jߔx) q 'mg_'AR kH]:Ҽb{{ǏGݪ榦Ɨ/_>~xD555u zvh{NX|ptAӬb:Mt%e; TRxXp\0&Ea͢!SH SvwAN2 }Do<~ $շϸ_]~UF͛7nbs6{w98999yyy팑ώaRd 1=4C33]rJ7S2Z WyTr^ΈW 0W{TG<2#о&ҟ/PD9 J8,Yrr櫼7u5Tq _D:t yі霪r6)nT^n _Z9jtʚ MndG024UQRQF7@,$$em`dd&$$}t\f"魒 oZgӏa/xy[ظueݸۚ[o>qI;>4<~T]^:1r>ަFH)ʨX [Lu+ӣ i2666VVVVTT4hĤA4###1115507'HOG( q _?hgu>vQ,ϐ&a ?Y}fLGuo5{ Dn;x`V͊!OGm[qh{=$g;+GG(nnn1cq_222VWͮ>dPZ`v^TOaOUcŋwsߔeD#GLPRS(Fe$Z>Z."-&j#o#`*ffj'H;ӉppuCMnRc t8Xٮ_Ra_W&hKKJSRWAU;WZ89WYDK/Ekȍ ^%TinYMԄ9 } }]HH+SH0\C"ev _0# aDZ*ɘ2*˩*)() 2ʆ|v666lz:FFzz&ut%9i2י55Ԕ!p.X[#5T2_ceWlm<\\7->׮^EQZRR\Dx}dU%5\<7cbHiN\<]{IK-*'JKScFTQQ616Y_Se{e{()yr,outGi$Z$~h /Y{ﻩJ|Kg+;Z7D%LF<͑=~K=y[7]y޳8?_fFGB.˗oXnúwn0+A+\P.-f*HsjcgTi=@b ] fz݇Q<佲G9VN ΒwnZ imhR1Am5^I+!5_yQ5FpXWW__2PGKcr2V>na2bqq0Ԭ+\y_O]F {ZIK(azVIxUf.U9~ aŦsO*d?OD:[d+Dhˌ.#hSn0!G>" 5l0RRJ 䈆QJ9` 30U}Mլ?Υw[W3m f ,sܲP+W_l1d8o}476"fE׈‚y1Ӵ"(e *u_U@9>gM LW*]Z[ "Y/%9|p]{29cbJ4$>HL"eRX<1 ђ޿kmHۧbcj(>/$Lu`MY])g/$LuοV]))"fN/LO.۰@s,W|zvaz>sQM}1]';!ST<9\k}%U%9!ٹDҋG~448;99&1^`пI #d_W0c+k_1b(YCrt#4$Y^ 2[i6 Ht# >!Y5*()fW;8ׂWW/اV^*Ir(K4ǯXe`=֤T$[* P# &aﳫlTY_ 2b9d#`?ٿꨫUx/3/]E>p:aYm_Uf]q`/F}?lGwxA:̒W珏=!sr|ndB^j)b`. `ć2s2#} J>W EHeTR!Werd)cr ˋc-h{s:Ƥ0<{qvblptR])N09ITa~jbhBa}r珜7J)ʈ 0>|V9"oس-ҵO-/͉qӾu$k^L2G(VܑKN Ee)6:u!j$_uvvԂ $[1jR=R\WJ_l7;D\NſW%UE hO޿cnALvE*&ZO C%2vA6nRtޮ}' '| P*)TWC*=4/5ܽm C+zΛSg|ˤgjoOQ*J}pUcꍻ1X'=JTby=WKoOց!z_i7rZ8VwvYN{Zݻwuin;gx@ R|O황F*|@y-`чmך?bLSLp~tٲ^3Isgmڝ$j_B=0-bQ wI <:=Jp!_ epl[3T bxEہ畉63/^3Hno-kЧ{_'ϛF }KMk~" 輿xMt̓3 {<)5yl[k8AZ Y9i cSXX  {zdq]3 椄R]Jpa_7yǧU?Hj`F4Մ]=m |@sLaBoޢ_p꿖F@o)eMٽWZ;o} ޳4CRgj Uc%߷e,]4ߺ& $Ihl}ZIg8L ZHm:A іdﭼO3 j'Kp_uר4רkf_H:p{~H&9g 3#jB~}cTaaQ > 882CN>MWR&lI/zMХ;Ci\~;8kf_9cZe@s׫)0Gnao ^5_}c$g*kx=Oo$$j^E} )TM2ʜOk: >BW؊ VgU{pA5(7Z}g=3/zٿT LozG96SjՓh{Y]Tt M~)DjSFtLkxD$15V;K ǷcjڋTPUwɿ|jŌ[˔ir <0 b0mI̓}ڑ x1ڏK҇]31}vIm݊?gUMaь8I.U!y@k%[+,Ò6WA *o y0bS=r/Imq+P|c=$̞Nߑz3CP@b<{p 3>՗.EJpsZnn݊>7k wjwo-^vӮ/rkze7 ay|f#kQ@B#QsG_OGK;鶳WKL|86uX2**f|p!~ܔ-q{L[H>Ta#9ao]|Tx4ҕt7cG(ٿSLp.>_mǐp./+REwcb)x%@W}d'}czN_Mw:Ur$FkU!ETSes 1?%ķ.եJiBܖWBw+>1Wdk _HTCM?{ .spNUg޿jM8R|̸2edsb&LƏPlxR"P[_[qC+nMޞ'Vvnw{3kWC|#### ')ym+ L5kԮ+G,;x¾q gvɟ"O~|5PkB| 03Œ1WAU7TG S^Y߿%}r;JYWWKi~k+Kzwu=.C}hyZ2,,}RʟvwzqOĻ(WI%o+9ߜUwTSm/V 5ʹqI#ކdn}leǽj*|diAԪm]m/ROo#IM;&jpnM5#;;^Cc\*#mkNC_Ɣs WN5>'ʿNQ񶭣0ṝT LSR_ "ǻ(yq뱮쯙Id2~oMCv`LTV}TshJy3OF\ng 1yՍ;ۚj"IvRhuO b 3Kq|lSf7U+𯾱͸.ݾfG{tU+Tt̑̾ +\u;\;`)>t{>~2WFM VGKgR,,[ g>(R8܃[34gt٠Ň=$܃ _r+m' 9O#f<W} W y먽@0ECb+n ;h[Ǿjnb"?m͊53IyU;z^d=,O+2V< ?+Zۆ5cg+3G%+fi_b9Xdڍɯwп~d !֬\*bv5eqԷWٱbolprd勇{#dL #Nssc;._~)]äk3NF\ng$] 'XƽDLB6Yӄɥ8)2*W @Ms^4uWSM=@3W?P(dJ%% BOL).쇜]_@+@ $@ 67y[``.h>@ t @Fj~H (> JJ%8Y_@ RU^C~R@ _@ JJ?,>#_@ UiG{;WWeţ{G#_@ ''r m;G#_Ϳڋx(fA2 r  T[ٝgS9ya 7~@P| (A JpƺR.Ns:twRco ~,%ڱf"Znn-"7j~[CIPKՓv%r|j[ײ |G;|ź(%4[~96 O@?@ t_8wz}vc-֖Zg:iuեn'W/`k=3|VHx!YeؔS ҕf^zEϬ'͝ciw}I4\`3 W @N_ u޴)l-wtMm&o:ƈZC󔩯>jm,2lJ!C5޶pQ]w:{/24[ bCKZ&FS4d7&&1&qFqQAcCDTڀto^0|wwF+-\y;6b&`H'pFWe_i|```l3ڇYzK/|yq_Uu<\ЯΦ_,2Eά{gÉUR^<}C4%D/96`z`d Z_ LGۧrRc*޽ |cB ?\-:e^ZȔo!w6%hʑC۝C3r+?h5mbQl͞vRCGpɋ6so;E;B. vw;a='`W?Wlp,   ?b~1xY 6նޚ^}gueMLG[{7K핓"]g~\ެEN_tQxzC+;a='`:k_?b1eeXyp>^ۭWb\)/╼MBgp~m<ҏ! ^&2݊ѐݜ+DFj~9I9Iׅox09Bxx@@Sݟww~Z5^zY/_Ѭ[pm,Y=|k4o|7p71]oȚjK_7f W#½,eF&.~6rޫmmGHwcUѱ $ tz %0! *:LPyT L0bvCvs x89`Dp&eB^7fI 1‡ !!ޟ$H_K>;mmHXA֯:n-JiEVhw;{ 56-;LS鳑|Oc*]gERW)]wvڎ>S_6Xo0ׯ- ?^;u uWV{۷/xW4]>D6ɒ! |He8.A&diIЛ0t#]`7d7J 3qFdgRN<+_, P!&^s!;:f>Wveݗ>[p;<;+ӊC{rko XGv݃35Mmkn^:埦-vӇ]2!~s@2р_1a_Uvq*ۨ[+ }Nm ߖd=/큁%:n5rMt++ '.=v:ta=|] $\6 lA*@$ trFd''xK,f胡^rHrUt\~W^<; /+OFD=Kd25E}9涔Ugi"=yQ^^Qq\dx{^Xrm8>+8qMՃ7QƆF2kא/l=~USB.lu;Jlg~$'`\"S%>dIEWWs֗Dy9Ȍ-3Lա8vvޑS~N;緯c'3v L~s۪ #sP7~vf 79 a&|~'?]{q!9Ut11ߡ^^:Y!oý:hdlWH$JأII  vaİ $ʒ lT*1F.&&n#F] $, ]?M"&Ѕp*F:9#2*ޭaf13FjCe[# G&_HGt‡Ԩu^V9sw'ҫ ۵C+&tve˞ ~i~P/Vj`S5qgݮknoomw[::j.Y55K|pGC,XWn767T_;w)_Wm/\pډR\Co t zǒ w_86uA<^]7r<^A+kʪy0O҈wcJ0rGf2@# Ht#] 1ɉʔή xQܩbs0"89M'3P|Yֈo92 $WxC섗sIeR1~r謹} ~0i~U__ZRIj)+UH[*Npo :j>2hUI#:r9n=YWTpc=SG~IVwY7ӭȔooZM BqZo>̙@?l|~ɡ_I Pf".=vDc$!F] $LcH!`DprBŌTJ1C ʗoC@+@rň>dNxY9̩_Q>W-W]n'^+-)֠_u*޼RÇk&G"Ά+Ϳnڅfe@L_.q=ԢИUWnM/U]WW_}hѢ&"70VZGo.Fbcw`m=VӐĀPRΨj<L0b7=HL1聳+DvL~v+G#oetrFd''TQbfW```````_q\!(X<=\_5]9kx~GԞ'Sݟun_ڦ_aC6v \x)90~%м+1zcԯ8y\Vbu'R lW]!ڿ($|EЍj Z_!Lefhf+O;Z/qЬ/nQmEVhwua2_&"70V<"K~IPԡ 0zFaİ |] $p0Rs#0< L&QMen(̒b9BxCX~Z!$>o"]cGB ` ƀ100okVIo+BZ*LZѾM7}83rفnIj9zVCsG\T(+[+]iϹꊲԒSGɂ/ݬoioU* A눫L]D|CJ|6 DiF/i7T**tZ_c@0 )^U\խ_Օ:W:J VOLikn9(yy??+1?~+WY#c-L-R*Yrmܔ ' cCc :<=ek9k;tqq ,A*:40pi z$@=hDLCx_VWg_Y[ki@{ե_4+خm-qq!+Ey%:. sJ.7Bҭ0\>"dsF*9(0&.=<{xP)8ye3߭8M٭F$G_1:c  gW+g^2ƕ@[N*)NFD!)x@@snn\?(_ϝՅJLV ! z|zy!ȑ Qx)>"D 'ccd0 $C% 7ǽWz*9(0Ȳ$[d"bP)8y8o!CWdD< '_;ǫ`o A2eqYEΈ9^LILc  gW R\Ctڲ=3U͎ڣdX~0#SjkɇXn.|4+UUŐ!4 t52cbe 8I,38.G'`Or9P%sqڪ<'co<087# 4)(ATs-ƴZ7&r⳩?8_c߾͉g˛S|}:JTtwz5&N?TUwx ]_~U|Fՙ:Яt`k ~SZyvٶfӦA8fÑT?9O6g2r jW6ffI fOi*C >+VD0}š5$ dxصN8\ G$ji\ 夂1;j Lj2АkICMmJ⹣Wmd#I7h{Դ<ټ]l7ES[DqVR5aFo$R_]C@0xЯEs̕G;irґ%q3) N@ jy'P:kM[TL;嫣euO+lq7v7&w57t zs`C;в~uXF~x ԯ8 /%'c+3_iO^ͥ+ SJFŻY*0v;|^D3kG&-sJy=%d<(z^x\DLX3镚۪|{mTY&0z0x]\@o-2x~`gS}FjEn'׻Oj2 9q3ע9.) t*_16|HXAү90&)1ܵcS,?=:~ۏcEQRi S[Y&fWO噔v@F=!+E?E Sf~{{W{WFEHR '|`QQg+?|fk*:z_uW:={8pA`Yn8(7o_ _U#wVu_O~ps!&>~d+ЯO:|p_9l@Wz@U0F{60G)'| ?5t\bzf2u%/ȼbb !yv|[8Jٻ[h~Uǁ]D*;MIwޙkqY79[f$OS;|}陚 x'f3aM3yGZ[Bm#4gԯٛFuSgݑ߼XwJI OXLI$fvaqZPXs, Rݟ'{=s߾Bu܋.hj,Y3cowũuީ>;xZ֬[xtЯY)^iЯ%G{9XʌL]"mN-+sb|=]-:3xxt[ѱT?akSo> W|[ԯpUE|77ǠG)'| ?5t\bzf2u%/'gov΋Q1R1pza+Սw.( =\>D oiR T ,G;; z$;rRSC %g+#/_WIq>Xo+*gw7 ^hQI] x@@Kp੉V{j w۳xV_5ۯMN>ePC™EjrEgsꙑOcޮ4'`~E\9nk`V5BdR{{<3o?Uډ^׉Ug;k~V\C卝q^?XqHn7Uoć;j /gc`Ɵ3:??5=;2})NkrE̬][/m>({ [A3ڢͿ}afrfj0cSy_Z0X=\?;V٥s+,B4CV3|mj=棑-B $C% HQz2,)  S0:ΙE qB&h &ЅpwwG0-bt 'cccTb ̋Q1R11->2Z°\aOPFĺOJbe2gI%~ }kv7NZ_u[ǁUy{VxZ89\mՓ2rΈy\_i֯Z;o2sqgݮknoomw[::j.Y55K|pGC͆džfۍ N_EW?!ss /W7ܻvbא|YoXRQ{ զN~z[sNzdeeUگ}i+fiĻTJ:ܕ ,8[ij!^5 ԓK '=@ i*35wdoO3#aZ80G2C#_`^*yŌ!b0Fv8x#m'|tJs~BӉ1ޓn = L{"UMI^[+$SũB+5{/Tg]S+wN>.p9N}ي'^ݽ<)eqE8EQq4sf-0+'+%!*1CIjF"S0:!8<\0կbf$L'JbCU- Q 1 FS#;T:ݝіʜ}RЯshV =F]$*hX~Ug+?|fk*:N#Ά+_7D~B2 &/xjQ(kJrk|RjeFxHWxzC+t |$w-ZԤ=s+޷_l1fL5XMC΄$!J 8#cHQz2ܹD.d F'98<\O|αce( `M8H13E\fhH0CU-("hc a0\C$Wy١jM xXXT͛hXe>c\?)}k7NZ_7~,p{m =KAfӋ P*aW^¿\}FS‰fCI XXUW}5Twpm%vTY:rK[źgM`VWm0tcH+`Z_SW'^"ĪrϤ+QT{lG<#薴ګvN Zo547ޫ<EbXmnn(;Lm;oɂ/ݬoioU* AWpܲ L4JěY*`:g_c@0 [}_ah(-X=1y䉫 J{j{pO 'it_qrf t0t KdU˵-sS, -V6|~(=^s؀]Wz@U0F{60  )1|a|y'8#1cmWl~ [^O&m1x_)3{} ѯ 9}|tIC-Xݩ+HLW@"a>䛛cxCCv0Ts~j1+rru2Ε4DήWۆ:$︯o1Rg9WpcvvZg0:` LS'{`dnPtU@ׁ,qq_l5 YN&𾯯 @60HTCrA8dL\sITJOArvBs奚S??04`D8qrF+B122H093dX !|1})A+ 1֝˖^lzos~6snn@߯TZ[NCyHq֯(Lِ^lݤRcn_".%*?̀~NF`A00?gljfRQ)7}}q 8)~4PO@2~|Oٻvp|8:aJE^2c#ke~vԡǥ#~qЯ|3k]F.#v)Y@4KK챜 B H$$PEn. P] 2&qmT"1250 k9;9RͩURBMcP3&SyYt ٫~Aff q|F !/o!ŕ[s&bp%fjjnyŶ!I%jlr?s~6QQtC^5q0#8hDdz0cCQАkICMmJG܍ -mHHMɓ͋NAs^le0qg8c=k~ߋ JQ4wPJ^\yBκ#K&_usgR@Na!N*Jj 3ldF 367w_}Q>RgKU+Yt񭧳cBeFfv>q_JS']}Zɬɓ+֯@@ +Я_n "3z%0x]\@5ڢp'Wcyq#1c,fGW*ʇFq=B vV7gľڮ_|r֊-ã5t۝s,.y껃&«}~Ý匿 ^V;g?O;1ƳC Uձ#u5_ic+W@" f.Խc'M9a|aJt+j*Fl}S%nN%p#3"Ʉ̊)SLUw´ 32SnOt}B֩Qw$D-vqzgލP?p@@,+E?EJժ)3qAwQWÉ< X٪{J糊ުCjWWiBl<(4F)X{$Ӎܹ+?4X11^h Ƨ^5_W0؍iJJ TY00p!7a7Wq6aG2<¹c®?D6gqE#|UJ`$ud3¨CQIs} ѯ!T1wxn ,zBY7=3՝$39H̚2#yngr6y8iY!kf):Ȋo^zt`ށZ>tvu'u}6cYbhf7z͝1#;rK[zRĪ;8AX&+3nԷ/c8`@ˇ* (PUd" a0zF[zszgv$#=f,Zhl@dsv\p%4jx0~\GF0#:ԯ_K>yz7N_1s^1 ON]z33Z3Tblu' tK4J9VΟ͜Gw=1,ìIMfZz27#4Ig0P;'N3Z˞6<ߌpnQyv6^f}|呺Nx9kr6^{_~Uiԟz{YwH{?Q[j4v|QW6"mGDMt++ H_٠Pezg*Cd=YA8p.FY fd,r+ KXj,y.'ӊЯ~u>PWu5W^6Wl}y~NJd10Ys۟mgn>jW5â|df.O~Bާ^?+S k9g꿯n^LK'R//yjýMM' P {9mTLlBV%%"1|R/Q®FkE0`nP$*Ƙ[K3(L{o…yt0G.\Q{Lb\wvvzA9$~}H?s~6֕+)4-̚hm7u ,^p,{(+EӖb,f{cłMK,eOI٣_X?O۠?̺6gIoe5&\Gl͝SdYe;4~!z;'+ɯX_uԞ,bOVŭRh2?v=*k+:S.FTy={w,XY֬g^< O׬^%8X_Ԝ0\L^e\B="!z1ں !M*5vm4&i0VP+~p1w[G?N{9+\f-V[{Y~rG 벜!<]Mfmgd Y{aݺ;_3%"Pjhmaٓ+{;BvU,) kGvk[9Y[8xGg9ӿOlajWEWJ9Q&^)O}>|7WkQWדG kW^ro9ũBoQAJɀՑ_<S/PFNz+ V;[-uҒ_I , m 6UWq6!2$=)FS¹e,Zj1U P|.aQ33(L{o…dgg~e+jv#gǹCvϡ?\?8cWƧc'\ j Wڤ_J***Ҭ_q>S"Ά+_7D~x(%˥q ?Y~5kܚ{5-h'uqqb;ƌ ƞnB?!J 8#c7;ؠPezgܹg \7( daRI0`v+Gnn yHCć1s Dfh(1%.*0 EDйpyyrE͎c:26"rH32>vϡ? /%'cєLЦ[bWb 8QIo+oT n_"k L= c\?_3KQ"<$?W(V*SQK8)^[ϳ2 L+)[ Ϋ+\@U%aP1&*&HG8{|Yص0ιhd\ tq÷`Fu7*_qvo?P]^'nWXT}e7jjohqgݒV{遁Ys⭆{PV =Y07PWP4F/gP; OR) έ \?[Wڃm40أjWG /+Bjj(-X=1y䉫 JnJvY6&&N6^||Яc+tÆ_mUEly 3ڲ{`cL|M4/Sf/FL9ΠͼQ곃F(ιWp 0tcʻzsU~֧VꈭioNo+\@U0E{1z<-v@:F?D#o(0a6ridϔP`x OYŬ>;oTR@B+x3Q|+Я]7xz~+H|үpUE" 3ڲ{`cL|M4/Sf/F\px >~xfPf^xsUԯ_K>yz7N_1s\KL= c\?_ϮFc 47~e9mC/+v2`E`XXGDYEv.Nz6|D#pYV@1AT WV6<+>W`GB=\?_){ AF0Wga7Y$H$,x7#wx04zij+Y `x0d\8@0P&0fӨn \%~9IX}B(LsDqNVa壛TjLڀ}iiM`Wpc %]{z 8 LKϿ*TW'@Oi?l|~$, {2m NW`{r(e `ORM`̦1ݩ\%wwOvwdp/K_DbM\p_OZ1!EGW' Հ~ִ[h.&c̘kk챚 DB^?(pFUCݒd/9eBJLTj zR?A.,UU Ooµ0h$JLK}10HG /ӿ("jر+ a\ O͹s0<,,4n\>w; l$ը(:!ښ8Zz4"\=bw(F[uDxq0r8B~>"g<3H2epXSy{8BkL{"g볡8bꨜDԟohi( 7^Cۀ9} v}ܹz8];#m +CfÉ;G`NUd Ĺ_E!*_054q az{H$Ooµil̴]B0n `xNղe?NNQ[~6Jxʌ9Y\+V*l?^><$R$KV  ػx\&i0VP+~p1W ҃NAE C* t52cbeg y$gUG'Н~Q2wʲOx5P\$ Z7&r⳩?ѦhoD3S)>þ ο:쁁~ g`KW<J+Ι>.grƈѯ4fר_QRs} ѯXR{ǯѮ!ցSxVW{AC%E5*7/}#!69&Of6/:yqGז1\ax,g #3슉z~(;( %/f#Qq_|A~u+~|lMN|;үpUEv YAm=1 &]|C)M#{egPf^xb(f^Un_ YUefvc7nxx0<.QfpC;[ +I kf1;:RP>=6\P~>#v"7ݧ`Vl4`qSW7HCWo[ݸxή9텗];}Uk Qspylh;_P}U-]m[R#jTKxjYd?+NϿ֯~i J&p0 j) R) έ \?[W*Rjfl.E:2&@aLR÷cX~%Fx*1(^*6 672Y/=^NtHL ,lR]}J<5#CKL,$'EQkӨ'WD$ux(X\^ڔ䕺+vκ§W~s_"r)NFVU;D_C;fl_ȏ_>Xs+0>bclŀ aC6"f.~UͽƧ^u6]3&G9_[)`@|szK_,BonAR1lPF<CŃ7F.΂@cvØ@.pYv @ruԊԯpW`$T>fܼO^ޭqaEO9g&[8w;1q&GY79[f$Ou>>L&O;y8 =77#~` נ5EuY1͋u^;PήnU/݆7,nW +;9UԯuP$vpd]aN`FCcrSI)&Xɳ+"`E@AAQw.[wu]vݹ3gΜ9gX̽RM!s nn2&Aq TY65J0A):4}[Vm,mv!#ngiaޤI̞VVc` SYT͊`qj2j.L~jk}&;Nz޾^/)ȑz =B![6wo|'d9x竡TU{;j[/5H} %G0,̧_{`}nhj #,, CL^YA):4}Xp>puw!x16`騱KA42&U͎IJScAȼZv~@q%( *XAz5FO,>X_` `v B{+|~E2 ˗wbQrM/Wv,{8qDצ p9|%W1z9Kfmcjbы}l>K٬2(v eL-@_tko-=22zqboCpO=jL!cKřj> RBzڬ=4"#dKɪ#X_ٹy^|)?qv3{-w|U,OC ##Kw{*7ɖs,;=``o`tHGCaaWo++&r$Z%S ӵ::"8 gh~XY4ͻ0 HT&T*f$̱Agd\QU$:@|='}` +egטHP5e2}:r}}?CW;ʡ=KMoE~qKFNpYŲ)Y2cy#C`H +!V.dƼ7^n)>-_fo-}r)eQaG=}ޝu+c?6f Jyi=F,)?i_u1J2`YRiMIAfJVEfDo؟FZW^x#lN?єmτU|#{]4hUYsU[/9^^ZFːOgܫqz!!+Uʖ+;ϋ/tjAeCMG۸g0-0 }qR DdeOH@Gv^Zf<^YA6+CӧtQF.co31У`IhqTmXF+CVh!} +eg׵:fǓk.T䖳H]3HAˠWo=/buP4> #S^!_](@`՜W1W:5.]Z}S!ަjΝ>EgKk}]cc@ /.Y.uwbEs5ѳ4 ՕRe=ֹ?_Uvt~`8‹NzG?yy3#s;W!{W.l]=,ЭdЌ͹Rdֹ›4cչeW[/Om[}WTQkE">֑ xeͥàDQ*c̤Ab;3CSqcw$=*nP*1z$&e:ZrcƹZ++&xEuhy;Yx!x,Z^M&U͎IJSc]a+CVhwpWH2>yJ]*W`ϋ-cw1+u⯰`QWU KV &~dKy_viw{O\dnʎq#R4Ǯ>,k/q˹>/xԂ n%P1z$u۬V8XΦ"]?!@͟xeDDdꐷbb~`gԘMѠeP{+﷞1wxx~9~~=D9I/bѲW)8+C>J_vqau97L ~ UzbI~G}łEFEY1@I 7,xmwW39_)TviU2_W= _=/b]@MpaTqF##,A,JuU{m@ _%,\ZJ_Kc~ צ4lVk-?9o~nP1z$2 (PMdj9uBPCӧe8Xb-(f"y_;<zQU$ ՎZh@՜9Z|~J|r v [Lgv. s =Ii񼿒ŗW~?gIj஗LՑԼW7AlFb?huO A3E=3+FG1" ۉu,WU~etF0 lmM'|~}1AOibřX[dv89H"h6 Lіs.\(Y,&]zƆ|Ϗ,\7FAA1.Wv<)VB#i1I^(< M} `>VOOwCCXc2@H$5+MW T%UBC>mt J戂)L'04e W]{U;;ֱPk\e~WVF;>}1AOibYOJρx+% 33*VID6 3ﴥŜ *zc.j7OՎrhp>毰<QvUuWXFB)?" /"`F|d-zMthY[b1z@URh/;(kk=j\޲jT2GNye$5wfh^cָ+S# 风 zL3z*VTlR$M~;w\VcH]*WX`Q!iC`͕U2*ĢQgK1ҳDC)<ӳ'A L"O_up(CJvmoW!Ё*# v2+5w a Uw_j2§:& 3M02X1+ؤH"Pƃ+h;s.\(ؠ<vuHMѠeP{+|G K'Jh_nc?G[Tân+_ayvR9J%Yo;os,TkDtE"=`tE@BJvKN&&"lbB9`w+D-,a@onDbֱPk\e~WV#]]!qj4>꘠'41Ȭ'cN< *Lt?rvhޙsZEbJ2tc`_p8b8\*䯜~`t\v7ʚwJ;ZwFZë 5uһ7l.~"7xxzjB>:,J[kn( 5\8AR4J`U<,Kc`h ۬^Y'n# Spb_V9'xx)ԕUIգ$y͟Ϫ_Q;yuڼ LpWYBq]WFgceD ,룎 zL3z2V08jSx8C?"٤N[Z̹p{Jud$>ՎZh Wqj;SOovC(EO1{пSL=dth7R7wQeםkۨSwKK !)>߃޾]\׎/k" #åBO>xy=#N9gٺyìm7!?V]~\ïUx鍉 ۯpP nܙ_suUe_]_a`(_iO^aJ+i81.W 9>_\rx։ n]Jm h_¦OFgmמWȇC"sn- [m5eoioaohf+7MGK;u7ueod=x֖;d[C8[; ^[Vm̠+1SÃ,-|=1z}&XZL2{oJ^jz&Zl0$ ?dD >.r;j4#黯؉A`X˷}E'zteuM͍UEm(tjAeCMGdRKuV²iCE_ X~$Ĝ'prݒ7|nϑ׶щ)qEuM--C{_i_JJZKj%gC_OVe( $h`HHWR0kX[4eArK-Ng,k% Yf:|E"D0bJ.#䂆jأ4 jOprGbüko-{.QGVv?'B=MJ;0ߥmMU9mŧo% aSZт3 ;(  $hzt<X^jj AQ]5JJ9ƥ3G zEt'D`ĔJ\F[! ՎZhOp8τA@sd }7/CWvE)8)~_`Y;di>gdNϷ2ϰ<:~؝+co{c+ދsuRϿj)e5(nV`+̭kW*OlM ^涣x&iG!o\ C|g`JSEW+"Ï=jimkm))8û/x:ڜݠi!ijk_K///~rA6ն,%G%C@~8W@k̢ ՅYʬ) *(Xc\ hApj>>74{$5(q0K ! `NB8]Zʬ)[95z#+5aanf^ `3GUY;,j-.47+"~OJPINj@}J`TY ]"gj84 jOpL$녋?fڜwZEwݭ}1p/z,w֬+e["fp)4o|I a;?Ȭl9am["~%v#KW,$#N e_%%.S}_mo`_w^fv>c?%wffy!֦!#^zgZg}&>*\%Y8ʭ:UDz (M]ƅjdU[lYJa$B ;F`9Xozx 025st%+u@8`wڻ]Vf% DRfDAAϑ\"859xȬ Y0ѡE2 * ,wq!ce.zټX0#w:L 2tI]3tc`_p8b8\*䯼n@Vٰ3oLzM։vnWvo[Ln-]?:ղE7`|YzzWNhOK"ĉȣeWҘdFr5+ރ7+_5,^{]y.mqXXz.0ՔM?i;Z|w1JT_~?ƣƶ֊7],~:^E]Žq YqRFaAzO`:iM+ E$}RroQoI]RS~ҞUN+.Ȁ꿻sw-hhkok;ߠE'`=[)RAD@^D$4!+LM &x0Xg9@kX[ 'CXW1ҨldjT!Fpjnli}xY>`}W%)zX%oi?0̃z_?64V\>QbO׵ 3]ֶ3}B[-~t;uA=iՙe% W[[܇.lXk8oZȿϪu~u4iJz/dT˃=a }4{I$VvQ;5$=x{pl(=QQz*2-_1k{-(Vf%l< _cdQN*Apj.O}͖;>.Q{joNvpgHw7330^cӭ5w|$xؔuu \4)"Awm5)SǓM$^ޞ'=hUu}%5Ֆ=M=c N#>ޱY*tMliBbҖSZ wwz| j6HŻWGo{/g*Kc`hu۬VNmiI s $y~PG+ @kX[88 95z#+-g}QQƃ`0D`mUCf僘c==qL eT O+YXDq Ύ2Vsλf0-ȴV%]k9jȭjP9§ppT_=xRP,vrkJ9FVz^#]@m7B80S#ڪa6G eT 'Z{d XrC<<0-ȴV>OeC ,*䯺_:bm+n罓>ՐNȀoFW zW$ E$=쏇rV˃_J&'Ui@B{`mbbR+=) @WLR~,!H<6,OB&+vL!_qzK.hXPC*5&i4h R!p/Bx}o|J3Mzq3X<ҒO_צ _@{UTwCF= 1U~jv!]/2P!k]p4[mUIKC>'a/RA ?n+X AӃ5V !(5 YISTP^)ǸЂx(8;AȂ▙_H2=Rc+a10T i81.WO *0U<Qvy*)9AVl3\{j)7'z䜇5Һgsj; XtVaTZSRx"|G 8夹}^+yuuyWmB\!~&,XOD£C,`QO`]ė16A,Ove_''a[[k2VO fej'|긌{e.^2h}P~>fFvl,E/8C^$610q @Fh I5J]@[`y.MeZ`eTCX`vWĎ࠴2 >Ν8Z׋5R }k"\а\{ dP{+1.WO^ Jh+,OG‚ m ;( ?쿐W@Ճ RSSz˴z J¥Aie}`;qְ\9R }k"I/sc`_p8b8\8b8bX(Wyr0 ,9(9 ?w+X[h5MeZ`eTCX`vWĎ࠴2 >Ν8kXXc`YsKX >ʵZWD.hX`v B{+,XtQOxay _0q< Ga0,̧8 rCCHR`ؗ@B@ ǝe[Պ*0[ӂ- h RKY XqDAACj 8f W̙#5wLv|ڇ#WW W=ҝPeo|0W3a5C% G +Or1A,OGi_aE{0J!?7їYadodZK@W$뀮 p P\LZQ&X"`CZAjr3͢9waz|̂ 3Gd k>++ğ/}rv"}ghh\ZB]G׳gjP9GoppߤTNWX(ɲb:+,XhDC)#,"ғllFMt`ϏWEWN,-..%8zj(x{0N#Tu=,cE $z-$W -SVT 8_ChA\zS |͂H+2\1g@1}V*V?_LutK?P4+=tEE'*ɠW8b8\_9nSc<3B< 7|~+lVDWN(-~+,Xh/RgÀ2-𶴄˂9l++9bڗ1#ff̥(%;cct=]*WxWwWN?v5nՔ7+?☾? _}b^CuyMZbY; |;8h.ӈSxx5Nzƣߞ %kuu|r#xҠj{?=':WXv_a ,X[Bia{࿝\׮=ZQ:n{-K.}Ȍ9>[)_]lڼu+g B~kiջ&$S?~;j _a ˓Uϝ,XWButut ZN AAoXoYA)0P;<]#8(ms1֘+@1R*VOrUD6,0W;j=>ޅ#K']MUUܭR䗰)ꓑv$?J/_?֊zvJso5ؑd긟~BN=TI.C2ˈoMFEbZPLЬ1oY3dgΈkj<#\XςVVh }  ;ky&[繉ZM~o"-_]8b8\_dz*U70s m00+766wJ| -w0ߥmMU9mŧo%}NV774Iq挸9k;΅uPY -a5ag5d+_ѾS#I2 Hq O27gŎҫW]1TC"ϿfƵ:~!3Sj'aKg8U֮0EX7b 1~w{O\dn]SEe2أֶƚ?Ө ^ҷf\ԥ>~zs{ux)Lw$K^ovLՃf`ukkRD{1-j[&Ph֘\N23g55Yߑu.̂VVh }  ;ky&[I]1_a+e:$f+2K< Gf>ԏVy1~FG+oqtU sn+]F-?cx[X%_WS)z,|J4wPQW5BuzܪΑ?]$_mih[l/v elA,ZY\s_DMf; BCv=2\;~Ӏ{`}nhIjP`ؗ@B@ ǝAe>ZC2[ӂ- L4ԕ>I+AAk7,2Љ֫v 9W@;΅i f}WWh#Ü 8. cDm@Ɗ4Y'HޒygƇUqŅ|0W3aMѠeP{+| G +t9xgjߺz.{یIN4L X-xf =x~YܠY4ƼV~ 쿪*_x\e㝯;SVqf^a4+_1+rneօ*+MuRjo>v) :vffy!֦!#^zgOVV{c#M,}_Ui7 ۘY>_\/PMwwD?G&Z珕!+s#4SWq="# 10z``1 02st%+u@ #-PvIjx^ fo` 2::L4ԕ>I& 4 0zG=Z)Qe8`#}}}?v B{+| G +]5fkݡ˷)WO U]~B 9"ZNdrSv ^ٽo3A*E[nK׏fqV#P _5,^{MWʶ31_}8z֓W;If$W㯇G$uLpa4}kڅV [+vx{u2No_<5dŹJV =}s5%w'UKWF'vIMK{VE8Xre_:TCֺ=jR%=/SS.`9@# 2 Z uh{{=k{{ٗ2H]3i0ܩQ_9:RSF{1F@Wt`,hqygP*V"=@+XqMuΌLtiC ,_I(8^wZI{-neϫG&7GkƤ4)ZWa{/2ߤOxңN6(v%Zg-}ogZ=x=|P@??>*k-9||)u 2NMy߆LX57b&*J3T74>,IuWGEŏ W[[܇.l=k8ݹZȿϪu~]cyT[Uk~oTwO-<3n\/PL/b9Ϋ/^Pl_gWj'i{d\`8^ ZLeꖉ98 ut o8sthb:F* "=`F 8.JJԹ݉*XqMuΌlm?sD Zǻpp.ăӭ3xH%h-iSU:]}QVff'n;>)DCU[a9cWw7330^cV->>_=yjk-{zx_4N3H]3d/uDv# t nⱟsD#\`6g 0gA+?oX1X&[tvaUF<% .-&C ,_u:e %.s读bm=:{BW>ՐNȀo:dֻB'^.K*Y߾wϤro/;=b<lf*&&ғ2r$dH7 ̉J+.)W\\O"oݎ)Wa FWj5!LD ZǻppVUN@x}o#dpؤ7ىNjM]4%+Sk f21ƯzbÅ ,B^. [M;-RZ{ҡbAU ti=F4,@rn@RD{1-j[&Ph֘\N23g55Yߑu.̂VVh }  ;ky&[I]1_]8b8\_y+cX(J_=q+z#-l3++gٹ,-$l'RoO9ku7v46|%pJ 3Dz%I+q\@ٗ]{aCĝ]Zz\ܚ!>V,XD!\:-` |~ @|byj+hɣ"UWPZk2VO fej'|긌Le.^2h~>fFvl#^.Khʋ?{qsR^PR{v=2F_moMFET=LhW >Ӭ"]g4qYf>&N% uQWP6DOfDdZceҹDƊhꈕv%BDgJsF xYZqi4h Rw1>?S=,!P 10zr/5 @##x;I ]"^ o$H;dvE[@g @Zfͻ0 HT.pqaZc>O` tt8&E0̰ R:]\h  !"kdyח;׊BW0jL>}}?v B{+|G K+M2XUPtDWǏ=h(%=!::dԔ EO$`9XAhW h{{hY6.co/3 %VύF a66LkC牀`,]c ) B ``Y3-\+fJ*".mc`_aE+ 8?XseasgY {ןZz _zP*QQv=2en.bƹZH  +J3cA#CpuA-Bss>:}Fx a]c ) B Q_5ryדkEQЬQh\T&h2=>ޅ#å62"ЊWgFGy\/V،֞DH H ` KH(=2_XwDoKK\`A::.ffE{e@\8  jgK[&/[ 0[AT. fZc>O$N&b'2"4SƜSAJgIP-VpDYލ9;2\+ ])2}vb9r+mc`_]8b8\_9(5nՔ7+?☾?u)tx_dQ݊]wB$9vJɩqrvvFZë 5uһ7l. ϒzjۢ\js}0dBWwssq> T>sH1毰t҂@~xEFo4rK7]{xƌG^d0 ,]:Q"HV$;0h+(}+>&xz]hz)v#rB80LkC牀"QYwǼnxh§^ uʿv\~w^Cqp5͍P' ʶ;4p^Q*כ{óLAcuGKwHR(= $$P=xk,8G튶rgURz&.ˬqUr "]ƕ/Eõ Oy̥BKWj Rz/Xt"sn- W{)kEW#Iu/QB}[/aSv'#J`W%Y8ʭ:UDT(;=cwA#X{wȊe- Olejd30zoYb[=k+66t uä^ z Gg:272w? ~(;'7XXq⊭Q.}9p22>1qA2"5ziW xr~m{nԔ߽gU5#~ۉ$[ZvɔH:+rNaY"ҏ,P&S\1]-֔ܽPخf'i<7ZPPSz/;Ѽ!vx{u2No_<5dŹV+VErQTYXU{y)n//jUu*'Gh%U{u@w[sc}CKGab۠a[ţi woM/11' 鞱=8JB_vNfU2zHWR@Jj-Hq2.8: 膂| pvg&'ԬT0(zZ4x`ڟ9o"-_]8b8\_]W*Yg{Ē7k[uMy_}+g_.$F^ha0ߥmMU9mŧo%u_U%VJu`s>cxV]X?+z톶[۞BU+kRZgQj-A7޵:UͥhM{ ԗ֊E}V]S%@efz*QNITyEW4cZZZkJ 2N N6g7hhd{JZ~45;z%uu9G9^<`czWdAt_x%+X&AS5 `a)*S}(-Z`T9@#e\ptfA 'N@V7(ta5OeEtӢӝ`10T .1.u<U6_pk]CI=+ R\f.g {/T/#/H'N{;Y;Oy,3=NՐҖ.n7J?lJݬWl=[*/+tM)]~dKU_)5PW;3Wu5"A6AU<E ?Z5nUbÜ/}k(c6V6"3jr@[W*%G%CA~8KH,X"oJ$;RK})w&&_/Z@S p3D33«uฝ(C `= otfA p&/piRXGB![*VL JtYڲu+ХNNg9XՎZh uė\xt_Z}μzUVd}]+B}y1~F>\q]U};Roȝu+_QlDB`Ub`zٮ߬[MշnU$*mj֖e<ȭ>"~N[592koIS|Ӈh+>3%x,J(τKɂWG_mo`_w^fv>c?%wf=#SH#3gL)m2y&h{ #0r!?8P3H^,WoڑՆ0̽Xo84iG*vJT람0Rfm$-Cx.}}S!&׸DɎf&&A`v BWfdݐ /~sT{&b5u llX-El ]+yǫS3 īXxKVU6sNRyx'iRl<p;.{ƕ->oe /*aAmKrzؖ7|S;XVž-MQr1Q g,V\tm‘}M6wE=T;j=KJ79eNucskG/M!2\Rz7aetd?Kccs;þ9Js-ݺys#W_,ڱ][ؙۺFNt>/*q 5WrPF$mb۾Eі}pS 'L6WFG[0 @]'yL)mrL6En3W ګqypկƎM+ )_~+֯ǎw"&ƣ_]1W}ЯGjAٹZp nflHA~qNJ^ 2OHc b{,L6g)rn6yW̒۵Iw ocrRU IYHlRyT+wFl-b~%JU* ]6 =XC_]:%K+Q P?ӗg6l̴#2H^"|$.40q! ,8{ THʂDbJ[]g _3j=UIT `IӪ~Wu-VVNӤ2x+ "K[H¹e y# # l0$/Deܮ޳dr; 垥 6ؤV8WZ"/;P3-J&NBU_2ƣ_]1D "(ԯ}J\W瀋C zW&Uӡv6Cx>0{/tcq[y7Y3 dɯٳTUp:YFcz S,M$6)L YOGzRDlF*|L"#֟<8 $V88$VsX"MlSɺuu@`WW>擜J'ӗgad7fih`$/͢<0X G6#7\`gdJeLH%CU g*ʈ r܀6ŦHlR~ѯ6ԯz;9YG,gh4T{˦]ꉎ !kSl:&W1M赳|J8tjԧj"_D0: 'EHSɺTU2v;Xl<UFz Nj+N_Y813**GeXMߴ -s43S3 s7/ VV[dɋRDeBjY ffYmaga wfO Y”qAT[U ,ٝ : */|25ѯ_O~XY;N`ѯ "*',q7YT=m⼜+{9á7ghd/oaeh.M_0P*W Y^Y@` yQ |$.R]#&.gmI:vLQygX%LILU%ˑK*˒ neP}K~%ہe}Я@ (%+J)gUW,׹ 0)?uvӦ*$~`9:~Uql$/wj_5lg3J?E}}Û5TAd K~Bl#ՙKu l1eh4Sb};vƍUz:=k1!s* WLU%v/} |/a\ MÏ'pt+!c\gg:H1K؇f#B]~@ WK/ʹǏ3np׀F}"+Oo7k3kW>x:]|g6Έڴ'􍟮?smm̭\t徛%vvyۼ-l&M;_qH J.D斑Dtfn h 3H^E!.5pWG98!}Rho΄8Xb;TBl#ՙc,ҷBzz*#66&Su#A3n4dnjj33F|J̸e*YBBpdpd |/a\ MÏUgKK*VTe^N=^H1tr³5[u=AANӤ2(lÄ*TOlUoyMx=6Eee%eU\5NYy~q0Hn;Ln=pΖ r.?xWe9;^vr]J8Cy.hxgƕGywM߮bѦJ.0,~W 99@` yZ*H@롏z[A,lIU-6RYv`,I{It#A3n4i[9ʀ.Sb-SnUragF ~/a\ v9ұ-KGc"Q ocJ@`+ PL:yl[v6S3 Hif/{/~&=|>]O_oRFB =JzU5}[]wDR#0r@"_5mׯTxrFCU-6RYva,UbvMΐ.Sb-SnUrptd#2@Td0XQ%;LCc"Q ү .AE@EwCu^uR(ɿ{|<̯yM߿Wv i;qX#H r,{}}Ut~p&{WC*^Ǝ2kpFadTTR]{ yX+i[6maT?|Mӈ%CU-6RY'"lD__ebv-F0T`T ݘFQ-SnUr>v,Q_¸nTtc&ܓc"QfޖlWRΙD:M*_@ |.%clk}-.y v>C>~ ~O9B7=8VOoֽURDfa~>X%֮L#U&{!(Q6h~Xy~'i3C^:cƎanMtg&=YOt!:W//ӈ dɯr[Hm:sy }ӻw)Sb};vƍǙ1jcȜp jEVկ$ i?_~%mWb̠B֯-D@ W@`}bzƾW@_w/==tp24@c{ 56L1] UfLkO}jRZݯk{@`c֯Ok}z 3*S-,ѺŠ7%>TڮtQps0q2**ѮAfxAH+\&FZ0qaVYmaga wfO Y”qAT[U ,ٝ : */|25ѯ_O~HIe+ rj=ɩg3?ِ|A/-?Y5%$tΔ^ږA~8"Wl~ƟSVW׳kEbiCB۸XY 2-63CJ&billna7qX|m‘}M6wTc37202u icAzҁ@<>V>j^%pIw>&vv@m?4{+zZjJfՂTeַBwx]͘{}'Wd)s/eoo@nnگuȡݹo=:mAȽ*q㸶~C:Q҆v+Zxʑu_nmشRmGpˌ_7&M!tFxR-MA *RԼy&PVV[  )y|$.rYmf='-P=q[Rfeu[p U(q T'2(:A')*"++x'iR@r&my_RWsV&ߡCo%ʝGxwaGS|L`Ы?'gT~X_PjZډCq[OU 8Sk\Fr {y(>1#~>o &IL'jg2ǾA1 IMV9}8v^}̬{n˷HIMI۹?㩾ח{M۔Øqt +LV`uɕ#3S7O :cv;?XΙ6.J;/,?["P7 A^^Y@`c y{~˄~jָ߳-g)-8VŽB8LP>*ؓ_V't=0%@SD@`kzA=tl̀vpzpI;zX-hXfwx}[R US鿿1OCVsOO˿%HNWUWq/)x5xҟ[sv{B-'~Hזػ,}čiB׃Ew A{TfAwT]o}G[ |:iGʱXG.:v}h?,m.S8@+xl $/xϿVPd;!n?W:ex7Y3 'C),F#1HAYY+L ˔FkG"iHZ~U?Jf 82:;#ßN~[5ꂶ5ٙi+-4w-\b3ɉ]gy.AkouS:v_WE 9UD1|)ھm>Y7v֯2MSIv͉#ڪWKa\SW]ř*oݶ[벎[52zK܆qz-Ke.z]=_W3tR?t~}aYʛХM c秄-ܝ Œoص嶕 XΏûL+~_l @RK(ą5(}+TZτO~;i!q;p ϥ2bo6)dWw %%©#==!tbꨁ$V$V--ac%%쌌pr܀$󍸤׬fn j9;N W@` ylL߶=!_\*얰~Ps/ׯN%nա ~owxzre=*(_YJYٺL z~>=:\{AQRjpKzyCڴ ruP)ޮGb^ |znt_ؤ;weYaY!^ߐrк?^B& A ~h$pC9@`c yaHO<* T^[䷓|d TOrʴz:>eg'm2+KғwIʙUtp_UIXdӉy/bcn|JvKP3n-ӎHbj1XP.Ak2|qxj;XQ#ZY:2(xXz#WO}rv=lo&MEfwqz= {w9;Lٚ} v7Y7cK( WF d4bD.H^dMUBUo'x'#[zS];.qrI%;$Ԇtp_UI!id D?'2(:j ?VO -A͈WWzz!Hbj1XWnk_5gmm8`Sץo&|W{'kWz=IJ~uDǚe8"0u3i?~?vn#'04۰m{,OnL-`'"f.cI%rK#;R@CnL()U(qbj`DF]%2[9{z wشrt7u nѲOd:{٤A4^.ή-CO3YWo:hqlU1xbUB~6 o:|q=r7ڏ^q4e2.fTPk4Mf.?#yߪ)zvr=ZnzEn){zh&A4bx_E3faa q{; 5i)Ԥ2.DGuwv,va;p j5_(\;6)dWw 89ll;!~9G'Wa#M_VG $*ՖqŴ?o;'%@nkE߾ᅥہe}Я: Я_կW|t!.=U_INu_ ƭ+,KկV\vc@ W@(?xEGAhH$/x#ѯp; We˳ڷָ-g)-8VŽB8Ly}~U~[KP”XNO䇐 މtTAH;;W nϛYOO9~6>l: V?ؤYs~_/WEF:V*5IIw>&;ϖٳ}tU>|bqYJ6,JBZָ*{JsGu8jdBԻ1~{ =@]Wui=zՑs9޾x _gLjBe.=V"Խ燊‹{WzgxPO1y3"9FfCՖ@*sD[ZIB`և!.Gal=+؇HM'X7(6JIi 8XdʊJX($x`*g$-~EדBA`}ѯrtwuMu_CRxs\\=ml]_P+Wmݷ+ʋrda ߜ}+-a燊+0?d˾_T;E! #  r+DRT#)G21QT̞m%褴nR,PawV:jzk{?6[:,P \PMaU[Ϫs{({äWԙ׼Zr. \ ĸһj5ѯEFXW:ex7Y3 tRe`n#\\gge[%dԫtWLT,pW%vOqdpY%B!a2^^X c^d13Ἃ*SvKxHtu@`-W]7ot~yׯ8PrRֽ2tݵҪؿWVuL>Q\#˫;z3-+5ysEʬ?~%<- 7ί"xU8#{[wk&j7~99GʥM_JJEf޻ګJ9`WUm~{>IJ?P1 yyq`A͆5~~j:A !}*jc3!!x*-BB\*#do>,gd$UHff&2gh1"A$8ļb.a ;"#==L| r^,>j<-cn|JIFī32R2yǫ UL˨U^D:M*I ?pҞ~#,+YKߊ kѶoKwl_6q`{fF΁CUdcof]&]/?us! ;`YYKO&|ٽ?L|Xno^=85Cy9Z4UݡON޽K)vuh599 ZtvA;;3>ʻslv],oƟrܞr"1r@ yQ!U ffxU*U/{-[ZATmigt.}Ύ߇2ŸEвjҶrf]Bb^nbk7(#h2?VdK:(6xuʔ#63v;X_@XzבV_,~ 9QiYi'0qח[/-(.ʽߏB-*"~GK9IܾdtGE'+?J} ]E.UE_ݴψ-)jOWHz%Wh~j^ŽajC{Ywݿ[~&<О*w`:wSXVVkh,Uѹ!g?aV^Uôv \|\ ~&qSv}K>~K" ڕW'߽{ЀI1V@NWMNN34*-\ɉ߇2ŸEвjdjCjo/8ļb.a vAld LCX|x [~dK:VR :PeΑ~Ev vY+F!~pezjWUNi11 cӏDL?vvhoɓ,>}P|4C2gN6ſŏ?82-ys^~׮m:טwʅRP37аϧ1!| ߃_:M_[v i;qNُ&~|!jWZr0vՃn-[;{ŅeZ6g[e#A  QQI xuTˬ_M hs~n[ DEt27xiDH ܖc2s#}}\SPFZuT-Fh!w^L;0TH&j4SH+Mlp{"1500w67wOBbVl+vXBJ2%^a^`p2eg?^Lw"&z_1'mN_.|&Ư⭕D䣢|t?˪O(`==ǦjUk_ .K-nfy)?=0~Ou~?اwo[ʺY1lrniW_=Ljם?  <(uli~Xy~'i3C}6֤IPȬ'˫)S@靖*gp-jwot7 7(6JIR8< Wm1dN]Au[5Ҏ#M828VljaX cq);'7_(Qbʔ&a<3oec @`-^WN_ϰ' J+~} Ud?WG8qHE X>j…<?u䗔ODz>g՚_I3<:q@¿:$woEAֶ=m5V/.vQWu > (W|ه?`˟bү$D_I Pu_[Uu]Bb[[YOލؘ+l?bIҮyI_1hXHc>{ʮlY^T|ề# dae?X co*YoSǶ?[$gt\z>ůUAZM^{xl˶s3 ~7u7_Bߠi5,vI?^X~o薝V\w71 * rL%q 9ջ qyV(?[f 6R Ve tR7e)(ٰ;0.UMX($x`*g$-Zz7'?$@%_1}Uw'%Vt%jQ*`w n' \^;r]lCWZ+{}{^Ƿrz+Ž歙WX쳻ӯՒ~|_2q́Sr s:fbKCO~O&f+*}&P%W "tvnQQ^ΕS%Gsb7ŝ$Fýbk~ƯC=[[3{;ʋ@*-Ղ[';YOOB9Ԯ~\u kήܝ̈MȺ[T^^Z ̆N5ү\;;y+787;+upwdAM'pY qky`{rdK*p]m{/),wlc\+ 2jWb~]eNʥMiyUn8/2:WaߜrS] G 77iշ.Sŗ֎-0rʏk\=5wX7W+37)Q_n _ͫ$n!GRhҝ!.d\ dG;YΈM*8GqWĬDj2~S,P &]p IwVIQUS|Ǐ|+;iZ:`jW-{{`W{+sc#s{OZuwעW2e-<8v|Y^vt y'pźfG/M!2'ǒGWۿ}KG Ӧ^â<ܞ>nAW`u#SWheEf{WvK+[ȑ0h33Ln7'{Z$;YZ wFlR.8:%f%:{ZO]7e٧-mY:iL$xzw'?[HIeWE?;OW@}DFX'dK~e2č(!n2npk&M0#u C2#{-SdG;xx4{ͶSHXPB3bd«U'̩LR)Kc;Hga-v_,NM+|o//a9:SKk8"?@`-+@P-q'.zPTRxʱ-sz>nЯ :!yyWnc?t(ZoT_շDHJUIk^A)GBn";̨*Cd8шYPB3ez h:[OA$ܥZ$"#`R`٩Qbc71+ʈ4$![q涔@`+@P|w"횙7w r ~U}?H!; #[WGfT_ CUe)#^QG&p;&)GBn";l ̋am-fA Nʖ+gV|Jv vb-3ifA|(%+~ ?VƊ2"@wkk$!%.T*Cj9;N W@4DbuB"_鑂~e YA[$H-SdGQM;Tѯ",(!IٲI[Q 4]XDpd,`p:djjX-X+ʈ=rX3v;X WF@`h_M;"hCX S}G9R3W krOF)GBn";94i2B&x+QQblY:"WiW&A(n1"AhܥZ$"#â2f 87SSbo oMXQF+IDCp9%WE @`+_5T '` t[l܎#m!ǟFS{j 5 CgG xfH{dOe(~c~w튧|g&%ea «Uhqh(srAnSpƶ vk^/Ȳ]-B$b[vjjX-X& ÍeDL:OW'}v ZV>^Lw"&AЯ~h$(Q j%q 9 qPLn7'{Z$;YZ wFlR.8:%f%:WkEܔ#,fJeJU0[HH⍊wJEȕY7~Jx[@+o<_E?qFT֦M,>otzTsmm̭\t徛%vvyۼ-l&M;_qH J.DE姿*R?y쎺AvF6XI^wuEXB͆3>3W T q Kj,<oTF NG P#8 ?58I”D #NX͊AaY?o:9""QzjDHemYL!IsZ}Mv v _\Єڳ.k/~PTVVRxZ֙[~_qWܿNVJXlI>(/R7|Uuom''ޥS:(KEg\3J;W&o v1,Қv[sʣ.^4ޮ'OjDb4 h0ki2H^T*TIIT-Ơ-[br ,vE=Ŵ#ɝ* l,}bc#aJvjul Y8H8,'D,V8S'2,r>"9#dDžHIe+/D*:"ĵ2auciUôvxVK8B]O_oRFB =Jk_jnhheehؼŰ3#0rzHׯzj_ NN [`ɶS-*P{rʂf[( &AO`HB%LNTa1a6+ e6  QzjD]W*DV'sGȦү.A/^RfKJJj|rʲڼR //o#GAC@ү*J^?#f E'5My-v ✐8TplB력UCU>DV*:v_~W=_P^UzlW_U"%'?.gQl&[P8$/ڷ~巙&2T-, R3dt27曞-d۩c#}}1³'!騲Yʂ:+P7GGL ݘƉ)ىA",* Y8H8,'q?+(+[,FD?{"r43K4P#:#>B>Jk@`+tɒ%FJMM7nܨ䅅o񆕕=6[o9s͎9R__? `۷===njO?r9j9JXd2hb۾EBnM߿Wq{[W!?~?اo[ʺY1l>UڕWW >tm}נe5Xe cǦ74NRdK#m?AWfP:cƎa܎&=.DGuw< w ùl;"X<ݻBge\#AAʂqWezף[&IZbneX͊AaY?7'MbcEbw ( Ntg NiN#$Dƾo4(Vp-ǎw"&AЯu{СG]j>{gel^QQ9r|\vŋq˃_~}֭/>{gCBB G#Я>J$zt% C'tZyINmszj>LxP]CzUv^aO~V%B0OCC1U-Wc~Pt+J"8/^>[J" +x❬RIv c֭99su%KfϞV/_ůUAW'hǶl;7P@oDnߴPiۏN8}"WŃ 柅[T@`=$B+3UHNջ qyVl;-Qc)e J,M'aJvjuP%K* S%%RNEQ~%ہ"WFC.]޽{ԩnvŊ_})߹s  ߾<Wo/InݪÆ [|9)_~}ԨQzzzZ t EճgO>ɓGѣĉ!G#ЯjCbĪ5.!8u-0کk&L:D*UȹM̺WTp/L⡬|ɒ+k{_w:;(/ʩ{Nƕn;uaqYI{uxrqi>/G;w.m;eP,ºD#!׀3B\- Ow2\ \AڷoҲՂݻW2U^^]g9`5$7nܰaTQ .888=3fLo߾N:۷{{{wܹcǎIII25uԯi&5kvmѢv+feNʥMiyU.+2:WaߜrS] G 77iշ.Sŗ֎-0rʏk\+]c+ܭڸ:okVAlzy(CWФ;C\~[_{)6V`7ف R5/)tߟ(Ay.ZnKG6YKy{oe=w;X+j0A9LrQn˒%KVcbbëk"$$$+++55ͭ-5x:ȑ#.6%E^ºu^{jٻwo˖-nV88,#QW @}RԼy&X$/x+#ѯpKYmf=+эuE@)m:_{TNQ}ļbY-%#A,ץ<ܽJ+.P:yzr9j9 QNP /,ݢ:3P"oE|$.sv0dY[crO=Jtc]&;PbvAJp:wS:nF]fܖl%_s*ѯHԓ?\\HIe+F( P?1gΜ|0~ٹs%!6mZ /򮮮k֬eXRRmΚ5Y :r䈭3gj+cG!G &G׮]9sfoSrDP ! ފDj:lp>0{//ȸ-Ã͚a v,!̶Fn+S4b hJ.Hi#U//Xb44^-eGz^UŽ6,l#OWlvttA; iEl$R/:ld3N'K8}xvgKnku_WIʕ+kpQϟ?rO>ٳ}lSN-‘ ѣuT ׿/GGGk4%2H^KUP&aW'-U5-- Bnm!Hn7ZL ʴ@)mĤmFz f#OIؑEWEUNXىE )7^!66TXIvvܤU+K\Qy , މtTJ9"##vLGGG&L/oݺsС/^|F?{gCBB}cƌ4h?#,.M6/Pb5jѣGWZQ:j⥗^bE;ڪ#6Þ 8۷_~Q)Y]lٲWp:EPkյ_?ܓш@`+WCQJz;9h,#Bnm!Hn7.U@)m$_=>%aGz^VaQ> F )7^ۡTXIGGvuzzxu#_Q]֡~oC;wť$/,,9AP 1k1&F1&H]&1?1{7ɮ$ĬzD/"(^x )lxuWWիrt=.9#u+@AI4eJ9hD˴z_!\:9 I;!y"Ip_ XC*9f+bSm45up:]|q )%Ŷ#F9ýNJ$aPF@|7)8,aڕ-s8VHg饫p9- O OϮAHZ @`X+xq>J_]h1cO"˗/?sjgiwOw/Ϝ9hϟ={ڴi𰤤y?~<g5Nf5jԊ+~aܹMt\4 rJsxx8WG޹sg;ZS%Yhݎ7ŚٳgnڴiǎC 9s5 )߸q#00 vޝojۀE^D ̋iiYf3䄷IIF .[`1{]᦬sS>|} XC*9f+tS of;rF%_Q1B{:`@ 1ýN$aqF@|73fde+L>,*y,G]'%|6Ax3?xtYiiIddVЈ+xq9ooo/t?|7>}?CCCy޽{_N ܹs?CRHIIٸqzmGGƽ_ȑ#p![\\޽{ٳ~+^׏6ڤӅ ݻbKˈ-Btu⟾e˖a墢"ry]&>NT^rͭW@`HHJ):[ .iH+~W̸RMR+ 䬂t^GX/a+U*6/!n*ݼTPPq=dr:uo3< ۷8p{llVe srr!{nR&ؽ/6zͫ9k,&o۶M\vmrrr{^3K6md~%Ol=o.[|ƍ]XXHUVV]a `g,oShr Ј$'ph2] ./n-rDWdv.K33tR1qSjbl 9ѻUdw;ؼ4V ntō?^Ц&L_Cmʕ+{~]ƆnwwwoJyܚtÆ #wiڦbkotM^^^NaKh67#=zaY>77џ!-m۶3ftKs_AX>iJKkAgdT❬VafvBee%Bn:񮆪#G.Z)={O:\رC?~|s0Y%K㏸0{ɓ'+MSLi[H%YhO/:ujS3Iơu̓ _,+, ,HN^GЮą4LьSb SɷQ2֫,[a(+͝? cC8ݕB7C(w-;k񑮸I[U?6/'cbbޠޓloo?cƌft?wqqٶmӧ_~^z5WfX/>s挻{^e=<}DGG;VJNN߿?#3DwvG?:b֘u3G{`o+$k_>~aHlK`>N5lVC6t͂#_2XOh?aT{{LьSb SɷQ2֫,[a(+͝? cC8ݕB7C(w-;k񑮸I[I l^12)\x_ڵkn}vW_=#;w5k֍72t:{^{$i1-e֭&{\4x~&/,_|޼y7o'[6U+9t5Օ%tޥ.ް7Fo K?V&[{_w~/f HXF5mщJ-mxv v-GeB!a+cϧhC+odWY,UQV;Ɔ.Mopƒ-Kw-;k񑮸I[I DfMf!Wŝ;tҼ7_Mjg|] V*yW]UqvubPoIՕEϕE9^^xwe; =XX< ,HN>_Z-_u_(g?dEGc aLvtԮCMçhC3eZ49=h%c~W#uҮׅ3R(Ď@"~4lGGX2POJiJ=EѻS\žB ! Hہ楱Wvco[VlDRh^M#jš^޿_a #v rr3d§ڻvM~jazS Fjk KydnAn.]ÎPŅ:l:x\vau\IɡI=Ysa旦3S$afArrhX DZh]TV| iF |<$֡/e)tD|!h%c~/r*9*:aAMtΈJ;r|clZMGj +%[-I$Vn!+Ҭe@x,Z>w#IEmNev;ؼ4b t={6h&h&hZ?UIQk[pNNWU~RΩk5ojo̾xk^u枢d6yĒMrU?$}+:!Կ3-,us#f*2KgwGܸxW^\]^6 lu_=('yU>i<(,L(lLJՆgȬ 9!J&`{{ Bl{ wIN_ROO!QF [e@1],& gDP916t\dV Xeڒws#,S R36paލ$#MfTfȬɬWvc=***@4A4AVPnݿ_./xs/Et{2/9ft3 ;}rNrSRR2rQ?)j#ӓawafArғARim_YC|}n$|WnF_ZO/VXqqMM4)ubܬk<;5WPco5o2~:stc^vU1zYMΐ=_mP>4 ˴z_mE ._WiZ- D'Зmhc|9- +!h%c~/r466Bbׅ3R(Ď@"cka#Z)JcɖiK~Jt4v%"~X)Z֙Hc6Nw#IEi\m~V1l^B̙3|#G 8ʕ+ h3X;W=:f̵3n̜i@N},$$%$$$½h>Eژ)@ˑ[ !zQ2" /b³etIu.9Zj* lۀk+RZ4Y73 dWeo_&h&h&qhFuIvƼ'ػwIxb^FvI[ܿjjQ!|Kyفqa^6<"'#Mק%vtrpM+ӸgZ.:\\ "5e=c(CF)1L_6Ʋʲt 3|Cs mق1lj-_?džDBirjw3.Kw;ؼUw۠ h͈#_2XOh?aT{{LьgJm/5UeI5ea3N(nd97=Nl96&ڜ wzOKen_[ A4A4o_sG'rB0r69$'Z4ŅR\B`P:v0w½h,{h{i$!ۅe( >Z};I A:N(nd1qdEx9bb{J T@P . '8Waa"n7:'YYA#{ M|)WG^,FhF$#=l:B:vx ϸ{ZZ" ԨTutEˇ:LYHט3VUxCviY@J6~0@k5֑S nA:N(ndkJ#<ҪqB-b%*e+YX1K)d,-u7"B\Rwbv;ؼ4V J5َ4A4A)_LI@$TZ$d'"rNPS=f=*$!ۅe(ِKhvb7 'Re 6ݑ8P|8)'RG3* ƊYL<{Ldg񍈈.P4nF_ZA4A4 U@~~0m3)iWcZAr_Y~'"^6e9=Ù6IOO:EBӲҁhlȥM7vb7 'Re ƶ,A^^|8)'RIWzc,&ǰ8ѥ+ fȬɬ !ZwA4A4ۃ&WA8" ЌHNΓ}pWIIİ0o;;j D;QС:LYHSOi4#SIwovy B eK'^IKЙ0400 ½h,{h{+:BӲҁhle^aen!L(pA:N(nd1\4I)&jPKE.N{ 8VBabs_iRǰKxGbUc9v yipƍӧEFFkbSG4A4A=h І-еme9$ЋI zB›qፄLьgJm/5UeI5ea3N(ndKh{esl?L9@('$ntf'YYAc-]vedd <8&&4A4A4@ 4"!ev+N!e+`Wg}TVVFEDDMMMDRZL73`)`ȑbŊR>yٳgA4A4AЌ ??(EFV[efQ{#䞎˄b=)/i4^E׈6%J3e/e5ґH+q]RF@MipJC-CPv3>̚ +oo9nٲ =<<Μ9C'Oj*MMFQl,яr5f8GݭCfg%i * m&gG6h$'I zR"cR{]#Зt+mtdRX:z#hHGf i Tnܥ+e`jlPД6 1H l^1oo!;&L_|q٤͛׮]MMM@k䯊v%ᚮ0?{_^{w5޻ !Aq i.rB0r@%9i"|$+\&I!U .)JH^thC_ҭ=QQKYc荠!2PsPGAAS$/ +\v yiP\\B vSh@vMÔIcev-z!>wzDI;*I1ZgHE, 1eĥžB ! HۍέIddVЈ+xU῕]8eʔ> %%e:4A4A4_ݿwaMIK߯߰䅑];x9ZZ9x zܙU]z2sS]]]&?0diWMu rs҆%Lx4^Ǯ~]g)KaaqG,t(zYEI?JW­B>s’[97;baOTY޽c{/[r♃O^yr2t^6 l o4 S1 @%9!U.lFXT懇;=IY<5 }IM<=x0d1:҂!5fF l75H?4Vzmzզe7d٥!tBOOqvxpt9 IRi6/7#*++#""֯_ #.me|@ :oRDGʈ_?*v;^ saIw9sXJ7S'^JJɫg'N)ipЮ,QԖͨYArԞ-y bb'#BRbhC_ҭb 1 xH P֘ݦǃX e@XU}T)k BvidkHeb%-⢋Tpt9K.evsOJ |54b \ S_T޼u;z'sBJ*64^o5or?W=Vkly6U~lTfڞ[FgǔeQv4}2:CրV@k| F9h$'iCfQ\S$䉊IY<5 }IM|UFBA#-BYcftq ]l{  {AҫthZXlp !C.l dbǐXIwxvxj~x \8<%:Z7͵foہ楱WfiZ&h&h&8+gv#{}ayƾ&Exa ÞW|}#Y("sZ]T7Ju񱌹}f|qaJŽO~1ցn4YSEfRyb/}A;y-Xu̘ȮpSֹS I 9kؗţЗt+mcLOʲC(ǩ|=]К|6H+COxK>wzDI;*I1`@Cb%-b/:Z/]:cqiС=C6/_5;vHM&h&h&8+'_-u®q}V$`MY#cSc@;=w*&V]=?WiiY}- @ + lFB4+Ҍ+لU+ W3JаPA篔 _e_e'YYA_|'SNe*oݺzMMG~i֬_5+T2mikn׹܏9PlhƶS_${wК(ǟSˁ@%9BHWL(֓tgOLQBj/kDn홎^KGo $ʍt R ? &1|6_tKc͈?_]=lذE&h&h&|WBivTT^tĮuAJKwuaaK;sV?6VO rɂ?o;V#E36}a0/V瑦;y:XYX9Ʀdki3Cf-[MA0̎6Pi=cHw×vK &1R2ݕd;2ZARzuJehF:ωT'Ra4d 8.%F IG$_txȬɬWC}WK.p9\k׮/X`Ν 0f 0%d{`d%9y@HWLHK!qy=&1R2ݕd;2ZARzuJehF:ωTGC%?eE3Gr#PZY#ֽ}v yi)tRΝSRRs+[h&h&h 0 KrҮEHWLHKT+&1R2ݕd;2ZARzuJehF:ωTGC%?eE3Gr#PZY#.Hw;ؼ9266?kJKKxɓ'&h&h&W A43;FDl5GJ+HN>_Z-_u(3, 79$s&pwdd#v"QJzTlGZ4-ã0 ;JP%$'C0` MuҮF+0̈ϲsbȄ ?*pi%%~~M»EC9='% vu㳵+& n7:FD'YYAcM~;`~MMMI@qIN098 \hc#ɂʢ7t*>o QJz'5.HejJEr̤)bۻ`ĎRd= u1VYfDgY91"q0s$X1V);;]UfKcM_effJ|ɦ|OMMl_7E0̎)){m 4e?@OJA}}'11(%1rJpz ;JЦǃq-%hFYyN bQ/, g3Gr)XceOJ:Aѥ+ f{RRȬɬWFO?=z4SyM77bMM@ Q>4.eZnYc:9 +;!"IO"Iy9- F A 6HJ(uLCq-v%%G2JZV`deĐ ^Xd84f䒉U_C`S qvII'H\Ҹbv;ؼ˷oƅzKl n`1c"MYN},$$%$$$"QJzlc9x`< # )1Y;Eߏ/ X=5ZeFd|uC&, , Ǚ:̑\2`@&"! &+DfMf7~~ʃ._~MM@ ETr и$SI i;|2] ./G)Jf- ):RƲj#bdeP#롒" u#_C(,RI l^+oo***srr@4A4A+0wjԺt0ͬV!1_ 4- _8YVYmmoR {:Ǻ_ףh`O .`MRQb^cp.ߤCsaWG?g88R\?WJaIh@af-v3KwI ɬ cǎ}A4A4A`#3DwvG?:bt3G{`o+Tlg]E5Z@)x²9߿=$(.XieW;Z]! M]ph*_quŤ5ţV8]8I5z'Ep1MWJaIh@af軽VenF_;v;wFGG_MMM篘4NՉAZmn#WUR>W~=8{`͝ /}L(~̋kc&ծȬ 9|k$a— ą?x@LvtԮCb_)I=}TJk"yG-)>7h'C,l2<]"\T ?Ĉ%0Ѥ Lv5c)X+i%Yt;G^%}gϞWݗNrJOO_| 0z a.1p02k/g[K+A;KOf.|*kk`f,)=`tnAvNڰ?x^O&ߥ?Z%.lNf+ؕ*xT]XSࠧz$ ДIN Xn Q @JeQK:mARzDU4@G%#їs/'Zx 7XGGEEYh83%gSu9bV[Zkk1%0Ѥ L++L[ SCώ,:6(DD|v yiJ /_޽{񗻿۷_}ՄMMQ*׶ǭ?t ֥S*kW>/ٙ}v;׼ǯ=Eu),l03%^/()<WIJWuBg;[Xr2&zG*?d8RceWݸUatʲ.1"||İXCTҞ0tiab% SSo-6.1+f{RRȬɬWv%|w={/w:;;&h&h&W5U7/fm]/QJwCŦf߫83=M~ҹNJzM 1f*r׏UsR,ʎ\Fgjq`Cj׉[ uʉ;@k| F9h$'iCS) urvBzAETz&'>*Ql , AZ2R}1ghrJt BڕȶcY=Sw"\NY%FrZ|RI{hicwbjȢ㩩l;GZ @`҈+x,?2ǎ_@4A4A`N+gvUv#{}ayƾNxa \ߜľB.}\T7Ju񱌹}f|qaJŽO~1N.t 0t@)B/7#|@\`1c"MYN},$$%$$$JIV8X<%#&Z:cO . 6gxLD(9#;eiGG{,g1sߩ1^̍ڝy~쪒yTRX6JK˂+mi_)e\g 709&&Z(e`X+rJKfZ?ՠ6 7GoT*.`^A9YA#WJذa>[PP/oܸ_MMl_/͚1u7S"fe Y»-.IL1s_ ,uszݍm ڐWFBTr ДIN>. \ E={bMRQb^cp.ߤCsaWG?g8ј&+׋Ѥ zG4d C0p3pF%+\v y +DYYŋݗ/_6{lMMz5?~ں]'.]:kݴx3~z]tXX\)(UpO9USB&y0ێglyrq/ ]z٫+5w#+`TPj]Z &;YVC(fx{O>$B/ h&h&hL͛¨.ΘDB{. O.wӽWMM}43טr;Yyzw P7@AsFF2Ӥ6q=cQ4'_h0VQHN Q ̑clȈN/%[# 񔆗ldWVvMY>f6qEĽ*U̴O"&F_ Į]u֯_G&h&h&_Z-_uq!76!!+u7##1VQH,)L7ѽڵil!˴z_!\:9 I;!"PA$ DbłX^eU(twuC::s$q ])G2JΈ)N/%[s9-M@ ðS^۲]YNy1RZ/<;{{[ <;?2;N4dI\br}v yi///.))9~E\]]srr?ٳ3~7+ҫW/\ter7t@\ _[m^%Іa._nl!SEfR}1—ą{ l3&p//ܔunBBRBBO XR bn{I-O -DFieݐIQ[¥{:`@)l@FLYv|)\ l<-1ٕc1t}RZ/3g~4x0YFCĥld(C(Hہ ?pذaf7̚ +v鿲 H"!!! ޾}LL GlVVVFK\٭[7M8Ql~ /?M׮]={v޽mll<==njïi&믿nD @ +%P>l!S):w_|ph2] ./nH ]ϱleݐ9ƆșR5Je) /mQdWVvMY>fG6qEA.Kw;ؼ4bJU~~z;wTUU>}$Ó?+W#.GFF),l=jԨ͛7ʼ[n,\l-ϟo>Λ7;X۷o.]t9|DDDӃ ~6 x~+h:.\(wi-`t*JVC(f]QF)b̟?LeߋO=ӧO;w.]xb.)777ٿSi8885eee:thzWE=ɭ=QvtdQ0CjP_9 *683V8q~9#{ٻvIJQMyU^Sq]=?eՖhifȬ 9#R_J5]uMueIa~xGkf3wA7-,+Cҏ)9jl'>ݲo+j`g@ɒ-O1ϸT ryiB+8tJ:&e; a}%R>"e+A଎8;Fh7hTcoHw;ؼ4Vmҥ_W/ ;w`ǎ>w^k _opei+eX Av)Jv RTy_K [š^޿_a #v rr3d§ڻvM~ja;`tnAvNڰ?x^O&ߥ?**.lNf+ؕ*xT]X:w}K'UnkWb%FDlmc3jodV|DӵZ: u\gkk45*R"]Q2kL,j\3 G}=rBh^hMppL(j"+Je!hL =C>zRH\g#HD 7)94凳Dxkq"C{+VC-f[#"ȬɬW]oܹsT0`޼yK/ ?~ʔ)};ۿ1bc4'G  B兯b隬AŹ$rʎ-K=篻\~f{$,{<ըO_\Ѕw*t[rN]_}Wc|fge/f\r3\0yĒMrU?$}+:!Կ3-,us#f*8{?_t3zenl@~U{TT? ag 0 @%9m_O 6YT6qqC bHd&۱+{ 1pt gc*qKn2pD锕 tЦ;ÂDP^1DjM"pJSg'2bR=0l^+e8իW;w\ZZJ _lٲ={ .Θ1c׮]w߶mqƬ;w\|w_T_UU=z3gNnnٳgg͚/ݻ+_͈zjs[}|/ ĿR|9u)Vhxⷕ}7[:K?ަAշ|)#e`^- Ҿã,~}]6+x9~JJɫg'N)G)?>72p~AVnA=X'N(6M0!((6&&fkeC |kS۲U Z}AFɡI%TsaɵⷊjjJo^ںv9^Zs_!% ~}tzlT{J0:stc^vU1zYMΐa72+~8{VYeK`|dس3M׮,QԖͨYAr :m{#=AxKeTʢ>vv;(eq%3َzJTV-<3 G}=p!20q,a)+abaBGc11냬WL/(шsX9>)?5#DV$.i\F瞔$2k2+hj+ ޸?^/;q]FlW>쇿h{ޟջGcULhX6寜ڹzw9 0l=:^͉aO+M%P;?e/uOuT˘;('iG&Y+j7Ó}KYJpGr dIN'>.[U<@\_6eʖ"$t :inIt8lG̠}1rc1Dq8q:|B()4@kѥ Q:e%{Ab" a}%RXkU> pVGZz#C{+Vb^>/~VIw;ؼ4VJY# Izxu &CW®TzxQ?Ss+oWMeZ{2WwO,Yʏgy}Քl^:"=f;5ԋ qkwzVIy;{]Qa6t 0t@ɒB/"R +|)R4p-HH$%SQ2(5_qOvs tӗ^>7Jۆ[&_v yiZQ$-|.[ k <|49U#(j3T[-zWMef͊y)QmivLb֎qO` {Șņnl[00Er7gf͉{ t}|xMXJK˂+mi!ev+ e4$2k2+hz/a _U^ȇSy* M%WBivTT^tĮuAJKwuaaK;sV?6VO rɂ?o;VDBU]t8c+uUW~llHEB@Dl|ܽw~ޕGYy7Ko?C"TT U-dւ.渓S5 ?J >`XȬG7a#[ 7H MZ !TPJ_IvƼ'ػwIxb^FvIܿjjQ!|Kyفqa^6<"'#Mק%vtrpM+ӸgZcFػu4 G0@S#9-I—"E~q%Sl-( =!Tc%?yYfR&-T/]HIkώ_ߠOne6/!+ C$WeT}}ˈΩy-ݕGl^Aʥԟ+PFv˦1vKfɉlQL—"E!qy=J[2eQJz,C44njK6, MZD~ yY)c|M:)M!^A$2k2+hр~Xbֶ`jqš>3t/=рGg={=Kͤ]j5Vjۗ_uXr/VpU_z̝eӛ =KЯfè|F9hn$xW6 9ģ34-=Jba8݋RE4>﫬_ED4JKRZ Sڔe%mƄnXjR}=:I7%ZfV;ؾ4~s᥄b/Vp`S+s Ayf6FM' :@[23H>]ܯW@:yz hZn("u iQJ1x5vI/JeӜbZe0v@c9G}|>5" E7kk;++koT<}:gҦ-+9oS4ΎbbW+)/MFFBTt~S%+VՐ!nr0DMfM__\"`AU?yЯ惞PcF#hn$d.OL${,A[b͌o&N 9EN9s ~,88(ZH(MKRi:<_C#ҋRE4>qTgDo'' e @c?ݚhB"uIm#F3b g\MI[Vrߦh,NMeb%oJit;M.z[+]@`T޾^"`*X_+ + +L_ n/ W0r J?֯8.u~o ?j}ֱɮv WU;B+MzM0 .&ЯB%Db OȒ W_IoڗnZ/Vp0j,A0=dA's^Z8mlltsϝ?DfÆ CK?GK{5) =EKx~`a[ д$$ZlXYVVbcgLly%li.#NYeU9i#JN2O V?X×2.~@d]-:'[[ɮv }iBJvv}/vssϷL[laS,` (ci#E<ps8&uj-0b}<"mGQ=T뗯Mҧ{@dr7tnȵ8~nnf|xHWP,N#''L S3G&KE4AN,fͪiknieܠ~S["Bg}F+f箮p%h23h*Jiv鷬+V5r/߿O?/RB` >廓w0w?4G+OZXn^\7ܷgʒ?)#2Udמ{r`?ݱe5 \=_T5Z3#c%^HWP,)q977L S3G&KE4AN,fͪ%'ӧKOoe? 䮖 ѯdW;ؾ4~%T)**֭Igdd$$$t:''CoU… qj|111"nmԩbVIIɌ3\\\w%f]r_0`ĉv)}}}7nh ~ׯb%srUrTwAC>+n5՗S>ןy;.5Ƒ}~uO֚ 4-ɇϧy{qex&6`]=I]`zE؜h̑ɒ-LA.O#*\~G4}䖎|S),#be{]??|&)=j+T>}{^-n PNT֤ӣSThr9;#J"]@`B___17//ɓD MJJZn˗E 7nܶm۰$ڵk:nѢEHOOwuuݿ?ɝ7Ԫu<; ߏC7ȗY!Al\KQ:Qk6 u(طKt4o;z^CQڈ{{A +VVg1ȩHbLly,d4^U ;OY)ح#?!(`YJ2/bV _6*15^ѧb>xkW+ZflD||lK!qI+wj79w W"&3үo}~pܸq`Æ cC]pX`ϛ7/--,YD|\]vx%;7H7e{7K+[Al~PA}x|IE]ccC͵^ot}Ѿ=W_>g 6),=kO1KyЅ.vu=p,՝z)Haym ?5ve4^߻lX#oi1ԟ[CϭVsmwo>+jֿJaJS0J@Ӓ|~@ [%Y!-R顡T$G&KCVFC""m}*ͲiWc&pRe{‚^^LtS1V"cn5Ʒ^^I/K4Z[fKWJ Nʲ-Zw9~zƸnݺ(-[dY:NlW^WfFTӸ|r޽_nBJ+MzM0 .V`,ۤ_*^7xcQuV//E~vu~fL;RM ,Ge~6WchK/m˸M]I*9?~ܬVWݙGyt v|lmA=33C$r д$ZX!xuhBr*X#%[a*WE #TelRl~tX4h/&]E:#+Tvu3pzt C%FbV;ؾ4~ٿ]xZ[w=..n.]K@Ō[;88HÆ OJv3g/ҜɑK?GK{5wrSS_9!prk v^S%D?}Owf pu 9㝟+Z=a~˻Я.fMݓ<\V<>Ww23O orP/zƢծ3>;T7d>2Z!#yωn<~VSߗ._ Al ,m <_?u.=]\QO4AV`7xኘbsT$G&K|A uv{V6>fLnW azle(#_( 57*>i"W}*CbEVh1]6etI/%3<4a\, PR 60׋_={V=zdggח_~IRiǰME_o-_5W[Tn_xo#]#T[҆=JJNYb]2}xr/AR~U][Zۣկn"$a[ ^sɶA!OqVC}]*_< ۈ[ziq,+mOb7KJv76Mn^81эE7)ō#u}>`30@Ӓ|qyb"ٿc *ofd|3qbOq(rΙhpcAy"-92Y1N אUSiV6S= SLBV!qL_f=r参.òr|&)=j+T>};9 Jj֤ӣSThJϏcl_v*---9916l$=k֬LL2[wvPx)!t΋@sMǿ@~u6K2O5|=6lԧwE ui7WUȶe W2W'i9a>>`p -ҁfvQ'3wK yxӇ_?Ǡ_&ѯd)+ R +5rӽЯT 8үi+ԯJ⷏'^ZFvCR 6#NUUU%%%˖-ϯ+**ڷo:ojjݻkkk w!e˖K.&JvЯOWέIՅ\mVsO"?K92wW3&C!Wr^=g՞ٽ#^~74F&f׾6ذ%'xuGFrenΪ[Ku?wb- ,m _I pu@^ܯX)ؙ#%[^"[E }~3@fUDڈ5/[˸AO] V𥧌ErWKW7B3Y24~ٿnUVVEDD8::#NAYYٳqO>)f]pa!!!8ԩb3<=sLqy%E|E_έ="RZLb[Ji8r@쒼ZCaƒկη~%UG]'v'ےVc IY˕u׊~=c~>ǂf![ʳpҍƆ?Tpb! JV-cTZ›Eօ<삫W ?_:&lD!@lR=`/cV X߿p}ylu by.|mxZx@!QζvN}GEq^jITsWz=y\=iGFSenւ'"]\#X[JɻYv`]윽O\yN丐nx=~ɪ?Amm=bS^8OFžўR7l_:."_2/(#rl1r$D$ѲUE Leeɔu;s%YI7T>1i.If^4" ;INdUMNMإcϻ$ U !/M_PJzӾ^wӺL~<S^ϭ.k5.)!x[կԯFK<*!#; T?-DD§"ŢN#&NqrdʈGٺS9J~,Qo4n$3/-@#Ұ3AvZՄHiԄ]:KK2iP~,~3!DMfAK?GK{5œbi.| Jy1O ' ޡTQ+#?#H5$~OEES&N<ɔu;s%YI7T>1i.If^4" ;INdUMNMإcϻ$ Wl_JRڿ`Xr/VyWuok5]2!dpUS֤1mC{w)=y~b,AX: b1 $t1r%:e Zw$:>݂lAҍx%b0,#>1i.*I: b15?? iؙr 5J&G+tDJc28ҹG7&7;* {Eځ +&X"/oy)*MuMvN }hzM%DŽlx;򖔰1K?~5X~e)PQdw; T?o;z^wԳF]BP=>uBVJlB"&ii0vN1|B^[dz^8-f$݈B#?!(8ނqRǤ'逐+j56xNL@A4Vk#"Hpygl^Zdtec8W{`Vɹo_Y44~~H m:U];ˏ宪#=WOJH7գ{wDxX~t`IAYE uKB[!i顡&2vN1|t菬owNt YI7b\LĻ+qLKqIb.%ˋ;5~F-HbemQpygNq|!#jm/M_Wx~XŪs.OL${,A[b͌o&NYǡi:;gΣ b EsH#ǫ{1-f$Hۉ{ B#p%5U}c\Ut@bA'#<_G8,Fag (uq|+UcKN^ZtGߘTRP. 1^cfIW;ؾ4~DNJ _ oR?e{.-_0s'{_M2_@ѯ0~%+0q╄LY+F90p0)u~)/15s'ۑzJLㅊױV]@`Я`v50ͦ,%J)p\-%W491sNpA+" _SbQy'ɔu;s%YI7T>1i.If^hߗ$'Ӫ&DJs&ұ]ZIJ+f\, P ^g)Qϕ~"hjD USgI=GG<귣z&u xOg16),=kO1KyЅ.vu=pkHG k+^8u)iVˣfMSHĿew[;݂V3@cݒj$V>)DHE !P77k;4ϕT];p۞<ܵl-FfL@8~2C Q%d gv0q@X FX.-0ѷ/\, ~}MMMSSSee/^斟oq_VXwߕ]vmǎqqqw 7}{ExXVo,jWnݪN߹t}׬ޑiGI}|RҡwԧKG$2SzŽ{d;Lz:Mz7t?Erx<h!䔑EWb/bi+۩lEvZ-IĻ2hd's"*<6Znd[2RQүpcҡ ,-Vkˬv }i*JivXbԨQܹs… wOK~<ޛ-jS]W Ue|&clIoj_ wCfd߫;zQU2;[gZe5m~^v՝𩈰GyVǔrh,+Uz?8u:QE|F9$QFt4Wu&+ ~0kk&BKHEؾRiswwt"L4ϕTb {v+pSb`|woZpdNqX<c VW J` 4cW UNx&YZ*Bi[W 1l_Pݿ]_u֍322t:СC[j…؈Xuuŧ+֦N*f̘1# %>>~׮]b֕+W^|{yyM8oѧO~dee~W R~U0[ZfFݢqc! JK yb[*?2R*>桕mď-486\'1uw*%;7= 7[|y~x~МQ3"8a!KqfGPǥ zGM89&SHCGB:-ZHi<  ]@'WSي?k!S? rOkũSek42dSzA |xtd g_: G`*`ȒtdIsD:ޤW$]& JddfToYbn^^^EEECCCiiɓ'xnݺ˗/#N.5nܸm۶acAAHֵkt:ݢEN둞~;y `p ;w4v?mnn޴iS``ﻊ'q;-wU}Z}Гۖ ~@E J 5^êxkRȘڿ컔I[avEcF#$=/ >)u{Qة'^IHstE.SEE/&]5RLpNɓmMPH}LʨUjBXtKWJ_1mXbܸqCLOO6lc:t… Ǐux޼yiiieɒ%+l޼Y8iӦK-MRBg) UG8LQ rKT;3FĎΝT L{_ݪy!=W{fx!JKi1KIBvIa XϬ|0xj*?BoVS1a)[]Zđ[Rl/ + +Я@;~TVVh"z#)Y*22rqݺuQQQb-[: hu:H^V^ǂf!ʉTn76T]㧂# )[MFwݴ؅5 7k_WyQ٪:PpzO^=/+!WVz-0}{5zf-ՃNg<'^Zf`q3. o)޽{\\/]wѱ1bX\ t +++@nnaü?]СCx ; D0wd 5vآR{pS)׻i]OnJ8u+aKOoTذQݼmY騰_6qsvn-n#~% 27k N O,ʭlu+Ͳ jg38''DžtsS> HV lkmym&W tqЅ%OYma+ѹbFL_q2%rl1r@3$瑉09Xh;0IS>-]ZF)tJ9u9Έ$ӠtPEZQ]GZW#qS3U5j۝&ԯTn0722rÆ qW!!!gϞmG_mTډhVXXH[]j|pg'æXFù5)ӿP/yPi3ϒzՆKW33a%~eciXL\O\ y%BXh;Hs0IS>-]ZF)tJ9u9Έ$ӠtPEZQ]GZW#qS3U5J+fV;4~~viiiɌqذa , Yfeff68eʔ6?pz{^rrrhˮ]DIͨ ߛ/%E$J_עm-.»+[^xj,A܇Ncwo4c? as_ mtNA8&bJҧK(eNi;.}`H+*+2u^MLlqU2x nW"&3&ԯTn0244499yÆ aaaUU-{O,[,??h߾}$󾾾wﮭ-,,ܱc-[rrr***.]o+i_yھ}U= ,Я@ix 7;]koY7fSj˲ya?@~Dj۝@"VZZZDD#>(^͞=gyzz>bօ &ON*f=33gW3믇 sssꫯ%`g JM7k+]:{ۍo>ޡqNԯs+٢(4C~:]4r_񩣕BVVxRPlviiOrEvZ-& 4W<%TL=]2חnP:(" Ee|Nj[mg@Gs&&+LZX,tft]%tNѯ]mM5{^Av i*JivAɅo|m1%#K'_Cm{t lyB= wsEucW_'KS0J;wwܟdf05r/X$IJi$2=4>-]ZF_hN/^^JsSWĻ3ն!8nP:(" Ee|zyahH}`NĔJL,a&]zW cdְVkKvsDY44~%; G̜1FӺdd$t+h؟*ڷ&o˾K陴7%WQ!S^Qԯ4VhoיHdFt4}*Zh4aи۽pJsSW$t \ԯpݠtPE4 b:H}`NĔJL,a']zW Wj۝үo 9)MD٣dp/a~%߄'J KrQԶ.oI D/PsoWg,A-jfcfH/(a.׏a rC=]\𩓍JPZP.c2Ҭ7noeI©+O89*$ynGm̍FaQKӦh8X[k쑟s!ɶo0̩RL0jce0>LdҙѩweÇW;4~%mM:S_]ۑ4Gbi,λv+^ps_RUG^{8=WޗnG}DRp>?ؘ98mZNIf&N,OL$^{,A[b͌o&NYǡi:;gΣ!}*ZhlV rĈwF{ԕҵ*ũ>YgpꑉNN"+tA1h0,C:TƍC3g#±2idtzW {6O Ev-{n̙6 DMfAvPj領5K_:ed\K _p USG\]u1#8\tKu hm,A~-/10^D8JB&G22^bӯ8>0 Dk*j+ْw_ UPv2JA DԞXwȝ-)i `Q!_&9'vLy'Ih2JYSΩqFl %ib,ҊJ*>ҺJ)-w`|8q_/T_4ځv +ؿvg> ovHgRp>?!T:A^xkZA n*Ʌo|m1%#K' VO~g& `ȱ͇#DW-q@ee)VaI+XLZiiӋRSR'~A6^NkJa7&*YBjg&Kt]5(Q4⅊ױVl_P٣Q fΘHYi]2}:jciX:2X[;cRW}\s濫@Og;Wߐĉ޸gx@wG'ĩQT,뉑 ɇ[$~O ,|t)89aUbҊ)gdԔIj`ӚR؍ >tĹڙR]W?Jcx JW;ؾ3cJsQ0Ycǹ4:\eKvu SZk, WT_YZۣЕj-,^M.[]*m,9wCQܛ 홲dOgJcf5+1--}9$kImM ,|tNϹaUbҊ)gdԔIj`W5WR؍ >tĹڙR]W?Jcx JWɹDMfM_3SXӯZc֭ YlSOpve> rl/FTZ^% 0) b1 @!u:D.uy KY hrGǓPjP,F>YilzlSiӋԨ$AȺ;r(Fg_Wd$,Z-*L龾t*ޞJ,5` ;/-2dH\j4J{ځ+ؿ+Яdzc6ƆkR|}zr/\~!}ȯ}-.0?.l̫>SR]WYz.{מb"_5~LO 7?]Zy6 {JaǭS=#),zԡY.5O^#}CzYˆ<)ݖ> aն<+ܭ[zhӈ>J-H¡^+Zqp,QI:aүƚ2迬˯%aQ~ۂϩ”!wwJ,5`u'+D&ӂEhhj79w'&•Ȣ̠ +^L4>1m{~Uխ[~y)P]zG&y2K5WchKnQ/m˸M] pW)lһ?W<Xs~YͰ0ʁ@!<| ͈:GBCI8 #)4EjTrN=:&װN."cb( mTa&tƉ8Yj#WkD&ӂEY@`N "ﻭ0FӺdd$tОU ҙod=Uͷ+n̓{u'3c|T@߸?&z_f}LƢծ3>;Tғ]eEܶ*}T?Y}4e~05jfcCG0E[}&@/8 ≆QcprF#Fk |N aqj*fF8Yj :>wFKKۅ Xx{HMΜiJddfЄ pwwҥKdds=wytȑx1͟?_yyy=3_~ecccD=*La!w%;OӺm4Y_sUE}vZ <'-ҁfv4lkۛ7^ۓ au~rHBDU ^ӯ$$`Jvԯ8=կԴcBi+0cl~ř h cFOPv2JRڿijj<~ŋ-Saaapp>G9z~.99`S:h~'խ"zgvr|Иrk,gV>< vig [Aj##9M 5s0j@!ѯ)~0*L1iEI3m2rzQjJ$O5C0viM)SE: \Hdq1FP~Ol_PJ*XbԨQi͞6lֳcƌॄ)tFKcyo+Az>?~'.ה_<{x>?ޖ?}HH/_V >7syEuu'8VNnn*ÉK7.Sj4].\iY{o7xH̋Dfkel*y 3C6kt? >2j0{_u֍322t:СCj…؈#SlqkSNJJJf̘k.1ʕ+/&Nȷ3~KMO<xߊ0_@GX# 27k N O,ʭlugͲ jg38''DžtsS> HV lkmym4>eȸ`Og;']X\nU)wuȱv2LD-_eP,ӎC,++LXe8Mqh4W@;R_^kـEڗ)Nd~25C` K*ykaP5wftKSWJKB___17//ɓD MJJZn˗E 7nܶm۰$ڵk:nѢEHOOwuuݿ?ɝ%H8= %+2G~NS"͕D;ԗZ6jz&*gEҺJt/T_tKW>?8n8>l08tЅ Ə/yh˒%KewWA/:\ai]2}:`?irW7nFJ>,A7 {NڳeǪJ6_Y E~0Fv|Z.$kI p9E N?I# ) VJ]hsGv-p%zŽEڦ '2R?p1u50^Dij79ÕȢ̠+75egg/Zܹs`ׯg֭ lٲEaUPP@[?FzzjiD%{:.Y[Qa(3gLѴ.Y> 04Wܔ=p[T_5W\=hYilZ#܋lu S}ݑ]@E[0t1ٮu[bs',XmLё֚K]Ղȟixt^dtdiqUrZoٻ fK3ԯVܰac\~xUHHٳgeѣGvvq}d,v5n%%%1w )Vg ЯίzNesyc[Ъٕb/犿7_Y A Ei Fibn|Z.$U$/hPLCb2$AZY#܋lu Sn5l"ݝӑzdf*ֵEM5):2Z8 LՂȟV8*9,DCeVɹ;1DMfM_߿`nZZZrr2c6l؂ Hz֬Y N2e٪d\\\n_zuС6HR:)k ɅI5諒Vok.jP'0+Ve,AEbF9|n~21D >ːI; DB N^dU82ݯ H֍ӑzdf*mkD/KMUi-&Dw?/DF%䭒âK~Ŭv }iBJs+++CCC7lP\\8VUUE ,[,??h߾}$󾾾wﮭ-,,ܱc-[rrr***.]o+ջO~͢)}~S(S^PmW W{%W=El`'#Cw\碭>EDCj1}!:Cb2$Aҁu7tN~.I ^% s9wLklݖ F$Ҿ\Lё֚EjZ\"mɉO8*9L\b3l_J~W"""E񊠬 ,;;;OO'|R̺pɓCBBpԩSŬgy&00!::z̙6JvnwUf]L_5__]i-B= wsJ{%Wx~Bј8mZ>- >.OL$^{,A[b͌o&N 9EN9s ~,8H-Rئxa :<_C l]iNNzY(zd  TNG횩Tu^KXıHTӻ##UĉbNN&g#q EI'K㭒%<}A!evt9ӦȢ̠ +&\ai]2}:`U#.骯T5)d[^]JϤdv^(hd,%YЯvׯ~IꗕS^ӯ$$`ʊ'_/MjsG_)$_JZn+_2j48m+F}3&RhZ,yX~e|S1a)[.g5^ޒ6f{Ic pOQ3H>~E$A+|J(iyqzq~t-<]9p`i%ځ6wlײWӋ/51W9SHd,jU֠ú-NKW;ؾ4~;|D=*Lq.Wٻi]_]ۑ4ru嫎:PpzO^=/+!WV%%Wx~`3C6kt?扪*Z- f3$UOŤQ[#btW.oso+"#4C2-_eP8= S,$h[؆6´#=Jr|8ՕܐLlG*årf ͳ#ځv+x)ag 0sԞXwȝ-)ciX:2X[;cRW}榹W/1v!36!?Yug>5.7r=1r@3$sN+Z(qi@)`4Qzd -JlCIUdaڑ N9>YJnHq&E#R9ّmW M_W_~ Qpft&HOGaJglwW+K swOc{tTMNӵgߖyk+KNݐ68duy,45|щ`Af,'d[ڶSsnnb&AGߢ6T_E)Pũ_ Iq@eTάyvd[  \, ~Pp;bK.+nvH_ N:(R-/ITZ@`{Tn : c4KFOBƲMխ?{zvխ[u_>tݺ::{ ܙTy>nNn}/ڜWJjusƄ!1n.! Snt߻3;GDI |pot9U)%;ycif瓃o8W._. ho%bfH1N(E.OTV4k=ܑ&+mGb&1JLⓅ\V EڲR8c/Bނq/ӎN(uΒV'ajZ:J}8@w8""pUκ!ek10pb/]ۅ^ȨW?KW;؎4~9G̜1FӺdd$tJX2ƆkR|}zr/\~!}ȯ}DžygJ*KeSLo?tK+A{?\)Vw{#嵕W/:4+|K}$~߲ίzYyW);XO23(4HZmKJ+ɳBPzh=3b&1JL_QH[V_`n5l"ݝiGzJ':@gIK"R#~XDκģh N:s$]tJddfT߮9);٣Х&Ӵ駥8:~l~U۪xEJ"O//E~vu~f} \UU:r rGTTT̜:S V52-IMKs̾&LBs )("ܯYݬ>z΁=s~׻z׻px{S5a/ahKY⧻ԧ{?ϬA/5ҭbߕa36\) Gæ~|QRX*7_r>_A=~~zDz-֥:;!sAAw{YGrVcgW a=KB )xMw3`[q2F̶E#2 k>g) rNia T {`mIqS{]S'aYOZ_KH[E~e.`}ϘH%|_h+Y0G<=E!!䒧Bb7ڎ_t.cdIuhCO/ĹR|⩉'$iQY"ۇQ٦^\R5;E*RGRۍǎDfMjM_ڴiԩSe>eddL02?~ժUôiӘ?sB˺u]]]KٕtLHHh4666AAAO</#"<;]<Τ4^ޖ29㋫ w:uuyc28 '].x?&E_-[P~0eTM|iut~ۑitؠX*[RsTTN"LrSh!eok5";RmgǏ"ӹ&au7iބagʏ3. SO\IsrLBް ۷o;88&xP,`|ʋ;qpKFr9;/!Y^P~ ,A2;J WF#W Ͽ[H'LrJR^p Κ5+UMhǏwttTnꫯ -ד>:7)~uMjSRO#|~Pj(AҁY^a0ǝ da *$$$11q׮]%%%ªCii+____\\I\㓖}7|ɩ~믿/eW͛7z˗/߾}GQ:~m)=8z4 SS&'նVjJЯA1ZY5hzWm@@—.ۍ jLR{H* yOfYtMf\fCÓ#L0HTEiLi2}F]B0 'R͑n+SDDfMj_ɟ`UUUvvvy񊠼<55WY[[?S|իWgΜ̙W͞=; 6::z1RNǝ6me„ ?c|cWYc7]jIY^|c_JؔC-ZmR~U}j[_>V֎^Qmr]-Vkm1ֶ>CN_ڭֵI drE.  D D—.Oˋ1I-i 0=e) A7q O02AJ޹H@/^AIsD9ѯ^Qb1 v27$={I}ׯn36p\~͟9sNmcSݝ뿝1ˏii^y8cϏoݺ'!ͨOWjuUPׯ9fsKkKCUYQǿ}g߱u UJE,Ug>33|weN}+lrSE~F>h7m~/ y?\vHϻ`Z@Ra{2RUoo22ae Oos_ g'(1Ts_1w;ؽ4~%u~; ;9,S`Ld$u~W?~VwX|Yb4a6LEPS8i&fM'+: $_JeuYF{I/`㥷G ^K֫6FS P8\E Ի_"UߩEX0dȇAAo GڎHn0 Lmqr|QĞ̲ ~%K]^ ('*Jjf'_$~|}RE8/ O/';*g߃nz_D @}B˷Gewx_O"&Fԯ_z6r&S7e'1 @^:Ѝ;fظF2R_(ЯMW:/Z/'Ftά꼽k% ww0m޼yiu9zQY:8EoKxI 3ylzr]zmW?.z@QH|4$u4 oc}~QsTT:]ѯqqaS;#UxOiOfYtC 7w: =Yzq>>R0œAzA8-},,E8/ O/gN# +F%&NeնdkQ,E?FF@`+ՓR oyt׵2Y5B%Uc桁SSq_'V777޾͆Vm˝c/DHSiKoB RF%&]x">'Jv;ؽ4~%u~;g't|UЙI~Uۖ8͘R'W"2tё;B1ΑjC_<]Ж*;$bOweϸ3kPKbߕa36\bp)Xۻ -]HvKiKoB RtOhvDQZD}"嗯~eIv33) ~54~緃~W(FPvBjm.^նՏV~ 5dyI }BaX~k`̪԰aotj.N/ǖn=\P#TǤ,6TvСsv^Y]pvMCkzsVxo6V3IԦbF!y Cko; 9/A{l#'_qJu454bYN52U^0uac X 4]v`Yc7ͪYr𬐇\nf]Q -WD D—.;?IjyOI!,KYWɌlhxrɗ R*2W߾ _CE+l5 ̪: 9d8'>BW>W-U{V>l=Uj*?uqʨ?'kk.hڿ^`]>z{sGpcHʲtKمh,>ҬIAVnY.{Oqw09oPdJkzN^sB/'m"6Qnąj5&}&|CfY(2ZqQQP¶zgwR2įNR!\.LPћyql%&p$2kR+h, o6=(u,Bԯ_F;F.h:$oo R $OB>|!,E~q̸̨N(a[;) _Jů$+%LqJ0A;DoűQDbv {iD ο~0~U5_LA@鐼ymC@+|I(tuHA &}&|CfY(2ZqQQP¶zgwR2_I Rچg!gGgŒr}dK:;e__jrYr&(5Vۆ^uHA;da;'spprH0rw,\tQk' :n7: DfMj_Dr7ٮPFdg/I0 AP~0}(MzAAXG~Ϡ66NFjV,uT_pC!q|@|..NT}8Q?Џ|ϼ /RںYG\ K/8GjR3l8%IK /kkN%YɧK]Bg;Y.#p=<" 'Jv;ؽ4~%u~ȑ#]]]_r?2/]Txxx̞=?on~Uj޼y~:ϙBLn"Nc$u#ZO)>`wiͷO~avnc-?3gg!seZ PR&W&+WڹW0k&%ez9$o';_h::ZĵbN#*Ql:#3oaFEuB9KaZхxOO JͨUx´XYXt* w6N>]Bg;Y\-%Z2idž__YRLJDfMj_1Ͽ۾ٳk׮uqq7L&MBʽjZݯZC QQ [`Z;|~Qy c񥽕J) =Qɼy!߃BVL> \>w.\e~Џ|ϼ /gpsvrڂlG1^"+θ$:ZjR3l8%I:8t* w6N>]BԨ(NI @$WR;Y\85W֒I86JOA7n+ہ WT6mJNN6L555)SKxɓ?3yo/6֜4-7v< sUKCE7cVm,Oh*$9/ZdkYۏ~v_Lͫ1@!yx׍cǒ!iꯦO_n<.-^XPPRPP`BVL> R<_EqՏ|ϼ /N o67"LKԌ:[%iy{De:da;'sKpprH0rw,\tQk'q [}|`RvnүoWŞ?k4[[[{{{uuUb7J>—̙WΟ?1..ȑ#|͛7/_>rHӧep2))B>e:Я@@m)3pYnw؁.J0p]?&E_ml\Лܹ9JOZAjI+aKRFW2}կ zť_W~W]5JxI+Zkt̝ ?̚ Qb.UTTUVV666?W!!! ;vq~p^QQQSN=x 6?~Tݾ}[ѬYYYYv̙+WXKΝ;cƌy ڵkB˗/l`OJQ αW&?ۯuCme `]Q [ை~/ !L\X;|8&}&|CfY(2ZqQQP¶zgwR2_I(WWWRv&*++BKMMM߾}&"la(qC2гtYj.?4n=5 Uw?5hB/Fz]}LJЯ@t`VAXq':<;;{͚5/_Rܹs'eܱcGTTo>fPh9{F;4h֭[L[N|Wz)^0sD2 @^:@C~UsztSWWǵ+sAo~~S郑cjkQm"6Qnąj5&_) :0(Oq+fՃRN 6}d^++;Y$Doebw8wFn7: O"&&_aXZZ?66vƍׯ_ fggWRRBޞw``kk+>VV&L㏅ ,Y"]l99(;9i4nHz_կ?pyKG w' >?(YPׯO-qk+0jԔ-^k5j-U/1&'xw˯KK:kqOfʹ ̐뎑 W77) _ ]'!L\XloIjW>Lgj ʓA܊YE S1b)72GO&z'+?ͶL nR6݈~ v/_)?]omdd](Ν;/]pz矓c ' ߏQp(VOJ~|膔zh)ٟ<Nh/:e`~r~\m/ӣZC_8-- UeE:3[6O}W56T^<+}LpK:=[\)]t#|G69!?#$o^) _ ]R&.Lgj ʓA܊YE S1b)72GO&z'+?ͶL nR6݈~ v/_)<]omzzzbb"e0aʕ+Iy…6l`v8k֬TE?~֭ǟW}rYޗ 3qE?-n%ܨR9̎"ofCLx_O"&ү߮*$$$11q׮]%%%ªCii+____\\I\㓖}7|ɩ~믿/egvEml6l؊+ .^l2|A oN]qz|DTzy=?^ub枌4^>]V[~vBe`v<уiWk 3J]e{Y[Q0&9be%Ƀ@`҈?Ī;;;˼xEP^^ݟz)ի3g U~~~sfϞFGG/X?F^.d-ݻwΝ.K`OJPi=*3'[пB:T4obY3qަoԒŝ}5]ӯ 7 ʝ$kb?8y_o6j[{!E{N߽͝!K3ۧƆMyɂҚGƯڛuM?t*NY)穢[W/ֶJhmq!iMk69'|=z~Euֺ¯_rP- e)e@}%y|v%F*Q%zz:>2BB+EbįvQ<<[1cĴ 3W\`Ơ(xaZlGe@d"^D8W|WIeכ`-U*<;D0Jv;ؽ45 \g0Ѹ!KR;fظ: kmӌ],e/+"C#C˝# C#OxYBe&'~=JYYb7_j)9Ja$[Y9E9[Y'm[f4JEƤL $o';_h::R$FJHٙڄW?btm$Ͱ7 `gWc4mU_7Kow[|sƦի>="~xcAAIAAyo_)U|B;_x=qk"ߊY%S>4M:fb"W[pn115#坉qZ3ws/{sًn4df/zeV*Ò4|}_xKcWRՓR~Pv+=^ܚjϮl?~J[ǗKAӸf=9pg7:^?y8艬JSYn_͝5DbJ.&.)$_QӯrhD̝7@;WRW_ ݈~ &_DfMj_Wu=(uk e+muβG󯎦F,ᾗܐ a384=4hJ*nͪ[7^fN]Q W_) _ ]CvpLR˿R)t`:SQTV*񥔝AlLM9|x2;Y$Doebw8wF+\v { +Я@z~u@k(~ʼnU/D-k}}I% NY7knzj]ecIA |W\Q__UVt7g*ȷTdݹwo3AkB4{gG\STwo'Dp6ɚx(VMͭ= Jfzw2`Jx{RBhP' *w'#"\'yMǷ.Ndm4bw:5\k3c=lkG~T5\`A},8IYQy)^5)6M8kۅ1uObU ״r#'joQo#m"6¯v8B vf[;ۏe"ӭ$6;JZ<ޡNRD(0qrߗntDfMj_n\g0Ѹ!KROk(WG;F.h$oo R $$ vf[;ۏe"ӭ$FδP*3T6TS>N_xKcWp~;)^0sD2 @^:`O+ "?#4Y7m:;!sGw{YGrVcg­$WV&;( U܏_O_H de"ӭ$6⴬usQg;;F+ήOJ6@)D@ iJAv/_W=9é;vL0$iY2nׯ>JЯh{d `$~fH y=@}=K5Bjj.$WՖwچNHeőEܡ1'M *|2VIZT*Keeŧda>V:b>W\,C$Wsݕlafguov9nWkn7: DfMjA<1ɬł-hJ~u+Q<4Y7CHRjdsE@U}0VEܡ1j%\\&06) KO 3|pu|I{IfF˜|>qq{XRS^K{LK !u~Wi P 4PQ,ɛ;~¢dЯlBcFHU}pq &֯ *|2IQ+ >-$ )?;S'-UfF˜|>qqY%ہ+8+Я@Fѯ>JЯh{d+f`T$&%e6R+HN¿mG"ӱct"-R9U*KBq. $OCmvљ?̚ K{A3͒t]k(A jS1j@%y Cuȑvו{'G:4y߿d7]'i4p+!I?²UC:!5C3C#)K?p$ g'G. n%gѣqZJ͓p8C+\+l$\]3Gf(|>q^3ر_Ev/_W=Dmtqq4,K@Wk %WDjf dI^E@+|IWWqxLއr7ۙmRCP>Jl?J"O:9B- WS)F R TO8U^qYہ%WÑ):0sD`Hƍd.zZO)>`]l;;4+[⏙[+3+A2_Ν+A2o*g\Id֤VX#Gtuuׯ_dd?sU^^tRF1{?Yy׮]~#gr8uQvrh.CL*KB4\tg+g͙W5#W:zѝGh_9SV'h5_PZN?foǟkkk[ZZΞ=vZ|KŤI&O? }z f} e.Zk?`;կ<[J|<,vCS'aY"[+IEUW@N 4I6 R _KBREh7#,T1&0TW΅B|&!xJRK.j (BlBv/_I.q6mڔlvjjjSLeee}'_=}՜Y<\wv>xy[/6>A^l){_ Ԯ[L}jJU"4n}mXY;zFuf=1N(lF;Fn4^Hjɛ~/ I$زo;Cu%\, nR2g-n,.pK:9LsnT&)R溮M6#< ?̚ Qb%U\\IʫWh4Ǐo\]jժhlį؍%69sUwtt;r_u˗9cv?> 2޽~ +Я+ϺCFn.l w]z{uyujUk(W\cPUV{ox|@o_3k(t[+ g{` &ɛ6D D—!#<7䇡w.tg7Mij7WRJx8XtQ,?Gݨ$(LfgSmsKׯ|||ڼƲ*$$$!!aǎ7nKX!**jԩǏ۷ok45k\!##9++Μ9sʕ8v)ܹsg̘1~!eG?5 :x~+ǟ41~1zSm?ZCLX fnhESۋ=e%wOu ǣ azmG|[)Ð 9BϢS23G{%)K.Y:]rq23*K6iyחE.@B{¿J"(K:7}}`+T|I}/Z][h|x>G5?w;ؽ4~%u~;Sʈ<&LǏ_j0m4f=\zzвn:qEWWWRv&*++P{'8A$ޙ: e4!u&%AWdC?k e+mӕGˮjv<уiBnx8A$}|q23*K {NK |fqWJ *Պ~Ε (}zzgJ]Y[X୥wљ 4tۍo DfMj_I}li)//^f˗e>EFFܹ2ر#**wطo3`\UXX(={V 4h֭ӈRv&֭['AƍwA";9,S`Ld%xHIe x@ w' >?(Yu~XyhTNIõ~RZYX{Z7Z-wТ˽z_ख़mbvX6' Jk.g9ZB沯fjoŲۗ7}tХ'8e«C埧*n]ӿUX*mIp MDY Fh$o︛UcѮX(3#$Y$E\KHZN+RdSML۸*K*ٜٿTY*]'_iIW<ީR'$|pΔ.:~Cv {i,Jveccc7nxuyή2b=PQ#VNV&L㏅ /YDl_`uGWBpꎝ0Ѹ!KR dBw딁 rq6j eמmKff T"2tё;;ZY~8<ӌ=j?ݽ7{?ϬA/5ҭ Ѱ_mMMokFh$o';_hhHŵLGUB* !ߧB7>Ba 8͙KEyQO$]M]u*-T+b \4)u)]tfQہ+_魍ܵkeܹs'UppK0 ;;[>srLB;AyyyBBuZf~9||0bQҶetR¦*m_tPRezAWV?>g[2 5dy }BaX~k`$԰aotj.N/ǖn=\P#TǤT;eʚM㢷}MŨ1|ztz!$oyh?lG!%hcYD;N^P-,8zyH[)Ð|}\ܹʚCOHf>:ЩCk ]D2$:Z'9T(OpZZ:83TZWVĞt ) 'j7@GGltRdv*n^H3'Gic.7҄q23*K6iy{Da J *ՊKptn8Qo&&b#ĹpFLŗdߙ8o-4Y\dc|xKcWo[[UUk׮aaamKKK_yLRuo{޷o_NNNee_ux)>+Я@ ȨR?~V~նT4obY3qަ-koR~%sWUwnؿ^dU{v^$`kMSݢWlU`Ba Y'] ~+L_1UxL%HQݥ_)ibD_QnT_FBbv W2wV䩪JOOï̋W婩⫮^:s`\7gj , ԩA2:|QwnͰqHqj }ѯ9"Bο:,ZqlnHZ0uac X 4]v?i\c>O=i: _) _*B8b1&0TW΅B|&!xJRG~Ee$AlJ+j?B3IdΤVX\g0Ѹ!KR- kMJX5GĪlܵڊk߾$opVsɁljU5=C~胤[+*+:w3DVj޳s647Vg"rI;_`PZ&R0;~)^0sD2 @^:\P[hUZCy+=+swrܪ25ߺ8eTGЈo?qp_L t =BRpy8?$eGyc/&A"Fh$on)nGlYVcUB*]ba{AooTrdOT&/ / EQUsܩx?;9(;9i4nHz~Bk(WY^5\wCg=i: 77) _*BIe=&_%Ȭe(vLPμ| F9A JM%].THeRRa{@oRWԏ_Gx~54~%u~;` CzRXX5_LA@iymC@+|IHR8b..|Ї"JhGA0C9}*t\+l+35xS!IKi=HoT_Q?~<~Јv_JؓRUP@ `I ¯yyT"GjrYbhxxB~q+ҐdV !YY䵝 0_%.P^! -\t{ЇAA^J.s2O I>3THeR9߂prpY+[p+?-gFہ+8WXZC -woXaþI酤VB/h4(FA#",K BjjRG/kkOnH3ɬхރHՇAV\</RZGFDXG!L5dW5s2 ?ǥŊ#I>3THeR9+? q>ۢ[-֒I JMn7:6 ~54~_L`OJ K+i, 4M7w*bh,*Kv$wLFH~eY%4vN+#PDf¶)iCO\efUz{#!dNP&]=<3OT&/S$̕2[K&|HBXXv;ؽ H.3uhܐ %b*Uk(A&*f`TIpKUrZVGGW&UB#.}lG!U ||=ۊ |`0~eծ  's2 ۛON>3THeR9+>E\)\}ndL(@`X0ed'e ̜)LqC2гZC -wom*FmOԓ I y Cko; 9/A{_'qzcR@#ӯW|)1$ʀ[ͷf6Fp4nH yD D—q.ClY޷/&[Z5KP sf=頳7^/ԼvK# LJ_L}ك[+ޏ.y ~2y+W@w46%ЯPhAZtMTUUmT*!+4|\ʩwqt6_+:!4^/AH #HN.)jփb&&lC R}$ZQXXC6~H[27Q©Q亵+Naхnb2s+sxyIĠ3i*pKЯ }㙭: ع!MRt"|>)QJ>z:m.\0نHVFl:p/enSukWι eVjA'Ag2~ v,~lfffgg6o޼+W' j77ɓ'޽_&$$:99=c۶mknn #Bx7eS$uGCKZ`~TĞ#/Vhmj7WzCh_Xw郁Ebpce}ܟ3zΌ♚n1@ ǹ*ѯ!0d$a %v3Jj'!{Fl:Ki 3_\f󢣝ґj㽁XR{ڹnS9&J//6-bɑOZHfpY +93u[D7v-:|vBpˮ__SSTYYy̙˗;99'aÆ1ȑ#8]vmTT_VVv֭}hbSrIH_F8W_mڧ4++Unm#{m]!wf5U۱lLbOde;UX:vp*0~ʖf7cHwؠMDݕ=Y>3B-5w̶i}zĝ:"I0$'{+ː֤@(Z,,d;%#8"9CgĎ"֐%kγK4f=GOq;Kjo\;׭]q ;?bTbiJvG_4Dk|xJIE]ccCͭ?sߨo4o)Ws~|-vX'xkNTUd8TLo&NziK ~ٱx` NV2Q}{Ջ'~.YN63N|ozro]޷_iJ0J@ ~{P ٔ72U(R'! . %Ѫ#I7$vnŚ,2eXs% U@,q\v)>^V[YY$%%{UUK/xƨ(6ed>>>qqq`nܸhѢXKKK77qI%p___222ȑ#\ +Я@~E4 }ֶMK~/?ǩm/j@o/~mVMT5qH|)oj8\P'ܛz)eb>]nSԫǃGzAj/8'#ۿ|rHH+aaѣGٳ;FnݺV-[vI%K8::=zN0!=={c߿_.۷o4裏>b-z677羾O:|&4x ꘘ mOMiU׹Y@3S.L}{/g߱cs"p7٪$u@WѯH Cw}3 me:\/eW?cz}|ꌣEus=%|dS>8RDT.J; =2Jӝ<o=J(|w>8{YlnrHN="||#!e/BB;.Ϟ=< IC Fo2kkƯ3i y/.B~wRXR{ڹnS9&N˺C:MXr$“ҵ;n]+oƍù3S^7,Λ]]>5-?/$@`DzkWMMMeeeYYY˖-*_mݺgܲeKxx8sNj*??k9sZf;ի׆ xO#٩XbSN3z{0 dgraTc熤g7IU+MSޑi;Ii#4[tF_j_.qUe}}vU͙ t= \gHU4˰3ꤠ<&p/[VAeWD*NbW1 =+ү˝_ _+r+ګ_qI+\ +oS=z7޸vY<#ذVVV&&&CNNNrrJO <͙3GhOJJƵ|'FOƁ!R IOn:!W%w i4U^~lIƑK7o^X_=߫:V4Y/~^{!0AsSVPގ|t X =0vo[c]ޫy~p6F P{`L+HN) _ 8!Y޷/&PTV*(֐_g0%Mpj8nS9k?1vM_fneV~t;A^oщ~ d>DL v,,,l۶m<֭[/_L/++KvM^%NPVVȻ [n9::Ÿtx)1x8UF->eO64J討:mɶ>*4WXBwܜY^SكyG?*i5K``/^Ut*meCOsEuugw%#Y;:{N}cC_?y& l9B01ksTG*aWvBj`;j)))8|RU_ԁlMm]|~rNy14WdpUJUB(N"Iܮ%&.J,]}TlڕFJ W @`ʠm۶#.WU<,QRReff+WxzzΟ?c{޹sgvvvEEŵk֬Yþ^ŤI]uր{/Ȁ_~[>AoC 2ї|@t tFWN ر+HNno!R d: c˳ml0Y;l*]h^J '$bnWӿLNt{3[vQgһBӹ~4y+h/^jmm̊WeeefUO?V]zu„ {ʔ)lɓ}}}"""f̘F^΅Z\z8'' >% AcJP cg/{HGq} ; 7#(j"_KmC\کdV BRb8's:f*tYN1SjWu*+$".w;رj` }㙭: ع!MR4+@w@~4F>Q$'>U~h-.0hy" YDC!!vv""HC*>UB;Ϩڄ^򲟄TZIK ~"C*9#FKL\gC2mB BTgeND!+.7I*k@&BT#gh+iJS×i_F !ScU2;Ά3=bb&-A3,"<=zo6WxESËZ5芄kQ^N羘Id WAMDYTc熤g7I`FF_~(M(;~{P lT"LwwI%AAQX%sV&*V4%K˨ٛ JfPbInnԴPΰH89;Rn+E<-9l-77ݲ! n;_R,cJ`UF_~(Qv$EI֡_ t\UB;h5)Z \m%M jx2u\3~W\b:JtǽK uP ˟C;/E$'w͔a[KF]!կLyX~<SCׯ"5+ZnH}fFM'rcWϡ}rwNGs~1|QAֶx4ܐJ'9 v82uG&& {B4%KZ3aGf>-T\b:Jԩ8VLZTBT:'"0+`?6|>6`} #9F6'e"_GRi=!ibV=:p+Kw"C]Kr+'ծ3?C̘XXc%Bv,Att7&K uW~}[*?;MM9?~y_uk 9yO2S:&*N[n##qW |@+HNno!R dIj1m1ėml0*!Yn?beN^aHtⴘXj\XTH !3cria-Nѯx#?  }ΠR<04]7=]qJznuSůN=lV4ɯ%F_ӯx2NݥoqKse}WPI @$'&~ei1Cv#r̃EQdmb{yemd(l0q!<_\E`Ѧ=ޒ?[.F]\pTW,b}Rb\]V8W:WD'nYB£"DX w;ر 0_]J$)|!g_|f/_st`7W~=^CKJ.ں:YF_ \zO˪h 6ɁVf涮C֐;X6&1'2q̲^Uw,;8^?eKaw4C|mǏ vveϪ'34WB؍Cf&Dh="7d{عGWf M)HS,1aH635uG-BBdqyt֒+8-*33ՇVlT0W>NDeJkt/NqwBҾ||v c 4,JACz?#Ԟ#:*SϊIg.mUh'Wկ{;Z>RRQPs75M~!³ʹz՜6>+rAfyK>Â>#_u2 b"_5~3wK;^*Uˎ{^pyVՏS嵕7^-[eg0m*ٹɭ|^ZL >VlT35Wlؤ*+‹7;S"3=66Ya}11Ƞ[AЯDܻ jHg̒9o&Ni*obߗq$ߦL>']4zh}WuS^(&TbXξ&鑏{0oG }ĝ{o#50?pL VbvzxO6P&] 0az?Q+lTWC'%AA $s\;ѯ( @GeT˰YqW-MNOn-7-fJUzzr+6e]̙+6Elpɛwѩ]J9oKЯY3{dX sY2D."7[LK{=<:6zKu+W}Z^7둸LU  }b!Y1o嵩j,V 6ϫcb6[=-r7TiN`(QIr=FDpw|y f-B)*;7d{عGWf +R3dGXb>j5ڑh /d}/ru˳sӥӓ[Kbib@˭ؔv1gazٹ$*ݝ*ҹ"8[qwBBmxXv5*66.,,l޼yW\19?_W OOϤݻweee ,Pnnn'OU@="wQVj0h(CT]w>{/d;ߟ-*k(yBs^*i[sW{=<']ѯ5R~}ک_Hǧ8ZT,!9T`{%{>uO蓁.=W.NCtt!j;[sO>|섯n4 9]`fFر':e\ZAr?qel,ys: ڳdsGgV?{ IAHց=r2׈;wY\^A(l0$B#f狫_F,;bQٹgCӦW,b}Rb\Uk}pOJMJdNlp,y!GAZ!C w{رȠ[_OY555MMMgΜY|Snn}Yz?첲#G 0`ƍvذa#Fj< > N]]3`R{O'*ih :BWR+Cr{ZWKU{vYd_Us&=]O6WY9%c2L:H㠍_`,h\Iryѯ%KR鴈!|5>b{u#VD$ak+LNO9)9VO]g~$1 g9]q7oT u._\vmjj|)((h69r$|8;2o_h(; ; Cz$|U'>?(ZUkїDTe/ =Wf]}AQ+sj(ԭ-`1[hw/+Я@ 4RݝGxZmeeeccy꥗^F|n<_bcTTn{2e [URR2}t{{U7nXhQll۸q8réU.\Я@(>Jpϯ1O586oh/>gR_hѯ9ϳ7ωUj,_Ͻ^YW}ùUʆ3cO*K t9y<+cOgݩol'-g4=1WAϸWPj vMR >ӓ=w\EEECCCii xe˖ׯ#.v=z={1??رc֭[jzٲeXdѣGI q6'4vyÖRID#v^g_x}gZȽ%Mk_1sH*>;,6/[vlnƭk}ޜ'Wu䓪fk} 3:m'累~5 gݍ?)%Kz0ą&&lיG" {s5IĠ8"u bn*nAX3a뜩2奔td*qv ck׎=ZB|[dIrr2ϘK/cƌ|N4;Wկ_=Ə/ ~e,_)LPOϥ3 $S._KЯz5n$'+99avvDRJx4ҖKball-"6u*\a":(ύ5RP;L4AYco@D78i25UX"/[[Nx܂JgæJ>bs%6ؠdvxj*D],rTxہeWӯDroB ,r]\De ܞx uμeCm!f8R {Dj,8-uˤE ϟ[VLt\1c;¹BbPv֒\,$ ,BZ>jTpw:NDM ~R39 f0sCӳ Nr%LW?UVrZ0qxL1C+WrdNԯ$~%>+ԯX ި Xv,A #Bx7eS$uկl%W=͞]v7@+|ɒuu0qay߾lיG" {s5IĠ8"u bn*nAX3a뜩2奔tdہ%W^eL~p+ЂZR n&XT  nA&K )u$4+m 4b*D -ZE`g &iu]1;^ }b }$Kt#; sKXn K̭?q4RKQ;Yہ%WW_~~ԩ_UZvy^>`?6|>6`y[ssM ˟pI'+aڍWB@+|)0g &iu]1;^ }b }$Kt#; sKXn K̭?q4RKQ~v,A 1xWHѯ&FcSsS}eia_#iZCN^}̔\gzXSݮkJ {P˥^hX 96!R 6!IpxEN-BnXBeF%7456H@.z{sxnrCҙ 3,3V%Hjg/F%. w{ p[AЯ\lax IOn:WR~&K &\se}ܟ;׿k@]`sB~4F>ЈIN!|R[\^a qCQPHHj3" Y.YZ&M5//I:"1J*i 3_\0? Pm56HJ/S<֍]ZnH:"=a1q.k˼\ew☿EDN # g'!2Bd';<X~.R39 f0sCӳxJs~eUi4u_^jw+3s[!kȝYMUv,d8fَsUm;dem f uu4?Rݕ=Y>3B-5w̶ܩ5W6?`gEQFЈIN^{ j5Yd CeMkR dL S-M8ܐ%GhS˘Y( sG^? }$V٦15> GUWuB `$z i1W*qfTܴpإ冤3-fs'N0W==;q<;7ssbg'0TwAkyX~Gn"J ;7$==I_yү{;Z>RRQPs75M~!³ʹz՜6>+rAfy ڮy%uY=^qRi孂_v,أ̣|uW?oOV޼z4ۅhyLwmV~hthץM]xa J0JLH8ȳ $'O: d=":LP$rIP٩eL~L(Vu%_#12eXseNWuB `$zTঅF3-f3Y,WdzÓN8a<;J9ow:&$O"&oA R,cJG8=d[FN}ůN=lVOkXni4U6>0wS!=W~fsA/sO}j#50?pL˂џ^mL}]m-l}cFtR~PUv-/MKGH\sF; ~ I }b!Y1o嵩j,V 6ϫcb6[=-r7i>m>+[|Đ o4F50jFLr?99azy(Z RO$-bvj8[(,{/ZXe?^]OvW=cwMHUًB#:\4 4.hrlhX 9k[<` = 7[dȺ<{'!Ґ%٩er:MFCڃ%jq̋|qe$f8ӢPãƦ3HZ>X…<֍]ZnH:"=a1ǹ-rucNѻC # g'! G̞:~4y+`d)un왁A/< ij4MM92noS{&jOU@}V”+^>DLzd kݳrKċ*eؙPuRP?mu_mCj;>P/@? hdI~ᴈ!y5>SLJLyBPDJbQй bi_xmT(p W@##WH.g0\X۬i~Sgsˣco#4\^\{U|*{ahهx:4w*Fe*yjPʜ0ut X{4`;rWegEtkĠ Xvf6F ЈIN) _ 8!Y޷/&iu]1;^ }b }$Kt#; sKXn K̭?q4RKQ~v,A Y3{dع!MRƨ0! 4$-9t_}Ȯ䫁fn__1b qs6gUyr_SyVΟ^SPuO [zbvW3?h;fU*}C.o; 4h *VԂ[ ?6V*[AXggg333;;y]r?񱰰LJJڽ{_9sf\\/lNCMDYTc熤g7I~Nwo=%teNUJW{uWWM9OŇy;8z?STwˎm6 -߸uy7?ݛRZ>8|RU_ԁlMm]|~rNy14_qՎ6~C}.Ql :e"_z0C3mBu&dV /\tE&نÐ3;}b&z&_2um%VKm+Orścv' w;رj<\SSTYYy̙˗;99իW.++:rȀ6n:i.X 44tN}6|:<8K)uݫ$ ^@}:m'=!.A{Uԩ_W INno!R fC3mBu&dV /\tE&نÐ3;}b&z&_2um%VKm+OrśW,@`Dz W>׮]j EM:>K )uǝOmn:jcO`Ebڼ_Kӯ"%Wxt" ='n+HNMZmi <''L ՙZ%:s-ҵbdRGCە˫; s:]MAlvTI+\N^ooId`ׯIyҥj&))ث^z饈lGV]]_bcTTn{2e [URR2}t{{U7nXhQll۸q8rI~C8W"#<2.#; JxI=2#R3$iI6"PSc) \iQYXx|~/ibyfU:Ta'Vi8-=G8Q980[E+FB-n,Jxv)͎K|}Wہeׯ֮];zhZ%K$''III/0fjs]x1ײb qEgggB{{߭'V---|IVR}xf3vnHzzvkYUs96\;mhQ5tړmn蕮W}%W8,M(LH8='n+HNu :A{6Etw%AAq-!JxI1MLL↖QoE sv?uvĆiIBa{/ibyfU:Ta'VZ^ؤ4_blxv)ͮM(T4NId`ԯʲ-[UPP ,,,l֭<-[YpU~~>rZvҫW 6FShn9~xzz:+//p̗.]=\xwݳg|< dgraTc熤g7I4+CDxr IN')MlF&h҈HZ%$VYIdX+ -cZ5WN0i1S*%M,ܬJ*ۊZׯZ(]xv)͎Kvxo._1*i=o\vMyFla_meeE !'''99YR}܆bv |)))lggǽ cƍ0="wQVj0ع!MRSӗ_"jfaNr?99azy(Z ROFڊZ%$ξ\ahxV2-2ڏg&Z1bp38'"B&I)N{I7ҡ ;ᶢ gz AViyT{ˢ[2ċgǛ${~pȐv,~%[h ۶mϸuV˗/S;9ݻwdɴSqu;;;R`"u떭-|@>>znnn]]]QQQff&r劧;wfggWTT\vm͚5K\_~z솛Ç7nxxx;nڵkׁ*+Я_ ֗_"jfcNr?HWRHǹ }1&TgBvj̵H׊YdmHQ: 9'6aGau.X'VbԶ+W)͎>K+\v ci/^jmm̊WeeefUO?4[u &*oo)SU'O1cy1;˗/!{ĉ999\<1cNNNGO x~ИRSJ֗_rC`]sZPVj-`ocR +0_ Drouyr|f㦪WOjkԒmٷ^q2INno!R fC3=ɭ5뜝(bC_TOQբNPlvu^ԆʀN"ZDv c h#Bx7eS$u~/uW}}0g/둴b!'~VfJV;)1Ͻ+e5 0WU5w~p`BiI ѯ𥐶i <''L $#Psv†Nxnң qaS=GaW]^Eb3)1qlPU:rnEN"ZDm.p7$2hV+˘RWiR~x&%u>;M"ǯ?;SsBbɫݽ_Ф_*/Gc@$'>U~h-.0 8Y!(t($$SY[mHz[Ekڄ'"ITDA9; aQxn䴄/.3LVe tsj‰FLWpZp% 1qlPUXl+FJ9EDEgg'-Ձt9:n"Z%@`+_1|)ׯFѯNiYUM]צ?905prgVSչ$F88D&Y\UcG:YY۫l)lUf7cHwؠήY5>Ϭ\'en cL*{f` pnj^*J(2IN^{ j5Yd CeMkR dL S-M7d{[E=2#R3TYXQtvNᄣK[Bi2g94T{z%(LJp"l\NRӂ>.Nzvu^Ԇ,UU>sgfn0CIDK] w'wn;_Я@t?)}y_UC{>vG[ÓWJ*jn{F}/Dx~O9WoW߾{E.,oÂ>#_u2 b"_5~3wK;^*Uˎ{^pQ.~/_ߞ*,y˯i pe07L`^nm>\X۬i~Sg.4RcBAH1 9bԩ6P abeaₐ*hՏT 윔 GṱQoRI qUM#}jᬚ+> ΍Pv:򗉽wJNQ>Lu53s p43s}bs~}K1ʁ@LI~e=+ C3҈L\[E0)d2u8(<72uvf|*ݝ,A9>aC<<ش(L0OOQEzR0WlW _lHm+Sn;_.}xf3vnHzzv}ӯr憪kylZ:ʯG3S+nU]X1}MmVp[mCX=.U3l؟WUmph{ZoJi\s'xG?̝&MSzK˚^Qeϡ}rwNGsGf-)<;$ ʊ@`+EVjp&G{F5vnHzzv 󎖃t̪=M;}XOZF)mկK9Xk~!}:hQ]3EjŝO)?\g`SGh4G u)pQR4p(MwNg,H;"fg} _hJsuۋr?SǼ5z6.h>8N I0$W>{x&Des& :֧yh%v;SZi)5eeT^4=AJ* W~r e{3tJyMS6?;`mVcKʺ1J[Y_e\PwU䩿=NݺX_u\[l_ji(h&g_ ~3' wA,Ti![F ƉFj5 V+,Я)u G _KnTjPn2>vjAuRPLCyw+ʜG#}|#Mȩlt^CэSGqp:u;n_b=z OxjS>}qˬ֖~R=F^|sm5;Yۺh"O,vi5Y[g :Rh=*]v#b-,0Ql.KS`(]* Dw(Q5OJG"l+Qg>9Y&+1ӧlC~i+$ہ%W4,J&ƒ/9tBn}O8o."cGom_6:+&rs u@+|)Xg=&1eIr LK>Jг\)T:HdÐm%5'g]8ˤsE_8&rRrmȏyY~%ہ%W.nȆԽqaL%uA}_uYOZj?Wگ~5PЯ<~c$oxyNNDrHpy@\|ÐM$AyiE˒&-{*8o@SD)QYBN b#S}O06gzf8ÐmE!!-:Y2qˮQ[p'j+*$WԤ).:ZYk:*Kw{s/&2i2+`lJ ˤ FRiY2Lug!`Avӆү΃~0YxD <=o=7Ibd5@*U+$6%])0M9Y&Nz+~I.CAZ!P<L ~nݺ\t;;;wS۳gOj??I~y|${K ZtZkXef,UѯJЯfhڴr ސ]":y+L"+VEK}~Вi ,ZNiY!@o;;< ǟP4 3MzOѪC;)`+1W@lsg& ? VҴL'g]8I/csxa办i'OggȢ3=\kRӯv kiUaa)X">>^ۏ9zU /UW̏/q!m̙bUIIɜ9s<(V]vmɒ%zrww:u*.Eqq;7O?=?c_~+Qy|zEM3P8fM׶W %W@`.77$ox5k4-^B)ᎬX!??c"eIr L;w]\_Dųg3UJMQE53Y/6 a P93ǁl+iZt擳.e⤗eǓBrEOMڏlbZA!総MہWbmnnnEEE}}}ii3gxu֫WW\%,5iҤ?=JnܸhV\yN˗;999rN>=-- {c}|G~ץS_rxbhh(|AO 0!Ʌ>;Ma<ΨUl_ _~3_~43~TVVrJ/rm۶1ƭ[FEE{ WӖ'Oj4oܸyQNի7o `J ˤ FS RgTYeCIWgACl-`ocZ DҲo߾111JQQ]+ή1bP^^.{XX999ɞ}P.bܹc&A"{|8sNVJ{C2г`W %W]#xohe`N+\ӑxM)F>O[X`2}Ii.DF}*y2I~t`LVN=w[YIH6K'AiqeCt.3-U1H+4Q2+hUG?EFFn߾1n۶M*88… deeg}Fӎaaa!巤vܸqw^lSp('W/JU#4Z[8zF .6`ƚ˾IpOҡ9T9c99 ;gïMfr0r@`'D5ѯEJ|{{LY]/8Ő肴O%O&~:ɪ0œJ)ŕ ӹGϴVW~%@` e˖51&''O?.3wѣG߽{ĉ &(=Г NP^kljn]YZw&Ƣ]~S:3xMϖ=mPMf0@`'>Oߣnedd:܄ eӐ{:z*k䇡Dg<EG 9[Kln+e#|;Yۍ_o"&f_ kٲevvvE񊠬l޼y._<}`\;sLꩧ;wxC oݺ5k,_-p_ŸT38?׋٥ӧ£ϣ_^i殾ƋU'I[F=|~I'DB  >Џ#;~BJdZ dRYjiႼv!ܖ!P,ӗ12,ZF66dl]i8Ro!˾o&J0}O=ӁJF~@$-6j5N8*%sK9ۛ}l sfٹ[[^tqkɶ-|}WBCѻr~LDrlacdgI et7fK%u57䝾vOG{{9oV߼sg XY*aE1a^ҋY|as7.wW RWH׿V^|ɯiVGկ"?/=6wՠطi[Z[k4vGsWs %j-<,mp !!t-qNT(b>Ypemd 3d!^CQUJ2?:G2ŅIU9U:;g dY>j5ہ.'W Ii/"e=$u֯0~uV|7NFyu귥I߹tӡ~&iå+OHcLESG}|Wc޾ J7$;-m{$Oso}/?v,wvX> xo8n\&$VGU_'k߭+C}\MK^^6J&MdddJїΊ-*~t`,m#:-ce竔d~u.e"QU:;g _,-|~Evc`qȤɬ Wn#{|8sQVJ{C2г`.k(ׯʊg}8Yܢ_ wC J?>Ww&}: efUۼooWX#.yUw~a/jZS3hj][yBѯw/VTR( Dɬ W+Я=OZg(~R8"taB#g +\Ӭkrjd?L {P%M喾v)O0 J[S a{SZ{R&/1ӯlQ;AxD)}V )C%=]ÏV'=Ӂ1Y;xQ)%s!q:J*ѯr~6AsJ&yb\|T`+)Q ssr4vΆ_+ډ%Z~PJ{vSWkʯ:8 l?}<88u;_VU(<ˏyU-b{ Oߝ('RSyVƞnnOESߨ o:xfM}C͢?}_JVU<\]~.3c0 t@l-`ocZ @RɅ>o~;3fݝ'ԪO.~lIۖ į=Q_m~;FSeNFڣNNeTʎn:<·{ЩϷ=qx7M>7MxSI[f%wwvp\1JvE^16&{Y: |%^M3P8fFtU??(E5F6nj7$V#tڍ}$ E|;ESiI[tt9>}XlFB)u*}Fd$\)0d _!HD&MfAwY)a=!Rؽ!CRGh ipM%_N KY :L eiVK[6v2 #$qD) >1IC%NF:0F~q+x!]%,?`N XlFB)u*}Fd$\)0do ~ÙRd=$uFsOG&g\eS'I_KD80_Vl(A!/#$|D)RbΘHo'H#[}8͕c#2YFtW~A8˜Rjz?žƬ cnѯm(A2܃aCC$ \rD(>eYJ枛AAxR`!;((;*'BON0[1-/8"͊SZ^v̬(+\ErEssoќE&y,}x'Cav1PMddV+-/%45'0"֪I:X/Jڝ\EBǎU{GP~hCa"F!I5InǿOtY,Q`,T*K-=mlv!ܖCddTm@NHeTHvЧ,K\o!˾o&JKO8ۛ'BON0[1-j5N iJ (IAr%lI8#Y³s,40|}WBCѻr~@ `\8_:FWrykFxϮ5W~6C  @ P'¯*(BKԾ[UhR w. a v*@{ 2fA,L^f6kkuB{@WI'-\iJ (8!LĤѹHg 5gѥmev@V[ӻr~9Ÿ˔N^1 L]0OoT_}d(A2܃˧aǍ˄$ J+d~mh kǯv8R 5Vj5vЧ,KӼ[UIO]%,?`NLZTE:Bt(-t`ℰU[\qFg'W.m+ L\>Fw10s8MddV+- }xf7$={H]cmtI=TM{' eߦKKoѯ2 %W6è:s~]5dWKrzV;ʷURjLoc%$Y;U@AHKO(>eYJӴ?|ᇭѴ'=z tt9݊iiD8-qCis^TէƑ\ [E+Έt9.m+ ,v9A݂LJ{̞)kސ !t5FżqEᾪR\mll'5l@ů]+V`4@?.#rJb"9u5Fq_pr]pGօ TxPF]1r{Qh}ʲ:0@_O/] 諩S-\H{@WI'ӭc*Ni!::xQ0.$U$Wdx@t8#2Yhgѥm@9&\+"1q"ہ.W...VVV{\`KjujMDY)a @:!huv~YՍY^|?[着g|sˇiG~qk[+=x~Y! 洂B+Yy@R|VT aYȤɬWSVMMMSSSeeɓ'WZ윗gcee_ (X:}L}0Jd0h̷~,mjʏ=fI3pu˛ZWJЯmQuF5ѯEJbUC`"K"u`n){4W -tCJ:Y~n;>獞R8UdIR`^%4Bsݺu)))ȑ#vvv;wU@O|)9`WJЯ0Z]xm Loϻ_zxx+5ȑ#^FݪN%687Ľ͜9S*))3gc\\Ūk׮-Y$66W^SNۥ(..ޱc@O`W_JЯLg{L1͌VVoR= 7tD _n@&1miX/i;㩳 ߓP\C1 Jv;ז1VVJMWG32M:QSҞl~#GW~44~[ͭ/--=s BBBnzUᢄ&Mcc~~ѣGIՍ74ʕ+i|r''#Gӧpxobѯ@ 4cWZ~nݺI&qD˗'''3Ƒ#G ɓe~-[F[V^->"{zMyk "g0{C2г`JU$t 61gkM.cE#V-Wpeh~w|zׯI?Q #/#4f7) _J*,pv$F-m%mgm9yF;߿ƍ4^zMY_ XdeR fHYcdgI %_ӯZPjCݹM #>)n2o挂t65ߊZzƈlAfЯoR= 7>I&!lq}Q .xe & DÓz܌H+J E,ӗdxg 'EAH쁮܄ F!wNC)F";qR[Nf0~eE+&wPPvTIųc]RJmNh!ίBC7IYA#ԯ0,--+?3Fle<,,,DdOOϏ>nd1w})}ÙRd=$uѯ3~uN_{CCggUxy# k8?׋٥ӧ£ϣ_^i殾Ƌ]6{-h@1Gk4_EYkM*7 P,pA^i+vBʤidNY8!RY#2MvPne{kREB=#Dvud+[[[6j5N8.R3:'WL`r5[$AE׹˧V@`?۷3m۶__pAÀ,1Yz1,,,4P,sJh et7fK%u57䝾vOG{{9oV߼sg XY*aaE1a^ҋY|as7.wW 'n՝}~{Aymgfe{{T:+"=jDvudPd)*3heE+&8\*@efG]R*- ښ@` e˖51&''O?.3͛ןG:::o3x=k RBsJh3UݟiQ(nT427n|:4r!m/!~ső XzhwJ𨏯*;$wP)dgmoWI}9e/Kx6#ٸlifq2oR= 72}J^RY 8":\H;Mlh//U~Fԭ@btmmJQFٖwJs]*ftN=Uo0s߀!y5Ha]3nѸuxsz%'?zVKKőG,*~窖iy̏4:lWmܺ#V)9{'AᎩp׌ߗ564he__IL$^FW .+.A# Ey%"Kx2MO!Wk"KJ$@!3狍Lk 8Jm9h1c6™(U1srVpSJsԩ.? xv̢\JJ- o=} nƦ_"g0{C2г`4φS_sUbuNi8c:5]hî$\:4pm7eSm\nЯLfe+洂I>/c2FW=Puo+mYJM~ӮsY8~%ZFUioĒUkx7IYAЯ#+%,^0'D7$={HF_5s]_Te/9Ј}? &Gt?L {P/ }~AS] Zw+F~^Ǩ-4"_K)}V It["Kxl;6WP̂R"3εd 3wEQb L%ugb,xJv]KЯ)"{|8sQVJ{C2г %_*J{vSWkʯ:8 l?}<88u;_VU(<ˏyU-b{ Oߝ(o$ge9p~DPZe;Ʋ65 7<+~Y"xuġ~c@GBjt0NZTL_{8˜RWYWM9iG:;F?SΦcc4tmO޾kG{8MԦ|RuY -\.0W{F}Ѿg r^V}C_xI^$nQxw,dtdmm޴msQ+H%Y*HV:k:Na򍝞> e{gkvLA+aЭÉVgJ1*C.FFp&2i2+0IЌR7CS2Dnn9@ K D— qX 1&RgZƇi|cOC&GFV0VD%N!xJv]KЯW_~elh.&qiuÜ׊vw(k+@w}޺uѯR/t^&h>ZRY!2 [G 0dkq!a~66ڄ#̍WunG&?>ce%yZYynw/sG-Kׂ鐶\YzJ5ΕXJ'g=d!$! ߛnv~ L ~LDrlacdgI@ לl*rbX†6CCΔ_6qk,ZNu_>Qbb!hB$ox몘_*d}U,PRO %SθsqLo-HÐaT*:7M}#^#˶`pWx)#=lYLE̕C\)4=;xvJC6B1vYev k 0EdeR fHYcdgI@x^V*$o˨cƛ/&]Zheӆ+@wCs&D򆷮TKԡ_X$R>Lvw+<:魣ik`j5SU>ɏ; Zm;LMΑE,] C"J!tRNi{C(DCfv;ص tÙ;vRŒ0d*uVD%֪AoӶ/:VWOCWg@2RѴiq2~=j޺+G} t'nUT- Q)e|ɓ-P/ x魣i{0~{NJ5aJL>Px'O~d{`b4KQdҵ`:-$WV+x:WJc) DfW,: o|7~4 tFxbIиy Ymi'$&yҼT&f:X/k[%_$-]w󆲝~ #0͛W޺uMl,9% a6x ;ᎬX!??cHlD}j'魣i3Uk.CB)}w'?=Hsu,ٳKdҵ`:-$W89x:WJcq³s]Ȣsl08"ܾ%ȭMہ%WލLK !uhj][yBѯw/j)Iʥu?>B{`" #l9MYAWoUc&.̷$FL3+yrGa9`8v?+ I XiȤQρt.RHNlB+\NNȤɬW...VVV{\`Kۙ*ۗ'`/~|8sQVJTU ro:o`kvJ2!/#4N2D|%rHE1ΤJ֮qt( g:4H8ف8 49V IىM~ v MŸkjj*++OZP_12NݹM #>)n25A1C5gto8mA6sDoډ\_ ^h}@M$'VJv%O}89>~Ga9`J;įrtA{)0C[PvT39In }ٱ:f R)Ԭpr|O1Nl !=dǧnF_1}[.%%t?G9rnΝ|||.^H]|>v]f=#DSI3UKåΪji+Gxvp 3*wI$M^;\uz)#;9zZp̷P,޴VwihĻxvb=/ şN2Qۻ0l8xw4Hf 8_Q'DZ ! dRYjiN>Jv%O+Y8!RY#OzƙSP FC*Lo&JKO8[uhJI`ƅSqq8-j5 IX =sloo˾H+FT(͔^tdcώ,& ]ۻ  L ~UXXA+Vh4#G$^x!::+vnw?Ɓ↸3gU%%%sstt;xXuڵ%K}ԩ|;v`6` Я@WSU}N:zK[WN_t磽=ށ7o^93|,l{;, ϗTU^:xW_=w +q񿻗% ]tRx8 k+_>{?4+ۣYp򯿴yl`k`ƥ_4bIbS!D%<$I$]ɓ5TR.2ΜR0L(6Y[դ:4}$0Hww&-cu.'@̥R8!JiTJLEvvFVYHw;؅4~[ͭ/--=s BBBnzUᢄ&Mcc~~ѣGIՍ74ʕ+i|r''#Gӧpxobѯtjq߾}lR[[ܼk.@4ү* e8̓; DߖF>s&}U̓OF.8 ?dNj8?!Kݺ25N U? ;q@ҶOHLy>x96?6|F9hKR>Yn%/_,o}")Jps+z,5 )(˄kmb5x=gԡ+% F{y1is9b.B QNR*fJ/IcN\t]Hׯ֭[7i$Z˗'''3Ƒ#G ɓe~-[F[V^->"{zMy޽[]vgNnH.ޙm: c4!uF%կ Us}UY_11o'DnAgΤuZ1̬6 wE?Uoy""E?_McJvM k+o]9egȴڞ3l(ܑ:`W]7/w50j̆S3@2+(V BmUTAZ*=7 ER*ٕrЯJRwIKK#Bvb_W_?rK۷og۶m plYYY:gccXXX>.Jj7c'po`';?: P *{qDWF,ήTf \S##LaZ؃,ϯ?h/KQ}bՀNur]3l8e1sN$L5ѯOUN!L\X5d&1bJI]ɓ= )(P~Iu_)x&Hϐt ɉ@LHr+&Dn. Oo"S&f_-[lԨQ1999--~tg̘1O(=訿|ڃ0otRB@WW͆WX|oܳR^S~ԡXcXkwF_~̫Vl3uu~D9y<+cρSEn7W]'"W*i4]OܬoY籏_>˒ƎL Z]Lq'F'awW!!!Fھ}{qq1~尰*PRRvڼLRu%oo :t{޳gOvvvEEEQQo!dX޶m[PPko>__ߌ B@a@3US;FSeNFڣNNeT;#|8 |}P|Q1sӄ'<)TݾeVBwkKkWA?#dQ_cc\cW8^xWƄlkl H\Wٍ@&1bJIX`|d#7iعUiD,[%-$י4NzO$(epG_2)W@` +"a-[,""(^͛7Wظ=cb˗O|}}gΜ)V=SsW_a|#F8;;}!g)uW -R~0rLNNt@fj_WُE01ΤJ,0>MߛV\4"S P)8/ӝazO$(eedR&NNȤɬWp@$61voHz:_n1_LyAy@&,qC*ąΘĈ)u&UbmBޤbWlOzN_g 8E>id=~=ɤ$.pv;% @deR fHYcdgI3Um `  <=~u$(2Hd3Os3" EG 1U#IGҭ*R܄ Z#e2}4bӡĎI ?"9ihʊ ('+8aMhdzOo2ǧn_Ap&0YcdgI@~Ub(A2/L(4]IdVP,=_PW .+֤BYTZZqq~$h'VI+Y8!RY#<׮vL+Tf.Rں D)qRӡNbV̐s2,Y8-}'Wҩ)ugnmM/:Di;1S72޽n`MddV+ C)u慺NqA T9c99 ;gïN8 1+Z %WS@i*F)h$K**d}D@<<8>6!Fkй8mlZ]qS*3ޒ-*egӧC ڧe;'"9ihsqљ+ԔųTA\N7QNLo* n_@o0RB3JvVj'+O.~lIۖ į=Q_-ѯnJJ4W#E4r H(}J^RY1+ERv\`|d#y.t.J"qjVtM\6[UJZOb;ޜ 䤥idV*CgSSNԯjt&._{Rہ.$WWƊ_Vp a~Tİ m^ ;S&~YĭDßQc2IdVP,2M쒆mUTAZ*=7 ERvҹlH^AsU/XZ]qS*3ӄ.@RӡNbki҂ɰHNZ:FfEE Z?J:5nɢ88E(m'7|>SQۻǦLD&MfAx~МRgh(tzo<$WMş$mY3%s]:_'Mj Tb(AW`4FBDr~j2+]pGօ H+AB.mBbU)*r{M%t+Tf.bj][F{@'N5$vcƐ3,Y :'+8a\_,zL21DJ*~DrlacdgI9汁eW6SUmAo׷>vZ]~uP~ 4@$jaKIWWzv~W]R*t~ŗ:_q_Z(~ R2)3{B{C2г,ԫ&}tQ~uc(iKH[jEjDӟQc2IdV&Ui9 $FL3 lb&;*Ȕe}4s:3@ >ΰH='LOfG_2)~ ]>DLfALJ37e7$={HL ;RZ_WuW[ %W`TZVт.Ƽj5`r P,sJɠgbqQH|yB0b~uPׯ0At91@!ysMGzUz;qi L!8+ك>u)Tv,~sٮ:ڢ4PED,7q9m㲊~dw;ص xK (u&8d+Vj*ޛ9gQROwi4խNNȤɬ WWFhQ_4x{V=a4mӯηJ^{}7YM@VQpIAh5~1 &,LhdFM4cFw#!*QEYdk_ Žuo74OSUN*n7wiT7*K c{K㭯#NWK \N v݇^x 6m{ 7#2$~$ lS9<''L.CT_>uxPXݙm L }rϢ?,sKЯ@p`WJ]WѯK|RҭGܽ{֥TOyJZ_1zW-P^,oȿ+ 1.I o wo`茝a3b]%Ÿs=<~c,9B^߾EF’0=6 QtAc~:*~  /Sg|<>CNKU `VeEFwjs$b[i Q ̰iǟ e7\y3x<;dv̾R{#Uv } ȀH.?aƎ $u]Gh'WO*Z訊~j-$!ZN1mѯ4 ==J-gm]GRWl[>.oq˷TeD9YY{OXPOfsu<~)%2&{,{8qZ9;9+ Z{-O5Uﵝtݙ11{y nJEߎl"y9L LBa3;ʐx_iVfn0C saad>xy:$m*7Q?+/-"&g%]͑=8GdT "N v9 Ŵ'wN|pŸdvd}!q]Q{`w8Ȩ)XAЯ@#CS fcC2e7I~uQc(ۤ_/`,&D\5e7s/ީkҨz5k+e߸W}Fu C 7X:͝'k+Ke?XDƒ^3mGT]m[zB NVr^~~=7eH?W[s gQ 'a]w_$kflJard,*YVO>ү̔J8."3O~p)TX?}EvvDRJ3M;ʐx_iqicD޶~'$$?'q rp9boDEwjs$b|k4SwdejnE :*=W633-2.Q==\ٿ# +IfG̎Wa6 v{p&2j VWW9r~zxxTmuuu?zh'`,vuSPЯ.+` Ska֣_ԯ}.(^|^S񮄠׊EA ߕn84Eɸh_Tv7HA pLJ$~EHUYu8@Ѹ 2$^7|;1z)|q  vY4&2N))|<Yt2;f_)o|HxEXnj*@`WǫT*+++C6Pzעfh{:u*_U\\AZWo\>º>X]FD->VѤ]JWq@#8ܿ[ːw> (_a3EEqxL}T6Wh/Cb_ɨI~O[_W^xmT(nUAA#ɩ/))tBBB6nxmaaaDFF;v׮]ؘ1RUVVR/_~EK:::=zNO_ZeJtS2h͵βƻWkfctgg 9\D@+&i8#.ːn h,՗F>f>u)9|w6D"@[ C}E*$_* yW2} 7*ѯrwȘ)Xί_^zر2.],0:^7ܹsiʕ+O {LL̄ zي8\ Dr7~#0vlH& |,'V7gÁ 7ko^8aNO>v㹷+k /5J[Y_ؙkV\8\9y rEʧ nQ^fxOZK,vi'r}% FXsN_a366߾u@ںH`Ay9Y&&&|d_tG) 222ƌC[ ̙T.oQa2G2-I꺾~uHc(uWNp+F6q'$+ 9HW696ml0wZ*#X| fe&.Lʿg(t3t dzJδ>̉?(ިDlNGDFM vB"""6o,0nڴ*((իL:ߒdigёZZZ$ /X])u]_:1_r1r.IrXHWqyNN;bvi]\EW ,R>q32&_Ƴ`}"XJgL>\-e7*ѯl_v*===%%E`LNN^d )Ϛ5+##pʔ)iiiz1{{{ IݻC=y$L ॄ])u]_گ1_b]%Ÿs=<~c,9V8YD ht0,,c"xbWyGSKLTT/:rEj8qA3@<_7xt)?AFfwz}BˌM&iafFF:-E|0I Ad"g`zN/ n;Y?nۗ]@ IIIټysQQЪ*Ҡͭ-,,<|0~8={oߞUQQq֭{ƚ5k݋q;v^_~_1_rW@˜=RO/Mf9(Z8#ϯ{vR8"R# < ?.on 6r d9YD'{pF\%]ʏ 0zPٝEZie&v0k{yѹ”ʕy^oqqYO,w޽W v{sOL í'.AiiiZZpuu}7nL<9((WL:zfΜ?F^NcŊ1116668':uupp?w ~cF +W{4+AI*F %I}: d="&&j ZBhvRe9ʚAPQqyT$tTXUѥeQI =.36˧Ygds?;\HqscB~ P*l_v6 Dr7~#0vlH&C |F9%I~'Mh&_"8,*a&vRe$')xf/~\. @&ly8;3aWG#idvG'-d.fm>aŜW/AvAÔ5:iؐ lMRh7%+oeW?j8}}} 5@P~e31S_W_uV45Ԕ߾|tק󟎛L;z]Տ]@W-_JЯ0(`V҂.x+JHPRhHr G ɣg?|pMI~}]Zp>wh N̂pK+s3 {'G_˵MFM?%؋ntH:PVW])C8F=tsֽF8,s, +\2)4?*I!qy &]%.o3L?P/_ӑБJܒ\ZťCY\<nenۗ_\~-I:B7,-5KG7uӵZ^-_֩_mJU$?iT7*K c{[[_GfV>a_̟>ꚲ{=`!<]19wB ~$ ls66t,_+K3Bgtu:OG~;:\[2\ ZtR1 "`w?p&2j V+x|z^0FG0-I: ; w~*C0cAZ^Jc(ү^Ԍ+% y$.cU[9a1յX[% Bn F.ؕHLst$m*Atp)0a&2Ej5ۇŸtYlѧd7ٽ~}L;.9C븯xtLvgt{ ƒ/_.RiY₣/UCfH`!sE YgŋNoKfpϏc|U..ow;ؾ tmd \92Աqv,K0w%㮡RH Oh/9WvZ^PE ;gVi4[ޜlB`kаȕYꪜm%uq4nWSmszPrâm}"O_x!Ix4N\sVNA~^g-LU֬Wݧ^yjqx/<Av%h};c,G‚3)2A& E3%b>eB)8zQ |m&l&jνi"Z7ΈcI͗ίpbt+8-|*p IR 3$qVQi =̼xFEIFzՕ{A7+@`+е dłu*jV=:4um K]}_m6W ˩p'׋+jkn^SפQ;jנW˾qލ}^gqy2ZEDj,^>C_vJIeٵ߶'d%,^~~eB~sS"h@%j`pgmhN %5_>*f`2.i/UCfH`!spYgŋ>I*0(H}Pv{sOL  tmt7K !uK}WݸWSޭߏo{٠E58Ug|RҭGܽ{֥TOyW[dk~O}}MjFC?8+[;"L5iOV3?/>A]xkȠ9))\]A%eo{Vv.!c2sk>jfhf:bC~| FI*F ؕH} :QNR AhiHK.- <2̔J<ݗP>eP1W*IW ƒ/30tH*p IR 3$q=̼xчKFsvfW/A_UB}7 t0qQƦLyy'WO*Z訊~j-~b~1WMU~XlϤkkԯf\޿W{)ow/jw8T}:-4ϡj,V|bx3 ͫVv u*n]>OIhϰ_}}F]y_>R5 C$r +NeQQ_E39 EKa?hP)HtYlѧL"G/kk<ݗゝIf* N1JL4P%5_:2É=]bib'_>̐-0C o=Hh:3/^t Msl_ `KЯ@?hY2#4RʁXka֣Muŋk*ޕMg+aWqhys[Ӈ<o:{$eOT4h4 7̖†G 7 W|WYH7jMFM7' ]i! U;/A⹉#.TȺU}}N eE2Oe%ryM.|w\=zn@^@=#ߣH0|t '@wJ B|*p IR 3$qV!=̼xmɌYnLJBrY!C֊w{p&2j V+еA .n0C8;a%uƪ_ʶ?V{[2_=O߯KH=cªswXEv 48 `̑ ɯoo}DG+`e@`W"9HW+MiG\~#>k{Iy`|wA̗ίNO\xHs%nts-dbhҡJ,p.W/A]#CSBfNR d,3VjP>JS0샂_L0{WSi!ѫkT/B8}/pŨ>O_$QNOj8ֻۗka~~W@`կlfffgg1o޼ׯ㏮zN:5k֬8???NRnzq_\ 祶Wk cѯ8(9\Y^S~ s|X󅠠UϽ]Y[]VxUG\/¡=.ܺ}߅[n9-d<|6;R=ݙwg\5gV^nF I+ЂYJ N ++h~ëQՕϟ_bSnn޽{^^^2 4,Xf͚3g6Q? KZ1GPWfo]\|ODsKfW;٩O8XXغQ+n w[?'Uu>fknjn7u?sӨ͛]p+3+_Xd ^5n*W^=rHeup-6mZS\cyoQKZ@c([WB xlv>"_b ̶$]BJ`aVNffK(L< hjΥ,2> &3~'1xڴ0#R&sί_eU*СC^FUWO;boSN嫊g̘koo~Ν;-8pۄ 4Ξ=I%C QF2w"W]APЯA&㳻̴ 9xG@+ULT<''L҅!fD`a6`Rģ "V\"Si_&`IeL*6-Hdf'儔~%pUAA#ɩ/))tBBB6nxmaaaDFF;v׮]ؘ1RUVVR/_~EK:::=zNWOc(AtbFGrϹD1aqs+r,‘E4:hgdgyrfm£Z GD !|q~ j"%(+2R<s) B3xl9Er&*J&AJ*32 q&[c][҂˹vvRb'dk7Y_!!@`WW;vC\tirr8t^{o0n8fsMOO-+WoWtvvf>=^N믿V(111&Lo=*#)) OJRYZZ>쳼FS\ױqy-i %WCa"F!ht$U~n"GMkR dL LS.Ꮄ;f="GdT*  GD DM{/-"pS8K<s) B3 qqn$-8-RRLƘUӽH% nhsڴEW!2;g'vB̌v }9+Z]ZZ|rook׮W6m7n7 WӖϫT*Ippڵkw#Ji455UTT={|gn߾MjpW\._ڵKS\ױqy-{C ,wכTI*FIw`bn2n|#(uh|9RwwҐ+!)-* )[f -4.,5W*8gg\Υ,e *W pZ2)T1pBwp[zRܘ}NYUa"p&2j VWߑiϞ=ccc~[n.**ƆoP^~Ąo(eAFFƘ1cHή]ny̗ÛNxt8Yujm q(Q$CI$+SL,*'JHb wBVOr?U\ģ "I*]<s) B3a~eTHeR>H62cV4p[zkNk_ v;ؾUkbDD͛M6_]z?33S缾[,=L;::rTTT^^][VVfkk+bNVZJЯ4 H9hE 9=>Ef>͊”T4S*M=P#%$eY;!eY*,Nh @_L< \O# L_5S ~%WhM_IpJ~ڐf$ү2_)s._ +===<<2/^* WWqɓpԩS_~***j̙c4VXcccC 8qSxq9"vp qW+4+@ǡf6F ht$~8#nL҅!fD`a6`Rģ "V\"Si2 X**AxRG~M 3I9!e_1w;ؾlxNxt8YtyI?lm8{ Z4PWx𾾎}TZZNZ1_\ ItThZ]`JV`t+URxxS<'< ?:ڎyJ]H^Iu2/6\5ߠ[񪁋7\\|ETo=%kC #e)%B2ebw! @@.*Ȑ9P:LVتkƜ8킡eBLuF"?>e n+;Yہ%WˍJzxO='< ?:􄺮f.k+:^*rdJԲ엲/ִ:3 U.=,="=/44]╉##^:YIovD+F6h$) f8Gf &߅~.te*z H C@m(3Yycïs Y .2p:f.++\v } IP^/O's)%5qdujV 5R~U~ owMʒC?(sk'Zg~/W(ú.xXt['r1r}|vwv$~iw! @@.*Ȑ9P:LVتkc Y .2Z}@>2MIRps~g"`A2:K 8 K z+9/5_~ gE߁׷~4ʜjyjP_%(MW>KHI34񿁡3vު_hg%Ÿs=<~c,9V8Y#ht0,,.cbb1=#)%DFta$U 7gx+;-AtϜUQQox{㴜4]0Zt|fdRtU[&[$WÉc0$ˇG7Nvv } I+^]0gkn5c'}xMI~}]~5Oc(ۢ_i{zfFS[& V;Xۺ {\ٶ|\R_''>Io˩j!5U]ܶlh?'+k{ >ܾ'3E9:D S]=h={ jȬO~e@wWU*NnDˑ֤@(]#}1y?6)cgfHa(.́ 2_mS.ైM߃3*7*98-nJ%NWH& <&H CA2L\%k!E&q΂+tX, ~1S |GC4D85+сJzxO='< ?:Z¯[f& %ky*Mc(tkT6-ޯGOY}ogI%}~p _L} J6)\'eQs>=7eH?W[s gQSOɉ0ʁ@#%9dW6ڣ~eZ0a)(}(ý]Id(hZ<LXU3'+olUrpZxLC2Zt| EK zώ:f_>~%@`+zNxt8YƲY~B]#)h[ܰVsjr~5Kc(ׯJoe~IjHWP}3. ӫѷ߻k bb{#_էBckQX%.UUgݛWMcRv G ̼eu5e7`JXo4j ЎIèVOy rSdӬh)LMJ3MNb~x mS~k4SwHFta$U j?I!5jGn7TϜUi񴱱25i;dS"H >W;yΕpq/:?;fO| $@`+=:$pbWw,KI˱r.=:4u;wYQsSCG.V}_MJ}+` Ska֣_ԯ}.(~W] A+ibLF(-8=k(綦Sy&tJInA*mz\ֱb6.h>6-[ͷ˯ 9ۉ.+x gk['pWd]=9K~6)c \A"2 s mW |W d[93'+olUr=\Tp8킡eBL܊e+^~0J~8_t~v1&dEX=>E̚6 DFM ~5$BD}̀#MR μꉥ[\{K|l~D1mzZWo\>º>^בۦ]FD->"Rvnܿ[Aw>K _b 98-ۼ)DW,~ն~%ѯtFZJf\=+7*J;~bk^JI^JuPqxR"jOEUOM_}Z򵜷4qWg<`ZYT~hZH0Uˤ,uy pő]d5u)!h}Q34RCED D_tYѿ?&߅~.te*z H C@m(3Yycïs Y .2p:f.x Żl_~tp[ӯ^Ǣ_qbիQ>qs6pCIh AA9{_sf_NaymmeIC{Ε76+z[p~]c}SO 2Kʮe~~as~-oJoܰЅWPjtxmT*aF_uANp @_hPՅvӯ0ԕ[<hܒٕ-.ej(=vv>n&|Ҩ?;9%6ֲ*,IUݵϧ%ٚۺM]c"~Մ*Ggæ~kIoN,s, I.т<"h,7jɏ.GHOv(? N:Te2mmҧL`K#x}dnۗ_u 0_I$Ё'GUW5R~t2dbdHrp{ѯWp<"h,7jɏ.GHOv(? N:Te2mmҧL`K#x Żl_~5|%=@NV_MJЯg! EF3Pfc="淶oA6#.sr : Z7S*U>lhiLwhF7譍mҧL`K#x ŻùDFM v6jfffvvvͻ~QX:uԬYh{ee}݇fStt“Wc5+!/F>؁$/Acu,‘E4:hgdg}H7jɏN=#)%GKy'tt*3]Ֆh[nENK:2I7=3ڶM.\qҹChȢQh $$<7d?!nۗM›FVWVV?~ŊNNN3 Odk֬9s̽{ϟ?dz7oހ}bP,~P~06&bHrލ^Uڿ&rt^|,,dP`Ogt1."j="G0C sGݗ6Nnv"<"an7J>iLwh+|Zc?ڶMϕ*\@-9Yt ~kkJ;d.4 |[rޫl_vBJs#G4ƟI-6mZSA۷oOMM-Fy9ॄ@ _JЯg! %Wjq11 YArPԩP D10A)KCB_BRĵ|NZf 쾴w(v+՗hmۤ\;/7[<;^2S*?Z ͇$Яl_v~ˋɩ/))tBBB6nxmaaaDFF;v׮]ؘ1RUVVR/_~EK:::=zNmۤ\yA$WxrEoyxv66dѽmmE)퐹$$Æmv }իW;VcҥСC_{5qϝ;7==\ٙx);$J |gy ֶn_]]ݣG]+=@A'< ?:~P~e< I h\h\6-bʬ 9ۉ.+x ˖yG YWg~&0pD``@Jn Ւ6\@ w9B/m9 NL܃e ɵ,@[92ISO9mNm& I8{\!ۻ E/]^G.ܒEVnE&άiLd`ԯjuiiiff˽]&,""bӦMƍ###RB|ryJ; ^vnD); 777Օ+Wp˗/~~~v#++=@A'< ?:~5\c(A~AWLiG\~#>Su>Я +Ũ?@ҧW+A۠_cB˝Pv1vB{iϞ=ccc~[n?Dkk뢢"[lll̀횘 =<<sÈL-NoT+N@` W!!!)))7o.**ŸZUUE[&Uׯ_?xuũg wOUl_a I~ӨnRUdǟF N v݇^xYkqWԕ[TW/b3Uù0dbd]Dr{_H\e3alLb$qW2} ـˏgLo:'3mh?tfL*:]aS7*ѯpYf._ +===<<2/^* {nܸ1y䠠 \3uT_󳲲9s&y)qO''#Gеߟ6m1?A4.]jSP>Vj/_>iU[DZNJ+AصW>K"-C:czFQ]t؍։@\nHBWZA.ёWc=rJ 潑EElm!"p)EA^@K3fbw;r.k18Us-:36e˟puQΌI%Ӟ"[e}Ϟt-6W8]$$<'dn@3QSMl B~_| /vP", NlT%"RԊ ,둉Rq03Rʏ` inNEǵ&nWjEuFx:* \P*q0Й1vˮ;+nr%m"!q#An`SIO޽NV֧ZuDBIF\J=K#{%i/m%_ 6W {쾶'׋+jkn^SפQ;jנW˾qލ}^gf 7X:͝'k+Ke?XDƒ^3mGT]m[zB NVryN?ԿxAO&i{˙ڬ @Co%=8DB /)+AGSj@&(yDD>(7X,qΛ_PXƲ[J [D>Y)Z5Gޢs:c#ħ0Й1v\:WRXN+P.>Ya&@`;+FzNx ArVI~~4ʜj~1m5q[ FSuzqDWߣ"zG& Yӥ*)$|ԧ[F|}W۔OnӨ92zH_̨i,ݻ .az#$xЕV/+D9Ja/  O) jō 3j0eP1W*IWjEuFƧGGΌI%Ӟ㜝+:WRXN+P.>$Jxw,$&™Ȩ)XAЯx('x(qW=*IS.m%U__j*ec{&wI#_qWC͸$ORF~^6UN y?EUcᖸWjWmCYvo^5I)T}7xކ3nUՔ)aA2ϾEgCv$r /-*ro̫YRr*fJ;*?w;ȧdU- ـseg>UbP[tN_glƍi41ɧ#@gƤiϳBB8I\q[E+l ,EG(N )[W_w;؎ p~[V-_J}+N=?=㝭G _?\PbT+!蹣RRPw%,%~mE}a*;$VIInAi5~5eR5N5i5@`#eKP@.z"/W;H/܀|JQP+n,`.+htR~tl@GP ZP(jy댍i !Ä\9Gq:3&@N{1u*N+UvEJ*bxqEB;Cr+$5A~@22J{ূ;?%UPW:j_%sՃ K Z{^G2swXEvnܿ[Aw{Cfgup0ӦeA ~놐in\x#>1IA܅+UL_)?:a6'ӛL̚6Mg0tfL*,>s#7*Jev{G  8 ƥ_v$o'+iy~\-ѯ5qWg<`ZYU<M ^x:zS/B8}/pzګGƾwe{ ZCkgYJ_õW_+!~+`#W+{8 twCQ6SCG.VWCX+Nz5'nΆnה߼p`Ü8>}(i5|!((u7soWV^zb#W޽rxA'<[W-_h ѯ0ԕ[<hܒٕ-lj(=vv>n&|Ҩ?;9%6ֲ*,IUݵϧ%ٚۺM]c"~Մ*Ggæ~kI8ywxeEo(O|+mYiW,ώRgZwitåyfVo3kUs}ذsjj!pR ;$bUp p9tj*z'hT;z_I?^~ /MYC7 X1a[?XZ.,-5aJd"9tIC0ԯ[ZhQ,ٱ}mJ5,zfyv:ӺKk.35zYkdB}ذsjj!pR ;$bU԰ 5_ӁZBJX"SM{S_-)5KJZ_.KROW}H]>XҾe}n^=<;Jiݥ ΚYͬG2>l9_w 8^1*j ԯ-~%K E'Λ@R֯.+5Ks#8GIY|NN#X6Z%/eĢ{,yu4sE4w3g9 ū֓,l9Y~4{kPʖ(ugtыӧKV=tZzN7,^Ʌ WxRh෗.;AGrie]EYc _Qr%_(jBۗ/NR#~%W"WW]f_IKҚ8/V@3~$yu/85E]QW.f *Sԗ>9gwT7݅ ν5w+yMd5k?h֪(;2yӻQ<]U=tZ2'7tKx_JuHM!Y}wcƒ^,\EYc]3jvh!+JݯS/N?qڿ:~uiYW3q~8Ϋ[['LL֯fͩ?{2WpEsh(yMd5ku.eYGQMݖ ~uW/\XݲY3?kʜ[ gWn +<^ ;$n wTx{O]ZYWQXW/Uڧuu_IV~%zv&ԩf_IKڧ[eK\Sy_z?SwBwbO mpsQ]DV.2Z4{v(]7 %Rg^wOʋ.ubӿ<3CC-k!05֪̉{a4;@O kMG}5# :*l9_w 8^1* 6 vhyWz{YW""""ұQiWKͪ_:]Mw~[o ɻL6~%""2Yfի_%:BɽAϬJRկ[T97{uG-/~f/mD_%wWՄn>_L~ض+oy֛/imNNOׯթ_Un ԯ< `Wl^JDDd羴rS?x歹_~UšuW~ =?>9++ԯDDDd3_nxh_~aCwu_=[R[| >>"gcHLNgq+W7o^1;bxWON޾WɧZ{l ɻz̠hthR+h+W_W~W_W~W_W0#P=WG8~+ڳ~u_ОƟS=WO=56~@{֯.+ڳ~]{w_ОFFP=Wc#O1+#?:v=S 67==wd+о'<ĎƯؾz*[=[v}c{=>=z/^)[sг_='yq>H#عcw~{{O?)" endstream endobj 42 0 obj << /Type /XObject /Subtype /Image /Width 1600 /Height 944 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 2952 /Filter /FlateDecode >> stream x1 /B $;xLk endstream endobj 29 0 obj <> endobj 30 0 obj << /Type /XObject /Subtype /Image /Width 1600 /Height 944 /BitsPerComponent 8 /ColorSpace /DeviceRGB /SMask 43 0 R /Length 273273 /Filter /FlateDecode >> stream x\Y}g޽w׵aC)b/(@wA VT VD`{KHH! tEޙJ/ﲓə3sΙ|3dWN}[޿] ( %>G~ z}b9_#~ ^|qڥ_Y)%0/ɷqc YN;޳=FiujjGB]-F9$ B4KQ-MPiBiE X(tX (4tZt 6aZQՙmٲ[]R{QadY~R? 5YnEЖdhw,Ce@0c]p!:ʫڈ:;W͕7w/&.8Z7Fs+|5z"i'Ue_e! 9};gI*Ň22Y`r<r#f]ԡ7g+1.檯E6DCMmEXxAc⺧ 6ygRG;;[a,=T8(  ?$FJ1&YLVXԒ4/`M 9س :w4O$O V(,V+*G6ohO5|SXZe\cE*,J[vRX-ӌb;owД4;bRsojO^Ac6 O1;>nc,@,%=rf'_IN8y$,ZIp]-,7ǻB.KHgfZZRI4_CޡjN?уFӅ*#ZzTi4옽bʹ[}{XqVmX[%^f)5Gp  "uRJRwiƵ {j CkE lF+۫VJCxJIcUȫ@iU|UT Cȧ4W_AW|Çn36*&b{vn*S:ׯ^L2Ӧ>y;,!eu鮙3kfYi)(=KJDsQ b͵㭗%^]Te=fMġyq"nPVD DrSTS\5u5!HzAÈD4ʠE$:nQ0̈́:Ӷ됮Vc$+u-Hϫ"qĚӫL 4W$dy R>f~K܊)Ce^S65Q-R3s2Db5ڗHbk+npe ¢61w''(h& o5R o[yPg:Fuu\#F]7c9$V=δmA4(u3DN@aNT`2osLnmN?`< :@# b[ )d{d{ 1OErˬ7t\"ڤ jETpRSϯ;m"zPte|#Ys{ ?L c f =:{)a,ՂrB3-Z5V1f40=̐o>v-w>R8H}D{[xELKNaقsxf{fH4~VtyU4͌αv=ʤaQ;B"iLV}+O@ժ*fc@SV/u(hi. Y6u78VEk:#YcNdO]]*2 FGl<>l{YYC)c,O9}X[ KX): 8dzzZ뙽,Kskf'R{j6N]\`4}.t&ě[jg;:{J+ BXr'a 0U3{:J'_i흍HMW`v U!Ȉ|ZCyu{%R[2]mOxX kYqVJ;5VWVjP[k1(Ş} LE\7UKY:'jr}O,PYLU]T(`Y^%=<ٌ(TlF4w FHutt՝;geK FeYL"o1d`.;&:csrάZf25UO:c}X3rq豕\h8zyAXI,+ a0DI㒅MbSHzՠPGvY3{MS^65"Jz?7!֠&Z斦&z-e-ekh ]7DW4DF") ˼y1"Ra|DitJ}%Ù܌6XZlg izk+FeŘO wDT0>םݫf0Me NoأFֵ6F2rz3ݶ2^fn><ư.px+zŬۭ;5 ÛڑR>3vD5wěgԻoT7Kjb4lF4nf ۢ;IYJYGkOxSpԕoL6ZFd bq\=R`XAY=#YyXCщΙ,.2㚺5}p>deбiܰ(F[Vqq;+1{wM4E-ҩMhx O[u )k@Nwvtt7"ՂnGJ?SHڮIlBU[/_+M {̦xUl92wgm;:N  n :_CZe{GfmM"mʨDYD4'\71{My0Fk{ycs~p lF)%@^(QRT޾Ao{LGNRZ*F@~}f'# gmgP---AV[[>WBzҢW⭗sݷů9m9rq3BI(OKI~9?/NHzVXe[fmp~~o9+<Ȝ ielZ@teeVW+l$D1\%ԯli}?$9b: oG Qn$Žb)Fp,ђxtNdmś ɔv8.,wvQ,kX*Ϝ>twyNbGdQUU25z^==ݼpd|#uy#"r+bXվ.2zzו]oSǷ>=sDB7Y|Roڌ-oјz4ttU9z{#I* M+, +,aXypYs4:eQs4NyU_q]_դW²+Jm-kW|XV(f,!*n8am,0rS!BTZ .4TBS*MfzHji gQWX}peF52xLtZUIJSUqnAk-9ZCs"3X\ů%tñxځ粘5!{g/>IzX8wop]pYXHәj{˚[i入.f[V)>sIe^;D2ycY]VWO{S;2::j} R1tܽ2*)檢2ZWwog;V9ԭ+[(5mCQhio b9޾nJyQi 5&X\UԎ6Juq[DqN_@vo ٪dR[A\Y?Y)g9{z0+*⟦[b2]﷥-`Lqѐ{k]B곮AHcGTjL÷Lnx_uE.UH)PQTA㖾jVH噴Zlqc}AY]5ʶUXu?;URjy: ]9[;Be Kmq)yVNջ_HzMJ;o暲|rƠiktjU8O7"}Oz.Bo;[5jܽHKO=5/Ia}s U"aW #3\qd-!!65IϒtUQZyWKX}iG_]ֹh#(a2޸x&!:+) @a8{vغγ ^f=eU\ꯌ+tao 4&4MvjBdւ ?uo Q܎TCO=%ЅB&XjŽ}SZsW7ȪY𡓢 h]Fݫxgu 4ZH뛨)lTN_q$!P/cm{MmF: hħäy.7-3`љm-֔`xʆT3)4 6Vmx1@vKe. ^,_)f_+F):e:QfILMN:c{@_ݪ#^EV"! d }E_X_/Kvȧ ƛRb5|Ʊ\L8Sz?~BO>}f475[\s`[@"(m.f Yn,Z,JO| ߶pPHi^&]Cvprä([+5_aQ[C}LpD}@;ٶAoe:? }Dtf;萫aEְˢ:\rOgr] \V;oO#tEG7)J{g{{g'k=:S Ȇ }p.NO uYYBJc{n2:갳#>}cO<n#?X9lxX AѬ{. R/lB@?k Rz93܋܅=Vh{ ~hOd +VFDC : p~]y׹t|Bi@oVu >LW{N~;)b *b6*"Y9u5U[{/ O19冮d/GC7v:5!+y66@}Sv݆, ͙E5R֍4 Z)/l,JyyUa^C'3,I̼xtۖ-Y|$_󖗓cG_dYyXJ|.!Wd >A/{=(;9X,*SivL%h"xc CvY<<Ċ܍Kn%.yp ,%:=dpkْ.~:eŠxNkmdLs]ш]]SB{̐|64ϷYq'.7 ̑$p;DXqhg%MbsM@4IZ[e*DZ7*RU"wm޻=#SDR ݢ9VJ<c*a/XqdF}1p^^QX9FiԢ hO8fB iAW Ha$ ;Ăc Ӣ;eA g#җoC$FFarx5FM8 Cђ)@Dۭ..t~!FIΩI St HEKY`5©<T?1UU*n4*>xm?pԮ _=u47(JZ)'f(>}G|O%ߍ}Y ;|`ڪJHuUBC!tx1K(e!kp9r 7`GxQ3!k, IO/C sjӘrF42Q.%ςQRC?MVmVG҅3P`@f")Qd%x@C l:Iؼw摍~9 |Ū{U;BU'Ū2(2"E5BEY-VjԖl%ldȮ/AVJVDI%SɧU҅]U :+mUxm%8 /{_Kŧ@mTUDʔ WW%Eh+pW#^μ{qD̔tF4Wd'A&Q=c+@$]fOa*iw,Z6eү\ct£Be<"!=0MUgɅr8u""THʀ+rA.IfF*_qӋ+JRD(Ul7I^E"R\"N$XrS }1W#ݳ&^nns= >5I|ypJWH(|<5÷YB^+̺\35̓r%WUNVfL0)5^EE?bt~%zI*7->~ԡu_I%Sssb٥ZuP+:bR$+y(ļ58_y.Ÿ_v CϾoqMyQS3 /W0nUa~&dWQQO ^QJtYh+QE;q@-bA咄K;E\\_(֋#Nt"ɜJJHRCΝ2ylݝݒIc$rRnm_xIPXj3s%4n]~BE_qVR:Mwe4^}ϋ&lXs?~4Kc,W̎b{`ۚEjSIo8:<+T|2It>gy02/퍡ƹjk]jMnbTKc44MXft%:7_zYOOlә3)1VgX"oWY:z/Rsk b/9CTRߚSno\6u~2S}Z#;)/"!=5s?}N/(Bro%/}Tvv+ aqج4o(|~uPcbҲq!O,Դ $+_]̬hWOm*Fyy“Y2:{-4 K$F<ݦy3|y߀l!"3B>k9KcqR1R$+q饕06͜oHJv\a2Y_m8>GUW&+_0j˝Ó "+6{˰QO 3=-\mz;<@s4]cSTulC<'OrUHF$TpEH% kG欳&=㯈ib#D^(J_bB0L,uRNƟ7Jyw?)^Mqg˞,at$`/g0r2_SHH:z>BSB,-3zަ5=w:"v[)b` S-<%!{JW#*>Ǖ^jYZ9`ϋ}"Г3_H/_k-#G=)[ԍ_?0>&:V,[9!Ke د9PCCy&;}nƒ5 -BJ(2ʋ-Gsۄm r)2IMgW(|\_am6E֌\b"֔$X/?{fcnj̵ *#<]dIPjPv䥥/FdJ kr甜fr<[d8XZ9woN4k)I޸^J*u34NAnd|rvּ]>< ?S%{Ejx9Iv%:磄G.[r6.;g`dAd۝+=X2 )!Y+[s[m !XCHMNIrb_(bG*x{|.3z?޵=-7Y.Nzd+{+sECJ~W!8/cUl0qfʍsjwTfÇ[9GWTYYKw:[Bx%)t3ڪ' ;݆#/ˬ'hpݪW"ug4pݚnő r0OWMIw7V_@* &/CTbߚWitmmW"Be$C4bG 15 V}0˥! {H;h Đ:&sl9,9'v49i.$^|5(>}W+L#-م;?:Ԭ'RM44s- Ƚ +ꂔ+4qKTW܍'vj霏 ?H"̢5,V(jLdG$G̊ xnŦ8}G_}a2:8HiZ[k2q|YZd`䄔tW_MWI1h̑?2H=2U*ʉxyG]CoԷZrRRV=)Yj/8!4aE9i캲]}'a;뜋Vj&'0ZNW믪9?7:"섵Նzk/^pΆst/F"+J 9QWm.1PȚhӛbR0ٙa~ y ^ZwLA^v~vXr5G E+)y M$Svr'>OE?O[D21'(?'/5E9yyI82UBGNiҊ뱂Ɔ}ZsOS6/{ts]@\~ps_gWz_`T lWU^V]^ *>hx5ުROC*|)DDSU^*_})x u#%t+!N+_}AR0W_6}ɇ/xO:p;"d8ҷM#,e2#=<˞v(v 4yX6($( 1ze+H0;: +WX 3'^<挀eONpArBVyzxyyz|&:=% HGv!; 7|BV^69 /&-5+CgK!dG~7^o^ x+?~^>}3'Ox~+v#: ½ X+k/Î= ~o*;ϥ=tι/8>]M nڗC5\@i)*OO2»,ӧn=wlMQ myܬh9VUIQioUZl-.iά% SjuyMbr~y5>TX\\Ea˜8檘TPXtpW [)QӦ$Ϙ>7B[wՑ[ LN+z+okQkVm㎒- >E%Z6.`:kӧ(\jJ0o>]k",)Yy\4+I9?m |h1W (Wr:i\e^~_* #)c$YR Y_U)Awo,{O/Fqf !ُsz[hezrRAnsLp~ y|pAh%I>ǬLLG*ɓO}toÒs ^9mG8qgy {:ѴSvJڱ?aD͙vt츨Qvc=߹>w~tkBl(wG:89uVଡ଼9>=+z]6t3{d񽻣C;0W-j]Xٺԓ:fh\8<]C2oq$dk-X%3ԃ?aUb->>j*ϱHZ?LfFrYⳛ~!a{B /Ɩ8׾̪<y"FR7dڐg@PZR—\ogJz*-!!W^?BW^}A䥮ӍHf͚MZV@kGQƋ?xtQaĨP?/83u'j_t~8d{ ֛,|lá/oY=y;5wƾ$+e +W|[_ы y:b݅̕W-HtS$L$-,%+9NrJ)+PR+_Ij OU)_6XU^ZQVqLtdUE\ɢ\I&TWشԔ⢲²"rq 7$"$=ow)B*MOgrs psKh%;~L-0N yK"mnA̋tZ9gay?~q7_TvsV#~)*<ًVϚ̳;{Nnw"<$h4j (7:d2_v=!t\Oolk}WUՂ]*\*t|w@8,_/AGvm"%:]%n(aꋂgjO3qG~,'-99>*B{RA}ն*oY_MgL,T鄭 ZDŗM|nr LUV;Q"L|>åe$w~zcǐ‚n\c޻ߓ{̼džV2 yUeå>֧)^L/Txji1)zCtd mW$X%ԏ,dy4nP  %JՈj#$D}Jٍ&P)_W% <]0,]ο,Uf[2nYiU~ݢ2y뎯X埝TgW*qMNs h++UJ/̓_ݹu\WFmiWd%-_8^]~uMV7mܕ(i؅"5Y2en3o{H?N|88E!l ]NO?ve'{d_,tX|fVzK<6CΝr]>gouҕk7]v 7n޸qM۷7oD 믉p]y)˙,uܭxʅ#=GȫWlL_"YmA4_W<ؿSߧL>-W@k&WNw_Uxѥc^i;a1%W*Uퟒ7+TaF' d-'c"uttNg I%2P23 ccC<#BWwllxg?Y aeΦufG̭LٳQE>`?1W1 v|t9j@KMn{XE k0KZ>t>va>2C޷zw7_k81Լsa7毄R`_9Q>6z%?R%E)\zL%$N5KARi9I' rU";//DUvN~u9܃ BV>YQ`'/ȟ4`L:TTM@5w\9\mѱ[n*8>Йm{ S7|+wmpֽw_s#YJp˷ݤ^ѡ^[d%[WgM?s3 hr'̆oxYKskT`QtbL*#"Ϙ͌2SI҂wN+TM [NwT`!3f̰@*9RKCbRCP"}0rj^9۷vM܄Q2'/)B4a 4ͻO=9-F-1}[2+^]=3:VO$z}-ˍOsɘu,4M'/[wfwk{gO]N?Xwa晸k7W{4 PrZgL\}ǼlPLeJ_UoT\Q W'޸fBXJ C:i܉09CC|o_%$&^ӳo=B<^>q|It{4aRoץMpo˩wn]UnTv\s^CC{n |7dhS&-{ziC:WvXع%h!׊!ECVi ú:^E^e1C35z"AvtL+*" ;T2LïM^5 gn4A{ZOr(Xؿ" 8x7%7o 97r2)f:9$Ĭ#>OeoO*q3mJ7Yx.--5##dfb#BG9ݹ`,1:?'|7o\l/Bsy| $kLZoV޺jYskl;b' vuۑM,|lc?s3[ګ2k>}  ~l@|_9ԋh lz]}COsG29<VCO  +Wd>0ʳ-w{-fݗCwmq7>捡SO6KP_Qmp ӁlGS-3zvdϩGB2{ӵñHBIo=c0Bt6kmvCw]sx! ŝY5/\"Bt43℅CC.s YDägeb;{:b^es#s˾V#O&3 m̲2LU.S\iwL(شTgN|g__~;=#egra eW$:tCC_ <4O V% -l]@XXӦn{ѣjȽrΕ>m:C#z{A[ϋ:`D&8vkMK$NU[7;~2r>ۻV>00|`d`'Fus79^y7/}uץ{w[w(4UEaAS&nYCGS%>Ģ`E$v\~GfO:vpcOfع?neeuassG_r͛ +ݸpɋgo,[bsaj* e2,_߼~Mj=K u=8ndntۻHm6&GOz_eh'-a]j|# O?}'}lx(0԰C舨 ƕ+S IJM(Fdi_I()oOG"Fꯤg`L(2JY)eQєr,/FW\ UZo\ɞG[6179x䠕١279{ѝ׮^:s'L-L3=vQˏѶ<1WwpmҲS?>tK_9y>~[7úw~4װV򳩋Cg";浫fVէMo˞ۖ9#k˓QQAlbZ܊އTǰl<_$!tϕnb_Nq27,M4ɮEŞd~,o3ƍKtbWьkjJN})<._/yb<_o{k^ 2:('r;ujUVL.w.K/=q+f/\;ew'/9n"ώv~M$5_O1b^4'˧HK9}sw{hNv']nڹܺrvY ?{wm?yxOۇ(>S9si[Wl;ljcǎ[>eE궔ψwKKq>sxs?^zn~ FwbCݿp6Ν=s݃{,-/^=->+/JzTmzr'^&7 ]Şt;xp3gQ:7o\reڽ]yFV;NXnGQ ?;y{2z}Wӻqޗ|W?}`|'lte 5nw*80? g߆zgeJ?Nij'%]XHfD+9/ y/R9; >Ϻڟ "("*"**HIHwwwwww7CwXtwa\$a3sνsy9!B{RZÚKʄGBWB /!HtYޥtqwA6&}H&QSؘqsgfe>~_ljJ?F)SI{ٲ_I\[N̑CޝG=T@-[ĝF!D($]nqӏ+*>eGe57jO =~Zy~1 F Qv:`d^1. ̥<Y[3z{|LrJ2Jr ʊJ* rZZj:jZںXZXy"Jүftl,(B݇Bv3/=Yu y$k56>vMI{)JfN?H,z&1f ݞ5Ԩq1 yxoNb8Dy|߿e+l9FȜpvmuͫWpcӦMhi礤aヤĘ\tZ^FFɷƸqqqԿչ}֗R5L5LLy@wFдFۍ{͊h (2R]٢:Iq14Sݠd~D{Gfcq′[q:;ǒܚε>Un}5U882y`gn_KdKm3lqѱ3l+ _fi/#+11m]E^D:t=x2,T FTT#Wjd˸0"H J"hˍka+Mit.3!s_Pt檘p?6SpjvHX[UQV\t9&* UeIqeuUϟ7dg-LLc P]q蒂9YE+Ghk\2Lk*듥s*:q΍߹C4>W]T=evjAm{6n*֨/  /˕RK0)%|ɳ)r 3W*r<֑LW|YFIDPurlo(7WUfzKm.!xq;7 #dH8~?WTTTpmӦM厼g``2q\u_cRUXɛ̊y5O>V$"׳7f_beE?׉XpJL>CjP 1ve:>6^$|*zxg{.N㑝gWfqR 4JW|l4쮤%Z;22ٿë?Z)bLO`߫m)|b蛖|Xp s_-ZjFy6ҲQOORHHWSֱ̡T>SpLDE`&:ZXj}y|ץ^+-e3*-,"ɗE3yiF,:͹5.js_mϿ904, -0UoًHѭSKf?[Q|x6b!BA쪇TC~77S#C_/'_W*v M!+$Ѹq8em1~Q^vfimUW&$f?j}j}4+92GX!iʹ;(^:}6d{9]=hȒh2Qe])dM`M0II.J{ZP9 Tְ&g m ~dcz_G#ߘ/pUL+Z?}oK,iMoPi,B+[wg_)d=rgf^/uXM2# 'H`|95PDqֿCLJj"dH W5.R5ߞ:͇qB 8OwW8*W3W $L 8zgtuNVԱGď Y ;J2cA+"b}_GdNu4g_ylm/j~R ,תU])) }TEw=i2ڧ*?7eC}bBj**_<-C~ iEL{<<]O;v;܃ˏri0J\rrrNZr?8mok{DWߚ5r/^𰳵ݿ{J)(vvi%v?Cx =ztYejlzfblLgEL.L(&dG|gPS(ϓsoӻT-uezLzC#-yF~| ٥ *\ŒũJ!L m:އvfu5OzWkiU_(*.2'u>vlڜ_:')Xa-.nai_d*l%T.H`,-=\$HIDRXj^kC{5rC'ƮD@qyf*[Xh#м 89s\GS jac؛o}rUe*8im7LEg P8)E&zO霎Xlmiy԰/.:rS7}0A%a+˂W&cm,,<>}>GꢯU}?qYIz~N)dsӳ!O$Jgc{][_⽴a6OA%ׯ2zF,3^h"|9zyò2|k^:%l&eKm_4~4ֶjooϏBѕUUUO<՛7orssG Q{+G{CoooWWjQlO*ͻ̞uj2Ņ8;ٞ>HIrP=EE /K~1[cm#ٓt \..q(v^L#b<ΚG)x];%~fUUyM7\bʕk֬^ y#;~ʪV^^> UBCB9w,ּpw=\]$rK;+hK> {$(x)̿F5t6lkoW|?В@YV%!o`ԗQj Euzr3L߈Lg9(yahs8<)a'=#\=/zSmt˫ݯ>y(a+v_޿z\S95rGW<,~X“ȕfsU ~:# _,MiȒi};:w(/.42л|q1ع)IțL]ߖgϭ72R3RSҒ)qё̢[mU填JzqGE]Y^ ui1cK9VEDŽB\NQp ~](-- (KgC()*--/6{Rs32oB[YO66vOIJEt[<=-LtN<G%PPH>GyK*psQP}$k,duU-$ f![gjmSC[p2Ʀƾܬy{}Y鈐96:T_Wbj#/VQUsŶ[򯄄-L.U7WzٗHs=5jd/87깒biƝ\WLp-#elNW_մ} HX]CKIEMIUMAQEZFN\J\QI#!!AAGE kjMۂCZi)"ZjEyٙSZe ϠG)N֮,/7넴 LI/a%܌xg_k"~ CW#7~έ.rkM]_{z훷řN Ęeb"#qlro\*P&򽐤M:1 S~k7܆Yuo_QQUr|6:?Q<_]~zjBu7>!M7_YH5q%''jhhXXX~ztFYOLc ~NĔ8j^νΓp'9&C1F ]Τ%qXY5 i9Iyy)y9 yeiBֺ)(HPX_PG?-)YQBZ]QYCYECYUCE~FsFG*++꺻%%%zyyy{yEFFdfddg899˽sZD~@;-7oJUPjedȨL֭[7mȨ2 ܵMMuL ̝ $d#}#CC$1 |WۯAu[9oSuL],%``cv[]5u'\蹽ֿ ~%I2r $0]kj W00_M;]PpSJQSf<|r9Gqr2.R+4ݰv-1vl`ؽk׏٫/}dgI bԑvFYc,2|yR3$;"lr c4l տr!W,@B;kScEF؛Oӂ̔Ľgjd>~HTP~|ׯ_cd23sˋ2՗Ԅ/ [U_'{G^!uϓH"uwsLY{UW0Yܤ⢢qL?Y\fZ*z&3GQ(뢬w?IHLzd6]CPVWWxiiny| ݑ,ǝț2U^>] W_)yVכu tY (/6)80KzaB!γE}ӿJE^;;:.?^c,Ԥ\LW%KD&ju]Boy6WL1}2jtwẏ+nbq18(04#=-07C}Ŷ ߽QQ[ 8BEHJbGWo__edd޽{,&Qv?Ȋ|JH+II*'^z|CؘL:U۷Ȗ֖6III=]-u)[( PUergL{"c%ZN>Q7/RȾy\員AtDN#+幹>gnnnoo7ڿ*))IHHq8j+*tw*ƟA_rx•!)ݤ\;*3-XԩS2R3?s/W-ʙ$Sz CMklHM`5{:{u6Pv(T& }W&-[@9k`!Umb]+xoH ǥJ~=Gݒvズj_4 ^#%.9|sFIiQ4;ݼ0#{W-Gbď2Oս/{gen14*T:v#9г!|-3 p+XUu,|=?X(j8|'bMR}J;7:xQ,Jtԑ ׆;ޛg jJi˚;WZip"mˍFHsٖ3r\^f,DC #b +`cRjxEOz:/#0kmmnxi=KfSLՈDE'kkvpwq(/ibcxps*/.vvt]W'GlO2ljRcё=.s\K윖4Y%m9 ]sZrt/j+Suf+o6;y^(c0GW,]]>=7#Jrfʳ{OC'(^gCS]ULۿ)RNܥ,2Y/#'KJvwGmmm>}q^zɓaUWWc%DjkH`0rI8?8nM3_%|\Fo\pR.7MB|& T'$mДzÊ1(Jl S!\}7驪ADBd"%_$y@IǫnqQѿ~իL+3՛7oܺzmvv{rp۷ Y)贜!R#d 5=4C_frnIgtv\9s^"ykaavx%:о:ҟ/GHD9q J8,!!5+U^67u5Tp = G$ҹd3Ghz͚ci)Ω#/'A"\UuܲE+9 I~vVzF\"];cgoҸ+() 丯4T#Bbc* _P@-޼9ӧ(S)b)By{{W5~r @jJɉD{qܻ.-5/7DVz*/7W/-lu5m *z ]eeM,&7nG024UQRQF7@"$$em`dd&$$}t\f"- oZgӏinlۺm+ ߗnݸkT'\lXqUYZx" +bajlA2m֭lOJPQQQ^^^?aR:4ZPPmţlۆɯF4EExYbGqT,n +c#'kxIy(2[{?`O*bIO7g} Y0|TTkߐ˧8#DR3#qJ777(q҃QxؘKgW^Eiկ=(x%՝b؝no2}~@KElߋi)bf_!S#Bu PE(14J";er*bj6&:Ba6n& vr,Lt3J_9 78W<Ԕm%#9H%=-96U̇5Ǽr0qt0(ѱphykA]sCsFPP1K @LA|A |ѱދ|k^%TanYMԄ9 r}]HH+ťSH0CBev _0# aS?.UU(N3_eRSURTQR@^d yymlmltt-, MnJL? r c7hkj)+!B-%!~y%EueUe%Mu5o</\0G>j e9"B21:Z#X! y88 o[|<ݯ]v ,ɪJ(k۹xGyƇT6g=~q]vo޸y7o'$8@AAq;mJ'Ofm\q1?ꪩy7o'OՍWEEEC} K%u%ٙ+jo9]6N#WNw=#c<m(<:#%\8?>@BByy rH(x8lITG/PΛ$1gIiO\<]sIK-*'JKScFTQQ616YW]i{eG(=)Dr-outEiw'ZU'| /]qwWt9!b66w8oJJ9?4x #?zzbn\2S*24$-祉gQ^͌ :\+Wܴqæ `Qa_M_MD5G̥/# W.{_6ssdUkVbTT[߸>rɯ{7#{e3rl w%=JZv5*ФXc$Be\c|$|EMmB_A`+\hiANF !,_F\L',wx {!85eW1Sd+JFo27RW]eEq'#=9s_S^Vf' _yR;`wWWFf"/ϯEӚEe^arrr EHEIqF]8Øeb㫤y>BHgn`rB0/p=^B$S+>^n@{[.‚‚"|qq7Ԭ+\y_O:M[CMXOLX-L夥Tyym?s;s{Whn 3JKlCu?0U"ӡ a89%C 1iɌ,#hSf0.=@>"5l,7RR 䈆eQJz`WXrG ?N+iXbVeZW#>2;W+OF@If3}x:wYdԄQSKT3(TFbVDt(ΗCBk 9#)++扟`A0 Xh W3X$ { E2lpmIG`߬Ca:a jv_UU+~@‰&_U_@B0+q  +X<*`QQWUюbĿh8Rb~}ZĖy?kOթWS $\{ow3iԹke_:z5w^F[?KFj+?rw/:rpv<e_uExj#}47vbRE׈y1ӴB(e *u_UEpl6j(S7W.Nu-lI۹{Arz~c{Q3w eUAKzh$R6)E#-wm߾0}*6Q sn)likAVW uΐ߹ MĂ_Xa*r=IiY"˱Ms(T ɬEB^ˏg =$0]Bh݇.޷s=Dgos<-7r>őbTT {ߦfPA(.O7d;wU#<-3'?%>1-+E"g8<2s=+V45-utzAaaY^zrCᧈj(>o/$LvοR\"~Q>8-; =:?d؆ #|^Y\4GΩF} 6FQ w}B 2ʨ]Uoq$[_&eO-ǽNUbQbiF_,XSl$z!5 ox]u`cO<͊z`7N,Ŕe{= gu`_r *Ў^1"e_cnבmپ_6U1z`n5yEJ b >q4yWʒ hOܟ9֤**Iv;H._P29!}aw:w8ݕMlg3\rKj)rʿc/; 7gͿ)*=8_%;g-xRk&SQϛIB&cDG $eŘM]n; WRؿ*ӥ:r*[z_MW!b' d̿*7!>~`/cF}?lGxAzˌWe=!_e"9g5M]z] +J nfRt+DGeMʯB8ETs_ʑ3+(+ˋ%R}EYхHu(&Qy EcEȝ?Bo.DGpVȝ26lrR蜲7[Nr$!_;rI)!#4rVR8D\ѿ*,Kc!#ڻR—fIߡ">tw.Q̭U\Yp;Aj$Yb3=\"'ݿ}'eㆪ+yJ7OwI)`W C R#$9{U<4|S-JRq=w'"+c_4|UZ\g"t;w2d\v0e P3ʿ€@ @?FWh]pB@  +@ Oqf+_T@ 9@)T@ 4U[!Ռ AG\>_&ݷeۈi7 ͗@ t_5zujţ/W޳x}}yisO}04 -B 7C ,w[ۢBGR}5Q;S 6ǞY;aPl/եE3EO[LpxsJϕ6)l}/1xko:k࿐ © RG:ŎiצP/yH-HM ?g9+:\Cqk+ >~4W+Wڭx O::>h"UVOGukWoO'hwIJ|zgB<ȿlEsl_3d.ʸw=mM/*vo>g^_fsŖk:笫xoIk@)>MO40Z_Ls?z$5] ӛw0v=5eubb{pnž֞QYԄDyC=x̜H\W}^ :5nW3^Cq&G0Hj(+h>|6R]k1x4S=Fo+~[/4]|jmϿUxs&D⛇s{+a/{ZNLULp.l%Ży!\<8zXz98'UW*~S hmI Og I7`{f Wݠ&ڹ~D7|\Ѓվ7ݵ~ʵSw˺UAǝ?T"98^?]Yh@bߊek#b;R2uf<*WWS >aY?' bŪ=Zc cJ^v}xY[?w^|c,}{A߼jMULp.i/t<$܃ 7YV"ON? ?{ .spU0^Km{:5U]A@ Z֓|v/[:Z^V$F$%k*AyOwt5=/LI{"9𶟓zyymSd;pyg?BoW3S ywe箾B_koeIt꺱ڴ媂StNΖW9FHv)krS%pc^M]R35:=>-Rc޹)m?#%ȸQ"DTN/0u`?We56uw4<({heK'Mn6Hq 6?Rܮ-g *5uyUj\;66>ٟ̾gx#| yCot}+)Zi/Y'aWsJiĮP| _MULp.y՜(zW]lB=?KVY~{ux%@^Rn;6ؚu˾[A?ۋ%`iS,":T ?e?(k? lbQ;1E 7̌{ ʋoF5В yS'pzi5>@s-<ӧ=AKu ;r9w]34̡E:-Ht|z^^}Lix-)R)2|^sϫy6@q§탄Dmv ?1 Cz>~Vi"qlŷTTC=ikn|j-MOp Kp_uV(n [Cw5iQ,:탓}q_ ZwרZ @B[Վb~BFGғe$gB3g:˿xjE-N1g}\k5 'aN[1B[mH}LynؘyGw5]3C1}rIN}êߗkמ5Mbь8M.$Y.yPK}H> U\kxȃո!4$ ??yI*P7٣Nzٴ骳:Eߢ&/&T}>0$܃ W7~I .s;愛۶a/ķn'`Zݿ/KW߼ܚ^Y݃Sg1SLN9> -)*oyЗ7,AM//N>p|vVPiw̔M)LR.BNト4]L[Rs_aZRF6~}HH[O%!kk^@Rl;?*9_?]8W3Gn \U9W󦁷cmc8T!qPU=Hd?QGө+OP|ٿULp.?1\Ðp./+REwc|)x%@zNlS j0ԧU)GDj[fRD8L?Y'ircno˽xtN;sN n՘=LO;ؒz=LGcw}@Žԉ'9%)i{}g NfSdU_UBn}-/oPG`B3 {lݟ=.x18n'd#.3vIEܪ]5IwQjM Nf&yU+Yyf\Xn \fy#:;q/yyfߦտ/} b.U0r-}? &z_ܣ#ݻ)VL@qK3}/""֧+'Y6htMRocPo\UvOWn y-_0E}"+nJ-;i[Fjnb8}ݪuQ0KyU9lXldO+*V<)_ٸ)3pʌil,Izu3}2F?Wt'cT9CC3D;Zz{mƻ֤ ÿZ g窝)3kfUʑW.-{3+T ;}MIWZrƽdvƯ8#qw` {UMΧ62wݵqSʺ~?9J\%Uvz`؃=7Sy5rR좙"ȫ 23 +@ Oq{=/|^ےuue;NHվ_&NBGukWoO'hwIJ|zgݐWʕv+gӦu1tHF%jþ{o'jF  @ iO9rDa3w>Y7>޻oėh'dh~̜HjzZ{F aNyu޼놱)uI5_U(C'@P (A(AD-6}Ϯ{ZF5R]kCGv`S5;PVWBWCՔm%Żos{+a/}ȫ 2ӪrĿ* @ Tb@BmplJe}O+VuMw`{ o]OLl}Sj%r4Q XWg;ࢺ`3C6RJQ,#*X14)7RLUM̮I6MTlE5.\͓=oޜ{{}O7zsKC8uo ¹' dU &L0a„ &Lw}PB k]B۫=ҵ_V-Yg?9) M`CI`0ƹb'f:وfsű(+{"LO?_3G'a+ ^ALx};+sæ wߝU#fM{ԗz]/ye;5\:u"ԯpN&%\„ &L0ad>U_J{+7·qޥ“%t;Ql8qH(p OFIfׅ-{/wJs7{(Gn'wq!]5YJP1pXD& p7趫䮹nj&7 ﻫm{mܽtܒfkJl xƧ2s_YXùY¹׊2N&\w13#Є@)&DL$bHtC(B~. Ԕy鐇PxCgLq80*P\31 N&AG6/đ >Mƅ?t֯(hPXgqa_a„ &Llȁ #$DPЙHM n~~bT |_&@My>yNNH<“%:CHfQGxT`tʘd6 :yȝ%Tn2.+&؟~Eӊşzx0{xq$ I¥Rss 33@NۦՒ}D@^&3'3 X\„ &L0`_5vKEBB7o9ͶKxmz_ʇC'?˗` 4!j Wy'K(:t>># 5蔞dp eK5:yȝ%Tn2.+&؟~E\ddU$ rV"_g##0GDVyA }qnO~ &L0a+R~ZՑM<3S։ۦ7C/%Wc/j4] U /GhB ԴEf;!d E҇p!aTfc0<2&Ml^rg#|  '_Qv;P,7|x9&$jPԖj4鶶 l q &L0a„oWuh:N3hNNÿfpHMHL<6:B  y@Pć ћd@(PX OȚ:izL$HD"Gr4BٹH& Xrv.eD65ũC*UDfa!W(b=b`3>vz,$kª;JhR$(Kp&>'K(:t5]V/L'%%Qp!+ V}mQ0 w>RZf#5b[\]\\W{9vgǽs<g?ɻ~|io_bk{>%uN$'ف!9rT$$8D lD]P\)0N$(9I$ NG7xHXrH1 <1z\„ &L0=UǝOT0F*}^wf5[tQZGXZӫ5(7Q5vRK7ygUmgZV^f2ouK%k]7'nM\rR4|lcCOiˉ+*UF3KHO?#*k 1 *@xxjȨ̼ D"q #2YSNxg璓@p;]TddȨhm*>ր߄- EP9-D979yF3[(Tn?!>~s`e${z*&"/ 2tʌKRS? sH> EHIدӍvq "-U"鹫B(ol,Der 4 &?_Xd@ (U=U˹w" vuGڦ֖[7.憺Ɨ~ 7o^8nat耼sjcS}[~WOqOruk7*^SS;5x93wنU5pb~qukkB=@ڻ0]@8iR  L摛͠G c8  Q~D2k'Ov~Po%.K 8VT4776t,TJ,X\Lf྅X7xB-&*;FT` Y13`Б -Gaj;0Wz9)W^0;4;ee1c_;;OȻ~$+FWcbX[vK^)k>YdP&bABW+CygJ)=dm x_`TvvktsssЁWda~ goW/quaѯf'߫l10Ɠ^r]\_ߺuozO>i_=3f4R0bȚ,qt]4IH85:YVV βhŁ z0fr~H5mgY tC(YdP&bABgK˟"Qib?[۫SR kW\\00000 WǏ&UHbA_(eЂ}ݨfۣ~/Py\@ϼ=zWOyrߣ\5y]5UwܹMC;vWi)˺21/P|=z;? iru|'=vsEE[""͜yjԨm#t)SNd.s 6Ξ]3et { z$ W 4P10  OPt } }8)GFkF;1S)=ʖjtd=;Kd\CW@M?ajС'CxX[&sT({90ZCAAI..󯕖ޞ;rg vj]>\SSds7̞}zʔ4 Oo]]GCG.a*%Y@_X57=i?Xsѭ6Vo]'/75ިmׯ':;[>=mǪkUݶP ,:[磗[[.:;x?69vDuU;Nǫ_8` ]I< 1$4t-yO~hn.t+Ϟ}'O"J)F.%r{H$G c8!W 4Pn>瓒y'K(:t>># 51ltd=;Kd\CW@M?aB⿅B!jk>YdP&bAšFEL$ MssS͋Qԯ[Ȫ'ml݃XuǦs}{rmbwt?q|WgF:$rGun`WsGN2HcgӣSmmყߞ6SYPKĒ%m1~Ohb``|_&@M`^HI@:!,@p6S8$ ׌v8c S$IБ @,q>wq!]5+n'?w _k~UJ$?2),Ab6)q6Fd.:9jrjDERH7?+]!#I'^arФ1*_ ʄ@_5? ^TN9'+IQVQ sX~sk -_m~5uUu]q}yz6hGzZIJߘ_+BNcCײ~j2+ ~+n5o0Օ{ +u{io$J>s13Prgt 'H15("S;R61"b?3q4!,<("J>b```|~)5֌م[Z>J[^~cS S-މ*Yw/w@~ЯݹYw}DYomzҰXYMo9;W+#_*f~e ptQX '?r~H5mgY tC(wq!]5+7pWa!4(+hTkyy$sҪ"t6&%Y:|;$Sofu 4,<<^ PXB(3,q=R$ :<4RΰYi*cP[ppL=j>PM~P#tհoAHg;:jx`1=?xjy:eeMS|+HmW֦:=VSN^vўvoyR*. ׯ~UQ=o/&L0!NPx &LI`,p*0Ս"9qCl4_vIF%[9~?se~*_[(88$fJ¢? [آ_n<6Y(X[ڤ8l|~i :sUssѳ~P1xq~oh6[;T Z,T joi~LJ{pO VJq.>lo ޭË|U\~FGOJww/Cz__jǶ|_ۋWBxXpx 4!jZ!5)   3=^}vl qFlQ D,͝Nئ1syW  0U ^0zP $38YØ $2O*?v|rgyVruRo.nDZ G(P::cνF[Tڧwjݹ gFN$uZwLYXک<ckWڮT>~8}et4Ռrz%)Vl;uNS#uO+c_,^IAtڏaB$t|_&@Mt0B!Y l >)gǦO g^sae ۔9Ybt3Al~#9 ׈JdҠQկJJ01'C["ՏKP7>+Q󤒆Iyy+M%<ǐ#GRLeCv=BC0pp,zzhQGGwƿ<+]j>,D^e@t/}iSQ=@O6t3̶!inJQ'P+~et! +Є@iEfD@֤0'[04@Jlzrٱ2o0HEg.a6w9a2X>K̝.z^+n'} cdcT D,͝Nئ1syWa$\TY=4Uے%X4!MNku!U"sRIzڢOR袰KA/άj7BI=_QR4':[Z}b3=1aCg`\\=DvGҥpgngX~~csq P`No(?laNXfHcwm~yDR;sMWgNvvC8|=ڻl;w upߞU9_;tx ==ˌ** W@MYȚd H@/@>;6}@ 8#̅q"l?'lSgE<ګ~EF{h܅2O?c h ?L~u8#1cgwg\g¹2&LS*+3A<,DjϯL(txP}N@֯@i<<''&A<قA!|Rb ώM>1xA2Έ-*>sae ۔9Ybt3*_Qv;bA @pL&i!@j2??7pߟ9Q1Hw{dX>wqQWL~p`~FA. WHb޼+o 0$??X aD(6$t_&@My!*Y l >)gǦO g_yͅq"l?'lSgE<ګ~E\ddU$ rV"_g##0GDVyA }qnOFU ϜOhm++{Q4lLk;\:@_MֶkUG6}pOU['nhf9Vhg'BUpy10k hB ԴEf;Y l >)gǦO g0N2mc,1wG{֯(~쌌LT(y{ۛr>Fkm}H)(jK5t[[68~~ȑأ ??8WWROuAk܍WǿYƄWթ:1tk@,:8:B*@DGoTCb%W(₂>!kt92Y@ ^JE !\$DH,V9;FF2I"QVV Zb!X"q+1aak10 ncnۭQݹ첒:G$Q@Y\\z9Na} !7UK>>A.~b鲂Xi3Mo z鱱)8Ȍ>GfbI{FM\\%r11١=1AC$Z~{7U)))SRP9DrrHQ6 "84Q(2T.WbA(S(> "kqppDF*-uw?э#~HWJ&-,baa;Uv F1o֯v_u9A} MU+_( ӪmB75xgV[ñOyYy=XC[ϧ~[ԨA;B<峪n׶3-+\c/uNWOd6_t\xȝ}.?%A-,B{c{~J pRj4t;¨ <HBC?jLYz佱?@#N327Z[Ū57!aB,TNK;!zzMN 7uoP|OO[I8a=8,C*MkY,& s33NxÁp$3>PxZ t}ٔgE_`"`&O2U1(AR$^FS\%:2#RfO$CC11RR22t]\a0F`$77ȟHKsHzzGkF /|@YA_=`|=.ppp!](WW{ ׯZνULўWkZ[[nݸxߛ;nn_G.lyƻ^U ^fϙM*m ,_^[?=eߨܻzN?O[M'^]@U?.jgs<`k_]WE"ی ȓakm|v-+͘66RѭQ@7BRzJ]ɒ r5޳Ƚ;9eB0cz@_$ti,aaF2'qbV dHrjf89 e=]0*fLC&O2Kb>a$EB%a4Eb`8ywtQ\$w@ B~,Kك/ggC^ci7=/6T lG7B"&&Ɔ!C } ȏ ?՝&+<䄯ԯ<8pO¹¹„Oկ_5ZNYYVjؿ0ؿtMVm7^t*<FGj˦-]wziuoWmb@p=:];"bو"9+r0uT@qNV9)* om1EқwN TZXX!C'femt3Å6CBP23' ͣēHfd!7fR٣LM0ٮ 0yؔyΈlʌkfbI{FMs+t>;;]I+4oooȿQ\`ދRAd/ǴZt#xmӹ[22H(&QX{{;H(xdfL)FN6 I=+_{\dohg=&_4\tbO Tv*bq{MǗFDrS!*n?3 3=ZW&v5hlPm:HO`M1]JeD✘G  0?B`CZXH lBz/\Bdffn0Сߤ(+M<B޷8¦2%[.Mфz43׬Nz3+Hf} !7fea#!g9rLM{ B&^'$z< ƀɓƦsFd`@f',Y3%HK6hdgge9Wcىf().fh>F~Ջ u̘! Y hyTag$4x~> FG?KWJ5aY6#t80pA#` 4!j"$:IaO`hcӧd `3b\'fms6e|;]̣ v̌G))Hڈů%$ ɛ:]#j)gǦO gw86ls)sgUXl~Z9t(I!֨ 'Ab#֐prPPˆkνY]ڿtO'g{z;7nԔ).2ٜ5g2e}~>>er ??h_Oxzuu5¨8W~2 W{|J_4[^UsNrkwI7c|}s_oTד -U 󎞶c5MMתnxڭٷjG/54\.twcty8 PxXXHCBCΘqʻ?,T {bKKG?ٗ||$[!0b[RZz.0p(L{06xW+Є@i7IIdM x@C F @>} cd[T|86ls)sgUXv!oaP:}TࣉufQQnr@ ll{z®}&bqEdkB6ϕ BBw+窜 N j^ ͥsWen):fs/F{9E (B Ny`c(4W%:庞i\9zIbտ瀝{/@_5Kčיv}D7uW;R;ȥ"X I̛|s^|+XqhW{gJ}돬z"?9=89UG{l;w7+71F,9yǎ~L|e|fL"wT&v5W~N$Yd >=y6y?݇mKss?壉qOD@֯@iB0/5)   3=^}vl qFlQ D,͝Nئ1syWa +LNq.< aABkVVx=!(u+8~w '=F-eCB; yJc(޻+s }a`@}~ע/h KydgI_S~ZՑM<3S։۸~Wjռy,1h:g1'? _\}_v_L+ |G9CjTmjDXm'!!v2Z([ægo\$.m`^w;[/±`@ q;WǏvo%}wEQwz>!taCjd/4~_J_aBAFT1BFYRr ?}??/WASU9AT|6LCrWlG L KجMbSKFt$<b < gE%H$9q| ls(GӾZ w}੽v眘\&gDY-GbkS떎KֺHOgsm;Ӳ52[q|ڷN1#/-*Q!,41-S[-Ww|0wdZZj<^*\2UŞ8{FN&vsog{;@_a2u*'+3:=ve_RelmQHI'73i\.,{m4 %Y)K|=lC&ckMG5F|v׷ؔ,T˹w" vUӉ#=sm8PUs 'vs zmd'WVrE:=Ђ:nՑ+5-͵WΔ4}7m7|eg׿śUݵ%#\pW{vvկvA8cmBa.GhB ԴEfIt4Y l >)gǦO g786ls)sgUXl~#9 w+I~4\2$qȌ*tB"IQi Oܟ0Ф$Ko1Z6L+_1xˆa]$19Üȃ9<| lMKsz|2}GQ5[ƙ掎9XLZNYY'W{'j9Bi-p7龰K}3Oc|xxID@/7۹dD;ko&L0u‹Df0a2Nlf@S??_hQTDmAOg_ 0"-ELn! w_~WkiY̽EEWsh+k׬;^gbףU;W[{kG땵!_kD{'xj P񧽥3?|j*?|46(`6i$B\QeZ2)tFf_+cv'_zD_L~i> ~4 0 2U !5HL8|L?Rp族w>ҡ/ : 6* A~v \dTN&PpP7/rzWOW:9%h,sa ˨Ev# ȏ SlwZуn=%K}(ڝ r=j_k:KR?uG/ٚf03Sy )yyUYuS{/CTͶCe]R}~j s_if7_7t kwz'6\+L/R x̀{\A4_uAX$B!Yhl9 Q#/)l~;/JA|E:yA0V{F??عcXD& ~~s7Q;!gZQ;65ZyROl\DQSǭT)N' / U{2N%0N3B]Α#{_^,)yWouIN/ Q`,lo<yWrgє7ý­%Yw-zlaߤܾ*JJ{_U8Av_Gʏid" #"w;/h_gDM~\UgH v2[go.o?N㾿y*+L}Z'sx ==ˌ** [~ϻ@]<=1;;&] ؔ)r:/>G_6SN=x~G:yA0V{F_VyCq <=E>Z\zzԯ 3'<,DjϯL(t0Qa 0 Bsr kҕ M"G3*pc~e3/aу闏}C_d mulTX\?`<%> H@K6ff2 hgM%<7ǖ Ɍ¸/0c ׯ0MѲhQctGsGPWL3rH(V(B-\yszcG GDi-̉o/$o7lM!~ qՍ}vP&[ۚU3=Uo0@\,'ٕ;\klWD/z#՗Of/go{/%!zg`K`P(=d;Yhl9 Q#/)l~{g$ %TIP`^Ocp` ׯ󃦞rh()1692N\󃘌+Jͳ:͠WL,'m5ͤ#:d[qQ//sMnܦ[[Gb1uP":zLr\*+B YS;VϑɂHT&BP Hg",D$rDbٹ02Iشh^@T\ [Kя?}XK՝ye%ᲊDQng^!K )_6tA1Bg`xz+!!nyK>>o ÉdM>3N !Gˠ_>"C W;yzMT0$z)h,~$)IfmMxx}UJJ}N:fgJ9m*E"6phQJe\PP|D$TZ~ZG<"*D"Q(ֆ b0WLKAN1@d_uׯv_u9A} MU+_( ӪmB75xgV[ñOyYy=XCW{o5(\c'T(}|V4ߝkߙٺ+-vv~qZM"wlZο3f78n_$xسU<wHde]P 5Y:]EzQQ_aTWYPcV0`:ݾKCX'[hP r?KO?76`C"#|FFU|FkPX1&$lQ(|}ii'$WOϹɻ4B"6t9z1$_ xz&@JJUF~nKIΤ "-U"鹫?[QŗH>@_M=W  _0W;+rsDz9Gڦ֖[7.憺Ɨ~ 7o^8nat耼sjcS}[~WOqOruk7*^SSVӉ#=sm8PUs 'vszsKC8~ՅO707;: J]w5L\l32* OmNWRcP4cbVD@{JGFYHMLN*u%K6~hz{">e0~ײλ6D];W2'qbRjP Z]_.(F#M/F1IdM>3N !UfHˠ_>"bAPFSѺif:9QRV&Z>2 "nX?09:^Άroz: ]]_@' 0B9m^ Q8@nnmELL 3C(%@UwN`F3ۛo&~Ĺ¹¹„OU~S˓)+[[ nIߪ4B'";ڲ~A wݭ ^Ze~Dm;gi<يW7O^uTwuW͎?g ,n~3~m\"mDAuwe2e#F\䯔R=wEqmeviRK, ņ*QcIL5͗7KL3ˋ&_LĂ "6A HU: \)wDd3{ΙsLؓ{gw q1y}MS`i*&'kk KJtu jkBB0 ?Ո+[BQNPS(G FZYu_ !QmRԆQwJ*j"tZX}|uњ- F@FF@[{/mYmկ`s3#0p}X`> -NNϺ/'%e/ww?HS&lbg,f(kukbrz(42*\@NB~&C~I 59C 4__5U,ekXձ*` ߽С%/x3EݚZnl]Qj(Z?3qg1.9+՟\=o kKYGkOɒ\sʛWڱOr]A\~HK"1vlUHd  gQQߑBpTPWWR>ي舘_tsF1AAe0] hgD,Б VZ $Hs Q-HT :/FobbDD%HN%twj"tZM D::X>L>hMj,tsiqH,>"@,dH.TtdZ_($02klH_EeӦָ8RLHsr3 03[{!%zSVe _J5֔) 3dzvyzsl,U&n?_O4?AL~U~e\L mkrS\;ʶ*]Srk۫s'*ǘkFZsj{#eߝyXөƏvWr͵fS6zP>j}i3}b*~04}J7;8OO02rJOK u SSO3h̚Ue!z ?LttzzlO }B?W&Oek}JCBxT | { AzAR`첈FUًćaa|$dt&+Bkiikaf^I_>Bi@;x+BGip@_OKc6ʬ6Y#J҄>o~@0g{P^H2oo#.ɛ`CDEjh&V(14<5iڎT̙ A8;) ?C~7hzi3`T8W=_ar*+W,;X+~]f[u ~<ފV_d'sUUUW'MeYl:?Xg;9!.a„,==#D*  ]J@֙PSCC̙W0] $nni |110` ` E*ɪ`&S Q-ir:#/)S.| _>s gi+ A٬E{V;s%+AR)<L]V&lbՁBK?Y$zzӄgMMͣLssP'``(ׯ0i,8gm1Db:Wr~^c~?"_oaywz[~֯hmԼ򖻻^ޡVkVO A8V;K6$&n>=/3|9(xu)'1vf%j(NU Ͽ.؇~fy'Ob{z X3Sdӌ0] $s\Lk9s.lgz"-Zc6d 0*kaaTM2£Zp)0tV/>G_.S\~YhMj0@[_g5u[nHLD$ߍ`dO}SUiIKCa"wgf>XVGlwT$%1 ^3Z,^kҤŋ/ϙ=%?y6C~jz Q L\x*~uWbR__;{~Zi@WIiIoWxuM8_܍ҳٻNUMo:q޳7k[nvsݪW6]y;֛U}Te"_un^:ۓ=󷕵A% /4x{;K>.Lʻ1*tW }Bss@>xMdT_\Ha@K23.Db3cS_60[ @d*C!<2MCgU@cy2p嗏w֘>a3 r5:聶~.#5qWj SDEjh&V(Z|iPD-s21H65Kikk,6\IF#h83sBbj*ѱHfb0WxA\&L-ֱZz)(i譿:sW[{f )QvvQ)/l=2R,HٟM%*,zzbsߞx2im8Rքg7$VjUޓ-M 'Li~Dyh&S Q-ir:#/)S.| _>s gi+ Ao+ڳC~I D'HFtU{: 8ץp!Xd. *&7pz2#Zx`?B||?kAY5=WFL [yz%p4~t؇Æ-/.29Km&#}#Sg|M';[[a`ý&D<4dկVV{QԈyUvGׯ0=&Cs߮qo]C9c`-r "ۣFF\fq%]+6g9".$B8֑%+kJ@SHu$!aaËjoyʄ_ZT>ڶ1_Vj*$iҡG_.xe --M+R}]Kr/VݴR)X~^#Ee %dznlo.]e~1_6݀^U:Wjso)KL#H~)M֯H.RHVP5PjLYXfi~L!r#dfuњ-a3 r5:v8Y=MD ?_˓=:bٰysS--$Z&?`KH%&Z.L~t7ap1FƲNYOk`_l쐽^KSrUŧWz5\FUw|O?;^9_ŶҺH 7Z~VÔEa-77u-_?Y0z{KO{dN+~WU&L0:VQL&555ɬSI4`VNl/WS*ԲIO*x*amL,$3}Bltۄl'W%KH&H.+ɓƅ6!{@U]|':V7zcFLT{t|,45U,e>_<QC{H-76D.U.SOUN6? ??=ZQWYqׯ0a :8ƠaF+@&7!P[B&UO3>ehXAͣӎqt &3l[ &McQ=s&  %Od6uGZ~s4iĖL蕖Tݔ`3#iZgNf>uJ00{Y 2;_V}hŸ5 pys nvXUbMT[h!3٘{*1wij:4s'*פj/ 㤡 #Yߏ:~ugo^mqTPw:WM$oG&S P @աӌOY5/V@:D|2OM\>G!">ic_9۟86 IѠP_4=W|]F3ǭԹ49+K.Ovs7cxlZZ,ʼVe8qB_v7qhġyCW-lOȩʧO3Ik| Ԗ~u ~៕4wp.s=fvo,ψW#&L}HL ?,>_6agD" u T>>Zbe C'c_S4N;:BDj#|2Y sc`-r \#K@e_i!Ӄ}-"<] %\_8dqd Ϋjuhe@Ӧ kկ.SͮvwwL2/R :U[\on޾+keX+\„OtcP~D`0:4})}`F hWOhvtFçe~o1W4KA4=|'6B -Ί0e֕%W,+˜w0)rٰy)4L1۽"Ym, %K_6 ޢ['Dfg=R~j}a`pLiJ R+©XY1=wlSUVLsuMz뗼[ 7(ho*4unu\k0 WGrpj ^mqtVV[! aig 0c ,16P @աӌOY5/V@:D|2O_e|&N;:BDj#|2Y s?qlzfuuP_4=W|UX9k}kaʎWmQjE)vhgfqW4- ?CI9;L,G|jV!{@WS nCֲ`o P>=2R,Hٟ7ic_9܄oXo@3P⯯o%̲ܨ]>êawGa}b ?r / +3V\}jLC yp ՝Xeo.|"S@յ/٪c|41js@@%$<=w@&L?{ܠ acg 0%`d0:4})}`F hWOg责#D6G>|,+0g{q``a$%7蠷7KsnUGj|600+ǂg׺xm$o`o|T/ք`'~ 1i8t+?ﴴ6֖ͫeqk/>UϦY*ƭnk[1=&*I<쟠A` `M!B&UO3>ehXAͣӎqtL֯Ü#8;Lsrz].52Mm\gjP^@`(ׯAM1h84qj`G1 Wps|Ϸ[5-)ͷ왱&MLn'mmhk s4 $w XYMH|B+R8Ry~X쥭-ӓZYM ($KbP(L zHdlz/\""Ndi"8g!hJgh:a!}O3@aaqff"#P& T>`7sq1Y@X@] \a5r=zd* U2 TMЮ$6К<:TDH HPN!ƚ29| y+so9lXitth\Tz^53ʁ%m?|TO&lbe+X Bmms //hss ===mm~ei ud"DW7g?Ci[ &E3gb` z*[m׵7nx3cD_'&Oj;ɱ~ff~_t[[FwicO'ˇMg}mXpju(7kM$t JJNuX}pK 9x@p[&KT]8_ I*T m5`X+KF -}#~I#b8GE j0vȏ_W(} ÇgF*^lFEߙ1PO厎ԯƳ D< @GKK2v; `YA6hByz!6Vnjܵa5:V#We BKDNTBɄn]"H'l/ 3z 3Ufl~&'Y!Eך :01\6V:>NZ/5 <<:8fhr`v+`#@j j"JeI|͑#O|g+} 5./P*Z[`?Y$16F$Z4\, ROނ6C~\? ȨpG@\݃US'NT ZZVtz;mڄg~̵{EfPX#Ee %dz&W-gŽ)rymeM+2GjU.蘴fljҪw]iGG ÆyBUOG\9qu tҡvUssR魱cI^n`p4.66ozz›6zy \`4´}HH ѣD"fGQQ`nt\,<|3U9W 4-r Ĺ¹¹„_=O]ҺH 7Zث[u{{dfݣZe-^yTx/̸۪s{=a榱#Mw cJOT8L#A}{o%b pT,vX3auRB"*'+Q$T"=E;U `ܸB䍌<¾)04BZ%%cbb5!!Vm KjD-{jLf2xIGVMHաCtJ3 r 3 !|fX%\Yvt)W\tt9F^b,^ҥv$aa,$dLF g;9=o`'NZ_Db"MS8n@O:l@[Q,bH3r))1PidT@[4-r &L#'<0|վʊy\Eۿ|y,um+j.|bCBPY/x3EݚZnl]Qj(Z?3qg1.9s'8=՟NjnU7ޯ~f?OzE68JTEB*F$  JL̨H!kM?yr)SKUlEHttD30C=^&t]F&ďj;X !30!( J'O&pdDz :iIjh5:V#1ʀDb! $,--;hj7MЮ$6ӗnaf, =WV!k4,tsS6M11 W\ttթ昐 1\1v}B)+Hlڴ6621G )iNNppaJ_?lMZy~fNb"W5(|;\*sԨ[Sόڑf)kͱT Ḣ!ӰP_ppz]0]7v߷Wy ?c dl̽}רe{me[)5$WrcelԁN/56L7Yɚ*.9*o{w9ˏYiÄf6*~04}J7;8OO02rJOK u SSO3h̚Ue!zR ??MWj @^={姄>ZZ~$M<)[ii@(GV@Mf05^! kt|,+0g鿢ܹ&BÇCJeT O%]V&lbՁBK?Y$zzӄgMMͣLssP'``(ׯ0aZFLȩb}B}nFQ_WyWu+<j3^+TUoR33Z}KEEk?EJYrw{Mx^Aq԰84$&nHL>3|*xu)'1vfq(cMU Ͽ.؇~fy'Ob{z X3Sdӌ0] $s\Lk9s.lgzHK;B=%? ;WM$o,`+a*Puh4#SVj拕A(Ю$!|SX.ɣӎqtL֯ÜVAI=KJMHZ5(im#%<3ҥ:JUdT7+7,ut%)iҜ9b]&U-^|yΜ)) Ci[Fp(ׯ_t8W8W_Y}+;C_Q u'w7fxahW}YRE.jUH;eJZ-LsuMz뗼[ 7(hl*]?9xnT54Ԗu|GUkYTwطӝW{-M[?Mrr⊺ʒ㿼>ZX| OL_R% /.4yxLJ_ g\#40Ob/^|%Y$27W(hF.Вbb (bzR ?K:WM$o0:4})}`F hWOhvtFçe~l+~OM5)*фM:PX|Ҡ [DW[[db2ёl:>kX(l\jFfqf Tc'iOb(ׯ8+^ׯd2õ'n&ܙ_O޽\~rߦ##l2aSy̝@Y4# ó7|!)@kߍNڨ~.GX+URL MR^xK+}()D([8N][Ե4wj)I ϋɦƒsnb=]=C@ҊouFK|,]㭩>@9bzLԺ PZ] vL;|o]f jKS+ 'Zz1=NʻwW]ȧl+nF*zmf6~q+ݸ~ $hFp(ׯ_t8W8W_LAᏏ<(vrֱIj|S'-ۗW+ Z{;XK_/jj +\Wp >%2Y@`(8x ?8>>܄5xࠬ_=q8W8W_F/޶㎘[CkɺmWG8}Tef.ݺ9qK}|/@կ,G #@(6^fu醫[Wψr6$.a]!\{JHbȷ2s'F:Y\c'."~?&y:Hzf-] 0&*Lp-k@SO_u֯=ׯ0ao|o׸۹ߎѷ+L0~e crgMѺZs0뼻k=wrv?_,/:R¿@j}W757V.:euTe:&qAkRs.Xፊچvbɡ6 f=aΖݿw|޶҃G|30e.vBS4zj?_ h+5.?/]AALg 0MY [PCӧAVk4_ Bvu d la|&N;:BDj#|2Y s?q䥦'F6C~ù¹u> 1dMfoủ__us]w{o)[хZƳv\*{:l =?Z4_\mjo=ɕ&z':rS} =_;U0rqQ#_i*xUg8{0ać:VQL4w>c40 ssE%lȋ9Ԑ5%_?:)SQ9W8,*O/\e7<.dZp>:cW7 }xwGjpGjP~gvշvW]Ҕ;sC=R$1C.Xz^Ma wvׯ4?=[ׯ0=):80s` ` d6@ӧ!4LwT.eQmw#V4 YCE+3Фeg$aBC{4\A ~3g;Fb(ׯ0a b5fM-`ir>9mKY1!zFir)ey^pF«G~^EZsj{#eߝ,b u^}憺3 CZ阘]0]fR_u֯rqj@^\`C({Vt{ެiliuޫ==s)8w <\5`T544V(<%qrm+]ֶ{fΥc9Wm4 =]ooE9_ \ܫ/0aeup_mO;WM$cU%Mzjl2QBGiX:d LBI0F &pF@Nh3gV+a^W?ss 6܊kJE܌Jکc|Qw.W5ݯi9ϕI=:ߞ~ 85_a퐰YDj,Y?Wf!;$\Y=j=ڙ fξ)Է?υJ?W{KSPOl=a9w+TU{{sw& RЧ(nK=^~gS?S @`;8 ?_}8Y y TSTMM;2Z;_WGtEh230!ܡ=M~r; Qo|}h ?r ù¹}fn7իӍ7 @&LzjOEy_az"TIAOϞ&qwl?02w+@&d@ӧ!4LwT.eQmw#V4 YCE+3Фeg$aBC{4\A 9ϜnBA}}]--6nfFyoy@pQnfFX\„ SW^l6n˯bب8Wu'{ٛKBc+'e<мͣUbMX29W*yR}.<=w< $?_6$e2RO=BP5i6 \h!ӣ4G~i \AVf&VPfg$abG51^`hcdt9 v{pM$: zJ`Y?==XYfyyQx~OqoA\{ppz]rwk/'+Lb5&0w*կTHX[^zf7wŭ@pI#^=XՊJ zD6?w֯HMQHV 4}ItGURF v9bKS5T23MZ&yF&;G51~(00xδ='P#m>>P4ry)B 5{j\{ppz]r<o"1tA~U^~0YU#.f}ڪ?5nn'mmhk s4 $w XYMH|B+R8Ry~X쥭-ӓZYMUߡd,-'>zzzB250kY"=ih!s Z8%Dc?14єt7B 7:fz#! R!7,, P O ڋڝH\d$2Z;{\SU ;`EţCE+Sj|>500F`:rNAB?`M8żYt*" -ggrB,$}aJMMFGbbTT>>P&pB M4W" A7^^Tzzzr}L;J%8Wtd"DW7g??@r &L_ɏa7ALC=]u0_ڭ~|PyJ71Afoi/K]'Wf֝X?3C3ɯl:W׭Vw~SF \~y'Ħv36ف[WψrDK4իڣ+>/iҔܫo'2Y\H̏q0(@Tک@aj(KF X}#~I#b8GE j0vȏ_W(} ÇgF*^lFE0]`hh#-wt~5M?M=M|砯$1A訠a#vPNEp!6R(#dB!Qmwd* } ]J8ޞ [Af(ikk |QF&fr2W֪*HT)̕dڴ/wjiSy-\(x6V:>NZ/5 L 34A90BJ09 \ 5s5q$>ȑbbBBNDG(SU3`  ,[[k#-utx/ˍCC#h#8WxOUW}D_ 0xUnO&h ^jYuCKK4^k3߻vf~son9RTVP[^rB? O Lm$ab)) h3T;mj1k1by3ufgcǎJoKrqqOy$ykLP3<CBLLX m%1;2쌊qET\],,3+' &{ҺH 7Zث[u{{dfݣj{zRO3n]ᚇէƺpW{4-+ES\rj)}< T1 8T*;0:)!(W*ɞ"yu0n\@`LFFaa_` iڂ]]C11ښc``6 Rѽ~eKh1W@2J&3K@PPP^#QVV!ӣ0*Q~%_Iָxthe 2WZp>500F 2@Pm?_;Zf#.uwvpv& g!!e2R8Y77x#X>q夤'i |ЄMLqxaڎb[GKII&&njO#%$$gb/0W0ax:aWmMu7xGY9WP/5\Xņ.5]_g?5黴P~gvSc\rVj*Ug5k^\رyVV1"eDP0lXPbb6`gFE}G AZ:4ɥL.}V!!dHLQ@m}|lT$1:Y"QmK!teQ:y0LQP^%2rQmwU\$M11@b !S 3Y}QqPʰdHGdFג߃ҧ601Ȕei se4@Pm&T.$Qǝy-\hjiVX'boˋ˦Mmc/qqpBVff|}/Pg8hy9\M\֠EopQnM?3~P_=q8W8WS%MLzj/~eBX3"dt;so4Ѫ[TMqZF_VU隒[^;UmSusm ٨^ZkNm\`od컓5U\r5\[҈'ـjy(0>=)=.)s֑*42rNM=TA[[0kV D,vHJVCA~ zzlO }B?W&Oek}J(CPNENZZڰaXBGaTvY:E@O$LjGV^5 3 h}j`j#a3L9+p aX_34piSy-\x42~M9ۣBBy{UwI *".RG6@Iv`dxx :II '+ Wkag~(Sկr֎WCzp.U~/3Uo/Vx)TbE@\GLa„,==#D*  ]J fG(T(TP6s.#L[B1_G Mx~Dt @*8TSTMM;2Z;_WGtEh230!ܡ=MЀgvOSEGC靹sM ".RG6@ɬM=i³iie W(O0W0aZ>@Lȩ|R~1#tUwW~^c~?"NUeʞ*6 tWWNμȧ@6hp nX 7L 7DD:;v3r5ujPhK$oYz޼ɓ3=LEFF)4#Lɜ9bk%&ZjΜ))ہ<-/6Sag 0*kaaMzjl2QBGiX:d LoBI0F &pF@Nh3gDMFF<7Z摴4VkP8+zGJJyf惥KouȦnnW*o.X@KR9s%&MZ9SR'h#8WxUԯ>g nЕI>Nu~1 X.rW^_u쾯G-;Ujek[ުmq>@a]GcS1=wlSUr֪7={ֱo;{:[rS]"gzxMdT_\Ha@K23.Db3CA~8t֯H-WHވ h#Uf鎪2=Nsꗦ$khefbL9Lwhyak8h#b '4]Gj*=5@ ੈ*фM:PX|Ҡ [DW[[db2ёl:>kX(l\jFfqf Tc'a(ׯ>/+_ɾeByKrpnf͆W/<][YUuqSٺxGTdYZTsQcvcsg~=Y{~s}үYwc6^g~*5՞BJwT v{)Usš%Exٙb Щkv6^#]-"^y1X~B'6wHZsəT{in݃ZWjUޓ-M fg 0*ɛMzjl2QBGiX:d L,BI0 -@ lr -`D ,nߤ>E/=zqu_vhb|[tH_.#aͲ[׋O'^~f>ٔ>:_ W UղeW=rk4O|}EAA\Ҹn\U~F~i4h#8WxUԯl~ Go;9뇼z>{nl^|΃v?w7w|"Ŝ?_q}I~ѿ\wcOVPOh_azbUYY\B&   MYss?+(u;8[s볺n\pҮCfv|~/;[w#ۇo˞6Uœ^V}238 ߵdݏR~ׯdNNu47N\EnYt c9e!Uhw졺sX1'k 代-:Cqzª-)m9xX}3ZZo۲:n/[ڛKG-+Be~1_6v\-nhii_y{bmp˚T^.蘴fljҪw]Aդd*p)Lj)puD*ZX-BI0F &pF@Nh3gG^j*~i4h#8WxUԯؐdszխ@hQrwZwݐl~#Cί)z7?h.Y4lGbk1cp̉__usYA/logk?F_5[+qQc{->d񉤶{}r5_\mjo=ɕ&<5z ׯ0a„A:`¤Ix`%+^kA6)yq#ZT5;ňh6WV[Pp^aՃOF"[sEò_=Qv *A|pm?ғU{ˍݦmoo=EO~SST_ wqVht/.oœ_sSގ_a:80s`H F/j SҔ*(0.*רFE2-3F$O&X5~.#VÜ}\„ SԯPs1kj|~J@Us9FB8;5Ɂ쭢ثn~-eZ?;F:&fW_˂š =>($RPAgfG)j Psj{#eߝE, $j ^\`pC(L2#Q k\FЭ s?ql HA\pp~x gcstZ.+uD+o%u!8@[p3T¡r~։ƭtgUZGYuJW݄W>1k߽{fyF޳SV_d'sU_i~n\ԯt) aag 0$hz@ٻ(ᅯ;zpw1 DMLLbLb$S4Q1jԨ *4"Qts,.{;[ȼ׻7o޾yfvn@] ܈C` m/l8s:(iW)1&959rΎ3+\Q>20K$ gTZ>(nG@xz ժk+Kt(ZzBެ4^; ߨx% 0y ,Tcr۽/u+}V\aU_zzxkN ^_+20K$ gTZ>ZC'WH JRLQYMi#[R0 >dY%SM+pO.QIUoMݝ>Wumb_ӫmWFݩU {~>?h憪#>;_ANƩy.%SU*w#nU747>vsG$n_:+G )/]\z!xأV_0`K3 7B )ΜJUJɁpNe WٻJEf)23ᬘJG?S^|C;gNS] d =jj5SnG[z79 uQ݁fz[i_[v|M†􋽥hZW64>n'oViԒƘgBGW2@lgi׳Fc}Rjʘdk?9_'e.z|M_ҜkNTB< HgBeBz_jX7LL7B )ΜJUJɁpNe W 'R|e* gY16 * / NŶ<^ ~{GOs^VV]_ݢ!.U!|CJ譧3UB%ER E |ٸzY!D+~@ea@^HqtPҮRbLdsj,sgV|d8a+SI8Ί|3a74Pࢥޞðww⫭mmbB>+yat왮6<)Wr2i C}}w8yE(ﭥ% C5dO쪝 ==7 {qPxˆ+C|Kuu2uߊAD ;' 6A>>^_C+_6 0 @̐|AFp >K4vJF*;m”"SzAJMh篌`nԴ422zd$],^61S#*J9mz2YIt  ZZZf<^offSmmdppBJl}M CCGz2 ħHFTjrcU6! &Yizqwf^ΐh{]{!lX@xy޾bmCsĸ_JpKMOzFp9; X<2 &зt Z=Cj8>?h`^ Ý/ 3#"⇭vi(Y5"UK>n}T|d)+߀tcMӵB\_cĒv Z#(&;UV'xFĘ3﷪ɷ&guWv*}De` n`zz?-8""~ LH 5nxn`3lPShj#&${2ttl8s@vhފ_v/md m/l$;k*0hvÍ?fܜsj,s$*!l#fGe"SRW@Aړa6%m”"Sz+Mn$LHpk!!@Y/Ʊo' >+_}jRRZllWW+m3 eIt>xD`SS>M)A$%y׏䓦g@O毐 Ał@[IHjm{(oDџo{9-i#oz*ytim__wZ-Ue½g]EGHf8TTעHLsGMpqK_f&u.]uT!gffiK|WpU**YBa@`a05 HHHDZD:jB55 )ip/ECC@{JHEe^^6)7EFJeR#=?iSd m/l$;D::,*% +6GE 1P8Օsj,s$*!l,II АWƲ2L)iKdXzqe ^+䅊X2Fkahҋap I^1|x5PFF;bbp,TGGb<Bmm?ޗ'U=3Ʒ<=C{{P|Rbe%:l ȃ]"e{2BBz|Ig(4؁D5^u pW>*eg#(~'3[YHdZ+vȜ3?~9Y=HgNC=>JK f;[=1 (I†2lo舴Cho>nljȨwaR=H511x{%,[}qq#FIJy؁uuޘ1ULA!X,zzII#"p57>g\\Ɉv1L[]2+66vrO> [h{a#Fj %]pmfu0gf959{ɐ@ KCC)aLIXr%KĞ ,>|G߾8@2$Dޛ cw>֝6aJ) %|Ll@iP,OO'O,&',tPƓ!ֺ<=3͍^O/=) ] z2ABzbiLTh"WHFp*'p *oW, W;>_]Iֺp4{AvUs |^AQvo:DH)@(4(7 [K 7| a@׮1`zxL%P_X􅁁ql텍gN%*%@V82Gqf+Gf)23ᬘJG?S^|CEF;ii}֫aY&Mpad?8$h}΁h&QRS]+&LLuqၮO=BIW"t=IQ2OUp򪤨'ҏ_=͛#uvcI_Z>Â4Խ## ,4}/UŅ^ j}Ǘi6]57/S@G}B†#N?4}<HL~6,(Inۅ~0zt&L(2$ wwoߝ8ttJx˸qW|}g |pq&'ŻRS(+9W@A9 Xߐn!6R9Y9gǙO 'R|e* gY16  ۅXNuD\O*Ngvj*KhqTne/9rG3gna.._d&O&':82n _߃WM~uܸ$(+ؓ+UW;@i"G~okMeM\յ+8Aᯎ>JNV 腛Un^8jzϬO(Ý>#vM}ݽֶu6' Ų UTnr­ۧ׎x.ٮsN-{ہZuWcO7K| s)S'htsJ7޸;CCCKGu0?}-'G*%<ebN`D}}[/1//II;?`1-? ܈C` m/l8s:(iW)1&959rΎ3+\Q>20K$ gTZ>(nhjIIa9+vxD\"Ne<.ZX5{̀}}Muu=>Ȩޕ;fPKa(nJIAWn d =jj]ZQ' M'Sw|B>ccv<-I<ϣږs.{;1M!>^54]M JŨP&A]sOUw/|ksso/-NG1Zh2)y@͟:IU&gKnSsi6sޙ_2Г;,+j@JC$H('jma$H~F*VVOEOt@u>mh7+tnܲzj\I)  !H_<U.yv͘l L:33U{׊TKsنpX(kFI]^D%5\07[3]Q,F_$ +t//Z=B0{š:$/oz~K.?=J: >e~UΩLNU⯐ A\ >h (~%ЧP|M8mF>_8R +9Ν%8mYhkdiKZq=>˴[wޅ Pݎtѓ+$Ht=%>M iIq^UԬugq:39bGu֊2j*~+"~z'<_ees_GՋ(`|HFSĿ?i節B|h<Ň܄#6iA8n8,C9(ežYOlGQVs.kR8Ke-74PܱEKᩬ`O? PPr8O rhrƒL;,j~*M y/ZrO&8(~۫ C(fdyEf:-GyP>+JYǁ>?8Gֺ3=^m|]x'𫫴_KS}[ w|8{n+nHۢjN_ѥxG*~!8Ɖvjފ8] Acs,l節BqruCnh `7r!L2_Xaρv,iB[s% HvX*Պt^¾.|CO=ByZZu=x6;QYi# ɽ7w^aQsMs's.n$uE_]V _{&m/ :ʳL`54yԖruӨM7|k&tiJaC8\]TiM[o%òۆ#uvZcI紽Az$j]|%˃LK1ѦDz@NUm՞۷ .,\`e hzzr@ۤDaW&研 {sg N[ښ+Y@ڵRVcO2]wZnv;EO毐 AףF\W4_!7Lnϩ:YVabI{K}MvߍOay~5]XIϩ-?L~tLFrP~`c~Iˏ\,,~\UZqMO7֞YfnwxDվ?IÝ>#vM}ݽֶtYΕZYW*w#nU747>vsGLo髎^Y慣:3M W[v꿏Z?Ulʂ' oUշ4=|PϦP;mKI+VJI WB]ht\rp h節B|h%r@ۤDaW&研 {sg >e;js];8gjY:D/naExBkLe{2IjjSYl>oGe5VpQ݁fz[^|a˵ k>4smi_[Pv4]AO(Q _IKF tyX\qsnN~E5lKu-5DGSSKJ[ߛ\1-)Ljkg! mQCxM?/63uJVX5zf~Is^%#?ɳJ* |d;oUܾudn@gfJ<-CW؀Yr_0OE" Gm҂pqX"0+sP|a=ڹ柳EY5ιЮJ,{|i" @w{nU??,]\.^{}Ph&J3>ww%Ui GPV'WVV]_9^NAꕣ=/WUG0z1SS*)*#vW1#inimi,-8݁o/?n%iʘiS(g;Kl+oFWu$HR H);/mP@`@ck @!7MZ9K&epJ/@;we];x,jY:D/naExaK%/%bq.//Eq[,80AyNG`AOs^VV]_9V&;Hv'(_e[UEKVr{]R֏knD 6)R`h;e03TQQzz V1A!!1&&V}@@'Kvz/`|A(=azf )7:p3$Lpq(*,vr2+TsxDҮJ^q&cw OfTфvh }LMK###GF2刈h^^0i׫9OkP譯/RW7B Hdx33 >.֞jk{U&:?ϹTF 24,($HF$Hr'T7])mBnM$q4̝>j!>&&>C|Vjg󂡽}&:Bq>y2IqbS=c[ȑ_.o$;p -BF,VfW#CÕ/?+ ւIyr BCl_`f>f .EGk`jjm0BݏuI%;cYji1;>9E+i%AGSu gHW␛*x2L5G- 9T+Ag^o-BS2Kns%PJzx}6(,,@aA(gQLdq`y84 Wre[}Zc#&3#0;}Eu5%iqrX'ۘ7g^WyL6;Fƭ˟;$-wQͿ7.{Vf;YMśZ+wGͪF $RH;54ەpSX 9yE L;p @։&FpdD8U&g8fy**TsxDҮJ]'lxkNV vnnmmr+1D\=z;q fT_$bq`>(Ȉ6`Q|P 쏈{mi Mg8 %'@FOs^VVV\HWϟA!;WEn(kg?͟65>^iS<睩λAdWSS͉}~ FQLvi*-c̲ʪ=~ڹvN<@ $rw0+ܼPW {x MJ/KꅑQNL]G~enΐ29!7AeGM2L5G- 9T+ž^p|xb/%%EJ&I$%\uHPVŋDq..IW_;J[LBAx]Oa<?ԄrS;JR~A>i qq6::JN_!A $Hhg,X{VQޕ :?;_ K\os =" 3خ# W*#cLv 9_.2u6v~,(+[ Zn$U@(HH 7^^C0RLS]]KRR4儕AM 0F:Ѥ`D::j|LAFQ8{2vmf&cSd$ΐ29!7UeѴ Si Hvp*`z::b/9%s--~ I^1|x5PFF;bbp,TGG"0BoK:*L0jn~oC =+-d H0n%'AY_ZZZr!AB_!Z$X+#?cuLDA?٘YVJaRU9'gV?~ slWe+M_IT8/*jֺdE/!Yт $H\fe<y2 W!g\\Ɉ8i˰Cy.]C:u^ {#5tUh(>pdirL'MޒCY:p3$Lpq(*, 5}#W];8gjewchفuʾ[xJ`ߚ.l" BǁӠYNXMN8,tPƓ!ֺ<=3͍^O/=)Iɴѓ+0*$U^N'T~Xzt|%k+G3'*a3ﻋb6jF $ąa :v_[/ϼ@!@Mir}a` Ň܄#6iA8n8,C9(ežYӖJvTgL}]8xIXoY^eL`nN4y~q:(ItFKv&M/WL@ 2Cɴѓ+$H A -s*Oz\7G6W^wi{zkUxW St&Pdu&=炜nn-hROAjj69b牀B|h! p&-؍%|2q8Vs;KpiQU 9T+ұ'zv .»p (nnHHύ'Xoo`@4y⬌3;5%m48V* ڗ\9u꣙3oQUx0/d['HJ^7JOoO:nd%g@Y_ZZZr!AB_eesWrjmUG/ܬzXuUm}fBi5oYkutu?IG.UT^H?x G*w#nU747>vsGvXk+_{c~m$Hi>&v_L' 7P@d@ <Cnh `7r!L2_Xaρv,iB[s% HvX*Պt^¾. {RRXΊ)):<Y頌'ECfϞ`;uprnjji5̛GF"fԩ#=<44lxy)9  z2ABBBB8Ɖg_ɩ#$ϑ81r02BUl!{Wy'"Χ[=B$@BBBB"nyJWWH AXB z~'˴[wޅW@wsGVJ SYA_! $HLΞ=NN~&d VI_!4D+$=S>44r^_`KO 64uu)mn:q8B4aDL$ƒ9m ,(OeA;e]k^NQGx@ulQ5{WH:!/h`=ZZ[z_Ŀܜ0ԍSymn:q8B4aDL$ƒ9m i<~s\is,h'Vk24+0ʵ9 hi+QeZ{5Q7ŗ94u@x#P,D9J4INψij,@ڹ2 9.KQi+Yvڵf+ʵB@@@@@@@V,a^_`KO''m ^@; фA· n3Ň3bKE`?v.̂p˒?mnD|svY{qrF'<³z,Υ};4"e*T{8N?`vvz&=v/ _`KOpnhj0K3 p“|b!0PMZpppxFLScɜ΅vP4{~s\is,h'Vk24ދWk r EX;MMt{.++3|<Մ?Y+iβ+νdm'̧ w9z3Ksv r%{iOWHPUSgBe-- >OF@AMr ܁$GX& r>hp֟)>$X2-ses\is,h'Vk24_)^_Xle:8 `O1@@α{?nu0tvv-?|{_gwSoޓC|'>9?n.L/k4?+e4O+Bg,uTZQ,<B74?ꨫ4, ܁$GX& r>hp֟)>$X2-ses\is,h'Vk24ދWk5hi=%~_mm# M55=uupht!_ `tuNHDCPB@4[7g_;EYIkz[N=G,ڗӕn &&? Z;UٱR;3}m>OP6`%Z1Z{q*jG˃M|ߝ~/ncO7hP=AM(s}sᩯ 4[t@S?Ep“|b!0PMZpppxFLScɜ΅vP4~s\is,h'Vk24ދWk5U匿e`pϏrzK/}}'a.^{}Ph&  D@Fhߺg:/ϱm] *ut îo%@/D+?=Xl7lᖌ\`Ɔ}\Ķ.^ZyttTn^( twtF /R//'Zjj@AMr}-@x#P,D9J4INψij,@ڹ2 9.KQi+Yvڵf+ʵ:fhT"R"::/" mXcl=;g/x{j^ ݁{aw/7}<ݿ9!;=O8+e}H/'a_؉m _}F7&J!zsse?}ٜXiyUޟo?>}|9C>u&ss#I,qϚ!Ed[y̩=o 9セ=Wclќ9yGK;b_[r@Ϝs~t%]N7l}v{3c0(L C}}w8yE(ﭥ% C5dO쪝 ==7 {qP=!bi9DOϋϷTWki,-SXY@L]]7Ds"Q@`oh %̶ F`QֶQ~<fȑcb`@(N'[& {!##bMWrDD a(M^^|>Xޟ8'DשG ~1koN~ޮQ1o?fP`?K+qtҁreM v[q}E|\,y|=s;Zj/n~gHOw6_mQ| h #R$~e|Ŧzƶ#8\Hpgw,bF[:X~ͮ %+F}hR-ۢKz.}NM b1BئC~-=?h+Ri2Y^L̵[1 ws84@srccK~zY#x{@==w GD!ۆȋ[z[KK3+0=9:@`03"" @, =ҋ⃲_~66&!f4L˽{sDXAM-<d'I͉m$GEk?cϜ O_Rv,-TÃnnStvrd"--&CCp%W&+էϹ5>>6JoosWPЙ|lX8 ڔcc뗣YmWb!;8]"eIdmhWN rBSAxfx~3;_ujhxs>/Ybk%qIQ7ѾS?iۏlgّ[N#s1X|ofvz׻>~l5QOih l]o9)%rJUNmg{':ltN!{'zmWg_xP4>n>:tOG nܯOSCm|fgTAavE۳*k*KrӎUsޱN1ooμZYs$g$4MM)s'ƞ9yhL> NAX*h`!YPqY͍D41j4M PfGYw>S¢A ܆Vbbosۉ.ɉz"ww$A(H8=8m}Pmx@mi Mg8 tMI䧭͡sn'7 |33Eӕ0wy'eg&֧D?Fj*󏮊u{'׎IJ`oX:r:%/odOW/2yo~gY_G 7 icOK&eݔ|`^oә> J<.rCY3-S?mj}K-Ӧy;S;,˥ZdNv=U>5ڜ`._kE`W>"YyV씹i:_匑^Ż^ib | 0==An }q]&C$zd7 yZ>%}{z)sj{ ћ9Bxڻ\0AV&ZF~7K/-_r! + 4=" 3خ# W*kQv毚寻SCl{{ֆ$q{+YnciOaU8(2,'`j䵈u̝C1jjjR ;0^v283DxAYAh&b"#%9I\NXԴJ +b!0JRRD::j|LAN H|2Ňx/a6GE 1P&0C4eQpbnwi΂p˒?mn%jeb)FԊi蘝|vuC;5͵ț9${nO'z@툉<@0jn~oC =+-d (5|g7D* " 8sb~}vǾcy9vӏd]~M߳c?uu6{;a^S}'O]ټ&O~oy7L!wg1 |0#ܳi+1~?=q0O*̚kAY)h^'ӣ[p"픻=q_Yt5;yOWķ{^[3#+;7ݛ!~a5"Y?xǜ@.?&23VD?񓍙e,LufsĎ {;dəՏ?,UI߃~f4IT8/*jֺd]D[MFLo6s Kl{G50p=_6@@rv@]7fLSx}RR:/1/?Wk{LZ`0vqqޕEqdf.F`AQ xoGs5ĬDI4ԘD ($  _ XW^zut<{eKh3Cst|i[35tMP{-#ʨ(flC$矷[Ct PgGٽO9B鍜kB6Ď Š/Q`fأ@ď YP0Wd8W:Gs5La9:lR`ǣYBw{BZX]nn^H$$lrx?6!z2e0RTrl!axo0p_O72>e>a+fqq 3x{ғzv{D{9;{F>:z`+㓣üT.^Q_L{7opӾ?ב 9ݯ=JW7ju;ދӇw @I.pYp8#T`_xUדC}or;Xw/ۼJOmWUup_=85?0+l,ؾtM܃eznu{wJui^[?zOMRpL\7րc7İ̔G_rG陡L#a&[a ȐL;P#BڒيE6 E=vlq 'r$7Ď)(Ao{w'Wy8Eսt-fάLN8bġS+ѯyx zȔi ;QN\$9EE-3&?+lCeΞ6IÆCь^* 1dȮ/`dF~NdW@d6EtˑЀdb{@4tMf<7vk$9{D\C; cv ŏ?66dA?vN;vy0E_]af19$gss(-:'Y1om{#u7 nWW޻ǡ *+k >6ygVW޷d)L+5۴7Vl"}\'&UXkM ^k^{ոr|mW]nWXX8LX=)7@/p;(hPlj*¶ʺ>P"21h2'.5S^hFZYe2Xv]lip+ C2@z@^ hKf+DCdƃxc\AG54ȱ;l<@ď YЧyӎ]ka-_jnsV|n*E,k ĒYf:dFRccWK~..رZGG f<7ShܭĆ*l? >ItMbTVfV*شF,b[.>zⰦ7F Jdr'v܇aU͕Rc#csp4FK٤#/))x֓~EW7ErԨ= $$l/毀 ɴE:yI\ 4- ]d]sgvx"NCX?66dA?vN;vy0\ Oc{߾ 6|γab# "篲fϾշ w]OI$W$չWy&+Q&4YWġWVݿswk$E@8gR*"ZwҤ3 B y~9ݣ>64vZt ka VwPz:uj"+؁Wj_N]5% KƯ?a ȫ]}lw0:`J9_t.hWf0N :,Z}GmEkyl·V>(X;Ff"tčY50Unflbڮ۵Z)]Mx.6\\G9wU]Փ=V*opINv&"c#sn8KCͬㇾՙ¶|1]Kth⿻S~~sAƲ3‡|wƶ9e^ݾld=V"sR5i!nVf#i<=" (Z$G6 ) ]w3ٻݹY,&WNMd;\J!;3,~'_=^[;3WTqj(eO͏5dz≠W)}ܬ}8>{^棐)~#;괜:gy Y߂Uql䪋5MMe8`G[~tgK7ҳpsoJsys5ncO_p$!a!}G2MYi ݐimˬE؆xꈫS~4y k,\3϶PH0lFH*0v毀턄jjj,?D3Zj>GkW65Uڜ& 74>5 ^v}:7U ʀMvuۜ+ژ>r[[S<K5 _mSŵ#|}g}b%3ĥ۰hoXfv$*]l} a 4-) fXX ضZm(:I`@f =Ǯ`XNU`"_۝pddD.p5T}aI+pgg.|^_y"KB f<^;WA@@@@@W tD"KN~(>a꓿45 ݐimˬE؆xꈫS~4y k,\3϶PH0lFH*0va; *(ť%N(jEoqWO{^mH_{eM`ctm~:gǕl_"uHπ}G z /jp]a\B܆ϭț:x0 [0H/cTC90dLSYl[[@!ۖY W<>i<=" Xfm`XNU`"_=Ϝ:gg}|hMQRp>OOf`/|p//G谗WKNf:VF(9ִ3ϼ`ꆆe|T+ nVTה^/ݹzFZ}TLmg&v,%fb>tQҢӿ| DV,}{zۺ`FPzlO߸_S_[q3n~t3Mr癛k"V]6/ >M#|PyoWu{X4atUʼnYN62cB=0{͞+UƊߊmm`o}r#|](qb#kU45q=~5- S??x%J{L];㳳c l_RW@l)K0K2mHP \qu#2X{-=A2{d]oC! !/E2{_ 63mn~!89=L){6(RH頠||f(FF{}}O?hǧ-ma vUSSoM/}o ri*2KN&,x2Pdg%K܂gwƨavRLюr.aSi~ZJ6S~ygl*ݟt`7ښ+k'h=mFRٟh"?~n?%;>l-8i0!tOAg_]/tt0 (;Yꗣ\D֏pokݼ̍Ҫښ;{^G9Z_T+OrpO}yかŕ\:l {דv읰K~8l毀Lij>l n4ƶe"ElCDIPvm?rۖzғjQcMMՅL t4KIo;*|@gk3k/}uⱄWc_8OB;~}C+޿zrRJ7=n_62&ٹGXo?qVS"3/@W`B,)NX^0-x]d~~V8R*Zm^B¥_ehtOe@j%&^D14NR[AA.8Q6wx510*jyX \~{ka24?'8̌=VgD߳#ڣ׆#YAa>ⱳ_Dl^ML@qXLR=z5S)G#EAZȖ :?OG\AỘ,:I0Rꔲz"=6DgH73s<{\1Qo0@sedOB抽(<|"Jl`@;R >> }@;; B-o)@xTz9Zy -DEqUAV{%1F߾'{40Q"8 .A"r߀,B$>"\"YA"x2\tjR\"ʝ}c%[>Hl!͏ZU#WU>WTƦ}3~sʒk?451p҇Ya>l;rNeuyc{W;ƹU΅{W~5Ou'Gt 쒺bҪ?;?^~ȭuJo~v+qXw(/jGUgWMwcc<(3ierJ-Ǥ3@& PvsTd{CvT"51q`jbbvd^PV'Mgzx̱Ma#ݬBQhZhDZȖM"tY0L")Ox:]cP W<` zIc3L>̳ss^"nſtHmn_J))}))PVMHr$N _J%ᱝm:ؿB"a7d;166g̓VOwscH%ħ _OW8m^ϕ8>{^{Nw ywr2|WW)}ݕrO20:uʏս_d&TPٍ_yw8 {_*u ^1xp@nQ(AYF|`)fDP67\vT"^60=bddF|YQo ]=_IU?rEo Rd"ElxOG\`t#=6DϜFT?'Gع:bN`w؋Cdtp٭'Mrs򪐐@ I Wwo\\ojl"Hw7T{gq 4W.VcU7lvU_\;'y/V2K\'_h5w?}͂_^GEx~_6Uf6iѩ,(LI9PH좣?={&'ϡi(L-dpcZ{!DV~XN~l'DR(Lݕ= MM Uh?HYٲnPA#[iOG\twlWR$T:p=p 3#14͌L>̳s8W"' U2WEuFם݊)aHVmnOsr ;?2[puN*LLMKc,xA\U\h?(~n4qx3pvK"+HWmkjtфՍ<9i9;۵i9r{h+%u=kcIXa/ Ondn;s\'__5ܫ!+rD}JW!E/L}?}&03s Kk7;;3殹1B%Xz!Sin~m@4vl)v<95u <88$j6X#PmRҕ#edR&ZСqt,Ȁ is)b:F|崏b":]TF d:y/z"=6̊(83\̳Ǯ` Lw"#b/ ?ắם݊)mPPFkg=, 6MHK kC+N!S{f7Y*ݗJB" hOWy:R`JO>85?0+l,ؾtM܃eOjj]9&\BO,/_mPpL\7րe7İ̔G_rG陡L#a'pɧ毀Lij5¢0@!ۖY W<>i<=" Xfm`XNU`"_}GkoO`)٫V*Ep?6U2cɓ /+;'"3<='k4 *$+jț=WWN{yc ^AK13ogO5 q~Prj{Vy8՟^웺`ik{թ G84u*Zp%:5!P|w>|?f ɓd2cgeMxyнl{Ӧݝ4pذ}va}ǼQ ۯiRҕV:]J:w*o$r%DVH~~K2\$2SNti<=" (:l$G6 ) ]+ w{Pz:uj"+HW-_$+'Dfp.mS 褛ÂHq!a YL# Ȑio S m-25t/4F(ܘ`y\;zFfQp-?%xZAN>գSNHغ$+B78=)oc+?SW@DZ%P@*B[dj^hiP1]e5w̢e5m?zIq@z'GFzP 'f\:5$+"8i p ~ؾC#_15K0M"1нpck5qE!?sN k;<2_aw;!aHiB.@a a Ȑ?,"SCB Lc*.֘sgD` Go_"Ϲ^;' _H_0턄K" .Y'ݓ n;.C>0dH4 @h@cL -0 7lXcWαY2lݲ\/3:_H_0lrnW(­ ADuu5k̙wߵ+V=zO@@WjHӡ"O(p|!S@ /X[B[dj^hiP1]e5w̢ [9Kz'| 毰Zr\\Z '_t=խ\2))iѹ.b__^xaݺuo]555J͛4ξ$E@D.ۋN+G$r:܎QvR8!SYl[[@h@cL -0 7lXcWαY2}a?zI0VP##}vzş9;cOuΠi 21444Cj`lo@(jL*F=dȐ|Jƍ(Ɣ+VΝۺ]l۶ N^_n81+Ffb,[(\fsbՉT_lmQrƻ?j-Xp[vʇ.+E0ػv읰W~I#_i)K0K1нpck5qE!K-  WCBz_F69<%~~x:t)$tPO>>3 K#L0[HdIo Ņ nذsC /_y؀~]\W^W^W~0$$b;nn&_Zan?eju[>9!+I1dȐUVş~i޼y(5kuyyy >ĉa ?z꯿|g__nB8>ԪlXyz\ƲC/tާQjWMlYzopcyX$ETPvh[*A& hoa)R4C*50ZHV8Z ;RXK ~D|y zF{>TfH$FF2  0n>/zFߩ11P 0'22 6.25P1W-3311z*.(7P6Z:CIE!Z<3 =<΅4ҭףJ0Wr !ck`t\s#,'z۷ٳ0..j\]}Y63;omߟOi׫ؘǀ5Pn@:;O\0vXb╾}ooJ$C3D*>!rlш~ esyW vuW/CsCjuHd=?ͨ=<  |.08:ډŔ!hأQ3 {RQH~"SeZt27ƔR,]p3lXc f1%HSs:zFfQp<f̌'gq.aU2Wr%Xw҃9l 8 n`fy=_ =8;Y[[PE,j1"UcZ}@Gqqǵ`0!h::B\|D2P?K H!DVWUc=_:fϞ}fʕvq||| v…tg۶m/NNN -{)((uvv"R;U!CoU=rNYu}}{Eܮilj(73!jG?_+,GSg/}xYa>l;rNeuyc{W;ƹU΅{W~5Ou\wBV{=%uU^;w~[υRTOq}#OY)g9u(bSSE4 ;VyPf*\唔[&&IIg S ,-6C턩DjkbɼVOtsάck7.C| c(`YR}mm-R4{z"Eʴ1i :]p3lXc>캇**.Xψ,  r9=3 =<΅z?Wr$kR&9czdo= ݾy 7RR7SR65=t%>>I J.c;a{liuxDnvcl,̓VOwscH%ħ`;7OIIGwRBqx8ϟ?\|ӳwڥh/^w%~kb6^JT=uo 3Pw߼`~`+cX;2?7J&ϰ՗Xw5q,U{>C6\q=quWbSSωF&6^aC-[jUwOfwޗJ݂W \5[~PjQ*2N40@$Od:ĀM8𲁁q##3ڤzc 2zWR);ÐTZNhMAL i%bL$U?ǘYe5$Dc=#(d8lU(aD!3nȞB=+d;LzGq+#dOvsU!!k##Axx*ǹI$ 8?܅ԽMLN$'#BcIWm  CB"z66H=p 'SS,-O=,17?$GSSrM| AgAQQ… ~q2S\IP΢U]ƹfа`<>'tǪo ٜvOv_dfǸO15pzףt{_{7.ܹs TxLPtK3J!SR)%h%`Ϟ6:6scg J##C \X%Gch(ޮ{r~vd"+?,'?L")Iԗqqn2(wwW0l¡CՇ)RdjL+cN)C9%14aLٛ.U\6X1P ]&]IIBt]AT:pNXψ, W1a7d?s!7 {b쐹B[/X7@0:=9xz޲zl3GFFv{<__(y@ܞM+=^:01 ^p6-yRZܟUV.a A 'ogjw͝;w:]?\.{nko~ 9N]<Ut kjtфՍQ^q*x_3c@\ZyИ1w]nj*@2n Dcǖr9awJSS푰 ~SCBۭfS:}ٸq&%]1ZFI,e GG}lH]djL+c&~VDE|*kLWq` @K٭ʚk訫ʣ$8E!V3CO>\MÞw"#鹲{s,=EjeTלȀbcbgX⵰0Z<<<ܼfIH5bIWamh!C6d`LF:KRSU؎+v_U*Ue%Aq>lܸƦz+Vt;vhuoޒ'+β1WUup_=85?P{+ /j0`YްKg݃}쬄Q_>uЁ*T">M;iRa'.x4ǟJ탂f ++t ii;=2q߀YAZ@#_ii##m-25t/4F(ܘ`y\;zFfQpxr/-  W 3<';EkXqF+LK+:j̛ͩ*X5mFf&>TK3v Ruaii( c@ ֯_E֭[SSSw}nɽ[nk׮EFF5*;;;336ɍ'tK@WO%fb>tQҢӿ| QJֶ=W[j7dڵ$~⟀:&z4`@@I73Ay;Abƍ666%%%ڃ;wb"33sРAW&m "h!lS 2$M{)*6zZ@,ޘl-V/ac ] gl}6$㏐ TNaw;!aWB-'KJJ- S`ڵ`^ߓ_LLb)o&ЕV~=0dHf3P4KSE"@fl= - XoL q̰my. GHZgektؐ?BW\(;PE5fdwpXLD W nݢ3T׮]5jTUUUvvvff&%!`>w&EEE .틶?9sMW] P' W@dځY@&2d^hzcj[dm'vQ`!!ܺ+W&%%=-y[[&L I"},! v2 ]iW@d6Ei@aaȬb{덩"n6-E @"6>rGkv` $ܮP['##rkly;?v lhh;vxyy}vvv7osؘb ܹs[xxƍn}}WwĴQFUTT45?hhZLR__sM6lPTo&V?z!C8p?T*7nDsEr$+'{AǡZ}@$Rt0C2@Q:PG `m Ȭb{덩"n6-E @vkɖGaC_>y\qM@_aw{Z%常 ڊW<9rӓKKKkkk~6;}{}Щ˗o޼9666 ~ScQQQH*f֭n 4h4B;; !\ϟ?R'ăf͚zرOnn.&hEQ$:ՒU g{ xpu77looYf%''wiIIIYf ]\nO8~w̶ÇiMCCÜ9sm۶gϞgyBKtܹs ,8u?!!!++%nݚΕrrr}vK-bjΞ= &ݻ`?!CVZEyio;889r֤ڵ\-;tĬD_'HlpfϕN<ƊߊU'RZ ֟ȖY{??h%r{K9<']A<8!@Q#g)*6zZ@,ޘl-V/ac ] .b#a#!/<&P`w 毐?.67@K&HJpM>t)$tPO>>3 K#L0[Hd1EE/vn>'W^!!!=-'NyR\t)00pذa_}ը҇_7o?O(WWW?@KJJ[r~0REccǎmೳ~@ٳgyyyKoݺ.VVVӇiА1翭K/,8܊ղJWt0 (;WIGZsQ.V"k41UXi+^xJ8lz*l/?0ڱwF<8!vh>LG VUlt/Xb15Zĭ^2ƶ(0!#.b-25:lH!+ +n?ma77|XZan?dlZ`ecEO6uNC"4hz[p!ڶmFA~eɩ%Oս뎎7o޿RD~bOV<ݻw{yy:to V(sAAAKfiԨQ\7]~ݩeoܝ>}̙@3??%gϞ ~ʕ[>;m lҫWI_! j}jllTfH$FF2  33|%_o?S(I9 րgbblPC7 A_)L`}"n9;$] ɺ&7e(0!eaw [fF4sU,z]4Wz{w $;aۣ_ۂYgeu5.zC6yzɍy cIW S(d2X,60"-,>eZ56660PLU.hl~\9T:J$2#p tly;p]իAAAOޯCyy癚˗/{zzs~~~hh-[/yk֬% i]aaacƌa=//oݺ+<|+ t]իW]xGYiiB8~xG?lKÇ')ΓjQcMMՅL t4KwGQmO6ْdӳnlzl A Хi"x"!SQDV ҄H'$n.\'wfNBf3{s2#s{Pypc|]]}c=`eWc+9Vjkyz7Od֠7^@VZ7wPfhM2${U颂38]sSΎO]XZA'?w@)' %99'IH/0&$V@]3vr<,Q(ы Q*<9Ovr_W0hB0Z}x^_ߪﻓ7BשݏGtZwVn#ӳ%%7l$ C=?6/ #晔s&i4l$l#V7ے!zȀ Ҡy&cxx/pD&@ޘj.6VV]<< vpC 8"EmY3 2'FkГ"NV6pOE#&`TB#mN(= +`@%zVZZ) iPHlV||r.?Ju>?z;_sr^=', ]$l^ Ke$))ٙxnj[K]ff٦'yx{b+`ݿݲ^.kzDە{ }kƆF :<yjmLHē;oG?2?󠹊_'ss$u\W6$1m:u&Z [}$&T @dfVB`\yг ꎎa))a\pIFWؽ^vi^V;;(+Ҋ/Uy:: `T@/NI¤n 4"8]$/?豂MSCBlms'*I*EOvss@k"Fr =%q/ [vv 1Ey#sF3f̟نuuuof^^ސ!Cv;w>1>zGmL̖ࠏ*omW׷9g}6mڴӧE;/XvmұWW/v34ٯQ(jz*n!T&׎}1Zw|X‚͊.ψܔ>x`DX 8^Ύ [}Vs'o__O>DG>AN"?ZILOw!C#3Wu5rK kk&c {Rf8nHlSQgYYtD`6}?egW֯ .vhͱ V6 h̉њ97$M&7c>#1GLP)-*#6g6' WzUc*,4V&"Jx62b!Y4[))`PK=(rrqJxx?Z*(asu}}QRڽP2ΌLU6tz޽y+b$xyf[B\) Mh///`/:2dH߾}_phillLNN^|9;w|6^z;RWW'W_}m~2lذ޽{;vzjk~l/>nڙ\mA.`o.vN+ 7s4o_arȻ]::2Ç`#'S{{mtȒ׷СW bFGǀ?$aB$&ҷ`)f柏LcԋÇ//t@όm&ck`U}D=S\rC  A[n0n2-xx91Z@=೉Y׵Ĩ4h/aڶ{pˬ>}˟DDV?7nh)h^?ի2W^c5k,^~es/_> ɚ5k c܏!#Ջnx6&c|_7VYB/'_oaoMveNW(ό[OM2#ۢR%'ύ,[G&&:` rB\>d3XW@`S F}Vb" ̓m-hM6o]!x /?דsB <} TB(9Pd\w'+ Y/>\jZe0$TQWI1=6[ ]=3(.qq4r$FX<:<f_;GŢ"G{Nw{۷ f̘VWTTx{{ڵ Y 6ya[:tʕ+aaa-j^ :0/]m-]}G2`z Ν2dD")..nj~0`Bw+, ӧO[vƍy䑩SvX~*4udZD脟~1pcCb_'1uu㠰,qvkoij߬׎v/;Gɓw_>pqK_ [tG>KM}~'^9d~aaC⦌eԨ`$&#*^~#~mE(.u 6yp+CS'v\;j)'/[њ;l޺BS @KtqR橧"#:9تTQ#ǎ=wQڟm pO\nm-SOx.0Bbk^p [ƍ;>%5" <8!~u@>#]׎ZA ƶb&.Tdr*(+ծpU|]Td'SpG%_E&x"^d,:urBF"Qd]`ўa Z\^3c yrܸA..rkkaQQ:1E|㫼\V/ ɳ>;`z]fSHHHRRRLL̉'PQZZڶmiR{977{o~W޴!uc~OHH6i?~xڛJ;毨t WS6B.U3o}f2gΜM6nzim0xk׮ !Yf͆ -6'Oy?X [nuww?cٷ?|駘q„ ES+* /4$^2jA~~?H{ ~=Wtv˒۷?<9FGG^,ٳg>|N =`cÇ KKK֥KS~O)SP9d)PYP&g]WwX*|#> <ё T, pj-1bN -`Sa!~l %L+.!CWݵ\Yf毨`r^ʕ+V?W^_|^S~BWT r@E*֡h'O>`G({'\]n @Bl7Fy:o-v[#qGXh23yB ;K,f$ݞ:EJ 0mF!_;̝;WR裏n޼S~O- _QyxL,!!ۤRmHN3FEq>+w,B#><ё T, pj-1bN -E=bOw&3'0λbF;+`|/%/0%J)C]]0 #zcطhҝ!!r10ڄB<̘w4!۷kzO)?D~*f_U657B`+ʝQ齦V2Y@l솰Ijͦz kk[|l͕w4!G^S~O-yW図Y.746T\.Òzir>|B{Zs~.RlSv~CS?m)JY2s(dds縸 ޳hWr ̘_u(!/W^S~ b>AyK4VlJFo4=9x}󹏾ZȁU٨Xvgj8:I$r]NNDbJe8Pr;9DD,a{ tIJeDTjv)f2BӳR%yJ$2\Y0B8C:Fl4bBkc"E&ݿq z`~_d^+ERRr\]>e_CQ1Z\ΣA1#(Խ>aܟg@)@cFrMBr, tpl%4V\ w6 aF"q939铨(# bb~3$vqs+rq9O 33]]!vٔd2ZࠖT$"C&I$z[q>> .9ҹO#}VpIrrZCo_QS~OOnם 9t۷˖tʔWY W>/;7&߳+V6Kx5VcvNj_X'2k/Ԣ٩use{);QM7E=g~qOVļKky #<$6BBp $$VTw |}' IaOnni.HLB2ãgl천&'$cS%rsRSwtcb>lݴMNN AAsvaorf~Tꔜ5ŒHM>?SW"q|c1j]k++&X_w PAGœxV2<&w, `xECocmy4CMBˆ H |gϷɦZBcŵp ,_[[l0egF;0${W,߉ #"懇z-4t/Pzxx"d$UTb0hrT"1Jssu鲯S%11ZbQt4*)鷬ܽ/Q:7 ސj~8;[緣~=QwJNNH1f\+{S~o.~**U{xo4$.uڛWbMk[&G{U];ƥjcnpk]/UUW\.ݳ 0}U>9Ovr_W0hB0U}x^_ߪﻓ7BRN_՜xsoƫ԰+O[Fr'p$@ ${_:xB<>qvz@$ mJӿf[22;8@]0]4#d fa$w&֌m 4y*8*1Zm2cce! `xE"6L6:Y#HbpZBcŵp -Xa$BTF;($H$2l }(;T󡮷5'EsEH刈 A$\O✝y wV($effm,H~B@azPP'f_;߬S~sSHe貖JU}22tܦkm9*TL?~x}ۘ'w;Tne~PAs N|E&!{W8j53nwUR6*-+}Õwʀ}juW k4@<z<":A1,%#́ . ۈuR"6أw.jg5L䯔J+N XlǙl9ۦ6_uUĀ oHWW@&]Cv^! aȠ q iXq-ܱ;'8BtQ#owPHX [F@}A|,LJ@p'EH+(ؔ;5$11 x"ϑ=Rtd77WL*k"Fr =%q/ [vv +EohS~OO+玗|~WlJ߆{~ܸW79$$v'oVTvyFlW#ºO]*vvLފU:@~]޸հ_+O[&F)ߡVwR(bbڿOԐr%O[Frc8l|jo~YrsW:􊣣СA#XNXE1D:lX E-(bE=vƨyy~fl3[s_Z#Zn ktDEHǀjqO=ü 07F|37RRE%绌n&]Cv^! `槦=pl%4V\ w@aF"w&gs!U# N=S~)1Y_IJxeN|<<+++CEm7)?\T,2udZD脟~1ĸycCb_ҼAaY Eo qC]Dn)&}V{q:Ӗ  w_>pqFizKAA}"?X YH0gt#Go?,lH\ܔ㯌Uֿ2bQ+6vR߾OX>bıo-RŻا2?rPqyNI`!Otd3: `mKL뼵ؽCKpzj{ʸ#,ďM4رr;;UHH_ĉ{). eܸ\\A>QQø-Rt(O`*:?vCfubk5ۖyk{'ܢ;BDJVI]Bdg1# *_+{+ll)*"\_IWI1˧NupH2sW??Xg0V$̘fq7nPxxaXT!_.K.ԩSUU| o(?b+cb 3#}\]|"3 Z٦TuW/P,+=}5g{yp OA 7 $,)]!C))} -=ش]C?=g{?_d*i$XPT'xO`* '+ <ё T, pj-1bN -E=bOw&3'0λbF,Th1E2gʕP_`A=~cǎQ~O)S+*C-_Mrfڴ ]W"fμaUBW, |~+_ED liꡕ/(/_VTѣG/\S~O- _Q"$.4$^2jA~~?H`fW_}ux3fӡʕ+/^S~BWT 0ݿo'.fv Wtvʍ7|IFS^~g/Ϝ9S~O- _QAB EE;Kh`3.+w, F}Vb" y#Y#(o[bZZ3{`Sa!~l %L+.! 毰kw;EAs撛7/^?~=zٳS~O-WgN*THD&a+TtLdDB ˾}+*Sݍ7n:uI֭[N)?KhJG=@PPt@OW7,]'#>V"@v®l [.W'Њaj@e91C%o]ĉ%1b3B> `߿bjh+#555/S _Q@>W=0}y8 T>J#«⭋ b#PlEaqGo2`q'N( a 毰A.Ur9Y44W~?ڵ+?xTh $죠`bg+UuёmUxkZ1 BL6""&`rK8$&TlFӇ,T"v Wt,C˵kO)?\~*4Er}Wo5,@T ;WaEGW[ h05G2PDɡ炷.aďP!OPa)( _ 6lƍ\ĉ_{5O)?\~*4EEHz0V{`pAv_mXe@\]^o],0N dC-r s}49&6'yďP!OPa ["\VƆ2f_;&LW^uuu=u[.?Bɑ@ G:_R?m** }r'a3"({'\]#«⭋ b#PlE"ELPs[0qGIL،X0EX >R6?{!a (ă y7!??֬YS~oTh $#7d2f &jCBv1* _i>nXB#>ٹ .:- o-޺X`\@+A9ɆZ rXL<u '~Ąy0 WB=X._{I|00duRJ$PW-*_ o J;CBbFa x+Eo7\x1###::W^ܿI)?O*swINj^SXzтXk o1~*odF+V/RwfYj|7Owիr[NoÅ~?X\ކlaa6Av_y} (EF}F\]^o],0N dC-r 5>|>޾㱸84`HdC'n V;l`;ŇAqfЌ+>^xO8,7o9s3Ay{gS24~ ambx[ku>Hk/+^=vrSoҵ&Vvgj8:I$r]NNDbJe8Pr;9DD,a{ tIJeDTjv) 2BӳR%yJ$2\Y0B8C:Fl4bBkc"i8~ɨ^1(`/2R>H0b[JJ+ P 8l1 Z<pS6 FK˵` ^03/c<0HO'PlEa286'۸/=(8V`rЁ #ST&wVr*+ 4Bgff~n]6%ii* '*VG;8rD.89-`{vswdv1Kt`FU(llb`OqMM\\ܿod,,,=z4[4?_5%vBG}lQ} 1:Og[L {Pypc|]]}c=`eWc+9VjknwFݔ.>Y^xN;(3 p L|I&FېOt L{ǻrxN+DF[DFZhX__EH`S@pܘ*T=Cin.]u$&FP,F_%%U`&oH ÇiP?PLt7;I_''[`3HWY&773޼yS=zS~O-jOwRŻN]^]__{#^ipmhqkTmԭwRXajbX9kwTU]qtϦ.Uo>@9Y:uݯ99@/.@]6/GDhB%}Kx[7B%.3L٦'yx{b+`ݿ>ȰaÖ.]ʵ2}@ Dfj+ 5Gг ꎎa))a\pIFWؽ^vi^V;;(:,OsӯexW]5Ǚ c^Z,Qzt^Z^ Ơ;R\PT&jaJ$`XȴB@dl#Hnېm++wN>, >~qJ P&%uhq"$xGl͝ek[S~Sh+UcmsK]Lo?M4kΛ2 7^q/nrHH|(_rj?<#zrSaݧ.xUC]|rk|-F톊c-1e^zvWoXk*=c{3CG|\ˋCP;) #[B[0$3chc66qyRZ}<6EA[٧癨(Lnh1 pp0β-cem~ή_?N2d, BiQQX[[Њn#nyiy-c쐎xTG@c4 !PlE&ŻiXȴB@dl`4V`X8(qh '{ǻrxNk[:݌_zn@pv^SËERj[8WYч (yAϭݻ  !TjC׮ݛ"Fתl,$\) +EoWݸqS~O-e䯜m\5~IF[lu`" 2]¿kT ,-=%<]JÍ}+f:MwxBvqK;t_~e:]¿*wK]rO_hD*p 7^$=tGGCF`lc@Q\ tذr!nR[Pd=v2F~f2`~]G3Šp c^,ZElk|611協יM%L* A䰐iƁ8Ɠ= +ZX6%ކN=À0D>8}Y;uZ]jKJRҔ@Gw-s"GHL:DE>moo_:X3BC1B_rKA ̘_;wڵk\]/ڮ]Ξ=S~O-{޿zխ$y/1tbRȺzG?zɰol+ L_}Yګܧi}]͗k my_R5H>}6dlJ<7"b yVD𑉉5C"6A6"}7,#>+1ٹ .:- o-޺X`\@+A9ɆZ rXL<u '~Ąy0 Vʊw'+ Y/>\jZe0$TWI1=6[ ]=3(.qq4r$FX<:<4 xBLIIYp!|~M3߽?R.wׅ%vҚI8*"ajT }^h`3HW,;U2jY44c2pQFݼyS~O0~*4EHABIJ.FbPv~ QzEȉ' u:ݪU(?ABWT;EGݿo'lxNo;E\+{[ICCɓ'ď?FEEeeeݻS~O- _Qwy;SEE;Kf]W~e@\]^o],0N dC-r Z>|n$lBlQ؄19YK*Xvp\ND liB?OJJjlldoݺL)?O毨PixqvGAaF毀r3 vKpC𺙬Hhd]n " ן)q*|BlQ؄19YK*_v Wt{M6a}JO)?h~*4EJ{[ 30e\, e7#>Q`!O7 ɊyA& 9p 7"G(*M3Hnď0{jh[1EooTWW'''o߾m1cƜ9s(?r NwȲV)3RG:Ao'99P] dEB `rcٜ`Nqs7^6Qn(lA,p%~k毰 :=hu66g4W~|r={_m׾(?\T,+u毨X@C&0Hǁ^T緭CEEѮ?`)Շ̀")TBu3Y:/$XD6'2?Sa&TE٢ cr fU]>R6?{!a (Ì+սKUUٳ͛O>S~O ~*4EJۊc&"⸹ 0KH6TӌQQg毀rp(4S<<ES. f"u^Iv1lNd0\nxM uEa f/#^0Ż򥾾G  CX[[gkk++D*uu̮E^o T3$^.fFQ_=RZZZTT.%KP~O)OłWM͍й;ʤr'Tz)m,h}mL}r^eۣ%9}wRwfYjͥZΜ[ A$^1V [oƘ) 毀rp(2S5vKpC𺙬Hhd]n " ן)nxq%af& $_GVa  s2>>޾㱸8l%!X%2Pl&66"""/?>,=maP#4WyΝ;S~ SUl}ֆ 5~߲О֜l5y6|H߼_ BOᡩ,lT}/+*H0iiex1c,Ep+i>>")TBu3Y:/$XD6'2?Sa&TE٢ cr fU]ӝ +BFp9..!lڕ3m. Z(?Ab+,R}} ƪCM-XutaZﯰtϗ⢞,UƸz{IF_2:HO]'ȥRw0:9Ʈ?(@Q;8Dji0&)B&Sإ7,O~JeL)rgQ|7^^ ഷgvth SRLn,wowȀS+FEFg FlKIquAu!:@# V0Σa䊄yA q9t&&pk9܊bk+.uX@2S(V s> E?ONHOߧьtufvKoTc!<5M$Cw.Q*Ÿbc%`3؋+!B"PZދ~Mt涶WΟ7ۯn?x>6cK0NW76_*/Ej8_m;uJe5;n5gWkW6_>w|~--L2s:?lq駔;yh=y|Pў0dwҿj^!DԐ!C"hC>;{fQ{2&+{<)2a`: 1mBKK7$1qM>>SZ?3?Ʉ=abvG) `: 1mnn@ ,)73F-fek33XYA~>( wRU*):$Pcme|,"Oq"=4ݨ͜;EhybxBEzdL̴ )=Gu _a}Oߌ4.0 cbP8{?:Ipٔ># rVf`x,isb;`n%UĜ ?4x0 `Kf&z+Eo'D!By ={^W5tpeOCE,8|lAD俎7 _;~&EyrIb4]AY3n8Hώq _6Z<IKdniK- +R_]! "N";{L"$$|QYYXRb(1`B33+\BJ0MMEFS} i$t;SίS>66ٴ&Lh9SÇ`Cy$B3+6h|21D <ljvoq~z&$D=؎ߊb ad@X@p\n5Y ~= JAXL=s n} 0kML [y lՏ<2 0j{iiP8]*FCO,-#懆ˣh <喬,.7$/0ˆe9<5.qf^M.^_]ݲnF5*USB:3U=ޟͿLr1?WvվC6^B}kIiATϥ*;x2׶%^vͺm4?^b{n`'MÀ?o~ٙ [ה\©?U\5) \+{f?&ōﶮHȰ>jܸkt}mm: Iӗ{z3{̘PV.)(84 ǎrlG"{l"~|d$ܿ]2E٧ZnܸU?QI::|w A yPWJ' F|<#!.$TNɁꙺ;j7?,+ J֟ҍDd%Bf@gv׳fnw^ی/yMkZ2jԎIMFyB~~P܌I@ p„66nj9\RR7~|ᛘAAEDL %&z$|kDNi]?W8qJ_;<ѠST|:'zmnTqd)ҥ;RuF[KÅ=_ [lR[C٣~~$SآS.Z]S^!D>Ԝ9c<,Ґ'h A{pԿ':9LM-L*_\HbiRbNMK&M*SH|A66!!c-!XW8'&UȒ. ފ< .6g`gAv f33 qaT[+.23J(DEp?bT6HX;cƴ(w3@lnmo? JǎոYXܘ= #lҤGU*_flH z+Eot(X^&*`̶ޗͮ!r}xGBz^?SMK XK<,=\i'֚ $=-,>#9}h?FPi}XU7?}\,6m3󋣺m]&]?2ON.'yW$uɷ?]/Fޘ!]Ka t YZd Yr1C]a5[uV;e Ӟ9(aqRa6\BRywyf9.#*b]bݿ=..Q(O:ٳ}kR}}=tP쭞{X>f0۩]폱a/B6P7ABAAWӧ9bFRzkFUx/_f\c__sjoq1i`3[+ׯ:th'NsߑZ[[cbbO~ISatxvwhMl}j|zI"ddd\#Z+G+A y9p E5_/o#-_<''.2dȷ~K!~+Iڿ@osssNoG=N@poaJ?3III :-- ~P G`Hw@*oEEEHU]]]\\iggi&￟z꩸8Hq~Z Q_JRXT"饃6Z"D!# qi_!D8 ܘ,H(9si͝;7===`~'gϞM<))GGGtׯ_Kmllze^c6_l"}cLO+_~Tnԭ_kqhPוhKʯxWKkIP/_L )p_!R(LfdC7p3k`6t:W h%>ݬSk}F\3W;Eoxo~no)--7o{yy9O*88xŘpѢE!!!`2СC 9_p!6"hW[jTJ힦h-sEw T>,q7c6_l"}s܍=;:[ߥYWA367菩iwAW}Yb< ?)p+C 9uIB!2l\<`B~.cYy7zXx;:\Jԧ`/毸dff&ˣ_~媪*`VVV/^Ą@bmm jko7?MiiÇd^KȨuC̋Z߾ټ]폱a/B6wՍ3Ox4^YKؙw"=ڤOZt$EH=}?8!:da@6tc.I0! ^Ϭ<=,< fCgxsZo`YઋV:jaθ10xj' 0UW_bŋΜ9˫TVZ2P~Sʕ++Vaoݟ§&JMi cKiOJܷUcl"1ڪ]UT׶k~uT/~M1.H@G[8!B<LX 0{~ 1$߆XgV\co3<չB7MpE+f0g\ZޢW߮W;{쌌 L>gO8qnj3ydC}v;;;˖-:t(]cO']Nwü3ݙll1?lE&r>w~tz]ZÛZ7e]U_c @Td= f~ާl 0O 3̞Ȇn# &2뙕gz3[l R9AW[ݬS Wg^j'*WfW߮W[___^x ===_z'N477WVVnٲΞ=6}b[WWWUUꫯMn9ZZf͚uSN͜9[[[{ v&J=D٬]OWWmz#毚37: uo!X.AN-cj]$Ew/rPͨzE`$O(pBKf2l\<`B~.cYy7zXxU yyu =F`8z+ſ{WX__?{lZmeeG+H555'O* TZPPTΝ=zPyxx!ոqJehh 6\r]{0x|uvVuu4lugY?!B=w>u'ոfDڒʶ+Rriu9+|ZԮ +BFB;ނl vbCG<CQ 0{~ 1$߆XgV\co3<չB7MpE+f0g\Z5,JheRĵyx`D1=uݬS Wgk[S$llEH< ?y$<|]PГ2&n`-Ĺmx7 lI/RO~}O[ "BWW֧x.i=Q|Ȍ,7wS/ڲtn" iaBC]_iǘ*oz9&L7ߜgl=}򉵯 TF/MLqxu??Hzu |+{Q?pjljs9e8zu>0x$Af2l\<`B~.cYy7zXx6jn(n!0Ǟ1"D?ڪք>Dߨ~耄Xz{pD0]k'°Y5]lc~7N7:djqhPו(Zuv/sxj'rD)2!ျP$]|xjhA,VF&acja!vvqjtKBXDRl$] qq.rȟ]]NJD :PryKH8(Dff6vv1aa1[$ӀkioEI_B+28PB‘DQ-..k ԢcR~e@=ine_V_QNS`Ԁa­ NUxZ 7̆,G?\Aj[`cb5j5{41QZb 4}/DڿptHNNH&'#uFhm}<))᫐$fo~Rss.X",Ffaa!8 qvvtANNr) B]$13.,\bݿ!t(X#*`̶cO[ "Bzȼ+ObGzww>S8%/ӄ+\-b_ɬ O tv K>oцNqhk3#+,d~IE*nzi{2ÕbGpx%Ϯ^h+hMd73|rj9a#;ᮖKӆcf2t 'Xumyd=.fryR9Eٛv&!akT V*e9`@d4*poH14N g!ʒvLuMMO?^6Bo]߳85H5-)iRY"OЇ^:pv4YX:‚2LMLt0u>?"+ ݘKM5uL̵M7D26C5s Plu"W(PEa6tF\ 0މ +Oˋ +)+(zFXc`hxz >mlwU*4'zzf3P!9pE{5I.@ˍ\*Ȕj4USR> s> E?ONHOߧьtukTƺCxjH4k^T ?ƒK!fW\2=PrTTcO[ "B鷒}yH6]]HtZOwknkk~qin>𹫍WIa3~ ̈}]/n"L_]eG˶T|y]RFz弾vEmSswײrnjtAo~;|;y|Pў?9nb!\tH$1zgg_t< x1˘# \.Ĵ k,-ĵ66W*Lkrv>}AdLee7Ӌ@6tc:MњZ3! 1-XcG Pѫ To IJ5Wbty#싉10V\f(Bk 0z0elbbxx*;Tz!;J+ii/ps{!($ vK"p=bb"Y4H&1+2R7XJS~~xxvhGl]?!r!/}UpĄ 5i#mɳO~H" fNtiib``NXsX6DzkwV,/[VGwJ+yUaFdFʵ;]G?;\{v6CUCR2jM^%䡚|@PXa")[l5r@ȃ5L72Phy[۠0&NBL[&;K̬QYY-VVz@Ї?bfĔG?~OT"+ ݘgd4Z3! 1-XEp":Ui+"O0:C٭+\mtKǧoFF~11r(=$ 8^?NlJOji?+ 30~f "_ǛuQѯ2}݅A+{X+*fP?nSzkVWϡuTmKi~ZN.uM;*.9Nߌ3н?>`ٻ\6) \+{#R~i {R1znlkt}mm: Iӗ{z3{̘PV.)(84 ǎrlG"{l"APHfROR23G:WXhDYjÇpwLZt@?@6tcWI9>C9Σ`< mk& s)) To y=>Ps-VnI=arZFsPZb 4}oA(jO^FWbbݖ 92"X" Y[[΃5S97+=A/wMdv;!B}_uwxj:2/,Sl_]?4',~a7:O~1)t䷩ ra+Rriu9+fDǾyJg͛5b6l-]"F.P@ufE$TGG?4`m-3\NMH U z[$Ӏ^)p4սx$L3?:a@6tc.I0! ^Ϭ<=,< fCgxsZo`YઋV:jaθ1ڥ,$?ū![MTYKbAB+u*s 0zxa\ z+Eo!r!dtGW7TNɁ{[wn~< YSW6>?߉㚡ye{-Ykrr_@/]X͸~8vWE]fDzkaL@-ݘ欬%F4 :'$)d-H"C7&Q??fᒒˆĴ z,"b5#FlƜ0]ß__RR[Tt*/]F '(p4׽Rx$Ll\2l\<`B~.cYy7zXx;:\2k%YY<'A4v:7wS/ڲtn" lg/BمoFvoYMÕҕ RJ Z1vvffRiHhOAmKl N;<|Jϴ/)$N*U!dҤ2Qhc2"A)Z݀H0 sH mzfa5vV0:S+zW] nQs+3W⧂+'H!Hj3fLr1tXōٳ0B>&MzTH,LM=llƆ ݁"[[!t -@To;:\"w>eTn2W0XJ{W=꿧cl'D\]*П"d<篦O??sŌץRܹW~OAzbޞ䯌?屁vjoq1i`3؋+]'zfJ;afrv&:!r!dt :W^FWzcBk2(yPZC+{wU;[:bi* +BFBhv}cdv߿۹o' -vid3U}~ݙbxׯ=YQt?8qS;?H3?Sbl,8=)`GG 3̞Ȇn# &2뙕gz3[l R}oPyF+\ O7Ƈ9zGױ\4$v% oygϏW#xjOV!BG ^KRsm~zن';uu{-)xF ,~wO] ڄF"D;t:3-B}Iwu[|"Իt7$BTUG]TCffW.^qxu??Hz`aZJ.HPߢRS@ <p!]&"U(L`f;b*V{. k!u1utiU;u+Y@QޢWdMdQe8UIP7cku)`LWŇ!BFǾ(WsQ?%oŠBZe]ي+v^-75w +?h by_6 ?)ȀI!Ӵ$p3SsIX0 8ϯ00I. ttiYz˺ºHT?E"D-,ȕO_' ־wA)lx"Dר!s8w|5lfS_.wȺپ]lקE -:h A~8  A:S O fɱ#b環Vajq_ խa:$pz>3XoY@XI ]XW;E/Xstt SN={l~ᩩ1cBpvv7nܪUx쫫R)W?=I.bI@0f;UB~}CާZU[S1:=r杸g6ӢUzwAWqtw?\ޢ .B!(B ;i`f;b*V{. k!u1utiU89j' 0_~СCwpp8qD/~8p!Cnz|iӦTիWhw#o0fLWŇ!Bƞ~h3#R*6vTF o央m/PAQƿ`5}Z.Hy1c}2m)Ȁ !ZI;;dar숩X$UZxWaduk@NޜSX7ѥ>|f-b"RVd0-~#9 Az­̌\ze{+ŵ;[o݋_xŲ\{oʔ)\ųgϪj"+Bgn0O+=}JWcT~Wv;7Foj`wAWtxTn =UzC p!75Edxql03L1= SC*ln  W'Ӌ 6|Yz˺ºHTe0źڍ[JpWwz#0bݿt3 mvtUTT8p`…YYY*… =mku@M aDj߆k0Wt ?>l!D1毮OmIoFvoYMÕҕ RJiBܥ[O]|jҹ41. _a9SjǦF ZootȬCu%NwzXGcwsxҽ&rcL ݟ,B'4WC b 02P S?[j4'b@ 27d#Zy:$p8E 0DF:V$RցJܔs[BAP$r73 "q~qnvEI_ѢR7_>DQZlKspp ;$Ar숩X\R('UZE+ymQہ :v.( , |}AX@Ӌ 6$^Dŗ@t%$<}t/:`'&؀u Vr@}xxcErrDr694@kII_ 98)fo~Rss.X",Ffaa!8 qvvtANNr)B]$13.,\ٿ\.~嗫FVVV/^Ą@bmm jkkDN"+-X`С=mK]9}2\9`@jx"DWmU_kgJ$ɹ_X;zEdKJWH$U)%į1.+]b'p|i͛K^( W[ RWY G`:|޲ ײgFW:XZU^ބpX7^D87]$WК7ngfk.X7XJ5SSDi^^;tN()6\" 62pv/.^=w̙&55LWD3Z"t>>eTnW6'P,=Y䯺4އ->2Bj:2/`OW-eEzvZOwknkk~qin>𹫍WIa3NA/|tucsM\髶KH{zٶSꯔ^6[#^Yj>Hm|Zv[MmW77cs7???+:nv4{5?dO;`<>hO{͆=SVWwsS@Pmn.IO y:$f=䳳/ZZgfRl+v텠 t'i/z\cfN޾guxz HĬtkRJ`+S||Oe:;k]W߮W;{쌌 L>gO8qw=˗/ڵ)S\EVڻwoxxx~gۙDTQu 33ѹGx"D鷒}y4c:UK*۸vk7+8pҦ<^Mgos";;TGݶ'ԳvjZv+c;xKΕ0#QSDcROBZ# ?)~XvWmś7 0urNϟMgH2PM> p~_,x}ذPL6J| R rB(mP\gL't!-%ff֨Ŭ}tmf++w} 0W\ebJYi ~TW07D/2Uۣ Pq EvGzXL̨2^9#zoHE;۱JJz!G&`@]WjS7##?˜Ar9N/rr6pܟKbڜ2N(DFF::: /؄"dNN$vm[23ݭ5.Ћ+o׫//^ jhjOOϗ^zĉ͕[l"?\رcׯ_o`RRR6}6l8{,IUUՊ+vyê-l135׿^^K= DнN_-1aC}JSh>]t!PSuz/?3K!ݾ+P 5[/v *lɡ}U[ilWOGf,psUJ {!%1iɡk7OcNkXݵi5V MW޾vg#Lziwj BdgRD"1*+k3`||KJZ tLhff9|xӀ˞U"IVLbj*b3A P Ϡee_L}ccPKmʄ3H,"@ X(S]007D/2U#c*(7(QίSBv$gY[iaPÇc>U37^DZcWˤްvth %ϰ՞PV!_#_UBooCJYZF88 =G2xA-YY\*.oH8788^*]7`#@Zs2uyj*]Bͼn\" 6@ fg WVS3ydJ ͟??**tԨQ{yؾC^$Cۙtyʾ>^B$_Ǻ Wk3+*fP?nl[t-/\Gj_޶k7om[n`'}3)v'%ǩ1S6is_d-=;z~@EO~FM'(>h%+[tmkt}mm: Iӗ{z3{̘PVV.)(84 ǎrlG"{l"q~(Q|dMALJ@X7nܪL($RC>|@wwf Ԃ@ɱ#bPI9>C9ΣWaj*Mr0W j/"]l-? 1 , XE{E/X`jqy*5J7f3|TQXoOIړdu%/DFE ,k`%R |ң=WMGEq-1tМ0=h<\oY: ߦ+,LJmMBV[|mɖӳ;KzZGVnq"F Æm27K҈jH&Y U2 0X[{ f<Bj 0Edx-??:`f;b*V{. k!u1utiU`}u,01a]AɻH[XگDIug^C, ]沪l&LG $1T*r'ڪ=IGQMZО%Da>UQw# {g@̽;j7?,+ J6n~'gk.&#,g5>\u&|坿=]9/EvMi9+kɨQ;&Mw /C9Dvr29r 0 mlϏsn71탂>yrMqqň1'&p&)*:)?T^/ h! 20Zٸ8dar숩X$UZxWaduk@Ntj}:4XÇ,be] a]$]Z*tX0-~!^s,4kY*,q ǩՉk.M4m] F[z }ʜÓEEbkKJNG_qNaRݓྵ6jn(ni03ٮ|`W_iUB=K>IIG?o.~_΋+wPxh)[*>=ߎV67_8yZ3z{mvž/F?-|huۓV~5DWʚҲˍJ1cJTvq{ًڶj67V\to_#ǯ2Z1vvffRiHhOAmKRl N;<|Jϴ/)$N*U!dҤ2Qhc2"q~S+P@vwOL@6&ǎ՞KZo!~6@V鄫XE>XÇ,be] a]$]Z*tX0źEff??X ug^C, kg̘ncc&ͽxyAUرww; gӽa|MJ+Xz، !ĻC/X"0С`{CW70j]_/!B&v=Ҧ/!x'YzsO5NIP{[X}bGsI7~.bTҌ nYlnf.vșQ6\r:m"TJ+sKG:(MzjZ˜>NGBK;y`#.U] \T 3þ ̰ 2 $j%15M-oe{{zl55|mf=5빢(h((?3GOs=sٜ9Ϸ;~;^g{hҲHIC1].m9L䃹azlx4pMXyÊ7PXٻYbNrAx'I 'xg;EׂWTf|ϏY`8϶7k/*=zkii 7SլYg{\nJeW,zQ^{Ū 寬 D+;UAsWt,Ǣ 77& &XoB'_w-1 /$Q-*:BϠ]`A0^CNR~Bw:_=YPu ZŒ[UZka.ޓ?HߟBw:_=YPʚ͛ SX /,E^UAt _] -fµODHO6a +# h~9/{8YbNrAx'I '䯰o!Bz'j`#hFcNׯBw:Lh,(E *5 Ae `K$Z *V'"FJ" U1`( 8m{[{P{Hk29x|we/oO\nV4;)^0աS$my7lUrLD@r|Bb\+;!Il\&$*DBc'ܾǝ뉵D"aNAѵ0Eoɲ]d~^L0=Ԙhh\4&ư߳KJO޻CZ36]EnTɈAp Mʜ?>Ǔ5hg寬EBOdC&[kIRA+1R)惶bz*e{rM&"t 9>!1$6.l Ae*I(ﰊ)؉);/qzbm0Q 2 6-"\+;UA3Wt+'NOcцsJ`yǬmo_*TzptͬtvjIUs)}=klz.+? | 7zn. W')Ew l@ " W<4 nؖ䞗5;ЁĸVv(BظpKM-;VIBxULNLٹ}!;k +NAѵ0EogSI%Eo~6 [zbvoB'_], K?e#O%.-o楯}{5,^†Yk1e5zzk>@SPI3+\21 A[c1= r=&`:EHn Ae*I(ﰊ)؉);/qzbm0Q!;)(fW=VӼجNq2?֞ |wԚy(ߺV~nka|ʒ6VS:hʊE寬EBrT䨅CZgIRAz _] WWmy7lUrLD@r|Bb\+;!Il\z3[v" sBw'W䷐pJa5vvg;/6~Ql͏=k/*=z7u?,1gĴl9x̺0T-Z^Z)+"4wbRH@.(Cruƣ nؖ䞗5;ЁĸVv(BظpKM-;VIBxULNLٹ}!;k +nخH;:| ha.zqӼ.lҲEgO{ANOKW7o\Xw䡝Vk}lBWD+寨Xr\`RXXn 6 vp4fy{`>h{,'a[{^'d BZ١Ib-5!X% EV1%;1e<\O &*xg;@La` %A` :qHC8I">xaaRiqXXg.fFD3WtLӕ=-/]i?"ii^ 7+zCM 7 ZbgauvNYa/zE V+w?gXW`Tl^z+=qfLY>:֫'1qZLo+_ixA!)ORn.qm0c6w չj5惶bz*e{rM&"t 9>!1$6.l%Ae*I(ﰊ)؉);/qzbm0Q!M~Qx|->y‰=_sDHW˄g\|ѬzZ]+f/QJ \WNa.؀E@.x, A[c1= r=&`:EHn Ae*I(ﰊ)؉);/qzbm0Q!;w&$`zxWd1Zm;A=;n NA+U$W4'17ح5$|}h=M:j80KXꯆ ֞Eɍk tC6Tdm꟝8 c%DkkX9_;9w˗ 擯';tޮX*ʴK$2KqqDb&'PF9;d*hf89EJ$r{{J5m^iAJmo#dj„o}}1\߯i--Z=F.svuM{F KۙowyQ`ЃA]-9Yއؑ " ңw5\n3Gّy#LyHKz9c}w|PiiB qT I @eȲUr[ߏP.P0荵]ŘwءށEwp#H5y frX+y\\gEffLd.eddyx|6]6{U@DQ*UJ&I$^RiH@//o{{{DPL 8s6uE5F˝\]?7ĎW( \D? 8wcEIn,_5[XfˁKW7^?ϏEL)U4MpS5i#l+EO>$TjQ0}lM!wRj?ɂYY#|r Z'OP8B2&.ۖL΋z:De>ЋM-~0#M;偷#MBz4z;p=+; 6^/6qݍ7A>q;_\9Vj{OmS?J-GBC(^_S[~.cbޅn {p\첌=߲@ {srN|%F&S~յOHS9+\43#cV;]*uMN#5u3{~| bqXi&P-`kccgAp l`zѬ,[rg2ٱxM&<4 g }ܪPP|Bb\+;UB 5>e@eAeVFdE* íPCY| ,V㎍ݟg";v8R4Lj f;<M+_z .(-- &O?3/7:?[U7ޠ7'*|K:\2%ttq|ߎ5$;_k7Mm.`FD^Db!=4_<96Cv:kW[͖+VӸb?}owQo_0˼#F(292r{5[ Vi'1/z.`ΌÎdȳ}2A=ߪv/*PB qT I ܸYvv4rJnpmP+X+OqZqGJ8[뷌;3TYQQ]\.,JH9;*2 x}\&dAUñNN[ K`UEE9rϟ?z($²/_~Y툈Da#F[(v M/^h4 ,8n绻رZǎ;o<εi&^H^}g} Lo.S'?bBE_=GxW=uԥlm(]^^1sv^nGM]yq}o]3]߆_֩TvC뷷TӇy.)@0 ޅQ*㓓GF>4`"eDĤħI S4c""&<#%~b`W`?Dmy7lUrLD@r|Bb\+;!Il\&$*DBc'ܾǝ뉵DXbc;uodf"=&ط/[T]pg#_E&x"R880dɘ1aՓ&aDŽNw.+yq=Ggϟ)bSaȑ Ϙ1cܹlSO=^W}hJH+.]z+=zKҤb΢[{ glG>f\!vCaq-֋e& r o\dn ;kM?{RpϨ'>MWrWw;F$&z.'M3MӠAx`ԩ7GyZ!!#"?-m6z6%e;`ɓ8;kRS7'M*9r _K|ij*FڊA1cv i&N7.nƈO8qHaJ؀E@2TJ 惶bz*e{rM&"t 9>!1$6.lW&pˎUPaS"Svn_`B Cj Eb@ lʤ{BhH9!22wNm9󬑪ѡ~EA7':9͈8bD'Nnpz l_ nRSSSRR`rw+V`˗GGG#k& Leeem8xPѠ K.F+p®v?9cw1Mcqc||,M[ZO*,2U3cҧ3WkwҺqCB bWٺ_i\HemSS[7OAԖ^+n4ןiַaήqqS"lmeʰ\ӫz"+^c S5SED<9 :z<\.r3 nؖ䞗5;ЁĸVv(BظpKM-;VIBxULNLٹ}!;k +.pU|SX ]pg#_E&x"RΞ=Ogg;޾ۀ h*?^*]; l#"zlmGGb`.~a6;;ZWUUùs0%8::"Z/ g-5[[pСJGs%&&:/'NOcцnsJ`y=hiX>T,y~]_,2PMuV1|Cumț5;>R&9y'~7ocsC|JM~etN qy!=[.o_zxAW@dfWǯ+?f=J'KKgI8*]+- ر >IAawc230=ܰ-W=/ۓk2 v qP$qᖚ[v" sBw'WkaFJW&QQQ+WĔ+V@_SiX4ho@%'eQX ?ЮzRIw Qgab9MլYg{\nJeWUh/bFWV_luW{Ȫ]_͝;777S̻tٔ)S/^pܸqӦMӵ;wCYhs=߸Ӽ,Gq )NoI{CIŒ'?%΂WT]PRG6}c?HvDa轆?MZrssW\y9mNW__{Ҧm۶AөSf͚O?566VTTlܸE^v޽{/_\UU/E\Wk: _QvASP1ۭnvA)(f뷷ܹs###yfڴi$ɔJeaa!2>}zر!!!0qDd0aVU(111'OF 鹢Vwu\nJ8i^6}^kFzi>b ?*TzigW' SX /,E^UAt _] 0=ܰ-W=/ۓk2 v qP$qa>7[v" sBw'W䷐pWa!Y54%~;1;S-~=te{>zUBwB NQxMݠB2O0% -ίEE_oiE ;,΂WT,SJlPPX&3 l.4A83hH$kb+ :|0gI)d4$},k|ȥ$yWd;09`2DX0^_Yw39qLmӜL`HqPrg~KڜjE7pw_('>=07~>l5PO; _Y]ٓdȾ2ڻ;=_؀؅&lfT Ll &;asF"LFjAr u})r)*IY>y 0Q!~-"\+;UAsWBS# ]&#:iSBNʵSkK=W*֌ RH%,ehRXuW4*T!im8fVZ;}b˻zzeT=Tq^+? | 7on (E2 o6 v! i@3 >xMl%:;\v˜<1E:%tB$,cF<LFnwFEVnL7 8=F~=>4*T!i.`])Kuc{iG,orރie\6\)Q 寬EzG5@5PMF~d`W` kb+ :|0gI)d4ּ$}P׼B$,cF<LFnrS#Ύ2fW寨PR+j>=2㑅)Kʚ|=%#YPeJio vTâ0=6nW4A8 1h@&^[Nׁ09#OrL&a c ]#C.P%ɻ"؁'&*䯰ۯ^۵tGPPg0 Ӆ(ăW(͟ *_5zonG9WvW[C w^1eE΢-uWT,DND9a.k0MX?,،YQXz< Ll &;asF"LFÊArFȇ\ JwEO&#LT_a_ > $> _'tHP8I$q[CCه0 #z]6wKaaQ]B<_;#t͟ *_]\U;7x WD+Ֆ4UH^*sUN2卭V?x<VIO{<Hݵu fE ].4A84jdb`5p c>3$`2Vk>VkʗHK!TI2v`sd! + ?dž h:;ۣEŝLH8N7CrvyA :]w\Ӡ$4#EoﰔDcj9J`mhO͟ *_^yj7!&`Y 9gǍ֖ku+mZCٯksо?+I/ s\f<;~}.4A2h @&^[Nׁ09#OrL&a c ]#C.P%ɻ"؁'&*䯰/ؙrp?!{Wda]f ޳wFq16YcqHnp׿ՇO j7Æw7!-> 6+P;S~;Ɋ흅8 c$om ;g%tT6iivqHdRR9(]]SAMNNRrvT5%2rS?prHJj4 ]H >>#}${LSx\b::k;PvvήIqHa]_1`;.0 03^0yvd{xIOGa ^[Ύw56q{'J ̓Ye1$0谞Yt4$78* ,>o>RU{"PAq@]+P@P+ώt6qW¸\OϊLwS\ׇ;:]CzpFvo߾J{{4JqvVd2K*Mqu]moo/hznp~qC>ƨr]g1_uX阝FX=8jvv&7 CBeW&[+X{=uݐ[L[oW;;W7z'9|RI͛M džj|R{'eHދɬ#,5r'G^}qZ*$ck߶dr^= *o>Dk:nlrg)u ?+y?x.؜S G'Ҷ)PD`#AJ/)ͭ?5bc11B7I=8.nyvvYFƞoq @x99rr*RS7d@4p޾} y :geddjKpSX2RS7wG \y2 6Nmص366vFe2p <& O[[OXr'91~oFM7W#",?|fP. }V*~Lob 寬OUDA-i-a=ÆxV?*T_]د׀ՊuQۏ_p|EY!QYtj.[ka%.` H|M7n4_x?luf_w~Wm75! V6]8}ߗ]msEAv R=Tۻm6ݓN;`JcIIvp z7n}P5`[w(,C{Ė8f;E : 5Q$2(L7oIN c&bMG)!vP.vRϛB$ ]+˓ :aj RbDbFU~~l~>lkdgv"]$ v-2rZMp7=nnx8P%s>##ӳYIZ#lCB=0EoyYfeӽCBU*ֿvki5q&Jdz*,:ok2WUz͉ ;ߖK[G:̋MxzDw<9J+(ZݞqKN6G y+?I+ @&1M' ;5Q^Z}l)v6T7Xn$'vJz7 AB**T"͇\ JwyOjJĮGكnc(%f`~5!X4P z=.lw-99|_ ĀL\]RdOO{{0 lĂ^Pv{FⲏmyywX.l8]!+.Q[}}6~aPiii %gAFp_22V@%(S)F:*VVmhcck2  AػC[<YE VĬ̔Zuplfp^Jtv64[#y#60Orbhe0'O`_f`\F՚r#p eg,>o>RU{"T+WnD>ke0E( L Z?fpfnd$lW@??Јts[ ""*"caL "/?m !P4T0`Q@= rڬ,Fnk˽"AsWt;)[>ZqׅM_׿}q|6~ai>TP~vߙW~(C4诫wT6+;dk^͛w }[@oe\9znŷ߬IV &W&Fvǎ11s&'gm`qj\\zw*ld+]\ r0H$kpOA89l5yF cc} ϛ7"Q##G̘1(x lpkb+1hx>x.`4[y<ɉ݀-[ 2xg ̗yyLGÊABxC.P%ɻ'Z7`(hkf gggF}keqg{J|b"Ҿ4+*ۚE `#p$_E&x"R9:1˩EX@'%0#E׿c;S-~=te{=[^*Tt?}UtM5wl`gѱLX_=GxW=uԥlm(]^^1sv^niAR¤a  Æmwakő# RH1)1)GG_rR(Mh蘈&Ha]A؀.4A?b,LL@&^[Nׁ09#OrL&a c ]#C.P%ɻ"؁'aKll/йHÐ!&g{˓'ccƄWO:9" Hn1>Lcvioi>TP@=,YG~ֿyZxc{ +зn}(,C<넵^.4e O~ִi5EEFmłpOALoX#Fl>vÇ=#c̘]ѫ _]hpy*%>xMl%:;\v˜<1E:՚W|ȥ$yWd;09`2|޺_/{W DHV v=|Qtԩ3g5RU4:4z}󃂾((}D_'qqG>ĉ N"+~9qLmӜL`Hq[ZC :Yte fOgj֞9{bg6u<ŮҳuM +z{'ڦntvm)(⯄oW>>>Ofddh4B蘝 O3$`2Vk>Vk~!B]eBynr*,w"6fxo~˪C#G\|GUXXXVVϞ= (,=bĈueYYΝ;ŋfǍ2|ww;v@رc͛6mDֳMM...f.Go7o|k*TBBlgA+*TPQ *T,Ss0% -ί#@ϟ)x 0rHބg̘1w\橧B+zzz/g˪U,YRZZ׬Y4˸Dcj9J`mhoi>TP寨aRBAA~x=| r3E"@C8ׄBM&CְwyBqƛ'ۭ]yruY[cY$xEd14wSPt-_ֿjii)))Y`yy9Zb\|ytt4rXv-oTVVC&[Kp7 P _]. >SRt >xMH)t d2d {.kyڕ'78үɸnB"k+r0:X;6萿 l7;;UA 䯀٩ܹshCmm-oزhCT>} /ui8E#3 `(imr]ŷPB~KڜjWOwcrJ'/$'WK_('>=07~@1,(E ܀?.yir9:^Q&:o2f5Ǔ5@O˝寨9LAA~ _].|;9 !kBJQ&!kػmv]͓֮TP2im8fVZ;}4|=9vޡz롺+GRqnOY Z>YAPZ,9JyTh7؀)3H(^R 7 Ym olv T*ڊ;*& V :@;0VcgGopfAsWo7i ]rsu:]}}=t |JKK*++mMN5kO?XQQqFyڵ{|rUUՋ/cro_~B[wR.l8]!+.Qw{|;ׇ *]& K?ej<|\|rރieb6\)+ǴRj9jKAA;,*+z[{;M_dmEf_!ż_pgbV  L.F!f뷷!͝;722lAWPjjjML2LT"ӧǎL'ND &hZB3ydgy&<<{[[[km?֫ļVua3|7oO*("Wk۱YGRb\%em?uєcYP AN\'{{ !1+ ^. >Ё5!Ё(ɐ5]6PܮvkWs݄EVaVu0 ~r0YL_wd^CtHP8I$q[CCهc@#,_*- ŌhaiKݙj+-.ʪPbq3~ْ8\WvW";"ZgauvNYa/zE VGo++~fyj_wͤ ޵65}F~a`W` BlH(^R 7 Ym olv t:ڊ;*& V :@;:4}CQQH ";p8.nJfg%2 `E'+۩Xl7c Әhh]thߞV*T2Oj*ߵ W7!+"I0_7ZZ[՝8i Rg~њGZŚqA ]?<ϯwS8pt hǥ \m4˔@*09xv g l@ r2X@:^Q&:o2f5>#}${LSx\b::k;PvvήIqHA!+lg^h/y,avd{xIOcJ?lf&3n3:o2~x=c/hlЃk(}Wy"hl=ۭ]yr[,޽QYCHOX>>ctC[j%X ֻv :>I+) wY~*3pGcYkH"a޾}!ͦUcC5>n 2$EdVKO̊ p#m>yrT8U1qy7쮟߶dr^= *o>S? &w['Hzc{iG,'/|_t7FP F-fy\9Vj{OmS?J-GBCV/)ͭcc11B7I=8.nyvvYFƞoq @x99rr*RS7d@4p޾} y :geffdjKpwRS7߱sQ܁37 Xe,4ccT0-ckccgZ&;ֿ?8SSփ7֓Ag: a4`yv̇t?PJa7[vkWG@Y%TޓV [4P v z#HY޵kI\SK둑/GD|)<|J` h LH`W^T!l99U[/}|yɖA&~],\:|:t A/ocjHz^k'<|7.m}.'dG:,U7zFT lsr6IzF?Pm00Ϥa;8xZ= 7[YҾR(ؚ aN ~m y;dUb8ݰgllr]3 * `H6eĖAg: a4`W{ɭ2>0!Fcnʓ<[䖅=/y,tOOB ;0kנk3mlپ0<ШTχmÞl.[ӡ.EFV B QRRor gd!4v`VHp0 a4`WnwЉxlv R* Iy+{^XJ%Vbzؽkנk_a}rppQp0l~J h,MJVC^ E xAaa ůab@D&OR)WBBT" rr; {AA{E>V;8{b`.N+?寨PjX72G͕?3`L%{lvki5q&vd+ph\_Subw>94HV! 4T{MG'XѡOKA}t}^=trUzL#t"uf/t] !}g*WN ajΐÞcgTĈY"?JO.IK{)<= 4*AlLig9 ϫZkey,," JѸ&|Q^խw흖==,(  ݑpfEY`~37,?)[[f})Srb+/}11MZd:~Ѳ?T5iH2.PRf3g7FbPul\ý7|C"ShӺ'nV!\ qPbׂ:7, e ?V@JLsrQ'ȟ].cjs^,`[G :w 99P8*h`(a*6pAVd#$f )WDG_yzd FFk@_%fR X^_ۭV{LX\>2n[SRH_u :u;)); B37s65;. ;n vԩvjxvqߺe#4{P:mWӏ׻l5?ΊL{+jWY\ "998;.EAAOuu<}9K&W d3ČCP4JeP~6#20Hh{8}PЖSi;4iȀQ'`G q‡}JNXGYgP `/({~L9?B Z.ay2-ii(,b'}-޺az #@T`"uiyv~׃3}}INFdž]=յC`b",")LD g}'/=S!0Tng=_ۭY{LX{*kړWn`VRt+3<uʸy\ڋlo:bo7HW:Oh>$vI֬[i[ۻ5juBJjN;"eTq~~\>EV5 /8X+PšZ`JN@) r(MH)o_%§FO뒟q8M/1N*=fA4 nTB]x|0yJORQ8.2KDMDR89}=~<޾~`QQJU3{`QX؜( #;jTg|w:R *}=߁&LBs6ޠs Kq]WƲ{t =ey翹-2| I T=6ݗ: OK58xr֤.͋cƼ=uyGBC'B=رS O(9IK{` Ϟ]1iy{Bk&O&0A̚Rĉ.5 |뇢=7r8뽂2( 08Tw89^&7 ]ï@S#ɧuO8)*ib|vVq0 ޢ(1c(7ɚѣ\]QXTf &XA5eYPpv޼ˋ6`Ӕq~>nYʻ7MXpaY_G _1e{$WǕo]N6Λ 9V_0aOh5X듿2&f,|euNŒw>utCs_v}Z!s^Pu]ss٪6uVWnO]lx7D:tY\/=u )˶KJ>^1w5r֬X,~\dgVΞ;;13AzyE*q… rt*kͫMFtq R_*%F#D ):":C2?PԈ~i]7%V Z,`60 nwoa!I.GUL0QuK,JJ pqɔGæ3n E˲e|kA6+ͻ-*jJ tq>_ۭYJ"Ǒ{dӼ@T4HnXa~;Ä <R\1p`@*0:` ER@wB2cooC}.jM~*`SKwüvJ{8d:F^L/=U_2N- I>~%kV,mŴi!?/CNqWc`VHCElBJ5*>5|ZčGib|vVq0 (> &_zb[s>>S3K1 Z{2jW}=߁&LK9UN_1嶶'L^ޓjnŊ8e,iYʊYO O> VnͲ;݋`(5߁&L j`+&A7T.wj!A`?~A?Dg {zWV+6;C]BzhOn~qzwŇ &x7`+&A3009.г`+&˅m_>ts>fa _U,_6͝Aa.|UFΪdԑ"ҋ؄bfkUb(|jD?.G]8M/1N*=f [t|: O> VޟdWy3,>;>l?0ab cKWL0abؘI&Ly'd2&}NSD!l(*PnX|w|~`ʅ_ 寘0q)RЏ/^pUNÍ2'H#'Q[X Mͬ3t h~& N,Dae~SHzqL; =_-ӓ6\]":3P3,fbŇ&L?u`)X-7 B_ćB^a[ `@s3O.]Ai2~}CZWunV+& --%aG02U)a$zEԣ*_2{p.+؋+vUc MhdbŇ&L?Rt_c+&Lz@Џ/`@#g'H#'Q[X Mͬ3t h~& N,Dae~SHGUe|30,-)]]]'NwEEEAAA bРA999| _SSVŪK,h43g^׿nbzئ!MhbbŇ&LI{'2[DWyu-IZO'ggG%TA Mz+q 寘0q9 C?<_*h#gR *҈eT9V182D$VC}3 $ bGb*}0"QkյvEoo߇/]аUVyxx=zK<WVVV[[ظ}^zIe˖lQƍ455ymܸ:cl?0aBN V=EWWN9bА~lSӹ_>6Jz_"4{8StwGjj|)̇h~5X +CrX0 ‹,P5prs]Ai2~}CZWunV74|̆=<VQ^e|: 84vvWVWoYO?رcEeeeHHXs=`jSS\QQ1~x`+bd@H{wgi'alWm-u-gZ;9fKk>9+(U mr$M&=.G9j=j;ʫ> x}kWP7p]Ai2~}CZWunoЉEH#Lo>qJ^y_GVZm\#8#[PZc_ߎ篪}:2335sNN766{ア@ ~ M@:kfͲd۷o3f 8)BÇZm_ca IZrk5;!Wg>2v^^ܗcdx\koR`+&Lz\-kry@x^^pWåY *҈eT9V182D$VC}3 $ bGb*}0"Qc( Lx#(xKND纻R&{xl w|Or fFn5+|&ó|ӧORX3q 6eEEΝ;1K.9r1b(Ѳn*V˅ @k׿nY|~`¤kRׅ  |hUBs\ǟIMesL0X Ɵ4^.r_r{_coLI|*6jԛ3cG`-T&#2Kl6`]` Tq8K`>APE1=8*fPĪ`hof[/##MZZKfBae~SHGUWgᮮ h98lFJAt8>xb##uۢ o?Ȅ+篞~'RX"77Wɹ{aҤIrw677S^^^555bU$q?U3 Va) PJV2 ->l?0a҃d;ڄ>w7tlԇh7NWqY_~lՁͯeB_3G.kzwz\| ^5?- l3T R[7u/>@/>`@d#@؅OTFLO,*᷊9%z%*Yg(&M@ X4<VQWnnO#$Dp?<6x_Wbb| hBtf7p]3P[+g[[[mmmiiʕ+*++)5kofLL "_©vڵ|r`رcDZMMX/͛׭^WkKO4v9P8oJV&@ |@L\i[}S2Ĕ\jRW+Ǜ}Mw|3vE!je;ER=Q7 NWL!{-->~$@$'oV*@wKB nn:|^_ܥTd2{{~+-IJeLfP&&tvjW ϯ!mh\܇)~.8u*4|ؑ;"H#'Q[X Mͬ3t h~& N,Dae~SH􊨇UWC9U8|YRBz}lbb|na(L47WPd^ry:9^&:: ,q㨌8Ӌ\솺}>^_/99G9u %''3g@uuu=8_=//شuVpwU~R]p~u$iJY1Vo<@(AΎdW IO寮T;}ZA7+?(tRt+er⥔٥Csߢ ;'rRv\GP\j_޻oMZG'7YoVt?[ܜZO*0:붿sĆշe\|N}x3MOX3MeFJ{ə@3~~Z,%ۓ>ʤkaaA^_[w C@lːs\fNNEf,0BQ(=[5V{ X-)4~H>0(8xQf.v\9n#-~^u%Ġ8[5[OM7!k2~}CZWunVIK7 hhi. =zx)'N #+T^);k碣3:ݓQQs@fooЄ.* A W z}en}Çrl,b~6tYYU?S5 KG98, eL\պ埧]`{+%vk׮(׬Y =~xNӮD^[[]QQџ3#o6}PRޓ665&=zOE١گdov`)jx.qD`50='jꛯ^mt_~oi7]ض(vPڼ=ۅ yiqKJyK#?ўc5M g+K|w/f ̹gW2_Ē= P4y418/p#Uťvq=.'^58oeFsVD] f^[|TCMqJ^ *9!!!!WSSAšCGA CC#?zhsssuuuII l5j#V~6o|ĉSN_^|DU 3fشiS?unǻ3%Xjv@::&_4|:2NRm=5V^~\yɺi6Jk52d]_6֞:VM~|cX4T7NHۑf!)_[1ii~dҿujZvF"SثSucX?;&$WΏ٫qKPݯ|]zKOӣB}UkPb] 3i̘mr{fvv&U1>QR466f}3_n~pT8ll՜A;oj$vpXFUos(CKJbU047-jɘ1& --%aG02U)a$zEԃ*ث2NyFk^,`[G :w 99P8*h`4ĵӄll|<}<4S^-raW3}/;ܦ6L0SS"%2 N=OQ4#g?ZV`kr7j5ttvTw|jy ЂMɢPggIm7{2{td m[6B?| y6Q|/>:Xg]cČ\ "998;.EAAOuu<}9[]Бtu ),܏3fԉhʠmfGO@bSဆc&M42 `T@f;"H#'Q[X Mͬ3t h~& N,Dae~SH􊨇UW1oW?=d}lC\];4&&Mc~%Ha&")9;8lG~ɴ r[~>bx~;({ޝ*3a I7}pcc>EK毎I:L)_0%ե^4^{ tgFWaC8f>dg~$3t"0(Ms4 p-[]:!%eNw'ҀwDʨn|&,(*j % ~PšZ`JN]Ai2~}CZWunoЉEH#Lo>qJ^qll@*ճYYHw+4OIj5]d qrzxb}9pfl9QQG[+ۙEnJ,$r@ *3aSYמrC_k%eh,G;W͏Sf|nDHL, ,gC(UOuliLGxI󛧇Pig`4/~4ԩͫ)(2=ЉP1vz2i* 9']\4iiL~`ٳ+&Mڂ##oOHX<~mqqF!(Y~U*8q…uf|8PT_G9X+Pš?5vU˨sbqeh^I &fXSTo]2zS,[OFWD=p-nuv~{Mf WWT#,A+(fh )gt_7EM*4%,z;u,M'-\X>k3`/毈_1RjzR:KZr?u ̷tkm0ab}髊'\~ 䯌ɪE _zdݥ0#0n)g>544w=t]m45VzsH=T]pM[mu{Ŗ|cjHC]_~)O}YVQx㿎F-ml&]+ˁW91-FDLkؙ T}slmNN8SCwpP9:zEE C5UDEݦR #GJ` Tqx,1p]Ai2~}CZWunoЉEH#Lo>qJ^ֵ(B'U.2KDMDR-Y())N&Svw Jg)-˖ ٬7ﶨ!*6eFL @X?^y,قR.  >2U~_g„N+cс*gU`tfu:Wyv u ;$e3:~j9ߦ%(\Ԛ(TWЇy+^A qt++Д38aĬ gL.mŴi!`m!8X+Py0+ vU˨sbqeh^I &f4 I@B'" 02U)a$zEԣjWvEoogB Id h@e̷tkm0aW,Yn*..CŋOsϙ'j݊1}d*+.f+z*pU 2]VW~#Gb_Nͷ&@L|>&LXB`+&Lz\D ˝ڼC% {?h%j~ą}ְ{<og+b+&LVjR&=.v v~{;dv٠ =^_L0[uK!_U/7 B_sUxa.iV^pWCY *҈eT9V182D$VC}3 *,7 hhi. =zx)'N #+Uv^_2{p.+WL,v~;; &}+Rt_WL0aU1 ! LXm,X(9aL)e갔 %h@+1[6L0q`+&_X@J$^`>88se2GpRhxG܈FElMdGAEB_|Pb.EQ5K0 G =^_lXc^|FyS4|X>_kτ z`)X-3#,iE( 08syr9# 8MDXG)q4 #nD@"6D&2飠Ղe]L6)DxJIEYgʂo%7z}iVW$%NSHx@ vv$[ 6L0a 寘dD?8X+P<~#Q A`裈 =L(hq]諀Jإ7}8f 0E =^_S >UU3K1 Z{R>_kτ z`)X />OqWC9YT =DuBG;F4(bCtm"> Z-fG\*;v) @Y_w;Cς寘X.ӽYQ&ڝU~_g„IoK{'2[lQ A*UP¨goq܋KW}(]y9p뻁? >_*X#.77GpRhxG܈FElMdGA^f*I8%eSMz/po`J&{=j\`oImxwlvcW}}f &+-'ޝ{d_2=I]#55G[M,_1rtv\êb`@W8Xzx#nGpRhxG܈FElMdGAEB_|Pb.EQ5K+nBlj߂ztbmPv{ݙ>RqW}}l3ao30-5Ec|6!r;W:W9ᳳmV$ ,+_ @9r`ohw{+ o  08\ H,79b,>sȤV8Aׅ Ď]}ЇxkWPD%^ _'DF"MR&{xl w|kw[r3#7ztVn~ ]΄Iʗǭ[˅v!㾮me}9vHg̵|z`)^x8nc/~}~19?O~S\ZQbmمu}2HeoLG1q@ _*B#g# 8MDXG)q4 #nD@"6D&2飠ՂeL6)DxJIEY_ 6?T$&&8;wu-OH@3%a{t4RyOxA旑ޖ`/WݖdHy1r>kH.' i/艹@/L30/Z\EktgR?t\kGBKa>e<߯4:Ly徼r-UNvThQ.y*Ot_;Qt|/.H Hy-M؋30t2C` TqN6p @zd( 0fwčhQĆD&}Z ͎.U%vR>["nnO#$Dp?<6x_Wbb| hBtf7p]3PW}QJMOTsu\Pΐ@Δ@|HWhe; 1/, oi٨+y\kG BZJ07$X_]+<ihjM?/JzX wK)3~hz8:=}o@ 2B.R[Z|HHNެTFdXRuL\Kdj_)V[!H >>{{^)LL  ծ>7d-=}_Cи,|ʁ:ow1#@!`#繜SqI܎wLM~#>s;A$,p(y=`/(cjhTOO)!:O)@XVO ,@8%exVJ 6132ࢣQ%K'wοzyzVeeeT'Ps^|$33㭘ۦl0=  5MuqU(2\Ng򶷷ɴz8*+"ξ"?;nnűWvKdX2D@ v̇t6_Ù0a+OOn_;K 檷,Eqw+ա#Of5zo gI+;){M)^9ͪѕ%Tn7gЃh'6-33$u Ǜiz\h`^l,hE ?.u;WX)V.lcfPEGxK\ 蒇='GFC۟ tOFEቈAAp7hBz`Dp`gRboĚ`T=o^Eφ9+*7'~ig |$;{â]1 Z7)TOOO\}w8qO?$0OC!vGYc>0a+7+?(ڑx`)jx.qDc& &DM}իΟ<-톶 Jҷ~t߾4/- nIIݵ ,IG{457,zCs}oGن?LdO1|'rùߎWxe̿uZK+xU +~ ,f5WFW2*P~,{1`ĈC 9t[ rxܚRК &#KpXjg,ෆ{Yx|cNu속G[1s- &"tL1bgcG1kh1Yd) S CtR(,Mq]諀JxP461k-[Z :md_qk` (;&رur!'  z02$N7ϏBnС DFup;F{4YZ킐>ϡ#gb7[+_taV8zh^WUU'.\0hРn=c4`?g„h̶3d_k2i|#ZfگKхU{kcce_|߄`5'F4TNHۑf!)_IɡG&9TWΈ]dv5{u.r̒7kgJq8{(0 m _/oj䔯`]:cwwpIO )<=ƌ !!gfJ#P9NTD%J:$0Ƙ1%C hws7jPbIN>ZFˆ7&"llwr5Q4Tul\ysH4ݬ,yQ9/<\@@ >,,aqa&Mώ.U%ve'2knuAswߐF7 J::&xx=\P@2Kƌk+G<=y2p Ď#gg5`#aR XA_UWW}ݗhsrr{mc '55uYPxX5kj).. rssزe j?:88x{{O2ȟ?8{g { &-u~#jtͰ붗;W^nE&ZM4XNr;X'ਡ]2; B37k٠-q`qK%# 68E>rrqv]4냂&L^:xsP FБtu ),܏3fԉhʠmfGd`?HL緫U#@A[fLM8qzФI#FhL&"G{>s%wHYQ4T `/({0TV#5*&~ԵIojWgğz+YNJ ]ڿ<.Jso7^KwַK]~ 5 ww Itrˎi[ۻ5juBJjN;"eTq~~\>EV5 ^pWCY ~#Q A`裈 =L(hq]諀Jإ7}8f },㈻=Rz6+ iwaÐ)>IFUL0Q>NN_Olr3G0rʤ8 `)KXv.bw󯾛Y{ݶ;:p:mYXFi9LbȔ]i_>*6澟O}ȑfZE@1cޞ:u׼yk{ez#bϛ)SJx'stqѤ=0} gϮ4i Ώ=!aU'ohfU􏏿kM ͚U^P>GQkpV^`@n#TGpRhxG܈FElMdGArb3ؤL )&q8f 0%1dA >7Ybh )gt_7EM*4%,z;u,M'-\X>kQ"+hҕ+WTVVREGGYF|7cbbaDASEEEGeh4HXX؋/(xQL/c{{{}}}UU޽{1cDEE>}ZbGr{u\y1q>d#@)>c?gdI˱F=yF%45X듿2&f,|euNŒw>utCs_v}Z!s^Pu]ss٪6oՕ[S[6!ѫ!^zpq>-8tNXW}el+ˁW91-FDLkL*^^Q ''uxDp!C;8F!y*nS]\cbf#20Xx `@#灌 GpRhxG܈FElMdGAEB_|Pb.EQ5K+nwoa!I.GUL0QuK,JJ pqɔGæ3n E˲e|kA6+ͻ-*jJ tq>+_OlKNN~GN:E7D''3g@uu/Ўlmoz &HsI$Ӕ9c|:x7(*P+̇t6_<&/}U9ko9 :富dFUљh\ڕڝ/.O+J)xҩWtpQk3SZ*_C歴Wz%!1b. >4)Ede޺Mb維fӦ}&C 9_*F΃YYH,79b,>sȤV8Aׅ Ď]}ЇxkWг篺^v@fUhhljKKKO>dIw#USSRCSI:Is 'y6%|ٟL0Ka>jW3yyOպ+.@qq BZAs,շWe쓨OC lٲ<277wyes]z5ϟ/ej;wtssWDzxqޝ~0 ok.U|_[L0 { 寘x7T.wj'.쳆?h𼼼kמ9skYxMMMPP?|꒒tĉA-^x֭/_ڴi~SN=x1t_x͛7с?|_H͟PR“!n6}%e1az,?UWU Ros緛=N?gW0l2N~2J^A?>hR(j5oӦM MfBM3gjsAȋ饻jժ$gggpXXԩSG5¶vgHy_ow׹Mw?v&/`)X-34w.߼+ w ,P-0pV%' =DuBG;F4(bCtm"> Z-X'6SM) .+=Rl{xkWo%7BIԧ!XAk_1abJ?/}w0 KWL0abؘI&Ly'd2&}NX5vSr<֘95$qPJдQW->lG1aτ㸹KWLx=ږ20 uUNÍ2TD[)A@|8Gl6źʏ/^l<)BY&+"}ӗbؑ+z,ŤIɢx.kR֙R4h0?U@QL`>,Q?9:dP([{ ]]Ax` Tq88rD݉R .bUq(Ymusn'D7J]fK}̮xN_JMbG(%VrW('Q`YIcMhZ|؎b¤%4f,_1}Í] 08G8u'J)U9bgM)]U~| •fIY2] '𜾔ĎtQz,Ť/;ʘ*Ň(&L_jR!>Oq>>n :X+&Ġm,T*u'J)U9bgM)]U~| •fIY2] '𜾔ĎtV]_w;Cς寘?9cޘ}oxfC.ze].1VNc`@K*Qw"XUl A#6 tb\凛 b/RE_&+"}ӗbؑk+懗gᮮ h98lFJx8>xb##uۢ o?22z`d+&OJuwߪ:,E@ JLZ|؎b¤Ǥq+6rak6%v!㾮z}9vHg,kHhL4X :0Ǭp2!/#T;=Q.Sk+Y4/>~ܱ>!>!> -Gg`@d#@D݉R .bUq(Ymus_'D7pxRօLfWD r{:tɬCﭜ=i{;%y7k=|C3gYޕ%Tn7gP"Ćշe\|N}x3M˕3Msw)4;yߓ?l{?H#j ۓ>ʤ ,l5(yy&qq;8ƾ iR=.>͜RR˷P =[5V{ X-)4~H>0(8xQf.v\9nF"-~^[#m&6sy1l8Ζ3 NRtgPQ(|A#6 L0NΟ{#.NggT".,pBAGXF&z<)BY&Jx+JW[#VvpΞ[?wk ]2>wœg>>NdTZ'""ޠ ]T׃%ߤ5B^_{*/o88ޗEUaXeee]` jQinKuvbf-^vʹ%Q Q@PY̫{9l1HZZUVav,gH/NFriF"}~~Gb+HW~:=p]Md\YĤx~UB;_U_ݬX3@ ĭjk[~FGg]"_4_oM\Rp@Ky?R?\D嫶K_=0'_jl=` $:H|efAٌ :͠8l.6I]W#({!ۆoǺXGׯg, 08{aiΧ,@z1 +z419Ã%`p鐰g @ 11Ax=>~R 0(>I ^ӟsswde- 9%Ķ)?Q"le_&399t쮻h0c ѣmmgbHWm.IQs]d.}ywZ~Ȏ" W?_g};<ީ_-QTWsW~t2ǚ:2*z)SkcRڪ7i|x:3]ڪ7D,WZϬG^wg1>}ܪސ9Kmr1RtZZ\}2ʇ-8l{?( 1'gG{r SS#%$i)--m&Mbs*A.5E3 1+Do g|aD()튖AK7Js* `]TQz(C (Huqӭc(iia !` g"եֶj$| 2 йr.Qr'W̩}VޞTw*Zt̃F!a|jFڻiKf&R. -6^Dac*"T~>sU,ʕaaI ŷc\<?>agGXOML5ff#R $++)Ius?]ImZӫ_unSn@ ry[k{z1UruVƏ=խ'?0uK-~^Gm`kWL ~qr5<ۣ_;qhg?_Xŧ>M>LltS_xyGD,5YY|}'LZ0lH T:8c`47L=F&epD%z]OĠ^˗RX#~tU,$FK4iXoo. B9l.ryry:_T5u ozLky%Ե_T;g, 08{b0"L4t@D#1m+~8}ҳC[ F!~ᷟߞ6{zx<Gk_6| E XM6hALY!!C_lWn.~癗(ZӨ_oKFWZ:;NVXqwW&WUVgo٣ ꯿zZEVD&^iN-O sXj.8q&3#Oִ}n ?N͙ӌqVVLBFy`w3g`SY>'!4AAE H8Do됀~!:ͪ8 R9l.||1mFaZ'_wP3 ^l| 2\ E.>9; Ǭnqv\JZm '#FКX>4ȠKӆV~doeuulLy(X.9sX4;4| I`8S+PTK !(gUFC-~SIԯj>F-?vwM{fR媨13_j޴eԯ:-Մ{B4KOHh5#89 SU.`p1SWӋ E[}aKأ;d1Z{͝ <* ,@zĜMe6eJ12 0UIIONz|3gVLmVx޼Y&Oޅ9?[3}i3*ꡂm 4L^{D? 7uH@+8dSPGy<1twN2[ !@LlQם/Tf# S@b%LWDa /OΎ1v~m~ag!;[$Y?n}i'ArQNo&Ks,ZtA_BMS< >sn.=e4,XP>}WQ$$++f<ՙ;A_03Lo! 0 x,vFzgo?+]jQOʂ7w8po.H\㝒V }j տIxj]q_duCkk㥪mh];q'jhtw [{=s'ʂL_y-m*V kiiPGD̜3fHdNrߢ渺ZXHmml jϳظaNCkέ W.#OcH8Do됀WpȦɔ R9l.||1mFaZ'_wP3 ^l| 2\ E.>9; nPoaDBgYd@%iC+,Ymooin.456M(X b{CCR {ig$+caYDM`f>z~L7μ6tOX-Y>_JM7O }RWl<إwns5>NR- agqx7oT\^ >F 7ѹK9<{'Ӹh f+Sjժv$$ z]TC66ҀHIw$U@ tȶ9ka|BeW808{).dpE/R (+NHط4UbbD"qpp [ps͛!0gg#F{_okkk "___T啙|{X18M`f%XM=?Px};([v___-^|~ҋF=PhVU5bVԯL~_RdCfO"&VoYׯ_ooooll;txkjjڽ{wrroA@ JuO#o@wvA#$+AN*ߨYN6Ar B)~rYbrrrwee%S믿ٯ]v|lԯH_w~E08@? y~=`b}NHط4Uuu;}TJecccggMMM]"##wlܸ188lrA! `k[ -7IS nVC_!:ͪ8 R9l.||1mFaZ'_wP3 ^Lg+.e2"\x)|rvw$WXH>L ˋn=yիWo޼yҥSNUpppFFƻ{x944.aAxxxAA-[@YQQw^㏕JuZZZ:::>C??/>--mΝ|4_^ZZvѣG@@ w~ޒԯz 3=8҃)'9lcsss C??XPP XreVV|GhI&f^} ~kmm-!=|윁A޷(UCPBYQg;~SߠޒԯLx ABB#!vr}'4٦S@昛6FMpvAJaoV9oDLlb b(r3')2l1iĒ=ျ=XKƦf:A` ~^WWw{)UXX1NlڴǓ:rBQ555_R*|Wp2 ۷oŊޙ3g7n5*actwõB8M`..2Lo! `ׯ4%_r6]JL:~BlfTR<2) s% Rƨ0.H)J;gɜMlALEN` pi [L$eO8s,%coev@qTJ>L a `iiT*y晚`/^Ĕ z<{yw&Lisδ4CNۣF"_jjDS:J4r pJh{8cC@@.h;{KR"0 u%$4bǨ~d70@1j̆ R {cٯ|#b2g[@G7>'MaI# ܭ1^26Q NH'4Uw1,,Ôׯ <{l'ekk[UUrz .888o[V;{y AƕEF[M=?;{KR"0 p $4bǨ~"Nh ,ɀH/rf)[iW1- RȰŤK_Vc /~w;!apԯ/_ξ~)++kŊH3gΚ5kz'MaI# ܭ1^26Q n|@?ܰaO%88|N+c3[) Qeد HWC WFUGQ 1x3wa`ֳR' 丶OM7N=.e?>:ULvCw_;{Kq+i+^I}TKOZ xNNAhssDP1)*j 2@N& c}T5ZmJL17RxxLa"bbZwI2YTtw/s |مLO|T,wt="yRtsuZIYR{3P΀EZ϶삔tFi6 [Mf|2v>$u^>MxsڠM:"=e(-)[CrrŞ@'RRТLIMbpy~4bϢFT 6ή455F;m0ࣀ%4#C*J$ok4LqnVVV~66s}|ʵZsZf/!m+XTz[[[Z;:~I>{FR" j8U\KL`GO@0uycǥOw ZON\[qKˉяl1ʨ_):{կ:o{#!dA\kՆճ&j#TN6+"p_ѕYM'?zlRFodƤ>:ԥGNlc:ݪ;uxQ~.2OXڽ~E-kM Ѭ݇'V!}59xL7yVLu18/B?Z̳ɻcc?el mD_AAk@i*G_o[[{GDL6>*̊ _2 ~CYY粲98DHȷ;bGXj62(_@"qLH/?Q1)i;󐖖3:>@9G9G>AYUfeAYYiB }ؤ9g[^>,)3+aObMf|2vh?A7Q[[')i,릯)'眵Anu=JB0Mt7JR -@Ss sJajJمo;a;t)רvڰS~G˵ʐ%uh-}6?T54^T\wEO34[jy%J0Z++yV!$3)kېs{ ,wrFr@CJeFkMNjcԤ|mod?󙭁6Q̰4([f7,Qnn+Qlz0.H^mtQlbMf|2vhygM|9gmЦ[uwI $_ 44b+b0WYރ 3m'|]6WBMNHBNlmdf\ZO p6h+|dv~||3yX[;| KV,pÁgbHWC ầ֗ @Kퟀ`9cZ Fe [pvj`j_KQmnnuv6^2wVWv [~yggMu\`fYɵgVQNਏ/pŭ=˺FOWr6qp*ϡn%X..U, :# bjcnV*"v8 8~|Ddub[l'L%֚Wan.骩G>l=` FEZ_ԿKWfP̆ RW]Z^&3>;3; .@YVG3bfI0Mt7J(sŞ[]â3m'|]Wn0+ /ĬKLqJ%R>0l  'zO*ݑ$8Hv6f tۦlxG>WLL$_&399t쮻h0c ѣmmgbHW~EWƍgC׶߾CUW2We7W7jߏNWfXSG'OJw5TS{DUo78|x:3]ڪ7D,WZϬG^wg1>=[7Zk-SGo~pc?Ph@nm힜fg! H yc`JKKI|JvšR1,hx8s)OE=OInWZQU&AGMZs6Ue} ޥl0㓱Cɺw'eCS:L9k6zk ]Zu0Mt7J ՚T@Ss SښI)-,: v¼峐wPJL\|jFڻiKf&R. -6!}UM󪈈S$CYgg5y+’onj0y2|Ύ22HTH1Vԯ&#Oִ*%?_'};<vVFAîUrBk7ٍ{[;ݢ s꞉/.q]tu]?x{kG7.rL_k'O/WuUzJkLff~`gdem0ujðS/#%l#SPXxm\2mZ77w ̃'cbK)Ô:A;Dm9&R''M=[Bt,z gT?R.R.Q0 ً$`'c>;(רzJhR9gmЦ[|RJpi iV{jaZT|Qօo7|˪ow]Mw{3qqaaѬMNYd@%iC+Ȕa drs'`ԯ L u=zmks7Ch)Wp+޲gϿ2ЪiZN<r믮[))e[lz7aɺJV1NʁQ(h4쎴24tf\lvv?=&((4t 1_ MUqq@Q-`6]Rv~9؂ : 8i [L$eO8ne9𒱩:r+ii3ҿAk^jc >"b,&NZnkm^gٳ1剢`vLaQPP '$+ݽ{QT&0՗?@[S|eAO*"'hMmY肾T]yA}\ӧ{dEEm+(hX|Hb+HWC ) y|'v 'rwJZm?;00.46WDz&}ͪuw~ NvvRnk7n6]{V ƧRKwr歖+5K>~f:tm[ VVXTGG_KK"<"b9H7CB&35ûʅ ja!U,>=";FJ伄dJ )lcD gn_Fd& &H"o0|;N"F, |[c%dlnmieaYB[>=ȠKӆV6,Y(6\fe5i?j:8mQ*|9gܹ˥>bHWC jjT:J4u pJh{ԃR' %tO-~+55߸"?5Gn' K_xcܭM8I2)/sӍQq2k{*TUfhdV?陸YyԱq`%qT7Ŵ 4W #ƒ7ĎQjx Nhr^FAXDJ 5f)[iW1- RȰŤK_Vc /~n'$_wuw =GTO ʨׯ?AWTgi~E`4MW|\ҥGz^Ь\yϚu^1ib+HW&WԯL~uh,IdVԯJ]n,Iq36}Q2-I@?I2^"5kIr[!?H?g ԯ .o\(fKunl ~e[)~~;!1<.&o'$[Awqe7%b+Ivm3/'կ%_r7ϙc*p{ifT?) H d&Zl8 7v+7"&s61A t9}@g3LSdb҈%/{Vc /~n(+,$D&MlIد|/'կlzˮ+ _t fzp6=S 0lnnN@`r +bKyRC5R-q:W |+ޒԯ-  ћWp$2M9@Z/@fחƠ:f> s,z S;br(fQďh09-q}]~EqvB¾%_tJ(!Ou&N8lЗ\G;I@`+ޒԯLgM76CR!AM,TC&] ϕH^L̘/At} =(X9] ^qg "&b/b+|ް+lII*%D&MlI8UlK.`{P[{C-Qr-Iq ppB_!n ϳz2 0ct0=1i0Hc wtՃHةC1"~DXn8 ]턄}Kc_%&&H$ ;wn>566Μ9GPVP駟̙G~_,QlA&0Po|Gʥ$+ w BAC"TC&l /ɀ^L̘/At} =(X9] /0v*P̢`r[xqmvs-~߇_xرUV9;; w[n/^… @gcǎ CLpɒ%^;rȕ+WTBi-qh0;0(-=ߡO_)zKR26O2=< DoRH@+8drt!GG  3KcAd9pwNW=큩W?sg "&b/b+|ްAP Frn*KK7 +h+K/3ߝ6mڔԌ??_v?3:::ȗjR!%+_~E((3H|UT&D&7ty3 i1聎٠OAK;DNY#Lr /m\]F~~>8oA}P<~U]]~:G}455UReff"}SS#<Jxf8eTTtoӧO?>cj>cΒ%ds#G/ r Wޒԯg43E++ #x `T&M\O!կId`#ȋ܀^L̘/At} =(X9] /0v*P̢`r[xqmvsw|}9O|}qu' K339t+(Eo?A'8[") L'WUUU^^^tɓ'^zK.:u 322} .+ȡt lʊ{8? s,z Sqg "&b/b+|ް9/]6?zKwp(NЌF+TT٘QQߪyx8YZh"O?dZ0{Il~K/|[reVV|GhI&xR2LMss=kmm-aFFLGRY[[L8[4cA^(UrCPBY񠨷|Z>  Q~su뫎}7OѧSU'R>J_t,{ʷ4Xjؙom7/U?OWf\brKVajؼƣ:~[J'(& %ћקP Duy i1聎٠OAK;DNY#Lr /moׯ8wޘdG _>x15~~r[PYjoo;xc=]YY)P [~=|wi\ԭUmm+! -//'򊟟ߖ-[wTn5*UctwBM`.P'4YLݭso$O; "r/.鯲j幹ݿUzRgkiF~zYJbS o.|RYM}xNNAhssDP1)*j 2@N& c}T5ZmJL17RxxLa"b D$,J*U|9Z>BVJ{KN>TY[{[Z;:GF~pyouѝ;CF qYAI#)XjObb3 u 3'RRfSNR'SR 4$)'z.zuc1W=6Rk@٭XfT"W3lδ!9 C>ΕapCfٗnU vrp?ٻQ..Uiiir4B +MMpvzNC#F( (`I7MJI r\r휖_hHWRmmmoiid$@~T*qqqai}Ezn˚{S> Z2( RO tH(@-zO(ẘ*ROy 4$t}'2RAa+RU*GSΔciaU 3:KF Qr9+\+L ͎/7fH {kAxYy>4NBBp4zpEZؙ|DۓpPʪ5hzۑ-?VuX f Ӽ\em߀~~Gb+h~ {0Ϟ=Iu]7ofj>PrggΜadisպ;ڎ+^'pxqР_|Z>  FݒcUKGgGKŷ 6}%eUtڊ.g_N~d.޲Gkc콦o[\ֶϗۍ+Ex%}^iߘv ĩVLmskʃ;~Wmz`O#)X_yZeȒj^k1}%z)4C 4#cԎK<+mHɹhc=zIab;9E#9 !2 # S&'objRRF̀FpS]`F0!aArssF pEP>dm(K`4C$^#oOv~pwU#a{@rB9 fT"W3lδ+$K-@\+{v}a!1annU!!wP3Rd?[ zyV`_4Jᱝ̸ql'ߤB~4x80pLAjF”YYY+V@9s֬YI}G&L`jnH?w}g/2%%|G5!$ҵj;'XXFKI@MYH4rDqכ00HyJJGڠB]QHK*_KQmnnuv6^2wf1ʎ9!aˏ4#1O${ ,+a\VQNਏ/pŭ=˺OWr6qp*_?l=` wWj]]2(N3(>)zWss]@#0HN:U3B;Ǒ= y]1SJ*p͙vx`)Hp+xeώ/7,$~BL̺D^T"Æ- OpYYK=mldgcb(`I7mƏwH$8[Y/quĜ͍pr:v]Fp1`޶3QF{/^WjuSS}Z[[Qرci?|͛7ccc-[v̙K[8#LOOgAoyzz⋕};wTmKRŬJ1W|I> Kصo^?Ux{]VVQ+Mo)~q̡e_CY] ~'^51)m 5}sڪ7D,WZϬG^wgۻ 9ohi9{|O3go7=xB}󯩡6O&}`C1'gG{r SS#%̚i)--m&Mbs*٭ k 3Do~%ԣ _,y ~#AK7j$(@-zwVwUmB/`#:LMtG1/) w\8$WZ((k Ȍ; fT"W3lδ뜠 ]QESTww:WS W4;Xq g_>o̐SRv{J\ArwA%3) F/})M󪈈S̓ ZE~Ȳ8;\P|;f̅ɓ!&pvĜܔF⸦̌|D!~JX˗ÙW7o4IRBQXX(~pڌ3|"IsVVݻɯ5+)Ius?`Im?֯dof7ɭƪb|C]We)7?4~ܬg78Wݢ sM_, ~qFr5(8(׎n\>Zx~/VRV ھ_^Rӡ5:Aq5&33?XFk6N:aԩT:8c`47L=F&epDAOw'cbSK)x<~qXpw4cb`)|4cI7qJ/;;2e3BB02ٮ\ '4cCKR柀`.eFLsUO2 u=]K*SCPU_x,2\_]?"|4my*okIJW;Dyv݄avÊ=|אOj`kd7s'Nae( k4i OvGZ:3.qF;;sB@T:8D:*.H4@lЧ كr%ܝU"a{`jcBL, &G`W@6Qaqv\JZm '#FКX>MȠKӆV~doeuulLy(X.9sX4;4| Io[_\*cX%NG3*)cO@0h9*"'ȴߜvxztO졨m OU~>|IlIoqPeTuC݌:~'6KL`f=/ƭǫ zrs劃=3a; NVXqwW&WL4/{*X('e;Oop7D.NIgw>y_م_X֤oYٯ}RՉ]ێ6R^{?QsFͦ ?sO@*=|z&vG\yJ钏E-}Âʃdž{2˭6 ExD9sʑoLfj`v5 55Bjk.`/XP3|x54sBX3wnEhrp'<|{DAOPI!կIdDGLIz2 0ct0=1i0Hc wtՃHةC1"~DXn8 lTT֖_ -,HC> 8mheÒ%bc-eVVÜӦi˗3a}V̝{ohp\jaco?-<| ~E@@з8U\KL`GO@0hԤ?g[+&5)kfTC4sLJ.WE.7 ީ_%Sx|0',5]pns5>NR- ag\t7oT\^ >F 77:w;'3qfc\Jb I kWW˧v.ѣK6 }m}G%! Wp$2p^#ȫҀ^L̘/At} =(X9] /0v*P̢`r[xqmկ8w;!aߒԯ/j(.!BYIhOKퟀ`C_[_r.8j fkY~er+HʴWf"D&MlIoQ{zKo}  F*$+} 'xoԬY'MAr ?R 5AR" +ATXԯ M"NvB¾%_-PJ-Itto3g}Do)$2 uyU\ i1聎٠OAK;DgúɡEK!J/7,iQQ Fr+,$D&MlIoAN@` ޒԯz3=8҃)'`6677' 09A޽(UbCPBYqKퟀ`C_[A?#b8HH8(\C6mu9@qv鮞lm9"^` xFl)9=`ZD.ƹ-!f]MSn'$[AbYCGH1Zt^_\&0@G FjloIWܦaaBDtI`ZAxB_!v:\#.ճ&:rL-8Gd L(L3CA23_ ELb?(lTm~#9 7IȤ _-^}4\w_ui@дNqO@04Wٽ%_:J7PH@+8dn`3#.ճ&:rL-8Gd L(b҂-%gL8%L\QQs-IWj|tQ/8<ȸ2~O@04W%_NNJ7)$)#,ɀHI;]=yn#4|>یsDف"&-RrzK\s[Bկ8w;!aߒԯ%ɮthZG VYQ[S~emZRN"zxl!IL+<^WpȦ,GGy#.ճ&:rL-8Gd L(L3?\JN|i71q.rKpN\QQ Frn*KK7 +HW}6(YbRQ-3~Ew((3H|UT&J&79(l:;v٥zvDGi|l{/ELZ̗vi" 6*_qv#n??do>F(~E@@0뛒Tw1$^޶d/W%_hgVV*LG". ћr=TC6unn@qv鮞lm9"^` xFl)9=`ZD.ƹ-!fW$yJ _'մ&Lfn:; bv{ HJ{s2a7B$+~籗(H~54Xj:$KrH='-~m{eK f#KSΆΆNߐ#uƱܦ@@5VmTrћP ٴ/l(@qv鮞lm9"^` xFa)$s)9=`ZD;}}SEP3DY浼bnV.[bZֽ-jZejŴ %BAQȃl303y9K:. ~QPicbmlۗEGs3.2?,qsQQbb~/?1Ph(;AǷ\mݛ83 po׈Wej>jZF 8I.,蠇(ߔ3)7zRΦ Vton);7.W=JIɭТczۅd JP9Py,{xuX7(@Wo䇘sI#% Eɑmό%?H+;#NUJ{^OQ ;c_ji)#u،[9n%Ӟ,-MMFFF~Ŀ"l@>>v)qH{/异,ccNNĆGg15~&4t'5d>5q81Q,v9 RCҀÇ6tſX=/*<}]}]I FO'${fЯ3a}<񊑰H$|W` CO3ޫY^|ڧڢTDRݼƨU/<$sbefn8%,esgD:8FXAqs{p|G`ܭ7:뿜y(?g[GvF;g#IAC,܇?څ6)?1T0[M-.w ?X;@^j==''LM8cc?tu@⠠u@z\V^M~W|;"?tV6%*jkjjyRwF}Ʈ6RSsii*G>`oaa\w̘Ck䔔KK/[bf0jK_w+fhƙA/eOb(ٔl叔;}-E d]H |뮟y;Q̨A攧YuXK  N;_Le*Q}Ouz8 c_T)x:*]LxXlİK`4G&c1>cRRI'Kdx^Hw>}W,6qV氰Jh!!̅:b__R͍?.:L@"A̯G х䊴ƽmi&ӑ#;2-C7CI yۛ.xYZ>\`FG.ƙACӯ㝝ž|ɋ/R'N$ 5kVuuDBpuu;ꫯH  I啚'30YsUSxE V <(k?J>e)RWI:4(գZWnU{aY4Q7O\T4ݺ~ҟѡR^=To|sՖ~ޑ:7㑄eq/||⼢rEѡ#|u I]M}6Ak`d_թ[)kͽLLYS+hsx[wtrrAUbZNhґ7Huz8 c_T)x:* mva&:;8Vg,Օ) B 1115#FKKJLJ"SV,y~~ Npsgb+2ׯ_W*MMMgΜYfSii=uoo]v՝?˗:"v?pIR[sss~~~BBo`R~Z{k~EB$} 8xzHk]niJ|Vm.\}__Zl쎪[Jóa#ʾJyЂalVD:=l;*ӭ2?!knNP ۢ]Mwp\Z֢uo([3r_Շ,y{6 :ЖDs]&kFlʔR33lo/7~%l'':ujYWO sɓ`G'LȳX?6ߣBxͿfՠjUHmC@~:d5PcfbB"xs]/vD2wf .Va :Og_Eaa_Wm.=,DWWJ{x0dJMtW>? ' .3&xR2r}aÞ b$zw+<,8xՏ'st1L&)2̌9WL(gg'ss mm ȩ̈!C? 3@Sƍ322/Ynʕ+7o޼xbC> _A@r ;(yo;:{75IGW5'?s=S^:ܡѯwCE;ݿvn]t̟K4 q`H]Bv$FjLuz8 c_T)x:*]\xXlİK`tAP{Df&ԝ1C]01-j.- ˊˋB ٓJ;6isϛUӚsӧDu|љy'jc+F8IN&x"IC榤= S9h>"u1 ~UUUN{$LfeeecczkWZA䕤tYrHQQQDRܹsuիlOiiiddWD ϟn 7pcklKM};"YƓ;mΜ:{as\d9'g 311{JffzE؀2(|L vǧ)xSmwR-MX3&z{O賘]?}K9?G9~5K,v9 4CԞIɡJ2a0ſX=/*<}]}]I Fz5+bXJqJ(;8ױ dHdG(o7mjOx2rҰbb"gGHk.LH0qz؜z"9#Fp*=O^1ׯ*++hqqqccc{{˗ϝ;GW)))[n!HX$!<<<++kϞ=Y^^^PP{Hofnk;vÇ_^RRy & 0zf૜E]EZOjjZ/qUO#Q&]?"Rgwyq0g ;tp׭ModOُOGjFhY@h27g{\]GZ8!k" 1X%KHxfzE؀2]+r7j#9kN"S؇rGN~&xE~D _fUtT ,6ZERKBKYd $厎ƎeC,,^3;99Օ9$" d2!nmTyOf;:*T8+(h~H>{ _ڸqcV>GV\qZI1cF;c͛7^xwvvwqqQ(bw~w㏷olMQzo`U!qI iyЯ-^PQJ U'~~T~D_ J|pudшЧO6{pQ/ = Gcu#_ y~9&2~HD=E /m'x _*6f~22rɯL3g1Sv9vvѣ3%Ϙq/>:zEu99>xS sDVց%K->sm֬=fPƙAa]+r7'FrLEt!X?M|&VD͜Ӽ6=5 aѥT% ֯8fomkoP7NY$*q>8tӧ_^j4Rj<+?wf&_jkDTԁ%K|t|>h4LJT^ۻB;XXXضm8έ[3 'N$-?~ȑ#3 oǏ_bi˩STYZQlS)k+" WЯALQ*Mg0֭L} ([zR_J-V=ᓸ俇zï?DȥvJZj?~(00KkZ~>mi&^q_rOGnBP3ݸ\;Qߓ&gs:]yz֫տ~abălY]'-*jK֮Y%Kjihe2S Ҟ CBqtNhg(e?]+r7ej#9'&LEt!X?M|&VD͜2,Ylص.-ץr.0PiJp[~-_vsH>BEZtdB9aٲbcLMLl͇ 2ߟ=hōٵq`,_𑐐ᎎ=ĞW'zzzmذZkkk9Nⱱaz֭{衇C;vء ovzz:K*HX%}UQ꧵#rH$T)^Awxq=dcV/r,oѲN5_=~\1=)',igC,,lF||}P7~ϳm-\e!ɏ^NnT 7[sSs[̧)AO3H ~EXm$gM\1T$xJwbZ/ϗ8abK̹ ;cFRfa:,\u\dgțxv6>83hh[N${]4].`_ե,d)vDK5Z~ )"}*:dP|`bЯMIqz ]Ux(yNF8㘇 BAN֯<^ fPH bt>?ɧ_ӤO=M qz*嗵Fu)9u?eGP/X$:u@O[EZ,TZ"e~`_T+35=AW <+Ы'囙3V8ǷrlRHI''bt>?ɧ_ӤO=M qz*嗵Fu)9u%ђn_8HtJH(YRp,옿>oAXLw~l +Ы%Wfn.xyVqisHn:EL>*&}i\S(5KYɮS,tk 5ASZDDUuB+R\A %%_''jٚ89 bBu|QB`o3`}L3z6 ``W״W?.K YY8x O+Z;w:ܲf' yDmjka=nsO]StV*QW0 lg3 FBv1RXIg2t麧r!NO֨.e1'N|!` 5ASZDDUuB+RhqeќUAu!&槨rCLMt|љd⽭{3`zg_P^('C$!@zun&}M~p8on);7.W=JIQjWM<2WKնB膜=Z\~IQvt[.au1{ed=ëqi#1RxLJdW4uOB FeQ]bNvbgI[cup?: '"@*_2$88Ua7pI>9iR%LXV0W&_N "ԺP}zw^kH^#Iov^=}hɤM9}}'l˽>NU}M'*pVzj67kv |\ݮSzWFE8{T#SޏGXN%NQQ{چǃvvtC|h2 [PKssW(m &.ϰ 77w711twώlG--eN~~+ǍԖpsȏW LcEWQQΕcǎut8v,.ONacSD/g3\"A$2Ѓvv&&.ffo3sqq37771ZS̯)+29dgyzz[Zڙtp(2=3W&ONh$p(щ9$N*zun0PJnBIg)Q(Jl{f,iݢw-ZO+͋o1YjBɑA2!Vf涮^R6zFJodʌ7w:G9YY;x&ZyyOsu ߾e{=4\}xï7Hl_oj-@+c?X;@^j==''LM8cc?tu@⠠u@:\V^M~E|;"?tV6%*jkjjyRwF}Ʈ6RSsii*G>`oaa\w̘Ck䔔KK/[bf0jbGݳabdJٿ:}W,6qV氰Jh!!L1b/)FBTY<'I#%Čzh](JNHKNO?=nۑޖ`2?9DZc+~HN9t(~3ϐGrIJS5?9o(|Db~}(TP1R E;z_un0DQ*>&x&\^|ڧڢ2Toz_oUpM{EEcۭ[-*գOEx^7g/]mz7o,,ᶄEɧ󊖶Eխ˟?6'u.7W|dN4?gŏ MW.~eqמ ͼ=R 5%ę(J)07wLK;I829]Ȩ0Rd!t9 Oϩ8ƯDYYy=_e?yg&hml S(DYkd*Qm:hPã _iK4ˑo_f0eOI_E 192eMn Lٙ6HŜxȰeX%=_!"6VdJzҙ%暙>6&&վfĈ||H:#ckMF].5^˙shOO17_ wG2Dai?_ɗIIdʪ4%6oq@; nnLA6 .lը0NcW n0<$Q~2|:q勌)MyQ 9ZZl쎪[Jóa#ʖ~W-:aEdO ۱ǃC-v?L\9Aq/A1?gOjkna;e=@+uYRm@t<+-)Ct99y$LFFlʔR33lo/7~%l'':ujYWO sɓ`G'Lȳ@0$_k&_MJVЯ ;R Sj %}/fNh~DWWv& e1'bg12,~%=,ג/΀H+2%=f&&=<$V\3ѯ8}~@@N@]gL̛e<=icÆ=ļ5H%~Wy(-mYpP+'O$bLS:esQNdmm ȩ̈!C? ~l]'t_,fo_>k7wN/U[~~\W}yngKg;T"nu]۹u1.i$#"y?w ݪڑFj;á˶<Z1?c=Ek[n\8nun4Ur|k+3FVa(o7  edgi鞐$;yQR}R6I:8MMf̨' :Q   6yr^Nqf)=^!Oh4$r{2h bjm]9c_!%hB64A<YPL)הUtg ;:q,c(b ٙ6HŜxȰ v,01kIg@$r&+ZJzҽ:*kz82PxH!tȐ=siHȬaØ2UӚsӧ3&O 8Wvu?qb̓Ɵ6MDN%MIa{B\ n|Db~\=ea. \؍{> *pPMVoʓvѯkWC4Z;y/O;Uu>KPvlz`w^bOrc4RR`;TN};Ot)>1?ӪJ6|&4ܬ5cw.j#\c[j{662\_is3 $9>O٣6U¿73+)(7F ~'[3&z{Ou,r:*dtY,M.͚弚JcjB F}QQJO&Lxav& e1'bg=oG"}- DNC8 d 3KKl5=}#y緻$ qq/#G. noy!&,r&|J&Ʉs,'dhf&>{Š_7'=tya+1wh}>w=JKTszZZߊ[*=/NlAc~K7UIR`{TD{fE - -{ClkQBCgQliP264]iX01cϿc]]CY*.ҚK&aN ٙ7Οq4kVbI#|~&OJI{.T0/kRs;ʉYz0Z~ )"}*:d)W͎ɓ%$ޞ9$o* L28 M://\S5 [rr㏳3wgf+eܡODEjXlϧO磎ƙAWMΥ(!jIF1rؠHI3Lk>])SSvovѯXUYWj%=ӯ ~$D.SҺUC/>^ZR_oK577U mmM+:zt*eCo~vV{s<Frìa3/dɷ qUwttz֫տ*\A /788ZGD[wZ=d)vM:|򷨨..![X[g,>|KH,N%KH{., yq8Ox+qi*k$䴌"F '&L>*&}i\S(5KYɮS,tk 5ASZDDUuB+RvKSϲ%ζ63cgHk.LH0q6,[Tl!C&ӡGMv|96L >2b`;G3~ߜ Sﳫ?DB$cGnbTyfn [5D:֯vk}_tvIa>6>aIWgGR͞uf;d`hcZ^5rz"F /Kg2t麧r!NO֨.e1'N$Zҭ1:8 NiVA ֯HYb`b_;;;ۇ=/^_-[&{O>- U찻gKMm$DHZa!?~ГQ$Q[? rg~ٕ+ey;W%pQ$w50 e~tO?]kʕW}? +ӯN@2j >83hhuuRtUɩ~4iҔ)S[ZZHK JII;nm=) W?5NT!!@Ҿ3Hz>o '6Λ%stEMDCۓ'+лmAAiff痞S.M=8gNXb$kY׍5?x7+N7nȸ_ZZZ؇SN߼yŋ[+лh+Ы0oqMML >[y-e;jm|߫wwpZ5Fۮ5NmPH$7/cF:A2 `f`13ȡW+g\\܆ omm][[q Рgת,Y5cǎ;nmɓS $\Ϯ*Jsb@ :0 P5WhZaaa۷o8mx}UWWR^^7߮cm^Vuvg9/)"֝K_utH_~{_-_<==LKK[b]^`uzܩ+W8qBŋbݭ ? ./W4F Xa=꨾xA  {_555o߾\.onn KKKڪФIzʏ>tqƱ 簻ʁ݅y<'OHf/7JAF=ѯT k塡䕔񊦮nѢE$daaꚝMuѯ "?>ح^G@_~+)P_W_tc0}30A 0oH__CF+W?kЯ Г/xJrvM9}}'lQ>]:_נ_ :A  Wܪ~?)l-"dn?RP(Y-E; P3+`@|S|ZJŧUtܬz/C>JmQJO=4Wh~Ikژ[*څbڏRO_qq勌)*E;V%+#['0}30A Г:nC(Z&:~sym+k[EY(/+`@7iN&V.qiYֽubku ;(yoWmC79(h'꼾 -ЯQ޼T_}l;"=yB:QIWtү5WFN`f`13۴,Kzrvob P+`@z[n5lZ~ R~ u3좟.D_UkЯ uZN/Jžܚ[[5J:z~UA2u03A>ЯUwtzf_ ?0C2SmQdcV/r,oѲN5w.&@~נ_ջ_3).sDCkwPil8q(,j⼍'wWinW5~U  Яգ_&˩PLs8U1R IBy+Lpr`K4UxA  WCDG:L*"(6Zm@  %m7JըAF +O"ԂI} KƩ!q)]@h/WM+`@E;}$uaFB! $0K4UxA  WCLzZ=O&L_ڇ~ovtt~~~}ߎjJ_~e<ӍA bfCʒhʕ+8UV1 3flO<|rgڵvEgggNj9@ >'}AQzoZUP!qI iyt}?ƿ~ZU+`~T*ꊊV^~T~m6s֭LBnn`I9sL&c* ڲe g7MMM͈#^͏?_'sWɗSBNRޭ6R׈'$D P?n:D_5Wh`jjaÆjvQkkZxlll[YYQ<$={6--we(g?ݻ9]cʩ̾BwygڴiXB:yr@#UEN!qPAxbIwm%uM*} L703A}Pk4,,lmۘ/\ XQQ~}'ctL AG+++X:]FE,L9,bcUm <60aoʙ=)gJ Q)ըנ_W˗/OOO8VXA,Xn: ̙h"]VPP࠻_AAA'OdG:n^0PiJNaknT?1~rz},GJ#۞%KZEh#J__~{_555o߾\.onn KKKڪŋ.]z05&xfgͪ2>+A2u03A>DRi$˗Z[[WRf+Ekvv6tٳIgܹL󳲲?>y1FO??~/ uٿVru{7c{ōSJYQ):$v\"cxGJmQ#7 -WлHᅉ iIÒ|Cj`Wk7wɽJ|VmNUJ_~WC#_#E)jS)C$Sh4_}w/B[VWPM.-ډZRkЯl bf+QS*jGRQw6h$@h}ݞ6>@~fՎȹ_u_ԯ_]RkЯ `h Sk-BB$ѷ u73:Y?{oo૜Er -ЯϚbH$n@jv ?8D#a)kwNgOE?]*ډ*} >A ~04JOo[H$4zKw=m|TJž[5J;_TZ'W~04_W*U/$Ƭܙ_vJYΕe /j-A_5Wh~04иѯT*eÉ&FeQm.֯ T+n `f30_ +v& D[n@pw P*} 0Z_4W~Y+vQWGU+`@iN${DW:jJ_~e<ӍA bf+&_#E)jS)C$S_C*} 0Z_4E;}$uaF! $9FZ:׸OЯ 97WsIHIz@Q֯5W3L  f`9_;;;ۇ=/^4qnoo% )V@̡HI+ z@믱|PkЯѢ~E_~]T6559sf͚5NNNF7W^YЏ) W?5NT!!@Ҿz@o/qW[VJsr 7)(ߔ3)7zRΦ Z3 -_qܸqcFF ŋCCC{c_A҂膜=Z\~IQvt[. -'~D(9Q[:Ov5WF bfO_WUUUtKJJdVVV666yժUI^IZKK/8ȉs2!Bx!&o=3񖖖nnn3gΔ9uMl~ b`hʨgR4y{U7;c7ːO.+uU 0ZBdڑhqqqccc{{˗ϝ;҈W)))[n!HX$!<<<++kϞ=Y^^^PP@e2ի4\رctt+V 5kIj.N -}Pk4,,lmۘ/\ XQQ~}'ct P({h&_1w&L9,b݉o߾fծ#ƿsrvob~R5WFN`f`13W˗/OOO8VXA,Xn: ̙h"]VPP࠻ɓ'z \&_{i8JD7VpOr =T])SSvo~RT+`)888==}䕔ryss3P(|}}ׯ__ZZVUUG.^tÇVVV8p977ɓ/x1?^{~rEk׮?\(sDRcA+!I i b*ZzUuѯB2 `f`13LzM=AWB" $- 4p7׿_&@mRkЯfX_i#!@ C Aco?wsT~QAF CIǭqI i~7h*} L703AЯ _]Я@_|נ_8_ZJ_~Ww<A֯^Rk\,+n `f30_{/~@נ_oc:<>ݶil]{l Jeŗmڸͺm"Bmrn}i ؊V"8 Õb"̑q`9{>|bΜ8=?8Ϸ@_(SC+}ӛ +6:A1$ 4ϯ~*OR+A,,%a}|ߍXˊ RCŠ׃z_mJ~vshAtWUjs>F^ ņxYr%f+]~|L_Zɯ@_֤)Bk{bshM׿??HJ~+ t vx5yj<Gϯ ;go͞<1hJHoVw=kƇ/]W$_n}@A_׎~kM8֤)bo=G@]k~sgfnʿ\ixKg'qO1'n(, 7~tLQR+j ߟlMo=G@]k~5S 1nˊH|{pv}W#AW[ȯ~=}/O_ӟBz޺;54`顩[#"V)J'p:tj|q\)!֕sM}Ow/;KNQ ʔaw?x˯z'~Zw-zGu90! t P-t.9Ő(e%s;ߵH^{T]_6Z6`ۻ |H$_nQ_%&&N<~Ǣ_&=>vztD;.1bSQ Qfכ =azj~o~OHJͯJ|ɯIj% :A@=Q_wM~ƍŋ;׮]5k~M|,ܛ0zS Qv±i=Yn7ҿC#;?8ˏZӫZɯ@I~۶mKOOݡhjjv=@M֧ʘweӟo[SÖ 3CS7V+-ȯOl)))fy„ AAA .Twwwoڴ)66V7/θ8Ż^9d֮]2iҤ9/_>11G6mʕ+Jmmx7_ڭ[bbbMo.հJEd;[2##QkZ#J'p:t$˗7suuu]z… #3gNjj;ZZZğb;22a˗WbgccbQ:::f͛;vL]jƍ RVVrz˯o7-EY+*>5lʆ9Ϙv6:oZ]W'tˇ䤥\pqR^_{l=[lqޮ8ydE ߕ/>}yV\gϞ>ϲk׮EEEݼyӯdU1ߤu-wVm[$l[f[սj ?05V+-c_͛7??n;w,(**Pcc랺:|O>nġ200uZQsEFF{Sm!V^Wv̕MŦBJ|0 r~/Zɯn:ttcL+C=4s̄~ʕ+'{^? L<΂3gΤ͘1>sC,n/%ű䬏 xY!^b2Ti=`3ӋZɯ@G v8 t7|ꩧjjjF/d+6-88uj]xֳUU5QCikL/k\pzC/ _J~Wً-rۙqFeW_/Һu|OX,&M}''OsݳuQgkT)^{L+@;zrIWi7:Hq_7n̙3gѢEO}-l/PSSӬYx㍲˗/>|EEE'Or;|P]KKKQ߿ߵ&##Gsvx5yj<G[4|0晀%Wgɯ@7ܗJrDXQQQ'Nmgx޾n:1#L:uŊΡ~iժUaaab'\zs_={ bcc_ycJnny󂂂G jfΜt/r֔dM"3g>ˆUVl葪3|5ya0|a>˜#WZɯn:ttʘT: cB LZɯ@_Ǖb9IWӱLY[##9r~TR++cR-gu.Ő(e%sc_-J~vshAtW,~Ő(eHyo=G<_3SV+-WƤ>F~so_1$ D z0y0ȃ󫿗zo~%$@~z2#9r~IWi7:HA~eL_ phlkMV>`޾vi|HppHҵ۫쾏UV+-WƄEn0̭W=Usz`|sJFYIW[ȯIM|oQsc ,^bH z0y0 @υH9w<;-eEj=v}WÎ(R+ A:t+cRa25܎F bñC@xCo=G<_O33rtZY[~eoݝq}顩[# J~ʘ%ű3 xY!^b2U# F/G_ˍOϵ[4@ί%_n!2z\&J~Hy+e˕^#̯[V/kp]r}Qr~wZɯtN>@ AOȯ5i*i:Plx _ __Hj%B~eL&OvQ^9`|4:C?]rԁ_EIj%B~0tzy~{qjزC<`fhjFUV+ A:t+3춒eE-;[2##90Ij%B~0xɯ$$9;+*v>}}>Hr7Յ3W\ eE} WXߟ_!""""ϿDcY~ """"W~u?q~v`xN9yϿBDÓՓ_{kqjزC<`fhjq@N~ɯV,"pGKQfIJ[++DDDD$>5lʆ9ϘvT+UX ~ЋBXv2Oɯx Vgն5K%kUuϹW]-ʹ*od2p'C=fNq˯5%""""""""_!""""""""_!""""""""""""""""""""""""""""""""""_!""""""""_!""""""""""""""""""""""""""""""""""_!""""""""_!""""""""""""""""ͯՒ_!"""""""6kϞ:I~̯Ξ:Y[]E~̯j~_!"""""""6,5J+DDDDDDDDf~Uc~lw95""""""""bgh """""""boj˱Uχ=ADDDDDDD^ Vb3gdUW/. >[}C~"UW HW endstream endobj 43 0 obj << /Type /XObject /Subtype /Image /Width 1600 /Height 944 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 2952 /Filter /FlateDecode >> stream x1 /B $;xLk endstream endobj 38 0 obj << /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F8 10 0 R >> /XObject << /Im1 28 0 R /Im2 30 0 R >> /ProcSet [ /PDF /Text /ImageC ] >> endobj 44 0 obj [531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3] endobj 45 0 obj [525 525 525 525 525 525 525 525 525 525 525] endobj 46 0 obj [727.3 899.7 860.6 701.5 674.8 778.2 674.6 1074.4 936.9 671.5 778.4 462.3 462.3 462.3 1138.9 1138.9 478.2 619.7 502.4 510.5 594.7 542 557.1 557.3 668.8 404.2 472.7 607.3 361.3 1013.7 706.2 563.9 588.9] endobj 47 0 obj [843.3] endobj 48 0 obj [777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 762 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8] endobj 49 0 obj [277.8 277.8 777.8 500 777.8 500 530.9 750 758.5 714.7 827.9 738.2 643.1 786.3 831.3 439.6 554.5 849.3 680.6 970.1 803.5 762.8 642 790.6 759.3 613.2 584.4 682.8 583.3 944.4 828.5 580.6 682.6 388.9 388.9 388.9 1000 1000 416.7 528.6 429.2 432.8 520.5 465.6 489.6 477 576.2 344.5 411.8 520.6 298.4 878 600.2 484.7 503.1 446.4] endobj 50 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] endobj 51 0 obj [562.2 587.8 881.7 894.4 306.7 332.2 511.1 511.1 511.1 511.1 511.1 831.3 460 536.7 715.6 715.6 511.1 882.8 985 766.7 255.6 306.7 514.4 817.8 769.1 817.8 766.7 306.7 408.9 408.9 511.1 766.7 306.7 357.8 306.7 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 306.7 306.7 306.7 766.7 511.1 511.1 766.7 743.3 703.9 715.6 755 678.3 652.8 773.6 743.3 385.6 525 768.9 627.2 896.7 743.3 766.7 678.3 766.7 729.4 562.2 715.6 743.3 743.3 998.9 743.3 743.3 613.3 306.7 514.4 306.7 511.1 306.7 306.7 511.1 460 460 511.1 460 306.7 460 511.1 306.7 306.7 460 255.6 817.8 562.2 511.1 511.1 460 421.7 408.9 332.2 536.7 460 664.4 463.9 485.6] endobj 52 0 obj [583.3 555.6 555.6 833.3 833.3 277.8 305.6 500 500 500 500 500 750 444.4 500 722.2 777.8 500 902.8 1013.9 777.8 277.8 277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8 277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 444.4 500] endobj 53 0 obj [625 625 937.5 937.5 312.5 343.7 562.5 562.5 562.5 562.5 562.5 849.5 500 574.1 812.5 875 562.5 1018.5 1143.5 875 312.5 342.6 581 937.5 562.5 937.5 875 312.5 437.5 437.5 562.5 875 312.5 375 312.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 312.5 312.5 342.6 875 531.2 531.2 875 849.5 799.8 812.5 862.3 738.4 707.2 884.3 879.6 419 581 880.8 675.9 1067.1 879.6 844.9 768.5 844.9 839.1 625 782.4 864.6 849.5 1162 849.5 849.5 687.5 312.5 581 312.5 562.5 312.5 312.5 546.9 625 500 625 513.3 343.7 562.5 625 312.5 343.7 593.7 312.5 937.5 625 562.5 625 593.7 459.5 443.8 437.5 625 593.7 812.5 593.7 593.7] endobj 54 0 obj [489.6 489.6 489.6 489.6 734 435.2 489.6 707.2 761.6 489.6 883.8 992.6 761.6 272 272 489.6 816 489.6 816 761.6 272 380.8 380.8 489.6 761.6 272 326.4 272 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 272 272 272 761.6 462.4 462.4 761.6 734 693.4 707.2 747.8 666.2 639 768.3 734 353.2 503 761.2 611.8 897.2 734 761.6 666.2 761.6 720.6 544 707.2 734 734 1006 734 734 598.4 272 489.6 272 489.6 272 272 489.6 544 435.2 544 435.2 299.2 489.6 544 272 299.2 516.8 272 816 544 489.6 544 516.8 380.8 386.2 380.8 544 516.8 707.2 516.8 516.8 435.2 489.6 979.2 489.6 489.6 489.6] endobj 55 0 obj [499.3 499.3 748.9 748.9 249.6 275.8 458.6 458.6 458.6 458.6 458.6 693.3 406.4 458.6 667.6 719.8 458.6 837.2 941.7 719.8 249.6 249.6 458.6 772.1 458.6 772.1 719.8 249.6 354.1 354.1 458.6 719.8 249.6 301.9 249.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 249.6 249.6 249.6 719.8 432.5 432.5 719.8 693.3 654.3 667.6 706.6 628.2 602.1 726.3 693.3 327.6 471.5 719.4 576 850 693.3 719.8 628.2 719.8 680.5 510.9 667.6 693.3 693.3 954.5 693.3 693.3 563.1 249.6 458.6 249.6 458.6 249.6 249.6 458.6 510.9 406.4 510.9 406.4 275.8 458.6 510.9 249.6 275.8 484.7 249.6 772.1 510.9 458.6 510.9 484.7 354.1 359.4 354.1 510.9 484.7 667.6 484.7 484.7 406.4 458.6] endobj 56 0 obj << /Length1 2071 /Length2 14346 /Length3 0 /Length 15593 /Filter /FlateDecode >> stream xڍP\ <Ӹw Hpwwwww sޫckεHAN(ncHD `b02322Ò;Z#%S;XsBh!5p0H;YXLL܌fFFsD ͍rik,G<(L\\F9G3GF#K9BP9:r30X9؛S\J@3ea*fR(ۘ8Ks#Ç1,% b hnW s뿝 ll ̭M&@qYzGWGZ_6nR|07?#{s[Gzs˿82b"6VV@kGؿ5}ݍ߇kambdbnml c'[Uks;'m>Dd@G###;h1@//[[ pwzyS `ln0[! +@c}1a6֖n>b!/4_+@`bbp17;K ]㟈R&68{2(6T o1@adc4bHo= Vng'ǏݐkB X_džYZ@csG# N#5P @t;gdq8|*JoJ1k#v``oo1`ll%5=zk9/=_'`K/` bE? }D GL?#"Ώ GL?T>bA?#_=e0d0 ?ZcQ2ctG6N01쿐Ofnfw?5n@rq0IaFXQ8G(Ѽ?XmG3{?zQ?>9~Ps(G2n#'{Wn]F 6F 5ʅ+,J;t IK&sZ C76)>-4a4GqatpD Bk Q2o(֑H)tp6rV'JvG+~b+{D\}sHJwK[JÐE%܁\3}㖘 s{< \N;8.&'%a2oT4OU@I F̈xf T[DM|ِrG|<6 X\Ss \2.NG~y'aVέ֎?!l"0V.oXQUl`KbzSt=Q?]2 wd\%lsZt,HR%TlH"*zΔQƢ#;~lK}r7Y[n?\=3~;$I[ϝYpMKK=inԶΖ^vGo3gD9!+K}d`Rh7e⭅.}_mbdJgD'sZ{"􊼰 !`w'UxH`)rC".lOb9c%Pj/Kq,ёJcY#{ m(C$CJmra/[%MI!RK+ &0&o_J*X$:%)]66,|=DBߗwo贊n$Pp@}B#WbNЀ'J \噮R DS\uJ>+X]cw`v'(NꍝMB4x5Q-Ğʔ9Dۆ*o/uLqD~xiG3]?iZiFK1Y~TbrZ3;ч.iex Z>ޖ0s3=Lha;Vr'h.X< Q   D<`nv4[e3 >BǐP1Oͯh+ SV,|u%j(ie$w^>*ƻvH>y7h#X'(?Ͼkezۺ+1?!}j+6ЗoaehrE{mTC 脧{A^Vh 1 kzLK~2I%PPZ],BN#~"/$Z8,$16"U$wv'0EBwKu֬MqvqN7Ȋ4υ4!43;H6j1<ɺI`NbLd(\%J= XW$|[ ok{(7 6 W9{bU'/ćD'&X4iDBaq#`,(;$]D|;$Cϯp N ?6$VI :%:_ vI:b qylPU/sTg` 7(IR ԈPw]?3%[$%Dڃ$+Sw [g̏]fH^SzGσF6ta+{W̭ӨA{;Y 09O? 9;%ZgMn?vI~m98塻>ƀR&%0߲_lp8wIC~JrnWLKzSXdM 0(d;k vBAn Sţ!mq8aN Xֺ XwJqUXu]:tӒ!N¨߼zM˘ DOӀ~CZr-f!>c9h[ Y8 )rAVzyү!,Q!Q:YN<-Bga6)Fis_s穘S~|%%9E`x;y);خlwU=QLJ<%s6C> ]"7JHR*!ux49 ak-ӒBs ?,Q4j׀ҟϥT7YZij sV{a~j q+_V޶S^сIdkThp1`DBޛqsN~Ž3V6M&{6Uێ}[l_s[Yp鏀I6i%AcEK2n;#*pֶ׬۶Hag s ĔF??XUM#e0!3R ޲n'عJBC '\GrWOH~F ̗#/r} y_`,i 5T(eTuB,?uqu';@4Mʈy.V?f> stQS}ϸ1wOΡ\ٱj{]nĈ|Fp` xf̒bh'/R8{ =n?S2]Uݨ>f (( 3RWTOE MGħyJ6A#L!@àDOuH|"=xYU}ϘL ƈ/#/bb]ڿ˽ 9|9ȖZS|--(*\ yDŽP<y4*,=Ji `Q)h,baDT"cx^bj3x<4{ eFv7mXNPl:y =UyA,5GTu˞o:0BCNź 3IT;z"cuT XtesEX!mvkf`S=,fS7!(!o N%]!~GpuczO ~No w1q5O këɮMa@pT5Cct\?mΩO0`=Ă"KTg&^_L:߉MK ' k6FhyԤQ,-KP_m̥hm˓a+BL`DyUDrZŽp/Sk< `WҪLdJ-\ 1g=V Y:oS X<6ɚcĕRzݷ]\^Ft31@g$zj0/ğ עDC.vӪ^NymTD"7A_ lxP#cu 6ig[is8Rohml_9:8&-l8/JqŜuHM f+-yueX+zRc}?Sx{6Ϲ'R`+T>ŃsIxLt0<-Qþv̾s5OoYw̐x󮎺&o;ȓ\*arNY?&jVj+vԇAO5p"ʵQ7ݾlθ=KՒȬnѦX`zx:KWֺ1AAkBHԒqLc #DZ[#L%J_/B%l{ƈ̃kN^c3X%t &m39c`:²D_/Mޛe$WڔUi.bv3A.5tb num=b>u̒eGI&20e8M9!1-J/UNOw{P.F'!T^/ LaGbJ/H8FegzjBV{dU-ttACh 獱\}V 3 Xxl.crw0rR{ غH#1yVQó㊠CGER ?3Xռ 4mWh`/nĜ&Y!-3>Y]@R0>%db} r0N%h+t6"(/kУ[Fta=pXU0Փ_9>Э582i?].gl֡Yk=z];V1Dyv(y$* 7`\IhbAviV9=rZ׽4,+^"Y[V@^~;xhi ݵL-a+}Ar ! 90XP34Pm6T2e3 ~CRZy*G%ƽP(FPG:Lq4=H2_,EQws":Asn];sqI[`%i0 fްƲ>' 7 6aӈ~20@Pqr6#`¼,e)VBقSItk+L`D+#qVi Lqz GHC~LL~} ^f*u^[UbFCU2:f.}V–l,1]̟%w8-FZif7DLgal]̥ -մ"q{ܞ5FAeW[R;rɭUG{UH8[!< _,"ضVE?qYtr HuzZx*&E}W:`d['YR{Wd 1|>լ u̳-oSX%12<>Jr2NJwJn  ETmZ%)( iן_#nx>-H5jHhl;5m~L5k +*|ۀ?^.h?y`$[5 PDoBKfA%H:_mɸfԁ Ox{#vʒ#?J3M>Y(AUn ?{$v_!T{ X}*cU֮ڌmw^n,?Eס)Eߐ^wY#~Đ+ÊN૤iXz\w!AQX4X X@U!&LwN+ӷyK)]T[F^yFnŧ <>gC|H9{>i\.dCwU6fWiU- #62oڣ7DcamҞ_t M/6\Wh[p#GKK_v/8kWs3i/Lk궄Jk&*y7Tu_"|(i|jaAr=>/'A]30 o8{`qZPqO[(д eܕ9[ JQx%T{עq4z}V=cKxC*'q\D89 G;2>}6JHFzKk/f#o/8~I.SoåvS.eyYb0.3&azApoS@B^Yc K|,caZQ\iԩ&'*; hjKP ߛ$(k֎ݴdZn!d$$^3FӤ;)ޔ,GʜM22o $Yh8e=A2v-&%Fa5z #8HGAwlHR/?ueM˄,$Q`{v2~yߴ-1.vGTP\zpysGb]|WtX@ >X lQC6u߯V{60`AՒ҆3|*PDŔTF=ׅxjQ=r/>[͂ϩB0x%}S0\6~ʇJU >]9Jȕ+T 7]dJ$~T;ёn~8Q&rg*ZCЏU:ӬV>1VCJO3Ѝlb=DyԪ̲ |syE5aוpes(1fޡpcIqwC>ډRYv5T'{@oM؁j<6&m!WI-u s>F? 袚MoS* )Km@ yQ6KH#E)9JC2x0$To9kp#B5ABz@fFMQ;3}A#Ng۩d)[\W3;=) 805A9զR҂r+y=khp ^87_kAsbOkp#* ע9dg5raw7N/U)0=g.:_\Ұnڡ7*؁=P} MX:VOiS-0,n/Q:OH^&$ݑ;N$Ou:&y*=zu (#MWs M7 +V:xڸβ06RCVzr©9"oYL tt17czM{StI/~+-]z$ ]O'!mܪR]D)z-C8;ǝe8UXb$׏8o./5@ިo`R[O!CՃY&a̦`rtRӓp07LX} ń;:AӇUDd`IBz(p)6UC"3bZX{}yy|%t$r|&dSzw My4SlVģ֮Z6͊HM7wk[a|ex[B#S_)3 o2N-̒>w:DLLƹ 7&TbI"n^D>ے'a&̟[DE/5t]w&L:}Qk܀CoB9vF_N9#_'Zf?g ;֓z<Z O3qC3,\!dL<ۏV_(,"SݜG>J@u˲(nىzS&bD]Ln)p1 I2Wu}hE6>4q tAe Q 1kNumsIM^@{kn[Yuґ\yo}_Ju<b4I,1u!ݯȈ mJȐa|ϭ kGXJY'ѰuwyJ]D`ZGIe$l.AR'ݪfƃ%8ڪ"XvAaZ_: Bk6u0j%ڑ0I&٪U_k%PKLҊE%a;"S&kI6:[Js%(=RP>=aa8ǷJhfY.R`$(=`]^^GRvuV:o@f$6L9.դ%@H*<#uZSUʤ0z?  CzHR#YC:bPgyǬӒ Τ/S`7U"{yӥmJnfMNMznk7*Hv}瓏RoH#LO Ñ1m Tc$ g_9 o FZmc&Ap ߪ{sAvFrI7j=V.N`g|A5"[Oz%̵dɖsv8j@C di:CQVQAUJ,7tpOK~4fn0ĜPl}F_):_:KUCdxBoHw@e{&cS?iV=.$`<Nڑ"EKnMrzFn~up1&(I~CqϻHPy! ˸W0rE*{أm!mRHzmeSuPꂂ,C&9ZӡW%f ?fbv]FL=)2R=p1^׻֒QHD$l<,K4#){m<ϥ#Nl&^Nn.5,(ƯTA礪lF COA@D%|:!vܶh: {*0Y:!+a ,ݥ/cW5;&xB28#!>ge\g9].9{GWixҧSY DLM'AtK_8gR8bns`[˿UDŽ#gf4u|8Y2 /#|2sGܖ۵8Ew< A\[y6͚Œ@N}8h>,J]7#JY )cBIV GNnhӑvIC]5va=byU eڣ&3^!߲گ97iJ`}W:u2sb1Ym=dR[Ɉ?%TWG{0T+7ɱXVޛy7MٓTt )`&p5㤩r-0O_Ak,_-Uŵ@!,p=z;M1KbrԔܳ)Ip5.ߦ5[PAICVs#P%Ϟ7؍'9 ;CjF#@Cί%4e?bS=5ɥΞ3@\I|=YmA׶ # ׭X^FP!bm X,C R!yQ!dXR8w t1M Q6N)8H8w|.oXZ}Tx:eܫ":r [6QQ̓)yʽd!l$,@ b 3PYS);Syt`®ZX1lNv` $y endstream endobj 57 0 obj << /Type /FontDescriptor /FontName /PCAJOG+CMBX12 /Flags 4 /FontBBox [-53 -251 1139 750] /Ascent 694 /CapHeight 686 /Descent -194 /ItalicAngle 0 /StemV 109 /XHeight 444 /CharSet (/A/C/E/F/H/K/L/M/O/P/R/S/T/a/b/c/d/e/eight/f/fi/five/four/g/h/hyphen/i/k/l/m/n/o/one/p/r/s/seven/six/t/three/two/u/v/w/x/y) /FontFile 56 0 R >> endobj 58 0 obj << /Length1 1572 /Length2 7983 /Length3 0 /Length 9029 /Filter /FlateDecode >> stream xڍTo7tH@@BFwww(؀n[@ZK@A:iwy=;g~\I[[a UDQ`(@NCC @|< /!+> [NjuEpsBPh<6@n0,(  ߆WQ<f "P$!fkBn= uYA hq!`P`CE@j+CtH;d& Wi<};OqGDtv:@ XO' @0++3l`P:[68"h;Dqt@QFAWW}H+W3 Ƀ9; pk9B><j:p nm k7gU-"Wf E@B| ie@[ A@?>H;ru! YP[h1O+  0k_?F TRV3O7/WBO6# w]_`ko8B&4/MA +y p#(WгiC`^Y B/"55PkjUPmDÐ0O6 ee':# F a/?:Y9/$zf H"o ECn+ċM 4k B5l-(hA 4_t]Ф@XDA!\]MPO4J,Ծ6Z΃{cL0Ҙ{9>_a|5QUZlX}ẻzc97-e$ zifFEK\1bȻmX|~I`*UR k.V1j8yeZiTf&xD*> U,( !zy~*Å|ҟ%{>Jw.s^jۭ1'w Y$Ă0P8/PɦlF[D0b5 J&] {3`=K_T#ԼzW~<8D#Q|}߯]M8fTu.l]?W aSFτ%DB[)HaA"soY9xeJ݂ofC0}UFMo窙ȯ»I ŋX(1ngth OksZ_rxkRͼWA|AW{޿038e ':m0%gIi;ɀF5NpR tpSSP6>j$kIqߝgAL32]f%7cnq{D>țS>[:ړl Rg挷{e G=\o|ճ9AN ĮszڜΑpd{`MMH14rȒ {Cޓ籖߽GZ!D#a沸kwq(Ʈ\swjyo:<%mf뮞1+wgEשw䋎 εY /Ŭ fD]S=R{ɹ0-ql7~G$eRpr2F&"A"rצQ,͎KN,f"k}!y # ??j}>ݥE8cn7뷼 (=Ȯ.aW"k+W ˒RAw !t=2'WE #fA[ Q 4^ߚIB"Ps!B.+.dpal=Iz^!]/ ^HNʫ9!7@c~[oQKFSF=/. 9&څMƟHw6H;kd[dOψƙ+Ԭv6 O%(䤿~ʫ0p]\ 1zHq`m+ާ|4M}V*]5/Paց!e{fV09ɭ!׌6w*j5_L<6j=lv)+)_,i dc S VS͏KG@7Kƻ_M=) \WfbβbbovѵD 6r Z|p_1#tn^3v"BxKl$ZĀ1TretM{ aϰ?h\1VQLh-}\+-uZHs&VU ( AP 2}~g Q{jI)Z&.׃ iYk+}e!čWV``'2L{!;8k2Xߤn ZԬdKMVln` Rh8c#鲒@EXW dLqHiRh_yYP.ԫ~_5p;X\Ctg 65i36*lH`jPRMr$Or)lb4~aΞj/2y|yA>PrLrBB#_FZg#:є'R 5*74??IR | 8㜱dJ~Wx;x8I1zyx4vgN=IQ'C_^Fjށ'ki}Qx;a޳|s]Ӫj;n>Yrϻqkel5FmgTWz|ZA('78-ZYfnFcbQ3szq2e%W CX [ F zIn կYI-fsW=5xW;7=[+8&I;u ³7X忚HCJߥnt!]`)-#RFo6Rfr&n 3Eaiofk{ 5r w_m-9Emj+b eot=m¢ %pU?{B/a'ٳllM1 {䔊I4?V[w,_L ZXw؋0c<{x{cPy%HgQvs5i.A|xwC;˾"k`ǣ+]UM43(6i}eOhڃR;0H(h&Aֈ3_Wu~fUx zQ^B= u~i3 RBVϢP|rdz:0 2nsWVC2$ݗ]d¥4KO[p|=̧1UkT H@Chu端6_LenØ'r.'lῌd Lc3o ~ZpO\mu,q*=ܚ7-F8S'!cC2yff(ȩUJq\KBlooKhdcڕ"EZ~HqioURbۖ(RIgjMZ$)a*O3EywV=0 VKB[~]Xj7C _o{sT CEN'qHPĦBtUk2!׺"\verbݔXŗס~NF;G 2cH _|N^d4yJ6 fT9paf sU.Sgk'r8oo;co(0sFd&6xJftbʼaj;k(o0.N(/@Z`xxJ/k2x2"k,nXkEJQc4D'SzXsZA)_ØR & >=Ab3>߭P(c{oO,,?T9* I{-(FHEKtd?d%DXhX8ή\ΘBb#F<J7 1%izcQ':ڰ̅8amrm/i$Tϗ"ƫs13`ܞ%S+{+}+*v !%Eff.?oY*E`g?#N#h˫@7a+F0ECPgxoT~]'w/z5QGV5Db(%W %%8?3_.~%^|oSʾp<&?ˆMv_ev$pϾ'/.Vg_7t<IŐ߸|-SoASo0jwg+%OgdVc$]-R]*y;34tԶAu R%ԋ#qǤT(,n%o~leeqD<zN;u`}51x]i xs!CTd <0؏tF Q(:wt(p&sx>WQ6=lVf0jlNhqj+J^ A9t=w< yJ+?͝ aZ5wP7`S y-(~ {i`>еW1cաLn`Ac9)(JזW3m\<ޔRxt Ha]ux{(wJq{lMK$y@J^#p$Ь0WAJK;J)p02YU4Wb02 Mr%,ip0qP$wDŽq-d!\˥z(&A4-L.^pAz 8=ٓzp-:Բ "bzx (m8nCeO)(T\ ڢ~9/I俸Ҫ&D6eFi^z='{"iekA-{ٹ5a0Э y8g/Ng;񜌊%Z@nS}=8(T,V*za/dG33ߐ4ۦo_'a]K8-'Q(5PGKS;R+%DNݼg4kcUk#g / D?>RUx[eLV}a9N/gƼs:&!d+)^.cgh+0+L&\E qO"!@Ap5BRc؜L?2q{õJاnt_j+urz}lo! [:+p %]#5ѝlABo"O t:3kdlzTܝGnwkI-ዊ{b596V@z`'/^3r2T|r];_"!2Tκ\! z* @Iez ~ڜ1F T?DܲU۴4Q7ҲϣEqҸA^)hq]l}t&:kuVsZc %B.XunX=M$=#f[Vؠn-E"}@OSTuc[e|%)]K9DlS`d Zߠ?G:V"7#,@%շJD+IϺsAgGv;}wu%8Ǯ&Jx"ڷ[}Uxܺ-t .9,ޤ 6ĻOI{^L\dPⴐQJxyvŮs2&C`Lf]^ؒMo:W AlW#KÂ;LF{+cW TZ/\wD݌yeF$QNulZ8/V]m!*ay4$/ZCʁGYL54lv%EcMy%1 :5dow&nv`AX3S r^6}Kjp!&_n=|@z qp`.=^D|QƜm2WЏݼmc$&up;2dY[q?[DOʘKOEƊ =_[zZyO֋#D?뽃އyjh|'G bkpc~ÝΕBɃ]#xGA7Lq%.8Ɛ~K>J=ǹO{SAymDUEofIz?\{j*tP{wJrWU6:/کayқgV>(>57Y&L ,ܺb"m "lI2l\gaGLOywSxtlǽ bX^ oNLv` ͰySO6Kܕp3. uDcNU]|vUf*x/`/'$4ʮ)}Ҧ糑WSӠMV l= J>v]z <Χz$JKBՌp֊VL[sn˿bfQu^UqGD;ObqR'C"?I&f]ސ ީwe B%x&Cj3?TyMCZj@:@ @-Kh_^Z;caM;)jrEPL$)H[U GX=HZ+=mJ~{S sQ{8ْgƔ1ˣJIjw+lVlrˉɩH^g0lp76&.w%sRprGK1$^cWrE ̼kW*60UحGʡٽ[eI,`jeW~֧n2w1u8Wo n|F:Y$}F*x7uCtry1~;kgҐYBG$&< p\7OcD~1.M >PUv ,SaY'0+Ĩ>=;EI ,x %WnVcb#/!n*}E`=-CŽd4T/6Q=".0wXyEDO /̿ˌe*{h]ƉIG?mr N=-U߄o}{ƢeyK$*dksZ}F^:a~HUQt]4mT&lA|,6"K.x;nr$M[7a>H|fqy==뢏2t }qdga5dnL WYޟ p\hi!Z-}J!}LX<ݜb%UK ͤE[(C{C3wJe}zvz8@_&z>l@$g*̗.g؊Mgso]gF 9wb.؝S?|Sed2͆z}s*YC_ٰ(37Ѽϓt{Pc˞ɯuߤ^8bh]lք/DzgH@m^5Y߳Jt/zmQk.[vSA 8pi; U;k#zvIϩ5Twq)")DC_$ז"H|nE|$J6-:PqyKϦ qR8Χۉ"QY qcsQ#qQcu6S5x"l ȠW\=֛ߎf䊮r+vCCnTw ![_2fHxwpMes3g6,ITO%TV 9R2=?칱uxǮroXW>*pƷLAaeաx{D܉]obT̯Y>nƚO.&VGoUq(6ۉ{!^ s9Viߓb,r݊g8:j3.}di~ u͙yg XX8>.]'x|Y%OSz5'S҆`-嗝S>m4۰Xx/l2i;p3v=+i B? /ηUV,9J;~#w#yI}Pa{raxo`X3ÊlIP#kwl'TJq] bD<3P 9+ endstream endobj 59 0 obj << /Type /FontDescriptor /FontName /GKPKCX+CMMI10 /Flags 4 /FontBBox [-32 -250 1048 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 72 /XHeight 431 /CharSet (/C/G/P/T/comma/m/n/p/period/q/slash) /FontFile 58 0 R >> endobj 60 0 obj << /Length1 1436 /Length2 6472 /Length3 0 /Length 7450 /Filter /FlateDecode >> stream xڍtTk/)")!#0t03 44tw#!% 4( ߨ;kݻf<ٿiq aH ih@ >nԇ` 07w8!`Z'A4 DA /$#M 4H̝(tq٣e>Xlp3  =] q!p_)XQ(Q///n;7NGta07O `&7owCڢ n0Z .SQh8ptEJG@Hg`-Eun7Ar8#O bv9(wAsÝ~A} 93 r'՟< E_ϟ:"^[8" ZEy0Wj+ KFtآA0;@y CQkAOvfGF 0~s2Gp|yd9 MV x@0X B?[ 蟄*[$ }y %4h.P $?,/wCNNͬ wMez-4@*klmUAA!CS +½a6pF8(l譃:_w D/^"m~m# !@- 赵y;DCh[1 <ڿT%0HU7W-~`0o`~  q i;ZK=5˷G)LZ~I\P+U+Z8tjʺ4{ZG_E͎:~s*a#(Yh[6]l,=s^dŊBmo3)hE wVtQ-kGT,+qϾ>7LLgP8#Hh`+:H3xm) E 6@+ϏWeKt]九~ZTVt-8~-h'0jy=f#Oveǐz:AbL+wkjTonUKzC D[[F0X;GEo>*"Xi,!\c5~dҴIt]ɳ6RTO'䆡#\2s·,cZxDDqt8p٘.ZP0裹굜|b>kᄬ'V/ܥǛ(7~+i,|>5W-Rd,T1 0i9 4/Jͭ;{(6h'9>9N|Yնp;I !dR$b< 3v;{HL4Q#ϑ%Zb6ԜI͘˒)Gh:9Em2AZ g7":X6Br%rQP(+ WDu-ǍmE&ousw)|Yʽp0,0 81v3]Po_URgZp=V7?gE>[mx\g֨T izE&Fߏa[MKrFI-__ tǦg^F;7CrӴjvYjv<3uqQ{[e[t$wX?T5逖[ܕ4a%R0rYBMLy}[if 51F_Zc;G3DqC$T5Tvԟ{T^Tm_P\/USi'pҫI'^Յ{SarF4lS D yFHaO|A8Uu&iޚ͢|G U0kҍ($LjQʜNM% LѾvMX, HC&)hmObUK+״rYEf?+xX34~ߑX/FfOᝁBEj\֤snpLF=<$jO2u!1gJ{0Е)p u Uatsƥ3H|nK [c)WDQik%kCg2v c@1.)Cōe)F]Mm;Q̙Y=cm 1~buC[Ig5glP I$4RS%JOַSnOk-bHDNa;lן*wN(sv_-]Pbr$D/X"(B1u/{C!& A8j};ja˦ꒅ6`&^gzy 'IcȜvnV{JWT:>rqmF_ {W#kTiHGv0s˜ _;)ko.Q&{:1d܉>M&T^ 3FLGV"x|ؚlIbZY%: YRmuwӵcu}\6H{wJAԣ"̈vÝ * g) =Z[/*:ЬwF{EY(= P>}/M7KxU gh+A2#S ꬊEGnxyzgdW^5i ۺ_͊ﱶ|$K yW/(tN;d"eEeý N̞W̟ͪ"enSAg< Zs7HnT k9۟g>r8qS_Zڿ]h*:<[PfW 0X.LYf7Z0h3 4ku9OW\eו$3f-s}tFזq\oMi['fNjq1X(!FޚI2p8y)~D>a,LK%W7^wN2 YW}ׇ0Ih.jL] #mGkSw>|̯u[EkP8X)d"rui"_7 A듋447?h^X#sqړEN܍e(,rW/?+4 95f``lRZj,)<Ѝ8hS6hRS:B\O3D 1,l%H'~^@*QlHے|ѶGbnhc{z@zvTr$ fM!3 5(PFɽ]Y_1(P(bƾxtpRaͥh'cʑ9Aڒ#FepR/f3,,dTrї:~Ɛ5QX#&FvLw]~R8օ6* ^1QO&pUڐ`dgo6]V9tgnN_Դ"qw.b,c] =*ח!+h:0+#v񳈷z+g}} ivrSq._=w"cH}n6pobzx5J۽شtt!=-~ft a[}";Z:!cGPT3.Cv@BCP \=] vg[%ȶS,Dw5h10 +iIמe`6دv>>uoa*Vw'uYΩ?.^+:~'qVS86˝&,[:ɟr-&*( cnw|N^Pq+jr|YBH} =c'W3JnY8uCm#_chk12}MGH`9Z5MɇwӼ H)Eel6<O?&yHCԟ":³H4O.Z9 P䴭a1XZ<-3?JFkt@oW"~͓!V#߻PmڥՄ8B.;zXMHnD>΢n^Sي|?K1uMUv =mp{~bzǷ%GXUbEuiٱf'g ޜ+L(d{<]"bX(78p9!0Ι aJn,hs)X؄X3P^7;[Z"bm-ɇ#F >~$5Н.g9(3ǻb6<-<bRb'F1vZ8PXxSOOgƟlkm7b{Yzh&zϟlFUNC|[_Tv_A3YJXޠC~ uh0-}ZB tέX44JҜW!LP;k%'xTBR])p/d5njf'AR'E*f.r9B,pE D[ GIAgCj/f< 0ձ,Re~Jܽ.,K.o MW8E*rk#~{ܐX }#sG&LCIї7+02nz35h4 endstream endobj 61 0 obj << /Type /FontDescriptor /FontName /AHLFGP+CMMI7 /Flags 4 /FontBBox [-1 -250 1171 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 81 /XHeight 431 /CharSet (/P/j/p) /FontFile 60 0 R >> endobj 62 0 obj << /Length1 2430 /Length2 20870 /Length3 0 /Length 22271 /Filter /FlateDecode >> stream xڌT%| gcd۶m&ۜ0MlOj&Mmm3zZu}'rb%Uza3{ =3@T^ GNfb\leo󗁨]&fn'ooq09x9y,LL1wY2v@g8rQ{O'+ K420sss:Y],MmV@ Ag`l`d!@MprNn@3 ƶuGPr\ xX=\̀NUi9_r23w +MMm<,V6@ 췡ɻ?$ =gS'+gg+-2β-w}bVN@w=5ُvvVvf濛0su`TrtJ]Gft311qr%j̿z;;ߛZy;.N@_fV.ܟb<L `Oefog2jˉDD=lLzv&%|aKGdl(mgnWտOwzLL￘??.wIG6*q_SMNYhfj.!lga_%"w3k1/bיۼ?6[?h| 7>gcg?lpt}?NﴚJ?En-_ ,=EKOK_2;w>Iwmj坝"nOwؿ;Q:]H-c_{O_͌!{6GW-bow:m03{-.N?}?_1\ wk޽==z)=_1uuzo-ڛ~v_#N3?M{ ::3hV8y8Ս"ыQK=tD'gxɝV ̾#ojB>/>[@ʐ8r!)ݻHz|-[ Qޭ搅.V ,Ek5MBOCzvL<-q4k:KÌJs6 $~ ֜wIr߼G _!WDe ,V*vMݵn# ?s(жkK H1[ #\jY? jt[/rO}{BԶ< h~w\ꣿ M~?4Y,+oL#nēA Y2 ֡ F@ it!˼YĤ :ʞs[pcʜ;~[0›KVqP Ϲʼu_e땘 bDr dlҒ;sUzA qǑ "!=ܷf""1jr?P ᬘ&) Vt5 kBz&Fl5QNW&-FNY +{泠?/V؍S )] !J y8a`+}:HM^1[O3=* &xn+ j**k]pt0Gvd"ɤ+Nf'Ok5!-'Mz+Mbobϱ5|$LSj s.[1=OvPjG퉻md9f zcB,D\rfSU[xG~Q"B׏'L ڹ^d'w=?'17V7X˺U/ҖȮ"PX< H0)f0wA ĒOrv쪗G5ْ^%܇ T#/mϖ ۊ/rn3V E$LJ=BM3&L _ iҏ{rolɕYry5UEw0ODlx;HkAI@%D|2o٣Emyf"/c/o6;ߎ-PSk~gM#|˘"qAIHe,/?7!٫ n[kZȠnEU>K|b_]DbQV^-K*άEac6ef?@9FasH! IYLW|' te^,\~ y|Da^Y؏HyINn2i9WDy ;O0X ņK>Y؝#aa!D)<{흹zʅ1ʼn`<@Y+F:”+I6n(WTWVP8OKfaʲ,q]|y$ZSKi_ln$oAU{S`]jty?rKdA0M)2+Õ+9`$9}kZ TMf _kW ϛE,}R/?bN,'dvڢ̏=.efBw%\ ~EրLwJ xR(](4{z:MFWՋ ܹA2QT(D r}C9qL^gs%؟,dN{X'ڙ; hiQG!xy?H<!Ӏ@s% ~ZJH߱"[bWQn T"#ϲ(Z$=.< e+5̋}aQpA*7ﲜ0*iǺN7h'ڎ@߶y|Ȼy0k1 Puרid(ʺPe1duj9cvY8ڔպ/(1%bP OU6(xJ4-|0Y;<1ׇY2.Pm~Gu<[[ǖxV9Ng &n>D;sXT(A_p ~!Ymد 9>6h>-~\ =)c^%nDu"^UCa_CY~@^̅uks¥,a[/CsHj y]|K|=H%Jr#fzoH BXY{<-_3 2W` 9|]$EF*r;p{!G2] uϜ2vbʮp] )*r~hAu]ꁡL"[5(CBƭρNhYEmՀ6x`uY)ף"b@"blaΜvO|q5Y4ZLk%ruAzB.Q&~@V ZtAe Â6мFSc.[. rv)!K ~٘}F5'%"aef8}yY ѼЪ8-7<.2B߂ũ$xǾc,);Ŕ'}Tl9g7b#'ʜ`Msq* ܎bUWb#³ˤ/}Jn !TauP`|FPw/ͯGHTLWF.BWLh'<S2G|ߴP)_daDZ/@@z5iDW9TβL~'OӘ -Y:3K Q: "6I w/4(&ea #c9nK`qb:wcjբM/EJ5)bz%0|r[+èI0oKDHU" -f…%Q[{e\)Lٶs1MmJqd2.:yܗu-%hD4r\ymCSvOC|9r~bgRo01Dauc2nHuˤpd eKi|T_ZOk:/+`Ӎ+ӄM#Bl5A.c@I&촽X}lSJ?L+u {'AW9s07d^bh]qѴ/:D}xٞOF繨Ec~gwvB!zZ]Bzʏ@=lN۱ sdGTm#Su<)мuB@/7I1~&k$0/!2J;]9\&m@3MFyRۏO$ m^W1q9i|hZ+e`4m`olZ,]ql%Rysr@/'W~w }WiRvq`K*9IBUY\^{w>rKk]'fNo<Ѣ-i|`8 &YRDX&߇<^B$ZޗA- CVt J.mtO0d_LCRnvB`݀Աb2AX5=55Ѷ|[\pDCLf'w-dbQ>}xs/ IJ$mӤcj9MHwz{/w py`;|Ubz=AR8ޔ{_&Pf)z6^Y,7C3 *f8ivx״@ Po}lzgAw/wBE %Ui^rԯ A5y3=7xhUZ VuYv6 &%oj`!v/t: w*_mSzp.'FX~>Z a$g?pH}[x0|)⦑fŜn#ǀ9cU_tݖ4Y(QZ+ BzV/|t:@pųnfMZRn _lH"' .ER<[йr WE( 0/m+f==Wgljf4, x;j5d_kFUd+Έ[,(e}xj\\&ܗ O˫|Z<AK뵰' "ܡ@˲Ig{2Ylj@-Qѐܡ*1"B * C)RyͤE}^z6#/l48s+;JUe==ˏX&FX'8; O5$QD>o~%Cѿ`!Sn4 :9']6+rpDbhuHd8m5ˡůduA Ц\[qh_Q`ַQ+D7/l[' _,K<2J۬ىی @AJYi-b7T ^ږusrO(~/`: _89mL@oerkir.6H#=A~a +_ r}bVN(mdȖÅ;ƺ-4>R`7N8inSQǻ%upl`NiAkܢ=Mal:yHl61⃀l!ihWez! =ǺVRiuM澷dljnaN]oCy}ynU5&Ie 4Ba!cjz #B{r/ە gB;uB$%_yZV\ )*"+VԹzM*6@g#=S#}-A#Lj【Ĥ1irF*w6Ut!p#6og; ab&}Zu9Qn@OJ83j=M/J1ֶq>\ޘb< 2[#vp~Nj̔4 4!E!ǁp@3D>OAaQ;AU ײ7 -{I>jQ )AR3M*B-]3JۑDh,{@ 3hZ'1(佭Tw )X٘DbG"n'CdӶݯRЬ(E+oF]+ZYu_,) G<ڥ騵oGAkm~?JD?b 8ҰabϽ~P žl`{cY8T eLeaFgvu/"Qj")[RҀ"_iWks-yNAqL*/ayD$!oҝ*<ԵԶR9t܉qY晶\57hȉ.1HbWewۑ7bNRJ۰dKF*X;;e`feqS-Cc {o(g>ulScWgO)v"^TۭJbFlvY/6HY )5 _6N2z豏 dPz|t] $bi|,9 , BttRztMZY{/q1ZAhӨ;c7݊x'JDպ[1V)K+`Jkx:A ~:Uʂ5mLN*s-3tڪFv*ᆒ֠r3|<|zj_o#@XmXN)]b.rB,$wC@)aʠ0zK7Èp5&H^#v[*@N@Bg=}WE"q2}Ǭp}&-ZҊ%etÜXR=Y:uiACdYCh2nLZ-[:WNJVV6k2Y!xŌ}HߜPDd|+AUr9d+Ƶ?&bm{3k~F TZ\IcM>-r]D$G0Gƛfd5$M5gJXL[~K"V fDOuY |pe_B JmqCa@y/3+)qkKT۔S v_`r 7dL?x7k`] z5Ң-OdCvyHbeWWTϚ,4O౶e=Ќ@@9|d*yԜJ::>w{ [bX yo4,.bs6 eܯ_׫' =!bOX'`z|2=u3(@<ܕ!x5C]>(Y5^&&JIQ L)[2vg5NE^c-rO렼u?ԪxkqiܭJO' :{y'gZێVd '쯦` BCK8v}>q,QlJC@܌ìI0j6gmm6" YsPdJ߆.]u5%ЬגYGA*, ZFdE9F3UgsཎeaYczD;ӫp 9΋"izqєB}3ǝ\ʮ i,ؽKM>M%ڴ}aGL4AL_X5^E50ޘ:~-z$P6IY~U!YV8FR>QU_2.t>m42[TYzIVS$:6a0 ^ag vM1Ln7Èf4@'xk?7]yShXT4nNEj+q |fhtX4 Suo~Ac 5o Vzu2}&ߐt{PK D!he8_]ƻk(:*T:Ix(E1D.͙T/qPMCGc/ ѧ"Ef/up4`R >(v~Aw>K2r@6tGh6T)>MDXBkiê8B+)4g|+ gqɳqJ3 潞]QNGz rI%=lG JD:)#lC RGeѯjh&S0< fjk2.6[cI0<$ }.ӌ|}|7PkKx ;8߱gD{_CP3$T٤z6%pg?z:9Q ,v2=7Ç)P  c֩ݠ~4sޥя`K߷-^h4 ɁAEbV.mg +$w+pe)&gd=%!'xkdn n]}kg yfI`~٭|xhژT:K+,h;ݰzFbv* g~i !Izw.map׃E&RDU$.ՐP/Q| [) v6[UU^RPHJ\< ?N!V9^;;yaY5B'652p{5b>-^ G4|5H3& k]"r+Ng8 fCl*VR2X0Spx; 08 t΂]1.s{[5I1?\~E5S68+ | g`p*׊Ns?TZA?wFb$&>pk8[tKoU?,=:n(l3jW&?W sUzAk*x9U M u AegڥĸȌSF rKK0$5?R:e%(57:y.Ȫ*sx-w}y]gA(MuI.}D5߈ބNhpTy~vc_s!Sʜ>x+=AoʎUU)?YivBi~E~^6ٔxob=LtN'&ݑj0hC2p1j "q+dM}Oѵ0qD8.?mI>.畻.X1“a q#2 l68x`C6_+^P@mJ"5$+((&U f|)RrV^Wg8 8*JC"կ-wd4%m}u(0>v2!֬TzMхd g%F$' !lg Qdhٓ 1b:qiH>F'*(|Ii 2Iqe Ɔ{P%7r%e. M^gZ֫@Չ:#5xq4ez_Np;њD솚 6F|~Pe$?1 k.b6.b4M޺a -SVX/lsDIAbk waeLlFh.@8W3Vk胗\SOlCfwnL&|$*^ݗSAmV' sĂ_jopTh#;IPZ-ZO}"+Nų6ZCjT}]QrOa avOہIlu83.6}ul9Gw"|roc.=El%TABAf&C$[[(M$=7[Z1<8{_>aH1Ll!=sd$t7F4;F|~Ǻߑ>Og=''E r&YЎO&m&7LA/ޞȨޣU O4ۓHxy#Ӗ$nTbXF.LEv>,G nӰqi<扗CiX8/O.5A>[X[SK\4㓥J JUl~Z-s3B /w/>)M nN7h!>\= \PjrضTm"d /ƚ3 k̐ ^G E`}Gvc4$&R8νWe )` 4\௘U1}pȪm#[l4g*J_堺 g 7{s Q%O֕[X+ER%jZC4F/S:Xި;Or~`>f un8dmI>ke=8~a:UNYG̊{JyZəixitKZ䶈cxُj:DZ`߭qf`o$ʬ9 >h">WLtEj_ [4قvCR,Xi-^O}L@Ee[XD-pm*wm:x gRư[4݃׳Cq]'/{T<B;!(yRt-ĐX|Cza WvW<Ԫ)I6R%pSgi3`a$6ƨLb,02N΁ FTI'sb7$نS;Ɉ$Vִc;PN&s NCu"SRvԡ̒e`aFh䧣9$v,BRPy k>MM .xĆ-R5Pe{!>-eS\^Ţ&0Z%^ʟèb@_ 4$]"jRNIBص>"M>jupsD)9E&4(ڎ滝!uPzAxTn䤪 J= x<,Љ@x ξ>cCouu a [cVDq ^~RT,:ۂl9jFKT!5>q+K ;ŏohNٰ! <9ҩK>s>Xmh ^9;A;vďkE0$ф# Y"/qA.99ϴ_|cUAvYt)=v•"fJI&Zh&Ґ[L|l!$}k>Q?Xћh3!O1nX[˷,n5'q1HVoxo1Mj7qs+N֪@,i_mq9#?KcvIӻ\Sf*q顤\Yb@ԠnW x&JhFV#>uPc%˺tmlڇHA9QlFکjA6Z&"p&+5ZQt8ʺx2mx= ) ֐Ρ6?y,#]ݼƵ/YQnkɍrtם YZy\aۤ;Ƕu!;57~ vïÛqG !$HQZá8"RxHuϞ!KKl(=uN~&SH~KI ~k-Zy̱. +6Yey 'P#M) ͓ [B33o[ BP0vW*$4cQ> \3m C2du"T|QTq!0<oJ]U4MnUNh%ς#FS06M-fVg.4+TsؔJqJ]C)8BXO)~rJwN{3:c n&{:_r.C6U3: fi2!~<'8l.x"pg|hKq=I7-MsQt`sW:uqX1B;@ յ⹝.D4:w~,92$X#8gf6%(zŇ&!';?D;,&"WpǧQ=Q_/0Gkw-~A`Al^^[gT^\B;o(=SSL`7}& Gb|h&\zSRg/p0ABd~s|e170"B&ڃaOE\rB9Ȗa’s9(Jfȝ.a$`*Ǜ݇ dU6j}S~<&1pwt US_}FH>BٙwdCJ.nӍ8{t@ڴ'fCp!P)A0mC'Cc\] Snl2yc7ȢP@v@܊2fGxf# |}O 2])M?o;RPм4MQ\pJXۋP6cx pFAi5].!%ns3ݒj}2?Ks2Ͽa{JWͷ3+ߔ5̌BED܆{N(R8As?q9YH=M9hZDl1:ǺEnF <6ڶS \7eV˫VHIaU[KkHKI6KI=]Y WH;܏xUc,TrNmF;?7+vo46NpLNzH.uGU88Sj.d<^nqlRzW_3+cLKJ?|DpN߲=xw'J̨6rwǛc4Z2M}.ᙏgьE;ˌa* | 9dz';=)k {VF'6mg8 .ZA3b.dAEy*cvltS#q!H摰I^8k+ p#}I0\v OλJvmU6CO(xYJT18? +hH0k= @r{STa@[_7u *$JL;h=䎲EZ%],]xŰ0-3qc$Xשׁ]Rw5RM\#rwr6K<'Ť L{J %A.([Q"/w-f!p$N`͖0hsyͰXC9'^\t_T 4Re@pEMiK׻=`rwGjѓkK\)'0Dé?hA6;gK59*K&&%} Wte f;Tu+J;KVW_JGE/ m_j4}ϓ1cH8-rBh;1l[nY@2D|kٯ;#zaSOsCiGP3tJüsF"ye +,{}Py`WC.8pa|4qK^)5u/ծ^lf_R.z5Xp<%+iyE>#`^)j[TM zfzD$J#>uZ`YwaI9((wX^w '%-s胖PxCK}|-V9j)Z.\.L=^-$!ŭm q{e p{U FMXS_FDmMUs fp~Ш袧8(zs/bs|N<77G$|пB7wiIe41=R3aŶT;V2ίRUA|f%254ϫd yYr#Z e\yS&1Kc* l3_ܱwhwm9 -J+q9/0*rN#&Tb'fbFEyvi"}Aܡ)#KarOijB=df-"7yW4!,k΍ P3 `@1~GYa,_.rҬdm\5{ZlzZ$r/P<~p̿5Z5'`kW- VUx*E.~9z_o jl6άAh)P2)?@F² (aNct|W^~ӽ$=5f+pݤPzYǁw勇4>]ThK–(PH2aù Ѿh jq 5&r>7/h,6g'7'8WC6s  XxJ:% 4~(sbK!>>ւTc! <PXiƪS{g,M Gd}lURT1cच|eXU-vo^}ޚXzèoIK`LtWj'^/h*x(۫cSI|˂c|9׳ِ ,,2V{"Fi_Gɟ927ֺuD+3e+dJwAYI݂!`ٍ0-<  %\~Rff8&C˫7z@ָ?Vc\Nzt4D3 YMb#%yUrExA꫘%o(zvԶ vny.Ύjj^< emSyí< #F'xFߕ (` W)_ 3C6>sv<6D"a*C2'ytO@ٔI?7Ե0"HDge90:$'4}> 9r4M|ZszDai9[#vjR{ NUG6~..޿و19}d^Z:V,)wĆ#6B(AĨ\E+eT8%AT8+*s9 0`y ^T>\YLjpg \0`j&pͳ[B2W 9UqS)JlOM\Q(p%3dy{_Y:M{ii{QU3)A;vV/BS'(3a؍t)+*imrMΕz\ySmKyEy3E=!5?k4{x8_xgDV̕kG>;̸Kn"@a\4t+9"1.tЬ:zۓb^1s$~s_GՀdž$Q*x]3ȿ hL,P#'NPޯiyXԸݬ6#Och87L2!2&hQ1T ɞsHl/u^Q .`/ D7mZo9-: t$F9z2^ )p$VA[-x#:R6 >Nň6$b]VdHދHs#V:/JiuSwGW"WmisaJ~!=^D#lB5 F wɺ}"x70}|D>wbޣmmws6(TQYIk3Еk%낋Ǹz`wky;;'.:!ٹf9M·H #.q$si:=݆M8!'=cqj*P> endobj 64 0 obj << /Length1 1904 /Length2 11818 /Length3 0 /Length 12991 /Filter /FlateDecode >> stream xڍP. 8]Cqww Hpwwww.[(ݝRP.[>g$߳YZo R%U3;ؙ & `ffcdffEP9#Ph@v`9_eίvv` `ef#/@dgځNbv K4yPXxxtA`%5 @tLLnnnƶNv47%@tt P0Ōf rKjgf l@@ӫ xMP(e@7FG OgcSS;[{cl0rc6NvƮ cW?+7H(_ Md"a^,6O4}m_'k s{ A`3?H3A.@M^Ee@g333;Z2^+/{;{+ d 8;}o0:L 0b_A]c0Iu6<_&--Em1sx1X9X<.fG)U2]2`s;_^{OC v P|=ff7o-HO5d$8nnT&@.q6~?m9I܁fJ gS˿F?*9k ,{7ST_SJM;VNxrpX^ dvί.Wz>s;G?NuL .o`^>F\&5?y4"vֿFzk_;dF7NwoWׂ_Z  F|-_>ߐk^տھ~7KZku5ݿԯ F]ګ:{@;aiΔ/ت!^a Şf: גc#2l M]vO;Է$^ۛ`:;z?&Lu",~,.8DOȠ&`W"YmPʽqre'1l%^:skjN}xx:Donǧ(DSeqK6氻'lYl=T ()&yp`DEotH'ږ&°\n\q8+&^m9Ty=ahT,RIaDyE{#O18z#k0x$ڻ-HVGef/e=]vhm0/nL{'l S(;Rs\~@ǐdg淳5+!7}Gɪ;rC:T|F+}h ۚp+%:ZD~3?c( M2NbLA,O/޲g/^0y ܟ]P8ViS~Qi Dt1gC z7ߚ/kD)=MeYff~Ok^{v5(: Fu1ɞ}2n*7]Rhx½!r?;[ (AI-#GzmaypdWM# !|en7)6 "_|]f%0m6'YԷo]8(nTnG!Y+>r .x53 aA`6U" "EWiKc$Y0c(']t?儝Zvq &ֺqMiS%Ra .5U?.qM!'5U*olFִjH-Ե(* 5'"lN@Zբq$h_NM SѶM*/W>\e *Q}o#Zכ;h2,<q:DҦ1w$t&*ZtAI AÁSQ~ b/ShX+:N6mxc2$gYsIİ <0Մ cVQ#Gu5G5^NCȇYqr{Dtms]J?5 >8uo3g6rsTkPQ%f" a$| In;F=S|1d_"]PGl6/h`9,3L?GS P$iE9~oI%~B+v1enWN K}ƈڕXdnB[M/I[9D+},A3'3i+}ŖH[0#fфsG$z5 YD&dw / \0cM0!jȢ%|ґo\rc/RN(4k<@5D-+U 3r-^X; lE/M~u<{2=oK[рR Z "0N&| 1 rwLX˵Ƌp(;XFFw`4R.)%$ZLQq1VF2FȻnc{7P: FE" M&͖bfH CNXw:+?G"s5@辩%7W;֙G}@l Ly+2H𸙨Bu8 zog66gZ\@?arnL:_$h k_4Cv>+1`+Tl XpjOSC4 ,J/;s(ĊNNL,!% Z";ԗ$:j/f<}|;q3R5RK`f]%`Y3SZ)B=E<F&yTZI|2!$%6sT|_D8IWBaIćEFTX=*ñ7:y1D#>#聅Qs-ỵCk|L)0H^ߊ%˩"sxn#@g^4~OӪ!Ȭ-&a(#>G)Dnfe~?I6γrެIbXlRVaw4)KT"Qe+*b>fr.mnC9)YZfoC1aBawukAş@\SСS%\Q_ZO?rXw_guY/^[䏌n 8b<0|]Ɏ'(L28Ĉ|I^?%وbTݤ>Oaxg IeTAE܀ H6TV*kW'"orX %?7pon1^8q|^@TVXUoe'X xf0JORir)Roѐߩ3( ;nzPl1VK'pQX - 5NR  ڕ&kbD'Ba]89}VˆQCOVhtn?^`*+;).3 B"BR4QS΀~|{-bٯ1 r1N‹bkG0C߽Q3@ ~SobmI Tjj({׊m&|@b)kb/Dv^Lm_γ*uNfEAT"gHC+Tsyt1yJqܷ봔>ssP4R$#\GJ"&rV>Nx/l[oW\bEre%̷?nT|l_8bk]i0vp)P)vpm̻Da BI|Z '[v^+51)i.gF+!gfTx=7";7;n \'OzW71 nd:ڶCDMhi8j1vg]>㑳a4='%oe3h[! ^D -S׀P|Bc#qotlGof:ȷU[ 6*8,|.m^`f,3l$PNܒZo̖l0ĵ\H0 sۉMX塀5"h  -wv4 *z VLGJ@֧7&xXpϕZnռ\3<75#U\ ~ gccID%sLnw\eǠZ(_@=i}Zh)ؒigSTOkET6:&,i"0%|PZBe-e7d(9jt`,c,{)HCەϷ͡['c})Ө!o 'a.UjlKGf$.5ǰH-IGnkt5LLWA:3 ثFT56;"qxy}|!ء:ϸOFfd~?lm*%GIdаv9%`qJsoa%Df"d_Sb0K?C2P:g(K𑖿#j'(q-"GV: ]!$9%nuQ ((|: Ŋ.&Ap 1AakF64cNk:'ܙ6I[W-|5ZtJDrDiIwŭ#'9U][-?&攚ш;$#QMq`=K sjO~\WMхVa42'EhZw=X$e׫ LQaJ)͍B%,3D.5p x R=졘#e52[]Cf7^ bꋭ|οvrtk#u6*Ѭ3(c'pv31E`${ozI>Ro#Dx /E! n:Ͳ mDZpc+FI+09 *[omHm Kl~/}OvS; H}nލpQm?"Iz ˣz V-6ëw!ۚuҺ5R$H⛿&@4:@-Sj'o}sK{!GMNҼs?ZD4CEU3V'D\׼p-˴[;#B}'%4;zm8(֏ӾnRndT.֙E޵֏Hْ+ўS?_])ǞѣC] U8l:slwګ ŧt,zƪ$5|&e40QnBz{_z"_N߽;g@@4tz)4rSr7S4O=͌?dDXš*~K[D~.z ]H Դrϟ7*E,b( F>c'<" zj.=oɧH*>KTͲHN &鐫 ,VLĠ`.ى6'D/lMa7U͗Dh3 .[ʾo]WTN /บHNips"c+e{x<biO=A-u2d:*:5?ֱYi6|Y ZyPj #o}TNXb_HtXq,5Ւ-Bk7kTyQg]}*.l>>j|7ԒbT5HE8*Y>N;HP%%WP]_ᗩZ.u{" =?T};lI޾zqpn/Zm~ J$ĝ( GF`ԎC"h nE}d -*7-SD/坮@.{ Ud>u7ާ_o' Nfrx6m@q0,8 UxF'91g/3ڒ:2lϽU`3pyRY4H](oeDi|nRM\}@)<#Αt‚~5`f{ u8ŽM3Att2Wd^r?L[')`7LFQ. MnCdOqpkt1D|H7aVṕ;;/? wBi/7AJ+I[Pj;nk_Ss(D¨S Jr h@M~TɄֶDe庢V3왮ʧ3n-DZSna gw٭ AߦUIk%ZPQ#D%ߜ||C]/\4I(CE&;\5C|,n[qyQPHb1һ ؔ=#ҺR<nPbmo_'Cm(C}9@}NCP*?GLM̈G@gcq.v}t1cT >t°̷﯒Hy 6x?kT}m;+-!Jt?*/O հ>-.K4Qθ T+}WZULCxWMxhH1=$$?iE+}/48T|z kjEa(f?+э]< 'Bth]okݿ9P}r8UC:tndNiRz>u q5qGi"v)\@F'%[}w1!Hjᙀw>k&r_8!JF,{*ð-v'XۑAe^ "s 2}+ΓKꭖsˏ# 8xAlQ ǫRL&[uBQ ~3@|PI*-;_cG>3]r!]YOz1=\!=m|7/QJ> K;FelwݹjtIO77mIJͩ$DuX\H#xpڀ[o==sNg". T'c]8z1ab?l{(Gq蓚u#ui(9I'kt  $T^Xp顝D ucHj;;\Qg3G:׈&d_.iyL^RqD5@(m˜sl|p%)熖8Eg):"CNu*F5:Ydު3M 5N"ԃ*,Klp ,2HFP5џ(w*ZX{Qp:ʝ 6K̏_J#s a>tT2-Gtܽ*XJ&zN&&ónKFddwZLh OpoѪN]'!03kq5_ q;} /VYBr.ZIbԴYA+OsiE\85ܿ]J>J9z%hV 1>!;)-G@WZ\yT\, dѰ>7KyZԼbq?d"&Yp&7yqI+{rcb i<-q0iڦ\ƺ9]_ 3W)O r16He[ TsCM|%ab2)hm,'BiJQ0%>/7{U\+e6w_ܥ^< 'mnd@q~@l 2=F誗֪9$Xç.찤|"ͥ$uMUxaL< 8SĆi #5ͼ<4m3Caގj~8F$;So&38-'@id>Ty%e] cq'd>\s 9> r Wr"ɼ64O o2/Ӷ2gwezV=\ U}y(7M?ql~tµlF#uKphs PҪ? '&OeYptG0ms8-Z/H8ݎw3bY/d5Nj+Q&lDc*=[QgE>PC_ǗOXa/R ol\JH+ wYwCB A^o|6YtuKLiRh|IKW@,vW.l xp]5y$%+Zܸ$;%ޤ@e]L_`&需o?Ԟha:c|s!=71ЀL2Eo!-=i#C6q8|\2J|%5RJ(V\2D,Mx97x|SxP_u %4B_f(o ƥΖaÃf*إ˚&u~AL3%cvN?R>V˄t;ka8 endstream endobj 65 0 obj << /Type /FontDescriptor /FontName /AXXOYC+CMR12 /Flags 4 /FontBBox [-34 -251 988 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 65 /XHeight 431 /CharSet (/A/D/G/J/K/M/N/R/a/acute/b/c/comma/d/dieresis/e/f/h/i/k/l/m/n/o/one/p/r/s/seven/t/two/u/v/z/zero) /FontFile 64 0 R >> endobj 66 0 obj << /Length1 1741 /Length2 10097 /Length3 0 /Length 11190 /Filter /FlateDecode >> stream xڍP\..$i\!h!; .A.;3{UϷk] )$ 82bl< dGU;ZѪP AF2q#g;y( d `qv ?P{~3 B@hbP[7{sLl||xB!n_VuEqu2['* u3spٹ>N.'?* O@' 翦w(tL. h`?\woANF6`k 'y+ϻ_S П,2;Vy;D #A 2U;X9Bsxk0ukl@>qx*:wJ ޱsqЀpg{^PS `e@]<fP{xV߈Y8#>?jzi7͘_ ?'yfl`/vٿL_Bm¬+|.\_4s"DVNꝉv=\A&h3PU7".[#[I-NVD;p7$.( 7*5yD+o5͍Tw1 o{MDL€{=uy59D)͈y]{ǥRUv6bbm"rKܡ 8 ,9zhs|:-GڑV^Z}J6ՠokjI 4(A_h_zL;ʎ}0ߗ}ziFǯQٓUe.yDw}'o -Ix,<߱R۷ PΚq#bT_UR(/ F9;-grJBs-ʎ/] ҽU=F&H9?%D gp-K-@̻ qޙ-u]2,б*=y:FLӔƽ(,fHܿ^Й"Q~G_VG;Y}Ffݳ/K++~\ͶEkhxY"=2ih/aR}â|^ &8zz$+DZjP9ѲN\'Ҙ) Ffa9D(x8nJq6dؔ>.$W1[v *lgQ˯kf =OPхjc $#nOm\B@"<&\wD#R y#\iz]!V9Ԫ=.QKN?Bk!Zn:lHF=x=Gꩰt "٘UpF ֨Γvq%;40Ats7zGZ>G 1S( x y7ear=^X,ZF ہ@F}1bNu ÌmKsV AƔ cK}ex^N%f)gqܘ6yՆv@rZP|B 6\ /gQ@2>+J2 0rd VMkXJfQ 6lxVIP_ ָ]^\ p5ҸQyi0+jS3勘0׼67n'û [͖>gJ*35#DzbSKg2ۢBUtKYٍ-{E~WRPJE̴NT i1+xwPOr9pƷ~Ij RXL9}w YI&._V*?wWZS[cC١`w?_h~k<Ś$- k9o7MG0iʕPG'W,*3(;.B:eƸuo^;GFh&LqVMeѯaio5WL+?u?!DcnJ;#* f={;c Dn74Č_6@9)NI||kE|JIwOJ}Qz[dՎÜaju** Qp1?C5^:Vg$z& IwoxZ[\EGt7v8)3iU4x_y5Lh\w-4p '~Qzvt%RՒ L+-7 2/̤BB5%R:Tboiڼ j&Lp-6\ 4!L\밊E_[~y ū-oCsgz\ʰEw$si}EԖc>rA+ L"rC$vNux\BC~˦t q^#mZ q>ΘI΂tejٸdq[:ݭ⟙ jlRuOF$zߘL;cޚh9R6g"<Y oD 76$YkR"pc?6.&OFS̗ m5ǔA&Stqlv5+ n`wmBHJ%@UYbLr:7˟^@ӵ#gx:so{%)2p\+i]w_Ǚ |-CGNDS~$$Vx(+7DiYs)o8ٖc?Q.O!'ݼL.28@hzjvj :Fm&5\RWWB&Κ>L^,/CfN-=l#vf[G"Yf`i֡ 5][߷#>i a]a"&/^\{?xrܭ' \DeO;kJ|Gj 7_!m\s}+_UjԥAH$Dz; f!B!pIL۪/yxw=k$w8z |tV CTWq1?b-< F"L>C]u_b:*k~A0e4Rqt(וuHL8и.A=0L8uEV"sJV/1'o|ʬud܋UOL~gƥ;Q"8 _k Z g&'9k"*|'UδbEn6ԍoa;qȔm! AL\ҍab7#')EHҤU)ᅥCш&)JQЯ~@jkV̑9usi֩v89-&i{Ѧn]oSRĬDI`L 1e5|sILQ2hXscfr">Je%u @BǺ.D٣B5^꣢ϓUȦ:c-Lءn?̓מV+UmUHjZmUoz5sc(ag=Dj4yc<pI"^l&BAԩE*/{fx!js񊧔dqFRꫦNbtZh. ZްԧZljW1_MgO fJ'aB, ϫQ)la6c5| 19g7Tt`X@$֖x*/zڥ!\p_0K!%d\0/G 2;hls6\- W*r ەJ.D*Z{vS%1^ϸlc3 kMQQ|D#MWÅ 74ٴj!+Bjc߳Ik NEj!,C~9r4]e6 iz2k#w{ynL# 6C#ǜߚW%iW9c$;O6ÞÈV LJsp@_F d+sl d~I!Qĝ,ڄғX^v`H/2vR.H6/gTCOf0!Iޓwdhq0AAW'{}4Jx~6oXsXMةr䂑ԃPH *UmB&m!TFxbp%a] ܞoE&"39l 2)y 0_RfOsQSL}IMrZQf0 .w@Ta.zrX]0|*%䶃GIAN&1UN/0 S8ߢUkח1¶R^u^0S 5f\T*;qf줷ڪ7&1yt3H+#5̙.%y/.#|0K󋩴b U97qvˀz+EP3i^!%MpD8ھTPN(YsZtO?`D& 3`aQU0 `i~>ۄQK2Wױqۢ N*0W%ϰJ]5XAZWVvGu@0#ZzdK;w斮b'LvpuL M2 ,[7_l"Q!B4\t]cC0d Dr= b^o "68qŰDAq I,l٨W(CHll(eO fգ| 덞٦ as+WmYYH4  r|نq8 و\ԶwyhԤGe#(&T/Y ̆2pխ_ĈZ-GU/j+u\%ƳĀT];J-e ,*> x-?sا nY_3 )8''D[F{$VKqcf]kQy ֊6׿}$-pfjjȏ5*j V?NsZ*y$6RBm[VKBN:y]K( eЀiN׈A!G>]8 Ps3(e˩N.'<_{U`-eQ¹5',)"_:^o0/x` _TlRaNvh-wș$Z7L<6EpKs g~jAazoP;o%ͨkI $ )6@?~{K"ý!+rydI1鸢It݅poy@ؑ]EӥⓤNy|} C0pYFJ5z#]:㥲2;!uY4-Q{/mf)c'm/x3X*_|V> =SN䫞@Uޯ+\%~9DQ)F[)5aRZmMd髏Ȗ+e<4ϼAlU#{ߪ'jD0~3w9i3DN8>-LAofn\R?RrRzp\~>7DɶƲ]ƥlDI{Fl %.j{߮7rW.Z9M$cR<<cbTЙ7(8&xm=p:K\}W~ nVV% Ğv%2XF")?<&̴v%y*@p~SBc3䓳08' tDʶCĄ%PN]qvT^^M-g!x#65`XU'4iygeu,݂ [Z" Yf$}#b' *Dnpo-a2zfS*>G?)NhCO[=:ǚ.WGcT5>8⅂|`eɄ!0D2P.7٧{*78ustbkI FfdR625:Ma}2'W콞q*{ a 6S),iøSc:Uk {' n%R*_ֱY5t#-|jՎX&zoŬ޽-^'LYYxł5TjUR֘pÚ^vt@\pxCiٛC> l1ALQ⌬H|ʁh|[St JTo jj #y`QtU$RIdwcx#k9XS) ǔB>R Mp=#Td5mRr}/5Wb m*OK5ّ4ؐoLδV*G̶4o^paT| f |e8wmVyG\aI8 kg^"~B-&Fi`3U&!xK#%!6z< PXE>N$bhy㏶;yÌ^.nIwi~vȮk_?o_p^,+~^ֈG컟NPuXG(:Aw.CI6Fer L2qbmo?qI;#{`W~D$[ ~TJ {~'u_QZ7*L{EM&?U} pi _fAk}u./ǺbImȢ|φq)E1)N׏z2(FeDBPrB5V C%1CtXIݵ&_$^e! ^O\=Z[8Y8D/) Sg138ɗEV /p_++lL:=ƸAJq*{ ɾN Onfj-ZKYU٨BTy5m;ƫ2BsNh06&|?뮿t3SܤG6a#vܚc 5M8XqZ=eCb(`4ѫG^0@HAOJ- o"yɌ_N[S t Jz0W0c!@ef>:sx^g~LJJMl6F?FFəyЪ9WfBryQQ,xnj0\3'=/up`gMp;Ҳ endstream endobj 67 0 obj << /Type /FontDescriptor /FontName /VPDVKL+CMR17 /Flags 4 /FontBBox [-33 -250 945 749] /Ascent 694 /CapHeight 683 /Descent -195 /ItalicAngle 0 /StemV 53 /XHeight 430 /CharSet (/A/F/O/P/S/T/a/b/c/d/e/endash/f/fi/h/i/k/l/m/n/o/r/s/t/u) /FontFile 66 0 R >> endobj 68 0 obj << /Length1 1377 /Length2 6029 /Length3 0 /Length 6965 /Filter /FlateDecode >> stream xڍVTS]I (]"E:$TA*-@5RJW@wD)ҫRU@:/޺k3{fgf Ca%'#LE@@=ci $.xxLV9 G!eA08*sC!>@8,% b _(,P wQH7GbpYZ@pC!H C2B!@+)+*'Ax.B@?8h }aN_r0a@!q>H' 4x8 j`tF"#CP #]p@]WBN!(\<8~TW2BpT E=1"p_ E.Y 餂B `H7ThwD!H'_|i{$wXxxF~ .&B Zb= %ߗVÜ  W pp$  Apu}Jq pjH(̉IJ!h4$+ }vw-%p3hE@~S(i^!釋hu$aEtVRC6AvBGk)ۏ_MlBGI*0RC|DjjII<gy_^ >j4kWM<{,Ԑ|gdB'=mw|oš-]̌EbMYaL[]ai$qCG=W}>N Fi&>Y #w.r-SG2yX6G&ygVM^\ZxbU-G4a>H߽846Io=-jiZUir~,M+Wq·ak9اf%m\9V(bYj_g5b;UC,-) j}"C 6x슛EZXݳ7m`vn`&Bf/bryk?\1}-2PgRcuA$ݗ _&JBßԗmk򭖿A7/HzOU:J[7%G"wo}I8f*M#u|km'U5YJSWyv>TFZ-SL꯶>ZB8i<=jL99  {ۣ} p  aOΦ7 $Ƭߋ*tB.J}I$Sr{H 3*rv5V䗕!;v:~T+EAsֽE9ڭj)$!Ǝ٩`m7ےP-yZD &fv<-48KEiMsu\)mefCm fè\8w4fm{%e= $9G![NdY#li} ^b6Ka]r#2j  b0Bϝʂ1LVv_@F7/eAXf]μa$3nX/q ;e|LVxHЄEcE<c.s4nڔDrSu9=I MxXxJ~/$[Z7?Qդ)D'zQat_Iky K VVV7J9̬ʧBO - cs}F8H5{fmF / x3O|{0K2ڦ?c. ioMKwU`FhәFwcl9w-O*s6C~p cG׊XNe f~|D2dI0٘uY%{W.sgr{ TZqWZe""^i<@PQVJ/>iT:٫{\"%)8;Go[nڕ Y+!*_.ȩOee`NS( me#f*Kͻ5-r Ŀx"8 Z̜k?05M)4Wo F[ariqq@Co(dL.ްWuoe_Գꝧ!s=t<[җy`YVN F-8cޅv«&s׺8q1Y{?rt4GngV f`RO l@򽀔fjB?5ORA3-[k뙠T˚6by͑q_YZ2RdS7N*?"%JQ/gTJU>|(i`G@g!?6*hFTTtϫ2"?3 H{dn JXd-V9~@C*԰ʛ٭%16cvNhJ@}PHO/ a(T6\2D~0',킐`l8df@Xŏ ZMF;akSA [_QP1\,j}"A%[r3 -=xˎw0Gm>*!X]y$WPb<{KwyS5A+^XĬ`8lv %5{]qLw7*.%j?B]l/R=Tޢ)oƻرDL!۱'idȎvY~k?kJP}u= !Wr@1 ^qɗ7Ҿxj"\LMM}Qﻦzx\k` vgy K?闑4ګR$W沩c@=4ؾ5HTq~qč2MÉеpW!>گT2{:vҺ|5[57n1n]!'}Ped=EHKGoWj}RjO̝PejܑE:]k0ǯT 4|.` $whė׃c޹g-Qtm2ryZ+T&4:+"C Xfh#>gZ7`j/$V:$* xJ=?;4`T5z_ &.jvD.Pqm³N%*wmi9ҐIsEh$Z]1Qf 6}Nz5{R Ve$ćf'F eb!ު ߈[ Ԋw^"Jv;?[;mIcl3E|sh;D>#ѷ,|JLb8?{i;>f6UIv.2|]Qas@A+T5Xɻ@f(#bHux.66:EQ۷*?cĬ4h47ƒ ju(g~|λd1MM5e E͈&t80a8pV~qw[}D7v٪|[,AZM^L`Ҩox>gjGϷw@\}%{ռ=W w]{aZ{3/;H/LKXHtwBZD"y۽ L?=h=)rџ:'C-dvǰk ~@ p*zFW>B45|MB{2uV}Pd8λxQ8=:6\97|_·ȩ#a]8n*mk^`A|ܷ(v6u)&|tnsIe1یh*%}N>xZ]nFMkW0$յ\o4j9{D.av7n ؗl QM)5kޣRvސR H-FR) |:2oopv]tj@rf110ѿcV 0v v+Kz րN:1ט#%F2 V .BԮR&{ wTk[a BGetsx@ TmI.YLgx(*/u|ewo >G? K/D(#]Ye !JJ8V ANE- U\=UHJ؉zz]qrvvf Dތ&!o 8p/#Gt$D9( c~:C"kуW m֓hw=[X%U?pw[@s>a$Yv(*r2?SV3%!ALLykAiκ1nų3miEA l2w3w.@HLMn'̝UU#_wQfQ.sŷrOV,eDw/Z ܹbs+w&pf 4%oͷ%+U\+t> endobj 70 0 obj << /Length1 1468 /Length2 6456 /Length3 0 /Length 7446 /Filter /FlateDecode >> stream xڍx4][Q;Ԟ E^5"Jlj{RwKQ{*FKhk>}9{rNϼ D@@IE@a"c'0z`HPL8 MO8$I%@0(#C 9tHEġt991u~pCx q7 Fthg" !!0(_)hwI!!oooAJ$P E v&H0v2!`(a( D8@=# m;_? I'W"w0A0T>h~ G!1`/0 8n PU01 CA<`h QW6 nnPE?ew_?@z#^9h8x `=|00'( PЯƾ0C; 9B1D(oÿWD AN0c`_k{|V@@?O9 p>b!S#= =?1**"} 1 E7e@8"D(]A3?!7iW#UO8/v}x`̆3!v55:P[5`̌( 0: Ta>P}> L 8 G`L_6A\1w sdMPd t5¢bؗJ̪B$p 8"=~,({BBBP8 BNn='1`9&oa:{B}Y$D*exyQծ$hQ4Sgmv gWDN0'$l.?񙢘>}t:J_.˪]~o`U,C=QH}&꩐$Μ7(LyUuZsn[ Â|.5)Ky DSBc9cM,]B irR* FʄȤ>Z8lH^~ˠ;Mǡ0VA].&^i'bKb*P|v@$Ȗу 6O -1iSAF:-^Mvro789R` /W5%)}觎1kwx86|'YIqj=pYPQ@I5!!\'S84H}JDc,Bٱh.hNJqK,E5^TmuB~%z,}2{뫀imA9T/Jqd EEHʡpHt"mOv$3]&ҽi쓟iYpkA؆Π̪_KEIέ%=^30>;y:;{,gp9Fr4s ֕n`eZzS ^Ny!ŕ-zL*{kրowf/B)<_g}o{!AcPϕr&39v0dhD__kbEA?jQQ':qܪW ~6g2Twpq/9ZE}*p],UX7EP$=S}ǶHAiTXOxI5P|iaqCgTǎ_&l(N7Ӈg_G ;r).~!o aZFV=W=ڽ*Y@J>R2gWwټoZg=<65j3Ț><=qZ(im͆'ӛ`01jD*MH[TV Q Q bb1xyvbx[Yި@Pd|tc x10qƿD"a>unU&tSnpEɖ ?1ޑ=L.|c[ge^"`sSuYYkzˌ yf Wb_F_w)zu@ (oB0ܺCGhC7V]ƨXpVw< *wJ{?u36bp|MZf_%vSMzBO7|s DT:#qv@JSK Q`1܇:sj*07gfT祷3/q b+\\cō}!Vܣ3F< U@j{/GIoT! ^.Lߙz~Dy͉\Wj⥻ɦ&H\K_o*TMzY˽j:u%V.`vo٣vO?WHs@)w:?)^ȾUܛb-~+ FUD׿]oQHk}݉wՍ_Zat"cxB]Xޮ0x al@^S9X7%eYk_FSϙtF蒏_ܐmd$-/+ Ļ)1>RcuJR&Hȏ7zg}W#}``yS$I_<8䒞\ 삄I CxUDf:D}-F&d[+Uʲ_T%sb}lÚu}'3dod9~bӇx<^ ill:bmӘG'o/Hnc$wJ+l_47_%0RE}o2NȸpUPZU5!T{09q\af/|yb/M3A1}Vw”謁 MqwQ*Vu70G*([ðk.kSv#GwtY{4W""O"x[ŻbՃh`y<:~~Ƹ#7;iQ{lTs苍2ҪP%dEeXw񾋚8Nn? <  BH|-cNK_Z&JXBi0T< qAFMc<#y!ra`Q0o-[JLOM1~l[=V )[3ҭlzPB&E豵j뉿7n-Ytw'[ U_Z׈U4zxa1Q_z.S2>w4=9Sc.`/ ,l5\N4ޥ:I#+ JA4/;q&i "Ev炳y0@ze8y~z{/ BY[ͦd6]tG[۩98!oW1ː?>)4ӝnP4sv j9㧌ƩT'^(Pt#v _i%sIItㅸ[Giv}⥹|hl|qfs="vwTrx2YٓKԏ%ËoJ5څRTLkx'|KZ@:I/{a>HMչJ 1;AEk|%_]0֛Bs^Vn~zo\$zf\t=1*336;Qʍ$5x:^V]hea+E{c}#fw"H% Do O"fUJO\6kIQE'y W}R<2is.9R(Y _3&\|*uxqZEJ>@]@E;"Nu%5[qU97.dkGr_;*>8R1HԫHͫxK>~yEtVze%Պ]hЛO:|S7w7nZǖv^~i߮<!E3TZEi^Us$k.!A6{EO%*֎u.NGR\WOy_3pA앨KjQoD9jƿb,k xPX6Lz*pCόA2l6_EZk|>ryT"Vbç{$mXj=ch' W5^T c /b"[ >ܶ{{*wސ\+dzե ҾpVNĶC\w8zF?eqyP.6voE䵎K\Jx᩟Tk]91:x=PWOEҳC1ho8Bx Η^Un$RYEYqܮk-q>%aDGEECJ͋3m|u-@&dcɂd (zm*YY0ox~ BZ] iU+KT2;iwNn+"4VTcӅ.FbWI(]+vlR4ҥz('d/AiD=KG*2fdܐllqmW ԚvSe$.-^g1ԞǶL>byxfF}LZZI.0hZ.Y1? MuhsP@٪nR93kx(r?xr~6LjXKM|P'ڗ|=G1α:"=+dڻzٯuU6=+^7E/a]7gs8fE=jyHdБEc`OUtn~&|F 7>h}I]LKً51Mw,vm~*؂x`cYm }eY4bsOxf|{49O49&yMѿ.#EOEI\$o<{&'qts Hwq]mr^3 d̳q2\^Yw뢟Bt1 2-x-k\y!Eٙ>p[5ǣ% koCQ[fi:$+)b, Z{EikAb^*6i ~4MJ7d=7=N1AtKfM\gdFG3|˕kuϏyvITuG8tڜѯM7?S:3Yq:1l. =k8R{%30 9!Xf%.X/LWˑ1y endstream endobj 71 0 obj << /Type /FontDescriptor /FontName /VSOYIO+CMSY10 /Flags 4 /FontBBox [-29 -960 1116 775] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 40 /XHeight 431 /CharSet (/bar/element/greaterequal/lessequal) /FontFile 70 0 R >> endobj 72 0 obj << /Length1 1666 /Length2 10665 /Length3 0 /Length 11727 /Filter /FlateDecode >> stream xڍTZ.{qP݊Kq $\ )݋{q/NBw\;kVr>{SkhIYC,r0S aƠc] XҮ@ سLl \<.~a.aNN7'п ! w5@g/W9Ͽ&+f)'+ P3ZY8!V B0`NPv83+h@Ww55 '1:v _ m x8`賋 xVT;e 9.v@ VV'g l 9r*0O+l#onr|6t &V g r#a, 890(ɀ\V}rϿ lm k7g]0 (ͳ?2[ )-Vv$rC y0|@ O# ..5 ڂ, 0|?.L'vW!"7+߼x|xl|..n^bTwu"ܽq{2^fgP<37z^?]f(ߊ3e[8xg7nB7Zh rs_"yGsy5@0+f_j@?ޝg/N=}?UR`++puxgzUk#`C`.g~++$CpX 8 p؀p84~N?y9y!ω>'8`A9ןZl =Vs+*) cܼ/O?oɒokIޜE.HuY.~jt0 t0]M&^kEd݇qR04[5i}8f&au99+/TqUnw a,:TP !M*ML"Tr MJ07ߏRVxF g=;inYһOLA!,#"[ [ъZM }Ɉhѥ<-)a1QL@Lw]nwH {Jd41c:u8ACgk }825fV0\f4qXn~k&=5·WAz#B;VFoqpՇd=ַِ9^H39j ,wg D$"\0?iˆCb E`\($fyr8)V!7)-1X?Ke~9.ѦV%$wI|P)uK=НԨGaRe-jJ}A;-__<-դ=XeAkk-η9< 24TLwKJ$J+oepPRX+>JTe{"ύ~ÊZv+_^Qƒ@-Q. qo/:jC(XF-éN*H.:;ݮŖdaE6!EEG<[1@[)if"N @h7gKi,4#A|%&Ώn[Dڍː(樌|CUAv8Yo\ۨBճ=vV;uޥkt&_d5NzFۼMpr:kw~HVyV[Y|WSm@G9 Xz߽rˬ Ne}DeJTMYu<>^IOb=I\(@a: ؝t_QG'ž:c9!< (ϡg֢.h_̏GtDV6,&Mb8$K ѭ8屘}pDYڍ x,oW*oOV(/3.^7zXzv(N/pt~F YDJtlTέ$L립DpW읏-\ ^s-/bL4jOR5ɴ5%i*|+~{.w~iSG",8e {G"Byt49 jwf YЀ0`,a0DBs/ *T:|BkO\/Q֙Vg5a`KzO+0AJCǃn_G_Zó]PKx˙˗Z^.55 s 7ˆx Hsdwޔ ; &#07s{θx_ &LmZSОkqMkB@M Q*yw?h /O '܌^cQPꍚVkH =2fkoK^iDnBH4i\ _Muln6jp%)r y!2Q8 cW3Aɼ}3 40v]AO@u8W7N \~.-efľ- 8hl\Bn pSG~R6v{V6<*xgl65ɼ{Dsڸ ~zh⚉ƵlDx!S(@7,g8QyeݸZ T wiKxk]NO/43c6S!{>\FCqUMa֑N13wI&u3DЂR&?kءZ[dsRXZ Pf!JKvY- 2GFC8>2zDoc}1}O`QS\i8;1񐛌HpK̲P1/-)dƶE MKGKl>]9pvu<*J gV7}ޑȨ +鹨jCi NZ\kUaL/` OZ0#7w4kEWG26kbq%'LFzR40m)79IkPp.?½nJޣ9b+³=\6\?)GZc,dvXe`1eJjr'?ݷH ƒ <.I ]?_ྔ dk:[DD7,)w 쵖YX=xo#QR=M)|~dԵӣ2\saU8 X@,RUV='\Q8WG7 0Ǣy?EHvb [u/fYSp7baǒ*E`huBe\z5z[i a|v7b[dηջ惒$6ש0 LoQ[*G-op9&8qs =w7¢x$ d6!Sz_OgGkAv"^ DW+n뺗NjOGYlSHu( "U.m(bZrJ}](N _u!k1~3?EXПp?ni{ _O]B !ݤ(p~%m9NZؒ"R(@񤼯uyKB~'4o8aZ @?z9#ξ=sk' PV/t"4 "R|̷B>-i1sAP>re+K`w ~D.ڛR7M/΄oE 41I#q3++Fҷ #?{; (y5Qp'XiѥLuFFڵ|{:w 1Ìߺ!,* -xn~e.ЪbVUrZN+u^X^6$*>i^KꮰWw('Žm<FZU67 gN,_y)}ьgԀG䆣5hcFWU4A~HTK,6B (8wH%OF/ð{Tkj߼D5-n)T%N=/kRUevk̴ bp+Gn0RC[·w!odw\[ -щԵEf]䄬^YY%}KiVȷOL]3? &T*/ŔH#"tT2p౦/Υ0ȕuJ>!Eko>JkJCwS_b($WL*^#z~!ʍz:*u2#Ry0iE{.p(3)A %$i52Ho4Nڗ_1@1iʖjב@ eW2'n K6'<Ȅ/̚+hR:, kÙƁdۄu˟P3 4B?HcJd1,vLkkAaƩ:bwwo}}T 2 Z 9av$&i5xˮ 4ʑ4OE{ɷ}Gq\iѫI9o`B|7=8L6+mǔ ?n,J7]#VŽ=d̨ ]g"_RydZRt;?a3!.U#5 Vޓk]R!>^CQB'7CIk+  U(d 2g/7DZȷ^p:0[k*73ӟImJ=(,M}͟)SGW 2K3>[ĭg)H&!VQmT+?հ.-8|B|£SNQ6 1yK |wLH3#`o%jtL;~%TM)z, H@S~DLL&;o䑱!UJ}=}pSb:_p!8&'KDQٚ2YgNgf{/NӺcW>7/B]7-sQTNx'1Kd2R"֥j\!Pg|pNKi #3uu|e<ɳcûZ=(0BOF´Jc&|/AS/p\L.EcUڑ2+qȣRE(1-3TAu1ۦL1ou9K-6#UG{]HN ߚ0 XU驾H(D!mĤjF-,zuAדgl:@%3tJ%A2 qj|9kտq Lm,)(cEVl uaIݏ+dN5H4V(_]m<.xϗH+k"+͋Soi 6kF[k: xۚ 7^-_ic!P1EAQ “M ݴfh5F}k䴋WkRꜤIr,yHPe.XW!8b]JT}x,ƇceWP(ۄܡLDptYjpz An-|0tV\JEpd{=ZP.f+` -"B 馕䶹ʦHHwIR1P}}Y&tfk~g0PdCp'x;J48 *~!A".%ʋJV *i#Znɖeb'J˛ک\t5pLxKu?͖Hc?-Zq .?̦KQTL594<ł%f[c녷pK!a2ia DF^ۭ3=M3悅yx_{&ⷾVe >[: e J:m[fNؕttŞβ]jQڌ imj{{Ι3vB&\twj3:~^hIH^k3?fIRc(Ȝz@cB7/?tӮ|6ZL.EpZ9Lg`E_Y@b+ApMvǮN#*3>o%!l0O2adTec5BYNZƨ$dL~|ڢemP$'w>DS !+oӨbw$?UӶ\͝x󍥅tLY" +LS߮a` /MrH}3/%ϬvX)&nm6$]{픏o/ EL SmŎJ3p{D[0ge˘z;|XrPVߎ/*}jq(ᔖ 9tjuARU Uݱ(pp wx477zZ'ߦg"nŦ\xWwC$,^=96cݳ!T ;͍O{C}.t6NテWdyzDGo S/ 4x3svheq_3n M >d]i=#joFaF虿x#?َ%0yыYjGm I%+Rbp#FU0>G,Q[7ɾ2)_Z!}hٝI"6*q[Xxf\Ci`p+6QXIڊba~5-P0E{0f>$ %j`kX=.=5l'ӗ"i])7jb~Wkh7WSb냏,upHT~q VsHxxzbp0%pl::0U Taz3ۻs-)߅|/>շ8㻍&q޽\^#EVF|@eԢ{ў8&yKxbh\*?4AIC9ZRuG+ts#!uBD:X"~(-7 *`YͯQXC_;"r>*iS *a`̈eܱ&3>A/7SH&` pl}mѲA#iAx)0[jDKxϝ-KFh#l_o>fNbx#SF|[Z٥EV$AШ n(?܄vmc8L/ +Wъ w.1Tl ڕ?w|ilc.r;1%c /mf`Gr  ,aI+42dxޏV(a#q0:=]iL 3Q'T?G:BzC˺fx61<'tSr JF Cl'uȽOR/\"߿Ch)xgcS0gvf؍V땈j݃?ҁ tJU,yאU| o.NMr 2ŶZl #/g#i#?:ΛEVND.ם !/:YRx|%QSGAGUDɰ取5m3 w~cb,%8tM^hy8~tݜ#7C@GXəqg=A nh,>/}.!Ҫy&F:C'{<7+CŞcr$_m ۱Cs eh itIN^*aR~WNks ſ ^R=UD FuZ&Z+x<ҡ?8$S@tL~{kr'_F߇eb&aDn+ rEH੔G`#6xxwi0cKEqikyňghKGڔ,c|&,vfqO0LԝƘ^,x}dq, :m@q֎vqxyEw-F Nfz %E~~)Ejݯi(2Fhb@?wEF(ES6$qwש؀%d*Rsc=5S Tkj^5nlWr0jaQ,vИ}Q45AgjqUu5 FQԔƲfxh24 Jp(gPK?tEF4I>2[E4Ku0~ztbs}`B+|w~<6ꕼumo*3^fAYywgOW`o )f3P`!x~=#V}٠OiZ_'& S}&_*|N%ziM )̜)Ij/;|WA5Cbi "PQP8k1}[MuPLwJŸS]&&(j-;AdWS;tuR$| L5P5ѽtLn[j,GQh3cN^wm@)eqMLKsij&Hj_5(:(quZW۔ʇ]DaJl&-9Sb3w>@u B>]X ,p@wO'?6K } 4Q q|J)V_O zA.P)/A1pFO6=ȽdN;׈ґgLV;\a0{ώ/ܸgSQ6F5Z):sp &WtY+,En2YJm%(;pOF-jGU44(bBrcDt/e_ U 25?ˢT9rSiyϲ<9zfF'&6T︖jI Eb] #{C;Ƀ-?5Y|]ҭH6wfLys ipNJn;cNm~2ml1ajͣG!b[=|M3&JVwi&4܌4>˩ދaT~i}7Mj6%3FqUIe& w6thچYm[ڈ$UCF߮#q8ؗ \ ӌ_OHysz #?2I$>5>d<2".4ohC?\$M~~ NrK~n XKSe;waj#ؔ4\Q-^@O6$A:Cevb`f_}H;#ܗ4r,Gs ?_* 1T ) 8-d.04"@;{j=]cu48+z_7_PfBPPE+e੗ vkﰙ!Xl8u'+9+?My<61>BC_c #"9R_m-}CjQIKVN'u }Ǖh׆5M75H1WŽ7b.!a<ZFj;SSbr,4wl*ʨ>sq+ZtRCg <6a)/DˀL9\5Ibʑ%p"1F҆^wPj#Y endstream endobj 73 0 obj << /Type /FontDescriptor /FontName /AKMRLC+CMTI10 /Flags 4 /FontBBox [-35 -250 1124 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 68 /XHeight 431 /CharSet (/a/b/c/d/e/fi/g/h/i/l/m/n/o/p/r/s/t/u/y) /FontFile 72 0 R >> endobj 74 0 obj << /Length1 2466 /Length2 16926 /Length3 0 /Length 18365 /Filter /FlateDecode >> stream xڌsp%Z ǙpbcǶ1͉۶=фkb۶͉ys΋9T%Oc䏐)( lm²**LFFzFFfX22s'+d_6v8}D > emmRV&;77##?sc,=@K&lk`nj?FT&..ڿF6Y'3GD#+9\P99q30X;:Q\͝J@G e5a*fR(ۚ88+s#gc#:@YR o̿ h.}/G66023q71[b2NnN m?[~@LP`ͭ𗛏2 Z[maOhQww7?/v 6@I|`LN6FFFNft32c+o%_ޞvv@osXOG O"X&&hjnh/s71' 3rcwDԤd$iMJ!![7'+`bx $mLl\Qp\P{iAc?ïh }uoFbVV)e76r4;;}l~_S5YhllN"hcjB;̝û P@t+gdq8~4oc7_0pp0pe/f66'ǎm;o_-eg0%0AqD8 bAb0HA,?#`>AE+A_A  ,9*>4/bpfdkHXYX[ W?BxH??j#sKm&7#-?I~t h?G,?Z q(q[1!?M?I}xX bGm>2[]bǵc< r(/ Ӈ?wd0wG- #?>.L'3?>|8F,G\?N?~O<"#gz;Z|SJ`mx,j~=u2CJE*3`NP7(2IsthKb׋^^+$FD`m> ׫WKf)\{gND|^qھҕѐ=*viih(mY<ì9,b(':O(ngofPr& i`OY =57cnzS1i7>:TmїYV7=6ܥ^ڛbm+6 5{d;z|Cξ-99{^kHh{1Ɓy$.Ycp0zh3޶d@4zXo~ 8;dol$/LbeYPEA8-پgh䝚,, qTzATGnKAuy |.O2n{t/Mͷ€r@.I>~-<ܯگ H}@p0vsSW%#fŷENojx"2}mbrlxVح#"CE:^e :MS-xfk|w٥%Z3?+^ʵ̷om>Ps趝iEPߩ~E<(f"n(BfK Y($ci)] eȫ4YһpSS#߱2F0P&ϓiLQEjeo%K_W9Cp/f@tL9PA\1h+߭Un!T(Ш'H)`薼kwG< }Z3MMgnהH҇]ХRW_F28N;^Id0QeQ2 G.ڛM'grڪxM|/R4'+] AI8n<߮3\oDZ~[s7Mz͋?G`6'Xա'/́1 Ng0`6J!150y_c"İpRO?",c^uwCјLQJ`SR) m!A@)CH?h*gWm,})kr/myQF35pQG&F61˧cw_u_xR $E{nNȆsV8(a&\O:Ks\:\V#X|-DD!R)1j]^jAǓ20C="C ⯱V+01ɠ]eyGRݏ-$!S٢>i'F<΢wVPp VTaΆP3aBwB2})hJf8 Tq\-2ԙky(nK&!t?NP^}b r"X{sq* 4* ',pÔ!ͭ5Y*39$Vc_m̽`ꅒ(!9z ^bA~Ӹ|XBh읊'6 ٠^\.| ?$cRٛe]z]5H?/օ9GҔ*6ZL6 zMswDzxNIkHъ*^L աˇ⽃Kokpv%A"POB*HPP*y*aa9e`&9EoEz4NILyT%;F ?sJ<G~(/(SXɝa.Z @sms+cb)pxuSlr{E! #ߺ?joQzF;s>SCݐ'20?鐿\b2Ikҫá#w赔[:enwo]O,6fצƓFH"CS)I#Ar7rsȮaK&6J0Ћ'K=aj8 v"5|,26~B0W@Ѿخ+WC$y2nfK0ClKN zQOb8Uj8,PY窏=G5ty@;?qڞ\$y4X:qġ㍣7s +Աf 9s J=[Ss'wNN<3>7UX]G]| A (i$(8QY}woLa~*U[pDBm1VC`sa.ҍAceumE/xÌ >~40D훼.\|uLGEgrxeG!!IƨYk%a}!RW)eȔēbXmAF_%0l5Vd`>+E%:|7@hO잰M~xe-4C:cƸp>ؗiagY]^""&ҟl2IȒt|osI L$(R\i$Հ>Ә#V!dP U15Y % 4Cƀ #~=SYK6M^5]ip̍3nٗ0S!0QNF~ԜE}09};G%ON#0 Z;^b:YwjW-Bl4(Kl0qxL߭D"7 Zk~`bCMs{>^Ma ((eais/S'Ȫ m)n#RfXzna8yab^_ZA~/ 3XhOO# w26YEX+9_F7i KH☎f^V9a=3l lSfvOic+IR2֓i9D0"uCvA>RM* !گ|. CdWB Wn=Z oG j.&.xs!Е!HS ĵLz(t5ՑK`Ě<{ H'=~⛇ҩ;rtWYz1"pBnr21*J:RW3sl,T2 V?l&l[VrU|{H$ЗH{OvWZW]]gOXc 3ѸoxbZ~졏3cn8#ОĬ{`'UIvb[X 0hMQcxJ /P떒f_-v7 uRb4ErozD4iU)H  u;k7h"MKYj\p.ܗ=ΤAY=&fvP L\]IY | 7Og@-&;d98%KrOE\=4ER*C!S8P~jNYtJw[J+^ubvģMt k3f|Is};7c,"dzLv-s\@C-Fug-UA)ZZ7 Q儛N774Caf#*T9*x!N4db!T/y:1'ZSc{hmɲV:.mgsDÆ,' H;`#`c -- sjgQk,4S^k yn' C?sxU.AQHb&&SԐk0T*edyh"ouCϫ'0Ȟ0*^kv1"@aGX?PCᧂmq ew?Koڤ&ef.|< :qPMiQ-.Ksn;i mZTF݈˱;Ĉ(y\/Xdì@. Wi-.9LT/ǵND+@¢@OZ 7k79lI:9 NmAyWe *|kS4]/r%h?@'n/|H`TոoLkrN*tihO;D7tsDL i^1\yt#F @R`OzЂ̗tTXCtIhQkS8Ic߬Z)ti}-Dט!˽gs7Ifx1S2Aq`Hl_PZ]uN[,!Ta`+86a+ ģpH-8^AJhy}͒s~:+qp`lEn+O+ CwAg ,Dc!pMgJ_V0ۡ\{w^,R72=3`wַ˝Nw :5- SV]7%w@_mŰ"ðmRڟF:, U.v3鹫zHV6$M4(bz]fj7f~GR Bj9_04碷0w<Ի (SZhK nl*X|^7aV]Ɣ8,lôl4({Zەq7c{ Q.| Km%cEY ,lu80wy;%ۉCRXk%q*tM_uysud>~7)Fߴ{zQ0$^c_ժ_åb'SauFEXtQXoꟘ*"G)F*.c Z2r(WVnG 9l?Lmn\'ղY*ZodGf$$x %s/0%g O7E7EN54# S37k=@v6Ij;"UT>.׫G1ݒ:^t^a(\<4 I+T!skT 0^]Ke.9F܌!9< ,MVg cH%>G#bL ְ-ѣ+^rWсq7F]eur;+E[<q'c^Ԧ/k9Ӫ n  6"Qd}tx87B.7w0ջ8FXIzNϋHӢoA=p Xi]%CUHNg6oi@gE2%i@ TSylp @9](4PhD5Ak^\Im+QNzO\RM#^kډ#Ĺ4vr@{)Ɣev _L|Wy<*Y}vk0q]'jvD<;kAƀ*-&JC?KrE87fΖ!c@`Yru'ˀ[vL9G 4WSSLYG(fgaw@KmUUKV_l "^jJoPFӽ}oC\=iZv e{~9dyY 5T zFo [*tBNe5z6+mAu6cM`ݵmh SHp+kX*Efw%:$) e5=,pgR-/&:ȔrGl7 M&Յ }La+11#UD Db2~ ?9-wBc $?YH\{VO1{әza~5F]R_bV&|`l.ܵzv踬2dMrMc&ܤCԓEː()ء=r g{|֭M ęU@gEsٜF<JgⓤCՙzm?z{t"D55W,uDArfm)%ցK<Oc?(ѡ5}k/ oed{ 3p%8Y&qd!;jͼ9w(EapClc]Y\)lbD{B+6wȏ_!E)idov}EIEmh>[ы#ym1>^4pJ64A &pE{IvuDC`]yKN${Ca\Q9Ь5gRmmP%dƉIu9S\O:-r-+\ Rp]:Ju_wll -ԑWc90I T¨5:8\xn#"ʢKH7gfI3 Cw]l,L_M\Ǐ!UwtJGN}]^LnN*%ޚZ\:w\{̰*V5[pv=8M6.;èۣmbw5fIudh#UC̞V]b*D&`v;1ҹsPw8RY%w۝2dE6v=јy G\x1E݃-j樅fۮSL:6_\vL듸6!emӿd V1W !m+@4~z `c:wmLk &_wPzeeRUvFD-*Xo Ss%fla`Q,V+QK}RIjb&BV v 7|ɦ.6+\:7C*^(kDt>_89:Zb="9,#'V˨_ENoW65W]p㾮u!^Amrx5"&iWb/k_B`Ucɨ 'B-$#>):E^ LGaB9Bzű%aJE*k,nxb ҿjAMEcQ"^%ӌqYcaվ7-7c𐐙%([v*mYʍF-Ӯ.4oOPoMuȼ9$2. j(͏}FϮ9r Ń e3 J@Fzpm/ Cm) =}nFn5Һ_gLH )g6rA 2C]BӬn24t~6G<4 &U-e}&+HP]j{~uQRe~83Uz @:79w9\">Aria[Tl3*ؚJ3.VG=9Z3-}eV-Ж*'X!wW\cd܏ޅbUXrFrŢ~?/1_(}pF+SF?U㓓\Y oGBEk>PMd:s`B RPjI?LXH6 NSUQ'AJAw?I(su;\|?Mbue_A-ua}&@{}ؤDžt?/E}LjqX0]'s @嵋(boi DNDTL ;iAFs;8uVvȏ!Q C]{hG~~3/]K" G ϞI=*YRCGY ţ1UW_oMBFX'l~űzI&Ѕ"λja@үVx>ĕ(hiu̲H'FSb-ƒS_&uQq?Qeo峘+zxVo?=J e+`Nty4c}B(]K_/[ڤxSzIoN۠7R| =N_#KŹJF t2CoQt}C%b#'0eHͲ6cR#{ RRE+n>SM%H'ymOʻ+fo8<|S)g?JЀbqISb>c#dT&a|xSs~D|ᶱ9ݜ4z0J$\+[H%(P [Dg e`nT,헩R.U JY}BX:EntѤaU$F$`wХ^rnTt+ Z<)WW|1[ 3PѝӒ@z;фp9aiiv: x[99j*B{ sg=Vy*MT,1Zŀ3)(ۈjc9f_v^?(6e_fXNj4ֈleo u5b?lF5w`=,=Vu_T7.<r)#iή5e8N?S'd5T_SnZlMk FVfT)xUai{2akUuF`T} D4۵\yx喰٬;ފoH$}ͩjB (fX*ͯkP9{T"VȠs;1^l]<PQ3U!{iX~Vo 0Mq %x )Ui胸ߚE [d6/"SUCR# L? O= ی棡hЀsY"7j7PNAvGF[ [iZÛP8!&A-+:\tJ!Q6nOj X!URG"p20~c1n s3[!U X.<sgEզԘ/@@h{,%?SGY2 A x`[GEx0Fs`0BPXD܀dv[&k"".,sۋ(M Vq5`O7 !-^wτ-k@K/~)pǜN{dKJ=ۣ}SꝚ9{GW铸\O"6g4/1bS0ȶQ!ѹN紥`nAEP{A* A,erMfi[C-Y1ZH4ꃀ.!*oe`6/Tm<=KG3ujX0SçcYӿ|%#gM=W-!H$U$#E4M$U T]vÿ㯒7:}m};G3/3V' p*D-rœ endstream endobj 75 0 obj << /Type /FontDescriptor /FontName /DWJLPI+CMTT10 /Flags 4 /FontBBox [-4 -233 537 696] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet (/A/C/D/E/F/G/H/I/K/L/M/N/O/P/S/T/V/X/a/b/bracketleft/bracketright/c/colon/comma/d/e/eight/f/five/four/g/greater/h/hyphen/i/k/l/less/m/n/numbersign/o/one/p/parenleft/parenright/period/q/quotedbl/quoteright/r/s/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) /FontFile 74 0 R >> endobj 76 0 obj << /Length1 1976 /Length2 6378 /Length3 0 /Length 7566 /Filter /FlateDecode >> stream xڍT6L(%H;1`%)]҈t(]JHH#) 3g]w. mPp5+Iu$ $Lm:ɸo )2d*P,Nh:"X\ @R#D!2ne'q{柟>?,)).G#`P$@;^A(O>;,Y tww:aPrw`npO€[P'ofBd#;eu#18W  =0:Ñ@/g( rr"=[#- HPG u"8_Cj(za?)UYirr# pߝu@ܑ^-ic3pqk1eXIpfK )1rF9lq$>[8 uhWߊ"20`a$ytn㚏Fx@@??/W:&7~3Wx B"( &) oCT<WX ?  PIpoF &KKQC p- 55^d X(n9-#!0_OpH yi`tm9 ת_*8n*u1zp% {kP\8v>[gC!Oo$$qz$@s$ E?3 _K j!F^Z 7@;Og;:!8A󘸜\#t8\,$'q,QQQrv>Ww_e .l ?/v9w(p1ϋ-  8Xw_8=Ľc`(߉s?¸ c% *Ɲ_7_+p8ld/ 9,Rdrhَ%1Set[P9IVl_b:ieYk\R5-@\*|5A1zO .ΘDj\a3iR.~xIa?c ar ؃~Z<*zSK9` PiSHutts B$|£Na%ĥ? Rtg @CO̟Sn^M:qF 8Ed;t)JczU#.s{dVz$C 2Pϭ,>Nj,"Q E& eJ4Ujnx[}Vl7֑N$զrͲg*cw)_Zd.rc@B' g-VM#޽˫}7/Y~U' <%Oa_k^ki:$\?~3}c+>R;BfVc7& kl5ulI| >պWK9[.y#׸ b&/Z.EKXVhW|ra[ kDʬL ўc" ܪ "X7? w!hEӭє_}?&LD׈l1SWՙ/D@Y(!Hf|5\qrOSJ8ʥ늖)9Y##[^SZm7BfBzE-}> oe,HWUc'Km9 .(PE/@s.@r[O_Z<qX D-Ʒ[[]1,a{P3ܓ&bUUC)ԑҎRKB'I<{", EUjWM4^~Mj9]7zdu@̌NcBMWiM@aAj>> ~{GO͞]v*D5J2(/@S,Y|VK{ W|Zm:Yk]AQ)hD'yBp3XGlv҇^U D7H70692b=CmE>/py2mq&tf)!KCe;*ՙW#׸"_SSJ\>I}F[f})큟N$p :/ ˒îGy3ZR6e_u'Qpc[!IwҠXshEPj,ͦ*nxc8? s6=IqE'}-TI[U-2Jpl'5,; yžAFM2 Sա{07}6x#dU7>jVU{@lم怓þ^{*d-2 aHS sVh朔4xrEt E+߲mnYv. Ixӽw$ Xc-bE7[ =O@PX&3Qߞ{#Z@2u$[ yY>d/:CxM:3b*^(ioD׃LVب-tnϿ.3hUޙ'<8νa.c$7$5ȄcqTlqDjVW(;ʍ_67Z.SrMY;1Wjoّ7l] 4dQNK}a|POˑ"!|đ4(g$EoA0t/^Ҧ8oDA'cȀq6WbƱx >ot^ݚGRSarQXGjIkakn+oSh#/_Ͱ~ M3qv3c GHi)UYݺQsz z}\c7%EwS6D ;\%tW4f3R#D ȋ{X C[ P ~t$LJ g a{6\LtdqiRԴK>*7r~5t -M›/:.(u&~\༳-Ҹ==Iɵٲbc%E vwQPlgBTkq[cgKrϷzw}Gq|(9HHHUhO^k4W+!L KEs5^H>啍;pD^OM[t{DԳA[LAQ9˚EtL5Rs*AֲEh5IQJf(X#J<&v‹V|:G>p;-^*)bGJM[V 7/ tՂj*y"=7K[5J^y3$yuix%r'_lлPrt3С[;Go4[NMgl6pW|2>s[6.S7cC׫EXX_iЬ l_tP"c\:V-:T |ioi =7.V|i鵛Bz+.5\JA/Sċls $q ~zs9aW [KHִDI:gNa ?,ݞ69rhy)*q󂼲J@CI{(ŝ}5|xbK|zX8fQ)Zx_A>{ [pi!F2r& 2խ]aƅFv#YδSͯ?ÖG5VkQJ\qgt}u;hji2> azyqݏ+)f^Ɗ>Цɾi_PQ>2_X ڲsZ xK%mSΛ<]\. lTׯ_.ri=[1 ۧ@>c_'&'n ~ĥYXv8dn j4ldz_m%1NuqgͩvU{@ޏ3 &;F QiSkE>#0KcVլL\%]ʔh2ZZc 嗘h':Eʅ}S{oW"~r eI*bLn7L:TFƪڱy'΃mI q> )T5"m D)jH@-.[#a)Bm:ưfh2a)hBTdɺfM%/0^3W`p&)v욨%e 4a3܃RczX,=tb:sL xG;$񩪢|'|S$}:E?%(uU"Db?Џ%I{v)G aZ,izcD%&Ljg>ys*]&Oř3xA\XA0ͪc 5|C 5ڔNKܸf0󁑶-M&h-7 Y҉&R2nD-w&_V&=[Pu"7jp5JCOeh%E[ak7YX/=* /Hq??W j(񺩵A|Dl`+punRjYX$\bbl>uI#ձ=~!+ojO=AtNg{24ϷI9~h`ݡIwJw>SP> PmI"~j^Ul Kt&;"3:/TVyLH&3%l,ZZW>xz(]:K&dw|R@a'W(-#?YR5Iь e*Kmdks^y!^ŁԬԁ[KU.9 prs?בjn(~ol@. i3Iߕr%C~A l4LEF6r:Į`JcfnqRcJ^;i>@{Albf#ϐsOb0_jsm\vs%@]r杖݂됬Jװ Ce]KH)؝W{^4Z]~QtUïk(rи4ar 9J`ǃ4Xcmڞald:?dlXr'(d@qڵ!(s6i3҉YsN_Sy7? 1 5 g/f\;4F+ep=#yt;o6dߍwLZ"sDH =٦=VE|H[و0딐UPP-K},_ՙ H(2,QԊMe VF87ZwLuͻ2CUvӡ9=&_|c}1#}Dt&[4N"N74:ME}^Rʠh(P\L&]0hiMy x̨r/F6HlG]1BɘE=s@iW<Ԉi_Щ}8~G('aρю ߼l+޴QUC?[xt^gEh*z}O Yޏ\6$@rM5VtU X<GWU>N_q' ^D"}q'Ǎ>*krK' ? F>oLj$yM>SNNLg2~t:LthrWn'?AP̓>Z 9SѼg6k+b./Q[qX7â3F]Z NY9$P ͒)8Hn+/"LZ`hyfc4SL t'"<%+2s'/=yY8 e{I 7,5Dj5 ԍg3l@ˬp&W'Mj ߹з5Tbd5Xf|+4-ZBsu _tN< ]XduXM*0=<&f 8ԉ' ~azGwquO_fh~"1.Rx\ |q~Glv -aq;VS%imvP[j1pn7 ͹Ä[yd`zzUE[f>WV`L07P!\ʤtb'|8)4J FXFi@{/3)(*Gmk^]?|yEA>/5>G!‡xX:D걽qZ̒k`2v慖+j]W73zt$z `M/!ka)U^rajm.8lQèP!I o?Ssʢp-a) endstream endobj 77 0 obj << /Type /FontDescriptor /FontName /SMUIWA+CMTT8 /Flags 4 /FontBBox [-5 -232 545 699] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle 0 /StemV 76 /XHeight 431 /CharSet (/K/M/a/b/c/d/e/eight/f/five/four/greater/hyphen/i/k/l/less/m/n/nine/o/one/p/period/r/s/seven/six/t/three/two/u/underscore/v/w/x/z/zero) /FontFile 76 0 R >> endobj 78 0 obj << /Length1 1556 /Length2 7570 /Length3 0 /Length 8602 /Filter /FlateDecode >> stream xڍT6N h)nc6@@RCZ. iK$ysu8XtyeVPE+ʩA !>HC9@OH.rH((:Tqu D%$@ $#)|@C8y"av(t \@qq1@G(Á`]v" 0(RܓC$.|C.; eԁ@nPk/@ #3>PEؠH( 8 P :n EŁj@M'(_ _``{@Ƈ@p_`:9;e`4@0' E_iSV[!p W0$'#l`pk_$]0gW_.h/f EE@ ! Jm z;!6hP_ vA(+? }a j ͎6G<& _F,=n zIU<뼽p8+kf(Շܯ2= z7|n}c7bpd:> ʦpV) ^(U%.}4$GU -/#}Cɳ 򌑟*1ݗBy˂Oy- Ӳ0bqzn%PxXIqa;eXyf0Ī?1\ΒV8"B WC8Z}}7F_+@wpժ7+5e:lvX`vK׵ \drU{%f^EG(¢8TlliK"KLd6} @?>c^zxL07-=Y&XF~ N?5_I~΄\[D]_~p\msq O&kHM/DZ[<cJ9's}Q0TnwR]H +i~rg3Hj %OuTnf[{ !R8Ƙ?'AD[*~_vڰaV6YIEkJKqb7E&NNqHg#%T^g I8U;Vl~L48 BB/6vᴿr}<K)\H*hNq =rLe=l#H6~רrO3UyͯYOz2i {6GKNTӛ5PV0JPuPX=nvK+y:z}]kNӹ׊:5 DZFyٸz5|Gkzc7t:)i(}Ƌ&?mصe xiB_ƥ{ )&f[m,O0X;Pg`[V-r@QhWƷ"3&bGb1Pl#_U?)TJ4Z.{D$a6y޳\EN w5ٸ 薜aӍeAiNܫpf!6ځ4kyw]OT<5w-! V)+!.y h|4#\2q'JF K:|myjg76%wuoś{]\x_@ !) Y>ۮe8~\|Zo.Gӧ͕˘٦ ]xê܋**D݇}N8&èe &>-fscKƻg7s3,KAYּH0ڋޤFw)zIx_Se4?rxRӒu Z&7U͔4H 33$ߓKaXbà>s{yz״8|3K6vM&"GRL7>LO_-He,L uIfEJ!r]<ɢ=]62J-XM"&*4+?p2;G-M)@v0Ι/}d)&V p}U X'b4m|P6CfR|R[rݥz(P_rs)F쫧6~vxYac_v)Q\JJ|onUk'StԷt]䳫G7?30?-Q#VEaw< (,mMfQժ_66QO0k&{yVi%hT(xm/_ro1aEj浔ܨܼ%72bWwpt}_ߣlpo%g>vs kORS× @oV{*"'dF'|87L2H0*bֺP5?='ө k1/QډКtUz1 G3n۽ ' _t{+<#>-(RٔeF5S (.VbvgQة߹}rKQ5;Df>ڪ @T4[$ćB*Ҵa`4+$DS GH6հe n#M͢]&$lN2 $Z-[ Q0ONQXyIyLA??_8xhiFX'cvﷅe#nT ŧ'.R)L*} U>4Zd.&TYna;2mj/;E \>ŐIYf(;'1[+C@J++e]>A9#]<"Eٷ!7|~ݽk=M/^!+ҨOC&1q}v?Th/)=Jލj ^lu|i\j~# + =\䦾L V$S+7Ad͍e$8{0&SPcbT,"fhd(w@Ix0/['lx9r_]\|'DqInIQo'&9̕:8Fua}vtSu'D jlp -_/3j:([Z"ۉ@\^CcՆ+4^e#8::ў%%lvy&8-Vl^O/,.7l}RJ* f7u|{J7[Y3jo>b1UPsaQE(B`LH0/CWbƨ1@+^ń1324-;o&+W4qޚwu2K'fuxVZk9ܧlmѯ r~UT_lq/vV^ӱ չ}]jY ~%R _%{qFmO:,ǓLoCO6:kkq ؞w{OUS:<[*_o(@,ÎSGidP/+~oQX*,,%NW34vk]Br!+F?$ ;AFr-yk˾)14a,׭,,$6_#;Iߐ;+-ƴeV km-ӫe5&0,' x)}#]=#Bd _*0%IYK{HR(;SvŸ[Nru1N&Eggf+B_D+=-#3U N %/ksF]e~tH':|_yI^:eZ9u*ց(܌*6mYL diF~5Ó6_L3bYF_Y;z" 3 n"*$šr쐍 HA3v|,[Q#rOuV\s-CH=Rw%،aËR =}ҳ*F" mO\ #{}4]4G$o/GN?L'5.c&m$#Y fMe#E_ZM6Tr הyTEZB5HlԷ,;^07buwЉL5Mw`i.̱~G,H|u- uDU9~*rP68rqʖo{Mv{v^> |>q}tIq L;OPؕa|X؝6xԬF/!:fHkzu@qC,.cۓII CV`=ըolkVwuH?ik=$p21ˠ~~wb :fYkˊ3PR q32[#ڸfqyD+^kz-1KWL̝B\Ö~]x,/*/݉uZ1#/&D;PKS~MLٛ_aƐrA fMX߇rW xF29埗Ҫ9._iXVe }b|{z< ]'ЦU[*4tPɬо/Yt*k'B{sTkbϴ ;v|D) I#r&EV>R?8O:HY;5dq;⊾ʧ-Ƀpc?yME~׹, q^m- ]ٲo !bD\>lW >)MіL+(CiCCŠ8Nb4^ =,1XNo8uHl BKɫJMZ-`z?3ldjLA}/NSr nxde|h5UcɪUAʓ >ԜFFߘ+n->P0:h+-ijI vSyh(PW:>n 8eoTtdUKeȽ+Mh/"}6:|-'#81;#obGxEBF*MzQ_f:^D?WT0 B϶vf1ixXʪi[Y!,UȘ }4R˞/1Z%N„MfS6h*_pu;GA>3w*>H,ZH|Ln,wIYL{K4iWީ/9]Bp&j@rAα2^<ɴ\ZgKzf2rNS'^QRŎ& d3*:̏~JVIaM;ϰ03k|G-uaϿ֗6>_|)`~*黎nʵe$Ӊl3d(lcu5$U ۓч48dvmyaɚ2ǝis #txfJ?% }JȫxEJy5M2xp 둚>^Z%( K!y֢k!SR-,{8[Ƹ&,jmZ^]ow>]4%T8w+?j+__)]._2X?YAxoѨ*%<'=˾>d[i d q/p; 9{бl|"Wꕵg2'#w ߎu endstream endobj 79 0 obj << /Type /FontDescriptor /FontName /FCTIFE+CMTT9 /Flags 4 /FontBBox [-6 -233 542 698] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle 0 /StemV 74 /XHeight 431 /CharSet (/colon/eight/five/four/nine/one/seven/six/three/two/zero) /FontFile 78 0 R >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /BaseFont /PCAJOG+CMBX12 /FontDescriptor 57 0 R /FirstChar 12 /LastChar 121 /Widths 53 0 R >> endobj 13 0 obj << /Type /Font /Subtype /Type1 /BaseFont /GKPKCX+CMMI10 /FontDescriptor 59 0 R /FirstChar 58 /LastChar 113 /Widths 49 0 R >> endobj 20 0 obj << /Type /Font /Subtype /Type1 /BaseFont /AHLFGP+CMMI7 /FontDescriptor 61 0 R /FirstChar 80 /LastChar 112 /Widths 46 0 R >> endobj 10 0 obj << /Type /Font /Subtype /Type1 /BaseFont /XSMLDU+CMR10 /FontDescriptor 63 0 R /FirstChar 11 /LastChar 123 /Widths 52 0 R >> endobj 8 0 obj << /Type /Font /Subtype /Type1 /BaseFont /AXXOYC+CMR12 /FontDescriptor 65 0 R /FirstChar 19 /LastChar 127 /Widths 54 0 R >> endobj 7 0 obj << /Type /Font /Subtype /Type1 /BaseFont /VPDVKL+CMR17 /FontDescriptor 67 0 R /FirstChar 12 /LastChar 123 /Widths 55 0 R >> endobj 15 0 obj << /Type /Font /Subtype /Type1 /BaseFont /CKDUVJ+CMR7 /FontDescriptor 69 0 R /FirstChar 65 /LastChar 65 /Widths 47 0 R >> endobj 14 0 obj << /Type /Font /Subtype /Type1 /BaseFont /VSOYIO+CMSY10 /FontDescriptor 71 0 R /FirstChar 20 /LastChar 106 /Widths 48 0 R >> endobj 11 0 obj << /Type /Font /Subtype /Type1 /BaseFont /AKMRLC+CMTI10 /FontDescriptor 73 0 R /FirstChar 12 /LastChar 121 /Widths 51 0 R >> endobj 12 0 obj << /Type /Font /Subtype /Type1 /BaseFont /DWJLPI+CMTT10 /FontDescriptor 75 0 R /FirstChar 34 /LastChar 122 /Widths 50 0 R >> endobj 37 0 obj << /Type /Font /Subtype /Type1 /BaseFont /SMUIWA+CMTT8 /FontDescriptor 77 0 R /FirstChar 45 /LastChar 122 /Widths 44 0 R >> endobj 27 0 obj << /Type /Font /Subtype /Type1 /BaseFont /FCTIFE+CMTT9 /FontDescriptor 79 0 R /FirstChar 48 /LastChar 58 /Widths 45 0 R >> endobj 16 0 obj << /Type /Pages /Count 6 /Parent 80 0 R /Kids [5 0 R 18 0 R 22 0 R 25 0 R 32 0 R 35 0 R] >> endobj 41 0 obj << /Type /Pages /Count 1 /Parent 80 0 R /Kids [39 0 R] >> endobj 80 0 obj << /Type /Pages /Count 7 /Kids [16 0 R 41 0 R] >> endobj 81 0 obj << /Type /Catalog /Pages 80 0 R >> endobj 82 0 obj << /Producer (pdfTeX-1.40.10) /Creator (TeX) /CreationDate (D:20121127122906+01'00') /ModDate (D:20121127122906+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.1415926-1.40.10-2.2 (TeX Live 2009/Debian) kpathsea version 5.0.0) >> endobj xref 0 83 0000000000 65535 f 0000012760 00000 n 0000012780 00000 n 0000012800 00000 n 0000002259 00000 n 0000002147 00000 n 0000000015 00000 n 0000700632 00000 n 0000700493 00000 n 0000699932 00000 n 0000700353 00000 n 0000701050 00000 n 0000701191 00000 n 0000700072 00000 n 0000700909 00000 n 0000700771 00000 n 0000701611 00000 n 0000005222 00000 n 0000005107 00000 n 0000002471 00000 n 0000700213 00000 n 0000009416 00000 n 0000009301 00000 n 0000005414 00000 n 0000012592 00000 n 0000012477 00000 n 0000009596 00000 n 0000701472 00000 n 0000016002 00000 n 0000273604 00000 n 0000273674 00000 n 0000014337 00000 n 0000014208 00000 n 0000012853 00000 n 0000015375 00000 n 0000015260 00000 n 0000014481 00000 n 0000701332 00000 n 0000550270 00000 n 0000015873 00000 n 0000015508 00000 n 0000701719 00000 n 0000270473 00000 n 0000547139 00000 n 0000550438 00000 n 0000550924 00000 n 0000550986 00000 n 0000551204 00000 n 0000551228 00000 n 0000551734 00000 n 0000552074 00000 n 0000552448 00000 n 0000553104 00000 n 0000553730 00000 n 0000554366 00000 n 0000554969 00000 n 0000555655 00000 n 0000571368 00000 n 0000571707 00000 n 0000580855 00000 n 0000581108 00000 n 0000588677 00000 n 0000588899 00000 n 0000611290 00000 n 0000611724 00000 n 0000624835 00000 n 0000625145 00000 n 0000636455 00000 n 0000636725 00000 n 0000643809 00000 n 0000644025 00000 n 0000651590 00000 n 0000651843 00000 n 0000663690 00000 n 0000663947 00000 n 0000682432 00000 n 0000682910 00000 n 0000690595 00000 n 0000690942 00000 n 0000699663 00000 n 0000701793 00000 n 0000701859 00000 n 0000701910 00000 n trailer << /Size 83 /Root 81 0 R /Info 82 0 R /ID [<797ADCFB47F4B1B29962BD730F7A0D4F> <797ADCFB47F4B1B29962BD730F7A0D4F>] >> startxref 702176 %%EOF eztrace-1.1-7/extlib/gtg/extlib/otf/PaxHeaders.7332/configure.ac0000644000000000000000000000013212544237152021251 xustar0030 mtime=1435582058.523899952 30 atime=1508162191.375801671 30 ctime=1508162366.081763075 eztrace-1.1-7/extlib/gtg/extlib/otf/configure.ac0000644000175000017500000001331712544237152022445 0ustar00trahaytrahay00000000000000# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ(2.57) AC_INIT([OTF], [m4_normalize(esyscmd([config/otf_get_version.sh VERSION --full]))], [andreas.knuepfer@tu-dresden.de], [OTF]) AC_CONFIG_AUX_DIR(config) AC_CONFIG_MACRO_DIR(config/m4) AC_CANONICAL_SYSTEM AM_INIT_AUTOMAKE([foreign]) AC_CONFIG_HEADERS([config.h]) # If Automake supports silent rules, enable them. m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) # Check whether we are inside Open MPI package inside_openmpi="no" AC_ARG_WITH(openmpi-inside, [], [ AS_IF([test x"$withval" != "xno"], [ inside_openmpi="yes" CPPFLAGS="-DINSIDE_OPENMPI $CPPFLAGS" ]) ]) # Correct install paths AS_IF([test "$inside_openmpi" = "yes" -o "$includedir" = "\${prefix}/include"], [includedir="$includedir/open-trace-format"]) AS_IF([test "$inside_openmpi" = "yes" -o "$datarootdir" = "\${prefix}/share"], [datarootdir="$datarootdir/open-trace-format"]) AS_IF([test "$docdir" = "\${datarootdir}/doc/\${PACKAGE_TARNAME}"], [docdir="\${datarootdir}/doc"]) # Get version information of this distribution OTF_VERSION_MAJOR=m4_normalize(esyscmd([config/otf_get_version.sh VERSION --major])) OTF_VERSION_MINOR=m4_normalize(esyscmd([config/otf_get_version.sh VERSION --minor])) OTF_VERSION_SUB=m4_normalize(esyscmd([config/otf_get_version.sh VERSION --sub])) OTF_VERSION_STRING=m4_normalize(esyscmd([config/otf_get_version.sh VERSION --string])) OTF_VERSION_LIBRARY=m4_normalize(esyscmd([config/otf_get_version.sh VERSION --library])) AC_SUBST([OTF_VERSION_MAJOR]) AC_SUBST([OTF_VERSION_MINOR]) AC_SUBST([OTF_VERSION_SUB]) AC_SUBST([OTF_VERSION_STRING]) AC_SUBST([OTF_VERSION_LIBRARY]) # Checks for programs AC_PROG_CXX AC_PROG_CC AC_LANG([C]) AC_PROG_LIBTOOL AC_C_BIGENDIAN # Own stuff # Add -D_GNU_SOURCE to CPPFLAGS, if necessary case "$host_os" in *-gnu*) CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" ;; esac # Do we want to build and install binaries? AC_ARG_ENABLE(binaries, AC_HELP_STRING([--enable-binaries], [build and install binaries, default: enabled]), [enable_binaries="$enableval"], [enable_binaries="yes"]) AM_CONDITIONAL(AMBUILDBINARIES, test x"$enable_binaries" = "xyes") # Checks for MPI. CHECK_MPI if test x"$force_mpi" = "xyes" -a x"$mpi_error" = "xyes"; then exit 1; fi AM_CONDITIONAL(AMHAVEMPI, test x"$have_mpi" = xyes) # Checks for OpenMP. CHECK_OMP if test x"$force_omp" = "xyes" -a x"$omp_error" = "xyes"; then exit 1; fi AM_CONDITIONAL(AMHAVEOMP, test x"$have_omp" = xyes) # Checks for VTF3. CHECK_VTF3 if test x"$force_vtf3" = "xyes" -a x"$vtf3_error" = "xyes"; then exit 1; fi AM_CONDITIONAL(AMHAVEVTF3, test x"$have_vtf3" = xyes) # Checks for zlib compression. CHECK_ZLIB if test x"$force_zlib" = "xyes" -a x"$zlib_error" = "xyes"; then exit 1; fi AM_CONDITIONAL(AMHAVEZLIB, test x"$have_zlib" = xyes) # Checks for zoidfs support. CHECK_ZOIDFS if test x"$force_zoidfs" = "xyes" -a x"$zoidfs_error" = "xyes"; then exit 1; fi AM_CONDITIONAL(AMHAVEZOIDFS, test x"$have_zoidfs" = xyes) # Checks for math library. CHECK_MATH # Checks for swig and python-dev. CHECK_SWIG_PYTHON if test x"$force_swig_python" = "xyes" -a x"$swig_python_error" = "xyes"; then exit 1; fi AM_CONDITIONAL(AMHAVESWIGPYTHON, test x"$have_swig_python" = xyes) # Checks for pdflatex and PGFPLOTS needed for otfprofile to convert TeX output to PDF CHECK_PDFLATEX_PGFPLOTS WITH_DEBUG WITH_VERBOSE # Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS([ctype.h fcntl.h stddef.h stdlib.h string.h sys/param.h sys/select.h sys/time.h unistd.h]) AC_CHECK_HEADER([stdint.h], [have_stdint_h=1], [have_stdint_h=0]) AC_CHECK_HEADER([inttypes.h], [have_inttypes_h=1], [have_inttypes_h=0]) AC_SUBST([have_stdint_h]) AC_SUBST([have_inttypes_h]) # Checks for library functions. AC_CHECK_DECL([va_copy], [AC_DEFINE([HAVE_VA_COPY], [1], [Define to 1 if you have the `va_copy' function.])], [], [#include ]) AC_CHECK_DECL([__va_copy], [AC_DEFINE([HAVE_UNDERSCORE_VA_COPY], [1], [Define to 1 if you have the `__va_copy' function.])], [], [#include ]) AC_CHECK_FUNCS([asprintf snprintf vasprintf vsnprintf strdup gettimeofday]) AC_FUNC_FSEEKO #AC_FUNC_MALLOC #AC_FUNC_REALLOC #AC_FUNC_STAT # Checks for typedefs, structures, and compiler characteristics. # AC_C_CONST ### do not use this if you want to do C++ programs because it might define 'const' # to an empty string which produces a total mess later on!!! AC_CHECK_DECLS([O_NOATIME], [], [], [[#include ]]) AC_TYPE_SIZE_T # Checks for datatype sizes. AC_CHECK_SIZEOF(long, 8) sizeof_long=$ac_cv_sizeof_long AC_SUBST([sizeof_long]) # check for library with clock_gettime pre_clock_gettime_LIBS="$LIBS" CLOCK_GETTIME_LIB= AC_SEARCH_LIBS([clock_gettime], [rt], [test "x$ac_cv_search_clock_gettime" = "xnone required" || CLOCK_GETTIME_LIB="$ac_cv_search_clock_gettime"]) AM_CONDITIONAL([AMHAVECLOCKGETTIME], [test "x$ac_cv_search_clock_gettime" != "xno"]) AC_SUBST([CLOCK_GETTIME_LIB]) LIBS="$pre_clock_gettime_LIBS" AC_CONFIG_FILES([Makefile vendor/jenkins_hash/Makefile otflib/Makefile otflib/OTF_inttypes_unix.h otflib/OTF_Version.h otfauxlib/Makefile otflib_py/Makefile tools/Makefile tools/otfaux/Makefile tools/otfcompress/Makefile tools/otfconfig/Makefile tools/otfdump/Makefile tools/otfinfo/Makefile tools/otfmerge/Makefile tools/otfmerge/mpi/Makefile tools/otfprofile/Makefile tools/otfprofile/mpi/Makefile tools/otfshrink/Makefile tools/otf2vtf/Makefile tools/vtf2otf/Makefile tests/Makefile tests/hello/Makefile tests/generic_streams/Makefile tests/generic_streams-mpi/Makefile tests/progress/Makefile tests/read_from_buffer/Makefile docu/Makefile ]) ## workaround for stupid warning caused by newer autoconf versions AC_DEFUN([AC_DATAROOTDIR_CHECKED]) AC_OUTPUT eztrace-1.1-7/extlib/gtg/extlib/otf/PaxHeaders.7332/otflib_py0000644000000000000000000000013213171135476020700 xustar0030 mtime=1508162366.353786818 30 atime=1508162367.741908015 30 ctime=1508162366.353786818 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib_py/0000755000175000017500000000000013171135476022144 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/otf/otflib_py/PaxHeaders.7332/README0000644000000000000000000000013212544237152021632 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.934892429 30 ctime=1508162366.353786818 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib_py/README0000644000175000017500000000135312544237152023023 0ustar00trahaytrahay00000000000000otf python bindings -- The interface is exact the same as in C except: - all 'OTF_*_*Progress' functions return a list of 4 values, namely [old-return-value, minimum, current, maximum] and take only one argument, which is a pointer to a OTF_{Reader,RStream} object - the function 'OTF_KeyValueList_getByteArray' returns a list of 3 objects, where the third object is a list, that contains the byte array. The first object is the return-value and the second holds the length of the array. This functions expects two arguments (OTF_KeyValueList*, uint32_t) - all other 'OTF_KeyValueList_get*' functions return a list of 2 values, namely [return-value, value] and take only 2 arguments (OTF_KeyValueList*, uint32_t) eztrace-1.1-7/extlib/gtg/extlib/otf/otflib_py/PaxHeaders.7332/otf.i0000644000000000000000000000013212544237152021714 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.934892429 30 ctime=1508162366.361787518 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib_py/otf.i0000644000175000017500000010612612544237152023111 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /* * no structures will be included, so they are no accessable through python * * Time- and BytesProgress now have 4 return values. 1. real return value and * and min/cur/max - e.g. [ 1, 0, 100, 100000 ] * */ %module otf %{ #include "otf.h" #include "pyOTF_AuxiliaryFunctions.h" #include "pyOTF_Wrapper.h" %} /* *** conversion from C datatypes to python data types *** */ %apply unsigned char { uint8_t } %apply signed char { int8_t } %apply unsigned short { uint16_t } %apply signed short { int16_t } %apply unsigned int { uint32_t } %apply signed int { int32_t } %apply unsigned long long { uint64_t } %apply signed long long { int64_t } %apply unsigned long long *OUTPUT { uint64_t* minimum, uint64_t* current, uint64_t* maximum }; /* progress return values */ %apply char *OUTPUT { char* value }; %apply signed char *OUTPUT { int8_t* value }; %apply unsigned char *OUTPUT { uint8_t* value, uint8_t* len }; %apply signed short *OUTPUT { int16_t* value }; %apply unsigned short *OUTPUT { uint16_t* value }; %apply signed int *OUTPUT { int32_t* value }; %apply unsigned int *OUTPUT { uint32_t* value, uint32_t* key }; %apply signed long long *OUTPUT { int64_t* value }; %apply unsigned long long *OUTPUT { uint64_t* value }; %apply float *OUTPUT { float* value }; %apply double *OUTPUT { double* value }; /* *** other interfaces *** */ /* OTF_Definitions.h */ %include ../otflib/OTF_Definitions.h /* OTF_FileManager.h */ %ignore OTF_FileManager_guaranteeFile; /* the user shouldn't use this function */ %ignore OTF_FileManager_registerFile; /* the user shouldn't use this function */ %ignore OTF_FileManager_touchFile; /* the user shouldn't use this function */ %ignore OTF_FileManager_suspendFile; /* the user shouldn't use this function */ %include ../otflib/OTF_FileManager.h /* OTF_Filenames.h */ %include ../otflib/OTF_Filenames.h /* OTF_HandlerArray.h */ %ignore OTF_HandlerArray_getCopyHandler; %ignore struct_OTF_HandlerArray; %ignore OTF_HandlerArray_close; %ignore OTF_HandlerArray_setHandler; %ignore OTF_HandlerArray_setFirstHandlerArg; %ignore OTF_Handler_DefinitionComment; %ignore OTF_Handler_DefTimerResolution; %ignore OTF_Handler_DefProcess; %ignore OTF_Handler_DefProcessGroup; %ignore OTF_Handler_DefAttributeList; %ignore OTF_Handler_DefProcessOrGroupAttributes; %ignore OTF_Handler_DefFunction; %ignore OTF_Handler_DefFunctionGroup; %ignore OTF_Handler_DefCollectiveOperation; %ignore OTF_Handler_DefCounter; %ignore OTF_Handler_DefCounterGroup; %ignore OTF_Handler_DefScl; %ignore OTF_Handler_DefSclFile; %ignore OTF_Handler_DefCreator; %ignore OTF_Handler_DefUniqueId; %ignore OTF_Handler_DefVersion; %ignore OTF_Handler_DefFile; %ignore OTF_Handler_DefFileGroup; %ignore OTF_Handler_DefKeyValue; %ignore OTF_Handler_DefTimeRange; %ignore OTF_Handler_DefCounterAssignments; %ignore OTF_Handler_DefProcessSubstitutes; %ignore OTF_Handler_NoOp; %ignore OTF_Handler_Enter; %ignore OTF_Handler_Leave; %ignore OTF_Handler_SendMsg; %ignore OTF_Handler_RecvMsg; %ignore OTF_Handler_Counter; %ignore OTF_Handler_CollectiveOperation; %ignore OTF_Handler_BeginCollectiveOperation; %ignore OTF_Handler_EndCollectiveOperation; %ignore OTF_Handler_EventComment; %ignore OTF_Handler_BeginProcess; %ignore OTF_Handler_EndProcess; %ignore OTF_Handler_FileOperation; %ignore OTF_Handler_BeginFileOperation; %ignore OTF_Handler_EndFileOperation; %ignore OTF_Handler_RMAPut; %ignore OTF_Handler_RMAPutRemoteEnd; %ignore OTF_Handler_RMAGet; %ignore OTF_Handler_RMAEnd; %ignore OTF_Handler_SnapshotComment; %ignore OTF_Handler_EnterSnapshot; %ignore OTF_Handler_SendSnapshot; %ignore OTF_Handler_OpenFileSnapshot; %ignore OTF_Handler_BeginCollopSnapshot; %ignore OTF_Handler_BeginFileOpSnapshot; %ignore OTF_Handler_CollopCountSnapshot; %ignore OTF_Handler_CounterSnapshot; %ignore OTF_Handler_SummaryComment; %ignore OTF_Handler_FunctionSummary; %ignore OTF_Handler_FunctionGroupSummary; %ignore OTF_Handler_MessageSummary; %ignore OTF_Handler_CollopSummary; %ignore OTF_Handler_FileOperationSummary; %ignore OTF_Handler_FileGroupOperationSummary; %ignore OTF_Handler_UnknownRecord; %ignore OTF_Handler_DefMarker; %ignore OTF_Handler_Marker; %include ../otflib/OTF_HandlerArray.h /* OTF_inttypes.h */ %include ../otflib/OTF_inttypes.h /* OTF_MasterControl.h */ %ignore struct_OTF_MapEntry; %ignore struct_OTF_Pair; %ignore struct_OTF_MasterControl; %ignore OTF_MasterControl_appendList; /* replaced by wrapper */ %include ../otflib/OTF_MasterControl.h /* OTF_KeyValue.h */ %ignore OTF_KeyValueList_appendByteArray; %ignore OTF_KeyValueList_getByteArray; %include ../otflib/OTF_KeyValue.h /* OTF_Reader.h */ %include ../otflib/OTF_Reader.h /* OTF_RStream.h */ %ignore struct_OTF_RStream; %include ../otflib/OTF_RStream.h /* OTF_Writer.h */ %ignore OTF_Writer_writeOtfVersion; %ignore OTF_Writer_writeDefProcessGroupKV; %ignore OTF_Writer_writeDefProcessGroup; %ignore OTF_Writer_writeDefAttributeListKV; %ignore OTF_Writer_writeDefAttributeList; %ignore OTF_Writer_writeDefCounterAssignments; %ignore OTF_Writer_writeDefProcessSubstitutes; %include ../otflib/OTF_Writer.h /* OTF_WStream.h */ %ignore struct_OTF_WStream; %include ../otflib/OTF_WStream.h /* *** functions that had to be wrapped up *** */ %rename(OTF_COUNTER_VARTYPE_ISINTEGER) pyOTF_COUNTER_VARTYPE_ISINTEGER; %rename(OTF_COUNTER_VARTYPE_ISSIGNED) pyOTF_COUNTER_VARTYPE_ISSIGNED; %rename(OTF_COUNTER_VARTYPE_ISUNSIGNED) pyOTF_COUNTER_VARTYPE_ISUNSIGNED; %rename(OTF_MasterControl_appendList) pyOTF_MasterControl_appendList; %rename(OTF_HandlerArray_close) pyOTF_HandlerArray_close; %rename(OTF_HandlerArray_setHandler) pyOTF_HandlerArray_setHandler; %rename(OTF_HandlerArray_setFirstHandlerArg) pyOTF_HandlerArray_setFirstHandlerArg; %rename(OTF_KeyValueList_appendByteArray) pyOTF_KeyValueList_appendByteArray; %rename(OTF_KeyValueList_getByteArray) pyOTF_KeyValueList_getByteArray; %rename(OTF_Writer_writeDefProcessGroupKV) pyOTF_Writer_writeDefProcessGroupKV; %rename(OTF_Writer_writeDefProcessGroup) pyOTF_Writer_writeDefProcessGroup; %rename(OTF_Writer_writeDefAttributeListKV) pyOTF_Writer_writeDefAttributeListKV; %rename(OTF_Writer_writeDefAttributeList) pyOTF_Writer_writeDefAttributeList; %rename(OTF_Writer_writeDefCounterAssignments) pyOTF_Writer_writeDefCounterAssignments; %rename(OTF_Writer_writeDefProcessSubstitutes) pyOTF_Writer_writeDefProcessSubstitutes; %ignore pyOTF_FirstHandlerArgument; /*%ignore pyOTF_KeyValueList;*/ %ignore pyOTF_Handler_DefinitionComment; %ignore pyOTF_Handler_DefTimerResolution; %ignore pyOTF_Handler_DefProcess; %ignore pyOTF_Handler_DefProcessGroup; %ignore pyOTF_Handler_DefAttributeList; %ignore pyOTF_Handler_DefProcessOrGroupAttributes; %ignore pyOTF_Handler_DefFunction; %ignore pyOTF_Handler_DefFunctionGroup; %ignore pyOTF_Handler_DefCollectiveOperation; %ignore pyOTF_Handler_DefCounter; %ignore pyOTF_Handler_DefCounterGroup; %ignore pyOTF_Handler_DefScl; %ignore pyOTF_Handler_DefSclFile; %ignore pyOTF_Handler_DefCreator; %ignore pyOTF_Handler_DefUniqueId; %ignore pyOTF_Handler_DefVersion; %ignore pyOTF_Handler_DefFile; %ignore pyOTF_Handler_DefFileGroup; %ignore pyOTF_Handler_DefKeyValue; %ignore pyOTF_Handler_DefTimeRange; %ignore pyOTF_Handler_DefCounterAssignments; %ignore pyOTF_Handler_DefProcessSubstitutes; %ignore pyOTF_Handler_NoOp; %ignore pyOTF_Handler_Enter; %ignore pyOTF_Handler_Leave; %ignore pyOTF_Handler_SendMsg; %ignore pyOTF_Handler_RecvMsg; %ignore pyOTF_Handler_Counter; %ignore pyOTF_Handler_CollectiveOperation; %ignore pyOTF_Handler_BeginCollectiveOperation; %ignore pyOTF_Handler_EndCollectiveOperation; %ignore pyOTF_Handler_EventComment; %ignore pyOTF_Handler_BeginProcess; %ignore pyOTF_Handler_EndProcess; %ignore pyOTF_Handler_FileOperation; %ignore pyOTF_Handler_BeginFileOperation; %ignore pyOTF_Handler_EndFileOperation; %ignore pyOTF_Handler_RMAPut; %ignore pyOTF_Handler_RMAPutRemoteEnd; %ignore pyOTF_Handler_RMAGet; %ignore pyOTF_Handler_RMAEnd; %ignore pyOTF_Handler_SnapshotComment; %ignore pyOTF_Handler_EnterSnapshot; %ignore pyOTF_Handler_SendSnapshot; %ignore pyOTF_Handler_OpenFileSnapshot; %ignore pyOTF_Handler_BeginCollopSnapshot; %ignore pyOTF_Handler_BeginFileOpSnapshot; %ignore pyOTF_Handler_CollopCountSnapshot; %ignore pyOTF_Handler_CounterSnapshot; %ignore pyOTF_Handler_SummaryComment; %ignore pyOTF_Handler_FunctionSummary; %ignore pyOTF_Handler_FunctionGroupSummary; %ignore pyOTF_Handler_MessageSummary; %ignore pyOTF_Handler_CollopSummary; %ignore pyOTF_Handler_FileOperationSummary; %ignore pyOTF_Handler_FileGroupOperationSummary; %ignore pyOTF_Handler_UnknownRecord; %ignore pyOTF_Handler_DefMarker; %ignore pyOTF_Handler_Marker; %include pyOTF_Wrapper.h /* OTF_Copyhandler.h */ %pythoncode %{ def OTF_CopyHandler_DefinitionComment( writer , stream, comment, pylist): if OTF_Writer_writeDefinitionCommentKV( writer , stream, comment, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_DefTimerResolution( writer , stream, ticksPerSecond, pylist): if OTF_Writer_writeDefTimerResolutionKV( writer , stream, ticksPerSecond, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_DefProcess( writer , stream, process, name, parent, pylist): if OTF_Writer_writeDefProcessKV( writer , stream, process, name, parent, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_DefProcessGroup( writer , stream, procGroup, name, numberOfProcs, pyprocs, pylist): if OTF_Writer_writeDefProcessGroupKV( writer , stream, procGroup, name, numberOfProcs, pyprocs, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_DefAttributeList( writer , stream, attr_token, num, pyarray, pylist): if OTF_Writer_writeDefAttributeListKV( writer , stream, attr_token, num, pyarray, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_DefProcessOrGroupAttributes( writer , stream, proc_token, attr_token, pylist): if OTF_Writer_writeDefProcessOrGroupAttributesKV( writer , stream, proc_token, attr_token, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_DefFunction( writer , stream, func, name, funcGroup, source, pylist): if OTF_Writer_writeDefFunctionKV( writer , stream, func, name, funcGroup, source, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_DefFunctionGroup( writer , stream, funcGroup, name, pylist): if OTF_Writer_writeDefFunctionGroupKV( writer , stream, funcGroup, name, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_DefCollectiveOperation( writer , stream, collOp, name, type, pylist): if OTF_Writer_writeDefCollectiveOperationKV( writer , stream, collOp, name, type, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_DefCounter( writer , stream, counter, name, properties, counterGroup, unit, pylist): if OTF_Writer_writeDefCounterKV( writer , stream, counter, name, properties, counterGroup, unit, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_DefCounterGroup( writer , stream, counterGroup, name, pylist): if OTF_Writer_writeDefCounterGroupKV( writer , stream, counterGroup, name, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_DefScl( writer , stream, source, sourceFile, line, pylist): if OTF_Writer_writeDefSclKV( writer , stream, source, sourceFile, line, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_DefSclFile( writer , stream, sourceFile, name, pylist): if OTF_Writer_writeDefSclFileKV( writer , stream, sourceFile, name, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_DefCreator( writer , stream, creator, pylist): if OTF_Writer_writeDefCreatorKV( writer , stream, creator, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_DefUniqueId( writer , stream, uid, pylist): if OTF_Writer_writeDefUniqueId( writer , stream, uid, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_DefVersion( writer , stream, major, minor, sub, string, pylist): #version is writen implicitly return OTF_RETURN_OK def OTF_CopyHandler_DefFile( writer , stream, token, name, group, pylist): if OTF_Writer_writeDefFileKV( writer , stream, token, name, group, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_DefFileGroup( writer , stream, token, name, pylist): if OTF_Writer_writeDefFileGroupKV( writer , stream, token, name, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_DefKeyValue( writer , stream, key, type, name, description, pylist): if OTF_Writer_writeDefKeyValueKV( writer , stream, key, type, name, description, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_DefTimeRange( writer , stream, minTime, maxTime, pylist): if OTF_Writer_writeDefTimeRange( writer , stream, minTime, maxTime, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_DefCounterAssignments( writer , stream, counter, number_of_members, pyprocs_or_groups, pylist): if OTF_Writer_writeDefCounterAssignments( writer , stream, counter, number_of_members, pyprocs_or_groups, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_DefProcessSubstitutes( writer , stream, representative, numberOfProcs, pyprocs, pylist): if OTF_Writer_writeDefProcessSubstitutes( writer , stream, representative, numberOfProcs, pyprocs, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_NoOp( writer , time, process, pylist): if OTF_Writer_writeNoOpKV( writer , time, process, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_Enter( writer , time, function, process, source, pylist): if OTF_Writer_writeEnterKV( writer , time, function, process, source, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_Leave( writer , time, function, process, source, pylist): if OTF_Writer_writeLeaveKV( writer , time, function, process, source, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_SendMsg( writer , time, sender, receiver, group, type, length, source, pylist): if OTF_Writer_writeSendMsgKV( writer , time, sender, receiver, group, type, length, source, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_RecvMsg( writer , time, recvProc, sendProc, group, type, length, source, pylist): if OTF_Writer_writeRecvMsgKV( writer , time, recvProc, sendProc, group, type, length, source, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_Counter( writer , time, process, counter, value, pylist): if OTF_Writer_writeCounterKV( writer , time, process, counter, value, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_CollectiveOperation( writer , time, process, collective, procGroup, rootProc, sent, received, duration, source, pylist): if OTF_Writer_writeCollectiveOperationKV( writer , time, process, collective, procGroup, rootProc, sent, received, duration, source, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_BeginCollectiveOperation( writer , time, process, collOp, matchingId, procGroup, rootProc, sent, received, scltoken, pylist): if OTF_Writer_writeBeginCollectiveOperationKV( writer , time, process, collOp, matchingId, procGroup, rootProc, sent, received, scltoken, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_EndCollectiveOperation( writer , time, process, matchingId, pylist): if OTF_Writer_writeEndCollectiveOperationKV( writer , time, process, matchingId, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_EventComment( writer , time, process, comment, pylist): if OTF_Writer_writeEventCommentKV( writer , time, process, comment, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_BeginProcess( writer , time, process, pylist): if OTF_Writer_writeBeginProcessKV( writer , time, process, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_EndProcess( writer , time, process, pylist): if OTF_Writer_writeEndProcessKV( writer , time, process, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_FileOperation( writer , time, fileid, process, handleid, operation, bytes, duration, source, pylist): if OTF_Writer_writeFileOperationKV( writer , time, fileid, process, handleid, operation, bytes, duration, source, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_BeginFileOperation( writer , time, process, matchingId, scltoken, pylist): if OTF_Writer_writeBeginFileOperationKV( writer , time, process, matchingId, scltoken, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_EndFileOperation( writer , time, process, fileid, matchingId, handleId, operation, bytes, scltoken, pylist): if OTF_Writer_writeEndFileOperationKV( writer , time, process, fileid, matchingId, handleId, operation, bytes, scltoken, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_RMAPut( writer , time, process, origin, target, communicator, tag, bytes, source, pylist): if OTF_Writer_writeRMAPutKV( writer , time, process, origin, target, communicator, tag, bytes, source, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_RMAPutRemoteEnd( writer , time, process, origin, target, communicator, tag, bytes, source, pylist): if OTF_Writer_writeRMAPutRemoteEndKV( writer , time, process, origin, target, communicator, tag, bytes, source, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_RMAGet( writer , time, process, origin, target, communicator, tag, bytes, source, pylist): if OTF_Writer_writeRMAGetKV( writer , time, process, origin, target, communicator, tag, bytes, source, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_RMAEnd( writer , time, process, remote, communicator, tag, source, pylist): if OTF_Writer_writeRMAEndKV( writer , time, process, remote, communicator, tag, source, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_SnapshotComment( writer , time, process, comment, pylist): if OTF_Writer_writeSnapshotCommentKV( writer , time, process, comment, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_EnterSnapshot( writer , time, originaltime, function, process, source, pylist): if OTF_Writer_writeEnterSnapshotKV( writer , time, originaltime, function, process, source, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_SendSnapshot( writer , time, originaltime, sender, receiver, procGroup, tag, length, source, pylist): if OTF_Writer_writeSendSnapshotKV( writer , time, originaltime, sender, receiver, procGroup, tag, length, source, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_OpenFileSnapshot( writer , time, originaltime, fileid, process, handleid, source, pylist): if OTF_Writer_writeOpenFileSnapshotKV( writer , time, originaltime, fileid, process, handleid, source, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_BeginCollopSnapshot( writer , time, originaltime, process, collOp, matchingId, procGroup, rootProc, sent, received, scltoken, pylist): if OTF_Writer_writeBeginCollopSnapshotKV( writer , time, originaltime, process, collOp, matchingId, procGroup, rootProc, sent, received, scltoken, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_BeginFileOpSnapshot( writer , time, originaltime, process, matchingId, scltoken, pylist): if OTF_Writer_writeBeginFileOpSnapshotKV( writer , time, originaltime, process, matchingId, scltoken, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_CollopCountSnapshot( writer , time, process, communicator, count, pylist): if OTF_Writer_writeCollopCountSnapshot( writer , time, process, communicator, count, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_CounterSnapshot( writer , time, originaltime, process, counter, value, pylist): if OTF_Writer_writeCounterSnapshot( writer , time, originaltime, process, counter, value, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_SummaryComment( writer , time, process, comment, pylist): if OTF_Writer_writeSummaryCommentKV( writer , time, process, comment, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_FunctionSummary( writer , time, function, process, invocations, exclTime, inclTime, pylist): if OTF_Writer_writeFunctionSummaryKV( writer , time, function, process, invocations, exclTime, inclTime, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_FunctionGroupSummary( writer , time, funcGroup, process, invocations, exclTime, inclTime, pylist): if OTF_Writer_writeFunctionGroupSummaryKV( writer , time, funcGroup, process, invocations, exclTime, inclTime, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_MessageSummary( writer , time, process, peer, comm, type, sentNumber, receivedNumber, sentBytes, receivedBytes, pylist): if OTF_Writer_writeMessageSummaryKV( writer , time, process, peer, comm, type, sentNumber, receivedNumber, sentBytes, receivedBytes, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_CollopSummary( writer , time, process, comm, collective, sentNumber, receivedNumber, sentBytes, receivedBytes, pylist): if OTF_Writer_writeCollopSummaryKV( writer , time, process, comm, collective, sentNumber, receivedNumber, sentBytes, receivedBytes, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_FileOperationSummary( writer , time, fileid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, pylist): if OTF_Writer_writeFileOperationSummaryKV( writer , time, fileid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_FileGroupOperationSummary( writer , time, groupid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, pylist): if OTF_Writer_writeFileGroupOperationSummaryKV( writer , time, groupid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_UnknownRecord( writer , time, process, record): if OTF_Writer_writeUnknownRecord( writer , time, process, record ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_DefMarker( writer , stream, token, name, type, pylist): if OTF_Writer_writeDefMarkerKV( writer , stream, token, name, type, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_CopyHandler_Marker( writer , time, process, token, text, pylist): if OTF_Writer_writeMarkerKV( writer , time, process, token, text, pylist ) == 0 : return OTF_RETURN_ABORT else : return OTF_RETURN_OK def OTF_HandlerArray_getCopyHandler( handlers, writer ): OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefinitionComment, OTF_DEFINITIONCOMMENT_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFINITIONCOMMENT_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefTimerResolution, OTF_DEFTIMERRESOLUTION_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFTIMERRESOLUTION_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefProcess, OTF_DEFPROCESS_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFPROCESS_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefProcessGroup, OTF_DEFPROCESSGROUP_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFPROCESSGROUP_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefAttributeList, OTF_DEFATTRLIST_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFATTRLIST_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefProcessOrGroupAttributes, OTF_DEFPROCESSORGROUPATTR_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFPROCESSORGROUPATTR_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefFunction, OTF_DEFFUNCTION_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFFUNCTION_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefFunctionGroup, OTF_DEFFUNCTIONGROUP_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFFUNCTIONGROUP_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefCollectiveOperation, OTF_DEFCOLLOP_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFCOLLOP_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefCounter, OTF_DEFCOUNTER_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFCOUNTER_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefCounterGroup, OTF_DEFCOUNTERGROUP_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFCOUNTERGROUP_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefScl, OTF_DEFSCL_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFSCL_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefSclFile, OTF_DEFSCLFILE_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFSCLFILE_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefCreator, OTF_DEFCREATOR_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFCREATOR_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefUniqueId, OTF_DEFUNIQUEID_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFUNIQUEID_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefVersion, OTF_DEFVERSION_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFVERSION_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefFile, OTF_DEFFILE_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFFILE_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefFileGroup, OTF_DEFFILEGROUP_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFFILEGROUP_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefKeyValue, OTF_DEFKEYVALUE_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFKEYVALUE_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefTimeRange, OTF_DEFTIMERANGE_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFTIMERANGE_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefCounterAssignments, OTF_DEFCOUNTERASSIGNMENTS_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFCOUNTERASSIGNMENTS_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefProcessSubstitutes, OTF_DEFPROCESSSUBSTITUTES_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFPROCESSSUBSTITUTES_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_NoOp, OTF_NOOP_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_NOOP_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_Enter, OTF_ENTER_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_ENTER_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_Leave, OTF_LEAVE_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_LEAVE_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_SendMsg, OTF_SEND_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_SEND_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_RecvMsg, OTF_RECEIVE_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_RECEIVE_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_Counter, OTF_COUNTER_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_COUNTER_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_CollectiveOperation, OTF_COLLOP_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_COLLOP_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_BeginCollectiveOperation, OTF_BEGINCOLLOP_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_BEGINCOLLOP_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_EndCollectiveOperation, OTF_ENDCOLLOP_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_ENDCOLLOP_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_EventComment, OTF_EVENTCOMMENT_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_EVENTCOMMENT_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_BeginProcess, OTF_BEGINPROCESS_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_BEGINPROCESS_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_EndProcess, OTF_ENDPROCESS_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_ENDPROCESS_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_FileOperation, OTF_FILEOPERATION_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_FILEOPERATION_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_BeginFileOperation, OTF_BEGINFILEOP_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_BEGINFILEOP_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_EndFileOperation, OTF_ENDFILEOP_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_ENDFILEOP_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_RMAPut, OTF_RMAPUT_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_RMAPUT_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_RMAPutRemoteEnd, OTF_RMAPUTRE_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_RMAPUTRE_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_RMAGet, OTF_RMAGET_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_RMAGET_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_RMAEnd, OTF_RMAEND_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_RMAEND_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_SnapshotComment, OTF_SNAPSHOTCOMMENT_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_SNAPSHOTCOMMENT_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_EnterSnapshot, OTF_ENTERSNAPSHOT_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_ENTERSNAPSHOT_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_SendSnapshot, OTF_SENDSNAPSHOT_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_SENDSNAPSHOT_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_OpenFileSnapshot, OTF_OPENFILESNAPSHOT_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_OPENFILESNAPSHOT_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_BeginCollopSnapshot, OTF_BEGINCOLLOPSNAPSHOT_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_BEGINCOLLOPSNAPSHOT_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_BeginFileOpSnapshot, OTF_BEGINFILEOPSNAPSHOT_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_BEGINFILEOPSNAPSHOT_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_CollopCountSnapshot, OTF_COLLOPCOUNTSNAPSHOT_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_COLLOPCOUNTSNAPSHOT_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_CounterSnapshot, OTF_COUNTERSNAPSHOT_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_COUNTERSNAPSHOT_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_SummaryComment, OTF_SUMMARYCOMMENT_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_SUMMARYCOMMENT_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_FunctionSummary, OTF_FUNCTIONSUMMARY_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_FUNCTIONSUMMARY_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_FunctionGroupSummary, OTF_FUNCTIONGROUPSUMMARY_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_FUNCTIONGROUPSUMMARY_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_MessageSummary, OTF_MESSAGESUMMARY_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_MESSAGESUMMARY_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_CollopSummary, OTF_COLLOPSUMMARY_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_COLLOPSUMMARY_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_FileOperationSummary, OTF_FILEOPERATIONSUMMARY_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_FILEOPERATIONSUMMARY_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_FileGroupOperationSummary, OTF_FILEGROUPOPERATIONSUMMARY_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_FILEGROUPOPERATIONSUMMARY_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_UnknownRecord, OTF_UNKNOWN_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_UNKNOWN_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_DefMarker, OTF_DEFMARKER_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFMARKER_RECORD ) OTF_HandlerArray_setHandler( handlers, OTF_CopyHandler_Marker, OTF_MARKER_RECORD ) OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_MARKER_RECORD ) return 1 %} eztrace-1.1-7/extlib/gtg/extlib/otf/otflib_py/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212544237152023006 xustar0030 mtime=1435582058.539899952 30 atime=1508162197.676236398 30 ctime=1508162366.297781931 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib_py/Makefile.am0000644000175000017500000000116312544237152024176 0ustar00trahaytrahay00000000000000EXTRA_DIST = otf.i AM_CPPFLAGS = \ $(ZLIB_INCLUDE_LINE) \ -I$(top_builddir)/otflib -I$(top_srcdir)/otflib noinst_HEADERS = \ pyOTF_AuxiliaryFunctions.h \ pyOTF_Wrapper.h pkgpython_PYTHON = __init__.py nodist_pkgpython_PYTHON = otf.py pkgpyexec_LTLIBRARIES = _otf.la nodist__otf_la_SOURCES = otf_wrap.c _otf_la_CPPFLAGS = $(AM_CPPFLAGS) $(SWIG_PYTHON_CFLAGS) _otf_la_LDFLAGS = -module _otf_la_LIBADD = $(top_builddir)/otflib/libopen-trace-format.la _otf_la_DEPENDENCIES = $(_otf_la_LDADD) otf_wrap.c : otf.i $(SWIG) $(SWIG_PYTHON_OPTS) $(INCLUDES) -o $@ $< CLEANFILES= \ otf_wrap.c \ otf.py eztrace-1.1-7/extlib/gtg/extlib/otf/otflib_py/PaxHeaders.7332/pyOTF_AuxiliaryFunctions.h0000644000000000000000000000013212544237152026044 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.934892429 30 ctime=1508162366.341785772 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib_py/pyOTF_AuxiliaryFunctions.h0000644000175000017500000000457512544237152027246 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifndef PYOTF_AUXILIARYFUNCTIONS_H #define PYOTF_AUXILIARYFUNCTIONS_H uint32_t* createInt32ArrayFromSequence( PyObject* list ); uint8_t* createInt8ArrayFromSequence( PyObject* list ); PyObject* createSequenceFromInt8Array( uint8_t* array, uint8_t len ); /* conversion from python sequence to uint32_t array CREATES AN ARRAY - you have to free it yourself */ uint32_t* createInt32ArrayFromSequence( PyObject* list ) { int i; int dim; uint32_t* ret; if (!PySequence_Check( list )) { #ifdef OTF_VERBOSE PyErr_SetString(PyExc_TypeError,"Expecting a sequence"); #endif /* OTF_VERBOSE */ return NULL; } dim= PyObject_Length( list ); ret= (uint32_t*) malloc( sizeof(uint32_t) * dim ); for ( i =0; i < dim; ++i ) { PyObject *o = PySequence_GetItem( list ,i ); if (!PyInt_Check(o)) { Py_XDECREF(o); #ifdef OTF_VERBOSE PyErr_SetString(PyExc_ValueError,"Expecting a sequence of integers"); #endif /* OTF_VERBOSE */ free( ret ); return NULL; } ret[i] = PyInt_AsLong(o); Py_DECREF(o); } return ret; } /* conversion from python sequence to uint8_t array CREATES AN ARRAY - you have to free it yourself */ uint8_t* createInt8ArrayFromSequence( PyObject* list ) { int i; int dim; uint8_t* ret; if (!PySequence_Check( list )) { #ifdef OTF_VERBOSE PyErr_SetString(PyExc_TypeError,"Expecting a sequence"); #endif /* OTF_VERBOSE */ return NULL; } dim= PyObject_Length( list ); ret= (uint8_t*) malloc( sizeof(uint8_t) * dim ); for ( i =0; i < dim; ++i ) { PyObject *o = PySequence_GetItem( list ,i ); if (!PyInt_Check(o)) { Py_XDECREF(o); #ifdef OTF_VERBOSE PyErr_SetString(PyExc_ValueError,"Expecting a sequence of integers"); #endif /* OTF_VERBOSE */ free( ret ); return NULL; } ret[i] = PyInt_AsLong(o); Py_DECREF(o); } return ret; } /* conversion from uint8_t array to python list, creates a python list and returns it */ PyObject* createSequenceFromInt8Array( uint8_t* array, uint8_t len ) { uint8_t i; PyObject *pylist = PyList_New(len); if( ! PyList_Check(pylist) ) { printf("Creating PyList not possible\n"); } for(i = 0; i < len; i++) { PyList_SetItem( pylist, i, PyInt_FromLong(array[i]) ); } return pylist; } #endif /* PYOTF_AUXILIARYFUNCTIONS_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib_py/PaxHeaders.7332/Makefile.in0000644000000000000000000000013113171135225023011 xustar0030 mtime=1508162197.704238346 30 atime=1508162279.714465344 29 ctime=1508162366.34978647 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib_py/Makefile.in0000644000175000017500000006715413171135225024216 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = otflib_py ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/m4/libtool.m4 \ $(top_srcdir)/config/m4/ltoptions.m4 \ $(top_srcdir)/config/m4/ltsugar.m4 \ $(top_srcdir)/config/m4/ltversion.m4 \ $(top_srcdir)/config/m4/lt~obsolete.m4 \ $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/config/m4/acinclude.debug.m4 \ $(top_srcdir)/config/m4/acinclude.math.m4 \ $(top_srcdir)/config/m4/acinclude.mpi.m4 \ $(top_srcdir)/config/m4/acinclude.omp.m4 \ $(top_srcdir)/config/m4/acinclude.pdflatex_pgfplots.m4 \ $(top_srcdir)/config/m4/acinclude.swig_python.m4 \ $(top_srcdir)/config/m4/acinclude.vtf3.m4 \ $(top_srcdir)/config/m4/acinclude.verbose.m4 \ $(top_srcdir)/config/m4/acinclude.zlib.m4 \ $(top_srcdir)/config/m4/acinclude.zoidfs.m4 \ $(top_srcdir)/config/m4/acarchive/ax_mpi.m4 \ $(top_srcdir)/config/m4/acarchive/ax_openmp.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(pkgpython_PYTHON) \ $(noinst_HEADERS) $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkgpyexecdir)" \ "$(DESTDIR)$(pkgpythondir)" "$(DESTDIR)$(pkgpythondir)" LTLIBRARIES = $(pkgpyexec_LTLIBRARIES) nodist__otf_la_OBJECTS = _otf_la-otf_wrap.lo _otf_la_OBJECTS = $(nodist__otf_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = _otf_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(_otf_la_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(nodist__otf_la_SOURCES) DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile) am__pep3147_tweak = \ sed -e 's|\.py$$||' -e 's|[^/]*$$|__pycache__/&.*.py|' py_compile = $(top_srcdir)/config/py-compile HEADERS = $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp \ $(top_srcdir)/config/py-compile README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BMI_INCLUDE_DIR = @BMI_INCLUDE_DIR@ BMI_LIB_DIR = @BMI_LIB_DIR@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLOCK_GETTIME_LIB = @CLOCK_GETTIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHLIB = @MATHLIB@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICFLAGS = @MPICFLAGS@ MPICXX = @MPICXX@ MPICXXFLAGS = @MPICXXFLAGS@ MPILIBS = @MPILIBS@ MPI_INCLUDE_DIR = @MPI_INCLUDE_DIR@ MPI_INCLUDE_LINE = @MPI_INCLUDE_LINE@ MPI_LIB_DIR = @MPI_LIB_DIR@ MPI_LIB_LINE = @MPI_LIB_LINE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENMP_CXXFLAGS = @OPENMP_CXXFLAGS@ OTF_VERSION_LIBRARY = @OTF_VERSION_LIBRARY@ OTF_VERSION_MAJOR = @OTF_VERSION_MAJOR@ OTF_VERSION_MINOR = @OTF_VERSION_MINOR@ OTF_VERSION_STRING = @OTF_VERSION_STRING@ OTF_VERSION_SUB = @OTF_VERSION_SUB@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFTEX = @PDFTEX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWIG = @SWIG@ SWIG_PYTHON_CFLAGS = @SWIG_PYTHON_CFLAGS@ SWIG_PYTHON_OPTS = @SWIG_PYTHON_OPTS@ VERSION = @VERSION@ VTF3_INCLUDE_DIR = @VTF3_INCLUDE_DIR@ VTF3_INCLUDE_LINE = @VTF3_INCLUDE_LINE@ VTF3_LIB_DIR = @VTF3_LIB_DIR@ VTF3_LIB_LINE = @VTF3_LIB_LINE@ ZLIB_INCLUDE_DIR = @ZLIB_INCLUDE_DIR@ ZLIB_INCLUDE_LINE = @ZLIB_INCLUDE_LINE@ ZLIB_LIB_DIR = @ZLIB_LIB_DIR@ ZLIB_LIB_LINE = @ZLIB_LIB_LINE@ ZOIDFS_INCLUDE_DIR = @ZOIDFS_INCLUDE_DIR@ ZOIDFS_INCLUDE_LINE = @ZOIDFS_INCLUDE_LINE@ ZOIDFS_LIB_DIR = @ZOIDFS_LIB_DIR@ ZOIDFS_LIB_LINE = @ZOIDFS_LIB_LINE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_inttypes_h = @have_inttypes_h@ have_stdint_h = @have_stdint_h@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ python_config = @python_config@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sizeof_long = @sizeof_long@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = otf.i AM_CPPFLAGS = \ $(ZLIB_INCLUDE_LINE) \ -I$(top_builddir)/otflib -I$(top_srcdir)/otflib noinst_HEADERS = \ pyOTF_AuxiliaryFunctions.h \ pyOTF_Wrapper.h pkgpython_PYTHON = __init__.py nodist_pkgpython_PYTHON = otf.py pkgpyexec_LTLIBRARIES = _otf.la nodist__otf_la_SOURCES = otf_wrap.c _otf_la_CPPFLAGS = $(AM_CPPFLAGS) $(SWIG_PYTHON_CFLAGS) _otf_la_LDFLAGS = -module _otf_la_LIBADD = $(top_builddir)/otflib/libopen-trace-format.la _otf_la_DEPENDENCIES = $(_otf_la_LDADD) CLEANFILES = \ otf_wrap.c \ otf.py all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign otflib_py/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign otflib_py/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgpyexecLTLIBRARIES: $(pkgpyexec_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkgpyexec_LTLIBRARIES)'; test -n "$(pkgpyexecdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgpyexecdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgpyexecdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkgpyexecdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkgpyexecdir)"; \ } uninstall-pkgpyexecLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkgpyexec_LTLIBRARIES)'; test -n "$(pkgpyexecdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkgpyexecdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkgpyexecdir)/$$f"; \ done clean-pkgpyexecLTLIBRARIES: -test -z "$(pkgpyexec_LTLIBRARIES)" || rm -f $(pkgpyexec_LTLIBRARIES) @list='$(pkgpyexec_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } _otf.la: $(_otf_la_OBJECTS) $(_otf_la_DEPENDENCIES) $(EXTRA__otf_la_DEPENDENCIES) $(AM_V_CCLD)$(_otf_la_LINK) -rpath $(pkgpyexecdir) $(_otf_la_OBJECTS) $(_otf_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_otf_la-otf_wrap.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< _otf_la-otf_wrap.lo: otf_wrap.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_otf_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT _otf_la-otf_wrap.lo -MD -MP -MF $(DEPDIR)/_otf_la-otf_wrap.Tpo -c -o _otf_la-otf_wrap.lo `test -f 'otf_wrap.c' || echo '$(srcdir)/'`otf_wrap.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_otf_la-otf_wrap.Tpo $(DEPDIR)/_otf_la-otf_wrap.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='otf_wrap.c' object='_otf_la-otf_wrap.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_otf_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o _otf_la-otf_wrap.lo `test -f 'otf_wrap.c' || echo '$(srcdir)/'`otf_wrap.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-nodist_pkgpythonPYTHON: $(nodist_pkgpython_PYTHON) @$(NORMAL_INSTALL) @list='$(nodist_pkgpython_PYTHON)'; dlist=; list2=; test -n "$(pkgpythondir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgpythondir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgpythondir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \ if test -f $$b$$p; then \ $(am__strip_dir) \ dlist="$$dlist $$f"; \ list2="$$list2 $$b$$p"; \ else :; fi; \ done; \ for file in $$list2; do echo $$file; done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgpythondir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgpythondir)" || exit $$?; \ done || exit $$?; \ if test -n "$$dlist"; then \ $(am__py_compile) --destdir "$(DESTDIR)" \ --basedir "$(pkgpythondir)" $$dlist; \ else :; fi uninstall-nodist_pkgpythonPYTHON: @$(NORMAL_UNINSTALL) @list='$(nodist_pkgpython_PYTHON)'; test -n "$(pkgpythondir)" || list=; \ py_files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$py_files" || exit 0; \ dir='$(DESTDIR)$(pkgpythondir)'; \ pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \ pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \ py_files_pep3147=`echo "$$py_files" | $(am__pep3147_tweak)`; \ echo "$$py_files_pep3147";\ pyc_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|c|'`; \ pyo_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|o|'`; \ st=0; \ for files in \ "$$py_files" \ "$$pyc_files" \ "$$pyo_files" \ "$$pyc_files_pep3147" \ "$$pyo_files_pep3147" \ ; do \ $(am__uninstall_files_from_dir) || st=$$?; \ done; \ exit $$st install-pkgpythonPYTHON: $(pkgpython_PYTHON) @$(NORMAL_INSTALL) @list='$(pkgpython_PYTHON)'; dlist=; list2=; test -n "$(pkgpythondir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgpythondir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgpythondir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \ if test -f $$b$$p; then \ $(am__strip_dir) \ dlist="$$dlist $$f"; \ list2="$$list2 $$b$$p"; \ else :; fi; \ done; \ for file in $$list2; do echo $$file; done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgpythondir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgpythondir)" || exit $$?; \ done || exit $$?; \ if test -n "$$dlist"; then \ $(am__py_compile) --destdir "$(DESTDIR)" \ --basedir "$(pkgpythondir)" $$dlist; \ else :; fi uninstall-pkgpythonPYTHON: @$(NORMAL_UNINSTALL) @list='$(pkgpython_PYTHON)'; test -n "$(pkgpythondir)" || list=; \ py_files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$py_files" || exit 0; \ dir='$(DESTDIR)$(pkgpythondir)'; \ pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \ pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \ py_files_pep3147=`echo "$$py_files" | $(am__pep3147_tweak)`; \ echo "$$py_files_pep3147";\ pyc_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|c|'`; \ pyo_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|o|'`; \ st=0; \ for files in \ "$$py_files" \ "$$pyc_files" \ "$$pyo_files" \ "$$pyc_files_pep3147" \ "$$pyo_files_pep3147" \ ; do \ $(am__uninstall_files_from_dir) || st=$$?; \ done; \ exit $$st ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(pkgpyexecdir)" "$(DESTDIR)$(pkgpythondir)" "$(DESTDIR)$(pkgpythondir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgpyexecLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-nodist_pkgpythonPYTHON \ install-pkgpythonPYTHON install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgpyexecLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-nodist_pkgpythonPYTHON \ uninstall-pkgpyexecLTLIBRARIES uninstall-pkgpythonPYTHON .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgpyexecLTLIBRARIES cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-nodist_pkgpythonPYTHON \ install-pdf install-pdf-am install-pkgpyexecLTLIBRARIES \ install-pkgpythonPYTHON install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am \ uninstall-nodist_pkgpythonPYTHON \ uninstall-pkgpyexecLTLIBRARIES uninstall-pkgpythonPYTHON .PRECIOUS: Makefile otf_wrap.c : otf.i $(SWIG) $(SWIG_PYTHON_OPTS) $(INCLUDES) -o $@ $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/gtg/extlib/otf/otflib_py/PaxHeaders.7332/pyOTF_Wrapper.h0000644000000000000000000000013112544237152023623 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.934892429 29 ctime=1508162366.34978647 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib_py/pyOTF_Wrapper.h0000644000175000017500000023565612544237152025034 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifndef PYOTF_WRAPPER_H #define PYOTF_WRAPPER_H /* first handler arg replacement. Containing the Python-function pointer and the fha specified by the user */ typedef struct { PyObject* func; PyObject* realfha; } pyOTF_FirstHandlerArgument; /* *** PROTOTYPES *********************************************************** */ /* ************************************************************************** */ int pyOTF_COUNTER_VARTYPE_ISINTEGER( uint64_t x ); int pyOTF_COUNTER_VARTYPE_ISSIGNED( uint64_t x ); int pyOTF_COUNTER_VARTYPE_ISUNSIGNED( uint64_t x ); int pyOTF_MasterControl_appendList( OTF_MasterControl* mc, uint32_t argument, uint32_t l, PyObject* values ); void pyOTF_HandlerArray_close( OTF_HandlerArray* handlers ); int pyOTF_HandlerArray_setHandler( OTF_HandlerArray* handlers, PyObject* function, uint32_t recordtype ); int pyOTF_HandlerArray_setFirstHandlerArg( OTF_HandlerArray* handlers, PyObject* fha, uint32_t recordtype ); /* functions concerning OTF_KeyValueList */ uint8_t pyOTF_KeyValueList_appendByteArray( OTF_KeyValueList* kvlist, uint32_t key, PyObject* values, uint32_t len); PyObject* pyOTF_KeyValueList_getByteArray( OTF_KeyValueList* kvlist, uint32_t key); /* *** writer declarations ***************************************************** */ int pyOTF_Writer_writeDefProcessGroupKV( OTF_Writer* writer, uint32_t stream, uint32_t procGroup, const char* name, uint32_t numberOfProcs, PyObject* procs, OTF_KeyValueList* list); int pyOTF_Writer_writeDefProcessGroup( OTF_Writer* writer, uint32_t stream, uint32_t procGroup, const char* name, uint32_t numberOfProcs, PyObject* procs); int pyOTF_Writer_writeDefAttributeListKV( OTF_Writer* writer, uint32_t stream, uint32_t attr_token, uint32_t num, PyObject* array, OTF_KeyValueList* list); int pyOTF_Writer_writeDefAttributeList( OTF_Writer* writer, uint32_t stream, uint32_t attr_token, uint32_t num, PyObject* array); int pyOTF_Writer_writeDefCounterAssignments( OTF_Writer* writer, uint32_t stream, uint32_t counter, uint32_t number_of_members, PyObject* procs_or_groups, OTF_KeyValueList* list); int pyOTF_Writer_writeDefProcessSubstitutes( OTF_Writer* writer, uint32_t stream, uint32_t representative, uint32_t numberOfProcs, PyObject* procs, OTF_KeyValueList* list); /* *** handler declarations **************************************************** */ int pyOTF_Handler_DefinitionComment( void* userData, uint32_t stream, const char* comment, OTF_KeyValueList *list ); int pyOTF_Handler_DefTimerResolution( void* userData, uint32_t stream, uint64_t ticksPerSecond, OTF_KeyValueList *list ); int pyOTF_Handler_DefProcess( void* userData, uint32_t stream, uint32_t process, const char* name, uint32_t parent, OTF_KeyValueList *list ); int pyOTF_Handler_DefProcessGroup( void* userData, uint32_t stream, uint32_t procGroup, const char* name, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList *list ); int pyOTF_Handler_DefAttributeList( void* userData, uint32_t stream, uint32_t attr_token, uint32_t num, OTF_ATTR_TYPE* array, OTF_KeyValueList *list ); int pyOTF_Handler_DefProcessOrGroupAttributes( void* userData, uint32_t stream, uint32_t proc_token, uint32_t attr_token, OTF_KeyValueList *list ); int pyOTF_Handler_DefFunction( void* userData, uint32_t stream, uint32_t func, const char* name, uint32_t funcGroup, uint32_t source, OTF_KeyValueList *list ); int pyOTF_Handler_DefFunctionGroup( void* userData, uint32_t stream, uint32_t funcGroup, const char* name, OTF_KeyValueList *list ); int pyOTF_Handler_DefCollectiveOperation( void* userData, uint32_t stream, uint32_t collOp, const char* name, uint32_t type, OTF_KeyValueList *list ); int pyOTF_Handler_DefCounter( void* userData, uint32_t stream, uint32_t counter, const char* name, uint32_t properties, uint32_t counterGroup, const char* unit, OTF_KeyValueList *list ); int pyOTF_Handler_DefCounterGroup( void* userData, uint32_t stream, uint32_t counterGroup, const char* name, OTF_KeyValueList *list ); int pyOTF_Handler_DefScl( void* userData, uint32_t stream, uint32_t source, uint32_t sourceFile, uint32_t line, OTF_KeyValueList *list ); int pyOTF_Handler_DefSclFile( void* userData, uint32_t stream, uint32_t sourceFile, const char* name, OTF_KeyValueList *list ); int pyOTF_Handler_DefCreator( void* userData, uint32_t stream, const char* creator, OTF_KeyValueList *list ); int pyOTF_Handler_DefUniqueId( void* userData, uint32_t stream, uint64_t uid, OTF_KeyValueList *list ); int pyOTF_Handler_DefVersion( void* userData, uint32_t stream, uint8_t major, uint8_t minor, uint8_t sub, const char* string, OTF_KeyValueList *list ); int pyOTF_Handler_DefFile( void* userData, uint32_t stream, uint32_t token, const char *name, uint32_t group, OTF_KeyValueList *list ); int pyOTF_Handler_DefFileGroup( void* userData, uint32_t stream, uint32_t token, const char *name, OTF_KeyValueList *list ); int pyOTF_Handler_DefKeyValue( void* userData, uint32_t stream, uint32_t key, OTF_Type type, const char *name, const char *description, OTF_KeyValueList *list ); int pyOTF_Handler_DefTimeRange( void* userData, uint32_t stream, uint64_t minTime, uint64_t maxTime, OTF_KeyValueList* list ); int pyOTF_Handler_DefCounterAssignments( void* userData, uint32_t stream, uint32_t counter, uint32_t number_of_members, const uint32_t* procs_or_groups, OTF_KeyValueList* list ); int pyOTF_Handler_DefProcessSubstitutes( void* userData, uint32_t stream, uint32_t representative, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList* list ); int pyOTF_Handler_NoOp( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList *list ); int pyOTF_Handler_Enter( void* userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList *list ); int pyOTF_Handler_Leave( void* userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList *list ); int pyOTF_Handler_SendMsg( void* userData, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t group, uint32_t type, uint32_t length, uint32_t source, OTF_KeyValueList *list ); int pyOTF_Handler_RecvMsg( void* userData, uint64_t time, uint32_t recvProc, uint32_t sendProc, uint32_t group, uint32_t type, uint32_t length, uint32_t source, OTF_KeyValueList *list ); int pyOTF_Handler_Counter( void* userData, uint64_t time, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList *list ); int pyOTF_Handler_CollectiveOperation( void* userData, uint64_t time, uint32_t process, uint32_t collective, uint32_t procGroup, uint32_t rootProc, uint32_t sent, uint32_t received, uint64_t duration, uint32_t source, OTF_KeyValueList *list ); int pyOTF_Handler_BeginCollectiveOperation( void* userData, uint64_t time, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList *list ); int pyOTF_Handler_EndCollectiveOperation( void* userData, uint64_t time, uint32_t process, uint64_t matchingId, OTF_KeyValueList *list ); int pyOTF_Handler_EventComment( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList *list ); int pyOTF_Handler_BeginProcess( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList *list ); int pyOTF_Handler_EndProcess( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList *list ); int pyOTF_Handler_FileOperation( void* userData, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source, OTF_KeyValueList *list ); int pyOTF_Handler_BeginFileOperation( void* userData, uint64_t time, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList *list ); int pyOTF_Handler_EndFileOperation( void* userData, uint64_t time, uint32_t process, uint32_t fileid, uint64_t matchingId, uint64_t handleId, uint32_t operation, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList *list ); int pyOTF_Handler_RMAPut( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t source, OTF_KeyValueList *list ); int pyOTF_Handler_RMAPutRemoteEnd( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t source, OTF_KeyValueList *list ); int pyOTF_Handler_RMAGet( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t source, OTF_KeyValueList *list ); int pyOTF_Handler_RMAEnd( void* userData, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t source, OTF_KeyValueList *list ); int pyOTF_Handler_SnapshotComment( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList *list ); int pyOTF_Handler_EnterSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList *list ); int pyOTF_Handler_SendSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source, OTF_KeyValueList *list ); int pyOTF_Handler_OpenFileSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t source, OTF_KeyValueList *list ); int pyOTF_Handler_BeginCollopSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList *list ); int pyOTF_Handler_BeginFileOpSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList *list ); int pyOTF_Handler_CollopCountSnapshot( void* userData, uint64_t time, uint32_t process, uint32_t communicator, uint64_t count, OTF_KeyValueList *list ); int pyOTF_Handler_CounterSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList *list ); int pyOTF_Handler_SummaryComment( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList *list ); int pyOTF_Handler_FunctionSummary( void* userData, uint64_t time, uint32_t function, uint32_t process, uint64_t invocations, uint64_t exclTime, uint64_t inclTime, OTF_KeyValueList *list ); int pyOTF_Handler_FunctionGroupSummary( void* userData, uint64_t time, uint32_t funcGroup, uint32_t process, uint64_t invocations, uint64_t exclTime, uint64_t inclTime, OTF_KeyValueList *list ); int pyOTF_Handler_MessageSummary( void* userData, uint64_t time, uint32_t process, uint32_t peer, uint32_t comm, uint32_t type, uint64_t sentNumber, uint64_t receivedNumber, uint64_t sentBytes, uint64_t receivedBytes, OTF_KeyValueList *list ); int pyOTF_Handler_CollopSummary( void *userData, uint64_t time, uint32_t process, uint32_t comm, uint32_t collective, uint64_t sentNumber, uint64_t receivedNumber, uint64_t sentBytes, uint64_t receivedBytes, OTF_KeyValueList *list ); int pyOTF_Handler_FileOperationSummary( void* userData, uint64_t time, uint32_t fileid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList *list ); int pyOTF_Handler_FileGroupOperationSummary( void* userData, uint64_t time, uint32_t groupid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList *list ); int pyOTF_Handler_UnknownRecord( void *userData, uint64_t time, uint32_t process, const char *record ); int pyOTF_Handler_DefMarker( void *userData, uint32_t stream, uint32_t token, const char* name, uint32_t type, OTF_KeyValueList *list ); int pyOTF_Handler_Marker( void *userData, uint64_t time, uint32_t process, uint32_t token, const char* text, OTF_KeyValueList *list ); /* *** DEFINITIONS ********************************************************** */ /* ************************************************************************** */ int pyOTF_COUNTER_VARTYPE_ISINTEGER( uint64_t x ) { return OTF_COUNTER_VARTYPE_ISINTEGER(x); } int pyOTF_COUNTER_VARTYPE_ISSIGNED( uint64_t x ) { return OTF_COUNTER_VARTYPE_ISSIGNED(x); } int pyOTF_COUNTER_VARTYPE_ISUNSIGNED( uint64_t x ) { return OTF_COUNTER_VARTYPE_ISUNSIGNED(x); } /* *** MASTERCONTROL ******************************************************** */ /* ************************************************************************** */ int pyOTF_MasterControl_appendList( OTF_MasterControl* mc, uint32_t argument, uint32_t l, PyObject* values ) { int ret; uint32_t* vals= createInt32ArrayFromSequence( values ); ret= OTF_MasterControl_appendList( mc, argument, l, vals ); free( vals ); return ret; } /* *** OTF_KEYVALUE ********************************************************* */ /* ************************************************************************** */ uint8_t pyOTF_KeyValueList_appendByteArray( OTF_KeyValueList* kvlist, uint32_t key, PyObject* values, uint32_t len) { uint8_t *array; uint8_t ret; /* convert a python sequence into a C array */ array = createInt8ArrayFromSequence( values ); ret = OTF_KeyValueList_appendByteArray( kvlist, key, array, len ); free(array); return ret; } /* this function returns a python sequence of (int, int, list) */ PyObject* pyOTF_KeyValueList_getByteArray( OTF_KeyValueList* kvlist, uint32_t key) { uint32_t len; uint8_t ret; uint8_t array[OTF_KEYVALUE_MAX_ARRAY_LEN]; PyObject* pyarray; ret = OTF_KeyValueList_getByteArray( kvlist, key, array, &len); pyarray = PyInt_FromLong(ret); if( ret != 0 ) { len = 0; } /* make a squence by appending an object */ pyarray = SWIG_Python_AppendOutput(pyarray, PyInt_FromLong(len) ); /* expand the sequence by appending an list object, that is created from a C array */ pyarray = SWIG_Python_AppendOutput(pyarray, createSequenceFromInt8Array( array, len) ); return pyarray; } /* *** WRITER *************************************************************** */ /* ************************************************************************** */ int pyOTF_Writer_writeDefProcessGroupKV( OTF_Writer* writer, uint32_t stream, uint32_t procGroup, const char* name, uint32_t numberOfProcs, PyObject* procs, OTF_KeyValueList* list) { int ret; uint32_t* pyprocs= createInt32ArrayFromSequence( procs ); ret= OTF_Writer_writeDefProcessGroupKV( writer, stream, procGroup, name, numberOfProcs, pyprocs, list); free( pyprocs ); return ret; } int pyOTF_Writer_writeDefProcessGroup( OTF_Writer* writer, uint32_t stream, uint32_t procGroup, const char* name, uint32_t numberOfProcs, PyObject* procs) { int ret; uint32_t* pyprocs= createInt32ArrayFromSequence( procs ); ret= OTF_Writer_writeDefProcessGroup( writer, stream, procGroup, name, numberOfProcs, pyprocs); free( pyprocs ); return ret; } int pyOTF_Writer_writeDefAttributeListKV( OTF_Writer* writer, uint32_t stream, uint32_t attr_token, uint32_t num, PyObject* array, OTF_KeyValueList* list) { int ret; OTF_ATTR_TYPE* pyarray= createInt32ArrayFromSequence( array ); ret= OTF_Writer_writeDefAttributeListKV( writer, stream, attr_token, num, pyarray, list); free( pyarray ); return ret; } int pyOTF_Writer_writeDefAttributeList( OTF_Writer* writer, uint32_t stream, uint32_t attr_token, uint32_t num, PyObject* array) { int ret; OTF_ATTR_TYPE* pyarray= createInt32ArrayFromSequence( array ); ret= OTF_Writer_writeDefAttributeList( writer, stream, attr_token, num, pyarray); free( pyarray ); return ret; } int pyOTF_Writer_writeDefCounterAssignments( OTF_Writer* writer, uint32_t stream, uint32_t counter, uint32_t number_of_members, PyObject* procs_or_groups, OTF_KeyValueList* list) { int ret; uint32_t* pyprocs_or_groups= createInt32ArrayFromSequence( procs_or_groups ); ret= OTF_Writer_writeDefCounterAssignments( writer, stream, counter, number_of_members, pyprocs_or_groups, list); free( pyprocs_or_groups ); return ret; } int pyOTF_Writer_writeDefProcessSubstitutes( OTF_Writer* writer, uint32_t stream, uint32_t representative, uint32_t numberOfProcs, PyObject* procs, OTF_KeyValueList* list) { int ret; uint32_t* pyprocs= createInt32ArrayFromSequence( procs ); ret= OTF_Writer_writeDefProcessSubstitutes( writer, stream, representative, numberOfProcs, pyprocs, list); free( pyprocs ); return ret; } /* *** HANDLER ARRAY ******************************************************** */ /* ************************************************************************** */ /* *** handler **************************************************** */ /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! H= unsigned int K= unsigned long long (if long long exists (its #ifdefd in python sources) ) (python 2.5) When using l for long int and i for int programs crashed (SEGFAULT) inside Py_BuildValue() in pyOTF_Handler_EventComment() H and K are not documented, thus its not "save" to use them, because future and past versions of python may differ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */ int pyOTF_Handler_DefinitionComment( void* userData, uint32_t stream, const char* comment, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHsO", fha->realfha, stream, comment, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefTimerResolution( void* userData, uint32_t stream, uint64_t ticksPerSecond, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHKO", fha->realfha, stream, ticksPerSecond, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefProcess( void* userData, uint32_t stream, uint32_t process, const char* name, uint32_t parent, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHHsHO", fha->realfha, stream, process, name, parent, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefProcessGroup( void* userData, uint32_t stream, uint32_t procGroup, const char* name, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pyprocs; uint32_t i; PyObject* pylist; pyprocs= PyList_New( numberOfProcs ); for( i= 0; i < numberOfProcs; ++i ) { PyList_SetItem( pyprocs, i, PyInt_FromLong((long) procs[i]) ); } /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHHsHOO", fha->realfha, stream, procGroup, name, numberOfProcs, pyprocs, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefAttributeList( void* userData, uint32_t stream, uint32_t attr_token, uint32_t num, OTF_ATTR_TYPE* array, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pyarray; uint32_t i; PyObject* pylist; pyarray= PyList_New( num ); for( i= 0; i < num; ++i ) { PyList_SetItem( pyarray, i, PyInt_FromLong((long) array[i]) ); } /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHHHOO", fha->realfha, stream, attr_token, num, pyarray, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefProcessOrGroupAttributes( void* userData, uint32_t stream, uint32_t proc_token, uint32_t attr_token, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHHHO", fha->realfha, stream, proc_token, attr_token, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefFunction( void* userData, uint32_t stream, uint32_t func, const char* name, uint32_t funcGroup, uint32_t source, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHHsHHO", fha->realfha, stream, func, name, funcGroup, source, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefFunctionGroup( void* userData, uint32_t stream, uint32_t funcGroup, const char* name, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHHsO", fha->realfha, stream, funcGroup, name, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefCollectiveOperation( void* userData, uint32_t stream, uint32_t collOp, const char* name, uint32_t type, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHHsHO", fha->realfha, stream, collOp, name, type, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefCounter( void* userData, uint32_t stream, uint32_t counter, const char* name, uint32_t properties, uint32_t counterGroup, const char* unit, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHHsHHsO", fha->realfha, stream, counter, name, properties, counterGroup, unit, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefCounterGroup( void* userData, uint32_t stream, uint32_t counterGroup, const char* name, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHHsO", fha->realfha, stream, counterGroup, name, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefScl( void* userData, uint32_t stream, uint32_t source, uint32_t sourceFile, uint32_t line, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHHHHO", fha->realfha, stream, source, sourceFile, line, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefSclFile( void* userData, uint32_t stream, uint32_t sourceFile, const char* name, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHHsO", fha->realfha, stream, sourceFile, name, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefCreator( void* userData, uint32_t stream, const char* creator, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHsO", fha->realfha, stream, creator, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefUniqueId( void* userData, uint32_t stream, uint64_t uid, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHKO", fha->realfha, stream, uid, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefVersion( void* userData, uint32_t stream, uint8_t major, uint8_t minor, uint8_t sub, const char* string, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHHHHsO", fha->realfha, stream, major, minor, sub, string, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefFile( void* userData, uint32_t stream, uint32_t token, const char *name, uint32_t group, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHHsHO", fha->realfha, stream, token, name, group, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefFileGroup( void* userData, uint32_t stream, uint32_t token, const char *name, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHHsO", fha->realfha, stream, token, name, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefKeyValue( void* userData, uint32_t stream, uint32_t key, OTF_Type type, const char *name, const char *description, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHHHssO", fha->realfha, stream, key, type, name, description, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefTimeRange( void* userData, uint32_t stream, uint64_t minTime, uint64_t maxTime, OTF_KeyValueList* list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHKKO", fha->realfha, stream, minTime, maxTime, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefCounterAssignments( void* userData, uint32_t stream, uint32_t counter, uint32_t number_of_members, const uint32_t* procs_or_groups, OTF_KeyValueList* list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pyprocs_or_groups; uint32_t i; PyObject* pylist; pyprocs_or_groups= PyList_New( number_of_members ); for( i= 0; i < number_of_members; ++i ) { PyList_SetItem( pyprocs_or_groups, i, PyInt_FromLong((long) procs_or_groups[i]) ); } /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHHHOO", fha->realfha, stream, counter, number_of_members, pyprocs_or_groups, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefProcessSubstitutes( void* userData, uint32_t stream, uint32_t representative, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList* list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pyprocs; uint32_t i; PyObject* pylist; pyprocs= PyList_New( numberOfProcs ); for( i= 0; i < numberOfProcs; ++i ) { PyList_SetItem( pyprocs, i, PyInt_FromLong((long) procs[i]) ); } /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHHHOO", fha->realfha, stream, representative, numberOfProcs, pyprocs, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_NoOp( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHO", fha->realfha, time, process, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_Enter( void* userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHHHO", fha->realfha, time, function, process, source, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_Leave( void* userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHHHO", fha->realfha, time, function, process, source, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_SendMsg( void* userData, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t group, uint32_t type, uint32_t length, uint32_t source, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHHHHHHO", fha->realfha, time, sender, receiver, group, type, length, source, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_RecvMsg( void* userData, uint64_t time, uint32_t recvProc, uint32_t sendProc, uint32_t group, uint32_t type, uint32_t length, uint32_t source, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHHHHHHO", fha->realfha, time, recvProc, sendProc, group, type, length, source, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_Counter( void* userData, uint64_t time, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHHKO", fha->realfha, time, process, counter, value, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_CollectiveOperation( void* userData, uint64_t time, uint32_t process, uint32_t collective, uint32_t procGroup, uint32_t rootProc, uint32_t sent, uint32_t received, uint64_t duration, uint32_t source, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHHHHHHKHO", fha->realfha, time, process, collective, procGroup, rootProc, sent, received, duration, source, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_BeginCollectiveOperation( void* userData, uint64_t time, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHHKHHKKHO", fha->realfha, time, process, collOp, matchingId, procGroup, rootProc, sent, received, scltoken, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_EndCollectiveOperation( void* userData, uint64_t time, uint32_t process, uint64_t matchingId, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHKO", fha->realfha, time, process, matchingId, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_EventComment( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHsO", fha->realfha, time, process, comment, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_BeginProcess( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHO", fha->realfha, time, process, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_EndProcess( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHO", fha->realfha, time, process, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_FileOperation( void* userData, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHHKHKKHO", fha->realfha, time, fileid, process, handleid, operation, bytes, duration, source, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_BeginFileOperation( void* userData, uint64_t time, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHKHO", fha->realfha, time, process, matchingId, scltoken, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_EndFileOperation( void* userData, uint64_t time, uint32_t process, uint32_t fileid, uint64_t matchingId, uint64_t handleId, uint32_t operation, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHHKKHKHO", fha->realfha, time, process, fileid, matchingId, handleId, operation, bytes, scltoken, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_RMAPut( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t source, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHHHHHKHO", fha->realfha, time, process, origin, target, communicator, tag, bytes, source, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_RMAPutRemoteEnd( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t source, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHHHHHKHO", fha->realfha, time, process, origin, target, communicator, tag, bytes, source, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_RMAGet( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t source, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHHHHHKHO", fha->realfha, time, process, origin, target, communicator, tag, bytes, source, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_RMAEnd( void* userData, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t source, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHHHHHO", fha->realfha, time, process, remote, communicator, tag, source, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_SnapshotComment( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHsO", fha->realfha, time, process, comment, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_EnterSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKKHHHO", fha->realfha, time, originaltime, function, process, source, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_SendSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKKHHHHHHO", fha->realfha, time, originaltime, sender, receiver, procGroup, tag, length, source, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_OpenFileSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t source, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKKHHKHO", fha->realfha, time, originaltime, fileid, process, handleid, source, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_BeginCollopSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKKHHKHHKKHO", fha->realfha, time, originaltime, process, collOp, matchingId, procGroup, rootProc, sent, received, scltoken, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_BeginFileOpSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKKHKHO", fha->realfha, time, originaltime, process, matchingId, scltoken, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_CollopCountSnapshot( void* userData, uint64_t time, uint32_t process, uint32_t communicator, uint64_t count, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHHKO", fha->realfha, time, process, communicator, count, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_CounterSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKKHHKO", fha->realfha, time, originaltime, process, counter, value, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_SummaryComment( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHsO", fha->realfha, time, process, comment, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_FunctionSummary( void* userData, uint64_t time, uint32_t function, uint32_t process, uint64_t invocations, uint64_t exclTime, uint64_t inclTime, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHHKKKO", fha->realfha, time, function, process, invocations, exclTime, inclTime, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_FunctionGroupSummary( void* userData, uint64_t time, uint32_t funcGroup, uint32_t process, uint64_t invocations, uint64_t exclTime, uint64_t inclTime, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHHKKKO", fha->realfha, time, funcGroup, process, invocations, exclTime, inclTime, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_MessageSummary( void* userData, uint64_t time, uint32_t process, uint32_t peer, uint32_t comm, uint32_t type, uint64_t sentNumber, uint64_t receivedNumber, uint64_t sentBytes, uint64_t receivedBytes, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHHHHKKKKO", fha->realfha, time, process, peer, comm, type, sentNumber, receivedNumber, sentBytes, receivedBytes, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_CollopSummary( void *userData, uint64_t time, uint32_t process, uint32_t comm, uint32_t collective, uint64_t sentNumber, uint64_t receivedNumber, uint64_t sentBytes, uint64_t receivedBytes, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHHHKKKKO", fha->realfha, time, process, comm, collective, sentNumber, receivedNumber, sentBytes, receivedBytes, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_FileOperationSummary( void* userData, uint64_t time, uint32_t fileid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHHKKKKKKKO", fha->realfha, time, fileid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_FileGroupOperationSummary( void* userData, uint64_t time, uint32_t groupid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHHKKKKKKKO", fha->realfha, time, groupid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_UnknownRecord( void *userData, uint64_t time, uint32_t process, const char *record ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; arglist= Py_BuildValue("OKHs", fha->realfha, time, process, record ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_DefMarker( void *userData, uint32_t stream, uint32_t token, const char* name, uint32_t type, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OHHsHO", fha->realfha, stream, token, name, type, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } int pyOTF_Handler_Marker( void *userData, uint64_t time, uint32_t process, uint32_t token, const char* text, OTF_KeyValueList *list ) { pyOTF_FirstHandlerArgument* fha= (pyOTF_FirstHandlerArgument*) userData; PyObject *result; PyObject* arglist; int ret; PyObject* pylist; /** creates a new python object of type "OTF_KeyValueList" from a C pointer */ pylist = SWIG_NewPointerObj(SWIG_as_voidptr(list), SWIGTYPE_p_OTF_KeyValueList_struct, 0 ); arglist= Py_BuildValue("OKHHsO", fha->realfha, time, process, token, text, pylist ); result= PyEval_CallObject(fha->func, arglist); Py_DECREF(pylist); Py_DECREF(arglist); ret= (int) PyInt_AsLong( result ); if( NULL == PyErr_Occurred() ){ return ret; } else { PyErr_Print(); return OTF_RETURN_ABORT; } } /* *** other HandlerArray functions ***************************************** */ void pyOTF_HandlerArray_close( OTF_HandlerArray* handlers ) { uint32_t i; for( i= 0; i < OTF_NRECORDS; ++i ) { /* delete old fhb, because we allocated it in "pyOTF_HandlerArray_setHandler()" */ if( NULL != handlers->firsthandlerarg[i] ) { Py_XDECREF( ((pyOTF_FirstHandlerArgument*)handlers->firsthandlerarg[i])->func ); Py_XDECREF( ((pyOTF_FirstHandlerArgument*)handlers->firsthandlerarg[i])->realfha ); free( handlers->firsthandlerarg[i] ); handlers->firsthandlerarg[i]= NULL; } } OTF_HandlerArray_close( handlers ); } /* returns OTF_RETURN_ABORT or OTF_RETURN_OK */ int pyOTF_HandlerArray_setHandler( OTF_HandlerArray* handlers, PyObject* function, uint32_t recordtype ) { pyOTF_FirstHandlerArgument* fhb; /* assertion stuff */ if ( recordtype > OTF_NRECORDS ) { #ifdef OTF_VERBOSE PyErr_SetString(PyExc_TypeError,"Unexpected record type"); #endif /* OTF_VERBOSE */ return OTF_RETURN_ABORT; } else if ( NULL == function || 0 == PyCallable_Check(function) ) { #ifdef OTF_VERBOSE PyErr_SetString(PyExc_TypeError,"Expecting a function object"); #endif /* OTF_VERBOSE */ return OTF_RETURN_ABORT; } /* if no artificial fha has been set */ if ( NULL == handlers->firsthandlerarg[recordtype] ) { /* add a new one for this record type */ fhb= malloc( sizeof( pyOTF_FirstHandlerArgument ) ); if( NULL == fhb ) { #ifdef OTF_VERBOSE PyErr_SetString(PyExc_TypeError,"No Memory left"); #endif /* OTF_VERBOSE */ return OTF_RETURN_ABORT; } Py_INCREF(Py_None); Py_INCREF(Py_None); fhb->func= Py_None; fhb->realfha= Py_None; OTF_HandlerArray_setFirstHandlerArg( handlers, fhb, recordtype ); } /* decrease reference counter of the older callback */ Py_XDECREF( ((pyOTF_FirstHandlerArgument*)handlers->firsthandlerarg[recordtype])->func ); /* increase the reference count of the function object */ Py_XINCREF(function); /* assign the new callback */ ((pyOTF_FirstHandlerArgument*)handlers->firsthandlerarg[recordtype])->func= function; switch( recordtype ) { case OTF_DEFINITIONCOMMENT_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefinitionComment, recordtype ); break; case OTF_DEFTIMERRESOLUTION_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefTimerResolution, recordtype ); break; case OTF_DEFPROCESS_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefProcess, recordtype ); break; case OTF_DEFPROCESSGROUP_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefProcessGroup, recordtype ); break; case OTF_DEFATTRLIST_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefAttributeList, recordtype ); break; case OTF_DEFPROCESSORGROUPATTR_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefProcessOrGroupAttributes, recordtype ); break; case OTF_DEFFUNCTION_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefFunction, recordtype ); break; case OTF_DEFFUNCTIONGROUP_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefFunctionGroup, recordtype ); break; case OTF_DEFCOLLOP_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefCollectiveOperation, recordtype ); break; case OTF_DEFCOUNTER_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefCounter, recordtype ); break; case OTF_DEFCOUNTERGROUP_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefCounterGroup, recordtype ); break; case OTF_DEFSCL_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefScl, recordtype ); break; case OTF_DEFSCLFILE_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefSclFile, recordtype ); break; case OTF_DEFCREATOR_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefCreator, recordtype ); break; case OTF_DEFUNIQUEID_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefUniqueId, recordtype ); break; case OTF_DEFVERSION_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefVersion, recordtype ); break; case OTF_DEFFILE_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefFile, recordtype ); break; case OTF_DEFFILEGROUP_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefFileGroup, recordtype ); break; case OTF_DEFKEYVALUE_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefKeyValue, recordtype ); break; case OTF_DEFTIMERANGE_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefTimeRange, recordtype ); break; case OTF_DEFCOUNTERASSIGNMENTS_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefCounterAssignments, recordtype ); break; case OTF_DEFPROCESSSUBSTITUTES_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefProcessSubstitutes, recordtype ); break; case OTF_NOOP_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_NoOp, recordtype ); break; case OTF_ENTER_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_Enter, recordtype ); break; case OTF_LEAVE_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_Leave, recordtype ); break; case OTF_SEND_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_SendMsg, recordtype ); break; case OTF_RECEIVE_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_RecvMsg, recordtype ); break; case OTF_COUNTER_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_Counter, recordtype ); break; case OTF_COLLOP_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_CollectiveOperation, recordtype ); break; case OTF_BEGINCOLLOP_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_BeginCollectiveOperation, recordtype ); break; case OTF_ENDCOLLOP_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_EndCollectiveOperation, recordtype ); break; case OTF_EVENTCOMMENT_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_EventComment, recordtype ); break; case OTF_BEGINPROCESS_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_BeginProcess, recordtype ); break; case OTF_ENDPROCESS_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_EndProcess, recordtype ); break; case OTF_FILEOPERATION_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_FileOperation, recordtype ); break; case OTF_BEGINFILEOP_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_BeginFileOperation, recordtype ); break; case OTF_ENDFILEOP_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_EndFileOperation, recordtype ); break; case OTF_RMAPUT_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_RMAPut, recordtype ); break; case OTF_RMAPUTRE_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_RMAPutRemoteEnd, recordtype ); break; case OTF_RMAGET_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_RMAGet, recordtype ); break; case OTF_RMAEND_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_RMAEnd, recordtype ); break; case OTF_SNAPSHOTCOMMENT_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_SnapshotComment, recordtype ); break; case OTF_ENTERSNAPSHOT_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_EnterSnapshot, recordtype ); break; case OTF_SENDSNAPSHOT_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_SendSnapshot, recordtype ); break; case OTF_OPENFILESNAPSHOT_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_OpenFileSnapshot, recordtype ); break; case OTF_BEGINCOLLOPSNAPSHOT_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_BeginCollopSnapshot, recordtype ); break; case OTF_BEGINFILEOPSNAPSHOT_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_BeginFileOpSnapshot, recordtype ); break; case OTF_COLLOPCOUNTSNAPSHOT_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_CollopCountSnapshot, recordtype ); break; case OTF_COUNTERSNAPSHOT_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_CounterSnapshot, recordtype ); break; case OTF_SUMMARYCOMMENT_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_SummaryComment, recordtype ); break; case OTF_FUNCTIONSUMMARY_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_FunctionSummary, recordtype ); break; case OTF_FUNCTIONGROUPSUMMARY_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_FunctionGroupSummary, recordtype ); break; case OTF_MESSAGESUMMARY_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_MessageSummary, recordtype ); break; case OTF_COLLOPSUMMARY_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_CollopSummary, recordtype ); break; case OTF_FILEOPERATIONSUMMARY_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_FileOperationSummary, recordtype ); break; case OTF_FILEGROUPOPERATIONSUMMARY_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_FileGroupOperationSummary, recordtype ); break; case OTF_UNKNOWN_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_UnknownRecord, recordtype ); break; case OTF_DEFMARKER_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_DefMarker, recordtype ); break; case OTF_MARKER_RECORD : OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) pyOTF_Handler_Marker, recordtype ); break; } return OTF_RETURN_OK; } int pyOTF_HandlerArray_setFirstHandlerArg( OTF_HandlerArray* handlers, PyObject* fha, uint32_t recordtype ) { pyOTF_FirstHandlerArgument* fhb; /* assertion stuff */ if ( recordtype > OTF_NRECORDS ) { #ifdef OTF_VERBOSE PyErr_SetString(PyExc_TypeError,"Unexpected record type"); #endif /* OTF_VERBOSE */ return OTF_RETURN_ABORT; } /* if no fha or handler was set before for this record type */ if ( NULL == handlers->firsthandlerarg[recordtype] ) { /* create an artificial first handler arg */ fhb= malloc( sizeof( pyOTF_FirstHandlerArgument ) ); if( NULL == fhb ) { #ifdef OTF_VERBOSE PyErr_SetString(PyExc_TypeError,"No Memory left"); #endif /* OTF_VERBOSE */ return OTF_RETURN_ABORT; } Py_INCREF(Py_None); Py_INCREF(Py_None); fhb->func= Py_None; fhb->realfha= Py_None; OTF_HandlerArray_setFirstHandlerArg( handlers, fhb, recordtype ); } /* decrease reference counter of the older fha */ Py_XDECREF( ((pyOTF_FirstHandlerArgument*)handlers->firsthandlerarg[recordtype])->realfha ); /* increase reference count of fha */ Py_XINCREF(fha); /* add the python first handler arg */ ((pyOTF_FirstHandlerArgument*)handlers->firsthandlerarg[recordtype])->realfha= fha; return OTF_RETURN_OK; } #endif /* PYOTF_WRAPPER_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib_py/PaxHeaders.7332/__init__.py0000644000000000000000000000013212544237152023063 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.934892429 30 ctime=1508162366.329784723 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib_py/__init__.py0000644000175000017500000000002212544237152024244 0ustar00trahaytrahay00000000000000from otf import * eztrace-1.1-7/extlib/gtg/extlib/otf/PaxHeaders.7332/tests0000644000000000000000000000013213171135477020054 xustar0030 mtime=1508162367.061848623 30 atime=1508162367.741908015 30 ctime=1508162367.061848623 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/0000755000175000017500000000000013171135477021320 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/otf/tests/PaxHeaders.7332/progress0000644000000000000000000000013213171135477021720 xustar0030 mtime=1508162367.089851069 30 atime=1508162367.741908015 30 ctime=1508162367.089851069 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/progress/0000755000175000017500000000000013171135477023164 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/otf/tests/progress/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212544237152024025 xustar0030 mtime=1435582058.539899952 30 atime=1508162197.812245861 30 ctime=1508162367.085850719 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/progress/Makefile.am0000644000175000017500000000060612544237152025216 0ustar00trahaytrahay00000000000000check_PROGRAMS = otf_progress otf_progress_SOURCES = progress.c otf_progress_DEPENDENCIES = $(top_builddir)/otflib/libopen-trace-format.la otf_progress_LDADD = $(top_builddir)/otflib/libopen-trace-format.la otf_progress_CPPFLAGS = $(AM_CPPFLAGS) \ -I$(top_builddir)/otflib \ -I$(top_srcdir)/otflib clean-local: rm -f *.otf *.def *.events *.marker *.otf.z *.def.z *.events.z *.marker.z eztrace-1.1-7/extlib/gtg/extlib/otf/tests/progress/PaxHeaders.7332/progress.c0000644000000000000000000000013212544237152024001 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.934892429 30 ctime=1508162367.089851069 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/progress/progress.c0000644000175000017500000001256312544237152025177 0ustar00trahaytrahay00000000000000/* This test reads a trace file and shows the following after each reading step: - total read records - read duration - total read duration - byte progress - time progress Usage: progress_otf [#filemanagers] [#recordlimit] Default options: #filemanagers = 32 #recordlimit = 10000 */ #include #include #include #include #include #include #include "otf.h" #define SHOW_HELPTEXT { \ int l = 0; while( Helptext[l] ) { printf( "%s", Helptext[l++] ); } } static const char* Helptext[] = { " \n", " otfprogress - shwo reading progress of OTF for testing purposes. \n", " \n", " otfprogress [Options] \n", " \n", " options: \n", " -h, --help show this help message \n", " -V show OTF version \n", " -f set max number of filehandles available \n", " -rb set buffersize of the reader \n", " -rl record limit per read call \n", " \n", " \n", NULL }; static uint64_t get_time( void ); int main( int argc, char** argv ) { OTF_FileManager* manager; OTF_Reader* reader; OTF_HandlerArray* handlers; char* input_file = ""; uint32_t nfiles = 32; uint64_t record_limit = 10000; uint64_t readerbuffersize = 1024 * 1024; int i; if ( 1 >= argc ) { SHOW_HELPTEXT; return 0; } for ( i = 1; i < argc; i++ ) { if ( ( 0 == strcmp( "-i", argv[i] ) ) && ( i+1 < argc ) ) { input_file= argv[i+1]; ++i; } else if ( ( 0 == strcmp( "-rb", argv[i] ) ) && ( i+1 < argc ) ) { readerbuffersize = atoi( argv[i+1] ); ++i; } else if ( ( 0 == strcmp( "-rl", argv[i] ) ) && ( i+1 < argc ) ) { record_limit = atoi( argv[i+1] ); ++i; } else if ( ( 0 == strcmp( "-f", argv[i] ) ) && ( i+1 < argc ) ) { nfiles = atoi( argv[i+1] ); ++i; } else if ( 0 == strcmp( "--help", argv[i] ) || 0 == strcmp( "-h", argv[i] ) ) { SHOW_HELPTEXT; return 0; } else if ( 0 == strcmp( "-V", argv[i] ) ) { printf( "%u.%u.%u \"%s\"\n", OTF_VERSION_MAJOR, OTF_VERSION_MINOR, OTF_VERSION_SUB, OTF_VERSION_STRING); exit( 0 ); } else { if ( '-' != argv[i][0] ) { input_file= argv[i]; } else{ fprintf( stderr, "ERROR: Unknown option: '%s'\n", argv[i] ); exit(1); } } } manager = OTF_FileManager_open( nfiles ); assert( manager ); handlers = OTF_HandlerArray_open(); assert( handlers ); reader = OTF_Reader_open( input_file, manager ); assert( reader ); OTF_Reader_setBufferSizes( reader, readerbuffersize ); OTF_Reader_setRecordLimit( reader, record_limit ); /* OTF_HandlerArray_setHandler(...) */ printf( "input trace file : %s\n", argv[1] ); printf( "file num: %u\n", nfiles ); printf( "read buffer sizes: %llu\n", (unsigned long long int)readerbuffersize ); printf( "max. record limit: %lli\n\n", (long long int) record_limit ); printf( " tot. read read tot. read progress (%%)\n" ); printf( " records duration (s) duration (s) byte time\n" ); while( 1 ) { uint64_t minb = 0; uint64_t curb = 0; uint64_t maxb = 0; uint64_t mint = 0; uint64_t curt = 0; uint64_t maxt = 0; uint64_t read_rc; uint8_t ret; uint64_t read_start; static uint64_t read_records_tot = 0; static uint64_t read_duration_tot = 0; uint64_t read_duration; double progress_bytes= 0.0; double progress_times= 0.0; read_start = get_time(); read_rc = OTF_Reader_readEvents( reader, handlers ); read_duration = get_time() - read_start; if ( read_rc == 0 || read_rc == OTF_READ_ERROR ) break; read_records_tot += read_rc; read_duration_tot += read_duration; ret= OTF_Reader_eventBytesProgress( reader, &minb, &curb, &maxb ); if( ret == 1 && minb < curb && curb <= maxb ) { progress_bytes= ( (double)( curb - minb ) / (double)( maxb - minb ) ) * 100.0; } ret= OTF_Reader_eventTimeProgress( reader, &mint, &curt, &maxt ); if( ret == 1 && mint < curt && curt <= maxt ) { progress_times= ( (double)( curt - mint ) / (double)( maxt - mint ) ) * 100.0; } printf( "%12lli%16.5f%15.5f%9.2f%9.2f\t\tb: %llu <= %llu <= %llu, \t\t t: %llu <= %llu <= %llu \n", (long long int)read_records_tot, (double)( read_duration / 1e6 ), (double)(read_duration_tot / 1e6), progress_bytes, progress_times, (unsigned long long int)minb, (unsigned long long int)curb, (unsigned long long int)maxb, (unsigned long long int)mint, (unsigned long long int)curt, (unsigned long long int)maxt ); } OTF_Reader_close( reader ); OTF_HandlerArray_close( handlers ); OTF_FileManager_close( manager ); return 0; } static uint64_t get_time() { struct timeval tv; gettimeofday( &tv, NULL ); return (uint64_t)(tv.tv_sec * 1e6 + tv.tv_usec); } eztrace-1.1-7/extlib/gtg/extlib/otf/tests/progress/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135225024031 xustar0030 mtime=1508162197.832247252 30 atime=1508162279.950484465 30 ctime=1508162367.089851069 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/progress/Makefile.in0000644000175000017500000005315013171135225025224 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ check_PROGRAMS = otf_progress$(EXEEXT) subdir = tests/progress ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/m4/libtool.m4 \ $(top_srcdir)/config/m4/ltoptions.m4 \ $(top_srcdir)/config/m4/ltsugar.m4 \ $(top_srcdir)/config/m4/ltversion.m4 \ $(top_srcdir)/config/m4/lt~obsolete.m4 \ $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/config/m4/acinclude.debug.m4 \ $(top_srcdir)/config/m4/acinclude.math.m4 \ $(top_srcdir)/config/m4/acinclude.mpi.m4 \ $(top_srcdir)/config/m4/acinclude.omp.m4 \ $(top_srcdir)/config/m4/acinclude.pdflatex_pgfplots.m4 \ $(top_srcdir)/config/m4/acinclude.swig_python.m4 \ $(top_srcdir)/config/m4/acinclude.vtf3.m4 \ $(top_srcdir)/config/m4/acinclude.verbose.m4 \ $(top_srcdir)/config/m4/acinclude.zlib.m4 \ $(top_srcdir)/config/m4/acinclude.zoidfs.m4 \ $(top_srcdir)/config/m4/acarchive/ax_mpi.m4 \ $(top_srcdir)/config/m4/acarchive/ax_openmp.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am_otf_progress_OBJECTS = otf_progress-progress.$(OBJEXT) otf_progress_OBJECTS = $(am_otf_progress_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(otf_progress_SOURCES) DIST_SOURCES = $(otf_progress_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BMI_INCLUDE_DIR = @BMI_INCLUDE_DIR@ BMI_LIB_DIR = @BMI_LIB_DIR@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLOCK_GETTIME_LIB = @CLOCK_GETTIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHLIB = @MATHLIB@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICFLAGS = @MPICFLAGS@ MPICXX = @MPICXX@ MPICXXFLAGS = @MPICXXFLAGS@ MPILIBS = @MPILIBS@ MPI_INCLUDE_DIR = @MPI_INCLUDE_DIR@ MPI_INCLUDE_LINE = @MPI_INCLUDE_LINE@ MPI_LIB_DIR = @MPI_LIB_DIR@ MPI_LIB_LINE = @MPI_LIB_LINE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENMP_CXXFLAGS = @OPENMP_CXXFLAGS@ OTF_VERSION_LIBRARY = @OTF_VERSION_LIBRARY@ OTF_VERSION_MAJOR = @OTF_VERSION_MAJOR@ OTF_VERSION_MINOR = @OTF_VERSION_MINOR@ OTF_VERSION_STRING = @OTF_VERSION_STRING@ OTF_VERSION_SUB = @OTF_VERSION_SUB@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFTEX = @PDFTEX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWIG = @SWIG@ SWIG_PYTHON_CFLAGS = @SWIG_PYTHON_CFLAGS@ SWIG_PYTHON_OPTS = @SWIG_PYTHON_OPTS@ VERSION = @VERSION@ VTF3_INCLUDE_DIR = @VTF3_INCLUDE_DIR@ VTF3_INCLUDE_LINE = @VTF3_INCLUDE_LINE@ VTF3_LIB_DIR = @VTF3_LIB_DIR@ VTF3_LIB_LINE = @VTF3_LIB_LINE@ ZLIB_INCLUDE_DIR = @ZLIB_INCLUDE_DIR@ ZLIB_INCLUDE_LINE = @ZLIB_INCLUDE_LINE@ ZLIB_LIB_DIR = @ZLIB_LIB_DIR@ ZLIB_LIB_LINE = @ZLIB_LIB_LINE@ ZOIDFS_INCLUDE_DIR = @ZOIDFS_INCLUDE_DIR@ ZOIDFS_INCLUDE_LINE = @ZOIDFS_INCLUDE_LINE@ ZOIDFS_LIB_DIR = @ZOIDFS_LIB_DIR@ ZOIDFS_LIB_LINE = @ZOIDFS_LIB_LINE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_inttypes_h = @have_inttypes_h@ have_stdint_h = @have_stdint_h@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ python_config = @python_config@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sizeof_long = @sizeof_long@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ otf_progress_SOURCES = progress.c otf_progress_DEPENDENCIES = $(top_builddir)/otflib/libopen-trace-format.la otf_progress_LDADD = $(top_builddir)/otflib/libopen-trace-format.la otf_progress_CPPFLAGS = $(AM_CPPFLAGS) \ -I$(top_builddir)/otflib \ -I$(top_srcdir)/otflib all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/progress/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign tests/progress/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list otf_progress$(EXEEXT): $(otf_progress_OBJECTS) $(otf_progress_DEPENDENCIES) $(EXTRA_otf_progress_DEPENDENCIES) @rm -f otf_progress$(EXEEXT) $(AM_V_CCLD)$(LINK) $(otf_progress_OBJECTS) $(otf_progress_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/otf_progress-progress.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< otf_progress-progress.o: progress.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(otf_progress_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT otf_progress-progress.o -MD -MP -MF $(DEPDIR)/otf_progress-progress.Tpo -c -o otf_progress-progress.o `test -f 'progress.c' || echo '$(srcdir)/'`progress.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/otf_progress-progress.Tpo $(DEPDIR)/otf_progress-progress.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='progress.c' object='otf_progress-progress.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(otf_progress_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o otf_progress-progress.o `test -f 'progress.c' || echo '$(srcdir)/'`progress.c otf_progress-progress.obj: progress.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(otf_progress_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT otf_progress-progress.obj -MD -MP -MF $(DEPDIR)/otf_progress-progress.Tpo -c -o otf_progress-progress.obj `if test -f 'progress.c'; then $(CYGPATH_W) 'progress.c'; else $(CYGPATH_W) '$(srcdir)/progress.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/otf_progress-progress.Tpo $(DEPDIR)/otf_progress-progress.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='progress.c' object='otf_progress-progress.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(otf_progress_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o otf_progress-progress.obj `if test -f 'progress.c'; then $(CYGPATH_W) 'progress.c'; else $(CYGPATH_W) '$(srcdir)/progress.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool clean-local \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool clean-local \ cscopelist-am ctags ctags-am distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile clean-local: rm -f *.otf *.def *.events *.marker *.otf.z *.def.z *.events.z *.marker.z # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/gtg/extlib/otf/tests/PaxHeaders.7332/python0000644000000000000000000000013213171135476021374 xustar0030 mtime=1508162366.953839193 30 atime=1508162367.741908015 30 ctime=1508162366.953839193 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/python/0000755000175000017500000000000013171135476022640 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/otf/tests/python/PaxHeaders.7332/groups.py0000644000000000000000000000013212544237152023337 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.938892559 30 ctime=1508162366.929837098 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/python/groups.py0000644000175000017500000001332412544237152024531 0ustar00trahaytrahay00000000000000#! /usr/bin/python ################################################################################ # A small quick hack script that re-orders and summarizes group definitions. # # It uses quite specific logic to get a new grouping but this might serve as # an example for similar tools. ################################################################################ ################################################################################ # 1st parameter = trace to read ################################################################################ from otf import * import sys # dict for new groups newindex= 0 number_def_function= 0 number_def_group= 0 max_def_group= 0 token_to_name= {} token_to_shortname= {} token_to_count= {} token_to_newtoken= {} ### stage 1 handlers ########################################################### def handleDefFunction_Stage_1( fha, stream, func, name, group, source, kvlist ): # print ' handleDefFunction: \"%s\", s%u, t%u, nm\"%s\", g%u, src%u' \ # % (fha,stream, func,name,group,source) global number_def_function number_def_function += 1 token_to_count[ group ] += 1 # # find first part of source file name shortname= "empty" a= 0 b= 0 a= name.find( "[{" ) if -1 != a: b= name.find( "}", a+2 ) if -1 != b : c= name.find( "_", a+2, b ) if -1 != c : b= c c= name.find( ".", a+2, b ) if -1 != c : b= c c= name.find( " ", a+2, b ) if -1 != c : b= c shortname= name[a+2:b] token_to_shortname[ group ]= shortname return OTF_RETURN_OK def handleDefFunctionGroup_Stage_1( fha, stream, group, name, kvlist ): # print ' handleDefFunctionGroup: \"%s\", s%u, t%u, nm\"%s\"' \ # % (fha,stream,group,name) global number_def_group number_def_group += 1 global max_def_group max_def_group= max_def_group if ( max_def_group > group ) else group token_to_name[ group ]= name global token_to_count token_to_count[ group ]= 0 return OTF_RETURN_OK ### stage 2 handlers ########################################################### def handleDefFunction_Stage_2( fha, stream, func, name, group, source, kvlist ): OTF_Writer_writeDefFunction( fha, stream, func, name, token_to_newtoken[ group ], source ) return OTF_RETURN_OK def handleDefFunctionGroup_Stage_2( fha, stream, group, name, kvlist ): return OTF_RETURN_OK ### main ####################################################################### if __name__ == '__main__': manager= OTF_FileManager_open( 100 ) inname= sys.argv[1] print "read ", inname outname= OTF_stripFilename( inname ) + "_new" print "write ", outname reader= OTF_Reader_open( inname, manager ) handlers= OTF_HandlerArray_open() ### stage 1 - create group mapping ######################################### OTF_HandlerArray_setHandler( handlers, handleDefFunction_Stage_1, OTF_DEFFUNCTION_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefFunctionGroup_Stage_1, OTF_DEFFUNCTIONGROUP_RECORD ) num= OTF_Reader_readDefinitions( reader, handlers ) print "stage 1: read ", num, " records" print "number of function definitions ", number_def_function print "number of group definitions", number_def_group print "len( token_to_name ) ", len( token_to_name ) print "len( token_to_count ) ", len( token_to_count ) print "\n" # print "list all:" # for k, c in token_to_count.iteritems() : # print k, " # ", c, " name ", token_to_name[ k ], " shortname ", token_to_shortname[ k ] ### compute mapping token_to_newtoken ###################################### writer= OTF_Writer_open( outname, 0, manager ) max_def_group += 1 shortname_to_count= {} print "list keep:" for k, c in token_to_count.iteritems() : if c >= 5 : print "keep ", k, " # ", c, " name ", token_to_name[ k ] OTF_Writer_writeDefFunctionGroup( writer, 0, k, token_to_name[ k ] ) else : print "k= ", k print "token_to_shortname[ k ]", token_to_shortname[ k ] shortname_to_count[ token_to_shortname[ k ] ]= 0 # sum over equal short names for k, c in token_to_count.iteritems() : shortname_to_count[ token_to_shortname[ k ] ] += c # for k, c in token_to_shortname.iteritems() : # print " ", k, " # ", c shortname_to_newtoken= {} print "list new:" for k, c in shortname_to_count.iteritems() : if c >= 5 : OTF_Writer_writeDefFunctionGroup( writer, 0, max_def_group, k ) shortname_to_newtoken[ k ]= max_def_group print " new token ", max_def_group, ":", k, " # ", c max_def_group += 1 # define "misc" group k= "misc" OTF_Writer_writeDefFunctionGroup( writer, 0, max_def_group, k ) shortname_to_newtoken[ k ]= max_def_group print " new token ", max_def_group, ":", k, " # x" max_def_group += 1 token_to_newtoken= {} for k, v in token_to_shortname.iteritems() : if token_to_count[ k ] >= 5 : token_to_newtoken[ k ]= k else : if shortname_to_newtoken.has_key( v ) : token_to_newtoken[ k ]= shortname_to_newtoken[ v ]; else : token_to_newtoken[ k ]= shortname_to_newtoken[ "misc" ]; # print "\n mapping \n\n" # for t, n in token_to_newtoken.iteritems() : # print " ", t, " --> ", n ### stage 2 - write new def file ########################################### # set copy handlers to all but FunctionDefs and FunctionGroupDefs OTF_HandlerArray_getCopyHandler( handlers, writer ) OTF_HandlerArray_setHandler( handlers, handleDefFunction_Stage_2, OTF_DEFFUNCTION_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefFunctionGroup_Stage_2, OTF_DEFFUNCTIONGROUP_RECORD ) OTF_Reader_close( reader ) reader= OTF_Reader_open( inname, manager ) num= OTF_Reader_readDefinitions( reader, handlers ) print "stage 2: read ", num, " records" OTF_HandlerArray_close( handlers ) OTF_Writer_close( writer ) OTF_Reader_close( reader ) OTF_FileManager_close( manager ) eztrace-1.1-7/extlib/gtg/extlib/otf/tests/python/PaxHeaders.7332/test_read.py0000644000000000000000000000013212544237152023772 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.938892559 30 ctime=1508162366.941838145 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/python/test_read.py0000644000175000017500000003721612544237152025172 0ustar00trahaytrahay00000000000000#! /usr/bin/python ################################################################################ # 1st parameter = trace to read ################################################################################ from otf import * import sys def handleDefComment( fha, stream, comment, kvlist ): print ' handleDefComment: \"%s\", c\"%s\"' % (fha,comment) return OTF_RETURN_OK def handleDefTimerResolution( fha, stream, ticksPerSecond, kvlist ): print ' handleDefTimerResolution: \"%s\", s%u, s%u' % (fha,stream,ticksPerSecond) return OTF_RETURN_OK def handleDefProcess( fha, stream, process, name, parent, kvlist ): print ' handleDefProcess: \"%s\", s%u, t%u, nm\"%s\", p%u' \ % (fha,stream,process,name, parent) return OTF_RETURN_OK def handleDefProcGroup( fha, stream, group, name, nr, proclist, kvlist ): output=' handleDefProcGroup: \"%s\", s%u, t%u, nm\"%s\", nr%u { ' \ % (fha,stream,group,name,nr) for proc in proclist: output+= '%i, ' % proc output += ' }' print output return OTF_RETURN_OK def handleDefFunction( fha, stream, func, name, group, source, kvlist ): print ' handleDefFunction: \"%s\", s%u, t%u, nm\"%s\", g%u, src%u' \ % (fha,stream, func,name,group,source) return OTF_RETURN_OK def handleDefFunctionGroup( fha, stream, group, name, kvlist ): print ' handleDefFunctionGroup: \"%s\", s%u, t%u, nm\"%s\"' \ % (fha,stream,group,name) return OTF_RETURN_OK def handleDefCollectiveOperation( fha, stream, coll, name, typee, kvlist ): print ' handleDefCollectiveOperation: \"%s\", s%u, t%u, nm\"%s\", tp%u' \ % (fha,stream,coll,name,typee) return OTF_RETURN_OK def handleDefCounter( fha, stream, counter, name, properties, group, unit, kvlist ): print ' handleDefCounter: \"%s\", s%u, t%u, nm\"%s\", prp%u, g%u, u\"%s\"' \ % (fha, stream, counter, name, properties, group, unit) return OTF_RETURN_OK def handleDefCounterGroup( fha, stream, group, name, kvlist ): print ' handleDefCounterGroup: \"%s\", s%u, t%u, nm\"%s\"' \ % (fha, stream, group, name) return OTF_RETURN_OK def handleDefScl( fha, stream, source, file, line, kvlist ): print ' handleDefScl: \"%s\", s%u, t%u, f%u, l%u' \ % (fha, stream, source, file, line) return OTF_RETURN_OK def handleDefSclFile( fha, stream, file, name, kvlist ): print ' handleDefSclFile: \"%s\", s%u, t%u, nm\"%s\"' % (fha, stream, file, name) return OTF_RETURN_OK def handleDefCreator( fha, stream, creator, kvlist ): print ' handleDefCreator: \"%s\", s%u, cr\"%s\"' % (fha, stream, creator) return OTF_RETURN_OK def handleDefVersion( fha, stream, major, minor, sub, string, kvlist ): print ' handleDefVersion: \"%s\", s%u, %u.%u.%u \"%s\"' \ % (fha, stream, major, minor, sub, string) return OTF_RETURN_OK def handleDefFile( fha, stream, token, name, group, kvlist ): print ' handleDefFile: \"%s\", s%u, t%u, nm\"%s\", g%u' \ % (fha, stream, token, name, group) return OTF_RETURN_OK def handleDefFileGroup( fha, stream, token, name, kvlist ): print ' handleDefFileGroup: \"%s\", s%u, t%u, nm\"%s\"' \ % (fha, stream, token, name) return OTF_RETURN_OK def handleEnter( fha, time, function, process, source, kvlist ): print ' handleEnter: \"%s\", t%u, f%u, p%u, src%u' \ % (fha, time, function, process, source) return OTF_RETURN_OK def handleLeave( fha, time, function, process, source, kvlist ): print ' handleLeave: \"%s\", t%u, f%u, p%u, src%u' \ % (fha, time, function, process, source) return OTF_RETURN_OK def handleSendMsg( fha, time, sender, receiver, group, typee, length, source, kvlist ): print ' handleSendMsg: \"%s\", t%u, s%u, r%u, g%u, tp%u, l%u, src%u' \ % (fha, time, sender, receiver, group, typee, length, source) return OTF_RETURN_OK def handleRecvMsg( fha, time, recvProc, sendProc, group, typee, length, source, kvlist ): print ' handleRecvMsg: \"%s\", t%u, r%u, s%u, g%u, tp%u, l%u, src%u' \ % (fha, time, recvProc, sendProc, group, typee, length, source) return OTF_RETURN_OK def handleCounter( fha, time, process, counter, value, kvlist ): print ' handleCounter: \"%s\", t%u, p%u, c%u, v%u' \ % (fha, time, process, counter, value) return OTF_RETURN_OK def handleCollectiveOperation( fha, time, process, collective, procGroup, rootProc, sent, received, duration, source, kvlist ): print ' handleCollectiveOperation: \"%s\", t%u, p%u, c%u, pg%u, rt%u, sent%u, recvd%u, dur%u, src%u' \ % (fha, time, process, collective, procGroup,rootProc, sent, received, duration, source) return OTF_RETURN_OK def handleEventComment( fha, time, process, comment, kvlist ): print ' handleEventComment: \"%s\", t%u, p%u, c\"%s\"' \ % (fha,time, process, comment) return OTF_RETURN_OK def handleBeginProcess( fha, time, process, kvlist ): print ' handleBeginProcess: \"%s\", t%u, p%u' % (fha, time, process) return OTF_RETURN_OK def handleEndProcess( fha, time, process, kvlist ): print ' handleEndProcess: \"%s\", t%u, p%u' % (fha, time, process) return OTF_RETURN_OK def handleFileOperation( fha, time, fileid, process, handleid, operation, bytes, duration, source, kvlist ): print ' handleFileOperation: \"%s\", t%u, f%u, p%u, h%u, op%u, b%u, dur%u, src%u' \ % (fha, time, fileid, process, handleid, operation,bytes, duration, source) return OTF_RETURN_OK def handleBeginFileOperation( fha, time, process, matchingid, scl, kvlist ): print ' handleBeginFileOp: \"%s\", t%u, p%u, m%u, src%u' \ % (fha, time, process, matchingid, scl) return OTF_RETURN_OK def handleEndFileOperation( fha, time, process, fileid, matchingId, handleid, operation, bytes, scl, kvlist ): print ' handleEndFileOp: \"%s\", t%u, p%u, f%u, m%u, h%u, op%u, b%u, src%u' \ % ( fha, time, process, fileid, matchingId, handleid, operation, bytes, scl ) return OTF_RETURN_OK def handleSnapshotComment( fha, time, process, comment, kvlist ): print ' handleSnapshotComment: \"%s\", t%u, p%u, c\"%s\"' \ % (fha, time, process, comment) return OTF_RETURN_OK def handleEnterSnapshot( fha, time, originaltime, function, process, source, kvlist ): print ' handleEnterSnapshot: \"%s\", t%u, ot%u, f%u, p%u, src%u' \ % (fha, time, originaltime, function, process, source) return OTF_RETURN_OK def handleSendSnapshot( fha, time, originaltime, sender, receiver, procGroup, tag, length, source, kvlist ): print ' handleSendSnapshot: \"%s\", t%u, ot%u, s%u, r%u, pg%u, tag%u, len%u src%u' \ % (fha, time, originaltime, sender, receiver,procGroup, tag, length, source) return OTF_RETURN_OK def handleOpenFileSnapshot( fha, time, originaltime, fileid, process, handleid, source, kvlist ): print ' handleOpenFileSnapshot: \"%s\", t%u, ot%u, f%u, p%u, h%u, src%u' \ % (fha, time, originaltime, fileid,process, handleid, source) return OTF_RETURN_OK def handleSummaryComment( fha, time, process, comment, kvlist ): print ' handleSummaryComment: \"%s\", t%u, p%u, c\"%s\"' \ % (fha, time, process, comment) return OTF_RETURN_OK def handleFunctionSummary( fha, time, function, process, invocations, exclTime, inclTime, kvlist ): print ' handleFunctionSummary: \"%s\", t%u, f%u, p%u, inv%u, ext%u, int%u' \ % (fha, time, function, process, invocations, exclTime, inclTime) return OTF_RETURN_OK def handleFunctionGroupSummary( fha, time, group, process, invocations, exclTime, inclTime, kvlist ): print ' handleFunctionGroupSummary: \"%s\", t%u, g%u, p%u, inv%u, ext%u, int%u' \ % (fha, time, group, process,invocations, exclTime, inclTime) return OTF_RETURN_OK def handleMessageSummary( fha, time, process, peer, comm, typee, sentNumber, receivedNumber, sentBytes, receivedBytes, kvlist ): print ' handleMessageSummary: \"%s\", t%u, p%u, peer%u, comm%u, tp%u, sentnr%u, recvdnr%u, sentbt%u, recvdbt%u' \ % (fha, time, process, peer, comm, typee,sentNumber, receivedNumber, sentBytes, receivedBytes) return OTF_RETURN_OK def handleFileOperationSummary( fha, time, fileid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, kvlist ): print ' handleFileOperationSummary: \"%s\", t%u, f%u, p%u, nopen%u, nclose%u, nrd%u, nwrt%u, nseek%u, btrd%u, btwrt%u' \ % (fha, time, fileid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite) return OTF_RETURN_OK def handleFileGroupOperationSummary( fha, time, groupid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, kvlist ): print ' handleFileGroupOperationSummary: \"%s\", t%u, g%u, p%u, nopen%u, nclose%u, nrd%u, nwrt%u, nseek%u, btrd%u, btwrt%u' \ % (fha, time, groupid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite) return OTF_RETURN_OK def handleUnknownRecord( fha, time, process, record, kvlist ): print ' handleUnknownRecord: \"%s\", t%u, p%u, r\"%s\"' \ % (fha, time, process, record) return OTF_RETURN_OK ################################################################################# if __name__ == '__main__': manager= OTF_FileManager_open( 100 ) reader= OTF_Reader_open( sys.argv[1], manager ) handlers= OTF_HandlerArray_open() OTF_HandlerArray_setHandler( handlers, handleDefComment, OTF_DEFINITIONCOMMENT_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefTimerResolution, OTF_DEFTIMERRESOLUTION_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefProcess, OTF_DEFPROCESS_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefProcGroup, OTF_DEFPROCESSGROUP_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefFunction, OTF_DEFFUNCTION_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefFunctionGroup, OTF_DEFFUNCTIONGROUP_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefCollectiveOperation, OTF_DEFCOLLOP_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefCounter, OTF_DEFCOUNTER_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefCounterGroup, OTF_DEFCOUNTERGROUP_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefScl, OTF_DEFSCL_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefSclFile, OTF_DEFSCLFILE_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefCreator, OTF_DEFCREATOR_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefVersion, OTF_DEFVERSION_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefFile, OTF_DEFFILE_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefFileGroup, OTF_DEFFILEGROUP_RECORD ) OTF_HandlerArray_setHandler( handlers, handleEnter, OTF_ENTER_RECORD ) OTF_HandlerArray_setHandler( handlers, handleLeave, OTF_LEAVE_RECORD ) OTF_HandlerArray_setHandler( handlers, handleSendMsg, OTF_SEND_RECORD ) OTF_HandlerArray_setHandler( handlers, handleRecvMsg, OTF_RECEIVE_RECORD ) OTF_HandlerArray_setHandler( handlers, handleCounter, OTF_COUNTER_RECORD ) OTF_HandlerArray_setHandler( handlers, handleCollectiveOperation, OTF_COLLOP_RECORD ) OTF_HandlerArray_setHandler( handlers, handleEventComment, OTF_EVENTCOMMENT_RECORD ) OTF_HandlerArray_setHandler( handlers, handleBeginProcess, OTF_BEGINPROCESS_RECORD ) OTF_HandlerArray_setHandler( handlers, handleEndProcess, OTF_ENDPROCESS_RECORD ) OTF_HandlerArray_setHandler( handlers, handleFileOperation, OTF_FILEOPERATION_RECORD ) OTF_HandlerArray_setHandler( handlers, handleBeginFileOperation, OTF_BEGINFILEOP_RECORD ) OTF_HandlerArray_setHandler( handlers, handleEndFileOperation, OTF_ENDFILEOP_RECORD ) OTF_HandlerArray_setHandler( handlers, handleSnapshotComment, OTF_SNAPSHOTCOMMENT_RECORD ) OTF_HandlerArray_setHandler( handlers, handleEnterSnapshot, OTF_ENTERSNAPSHOT_RECORD ) OTF_HandlerArray_setHandler( handlers, handleSendSnapshot, OTF_SENDSNAPSHOT_RECORD ) OTF_HandlerArray_setHandler( handlers, handleOpenFileSnapshot, OTF_OPENFILESNAPSHOT_RECORD ) OTF_HandlerArray_setHandler( handlers, handleSummaryComment, OTF_SUMMARYCOMMENT_RECORD ) OTF_HandlerArray_setHandler( handlers, handleFunctionSummary, OTF_FUNCTIONSUMMARY_RECORD ) OTF_HandlerArray_setHandler( handlers, handleFunctionGroupSummary, OTF_FUNCTIONGROUPSUMMARY_RECORD ) OTF_HandlerArray_setHandler( handlers, handleMessageSummary, OTF_MESSAGESUMMARY_RECORD ) OTF_HandlerArray_setHandler( handlers, handleFileOperationSummary, OTF_FILEOPERATIONSUMMARY_RECORD ) OTF_HandlerArray_setHandler( handlers, handleFileGroupOperationSummary, OTF_FILEGROUPOPERATIONSUMMARY_RECORD ) OTF_HandlerArray_setHandler( handlers, handleUnknownRecord, OTF_UNKNOWN_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFINITIONCOMMENT_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFTIMERRESOLUTION_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFPROCESS_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFPROCESSGROUP_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFFUNCTION_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFFUNCTIONGROUP_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFCOLLOP_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFCOUNTER_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFCOUNTERGROUP_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFSCL_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFSCLFILE_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFCREATOR_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFVERSION_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFFILE_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFFILEGROUP_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_ENTER_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_LEAVE_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_SEND_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_RECEIVE_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_COUNTER_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_COLLOP_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_EVENTCOMMENT_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_BEGINPROCESS_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_ENDPROCESS_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_FILEOPERATION_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_SNAPSHOTCOMMENT_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_ENTERSNAPSHOT_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_SENDSNAPSHOT_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_OPENFILESNAPSHOT_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_SUMMARYCOMMENT_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_FUNCTIONSUMMARY_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_FUNCTIONGROUPSUMMARY_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_MESSAGESUMMARY_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_FILEOPERATIONSUMMARY_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_FILEGROUPOPERATIONSUMMARY_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_UNKNOWN_RECORD ) OTF_Reader_readDefinitions( reader, handlers ) # read events in portions OTF_Reader_setRecordLimit( reader, 100000 ) while 1 : read= OTF_Reader_readEventsUnsorted( reader, handlers ) if 0 == read: break btprg= OTF_Reader_eventBytesProgress( reader ) tmprg= OTF_Reader_eventTimeProgress( reader ) print " ret_tm%u ret_bt%u INTERRUPT: read %u - timeprogress: %u < %u < %u - bytesprogress: %u < %u < %u" \ % ( tmprg[0], btprg[0], read, tmprg[1], tmprg[2], tmprg[3], btprg[1], btprg[2], btprg[3] ) OTF_Reader_setRecordLimit( reader, 1000000000 ) OTF_Reader_readSnapshotsUnsorted( reader, handlers ) OTF_Reader_readStatisticsUnsorted( reader, handlers ) OTF_HandlerArray_close( handlers ) OTF_Reader_close( reader ) OTF_FileManager_close( manager ) eztrace-1.1-7/extlib/gtg/extlib/otf/tests/python/PaxHeaders.7332/python30000644000000000000000000000013213171135476023000 xustar0030 mtime=1508162366.961839891 30 atime=1508162367.741908015 30 ctime=1508162366.961839891 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/python/python3/0000755000175000017500000000000013171135476024244 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/otf/tests/python/python3/PaxHeaders.7332/groups.py0000644000000000000000000000013212544237152024743 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.938892559 30 ctime=1508162366.957839543 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/python/python3/groups.py0000644000175000017500000001377012544237152026142 0ustar00trahaytrahay00000000000000#! /usr/bin/python ################################################################################ # A small quick hack script that re-orders and summarizes group definitions. # # It uses quite specific logic to get a new grouping but this might serve as # an example for similar tools. ################################################################################ ################################################################################ # 1st parameter = trace to read ################################################################################ from otf import * import sys # dict for new groups newindex= 0 number_def_function= 0 number_def_group= 0 max_def_group= 0 token_to_name= {} token_to_shortname= {} token_to_count= {} token_to_newtoken= {} ### stage 1 handlers ########################################################### def handleDefFunction_Stage_1( fha, stream, func, name, group, source, kvlist ): # print ( ' handleDefFunction: \"%s\", s%u, t%u, nm\"%s\", g%u, src%u' \ # % (fha,stream, func,name,group,source) ) global number_def_function number_def_function += 1 token_to_count[ group ] += 1 # # find first part of source file name shortname= "empty" a= 0 b= 0 a= name.find( "[{" ) if -1 != a: b= name.find( "}", a+2 ) if -1 != b : c= name.find( "_", a+2, b ) if -1 != c : b= c c= name.find( ".", a+2, b ) if -1 != c : b= c c= name.find( " ", a+2, b ) if -1 != c : b= c shortname= name[a+2:b] token_to_shortname[ group ]= shortname return OTF_RETURN_OK def handleDefFunctionGroup_Stage_1( fha, stream, group, name, kvlist ): # print ( ' handleDefFunctionGroup: \"%s\", s%u, t%u, nm\"%s\"' \ # % (fha,stream,group,name) ) global number_def_group number_def_group += 1 global max_def_group max_def_group= max_def_group if ( max_def_group > group ) else group token_to_name[ group ]= name global token_to_count token_to_count[ group ]= 0 return OTF_RETURN_OK ### stage 2 handlers ########################################################### def handleDefFunction_Stage_2( fha, stream, func, name, group, source, kvlist ): OTF_Writer_writeDefFunction( fha, stream, func, name, token_to_newtoken[ group ], source ) return OTF_RETURN_OK def handleDefFunctionGroup_Stage_2( fha, stream, group, name, kvlist ): return OTF_RETURN_OK ### main ####################################################################### if __name__ == '__main__': manager= OTF_FileManager_open( 100 ) inname= sys.argv[1] print ( "read ", inname ) outname= OTF_stripFilename( inname ) + "_new" print ( "write ", outname ) reader= OTF_Reader_open( inname, manager ) handlers= OTF_HandlerArray_open() ### stage 1 - create group mapping ######################################### OTF_HandlerArray_setHandler( handlers, handleDefFunction_Stage_1, OTF_DEFFUNCTION_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefFunctionGroup_Stage_1, OTF_DEFFUNCTIONGROUP_RECORD ) num= OTF_Reader_readDefinitions( reader, handlers ) print ( "stage 1: read ", num, " records" ) print ( "number of function definitions ", number_def_function ) print ( "number of group definitions", number_def_group ) print ( "len( token_to_name ) ", len( token_to_name ) ) print ( "len( token_to_count ) ", len( token_to_count ) ) print ( "\n" ) # print ( "list all:" ) # for k, c in token_to_count.iteritems() : # print ( k, " # ", c, " name ", token_to_name[ k ], " shortname ", token_to_shortname[ k ] ) ### compute mapping token_to_newtoken ###################################### writer= OTF_Writer_open( outname, 0, manager ) max_def_group += 1 shortname_to_count= {} print ( "list keep:" ) # for k, c in token_to_count.iteritems() : for k, c in token_to_count.items() : if c >= 5 : print ( "keep ", k, " # ", c, " name ", token_to_name[ k ] ) OTF_Writer_writeDefFunctionGroup( writer, 0, k, token_to_name[ k ] ) else : print ( "k= ", k ) print ( "token_to_shortname[ k ]", token_to_shortname[ k ] ) shortname_to_count[ token_to_shortname[ k ] ]= 0 # sum over equal short names # for k, c in token_to_count.iteritems() : for k, c in token_to_count.items() : shortname_to_count[ token_to_shortname[ k ] ] += c # for k, c in token_to_shortname.iteritems() : # print ( " ", k, " # ", c ) shortname_to_newtoken= {} print ( "list new:" ) # for k, c in shortname_to_count.iteritems() : for k, c in shortname_to_count.items() : if c >= 5 : OTF_Writer_writeDefFunctionGroup( writer, 0, max_def_group, k ) shortname_to_newtoken[ k ]= max_def_group print ( " new token ", max_def_group, ":", k, " # ", c ) max_def_group += 1 # define "misc" group k= "misc" OTF_Writer_writeDefFunctionGroup( writer, 0, max_def_group, k ) shortname_to_newtoken[ k ]= max_def_group print ( " new token ", max_def_group, ":", k, " # x" ) max_def_group += 1 token_to_newtoken= {} # for k, v in token_to_shortname.iteritems() : for k, v in token_to_shortname.items() : if token_to_count[ k ] >= 5 : token_to_newtoken[ k ]= k else : # if shortname_to_newtoken.has_key( v ) : if v in shortname_to_newtoken : token_to_newtoken[ k ]= shortname_to_newtoken[ v ]; else : token_to_newtoken[ k ]= shortname_to_newtoken[ "misc" ]; # print ( "\n mapping \n\n" ) # for t, n in token_to_newtoken.iteritems() : # print ( " ", t, " --> ", n ) ### stage 2 - write new def file ########################################### # set copy handlers to all but FunctionDefs and FunctionGroupDefs OTF_HandlerArray_getCopyHandler( handlers, writer ) OTF_HandlerArray_setHandler( handlers, handleDefFunction_Stage_2, OTF_DEFFUNCTION_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefFunctionGroup_Stage_2, OTF_DEFFUNCTIONGROUP_RECORD ) OTF_Reader_close( reader ) reader= OTF_Reader_open( inname, manager ) num= OTF_Reader_readDefinitions( reader, handlers ) print ( "stage 2: read ", num, " records" ) OTF_HandlerArray_close( handlers ) OTF_Writer_close( writer ) OTF_Reader_close( reader ) OTF_FileManager_close( manager ) eztrace-1.1-7/extlib/gtg/extlib/otf/tests/python/python3/PaxHeaders.7332/test_read.py0000644000000000000000000000013212544237152025376 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.938892559 30 ctime=1508162366.961839891 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/python/python3/test_read.py0000644000175000017500000003745212544237152026600 0ustar00trahaytrahay00000000000000#! /usr/bin/python ################################################################################ # 1st parameter = trace to read ################################################################################ from otf import * import sys def handleDefComment( fha, stream, comment, kvlist ): print ( ' handleDefComment: \"%s\", c\"%s\"' % (fha,comment) ) return OTF_RETURN_OK def handleDefTimerResolution( fha, stream, ticksPerSecond, kvlist ): print ( ' handleDefTimerResolution: \"%s\", s%u, s%u' % (fha,stream,ticksPerSecond) ) return OTF_RETURN_OK def handleDefProcess( fha, stream, process, name, parent, kvlist ): print ( ' handleDefProcess: \"%s\", s%u, t%u, nm\"%s\", p%u' \ % (fha,stream,process,name, parent) ) return OTF_RETURN_OK def handleDefProcGroup( fha, stream, group, name, nr, proclist, kvlist ): output=' handleDefProcGroup: \"%s\", s%u, t%u, nm\"%s\", nr%u { ' \ % (fha,stream,group,name,nr) for proc in proclist: output+= '%i, ' % proc output += ' }' print ( output ) return OTF_RETURN_OK def handleDefFunction( fha, stream, func, name, group, source, kvlist ): print ( ' handleDefFunction: \"%s\", s%u, t%u, nm\"%s\", g%u, src%u' \ % (fha,stream, func,name,group,source) ) return OTF_RETURN_OK def handleDefFunctionGroup( fha, stream, group, name, kvlist ): print ( ' handleDefFunctionGroup: \"%s\", s%u, t%u, nm\"%s\"' \ % (fha,stream,group,name) ) return OTF_RETURN_OK def handleDefCollectiveOperation( fha, stream, coll, name, typee, kvlist ): print ( ' handleDefCollectiveOperation: \"%s\", s%u, t%u, nm\"%s\", tp%u' \ % (fha,stream,coll,name,typee) ) return OTF_RETURN_OK def handleDefCounter( fha, stream, counter, name, properties, group, unit, kvlist ): print ( ' handleDefCounter: \"%s\", s%u, t%u, nm\"%s\", prp%u, g%u, u\"%s\"' \ % (fha, stream, counter, name, properties, group, unit) ) return OTF_RETURN_OK def handleDefCounterGroup( fha, stream, group, name, kvlist ): print ( ' handleDefCounterGroup: \"%s\", s%u, t%u, nm\"%s\"' \ % (fha, stream, group, name) ) return OTF_RETURN_OK def handleDefScl( fha, stream, source, file, line, kvlist ): print ( ' handleDefScl: \"%s\", s%u, t%u, f%u, l%u' \ % (fha, stream, source, file, line) ) return OTF_RETURN_OK def handleDefSclFile( fha, stream, file, name, kvlist ): print ( ' handleDefSclFile: \"%s\", s%u, t%u, nm\"%s\"' % (fha, stream, file, name) ) return OTF_RETURN_OK def handleDefCreator( fha, stream, creator, kvlist ): print ( ' handleDefCreator: \"%s\", s%u, cr\"%s\"' % (fha, stream, creator) ) return OTF_RETURN_OK def handleDefVersion( fha, stream, major, minor, sub, string, kvlist ): print ( ' handleDefVersion: \"%s\", s%u, %u.%u.%u \"%s\"' \ % (fha, stream, major, minor, sub, string) ) return OTF_RETURN_OK def handleDefFile( fha, stream, token, name, group, kvlist ): print ( ' handleDefFile: \"%s\", s%u, t%u, nm\"%s\", g%u' \ % (fha, stream, token, name, group) ) return OTF_RETURN_OK def handleDefFileGroup( fha, stream, token, name, kvlist ): print ( ' handleDefFileGroup: \"%s\", s%u, t%u, nm\"%s\"' \ % (fha, stream, token, name) ) return OTF_RETURN_OK def handleEnter( fha, time, function, process, source, kvlist ): print ( ' handleEnter: \"%s\", t%u, f%u, p%u, src%u' \ % (fha, time, function, process, source) ) return OTF_RETURN_OK def handleLeave( fha, time, function, process, source, kvlist ): print ( ' handleLeave: \"%s\", t%u, f%u, p%u, src%u' \ % (fha, time, function, process, source) ) return OTF_RETURN_OK def handleSendMsg( fha, time, sender, receiver, group, typee, length, source, kvlist ): print ( ' handleSendMsg: \"%s\", t%u, s%u, r%u, g%u, tp%u, l%u, src%u' \ % (fha, time, sender, receiver, group, typee, length, source) ) return OTF_RETURN_OK def handleRecvMsg( fha, time, recvProc, sendProc, group, typee, length, source, kvlist ): print ( ' handleRecvMsg: \"%s\", t%u, r%u, s%u, g%u, tp%u, l%u, src%u' \ % (fha, time, recvProc, sendProc, group, typee, length, source) ) return OTF_RETURN_OK def handleCounter( fha, time, process, counter, value, kvlist ): print ( ' handleCounter: \"%s\", t%u, p%u, c%u, v%u' \ % (fha, time, process, counter, value) ) return OTF_RETURN_OK def handleCollectiveOperation( fha, time, process, collective, procGroup, rootProc, sent, received, duration, source, kvlist ): print ( ' handleCollectiveOperation: \"%s\", t%u, p%u, c%u, pg%u, rt%u, sent%u, recvd%u, dur%u, src%u' \ % (fha, time, process, collective, procGroup,rootProc, sent, received, duration, source) ) return OTF_RETURN_OK def handleEventComment( fha, time, process, comment, kvlist ): print ( ' handleEventComment: \"%s\", t%u, p%u, c\"%s\"' \ % (fha,time, process, comment) ) return OTF_RETURN_OK def handleBeginProcess( fha, time, process, kvlist ): print ( ' handleBeginProcess: \"%s\", t%u, p%u' % (fha, time, process) ) return OTF_RETURN_OK def handleEndProcess( fha, time, process, kvlist ): print ( ' handleEndProcess: \"%s\", t%u, p%u' % (fha, time, process) ) return OTF_RETURN_OK def handleFileOperation( fha, time, fileid, process, handleid, operation, bytes, duration, source, kvlist ): print ( ' handleFileOperation: \"%s\", t%u, f%u, p%u, h%u, op%u, b%u, dur%u, src%u' \ % (fha, time, fileid, process, handleid, operation,bytes, duration, source) ) return OTF_RETURN_OK def handleBeginFileOperation( fha, time, process, matchingid, scl, kvlist ): print ( ' handleBeginFileOp: \"%s\", t%u, p%u, m%u, src%u' \ % (fha, time, process, matchingid, scl) ) return OTF_RETURN_OK def handleEndFileOperation( fha, time, process, fileid, matchingId, handleid, operation, bytes, scl, kvlist ): print ( ' handleEndFileOp: \"%s\", t%u, p%u, f%u, m%u, h%u, op%u, b%u, src%u' \ % ( fha, time, process, fileid, matchingId, handleid, operation, bytes, scl ) ) return OTF_RETURN_OK def handleSnapshotComment( fha, time, process, comment, kvlist ): print ( ' handleSnapshotComment: \"%s\", t%u, p%u, c\"%s\"' \ % (fha, time, process, comment) ) return OTF_RETURN_OK def handleEnterSnapshot( fha, time, originaltime, function, process, source, kvlist ): print ( ' handleEnterSnapshot: \"%s\", t%u, ot%u, f%u, p%u, src%u' \ % (fha, time, originaltime, function, process, source) ) return OTF_RETURN_OK def handleSendSnapshot( fha, time, originaltime, sender, receiver, procGroup, tag, length, source, kvlist ): print ( ' handleSendSnapshot: \"%s\", t%u, ot%u, s%u, r%u, pg%u, tag%u, len%u src%u' \ % (fha, time, originaltime, sender, receiver,procGroup, tag, length, source) ) return OTF_RETURN_OK def handleOpenFileSnapshot( fha, time, originaltime, fileid, process, handleid, source, kvlist ): print ( ' handleOpenFileSnapshot: \"%s\", t%u, ot%u, f%u, p%u, h%u, src%u' \ % (fha, time, originaltime, fileid,process, handleid, source) ) return OTF_RETURN_OK def handleSummaryComment( fha, time, process, comment, kvlist ): print ( ' handleSummaryComment: \"%s\", t%u, p%u, c\"%s\"' \ % (fha, time, process, comment) ) return OTF_RETURN_OK def handleFunctionSummary( fha, time, function, process, invocations, exclTime, inclTime, kvlist ): print ( ' handleFunctionSummary: \"%s\", t%u, f%u, p%u, inv%u, ext%u, int%u' \ % (fha, time, function, process, invocations, exclTime, inclTime) ) return OTF_RETURN_OK def handleFunctionGroupSummary( fha, time, group, process, invocations, exclTime, inclTime, kvlist ): print ( ' handleFunctionGroupSummary: \"%s\", t%u, g%u, p%u, inv%u, ext%u, int%u' \ % (fha, time, group, process,invocations, exclTime, inclTime) ) return OTF_RETURN_OK def handleMessageSummary( fha, time, process, peer, comm, typee, sentNumber, receivedNumber, sentBytes, receivedBytes, kvlist ): print ( ' handleMessageSummary: \"%s\", t%u, p%u, peer%u, comm%u, tp%u, sentnr%u, recvdnr%u, sentbt%u, recvdbt%u' \ % (fha, time, process, peer, comm, typee,sentNumber, receivedNumber, sentBytes, receivedBytes) ) return OTF_RETURN_OK def handleFileOperationSummary( fha, time, fileid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, kvlist ): print ( ' handleFileOperationSummary: \"%s\", t%u, f%u, p%u, nopen%u, nclose%u, nrd%u, nwrt%u, nseek%u, btrd%u, btwrt%u' \ % (fha, time, fileid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite) ) return OTF_RETURN_OK def handleFileGroupOperationSummary( fha, time, groupid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, kvlist ): print ( ' handleFileGroupOperationSummary: \"%s\", t%u, g%u, p%u, nopen%u, nclose%u, nrd%u, nwrt%u, nseek%u, btrd%u, btwrt%u' \ % (fha, time, groupid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite) ) return OTF_RETURN_OK def handleUnknownRecord( fha, time, process, record, kvlist ): print ( ' handleUnknownRecord: \"%s\", t%u, p%u, r\"%s\"' \ % (fha, time, process, record) ) return OTF_RETURN_OK ################################################################################# if __name__ == '__main__': manager= OTF_FileManager_open( 100 ) reader= OTF_Reader_open( sys.argv[1], manager ) handlers= OTF_HandlerArray_open() OTF_HandlerArray_setHandler( handlers, handleDefComment, OTF_DEFINITIONCOMMENT_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefTimerResolution, OTF_DEFTIMERRESOLUTION_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefProcess, OTF_DEFPROCESS_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefProcGroup, OTF_DEFPROCESSGROUP_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefFunction, OTF_DEFFUNCTION_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefFunctionGroup, OTF_DEFFUNCTIONGROUP_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefCollectiveOperation, OTF_DEFCOLLOP_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefCounter, OTF_DEFCOUNTER_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefCounterGroup, OTF_DEFCOUNTERGROUP_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefScl, OTF_DEFSCL_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefSclFile, OTF_DEFSCLFILE_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefCreator, OTF_DEFCREATOR_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefVersion, OTF_DEFVERSION_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefFile, OTF_DEFFILE_RECORD ) OTF_HandlerArray_setHandler( handlers, handleDefFileGroup, OTF_DEFFILEGROUP_RECORD ) OTF_HandlerArray_setHandler( handlers, handleEnter, OTF_ENTER_RECORD ) OTF_HandlerArray_setHandler( handlers, handleLeave, OTF_LEAVE_RECORD ) OTF_HandlerArray_setHandler( handlers, handleSendMsg, OTF_SEND_RECORD ) OTF_HandlerArray_setHandler( handlers, handleRecvMsg, OTF_RECEIVE_RECORD ) OTF_HandlerArray_setHandler( handlers, handleCounter, OTF_COUNTER_RECORD ) OTF_HandlerArray_setHandler( handlers, handleCollectiveOperation, OTF_COLLOP_RECORD ) OTF_HandlerArray_setHandler( handlers, handleEventComment, OTF_EVENTCOMMENT_RECORD ) OTF_HandlerArray_setHandler( handlers, handleBeginProcess, OTF_BEGINPROCESS_RECORD ) OTF_HandlerArray_setHandler( handlers, handleEndProcess, OTF_ENDPROCESS_RECORD ) OTF_HandlerArray_setHandler( handlers, handleFileOperation, OTF_FILEOPERATION_RECORD ) OTF_HandlerArray_setHandler( handlers, handleBeginFileOperation, OTF_BEGINFILEOP_RECORD ) OTF_HandlerArray_setHandler( handlers, handleEndFileOperation, OTF_ENDFILEOP_RECORD ) OTF_HandlerArray_setHandler( handlers, handleSnapshotComment, OTF_SNAPSHOTCOMMENT_RECORD ) OTF_HandlerArray_setHandler( handlers, handleEnterSnapshot, OTF_ENTERSNAPSHOT_RECORD ) OTF_HandlerArray_setHandler( handlers, handleSendSnapshot, OTF_SENDSNAPSHOT_RECORD ) OTF_HandlerArray_setHandler( handlers, handleOpenFileSnapshot, OTF_OPENFILESNAPSHOT_RECORD ) OTF_HandlerArray_setHandler( handlers, handleSummaryComment, OTF_SUMMARYCOMMENT_RECORD ) OTF_HandlerArray_setHandler( handlers, handleFunctionSummary, OTF_FUNCTIONSUMMARY_RECORD ) OTF_HandlerArray_setHandler( handlers, handleFunctionGroupSummary, OTF_FUNCTIONGROUPSUMMARY_RECORD ) OTF_HandlerArray_setHandler( handlers, handleMessageSummary, OTF_MESSAGESUMMARY_RECORD ) OTF_HandlerArray_setHandler( handlers, handleFileOperationSummary, OTF_FILEOPERATIONSUMMARY_RECORD ) OTF_HandlerArray_setHandler( handlers, handleFileGroupOperationSummary, OTF_FILEGROUPOPERATIONSUMMARY_RECORD ) OTF_HandlerArray_setHandler( handlers, handleUnknownRecord, OTF_UNKNOWN_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFINITIONCOMMENT_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFTIMERRESOLUTION_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFPROCESS_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFPROCESSGROUP_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFFUNCTION_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFFUNCTIONGROUP_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFCOLLOP_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFCOUNTER_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFCOUNTERGROUP_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFSCL_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFSCLFILE_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFCREATOR_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFVERSION_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFFILE_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_DEFFILEGROUP_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_ENTER_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_LEAVE_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_SEND_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_RECEIVE_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_COUNTER_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_COLLOP_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_EVENTCOMMENT_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_BEGINPROCESS_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_ENDPROCESS_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_FILEOPERATION_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_SNAPSHOTCOMMENT_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_ENTERSNAPSHOT_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_SENDSNAPSHOT_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_OPENFILESNAPSHOT_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_SUMMARYCOMMENT_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_FUNCTIONSUMMARY_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_FUNCTIONGROUPSUMMARY_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_MESSAGESUMMARY_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_FILEOPERATIONSUMMARY_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_FILEGROUPOPERATIONSUMMARY_RECORD ) # OTF_HandlerArray_setFirstHandlerArg( handlers, "", OTF_UNKNOWN_RECORD ) OTF_Reader_readDefinitions( reader, handlers ) # read events in portions OTF_Reader_setRecordLimit( reader, 100000 ) while 1 : read= OTF_Reader_readEventsUnsorted( reader, handlers ) if 0 == read: break btprg= OTF_Reader_eventBytesProgress( reader ) tmprg= OTF_Reader_eventTimeProgress( reader ) print ( " ret_tm%u ret_bt%u INTERRUPT: read %u - timeprogress: %u < %u < %u - bytesprogress: %u < %u < %u" \ % ( tmprg[0], btprg[0], read, tmprg[1], tmprg[2], tmprg[3], btprg[1], btprg[2], btprg[3] ) ) OTF_Reader_setRecordLimit( reader, 1000000000 ) OTF_Reader_readSnapshotsUnsorted( reader, handlers ) OTF_Reader_readStatisticsUnsorted( reader, handlers ) OTF_HandlerArray_close( handlers ) OTF_Reader_close( reader ) OTF_FileManager_close( manager ) eztrace-1.1-7/extlib/gtg/extlib/otf/tests/python/python3/PaxHeaders.7332/test_write.py0000644000000000000000000000013212544237152025615 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.938892559 30 ctime=1508162366.969840589 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/python/python3/test_write.py0000644000175000017500000001307512544237152027012 0ustar00trahaytrahay00000000000000#! /usr/bin/python ################################################################################ # 1st parameter = trace to write ################################################################################ from otf import * import sys def WriteRecords( writer ): procs= [ 1, 2, 11, 12 ] handleid= 0 # definitions OTF_Writer_writeDefinitionComment( writer, 0, "this is a definition comment" ) OTF_Writer_writeDefCreator( writer, 0, "test_complete" ) OTF_Writer_writeDefTimerResolution( writer, 0, 1234 ) OTF_Writer_writeDefProcess( writer, 0, procs[0], "process number one", 0 ) OTF_Writer_writeDefProcess( writer, 0, procs[1], "process number two", 0 ) OTF_Writer_writeDefProcess( writer, 0, procs[2], "child one of process one", procs[0] ) OTF_Writer_writeDefProcess( writer, 0, procs[3], "child two of process one", procs[0] ) OTF_Writer_writeDefProcessGroup( writer, 0, 1000, "commworld", 4, procs ) OTF_Writer_writeDefSclFile( writer, 0, 100000, "main.c" ) OTF_Writer_writeDefScl( writer, 0, 10000, 100000, 123 ) #/*main*/ OTF_Writer_writeDefScl( writer, 0, 20000, 100000, 456 ) #/*sub*/ OTF_Writer_writeDefScl( writer, 0, 30000, 100000, 789 ) #/*sub2*/ OTF_Writer_writeDefScl( writer, 0, 40000, 100000, 1111 ) #/*sendsnapshot*/ OTF_Writer_writeDefFunctionGroup( writer, 0, 1000, "functiongroup one" ) OTF_Writer_writeDefFunctionGroup( writer, 0, 2000, "functiongroup two" ) OTF_Writer_writeDefFunction( writer, 0, 1, "mainfunction", 1000, 10000 ) OTF_Writer_writeDefFunction( writer, 0, 2, "subfunction one", 2000, 20000 ) OTF_Writer_writeDefFunction( writer, 0, 3, "subfunction two", 2000, 30000 ) OTF_Writer_writeDefCollectiveOperation( writer, 0, 1, "MPI_Barrier", OTF_COLLECTIVE_TYPE_BARRIER ); OTF_Writer_writeDefCounterGroup( writer, 0, 1000, "counter group one" ) OTF_Writer_writeDefCounter( writer, 0, 1, "flops", OTF_COUNTER_TYPE_ACC|OTF_COUNTER_SCOPE_START, 1000, "#" ) OTF_Writer_writeDefCounter( writer, 0, 2, "memory usage", OTF_COUNTER_TYPE_ABS|OTF_COUNTER_SCOPE_START, 1000, "MiB" ) OTF_Writer_writeDefFileGroup( writer, 0, 100, "file group one" ) OTF_Writer_writeDefFile( writer, 0, 1, "file one", 100 ) OTF_Writer_writeDefFile( writer, 0, 2, "file two", 100 ) #/* *** events *** */ for i in range(4): timebase= i*10000000 nexttimebase= (i+1)*10000000 #/* *** determine own, previous and next processid *** */ me= procs[i] if 3 == i : next= procs[0] else : next= procs[i+1] if 0 == i : prev= procs[3] else : prev= procs[i-1] #/* *** process start *** */ OTF_Writer_writeBeginProcess( writer, timebase, me ) OTF_Writer_writeEventComment( writer, timebase+1, me, "this process just started" ) OTF_Writer_writeEnter( writer, timebase+2, 1, me, 10000) OTF_Writer_writeFileOperation( writer, timebase+3, 1, me, handleid, 123, 456, 789, 0 ); ++handleid; OTF_Writer_writeFileOperation( writer, timebase+4, 2, me, handleid, 1230, 4560, 7890, 0 ); ++handleid; OTF_Writer_writeBeginFileOperation( writer, timebase +11, me, 100, 0 ); OTF_Writer_writeEndFileOperation( writer, timebase +12, me, 1, 100, handleid, 1230, 4567, 0 ); for j in range(1,1000) : #for j in range(1,3) : time= timebase+j*1000 OTF_Writer_writeCounter( writer, time, me, 1, j*10000 ) OTF_Writer_writeCounter( writer, time+1, me, 2, j ) time+= 100 OTF_Writer_writeCollectiveOperation( writer, time, me, 1, 1000, 1, 123, 456, 100, 40000 ) time+= 100 OTF_Writer_writeSendMsg( writer, time, me, next, 1000, 0, 4, 40000 ) time+= 100 for k in range(10) : #for k in range(3) : OTF_Writer_writeEnter( writer, time, 2, me, 20000 ) time+=10 OTF_Writer_writeLeave( writer, time, 2, me, 20000 ) time+=20 OTF_Writer_writeEnter( writer, time, 3, me, 30000 ) time+=10 OTF_Writer_writeLeave( writer, time, 3, me, 30000 ) time+=10 time+= 100; OTF_Writer_writeRecvMsg( writer, time, me, prev, 1000, 0, 4, 40000 ) #/* *** process end *** */ OTF_Writer_writeLeave( writer, nexttimebase-3, 1, me, 10000 ) OTF_Writer_writeEventComment( writer, nexttimebase-2, me, "this process will terminate soon" ) OTF_Writer_writeEndProcess( writer, nexttimebase-1, me ) #/* *** snapshots *** */ time= 100 for i in range(4) : OTF_Writer_writeSnapshotComment( writer, time, procs[i], "snapshot testcomment" ) time+= 10 OTF_Writer_writeEnterSnapshot( writer, time, 500, 1, procs[i], 10000 ) time+= 10 OTF_Writer_writeSendSnapshot( writer, time, 1500, procs[i], 1, 1000, 0, 128, 40000 ) time+= 10 OTF_Writer_writeOpenFileSnapshot( writer, time, 1, 2, procs[i], 3, 0 ) time+= 10 #/* *** statistics *** */ time= 100 for i in range(4) : OTF_Writer_writeSummaryComment( writer, time, procs[i], "summary testcomment" ) time+= 10 OTF_Writer_writeFunctionSummary( writer, time, 2, procs[i], 123, 300, 400 ) time+= 10 OTF_Writer_writeFunctionGroupSummary( writer, time, 2000, procs[i], 456, 500, 600 ) time+= 10 OTF_Writer_writeMessageSummary( writer, time, procs[i], 1, 1000, 0, 789, 123, 10000, 20000 ) time+= 10 OTF_Writer_writeFileOperationSummary( writer, time, 1, procs[i], 2, 3, 4, 5, 6, 7, 8 ) time+= 10 OTF_Writer_writeFileGroupOperationSummary( writer, time, 1, procs[i], 2, 3, 4, 5, 6, 7, 8 ) time+= 10 ################################################################################# if __name__ == '__main__': manager= OTF_FileManager_open( 100 ) writer= OTF_Writer_open( sys.argv[1], 1000000, manager ) WriteRecords(writer) OTF_Writer_close( writer ) OTF_FileManager_close( manager ) eztrace-1.1-7/extlib/gtg/extlib/otf/tests/python/python3/PaxHeaders.7332/test_read_qt.py0000644000000000000000000000013212544237152026102 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.938892559 30 ctime=1508162366.961839891 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/python/python3/test_read_qt.py0000644000175000017500000003334112544237152027275 0ustar00trahaytrahay00000000000000#! /usr/bin/python # This script uses Python bindings for Qt4 (python-qt4). # After installation you maybe have to add the module-path (e.g. /usr/lib/python2.5/site-packages) # to the environment variable $PYTHONPATH ################################################################################################## # 1st parameter = trace to read ################################################################################################## import otf import sys from PyQt4.QtGui import * from PyQt4.QtCore import * liste = [0 for j in range(47)] names = ["DefinitionComment", "DefTimerResolution", "DefProcess", "DefProcessGroup", "DefFunction", "DefFunctionGroup", "DefCollectiveOperation", "DefCounter", "DefCounterGroup", "DefScl", "DefSclFile", "DefCreator", "DefVersion", "DefFile", "DefFileGroup", "Enter", "Leave", "SendMsg", "RecvMsg", "Counter", "CollectiveOperation", "BeginCollectiveOperation", "EndCollectiveOperation", "EventComment", "BeginProcess", "EndProcess", "FileOperation", "BeginFileOperation", "EndFileOperation", "SnapshotComment", "EnterSnapshot", "SendSnapshot", "OpenFileSnapshot", "SummaryComment", "FunctionSummary", "FunctionGroupSummary", "MessageSummary", "CollopSummary", "FileOperationSummary", "FileGroupOperationSummary", "UnknownRecord", "DefMarker", "Marker", "RMAPut", "RMAPutRemoteEnd", "RMAGet", "RMAEnd"] #### Definitions #### def handleDefFunction(userData, stream, func, name, funcGroup, source, kvlist ): liste[4] = liste[4] + 1 return otf.OTF_RETURN_OK def handleDefFunctionGroup(userData, stream, funcGroup, name, kvlist ): liste[5] = liste[5] + 1 return otf.OTF_RETURN_OK def handleDefinitionComment(userData, stream, comment, kvlist ): liste[0] = liste[0] + 1 return otf.OTF_RETURN_OK def handleTimerResolution(userData, stream, ticksPerSecond, kvlist ): liste[1] = liste[1] + 1 return otf.OTF_RETURN_OK def handleDefProcess(userData, stream, process, name, parent, kvlist ): liste[2] = liste[2] + 1; return otf.OTF_RETURN_OK def handleDefProcessGroup(userData, stream, procGroup, name, numberOfProcs, procs, kvlist ): liste[3] = liste[3] + 1 return otf.OTF_RETURN_OK def handleDefCollectiveOperation (userData, stream, collOp, name, typ, kvlist ): liste[6] = liste[6] + 1 return otf.OTF_RETURN_OK def handleDefCounter (userData, stream, counter, name, properties, counterGroup, unit, kvlist ): liste[7] = liste[7] + 1 return otf.OTF_RETURN_OK def handleDefCounterGroup(userData, stream, counterGroup, name, kvlist ): liste[8] = liste[8] + 1 return otf.OTF_RETURN_OK def handleDefScl(userData, stream, source, sourceFile, line, kvlist ): liste[9] = liste[9] + 1 return otf.OTF_RETURN_OK def handleDefSclFile (userData, stream, sourceFile, name, kvlist ): liste[10] = liste[10] + 1; return otf.OTF_RETURN_OK def handleDefCreator (userData, stream, creator, kvlist ): liste[11] = liste[11] + 1 return otf.OTF_RETURN_OK def handleDefVersion (userData,stream, major, minor, sub, string, kvlist ): liste[12] = liste[12] + 1 return otf.OTF_RETURN_OK def handleDefFile (userData, stream, token, name, group, kvlist ): liste[13] = liste[13] + 1 return otf.OTF_RETURN_OK def handleDefFileGroup (userData, stream, token, name, kvlist ): liste[14] = liste[14] + 1 return otf.OTF_RETURN_OK #### Events #### def handleEnter(userData, time, function, process, source, kvlist ): liste[15] = liste[15] + 1 return otf.OTF_RETURN_OK def handleLeave(userData, time, function, process, source, kvlist ): liste[16] = liste[16] + 1 return otf.OTF_RETURN_OK def handleSendMsg (userData, time, sender, receiver, group, typ, length, source, kvlist ): liste[17] = liste[17] + 1 return otf.OTF_RETURN_OK def handleRecvMsg (userData, time, recvProc, sendProc, group, typ, length, source, kvlist ): liste[18] = liste[18] + 1 return otf.OTF_RETURN_OK def handleCounter (userData, time, process, counter, value, kvlist ): liste[19] = liste[19] + 1 return otf.OTF_RETURN_OK def handleCollectiveOperation (userData, time, process, collective, procGroup, rootProc, sent, received, duration, source, kvlist ): liste[20] = liste[20] + 1; return otf.OTF_RETURN_OK def handleBeginCollectiveOperation (uData, time, process, collOp, matchingId, procGroup, rootProc, sent, received, scltoken, kvlist ): liste[21] = liste[21] + 1 return otf.OTF_RETURN_OK def handleEndCollectiveOperation (uData, time, process, matchingId, kvlist ): liste[22] = liste[22] + 1 return otf.OTF_RETURN_OK def handleEventComment (userData, time, process, comment, kvlist ): liste[23] = liste[23] + 1 return otf.OTF_RETURN_OK def handleBeginProcess (userData, time, process, kvlist ): liste[24] = liste[24] + 1 return otf.OTF_RETURN_OK def handleEndProcess (userData, time, process, kvlist ): liste[25] = liste[25] + 1 return otf.OTF_RETURN_OK def handleFileOperation (userData, time, fileid, process, handleid, operation, bytes, duration, source, kvlist ): liste[26] = liste[26] + 1 return otf.OTF_RETURN_OK def handleBeginFileOperation (writer, time, process, handleid, scltoken, kvlist ): liste[27] = liste[27] + 1 return otf.OTF_RETURN_OK def handleEndFileOperation (writer, time, process, fileid, matchingId, handleid, operation, bytes, scltoken, kvlist ): liste[28] = liste[28] + 1 return otf.OTF_RETURN_OK #### Snapshots #### def handleSnapshotComment (userData, time, process, comment, kvlist ): liste[29] = liste[29] + 1 return otf.OTF_RETURN_OK def handleEnterSnapshot (userData, time, originaltime, function, process, source, kvlist ): liste[30] = liste[30] + 1 return otf.OTF_RETURN_OK def handleSendSnapshot (userData, time, originaltime, sender, receiver, procGroup, tag, length, source, kvlist ): liste[31] = liste[31] + 1 return otf.OTF_RETURN_OK def handleOpenFileSnapshot (userData, time, originaltime, fileid, process, handleid, source, kvlist ): liste[32] = liste[32] + 1 return otf.OTF_RETURN_OK #### Summary #### def handleSummaryComment (userData, time, process, comment, kvlist ): liste[33] = liste[33] + 1 return otf.OTF_RETURN_OK def handleFunctionSummary (userData, time, function, process, invocations, exclTime, inclTime, kvlist ): liste[34] = liste[34] + 1 return otf.OTF_RETURN_OK def handleFunctionGroupSummary (userData, time, funcGroup, process, invocations, exclTime, inclTime, kvlist ): liste[35] = liste[35] + 1 return otf.OTF_RETURN_OK def handleMessageSummary (userData, time, process, peer, comm, typ, sentNumber, receivedNumber, sentBytes, receivedBytes, kvlist ): liste[36] = liste[36] + 1 return otf.OTF_RETURN_OK def handleCollopSummary (userData, time, process, comm, collective, sentNumber, receivedNumber, sentBytes, receivedBytes, kvlist ): liste[37] = liste[37] + 1 return otf.OTF_RETURN_OK def handleFileOperationSummary (userData, time, fileid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, kvlist ): liste[38] = liste[38] + 1; return otf.OTF_RETURN_OK def handleFileGroupOperationSummary (uD, time, groupid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, kvlist ): liste[39] = liste[39] + 1 return otf.OTF_RETURN_OK def handleUnknownRecord (userData, time, process, record, kvlist ): liste[40] = liste[40] + 1 return otf.OTF_RETURN_OK #### Marker #### def handleDefMarker (userData, stream, token, name, typ, kvlist ): liste[41] = liste[41] + 1 return otf.OTF_RETURN_OK def handleMarker (userData, time, process, token, text, kvlist ): liste[42] = liste[42] + 1 return otf.OTF_RETURN_OK def handleRMAPut (userData, time, process, origin, target, communicator, tag, bytes, source, kvlist ): liste[43] = liste[43] + 1 return otf.OTF_RETURN_OK def handleRMAPutRemoteEnd (userData, time, process, origin, target, communicator, tag, bytes, source, kvlist ): liste[44] = liste[44] + 1 return otf.OTF_RETURN_OK def handleRMAGet (userData, time, process, origin, target, communicator, tag, bytes, source, kvlist ): liste[45] = liste[45] + 1 return otf.OTF_RETURN_OK def handleRMAEnd (userData, time, process, remote, communicator, tag, source, kvlist ): liste[46] = liste[46] + 1 return otf.OTF_RETURN_OK if len(sys.argv) <= 1: print ( "No tracefile given. Abort." ) exit() print ( "Tracefile: ", sys.argv[1] ) manager = otf.OTF_FileManager_open(100) handlers = otf.OTF_HandlerArray_open() reader = otf.OTF_Reader_open(sys.argv[1], manager) #### DEFINITIONS #### otf.OTF_HandlerArray_setHandler( handlers, handleDefFunction, otf.OTF_DEFFUNCTION_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefFunctionGroup, otf.OTF_DEFFUNCTIONGROUP_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefinitionComment, otf.OTF_DEFINITIONCOMMENT_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleTimerResolution, otf.OTF_DEFTIMERRESOLUTION_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefProcess, otf.OTF_DEFPROCESS_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefProcessGroup, otf.OTF_DEFPROCESSGROUP_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefCollectiveOperation, otf.OTF_DEFCOLLOP_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefCounter, otf.OTF_DEFCOUNTER_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefCounterGroup, otf.OTF_DEFCOUNTERGROUP_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefScl, otf.OTF_DEFSCL_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefSclFile, otf.OTF_DEFSCLFILE_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefCreator, otf.OTF_DEFCREATOR_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefVersion, otf.OTF_DEFVERSION_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefFile, otf.OTF_DEFFILE_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefFileGroup, otf.OTF_DEFFILEGROUP_RECORD ) #### EVENTS #### otf.OTF_HandlerArray_setHandler( handlers, handleEnter, otf.OTF_ENTER_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleLeave, otf.OTF_LEAVE_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleSendMsg, otf.OTF_SEND_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleRecvMsg, otf.OTF_RECEIVE_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleCounter, otf.OTF_COUNTER_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleCollectiveOperation, otf.OTF_COLLOPSUMMARY_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleBeginCollectiveOperation, otf.OTF_BEGINCOLLOP_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleEndCollectiveOperation, otf.OTF_ENDCOLLOP_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleEventComment, otf.OTF_EVENTCOMMENT_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleBeginProcess, otf.OTF_BEGINPROCESS_RECORD) otf.OTF_HandlerArray_setHandler( handlers, handleEndProcess, otf.OTF_ENDPROCESS_RECORD) otf.OTF_HandlerArray_setHandler( handlers, handleFileOperation, otf.OTF_FILEOPERATION_RECORD) otf.OTF_HandlerArray_setHandler( handlers, handleBeginFileOperation, otf.OTF_BEGINFILEOP_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleEndFileOperation, otf.OTF_ENDFILEOP_RECORD ) #### SNAPSHOTS #### otf.OTF_HandlerArray_setHandler( handlers, handleSnapshotComment, otf.OTF_SNAPSHOTCOMMENT_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleEnterSnapshot, otf.OTF_ENTERSNAPSHOT_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleSendSnapshot, otf.OTF_SENDSNAPSHOT_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleOpenFileSnapshot, otf.OTF_OPENFILESNAPSHOT_RECORD ) #### SUMMARY #### otf.OTF_HandlerArray_setHandler( handlers, handleSummaryComment, otf.OTF_SUMMARYCOMMENT_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleFunctionSummary, otf.OTF_FUNCTIONSUMMARY_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleFunctionGroupSummary, otf.OTF_FUNCTIONGROUPSUMMARY_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleMessageSummary, otf.OTF_MESSAGESUMMARY_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleCollopSummary, otf.OTF_COLLOPSUMMARY_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleFileOperationSummary, otf.OTF_FILEOPERATIONSUMMARY_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleFileGroupOperationSummary, otf.OTF_FILEGROUPOPERATIONSUMMARY_RECORD ) #### UNKNOWN #### otf.OTF_HandlerArray_setHandler( handlers, handleUnknownRecord, otf.OTF_UNKNOWN_RECORD ) #### MARKER #### otf.OTF_HandlerArray_setHandler( handlers, handleDefMarker, otf.OTF_DEFMARKER_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleMarker, otf.OTF_MARKER_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleRMAPut, otf.OTF_RMAPUT_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleRMAPutRemoteEnd, otf.OTF_RMAPUTRE_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleRMAGet, otf.OTF_RMAGET_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleRMAEnd, otf.OTF_RMAEND_RECORD ) otf.OTF_Reader_readDefinitions(reader, handlers) otf.OTF_Reader_readEvents(reader, handlers) otf.OTF_Reader_readSnapshots(reader, handlers) otf.OTF_Reader_readStatistics(reader, handlers) otf.OTF_Reader_readMarkers(reader, handlers) otf.OTF_Reader_close(reader) otf.OTF_HandlerArray_close(handlers) otf.OTF_FileManager_close(manager) app = QApplication(sys.argv) window = QWidget() window.setWindowTitle("OTF-Reader in Python") window.setGeometry(400,300,400,400) window.setFixedSize(400,400) tabelle = QTableWidget(window) tabelle.setGeometry(5,5,390,390) tabelle.setRowCount(0) tabelle.setColumnCount(2) tabelle.setHorizontalHeaderItem(0,QTableWidgetItem("Records")) tabelle.setHorizontalHeaderItem(1,QTableWidgetItem("Calls")) tabelle.setColumnWidth(0,245) tabelle.horizontalHeader().setResizeMode(QHeaderView.Fixed); tabelle.verticalHeader().setResizeMode(QHeaderView.Fixed) n = 0 k = 0 for i in liste: if i > 0: tabelle.setRowCount(tabelle.rowCount() + 1) tabelle.setItem(k,0,QTableWidgetItem(names[n])) tabelle.setItem(k,1,QTableWidgetItem(str(i))) k = k + 1 n = n + 1 window.show() app.exec_() eztrace-1.1-7/extlib/gtg/extlib/otf/tests/python/PaxHeaders.7332/test_write.py0000644000000000000000000000013212544237152024211 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.938892559 30 ctime=1508162366.953839193 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/python/test_write.py0000644000175000017500000001307512544237152025406 0ustar00trahaytrahay00000000000000#! /usr/bin/python ################################################################################ # 1st parameter = trace to write ################################################################################ from otf import * import sys def WriteRecords( writer ): procs= [ 1, 2, 11, 12 ] handleid= 0 # definitions OTF_Writer_writeDefinitionComment( writer, 0, "this is a definition comment" ) OTF_Writer_writeDefCreator( writer, 0, "test_complete" ) OTF_Writer_writeDefTimerResolution( writer, 0, 1234 ) OTF_Writer_writeDefProcess( writer, 0, procs[0], "process number one", 0 ) OTF_Writer_writeDefProcess( writer, 0, procs[1], "process number two", 0 ) OTF_Writer_writeDefProcess( writer, 0, procs[2], "child one of process one", procs[0] ) OTF_Writer_writeDefProcess( writer, 0, procs[3], "child two of process one", procs[0] ) OTF_Writer_writeDefProcessGroup( writer, 0, 1000, "commworld", 4, procs ) OTF_Writer_writeDefSclFile( writer, 0, 100000, "main.c" ) OTF_Writer_writeDefScl( writer, 0, 10000, 100000, 123 ) #/*main*/ OTF_Writer_writeDefScl( writer, 0, 20000, 100000, 456 ) #/*sub*/ OTF_Writer_writeDefScl( writer, 0, 30000, 100000, 789 ) #/*sub2*/ OTF_Writer_writeDefScl( writer, 0, 40000, 100000, 1111 ) #/*sendsnapshot*/ OTF_Writer_writeDefFunctionGroup( writer, 0, 1000, "functiongroup one" ) OTF_Writer_writeDefFunctionGroup( writer, 0, 2000, "functiongroup two" ) OTF_Writer_writeDefFunction( writer, 0, 1, "mainfunction", 1000, 10000 ) OTF_Writer_writeDefFunction( writer, 0, 2, "subfunction one", 2000, 20000 ) OTF_Writer_writeDefFunction( writer, 0, 3, "subfunction two", 2000, 30000 ) OTF_Writer_writeDefCollectiveOperation( writer, 0, 1, "MPI_Barrier", OTF_COLLECTIVE_TYPE_BARRIER ); OTF_Writer_writeDefCounterGroup( writer, 0, 1000, "counter group one" ) OTF_Writer_writeDefCounter( writer, 0, 1, "flops", OTF_COUNTER_TYPE_ACC|OTF_COUNTER_SCOPE_START, 1000, "#" ) OTF_Writer_writeDefCounter( writer, 0, 2, "memory usage", OTF_COUNTER_TYPE_ABS|OTF_COUNTER_SCOPE_START, 1000, "MiB" ) OTF_Writer_writeDefFileGroup( writer, 0, 100, "file group one" ) OTF_Writer_writeDefFile( writer, 0, 1, "file one", 100 ) OTF_Writer_writeDefFile( writer, 0, 2, "file two", 100 ) #/* *** events *** */ for i in range(4): timebase= i*10000000 nexttimebase= (i+1)*10000000 #/* *** determine own, previous and next processid *** */ me= procs[i] if 3 == i : next= procs[0] else : next= procs[i+1] if 0 == i : prev= procs[3] else : prev= procs[i-1] #/* *** process start *** */ OTF_Writer_writeBeginProcess( writer, timebase, me ) OTF_Writer_writeEventComment( writer, timebase+1, me, "this process just started" ) OTF_Writer_writeEnter( writer, timebase+2, 1, me, 10000) OTF_Writer_writeFileOperation( writer, timebase+3, 1, me, handleid, 123, 456, 789, 0 ); ++handleid; OTF_Writer_writeFileOperation( writer, timebase+4, 2, me, handleid, 1230, 4560, 7890, 0 ); ++handleid; OTF_Writer_writeBeginFileOperation( writer, timebase +11, me, 100, 0 ); OTF_Writer_writeEndFileOperation( writer, timebase +12, me, 1, 100, handleid, 1230, 4567, 0 ); for j in range(1,1000) : #for j in range(1,3) : time= timebase+j*1000 OTF_Writer_writeCounter( writer, time, me, 1, j*10000 ) OTF_Writer_writeCounter( writer, time+1, me, 2, j ) time+= 100 OTF_Writer_writeCollectiveOperation( writer, time, me, 1, 1000, 1, 123, 456, 100, 40000 ) time+= 100 OTF_Writer_writeSendMsg( writer, time, me, next, 1000, 0, 4, 40000 ) time+= 100 for k in range(10) : #for k in range(3) : OTF_Writer_writeEnter( writer, time, 2, me, 20000 ) time+=10 OTF_Writer_writeLeave( writer, time, 2, me, 20000 ) time+=20 OTF_Writer_writeEnter( writer, time, 3, me, 30000 ) time+=10 OTF_Writer_writeLeave( writer, time, 3, me, 30000 ) time+=10 time+= 100; OTF_Writer_writeRecvMsg( writer, time, me, prev, 1000, 0, 4, 40000 ) #/* *** process end *** */ OTF_Writer_writeLeave( writer, nexttimebase-3, 1, me, 10000 ) OTF_Writer_writeEventComment( writer, nexttimebase-2, me, "this process will terminate soon" ) OTF_Writer_writeEndProcess( writer, nexttimebase-1, me ) #/* *** snapshots *** */ time= 100 for i in range(4) : OTF_Writer_writeSnapshotComment( writer, time, procs[i], "snapshot testcomment" ) time+= 10 OTF_Writer_writeEnterSnapshot( writer, time, 500, 1, procs[i], 10000 ) time+= 10 OTF_Writer_writeSendSnapshot( writer, time, 1500, procs[i], 1, 1000, 0, 128, 40000 ) time+= 10 OTF_Writer_writeOpenFileSnapshot( writer, time, 1, 2, procs[i], 3, 0 ) time+= 10 #/* *** statistics *** */ time= 100 for i in range(4) : OTF_Writer_writeSummaryComment( writer, time, procs[i], "summary testcomment" ) time+= 10 OTF_Writer_writeFunctionSummary( writer, time, 2, procs[i], 123, 300, 400 ) time+= 10 OTF_Writer_writeFunctionGroupSummary( writer, time, 2000, procs[i], 456, 500, 600 ) time+= 10 OTF_Writer_writeMessageSummary( writer, time, procs[i], 1, 1000, 0, 789, 123, 10000, 20000 ) time+= 10 OTF_Writer_writeFileOperationSummary( writer, time, 1, procs[i], 2, 3, 4, 5, 6, 7, 8 ) time+= 10 OTF_Writer_writeFileGroupOperationSummary( writer, time, 1, procs[i], 2, 3, 4, 5, 6, 7, 8 ) time+= 10 ################################################################################# if __name__ == '__main__': manager= OTF_FileManager_open( 100 ) writer= OTF_Writer_open( sys.argv[1], 1000000, manager ) WriteRecords(writer) OTF_Writer_close( writer ) OTF_FileManager_close( manager ) eztrace-1.1-7/extlib/gtg/extlib/otf/tests/python/PaxHeaders.7332/test_read_qt.py0000644000000000000000000000013212544237152024476 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.938892559 30 ctime=1508162366.953839193 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/python/test_read_qt.py0000644000175000017500000003333312544237152025672 0ustar00trahaytrahay00000000000000#! /usr/bin/python # This script uses Python bindings for Qt4 (python-qt4). # After installation you maybe have to add the module-path (e.g. /usr/lib/python2.5/site-packages) # to the environment variable $PYTHONPATH ################################################################################################## # 1st parameter = trace to read ################################################################################################## import otf import sys from PyQt4.QtGui import * from PyQt4.QtCore import * liste = [0 for j in xrange(47)] names = ["DefinitionComment", "DefTimerResolution", "DefProcess", "DefProcessGroup", "DefFunction", "DefFunctionGroup", "DefCollectiveOperation", "DefCounter", "DefCounterGroup", "DefScl", "DefSclFile", "DefCreator", "DefVersion", "DefFile", "DefFileGroup", "Enter", "Leave", "SendMsg", "RecvMsg", "Counter", "CollectiveOperation", "BeginCollectiveOperation", "EndCollectiveOperation", "EventComment", "BeginProcess", "EndProcess", "FileOperation", "BeginFileOperation", "EndFileOperation", "SnapshotComment", "EnterSnapshot", "SendSnapshot", "OpenFileSnapshot", "SummaryComment", "FunctionSummary", "FunctionGroupSummary", "MessageSummary", "CollopSummary", "FileOperationSummary", "FileGroupOperationSummary", "UnknownRecord", "DefMarker", "Marker", "RMAPut", "RMAPutRemoteEnd", "RMAGet", "RMAEnd"] #### Definitions #### def handleDefFunction(userData, stream, func, name, funcGroup, source, kvlist ): liste[4] = liste[4] + 1 return otf.OTF_RETURN_OK def handleDefFunctionGroup(userData, stream, funcGroup, name, kvlist ): liste[5] = liste[5] + 1 return otf.OTF_RETURN_OK def handleDefinitionComment(userData, stream, comment, kvlist ): liste[0] = liste[0] + 1 return otf.OTF_RETURN_OK def handleTimerResolution(userData, stream, ticksPerSecond, kvlist ): liste[1] = liste[1] + 1 return otf.OTF_RETURN_OK def handleDefProcess(userData, stream, process, name, parent, kvlist ): liste[2] = liste[2] + 1; return otf.OTF_RETURN_OK def handleDefProcessGroup(userData, stream, procGroup, name, numberOfProcs, procs, kvlist ): liste[3] = liste[3] + 1 return otf.OTF_RETURN_OK def handleDefCollectiveOperation (userData, stream, collOp, name, typ, kvlist ): liste[6] = liste[6] + 1 return otf.OTF_RETURN_OK def handleDefCounter (userData, stream, counter, name, properties, counterGroup, unit, kvlist ): liste[7] = liste[7] + 1 return otf.OTF_RETURN_OK def handleDefCounterGroup(userData, stream, counterGroup, name, kvlist ): liste[8] = liste[8] + 1 return otf.OTF_RETURN_OK def handleDefScl(userData, stream, source, sourceFile, line, kvlist ): liste[9] = liste[9] + 1 return otf.OTF_RETURN_OK def handleDefSclFile (userData, stream, sourceFile, name, kvlist ): liste[10] = liste[10] + 1; return otf.OTF_RETURN_OK def handleDefCreator (userData, stream, creator, kvlist ): liste[11] = liste[11] + 1 return otf.OTF_RETURN_OK def handleDefVersion (userData,stream, major, minor, sub, string, kvlist ): liste[12] = liste[12] + 1 return otf.OTF_RETURN_OK def handleDefFile (userData, stream, token, name, group, kvlist ): liste[13] = liste[13] + 1 return otf.OTF_RETURN_OK def handleDefFileGroup (userData, stream, token, name, kvlist ): liste[14] = liste[14] + 1 return otf.OTF_RETURN_OK #### Events #### def handleEnter(userData, time, function, process, source, kvlist ): liste[15] = liste[15] + 1 return otf.OTF_RETURN_OK def handleLeave(userData, time, function, process, source, kvlist ): liste[16] = liste[16] + 1 return otf.OTF_RETURN_OK def handleSendMsg (userData, time, sender, receiver, group, typ, length, source, kvlist ): liste[17] = liste[17] + 1 return otf.OTF_RETURN_OK def handleRecvMsg (userData, time, recvProc, sendProc, group, typ, length, source, kvlist ): liste[18] = liste[18] + 1 return otf.OTF_RETURN_OK def handleCounter (userData, time, process, counter, value, kvlist ): liste[19] = liste[19] + 1 return otf.OTF_RETURN_OK def handleCollectiveOperation (userData, time, process, collective, procGroup, rootProc, sent, received, duration, source, kvlist ): liste[20] = liste[20] + 1; return otf.OTF_RETURN_OK def handleBeginCollectiveOperation (uData, time, process, collOp, matchingId, procGroup, rootProc, sent, received, scltoken, kvlist ): liste[21] = liste[21] + 1 return otf.OTF_RETURN_OK def handleEndCollectiveOperation (uData, time, process, matchingId, kvlist ): liste[22] = liste[22] + 1 return otf.OTF_RETURN_OK def handleEventComment (userData, time, process, comment, kvlist ): liste[23] = liste[23] + 1 return otf.OTF_RETURN_OK def handleBeginProcess (userData, time, process, kvlist ): liste[24] = liste[24] + 1 return otf.OTF_RETURN_OK def handleEndProcess (userData, time, process, kvlist ): liste[25] = liste[25] + 1 return otf.OTF_RETURN_OK def handleFileOperation (userData, time, fileid, process, handleid, operation, bytes, duration, source, kvlist ): liste[26] = liste[26] + 1 return otf.OTF_RETURN_OK def handleBeginFileOperation (writer, time, process, handleid, scltoken, kvlist ): liste[27] = liste[27] + 1 return otf.OTF_RETURN_OK def handleEndFileOperation (writer, time, process, fileid, matchingId, handleid, operation, bytes, scltoken, kvlist ): liste[28] = liste[28] + 1 return otf.OTF_RETURN_OK #### Snapshots #### def handleSnapshotComment (userData, time, process, comment, kvlist ): liste[29] = liste[29] + 1 return otf.OTF_RETURN_OK def handleEnterSnapshot (userData, time, originaltime, function, process, source, kvlist ): liste[30] = liste[30] + 1 return otf.OTF_RETURN_OK def handleSendSnapshot (userData, time, originaltime, sender, receiver, procGroup, tag, length, source, kvlist ): liste[31] = liste[31] + 1 return otf.OTF_RETURN_OK def handleOpenFileSnapshot (userData, time, originaltime, fileid, process, handleid, source, kvlist ): liste[32] = liste[32] + 1 return otf.OTF_RETURN_OK #### Summary #### def handleSummaryComment (userData, time, process, comment, kvlist ): liste[33] = liste[33] + 1 return otf.OTF_RETURN_OK def handleFunctionSummary (userData, time, function, process, invocations, exclTime, inclTime, kvlist ): liste[34] = liste[34] + 1 return otf.OTF_RETURN_OK def handleFunctionGroupSummary (userData, time, funcGroup, process, invocations, exclTime, inclTime, kvlist ): liste[35] = liste[35] + 1 return otf.OTF_RETURN_OK def handleMessageSummary (userData, time, process, peer, comm, typ, sentNumber, receivedNumber, sentBytes, receivedBytes, kvlist ): liste[36] = liste[36] + 1 return otf.OTF_RETURN_OK def handleCollopSummary (userData, time, process, comm, collective, sentNumber, receivedNumber, sentBytes, receivedBytes, kvlist ): liste[37] = liste[37] + 1 return otf.OTF_RETURN_OK def handleFileOperationSummary (userData, time, fileid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, kvlist ): liste[38] = liste[38] + 1; return otf.OTF_RETURN_OK def handleFileGroupOperationSummary (uD, time, groupid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, kvlist ): liste[39] = liste[39] + 1 return otf.OTF_RETURN_OK def handleUnknownRecord (userData, time, process, record, kvlist ): liste[40] = liste[40] + 1 return otf.OTF_RETURN_OK #### Marker #### def handleDefMarker (userData, stream, token, name, typ, kvlist ): liste[41] = liste[41] + 1 return otf.OTF_RETURN_OK def handleMarker (userData, time, process, token, text, kvlist ): liste[42] = liste[42] + 1 return otf.OTF_RETURN_OK def handleRMAPut (userData, time, process, origin, target, communicator, tag, bytes, source, kvlist ): liste[43] = liste[43] + 1 return otf.OTF_RETURN_OK def handleRMAPutRemoteEnd (userData, time, process, origin, target, communicator, tag, bytes, source, kvlist ): liste[44] = liste[44] + 1 return otf.OTF_RETURN_OK def handleRMAGet (userData, time, process, origin, target, communicator, tag, bytes, source, kvlist ): liste[45] = liste[45] + 1 return otf.OTF_RETURN_OK def handleRMAEnd (userData, time, process, remote, communicator, tag, source, kvlist ): liste[46] = liste[46] + 1 return otf.OTF_RETURN_OK if len(sys.argv) <= 1: print "No tracefile given. Abort." exit() print "Tracefile: ", sys.argv[1] manager = otf.OTF_FileManager_open(100) handlers = otf.OTF_HandlerArray_open() reader = otf.OTF_Reader_open(sys.argv[1], manager) #### DEFINITIONS #### otf.OTF_HandlerArray_setHandler( handlers, handleDefFunction, otf.OTF_DEFFUNCTION_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefFunctionGroup, otf.OTF_DEFFUNCTIONGROUP_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefinitionComment, otf.OTF_DEFINITIONCOMMENT_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleTimerResolution, otf.OTF_DEFTIMERRESOLUTION_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefProcess, otf.OTF_DEFPROCESS_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefProcessGroup, otf.OTF_DEFPROCESSGROUP_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefCollectiveOperation, otf.OTF_DEFCOLLOP_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefCounter, otf.OTF_DEFCOUNTER_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefCounterGroup, otf.OTF_DEFCOUNTERGROUP_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefScl, otf.OTF_DEFSCL_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefSclFile, otf.OTF_DEFSCLFILE_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefCreator, otf.OTF_DEFCREATOR_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefVersion, otf.OTF_DEFVERSION_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefFile, otf.OTF_DEFFILE_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleDefFileGroup, otf.OTF_DEFFILEGROUP_RECORD ) #### EVENTS #### otf.OTF_HandlerArray_setHandler( handlers, handleEnter, otf.OTF_ENTER_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleLeave, otf.OTF_LEAVE_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleSendMsg, otf.OTF_SEND_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleRecvMsg, otf.OTF_RECEIVE_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleCounter, otf.OTF_COUNTER_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleCollectiveOperation, otf.OTF_COLLOPSUMMARY_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleBeginCollectiveOperation, otf.OTF_BEGINCOLLOP_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleEndCollectiveOperation, otf.OTF_ENDCOLLOP_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleEventComment, otf.OTF_EVENTCOMMENT_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleBeginProcess, otf.OTF_BEGINPROCESS_RECORD) otf.OTF_HandlerArray_setHandler( handlers, handleEndProcess, otf.OTF_ENDPROCESS_RECORD) otf.OTF_HandlerArray_setHandler( handlers, handleFileOperation, otf.OTF_FILEOPERATION_RECORD) otf.OTF_HandlerArray_setHandler( handlers, handleBeginFileOperation, otf.OTF_BEGINFILEOP_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleEndFileOperation, otf.OTF_ENDFILEOP_RECORD ) #### SNAPSHOTS #### otf.OTF_HandlerArray_setHandler( handlers, handleSnapshotComment, otf.OTF_SNAPSHOTCOMMENT_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleEnterSnapshot, otf.OTF_ENTERSNAPSHOT_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleSendSnapshot, otf.OTF_SENDSNAPSHOT_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleOpenFileSnapshot, otf.OTF_OPENFILESNAPSHOT_RECORD ) #### SUMMARY #### otf.OTF_HandlerArray_setHandler( handlers, handleSummaryComment, otf.OTF_SUMMARYCOMMENT_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleFunctionSummary, otf.OTF_FUNCTIONSUMMARY_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleFunctionGroupSummary, otf.OTF_FUNCTIONGROUPSUMMARY_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleMessageSummary, otf.OTF_MESSAGESUMMARY_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleCollopSummary, otf.OTF_COLLOPSUMMARY_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleFileOperationSummary, otf.OTF_FILEOPERATIONSUMMARY_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleFileGroupOperationSummary, otf.OTF_FILEGROUPOPERATIONSUMMARY_RECORD ) #### UNKNOWN #### otf.OTF_HandlerArray_setHandler( handlers, handleUnknownRecord, otf.OTF_UNKNOWN_RECORD ) #### MARKER #### otf.OTF_HandlerArray_setHandler( handlers, handleDefMarker, otf.OTF_DEFMARKER_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleMarker, otf.OTF_MARKER_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleRMAPut, otf.OTF_RMAPUT_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleRMAPutRemoteEnd, otf.OTF_RMAPUTRE_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleRMAGet, otf.OTF_RMAGET_RECORD ) otf.OTF_HandlerArray_setHandler( handlers, handleRMAEnd, otf.OTF_RMAEND_RECORD ) otf.OTF_Reader_readDefinitions(reader, handlers) otf.OTF_Reader_readEvents(reader, handlers) otf.OTF_Reader_readSnapshots(reader, handlers) otf.OTF_Reader_readStatistics(reader, handlers) otf.OTF_Reader_readMarkers(reader, handlers) otf.OTF_Reader_close(reader) otf.OTF_HandlerArray_close(handlers) otf.OTF_FileManager_close(manager) app = QApplication(sys.argv) window = QWidget() window.setWindowTitle("OTF-Reader in Python") window.setGeometry(400,300,400,400) window.setFixedSize(400,400) tabelle = QTableWidget(window) tabelle.setGeometry(5,5,390,390) tabelle.setRowCount(0) tabelle.setColumnCount(2) tabelle.setHorizontalHeaderItem(0,QTableWidgetItem("Records")) tabelle.setHorizontalHeaderItem(1,QTableWidgetItem("Calls")) tabelle.setColumnWidth(0,245) tabelle.horizontalHeader().setResizeMode(QHeaderView.Fixed); tabelle.verticalHeader().setResizeMode(QHeaderView.Fixed) n = 0 k = 0 for i in liste: if i > 0: tabelle.setRowCount(tabelle.rowCount() + 1) tabelle.setItem(k,0,QTableWidgetItem(names[n])) tabelle.setItem(k,1,QTableWidgetItem(str(i))) k = k + 1 n = n + 1 window.show() app.exec_() eztrace-1.1-7/extlib/gtg/extlib/otf/tests/PaxHeaders.7332/generic_streams-mpi0000644000000000000000000000013213171135477024011 xustar0030 mtime=1508162367.061848623 30 atime=1508162367.741908015 30 ctime=1508162367.061848623 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/generic_streams-mpi/0000755000175000017500000000000013171135477025255 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/otf/tests/generic_streams-mpi/PaxHeaders.7332/generic_streams_mpi.c0000644000000000000000000000013212544237152030245 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.938892559 30 ctime=1508162367.061848623 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/generic_streams-mpi/generic_streams_mpi.c0000644000175000017500000000405412544237152031437 0ustar00trahaytrahay00000000000000#include #include #include #include #include #include #include int main(int argc, char** argv) { const char* namestub; uint64_t num_events = 100000000; /* 1E9 events */ uint64_t i; uint64_t time = 0; struct timespec start_ts; struct timespec end_ts; double secs; int com_rank, com_size; OTF_FileManager* manager; OTF_WStream* wstream; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &com_rank); MPI_Comm_size(MPI_COMM_WORLD, &com_size); if (argc > 1) { namestub = argv[1]; } else { fprintf(stderr, "No filenamestub was given!\n"); exit(1); } if (argc > 2) { num_events = atol(argv[2]); } manager = OTF_FileManager_open(4); assert(manager); wstream = OTF_WStream_open(namestub, com_rank + 1, manager); assert(wstream); clock_gettime(CLOCK_REALTIME, &start_ts); printf("[%i] Starting to send %lli events\n", com_rank, (long long int)num_events / com_size); for(i = 0; i < num_events / 2 / com_size; i++) { OTF_WStream_writeEnter(wstream, time++, com_size + 1, com_rank + 1, 0); OTF_WStream_writeLeave(wstream, time++, com_size + 1, com_rank + 1, 0); } OTF_WStream_close(wstream); MPI_Barrier(MPI_COMM_WORLD); clock_gettime(CLOCK_REALTIME, &end_ts); /* write master control file */ if (com_rank == 0) { OTF_MasterControl* master = OTF_MasterControl_new(manager); assert(master != NULL); for (i = 1; i <= (uint64_t)com_size; i++) { OTF_MasterControl_append(master, i, i); } OTF_MasterControl_write(master, namestub); OTF_MasterControl_close(master); } secs = (end_ts.tv_sec - start_ts.tv_sec) + (end_ts.tv_nsec - start_ts.tv_nsec) / 1E9; printf("Finished: %li events written in %1.5f secs\n--> %5.3f events per second\n", num_events, secs, num_events / secs); OTF_FileManager_close(manager); MPI_Finalize(); return 0; } eztrace-1.1-7/extlib/gtg/extlib/otf/tests/generic_streams-mpi/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212544237152026116 xustar0030 mtime=1435582058.539899952 30 atime=1508162197.732240295 30 ctime=1508162367.057848274 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/generic_streams-mpi/Makefile.am0000644000175000017500000000117012544237152027304 0ustar00trahaytrahay00000000000000CC = $(MPICC) if AMHAVECLOCKGETTIME if AMHAVEMPI check_PROGRAMS = otf_generic_streams_mpi otf_generic_streams_mpi_CFLAGS = $(MPICFLAGS) otf_generic_streams_mpi_SOURCES = generic_streams_mpi.c otf_generic_streams_mpi_DEPENDENCIES = $(top_builddir)/otflib/libopen-trace-format.la otf_generic_streams_mpi_LDADD = $(top_builddir)/otflib/libopen-trace-format.la \ $(CLOCK_GETTIME_LIB) \ $(MPI_LIB_LINE) otf_generic_streams_mpi_CPPFLAGS = $(AM_CPPFLAGS) \ -I$(top_builddir)/otflib \ -I$(top_srcdir)/otflib \ $(MPI_INCLUDE_LINE) clean-local: rm -f *.otf *.def *.events *.marker *.otf.z *.def.z *.events.z *.marker.z endif endif eztrace-1.1-7/extlib/gtg/extlib/otf/tests/generic_streams-mpi/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135225026122 xustar0030 mtime=1508162197.756241964 30 atime=1508162279.938483493 30 ctime=1508162367.061848623 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/generic_streams-mpi/Makefile.in0000644000175000017500000005706113171135225027322 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ @AMHAVECLOCKGETTIME_TRUE@@AMHAVEMPI_TRUE@check_PROGRAMS = otf_generic_streams_mpi$(EXEEXT) subdir = tests/generic_streams-mpi ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/m4/libtool.m4 \ $(top_srcdir)/config/m4/ltoptions.m4 \ $(top_srcdir)/config/m4/ltsugar.m4 \ $(top_srcdir)/config/m4/ltversion.m4 \ $(top_srcdir)/config/m4/lt~obsolete.m4 \ $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/config/m4/acinclude.debug.m4 \ $(top_srcdir)/config/m4/acinclude.math.m4 \ $(top_srcdir)/config/m4/acinclude.mpi.m4 \ $(top_srcdir)/config/m4/acinclude.omp.m4 \ $(top_srcdir)/config/m4/acinclude.pdflatex_pgfplots.m4 \ $(top_srcdir)/config/m4/acinclude.swig_python.m4 \ $(top_srcdir)/config/m4/acinclude.vtf3.m4 \ $(top_srcdir)/config/m4/acinclude.verbose.m4 \ $(top_srcdir)/config/m4/acinclude.zlib.m4 \ $(top_srcdir)/config/m4/acinclude.zoidfs.m4 \ $(top_srcdir)/config/m4/acarchive/ax_mpi.m4 \ $(top_srcdir)/config/m4/acarchive/ax_openmp.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__otf_generic_streams_mpi_SOURCES_DIST = generic_streams_mpi.c @AMHAVECLOCKGETTIME_TRUE@@AMHAVEMPI_TRUE@am_otf_generic_streams_mpi_OBJECTS = otf_generic_streams_mpi-generic_streams_mpi.$(OBJEXT) otf_generic_streams_mpi_OBJECTS = \ $(am_otf_generic_streams_mpi_OBJECTS) am__DEPENDENCIES_1 = AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = otf_generic_streams_mpi_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(otf_generic_streams_mpi_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(otf_generic_streams_mpi_SOURCES) DIST_SOURCES = $(am__otf_generic_streams_mpi_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BMI_INCLUDE_DIR = @BMI_INCLUDE_DIR@ BMI_LIB_DIR = @BMI_LIB_DIR@ CC = $(MPICC) CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLOCK_GETTIME_LIB = @CLOCK_GETTIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHLIB = @MATHLIB@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICFLAGS = @MPICFLAGS@ MPICXX = @MPICXX@ MPICXXFLAGS = @MPICXXFLAGS@ MPILIBS = @MPILIBS@ MPI_INCLUDE_DIR = @MPI_INCLUDE_DIR@ MPI_INCLUDE_LINE = @MPI_INCLUDE_LINE@ MPI_LIB_DIR = @MPI_LIB_DIR@ MPI_LIB_LINE = @MPI_LIB_LINE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENMP_CXXFLAGS = @OPENMP_CXXFLAGS@ OTF_VERSION_LIBRARY = @OTF_VERSION_LIBRARY@ OTF_VERSION_MAJOR = @OTF_VERSION_MAJOR@ OTF_VERSION_MINOR = @OTF_VERSION_MINOR@ OTF_VERSION_STRING = @OTF_VERSION_STRING@ OTF_VERSION_SUB = @OTF_VERSION_SUB@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFTEX = @PDFTEX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWIG = @SWIG@ SWIG_PYTHON_CFLAGS = @SWIG_PYTHON_CFLAGS@ SWIG_PYTHON_OPTS = @SWIG_PYTHON_OPTS@ VERSION = @VERSION@ VTF3_INCLUDE_DIR = @VTF3_INCLUDE_DIR@ VTF3_INCLUDE_LINE = @VTF3_INCLUDE_LINE@ VTF3_LIB_DIR = @VTF3_LIB_DIR@ VTF3_LIB_LINE = @VTF3_LIB_LINE@ ZLIB_INCLUDE_DIR = @ZLIB_INCLUDE_DIR@ ZLIB_INCLUDE_LINE = @ZLIB_INCLUDE_LINE@ ZLIB_LIB_DIR = @ZLIB_LIB_DIR@ ZLIB_LIB_LINE = @ZLIB_LIB_LINE@ ZOIDFS_INCLUDE_DIR = @ZOIDFS_INCLUDE_DIR@ ZOIDFS_INCLUDE_LINE = @ZOIDFS_INCLUDE_LINE@ ZOIDFS_LIB_DIR = @ZOIDFS_LIB_DIR@ ZOIDFS_LIB_LINE = @ZOIDFS_LIB_LINE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_inttypes_h = @have_inttypes_h@ have_stdint_h = @have_stdint_h@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ python_config = @python_config@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sizeof_long = @sizeof_long@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @AMHAVECLOCKGETTIME_TRUE@@AMHAVEMPI_TRUE@otf_generic_streams_mpi_CFLAGS = $(MPICFLAGS) @AMHAVECLOCKGETTIME_TRUE@@AMHAVEMPI_TRUE@otf_generic_streams_mpi_SOURCES = generic_streams_mpi.c @AMHAVECLOCKGETTIME_TRUE@@AMHAVEMPI_TRUE@otf_generic_streams_mpi_DEPENDENCIES = $(top_builddir)/otflib/libopen-trace-format.la @AMHAVECLOCKGETTIME_TRUE@@AMHAVEMPI_TRUE@otf_generic_streams_mpi_LDADD = $(top_builddir)/otflib/libopen-trace-format.la \ @AMHAVECLOCKGETTIME_TRUE@@AMHAVEMPI_TRUE@ $(CLOCK_GETTIME_LIB) \ @AMHAVECLOCKGETTIME_TRUE@@AMHAVEMPI_TRUE@ $(MPI_LIB_LINE) @AMHAVECLOCKGETTIME_TRUE@@AMHAVEMPI_TRUE@otf_generic_streams_mpi_CPPFLAGS = $(AM_CPPFLAGS) \ @AMHAVECLOCKGETTIME_TRUE@@AMHAVEMPI_TRUE@ -I$(top_builddir)/otflib \ @AMHAVECLOCKGETTIME_TRUE@@AMHAVEMPI_TRUE@ -I$(top_srcdir)/otflib \ @AMHAVECLOCKGETTIME_TRUE@@AMHAVEMPI_TRUE@ $(MPI_INCLUDE_LINE) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/generic_streams-mpi/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign tests/generic_streams-mpi/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list otf_generic_streams_mpi$(EXEEXT): $(otf_generic_streams_mpi_OBJECTS) $(otf_generic_streams_mpi_DEPENDENCIES) $(EXTRA_otf_generic_streams_mpi_DEPENDENCIES) @rm -f otf_generic_streams_mpi$(EXEEXT) $(AM_V_CCLD)$(otf_generic_streams_mpi_LINK) $(otf_generic_streams_mpi_OBJECTS) $(otf_generic_streams_mpi_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/otf_generic_streams_mpi-generic_streams_mpi.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< otf_generic_streams_mpi-generic_streams_mpi.o: generic_streams_mpi.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(otf_generic_streams_mpi_CPPFLAGS) $(CPPFLAGS) $(otf_generic_streams_mpi_CFLAGS) $(CFLAGS) -MT otf_generic_streams_mpi-generic_streams_mpi.o -MD -MP -MF $(DEPDIR)/otf_generic_streams_mpi-generic_streams_mpi.Tpo -c -o otf_generic_streams_mpi-generic_streams_mpi.o `test -f 'generic_streams_mpi.c' || echo '$(srcdir)/'`generic_streams_mpi.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/otf_generic_streams_mpi-generic_streams_mpi.Tpo $(DEPDIR)/otf_generic_streams_mpi-generic_streams_mpi.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='generic_streams_mpi.c' object='otf_generic_streams_mpi-generic_streams_mpi.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(otf_generic_streams_mpi_CPPFLAGS) $(CPPFLAGS) $(otf_generic_streams_mpi_CFLAGS) $(CFLAGS) -c -o otf_generic_streams_mpi-generic_streams_mpi.o `test -f 'generic_streams_mpi.c' || echo '$(srcdir)/'`generic_streams_mpi.c otf_generic_streams_mpi-generic_streams_mpi.obj: generic_streams_mpi.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(otf_generic_streams_mpi_CPPFLAGS) $(CPPFLAGS) $(otf_generic_streams_mpi_CFLAGS) $(CFLAGS) -MT otf_generic_streams_mpi-generic_streams_mpi.obj -MD -MP -MF $(DEPDIR)/otf_generic_streams_mpi-generic_streams_mpi.Tpo -c -o otf_generic_streams_mpi-generic_streams_mpi.obj `if test -f 'generic_streams_mpi.c'; then $(CYGPATH_W) 'generic_streams_mpi.c'; else $(CYGPATH_W) '$(srcdir)/generic_streams_mpi.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/otf_generic_streams_mpi-generic_streams_mpi.Tpo $(DEPDIR)/otf_generic_streams_mpi-generic_streams_mpi.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='generic_streams_mpi.c' object='otf_generic_streams_mpi-generic_streams_mpi.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(otf_generic_streams_mpi_CPPFLAGS) $(CPPFLAGS) $(otf_generic_streams_mpi_CFLAGS) $(CFLAGS) -c -o otf_generic_streams_mpi-generic_streams_mpi.obj `if test -f 'generic_streams_mpi.c'; then $(CYGPATH_W) 'generic_streams_mpi.c'; else $(CYGPATH_W) '$(srcdir)/generic_streams_mpi.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." @AMHAVECLOCKGETTIME_FALSE@clean-local: @AMHAVEMPI_FALSE@clean-local: clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool clean-local \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool clean-local \ cscopelist-am ctags ctags-am distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile @AMHAVECLOCKGETTIME_TRUE@@AMHAVEMPI_TRUE@clean-local: @AMHAVECLOCKGETTIME_TRUE@@AMHAVEMPI_TRUE@ rm -f *.otf *.def *.events *.marker *.otf.z *.def.z *.events.z *.marker.z # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/gtg/extlib/otf/tests/PaxHeaders.7332/generic_streams0000644000000000000000000000013213171135477023226 xustar0030 mtime=1508162367.037846526 30 atime=1508162367.741908015 30 ctime=1508162367.037846526 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/generic_streams/0000755000175000017500000000000013171135477024472 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/otf/tests/generic_streams/PaxHeaders.7332/generic_streams.c0000644000000000000000000000013212544237152026615 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.938892559 30 ctime=1508162367.037846526 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/generic_streams/generic_streams.c0000644000175000017500000000357412544237152030015 0ustar00trahaytrahay00000000000000#include #include #include #include #include #include int main(int argc, char** argv) { const char* namestub; uint64_t num_events = 100000000; /* 1E9 events */ uint64_t i; uint64_t time = 0; struct timespec start_ts; struct timespec end_ts; double secs; OTF_FileManager* manager; OTF_WStream* wstream; OTF_WStream* wstream2; OTF_MasterControl* master; if (argc > 1) { namestub = argv[1]; } else { fprintf(stderr, "No filenamestub was given!\n"); exit(1); } if (argc > 2) { num_events = atol(argv[2]); } manager = OTF_FileManager_open(4); assert(manager); wstream = OTF_WStream_open(namestub, 0, manager); assert(wstream); wstream2 = OTF_WStream_open(namestub, 1, manager); assert(wstream2); /* OTF_WStream_setCompression(wstream, 1); */ clock_gettime(CLOCK_REALTIME, &start_ts); for(i = 0; i < num_events / 2; i++) { OTF_WStream_writeEnter(wstream, time++, 0, 0, 0); /* OTF_WStream_writeEnter(wstream2, time++, 0, 0, 0); */ OTF_WStream_writeLeave(wstream, time++, 0, 0, 0); /* OTF_WStream_writeLeave(wstream2, time++, 0, 0, 0); */ } clock_gettime(CLOCK_REALTIME, &end_ts); master = OTF_MasterControl_new(manager); assert(master != NULL); OTF_MasterControl_append(master, i, i); OTF_MasterControl_write(master, namestub); OTF_MasterControl_close(master); secs = (end_ts.tv_sec - start_ts.tv_sec) + (end_ts.tv_nsec - start_ts.tv_nsec) / 1E9; printf("Finished: %li events written in %1.5f secs\n--> %5.3f events per second\n", num_events, secs, num_events / secs); OTF_WStream_close(wstream); OTF_WStream_close(wstream2); OTF_FileManager_close(manager); clock_gettime(CLOCK_REALTIME, &end_ts); return 0; } eztrace-1.1-7/extlib/gtg/extlib/otf/tests/generic_streams/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212544237152025333 xustar0030 mtime=1435582058.539899952 30 atime=1508162197.760242242 30 ctime=1508162367.033846177 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/generic_streams/Makefile.am0000644000175000017500000000073612544237152026530 0ustar00trahaytrahay00000000000000if AMHAVECLOCKGETTIME check_PROGRAMS = otf_generic_streams otf_generic_streams_SOURCES = generic_streams.c otf_generic_streams_DEPENDENCIES = \ $(top_builddir)/otflib/libopen-trace-format.la otf_generic_streams_LDADD = $(otf_generic_streams_DEPENDENCIES) \ $(CLOCK_GETTIME_LIB) otf_generic_streams_CPPFLAGS = $(AM_CPPFLAGS) \ -I$(top_builddir)/otflib \ -I$(top_srcdir)/otflib clean-local: rm -f *.otf *.def *.events *.marker *.otf.z *.def.z *.events.z *.marker.z endif eztrace-1.1-7/extlib/gtg/extlib/otf/tests/generic_streams/PaxHeaders.7332/Makefile.in0000644000000000000000000000013113171135225025336 xustar0030 mtime=1508162197.780243634 29 atime=1508162279.92648252 30 ctime=1508162367.037846526 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/generic_streams/Makefile.in0000644000175000017500000005511613171135225026536 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ @AMHAVECLOCKGETTIME_TRUE@check_PROGRAMS = \ @AMHAVECLOCKGETTIME_TRUE@ otf_generic_streams$(EXEEXT) subdir = tests/generic_streams ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/m4/libtool.m4 \ $(top_srcdir)/config/m4/ltoptions.m4 \ $(top_srcdir)/config/m4/ltsugar.m4 \ $(top_srcdir)/config/m4/ltversion.m4 \ $(top_srcdir)/config/m4/lt~obsolete.m4 \ $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/config/m4/acinclude.debug.m4 \ $(top_srcdir)/config/m4/acinclude.math.m4 \ $(top_srcdir)/config/m4/acinclude.mpi.m4 \ $(top_srcdir)/config/m4/acinclude.omp.m4 \ $(top_srcdir)/config/m4/acinclude.pdflatex_pgfplots.m4 \ $(top_srcdir)/config/m4/acinclude.swig_python.m4 \ $(top_srcdir)/config/m4/acinclude.vtf3.m4 \ $(top_srcdir)/config/m4/acinclude.verbose.m4 \ $(top_srcdir)/config/m4/acinclude.zlib.m4 \ $(top_srcdir)/config/m4/acinclude.zoidfs.m4 \ $(top_srcdir)/config/m4/acarchive/ax_mpi.m4 \ $(top_srcdir)/config/m4/acarchive/ax_openmp.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__otf_generic_streams_SOURCES_DIST = generic_streams.c @AMHAVECLOCKGETTIME_TRUE@am_otf_generic_streams_OBJECTS = otf_generic_streams-generic_streams.$(OBJEXT) otf_generic_streams_OBJECTS = $(am_otf_generic_streams_OBJECTS) am__DEPENDENCIES_1 = AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(otf_generic_streams_SOURCES) DIST_SOURCES = $(am__otf_generic_streams_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BMI_INCLUDE_DIR = @BMI_INCLUDE_DIR@ BMI_LIB_DIR = @BMI_LIB_DIR@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLOCK_GETTIME_LIB = @CLOCK_GETTIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHLIB = @MATHLIB@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICFLAGS = @MPICFLAGS@ MPICXX = @MPICXX@ MPICXXFLAGS = @MPICXXFLAGS@ MPILIBS = @MPILIBS@ MPI_INCLUDE_DIR = @MPI_INCLUDE_DIR@ MPI_INCLUDE_LINE = @MPI_INCLUDE_LINE@ MPI_LIB_DIR = @MPI_LIB_DIR@ MPI_LIB_LINE = @MPI_LIB_LINE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENMP_CXXFLAGS = @OPENMP_CXXFLAGS@ OTF_VERSION_LIBRARY = @OTF_VERSION_LIBRARY@ OTF_VERSION_MAJOR = @OTF_VERSION_MAJOR@ OTF_VERSION_MINOR = @OTF_VERSION_MINOR@ OTF_VERSION_STRING = @OTF_VERSION_STRING@ OTF_VERSION_SUB = @OTF_VERSION_SUB@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFTEX = @PDFTEX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWIG = @SWIG@ SWIG_PYTHON_CFLAGS = @SWIG_PYTHON_CFLAGS@ SWIG_PYTHON_OPTS = @SWIG_PYTHON_OPTS@ VERSION = @VERSION@ VTF3_INCLUDE_DIR = @VTF3_INCLUDE_DIR@ VTF3_INCLUDE_LINE = @VTF3_INCLUDE_LINE@ VTF3_LIB_DIR = @VTF3_LIB_DIR@ VTF3_LIB_LINE = @VTF3_LIB_LINE@ ZLIB_INCLUDE_DIR = @ZLIB_INCLUDE_DIR@ ZLIB_INCLUDE_LINE = @ZLIB_INCLUDE_LINE@ ZLIB_LIB_DIR = @ZLIB_LIB_DIR@ ZLIB_LIB_LINE = @ZLIB_LIB_LINE@ ZOIDFS_INCLUDE_DIR = @ZOIDFS_INCLUDE_DIR@ ZOIDFS_INCLUDE_LINE = @ZOIDFS_INCLUDE_LINE@ ZOIDFS_LIB_DIR = @ZOIDFS_LIB_DIR@ ZOIDFS_LIB_LINE = @ZOIDFS_LIB_LINE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_inttypes_h = @have_inttypes_h@ have_stdint_h = @have_stdint_h@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ python_config = @python_config@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sizeof_long = @sizeof_long@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @AMHAVECLOCKGETTIME_TRUE@otf_generic_streams_SOURCES = generic_streams.c @AMHAVECLOCKGETTIME_TRUE@otf_generic_streams_DEPENDENCIES = \ @AMHAVECLOCKGETTIME_TRUE@ $(top_builddir)/otflib/libopen-trace-format.la @AMHAVECLOCKGETTIME_TRUE@otf_generic_streams_LDADD = $(otf_generic_streams_DEPENDENCIES) \ @AMHAVECLOCKGETTIME_TRUE@ $(CLOCK_GETTIME_LIB) @AMHAVECLOCKGETTIME_TRUE@otf_generic_streams_CPPFLAGS = $(AM_CPPFLAGS) \ @AMHAVECLOCKGETTIME_TRUE@ -I$(top_builddir)/otflib \ @AMHAVECLOCKGETTIME_TRUE@ -I$(top_srcdir)/otflib all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/generic_streams/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign tests/generic_streams/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list otf_generic_streams$(EXEEXT): $(otf_generic_streams_OBJECTS) $(otf_generic_streams_DEPENDENCIES) $(EXTRA_otf_generic_streams_DEPENDENCIES) @rm -f otf_generic_streams$(EXEEXT) $(AM_V_CCLD)$(LINK) $(otf_generic_streams_OBJECTS) $(otf_generic_streams_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/otf_generic_streams-generic_streams.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< otf_generic_streams-generic_streams.o: generic_streams.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(otf_generic_streams_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT otf_generic_streams-generic_streams.o -MD -MP -MF $(DEPDIR)/otf_generic_streams-generic_streams.Tpo -c -o otf_generic_streams-generic_streams.o `test -f 'generic_streams.c' || echo '$(srcdir)/'`generic_streams.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/otf_generic_streams-generic_streams.Tpo $(DEPDIR)/otf_generic_streams-generic_streams.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='generic_streams.c' object='otf_generic_streams-generic_streams.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(otf_generic_streams_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o otf_generic_streams-generic_streams.o `test -f 'generic_streams.c' || echo '$(srcdir)/'`generic_streams.c otf_generic_streams-generic_streams.obj: generic_streams.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(otf_generic_streams_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT otf_generic_streams-generic_streams.obj -MD -MP -MF $(DEPDIR)/otf_generic_streams-generic_streams.Tpo -c -o otf_generic_streams-generic_streams.obj `if test -f 'generic_streams.c'; then $(CYGPATH_W) 'generic_streams.c'; else $(CYGPATH_W) '$(srcdir)/generic_streams.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/otf_generic_streams-generic_streams.Tpo $(DEPDIR)/otf_generic_streams-generic_streams.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='generic_streams.c' object='otf_generic_streams-generic_streams.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(otf_generic_streams_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o otf_generic_streams-generic_streams.obj `if test -f 'generic_streams.c'; then $(CYGPATH_W) 'generic_streams.c'; else $(CYGPATH_W) '$(srcdir)/generic_streams.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." @AMHAVECLOCKGETTIME_FALSE@clean-local: clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool clean-local \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool clean-local \ cscopelist-am ctags ctags-am distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile @AMHAVECLOCKGETTIME_TRUE@clean-local: @AMHAVECLOCKGETTIME_TRUE@ rm -f *.otf *.def *.events *.marker *.otf.z *.def.z *.events.z *.marker.z # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/gtg/extlib/otf/tests/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212544237152022161 xustar0030 mtime=1435582058.539899952 30 atime=1508162197.712238903 30 ctime=1508162366.913835701 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/Makefile.am0000644000175000017500000000102312544237152023344 0ustar00trahaytrahay00000000000000SUBDIRS = \ hello \ generic_streams \ generic_streams-mpi \ progress \ read_from_buffer EXTRA_DIST= \ python/groups.py \ python/test_read.py \ python/test_read_qt.py \ python/test_write.py \ python/python3/groups.py \ python/python3/test_read.py \ python/python3/test_read_qt.py \ python/python3/test_write.py \ read_from_buffer/hello_world.0.def--missing \ read_from_buffer/hello_world.0.marker \ read_from_buffer/hello_world.1.events \ read_from_buffer/hello_world.2.events \ read_from_buffer/hello_world.otf eztrace-1.1-7/extlib/gtg/extlib/otf/tests/PaxHeaders.7332/hello0000644000000000000000000000013213171135477021157 xustar0030 mtime=1508162367.005843732 30 atime=1508162367.741908015 30 ctime=1508162367.005843732 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/hello/0000755000175000017500000000000013171135477022423 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/otf/tests/hello/PaxHeaders.7332/hello.c0000644000000000000000000000013212544237152022477 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.938892559 30 ctime=1508162367.005843732 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/hello/hello.c0000644000175000017500000002235212544237152023672 0ustar00trahaytrahay00000000000000 #include #include #include #include #include #include #include #include "otf.h" #define HELPTEXT "" \ " \n" \ " ./hello_otf - OTF hello world example that writes a most \n" \ " simple trace to demonstrate the OTF writer API\n" \ " \n" \ " \n" \ int main( int argc, const char** argv ) { char *filename= "hello_world.otf"; OTF_FileManager* manager; OTF_Writer* writer; /* test with # streams < or > # processes */ uint32_t streams= 2; uint32_t processes= 2; /* file handles available */ uint32_t files= 100; /* per-stream buffer size */ uint32_t buffersize= 10*1024; /* compression on/off, test without compression to look at ASCII trace files */ int compression= 0; uint64_t timestamp; uint32_t cpuid; uint32_t counterid= 5; uint64_t countervalue; /* key-value-list to re-use all the time */ OTF_KeyValueList* keyvaluelist; /* two macros that define my keys in key-value-lists */ const uint32_t MY_KEY_1= 42; const uint32_t MY_KEY_2= 987654; manager= OTF_FileManager_open( files ); assert( NULL != manager ); writer = OTF_Writer_open( filename, streams, manager ); OTF_Writer_setBufferSizes( writer, buffersize ); if ( 0 < compression && compression <= 9 ) { OTF_Writer_setCompression( writer, compression ); } /* prepare key-value list */ keyvaluelist= OTF_KeyValueList_new(); /* do for a number of processes */ for( cpuid= 1; cpuid <= processes; cpuid++ ) { timestamp= 0; timestamp += 10000 + rand() % 100; /* enter main */ OTF_Writer_writeEnter( writer, timestamp /* time */, 1 /* statetoken */, cpuid /* cpuid */, 0 /* scltoken */ ); countervalue= 0; OTF_Writer_writeCounter( writer, timestamp, cpuid, counterid, countervalue ); timestamp += 1000 + rand() % 100; /* enter foo */ OTF_Writer_writeEnter( writer, timestamp /* time */, 2 /* statetoken */, cpuid /* cpuid */, 0 /* scltoken */ ); countervalue= 100; OTF_Writer_writeCounter( writer, timestamp, cpuid, counterid, countervalue ); timestamp += 1000 + rand() % 100; /* enter bar */ OTF_KeyValueList_appendDouble( keyvaluelist, MY_KEY_2, 2.71828183 ); OTF_Writer_writeEnterKV( writer, timestamp /* time */, 3 /* statetoken */, cpuid /* cpuid */, 0 /* scltoken */, keyvaluelist /* OTF_KeyValueList* */ ); countervalue= 110; OTF_Writer_writeCounter( writer, timestamp, cpuid, counterid, countervalue ); timestamp += 1000 + rand() % 100; /* leave bar */ countervalue= 210; OTF_Writer_writeCounter( writer, timestamp, cpuid, counterid, countervalue ); OTF_Writer_writeLeave( writer, timestamp /* time */, 3 /* statetoken */, cpuid /* cpuid */, 0 /* scltoken */ ); timestamp += 1000 + rand() % 100; /* enter bar */ /* write variant with keyvalue list */ OTF_KeyValueList_appendUint64( keyvaluelist, MY_KEY_1, 1 ); OTF_KeyValueList_appendDouble( keyvaluelist, MY_KEY_2, 3.14159265 ); OTF_Writer_writeEnterKV( writer, timestamp /* time */, 3 /* statetoken */, cpuid /* cpuid */, 0 /* scltoken */, keyvaluelist /* OTF_KeyValueList* */ ); countervalue= 220; OTF_Writer_writeCounter( writer, timestamp, cpuid, counterid, countervalue ); timestamp += 1000 + rand() % 100; /* leave bar */ countervalue= 320; OTF_Writer_writeCounter( writer, timestamp, cpuid, counterid, countervalue ); OTF_Writer_writeLeave( writer, timestamp /* time */, 3 /* statetoken */, cpuid /* cpuid */, 0 /* scltoken */ ); timestamp += 1000 + rand() % 100; /* leave foo */ countervalue= 330; OTF_Writer_writeCounter( writer, timestamp, cpuid, counterid, countervalue ); OTF_Writer_writeLeave( writer, timestamp /* time */, 2 /* statetoken */, cpuid /* cpuid */, 0 /* scltoken */ ); timestamp += 1000 + rand() % 100; /* leave main */ countervalue= 380; OTF_Writer_writeCounter( writer, timestamp, cpuid, counterid, countervalue ); OTF_Writer_writeLeave( writer, timestamp /* time */, 1 /* statetoken */, cpuid /* cpuid */, 0 /* scltoken */ ); } /* write definitions -- may be written at any time before/during/after writing events */ OTF_Writer_writeDefTimerResolution( writer, 0 /* uint32_t stream */, 1e6 /* uint64_t ticksPerSecond */ ); for( cpuid= 1; cpuid <= processes; cpuid++ ) { char name[101]; snprintf( name, 100, "Process %u", cpuid ); OTF_Writer_writeDefProcess( writer, 0 /* uint32_t stream */, cpuid /*uint32_t process */, name /* const char *name */ , 0 /* uint32_t parent */ ); } OTF_Writer_writeDefFunctionGroup( writer, 0 /* uint32_t stream */, 16 /* uint32_t funcGroup */, "standard functions" /* const char *name */ ); OTF_Writer_writeDefFunctionGroup( writer, 0 /* uint32_t stream */, 17 /* uint32_t funcGroup */, "user functions" /* const char *name */ ); OTF_Writer_writeDefFunction( writer, 0 /* uint32_t stream */, 1 /* uint32_t func */, "main" /* const char *name */, 16 /* uint32_t funcGroup */, 0 /* uint32_t source */ ); OTF_Writer_writeDefFunction( writer, 0 /* uint32_t stream */, 2 /* uint32_t func */, "foo" /* const char *name */, 17 /* uint32_t funcGroup */, 0 /* uint32_t source */ ); OTF_Writer_writeDefFunction( writer, 0 /* uint32_t stream */, 3/* uint32_t func */, "bar" /* const char *name */, 17 /* uint32_t funcGroup */, 0 /* uint32_t source */ ); OTF_Writer_writeDefCounterGroup( writer, 0 /* uint32_t stream */, 63 /* uint32_t counterGroup */, "all my counters" /* const char *name */ ); OTF_Writer_writeDefCounter( writer, 0 /* uint32_t stream */, counterid /* uint32_t counter */, "my counter" /* const char *name */, OTF_COUNTER_TYPE_ACC | OTF_COUNTER_SCOPE_START /* uint32_t properties */, 63 /* uint32_t counterGroup */, "my unit" /* const char *unit */ ); OTF_Writer_writeDefKeyValue( writer, 0 /* uint32_t stream */, MY_KEY_1 /* uint32_t key */, OTF_UINT64 /* OTF_Type type */, "my_key" /* const char * name */, "my own key to mark my most favorite function call" /* const char * description */ ); OTF_Writer_writeDefKeyValue( writer, 0 /* uint32_t stream */, MY_KEY_2 /* uint32_t key */, OTF_DOUBLE /* OTF_Type type */, "first_arg" /* const char * name */, "first argument of functin bar" /* const char * description */ ); OTF_Writer_writeDefMarker( writer, 0 /* stream ID*/, 101 /* uint32_t token */, "everything is easy" /* const char* name */, OTF_MARKER_TYPE_HINT /* uint32_t type */ ); OTF_Writer_writeDefMarker( writer, 0 /* stream ID*/, 102 /* uint32_t token */, "yellow alarm" /* const char* name */, OTF_MARKER_TYPE_WARNING /* uint32_t type */ ); OTF_Writer_writeDefMarker( writer, 0 /* stream ID*/, 103 /* uint32_t token */, "red alarm flag" /* const char* name */, OTF_MARKER_TYPE_ERROR /* uint32_t type */ ); OTF_Writer_writeMarker( writer, 10000 /* uint64_t time */, 1 /* uint32_t process */, 101 /* uint32_t token */, "tea, early grey, hot" /* const char* text */ ); OTF_Writer_writeMarker( writer, 11000 /* uint64_t time */, 1 /* uint32_t process */, 102 /* uint32_t token */, "bird of prey decloaking starboard" /* const char* text */ ); OTF_Writer_writeMarker( writer, 12000 /* uint64_t time */, 1 /* uint32_t process */, 103 /* uint32_t token */, "antimatter containment failing" /* const char* text */ ); OTF_KeyValueList_close( keyvaluelist ); OTF_Writer_close( writer ); OTF_FileManager_close( manager ); return 0; } eztrace-1.1-7/extlib/gtg/extlib/otf/tests/hello/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212544237152023264 xustar0030 mtime=1435582058.539899952 30 atime=1508162197.788244191 30 ctime=1508162367.001843383 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/hello/Makefile.am0000644000175000017500000000053312544237152024454 0ustar00trahaytrahay00000000000000check_PROGRAMS = otf_hello otf_hello_SOURCES = hello.c otf_hello_LDADD = \ $(top_builddir)/otflib/libopen-trace-format.la otf_hello_DEPENDENCIES = $(otf_hello_LDADD) otf_hello_CPPFLAGS = $(AM_CPPFLAGS) \ -I$(top_builddir)/otflib \ -I$(top_srcdir)/otflib clean-local: rm -f *.otf *.def *.events *.marker *.otf.z *.def.z *.events.z *.marker.z eztrace-1.1-7/extlib/gtg/extlib/otf/tests/hello/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135225023270 xustar0030 mtime=1508162197.808245582 30 atime=1508162279.910481224 30 ctime=1508162367.005843732 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/hello/Makefile.in0000644000175000017500000005255713171135225024475 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ check_PROGRAMS = otf_hello$(EXEEXT) subdir = tests/hello ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/m4/libtool.m4 \ $(top_srcdir)/config/m4/ltoptions.m4 \ $(top_srcdir)/config/m4/ltsugar.m4 \ $(top_srcdir)/config/m4/ltversion.m4 \ $(top_srcdir)/config/m4/lt~obsolete.m4 \ $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/config/m4/acinclude.debug.m4 \ $(top_srcdir)/config/m4/acinclude.math.m4 \ $(top_srcdir)/config/m4/acinclude.mpi.m4 \ $(top_srcdir)/config/m4/acinclude.omp.m4 \ $(top_srcdir)/config/m4/acinclude.pdflatex_pgfplots.m4 \ $(top_srcdir)/config/m4/acinclude.swig_python.m4 \ $(top_srcdir)/config/m4/acinclude.vtf3.m4 \ $(top_srcdir)/config/m4/acinclude.verbose.m4 \ $(top_srcdir)/config/m4/acinclude.zlib.m4 \ $(top_srcdir)/config/m4/acinclude.zoidfs.m4 \ $(top_srcdir)/config/m4/acarchive/ax_mpi.m4 \ $(top_srcdir)/config/m4/acarchive/ax_openmp.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am_otf_hello_OBJECTS = otf_hello-hello.$(OBJEXT) otf_hello_OBJECTS = $(am_otf_hello_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(otf_hello_SOURCES) DIST_SOURCES = $(otf_hello_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BMI_INCLUDE_DIR = @BMI_INCLUDE_DIR@ BMI_LIB_DIR = @BMI_LIB_DIR@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLOCK_GETTIME_LIB = @CLOCK_GETTIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHLIB = @MATHLIB@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICFLAGS = @MPICFLAGS@ MPICXX = @MPICXX@ MPICXXFLAGS = @MPICXXFLAGS@ MPILIBS = @MPILIBS@ MPI_INCLUDE_DIR = @MPI_INCLUDE_DIR@ MPI_INCLUDE_LINE = @MPI_INCLUDE_LINE@ MPI_LIB_DIR = @MPI_LIB_DIR@ MPI_LIB_LINE = @MPI_LIB_LINE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENMP_CXXFLAGS = @OPENMP_CXXFLAGS@ OTF_VERSION_LIBRARY = @OTF_VERSION_LIBRARY@ OTF_VERSION_MAJOR = @OTF_VERSION_MAJOR@ OTF_VERSION_MINOR = @OTF_VERSION_MINOR@ OTF_VERSION_STRING = @OTF_VERSION_STRING@ OTF_VERSION_SUB = @OTF_VERSION_SUB@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFTEX = @PDFTEX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWIG = @SWIG@ SWIG_PYTHON_CFLAGS = @SWIG_PYTHON_CFLAGS@ SWIG_PYTHON_OPTS = @SWIG_PYTHON_OPTS@ VERSION = @VERSION@ VTF3_INCLUDE_DIR = @VTF3_INCLUDE_DIR@ VTF3_INCLUDE_LINE = @VTF3_INCLUDE_LINE@ VTF3_LIB_DIR = @VTF3_LIB_DIR@ VTF3_LIB_LINE = @VTF3_LIB_LINE@ ZLIB_INCLUDE_DIR = @ZLIB_INCLUDE_DIR@ ZLIB_INCLUDE_LINE = @ZLIB_INCLUDE_LINE@ ZLIB_LIB_DIR = @ZLIB_LIB_DIR@ ZLIB_LIB_LINE = @ZLIB_LIB_LINE@ ZOIDFS_INCLUDE_DIR = @ZOIDFS_INCLUDE_DIR@ ZOIDFS_INCLUDE_LINE = @ZOIDFS_INCLUDE_LINE@ ZOIDFS_LIB_DIR = @ZOIDFS_LIB_DIR@ ZOIDFS_LIB_LINE = @ZOIDFS_LIB_LINE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_inttypes_h = @have_inttypes_h@ have_stdint_h = @have_stdint_h@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ python_config = @python_config@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sizeof_long = @sizeof_long@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ otf_hello_SOURCES = hello.c otf_hello_LDADD = \ $(top_builddir)/otflib/libopen-trace-format.la otf_hello_DEPENDENCIES = $(otf_hello_LDADD) otf_hello_CPPFLAGS = $(AM_CPPFLAGS) \ -I$(top_builddir)/otflib \ -I$(top_srcdir)/otflib all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/hello/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign tests/hello/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list otf_hello$(EXEEXT): $(otf_hello_OBJECTS) $(otf_hello_DEPENDENCIES) $(EXTRA_otf_hello_DEPENDENCIES) @rm -f otf_hello$(EXEEXT) $(AM_V_CCLD)$(LINK) $(otf_hello_OBJECTS) $(otf_hello_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/otf_hello-hello.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< otf_hello-hello.o: hello.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(otf_hello_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT otf_hello-hello.o -MD -MP -MF $(DEPDIR)/otf_hello-hello.Tpo -c -o otf_hello-hello.o `test -f 'hello.c' || echo '$(srcdir)/'`hello.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/otf_hello-hello.Tpo $(DEPDIR)/otf_hello-hello.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hello.c' object='otf_hello-hello.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(otf_hello_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o otf_hello-hello.o `test -f 'hello.c' || echo '$(srcdir)/'`hello.c otf_hello-hello.obj: hello.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(otf_hello_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT otf_hello-hello.obj -MD -MP -MF $(DEPDIR)/otf_hello-hello.Tpo -c -o otf_hello-hello.obj `if test -f 'hello.c'; then $(CYGPATH_W) 'hello.c'; else $(CYGPATH_W) '$(srcdir)/hello.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/otf_hello-hello.Tpo $(DEPDIR)/otf_hello-hello.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hello.c' object='otf_hello-hello.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(otf_hello_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o otf_hello-hello.obj `if test -f 'hello.c'; then $(CYGPATH_W) 'hello.c'; else $(CYGPATH_W) '$(srcdir)/hello.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool clean-local \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool clean-local \ cscopelist-am ctags ctags-am distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile clean-local: rm -f *.otf *.def *.events *.marker *.otf.z *.def.z *.events.z *.marker.z # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/gtg/extlib/otf/tests/PaxHeaders.7332/Makefile.in0000644000000000000000000000013113171135225022164 xustar0030 mtime=1508162197.724239738 30 atime=1508162279.902480576 29 ctime=1508162366.91783605 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/Makefile.in0000644000175000017500000005137713171135225023371 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/m4/libtool.m4 \ $(top_srcdir)/config/m4/ltoptions.m4 \ $(top_srcdir)/config/m4/ltsugar.m4 \ $(top_srcdir)/config/m4/ltversion.m4 \ $(top_srcdir)/config/m4/lt~obsolete.m4 \ $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/config/m4/acinclude.debug.m4 \ $(top_srcdir)/config/m4/acinclude.math.m4 \ $(top_srcdir)/config/m4/acinclude.mpi.m4 \ $(top_srcdir)/config/m4/acinclude.omp.m4 \ $(top_srcdir)/config/m4/acinclude.pdflatex_pgfplots.m4 \ $(top_srcdir)/config/m4/acinclude.swig_python.m4 \ $(top_srcdir)/config/m4/acinclude.vtf3.m4 \ $(top_srcdir)/config/m4/acinclude.verbose.m4 \ $(top_srcdir)/config/m4/acinclude.zlib.m4 \ $(top_srcdir)/config/m4/acinclude.zoidfs.m4 \ $(top_srcdir)/config/m4/acarchive/ax_mpi.m4 \ $(top_srcdir)/config/m4/acarchive/ax_openmp.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BMI_INCLUDE_DIR = @BMI_INCLUDE_DIR@ BMI_LIB_DIR = @BMI_LIB_DIR@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLOCK_GETTIME_LIB = @CLOCK_GETTIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHLIB = @MATHLIB@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICFLAGS = @MPICFLAGS@ MPICXX = @MPICXX@ MPICXXFLAGS = @MPICXXFLAGS@ MPILIBS = @MPILIBS@ MPI_INCLUDE_DIR = @MPI_INCLUDE_DIR@ MPI_INCLUDE_LINE = @MPI_INCLUDE_LINE@ MPI_LIB_DIR = @MPI_LIB_DIR@ MPI_LIB_LINE = @MPI_LIB_LINE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENMP_CXXFLAGS = @OPENMP_CXXFLAGS@ OTF_VERSION_LIBRARY = @OTF_VERSION_LIBRARY@ OTF_VERSION_MAJOR = @OTF_VERSION_MAJOR@ OTF_VERSION_MINOR = @OTF_VERSION_MINOR@ OTF_VERSION_STRING = @OTF_VERSION_STRING@ OTF_VERSION_SUB = @OTF_VERSION_SUB@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFTEX = @PDFTEX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWIG = @SWIG@ SWIG_PYTHON_CFLAGS = @SWIG_PYTHON_CFLAGS@ SWIG_PYTHON_OPTS = @SWIG_PYTHON_OPTS@ VERSION = @VERSION@ VTF3_INCLUDE_DIR = @VTF3_INCLUDE_DIR@ VTF3_INCLUDE_LINE = @VTF3_INCLUDE_LINE@ VTF3_LIB_DIR = @VTF3_LIB_DIR@ VTF3_LIB_LINE = @VTF3_LIB_LINE@ ZLIB_INCLUDE_DIR = @ZLIB_INCLUDE_DIR@ ZLIB_INCLUDE_LINE = @ZLIB_INCLUDE_LINE@ ZLIB_LIB_DIR = @ZLIB_LIB_DIR@ ZLIB_LIB_LINE = @ZLIB_LIB_LINE@ ZOIDFS_INCLUDE_DIR = @ZOIDFS_INCLUDE_DIR@ ZOIDFS_INCLUDE_LINE = @ZOIDFS_INCLUDE_LINE@ ZOIDFS_LIB_DIR = @ZOIDFS_LIB_DIR@ ZOIDFS_LIB_LINE = @ZOIDFS_LIB_LINE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_inttypes_h = @have_inttypes_h@ have_stdint_h = @have_stdint_h@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ python_config = @python_config@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sizeof_long = @sizeof_long@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = \ hello \ generic_streams \ generic_streams-mpi \ progress \ read_from_buffer EXTRA_DIST = \ python/groups.py \ python/test_read.py \ python/test_read_qt.py \ python/test_write.py \ python/python3/groups.py \ python/python3/test_read.py \ python/python3/test_read_qt.py \ python/python3/test_write.py \ read_from_buffer/hello_world.0.def--missing \ read_from_buffer/hello_world.0.marker \ read_from_buffer/hello_world.1.events \ read_from_buffer/hello_world.2.events \ read_from_buffer/hello_world.otf all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign tests/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/gtg/extlib/otf/tests/PaxHeaders.7332/read_from_buffer0000644000000000000000000000013213171135477023343 xustar0030 mtime=1508162367.117853514 30 atime=1508162367.741908015 30 ctime=1508162367.117853514 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/read_from_buffer/0000755000175000017500000000000013171135477024607 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/otf/tests/read_from_buffer/PaxHeaders.7332/hello_world.0.marker0000644000000000000000000000013212544237152027267 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.938892559 30 ctime=1508162366.969840589 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/read_from_buffer/hello_world.0.marker0000644000175000017500000000031512544237152030455 0ustar00trahaytrahay00000000000000MD65NM"everything is easy"Y3 MD66NM"yellow alarm"Y2 MD67NM"red alarm flag"Y1 MS65T2710P1V"tea, early grey, hot" MS66T2af8P1V"bird of prey decloaking starboard" MS67T2ee0P1V"antimatter containment failing" eztrace-1.1-7/extlib/gtg/extlib/otf/tests/read_from_buffer/PaxHeaders.7332/hello_world.2.events0000644000000000000000000000013212544237152027314 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.938892559 30 ctime=1508162366.977841287 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/read_from_buffer/hello_world.2.events0000644000175000017500000000023212544237152030500 0ustar00trahaytrahay000000000000002741 *2 E1 CNT5V0 2b3e *2 E2 CNT5V64 2f64 *2 E3 CNT5V6e 3367 *2 CNT5Vd2 L3 37a9 *2 E3 CNT5Vdc 3bcc *2 CNT5V140 L3 3ff3 *2 CNT5V14a L2 43f5 *2 CNT5V17c L1 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/read_from_buffer/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212544237152025450 xustar0030 mtime=1435582058.539899952 30 atime=1508162197.836247531 30 ctime=1508162367.113853165 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/read_from_buffer/Makefile.am0000644000175000017500000000052312544237152026637 0ustar00trahaytrahay00000000000000check_PROGRAMS = otf_read_from_buffer otf_read_from_buffer_SOURCES = read_from_buffer.c otf_read_from_buffer_DEPENDENCIES = $(top_builddir)/otflib/libopen-trace-format.la otf_read_from_buffer_LDADD = $(otf_read_from_buffer_DEPENDENCIES) otf_read_from_buffer_CPPFLAGS = $(AM_CPPFLAGS) \ -I$(top_builddir)/otflib \ -I$(top_srcdir)/otflib eztrace-1.1-7/extlib/gtg/extlib/otf/tests/read_from_buffer/PaxHeaders.7332/hello_world.1.events0000644000000000000000000000013212544237152027313 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.938892559 30 ctime=1508162366.973840939 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/read_from_buffer/hello_world.1.events0000644000175000017500000000023212544237152030477 0ustar00trahaytrahay000000000000002763 *1 E1 CNT5V0 2ba1 *1 E2 CNT5V64 2fd6 *1 E3 CNT5V6e 33cd *1 CNT5Vd2 L3 3812 *1 E3 CNT5Vdc 3c1d *1 CNT5V140 L3 405b *1 CNT5V14a L2 449f *1 CNT5V17c L1 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/read_from_buffer/PaxHeaders.7332/hello_world.0.def--missin0000644000000000000000000000013212544237152030121 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.938892559 30 ctime=1508162366.969840589 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/read_from_buffer/hello_world.0.def--missing0000644000175000017500000000032512544237152031457 0ustar00trahaytrahay00000000000000DV1.7.0"alpha" DTRf4240 DP1NM"Process 1" DP2NM"Process 2" DFG10NM"standard functions" DFG11NM"user functions" DF1G10NM"main" DF2G11NM"foo" DF3G11NM"bar" DCG3fNM"all my counters" DCNT5G3fNM"my counter"P0U"my unit" eztrace-1.1-7/extlib/gtg/extlib/otf/tests/read_from_buffer/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135225025454 xustar0030 mtime=1508162197.856248922 30 atime=1508162279.962485437 30 ctime=1508162367.113853165 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/read_from_buffer/Makefile.in0000644000175000017500000005411113171135225026645 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ check_PROGRAMS = otf_read_from_buffer$(EXEEXT) subdir = tests/read_from_buffer ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/m4/libtool.m4 \ $(top_srcdir)/config/m4/ltoptions.m4 \ $(top_srcdir)/config/m4/ltsugar.m4 \ $(top_srcdir)/config/m4/ltversion.m4 \ $(top_srcdir)/config/m4/lt~obsolete.m4 \ $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/config/m4/acinclude.debug.m4 \ $(top_srcdir)/config/m4/acinclude.math.m4 \ $(top_srcdir)/config/m4/acinclude.mpi.m4 \ $(top_srcdir)/config/m4/acinclude.omp.m4 \ $(top_srcdir)/config/m4/acinclude.pdflatex_pgfplots.m4 \ $(top_srcdir)/config/m4/acinclude.swig_python.m4 \ $(top_srcdir)/config/m4/acinclude.vtf3.m4 \ $(top_srcdir)/config/m4/acinclude.verbose.m4 \ $(top_srcdir)/config/m4/acinclude.zlib.m4 \ $(top_srcdir)/config/m4/acinclude.zoidfs.m4 \ $(top_srcdir)/config/m4/acarchive/ax_mpi.m4 \ $(top_srcdir)/config/m4/acarchive/ax_openmp.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am_otf_read_from_buffer_OBJECTS = \ otf_read_from_buffer-read_from_buffer.$(OBJEXT) otf_read_from_buffer_OBJECTS = $(am_otf_read_from_buffer_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(otf_read_from_buffer_SOURCES) DIST_SOURCES = $(otf_read_from_buffer_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BMI_INCLUDE_DIR = @BMI_INCLUDE_DIR@ BMI_LIB_DIR = @BMI_LIB_DIR@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLOCK_GETTIME_LIB = @CLOCK_GETTIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHLIB = @MATHLIB@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICFLAGS = @MPICFLAGS@ MPICXX = @MPICXX@ MPICXXFLAGS = @MPICXXFLAGS@ MPILIBS = @MPILIBS@ MPI_INCLUDE_DIR = @MPI_INCLUDE_DIR@ MPI_INCLUDE_LINE = @MPI_INCLUDE_LINE@ MPI_LIB_DIR = @MPI_LIB_DIR@ MPI_LIB_LINE = @MPI_LIB_LINE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENMP_CXXFLAGS = @OPENMP_CXXFLAGS@ OTF_VERSION_LIBRARY = @OTF_VERSION_LIBRARY@ OTF_VERSION_MAJOR = @OTF_VERSION_MAJOR@ OTF_VERSION_MINOR = @OTF_VERSION_MINOR@ OTF_VERSION_STRING = @OTF_VERSION_STRING@ OTF_VERSION_SUB = @OTF_VERSION_SUB@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFTEX = @PDFTEX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWIG = @SWIG@ SWIG_PYTHON_CFLAGS = @SWIG_PYTHON_CFLAGS@ SWIG_PYTHON_OPTS = @SWIG_PYTHON_OPTS@ VERSION = @VERSION@ VTF3_INCLUDE_DIR = @VTF3_INCLUDE_DIR@ VTF3_INCLUDE_LINE = @VTF3_INCLUDE_LINE@ VTF3_LIB_DIR = @VTF3_LIB_DIR@ VTF3_LIB_LINE = @VTF3_LIB_LINE@ ZLIB_INCLUDE_DIR = @ZLIB_INCLUDE_DIR@ ZLIB_INCLUDE_LINE = @ZLIB_INCLUDE_LINE@ ZLIB_LIB_DIR = @ZLIB_LIB_DIR@ ZLIB_LIB_LINE = @ZLIB_LIB_LINE@ ZOIDFS_INCLUDE_DIR = @ZOIDFS_INCLUDE_DIR@ ZOIDFS_INCLUDE_LINE = @ZOIDFS_INCLUDE_LINE@ ZOIDFS_LIB_DIR = @ZOIDFS_LIB_DIR@ ZOIDFS_LIB_LINE = @ZOIDFS_LIB_LINE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_inttypes_h = @have_inttypes_h@ have_stdint_h = @have_stdint_h@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ python_config = @python_config@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sizeof_long = @sizeof_long@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ otf_read_from_buffer_SOURCES = read_from_buffer.c otf_read_from_buffer_DEPENDENCIES = $(top_builddir)/otflib/libopen-trace-format.la otf_read_from_buffer_LDADD = $(otf_read_from_buffer_DEPENDENCIES) otf_read_from_buffer_CPPFLAGS = $(AM_CPPFLAGS) \ -I$(top_builddir)/otflib \ -I$(top_srcdir)/otflib all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/read_from_buffer/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign tests/read_from_buffer/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list otf_read_from_buffer$(EXEEXT): $(otf_read_from_buffer_OBJECTS) $(otf_read_from_buffer_DEPENDENCIES) $(EXTRA_otf_read_from_buffer_DEPENDENCIES) @rm -f otf_read_from_buffer$(EXEEXT) $(AM_V_CCLD)$(LINK) $(otf_read_from_buffer_OBJECTS) $(otf_read_from_buffer_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/otf_read_from_buffer-read_from_buffer.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< otf_read_from_buffer-read_from_buffer.o: read_from_buffer.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(otf_read_from_buffer_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT otf_read_from_buffer-read_from_buffer.o -MD -MP -MF $(DEPDIR)/otf_read_from_buffer-read_from_buffer.Tpo -c -o otf_read_from_buffer-read_from_buffer.o `test -f 'read_from_buffer.c' || echo '$(srcdir)/'`read_from_buffer.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/otf_read_from_buffer-read_from_buffer.Tpo $(DEPDIR)/otf_read_from_buffer-read_from_buffer.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='read_from_buffer.c' object='otf_read_from_buffer-read_from_buffer.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(otf_read_from_buffer_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o otf_read_from_buffer-read_from_buffer.o `test -f 'read_from_buffer.c' || echo '$(srcdir)/'`read_from_buffer.c otf_read_from_buffer-read_from_buffer.obj: read_from_buffer.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(otf_read_from_buffer_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT otf_read_from_buffer-read_from_buffer.obj -MD -MP -MF $(DEPDIR)/otf_read_from_buffer-read_from_buffer.Tpo -c -o otf_read_from_buffer-read_from_buffer.obj `if test -f 'read_from_buffer.c'; then $(CYGPATH_W) 'read_from_buffer.c'; else $(CYGPATH_W) '$(srcdir)/read_from_buffer.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/otf_read_from_buffer-read_from_buffer.Tpo $(DEPDIR)/otf_read_from_buffer-read_from_buffer.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='read_from_buffer.c' object='otf_read_from_buffer-read_from_buffer.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(otf_read_from_buffer_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o otf_read_from_buffer-read_from_buffer.obj `if test -f 'read_from_buffer.c'; then $(CYGPATH_W) 'read_from_buffer.c'; else $(CYGPATH_W) '$(srcdir)/read_from_buffer.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/gtg/extlib/otf/tests/read_from_buffer/PaxHeaders.7332/read_from_buffer.c0000644000000000000000000000013212544237152027047 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.938892559 30 ctime=1508162367.117853514 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/read_from_buffer/read_from_buffer.c0000644000175000017500000000445212544237152030243 0ustar00trahaytrahay00000000000000#include #include #include "otf.h" typedef struct { uint64_t count; } HandlerArgument; static int handleDefProcess (void *userData, uint32_t stream, uint32_t process, const char *name, uint32_t parent) { fprintf( stdout, " DefProcess %u '%s'\n", process, name ); return OTF_RETURN_OK; } static int handleDefFunction (void *userData, uint32_t stream, uint32_t func, const char *name, uint32_t funcGroup, uint32_t source) { fprintf( stdout, " DefFunction %u '%s'\n", func, name ); return OTF_RETURN_OK; } int main( int argc, char** argv ) { OTF_FileManager* manager; OTF_Reader* reader; OTF_HandlerArray* handlers; OTF_RBuffer* olddefbuffer; OTF_RBuffer* newdefbuffer; OTF_RStream* defstream; uint64_t ret; HandlerArgument ha= { 0 /* count */ }; const char * txt= "DV1.7.0\"alpha\"\n" "DTRf4240\n" "DP1NM\"Process 1\"\n" "DP2NM\"Process 2\"\n" "DFG10NM\"standard functions\"\n" "DFG11NM\"user functions\"\n" "DF1G10NM\"main\"\n" "DF2G11NM\"foo\"\n" "DF3G11NM\"bar\"\n" "DCG3fNM\"all my counters\"\n" "DCNT5G3fNM\"my counter\"P0U\"my unit\"\n"; manager= OTF_FileManager_open( 100 ); assert( manager ); handlers = OTF_HandlerArray_open(); assert( handlers ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefProcess, OTF_DEFPROCESS_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &ha, OTF_DEFPROCESS_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefFunction, OTF_DEFFUNCTION_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &ha, OTF_DEFFUNCTION_RECORD ); reader = OTF_Reader_open( "hello_world.otf", manager ); assert( reader ); newdefbuffer= OTF_RBuffer_open_with_external_buffer( strlen(txt), txt, 0 ); defstream= OTF_Reader_getStream( reader, 0 ); olddefbuffer= OTF_RStream_setDefBuffer( defstream, newdefbuffer ); assert( NULL == olddefbuffer ); ret= OTF_Reader_readDefinitions( reader, handlers ); fprintf( stdout, " read %llu definition records\n", (unsigned long long int)ret ); OTF_Reader_close( reader ); OTF_HandlerArray_close( handlers ); OTF_FileManager_close( manager ); return 0; } eztrace-1.1-7/extlib/gtg/extlib/otf/tests/read_from_buffer/PaxHeaders.7332/hello_world.otf0000644000000000000000000000013212544237152026440 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.942892689 30 ctime=1508162366.977841287 eztrace-1.1-7/extlib/gtg/extlib/otf/tests/read_from_buffer/hello_world.otf0000644000175000017500000000001012544237152027616 0ustar00trahaytrahay000000000000001:1 2:2 eztrace-1.1-7/extlib/gtg/extlib/otf/PaxHeaders.7332/NEWS0000644000000000000000000000013212544237152017462 xustar0030 mtime=1435582058.523899952 30 atime=1507797543.942892689 30 ctime=1508162366.101764822 eztrace-1.1-7/extlib/gtg/extlib/otf/NEWS0000644000175000017500000000000012544237152020637 0ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/otf/PaxHeaders.7332/config0000644000000000000000000000013213171135476020156 xustar0030 mtime=1508162366.149769012 30 atime=1508162367.741908015 30 ctime=1508162366.149769012 eztrace-1.1-7/extlib/gtg/extlib/otf/config/0000755000175000017500000000000013171135476021422 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/otf/config/PaxHeaders.7332/missing0000644000000000000000000000013213171135225021617 xustar0030 mtime=1508162197.532226379 30 atime=1508162275.850152949 30 ctime=1508162366.085763425 eztrace-1.1-7/extlib/gtg/extlib/otf/config/missing0000755000175000017500000001533013171135225023013 0ustar00trahaytrahay00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/extlib/gtg/extlib/otf/config/PaxHeaders.7332/install-sh0000644000000000000000000000013213171135225022224 xustar0030 mtime=1508162197.532226379 30 atime=1508162197.532226379 30 ctime=1508162366.085763425 eztrace-1.1-7/extlib/gtg/extlib/otf/config/install-sh0000755000175000017500000003546313171135225023431 0ustar00trahaytrahay00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2014-09-12.12; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) # $RANDOM is not portable (e.g. dash); use it when possible to # lower collision chance tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 # As "mkdir -p" follows symlinks and we work in /tmp possibly; so # create the $tmpdir first (and fail if unsuccessful) to make sure # that nobody tries to guess the $tmpdir name. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/extlib/gtg/extlib/otf/config/PaxHeaders.7332/compile0000644000000000000000000000013213171135225021576 xustar0030 mtime=1508162197.524225822 30 atime=1508162197.524225822 30 ctime=1508162366.081763075 eztrace-1.1-7/extlib/gtg/extlib/otf/config/compile0000755000175000017500000001624513171135225023000 0ustar00trahaytrahay00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/extlib/gtg/extlib/otf/config/PaxHeaders.7332/otf_get_version.sh0000644000000000000000000000013012544237152023756 xustar0030 mtime=1435582058.523899952 29 atime=1508162192.83590172 29 ctime=1508162366.10976552 eztrace-1.1-7/extlib/gtg/extlib/otf/config/otf_get_version.sh0000755000175000017500000000213712544237152025155 0ustar00trahaytrahay00000000000000#!/bin/sh srcfile=$1 option=$2 if test -z "$srcfile" -o "$srcfile" = "-h" -o "$srcfile" = "--help"; then option="--help" else if ! test -f $srcfile; then echo "$0: $srcfile: No such file or directory" exit 1 fi otf_vers=`cat $srcfile` eval "$otf_vers" fi if test -z "$option"; then option="--full" fi case "$option" in --major) echo $major ;; --minor) echo $minor ;; --sub) echo $sub ;; --string) echo $string ;; --full) out="$major.$minor" if test x"$sub" != "x0"; then out="$out.$sub" fi if test x"$string" != "x"; then out="$out$string" fi echo "$out" ;; --library) echo $library ;; -h|--help) cat < output directory (implicitly sets -k) \n", " -[0-9] use given compression level (default 4) \n", " 0 - plain \n", " 1 - minimum compression, fastest \n", " 9 - maximum compression, slowest \n", " \n", NULL }; #ifdef HAVE_ZLIB int compressFile( const char* filename, const char* outfilename, uint32_t level, uint32_t blocksize ); int decompressFile( const char* filename, const char* outfilename, uint32_t blocksize ); #define ZLEVEL 4 #define BUFFERSIZE (10*1024) #define MODE_DEFAULT 0 #define MODE_COMPRESS 1 #define MODE_DECOMPRESS 2 int main ( int argc, char** argv ) { int ret; int i; uint32_t mode= MODE_DEFAULT; const char* command= NULL; const char* p; const char* infilename; char outfilename[OTF_PATH_MAX]; char* outdir= NULL; int keep= 0; int zlevel= ZLEVEL; if ( 1 >= argc ) { SHOW_HELPTEXT; return 0; } /* collect parameters */ for ( i= 1; i < argc; i++ ) { if ( 0 == strcmp( "-h", argv[i] ) || 0 == strcmp( "--help", argv[i] ) ) { SHOW_HELPTEXT; exit( 0 ); } else if ( 0 == strcmp( "-k", argv[i] ) ) { keep= 1; } else if ( 0 == strcmp( "-o", argv[i] ) && i < argc -1 ) { outdir= argv[++i]; keep= 1; } else if ( 0 == strcmp( "-c", argv[i] ) ) { if ( MODE_DEFAULT == mode ) { mode= MODE_COMPRESS; } else { fprintf( stderr, "mode already set, cannot re-set, ignoring '-c'\n" ); } } else if ( 0 == strcmp( "-d", argv[i] ) ) { if ( MODE_DEFAULT == mode ) { mode= MODE_DECOMPRESS; } else { fprintf( stderr, "mode already set, cannot re-set, ignoring '-d'\n" ); } } else if ( ( '-' == argv[i][0] ) && ( '0' <= argv[i][1] ) && ( '9' >= argv[i][1] ) ) { zlevel= (int) ( argv[i][1] - '0' ); } else if ( 0 == strcmp( "-V", argv[i] ) ) { printf( "%u.%u.%u \"%s\"\n", OTF_VERSION_MAJOR, OTF_VERSION_MINOR, OTF_VERSION_SUB, OTF_VERSION_STRING); exit( 0 ); } } /* look at argv[0], mode defaults to compress/decomress according to command name */ if ( MODE_DEFAULT == mode ) { p= strrchr( argv[0], '/' ); command = NULL != p ? p+1 : argv[0]; if ( 0 == strcmp( "otfdecompress", command ) || 0 == strcmp( "otfdecompress.exe", command ) ) { mode= MODE_DECOMPRESS; } } /* files to (de)compress */ for ( i= 1; i < argc; i++ ) { if ( '-' == argv[i][0] ) { /* switches already handled */ if ( outdir != NULL && 0 == strcmp( argv[i], "-o" ) ) { /* skip value of option '-o' */ i++; } } else { /* assume argument is a file name */ infilename= argv[i]; /* compose output file name */ if ( NULL == outdir ) { snprintf( outfilename, sizeof( outfilename ) -1, "%s", infilename ); } else { p= strrchr( infilename, '/' ); if ( NULL != p ) p++; else p= infilename; snprintf( outfilename, sizeof( outfilename ) -1, "%s/%s", outdir, p ); } switch ( mode ) { case MODE_DECOMPRESS: /* decompress file */ /* check for ".z" at the end and refuse uncompression if not found */ if ( ( 2 >= strlen( infilename ) ) || ( 0 != strcmp( infilename +strlen( infilename ) -2, ".z" ) ) ) { fprintf( stderr, "ERROR: no trailing '.z' in filename '%s', rejecting\n", infilename ); continue; } /* cut trailing '.z' from output file name */ outfilename[strlen( outfilename )-2] = '\0'; fprintf( stdout, "decompress \"%s\" -> \"%s\"\n", infilename, outfilename ); ret= decompressFile( infilename, outfilename, BUFFERSIZE ); if ( 0 == ret ) { if ( keep ) { /* keep compressed file */ } else { /* remove compressed file */ ret= unlink( infilename ); if ( 0 != ret ) { fprintf( stderr, "error removing '%s'\n", infilename ); } } } else { fprintf( stderr, "decompress error for file '%s'\n", infilename ); } break; case MODE_COMPRESS: case MODE_DEFAULT: default: /* compress file */ /* check for ".z" at the end and refuse compression if found */ if ( ( 2 < strlen( infilename ) ) && ( 0 == strcmp( infilename +strlen( infilename ) -2, ".z" ) ) ) { fprintf( stderr, "ERROR: found '.z' suffix in filename, " "file '%s' seems already compressed, skip\n", infilename ); continue; } /* add trailing '.z' to output file name */ if ( strlen( outfilename ) +2 < sizeof( outfilename ) ) strcat( outfilename, ".z" ); fprintf( stdout, "compress \"%s\" -> \"%s\"\n", infilename, outfilename ); ret= compressFile( infilename, outfilename, zlevel, BUFFERSIZE ); if ( 0 == ret ) { if ( keep ) { if ( outdir ) { /* keep uncompressed file */ } else { /* rename original file */ snprintf( outfilename, sizeof( outfilename ) -1, "%s.original", infilename ); ret= rename( infilename, outfilename ); if ( 0 != ret ) { fprintf( stderr, "error renaming '%s' to '%s'\n", infilename, outfilename ); } } } else { /* remove uncompressed */ ret= unlink( infilename ); if ( 0 != ret ) { fprintf( stderr, "error removing '%s'\n", infilename ); } } } else { fprintf( stderr, "compress error for file '%s'\n", infilename ); } break; } } } return 0; } int compressFile( const char* filename, const char* outfilename, uint32_t level, uint32_t blocksize ) { z_stream z; int status; unsigned char* inbuf; unsigned char* outbuf; FILE *fin; FILE *fout; uint64_t totalin= 0; uint64_t totalout= 0; uint64_t read; uint64_t write; struct timeval start; struct timeval stop; double time; inbuf= (unsigned char*) malloc( blocksize * sizeof(unsigned char) ); assert( NULL != inbuf ); outbuf= (unsigned char*) malloc( blocksize * sizeof(unsigned char) ); assert( NULL != outbuf ); fin= fopen( filename, "rb" ); if ( NULL == fin ) { fprintf( stderr, "cannot open file '%s' for reading, skip\n", filename ); free( inbuf ); free( outbuf ); return 1; } fout= fopen( outfilename, "wb" ); if ( NULL == fout ) { fprintf( stderr, "cannot open file '%s' for writing, skip\n", outfilename ); fclose( fin ); free( inbuf ); free( outbuf ); return 1; } z.zalloc= NULL; z.zfree= NULL; z.opaque= NULL; deflateInit( &z, level ); z.avail_in= 0; z.next_out= outbuf; z.avail_out= blocksize; gettimeofday( &start, NULL ); while ( 1 ) { /* is no more data in the buffer? */ if ( 0 == z.avail_in ) { /* get new data */ z.next_in= inbuf; read= fread( inbuf, sizeof(char), blocksize, fin ); if ( 0 == read ) { break; } totalin += read; z.avail_in= (uInt) read; } /* deflate the buffer */ status= deflate( &z, Z_FULL_FLUSH ); write= blocksize - z.avail_out; if ( Z_OK != status ) { fprintf( stderr, " status= %u\n", status ); } write= blocksize - z.avail_out; totalout += write; /* write to output if there is any data */ if ( write > 0 ) { fwrite( outbuf, sizeof(char), (size_t) write, fout ); } /* gettimeofday( &stop, NULL ); time= ((double) ( stop.tv_sec - start.tv_sec ) ) + 0.000001 * ((double) ( stop.tv_usec - start.tv_usec ) ); fprintf( stderr, " %llu / %llu %6.2fs\n", totalout, totalin, time ); */ z.next_out= outbuf; z.avail_out= blocksize; } gettimeofday( &stop, NULL ); time= ((double) ( stop.tv_sec - start.tv_sec ) ) + 0.000001 * ((double) ( stop.tv_usec - start.tv_usec ) ); fprintf( stdout, "\tlevel= %u, buf= %ub : %llub / %llub = %6.2f%%, time= %5.3fs\n", level, blocksize, (unsigned long long) totalout, (unsigned long long) totalin, 100.0 * ((double) totalout) / (double)((0 < totalin) ? totalin : 1), time ); deflateEnd( &z ); fclose( fin ); fclose( fout ); free( inbuf ); free( outbuf ); return 0; } int decompressFile( const char* infilename, const char* outfilename, uint32_t blocksize ) { z_stream z; int status; unsigned char* inbuf; unsigned char* outbuf; FILE *fin; FILE *fout; uint64_t totalin= 0; uint64_t totalout= 0; uint64_t read; uint64_t write; struct timeval start; struct timeval stop; double time; inbuf= (unsigned char*) malloc( blocksize * sizeof(unsigned char) ); assert( NULL != inbuf ); outbuf= (unsigned char*) malloc( blocksize * sizeof(unsigned char) ); assert( NULL != outbuf ); fin= fopen( infilename, "rb" ); if ( NULL == fin ) { fprintf( stderr, "cannot open file '%s' for reading, skip\n", infilename ); free( inbuf ); free( outbuf ); return 1; } fout= fopen( outfilename, "wb" ); if ( NULL == fout ) { fprintf( stderr, "cannot open file '%s' for writing, skip\n", outfilename ); fclose( fin ); free( inbuf ); free( outbuf ); return 1; } z.zalloc = NULL; z.zfree = NULL; z.opaque = NULL; inflateInit( &z ); /* initial setup */ z.avail_in = 0; z.next_out = outbuf; z.avail_out = blocksize; gettimeofday( &start, NULL ); while(1) { /* is no more data in the buffer? */ if ( z.avail_in == 0 ) { /* get new data */ z.next_in= inbuf; read= fread( inbuf, sizeof( char ), blocksize, fin ); /* is the file empty? */ if ( 0 == read ) { break; } totalin += read; z.avail_in= (uInt) read; } /* uncompress */ status = inflate( &z, Z_SYNC_FLUSH ); if ( Z_OK != status ) { fprintf( stderr, "error in uncompressing\n" ); fclose( fin ); fclose( fout ); return 0; } /* get size of the out buffer */ write= blocksize - z.avail_out; totalout += write; /* write to output if there is any data */ if ( 0 < write ) { fwrite( outbuf, sizeof( char ), (size_t) write, fout ); } z.next_out = outbuf; z.avail_out = blocksize; } gettimeofday( &stop, NULL ); time= ((double) ( stop.tv_sec - start.tv_sec ) ) + 0.000001 * ((double) ( stop.tv_usec - start.tv_usec ) ); fprintf( stdout, "\tbuf= %ub : %llub / %llub = %6.2f%%, time= %5.3fs\n", blocksize, (unsigned long long) totalin, (unsigned long long) totalout, 100.0 * ((double) totalin) / (double)((0 < totalout) ? totalout : 1), time ); /* finalize everything */ inflateEnd( &z ); fclose( fin ); fclose( fout ); free( inbuf ); free( outbuf ); return 0; } #else /* HAVE_ZLIB */ int main ( int argc, const char** argv ) { fprintf( stderr, "'zlib' not available, otfcompress de-activated\n" ); return 1; } #endif /* HAVE_ZLIB */ eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfcompress/PaxHeaders.7332/otfcompress_vs08.vcproj0000644000000000000000000000013212544237152027140 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.962893339 30 ctime=1508162366.893833956 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfcompress/otfcompress_vs08.vcproj0000644000175000017500000001647612544237152030345 0ustar00trahaytrahay00000000000000 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfcompress/PaxHeaders.7332/sys_time.h0000644000000000000000000000013212544237152024474 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.962893339 30 ctime=1508162366.885833257 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfcompress/sys_time.h0000644000175000017500000000260112544237152025662 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifndef CUSTOM_SYS_TIME_H #define CUSTOM_SYS_TIME_H #ifdef WIN32 #include "OTF_Platform.h" /* Based on timeval.h by Wu Yongwei */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #define EPOCHFILETIME (116444736000000000LL) #include #include typedef struct { long tv_sec; long tv_usec; } timeval; struct timezone { int tz_minuteswest; /* minutes W of Greenwich */ int tz_dsttime; /* type of dst correction */ }; static int gettimeofday(struct timeval *tv, struct timezone *tz) { FILETIME ft; LARGE_INTEGER li; __int64 t; static int tzflag; if (tv) { GetSystemTimeAsFileTime(&ft); li.LowPart = ft.dwLowDateTime; li.HighPart = ft.dwHighDateTime; t = li.QuadPart; /* In 100-nanosecond intervals */ t -= EPOCHFILETIME; /* Offset to the Epoch time */ t /= 10; /* In microseconds */ tv->tv_sec = (long)(t / 1000000); tv->tv_usec = (long)(t % 1000000); } if (tz) { if (!tzflag) { _tzset(); tzflag++; } tz->tz_minuteswest = _timezone / 60; tz->tz_dsttime = _daylight; } return 0; } #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* WIN32 */ #endif /* CUSTOM_SYS_TIME_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfcompress/PaxHeaders.7332/Makefile.am0000644000000000000000000000013012544237152024521 xustar0030 mtime=1435582058.539899952 29 atime=1508162197.93225421 29 ctime=1508162366.87383221 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfcompress/Makefile.am0000644000175000017500000000112312544237152025707 0ustar00trahaytrahay00000000000000AM_CPPFLAGS = \ -I$(top_builddir)/otflib -I$(top_srcdir)/otflib \ $(ZLIB_INCLUDE_LINE) if AMBUILDBINARIES bin_PROGRAMS = otfcompress install-exec-hook: (cd $(DESTDIR)$(bindir); rm -f otfdecompress$(EXEEXT); \ $(LN_S) otfcompress$(EXEEXT) otfdecompress$(EXEEXT)) uninstall-local: rm -f $(DESTDIR)$(bindir)/otfdecompress$(EXEEXT) endif otfcompress_LDADD = $(top_builddir)/otflib/libopen-trace-format.la $(ZLIB_LIB_LINE) otfcompress_DEPENDENCIES = $(top_builddir)/otflib/libopen-trace-format.la otfcompress_SOURCES = \ sys_time.h \ otfcompress.c EXTRA_DIST = \ otfcompress_vs08.vcproj eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfcompress/PaxHeaders.7332/Makefile.in0000644000000000000000000000013113171135225024526 xustar0030 mtime=1508162197.952255601 30 atime=1508162279.754468585 29 ctime=1508162366.87383221 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfcompress/Makefile.in0000644000175000017500000005407013171135225025724 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ @AMBUILDBINARIES_TRUE@bin_PROGRAMS = otfcompress$(EXEEXT) subdir = tools/otfcompress ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/m4/libtool.m4 \ $(top_srcdir)/config/m4/ltoptions.m4 \ $(top_srcdir)/config/m4/ltsugar.m4 \ $(top_srcdir)/config/m4/ltversion.m4 \ $(top_srcdir)/config/m4/lt~obsolete.m4 \ $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/config/m4/acinclude.debug.m4 \ $(top_srcdir)/config/m4/acinclude.math.m4 \ $(top_srcdir)/config/m4/acinclude.mpi.m4 \ $(top_srcdir)/config/m4/acinclude.omp.m4 \ $(top_srcdir)/config/m4/acinclude.pdflatex_pgfplots.m4 \ $(top_srcdir)/config/m4/acinclude.swig_python.m4 \ $(top_srcdir)/config/m4/acinclude.vtf3.m4 \ $(top_srcdir)/config/m4/acinclude.verbose.m4 \ $(top_srcdir)/config/m4/acinclude.zlib.m4 \ $(top_srcdir)/config/m4/acinclude.zoidfs.m4 \ $(top_srcdir)/config/m4/acarchive/ax_mpi.m4 \ $(top_srcdir)/config/m4/acarchive/ax_openmp.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_otfcompress_OBJECTS = otfcompress.$(OBJEXT) otfcompress_OBJECTS = $(am_otfcompress_OBJECTS) am__DEPENDENCIES_1 = AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(otfcompress_SOURCES) DIST_SOURCES = $(otfcompress_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BMI_INCLUDE_DIR = @BMI_INCLUDE_DIR@ BMI_LIB_DIR = @BMI_LIB_DIR@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLOCK_GETTIME_LIB = @CLOCK_GETTIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHLIB = @MATHLIB@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICFLAGS = @MPICFLAGS@ MPICXX = @MPICXX@ MPICXXFLAGS = @MPICXXFLAGS@ MPILIBS = @MPILIBS@ MPI_INCLUDE_DIR = @MPI_INCLUDE_DIR@ MPI_INCLUDE_LINE = @MPI_INCLUDE_LINE@ MPI_LIB_DIR = @MPI_LIB_DIR@ MPI_LIB_LINE = @MPI_LIB_LINE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENMP_CXXFLAGS = @OPENMP_CXXFLAGS@ OTF_VERSION_LIBRARY = @OTF_VERSION_LIBRARY@ OTF_VERSION_MAJOR = @OTF_VERSION_MAJOR@ OTF_VERSION_MINOR = @OTF_VERSION_MINOR@ OTF_VERSION_STRING = @OTF_VERSION_STRING@ OTF_VERSION_SUB = @OTF_VERSION_SUB@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFTEX = @PDFTEX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWIG = @SWIG@ SWIG_PYTHON_CFLAGS = @SWIG_PYTHON_CFLAGS@ SWIG_PYTHON_OPTS = @SWIG_PYTHON_OPTS@ VERSION = @VERSION@ VTF3_INCLUDE_DIR = @VTF3_INCLUDE_DIR@ VTF3_INCLUDE_LINE = @VTF3_INCLUDE_LINE@ VTF3_LIB_DIR = @VTF3_LIB_DIR@ VTF3_LIB_LINE = @VTF3_LIB_LINE@ ZLIB_INCLUDE_DIR = @ZLIB_INCLUDE_DIR@ ZLIB_INCLUDE_LINE = @ZLIB_INCLUDE_LINE@ ZLIB_LIB_DIR = @ZLIB_LIB_DIR@ ZLIB_LIB_LINE = @ZLIB_LIB_LINE@ ZOIDFS_INCLUDE_DIR = @ZOIDFS_INCLUDE_DIR@ ZOIDFS_INCLUDE_LINE = @ZOIDFS_INCLUDE_LINE@ ZOIDFS_LIB_DIR = @ZOIDFS_LIB_DIR@ ZOIDFS_LIB_LINE = @ZOIDFS_LIB_LINE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_inttypes_h = @have_inttypes_h@ have_stdint_h = @have_stdint_h@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ python_config = @python_config@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sizeof_long = @sizeof_long@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = \ -I$(top_builddir)/otflib -I$(top_srcdir)/otflib \ $(ZLIB_INCLUDE_LINE) otfcompress_LDADD = $(top_builddir)/otflib/libopen-trace-format.la $(ZLIB_LIB_LINE) otfcompress_DEPENDENCIES = $(top_builddir)/otflib/libopen-trace-format.la otfcompress_SOURCES = \ sys_time.h \ otfcompress.c EXTRA_DIST = \ otfcompress_vs08.vcproj all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/otfcompress/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign tools/otfcompress/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list otfcompress$(EXEEXT): $(otfcompress_OBJECTS) $(otfcompress_DEPENDENCIES) $(EXTRA_otfcompress_DEPENDENCIES) @rm -f otfcompress$(EXEEXT) $(AM_V_CCLD)$(LINK) $(otfcompress_OBJECTS) $(otfcompress_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/otfcompress.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." @AMBUILDBINARIES_FALSE@uninstall-local: @AMBUILDBINARIES_FALSE@install-exec-hook: clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-exec-hook install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-local .MAKE: install-am install-exec-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-exec-hook install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-binPROGRAMS uninstall-local .PRECIOUS: Makefile @AMBUILDBINARIES_TRUE@install-exec-hook: @AMBUILDBINARIES_TRUE@ (cd $(DESTDIR)$(bindir); rm -f otfdecompress$(EXEEXT); \ @AMBUILDBINARIES_TRUE@ $(LN_S) otfcompress$(EXEEXT) otfdecompress$(EXEEXT)) @AMBUILDBINARIES_TRUE@uninstall-local: @AMBUILDBINARIES_TRUE@ rm -f $(DESTDIR)$(bindir)/otfdecompress$(EXEEXT) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/gtg/extlib/otf/tools/PaxHeaders.7332/otfinfo0000644000000000000000000000013213171135476021515 xustar0030 mtime=1508162366.525801833 30 atime=1508162367.741908015 30 ctime=1508162366.525801833 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfinfo/0000755000175000017500000000000013171135476022761 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfinfo/PaxHeaders.7332/hash.h0000644000000000000000000000013212544237152022663 xustar0030 mtime=1435582058.539899952 30 atime=1508138860.063523017 30 ctime=1508162366.521801483 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfinfo/hash.h0000644000175000017500000000176212544237152024060 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Michael Heyde */ #ifndef HASH_H #define HASH_H #include "OTF_inttypes.h" /* 0x1000 = 4096 */ #define HASH_SIZE 0X1000 #define HASH_GET_KEY(key) \ { \ key += ~(key << 15); \ key ^= (key >> 10); \ key += (key << 3); \ key ^= (key >> 6); \ key += ~(key << 11); \ key ^= (key >> 16); \ key &= HASH_SIZE - 1; \ } typedef struct mapInfoProcessS { uint32_t process; uint64_t lastValue; uint64_t lastTime; double highestRate; struct mapInfoProcessS *next; } mapInfoProcessT; /* initialize the hash */ mapInfoProcessT* hash_new( void ); /* add an entry to the hash */ mapInfoProcessT* hash_add( mapInfoProcessT *hash, uint32_t process ); /* search an entry in the hash */ mapInfoProcessT* hash_search( mapInfoProcessT *hash, uint32_t process ); /* free all mem of the hash */ void hash_delete( mapInfoProcessT *hash ); #endif /* HASH_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfinfo/PaxHeaders.7332/handler.c0000644000000000000000000000013212544237152023350 xustar0030 mtime=1435582058.539899952 30 atime=1508138860.055522817 30 ctime=1508162366.521801483 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfinfo/handler.c0000644000175000017500000003336012544237152024544 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Michael Heyde */ #include "handler.h" #include "otfinfo_error.h" #include "otf.h" #include #include #define MAXINFOLEVEL 4 /* Level 1/4 handles */ int handleUnknownRecord( void *userData, uint64_t time, uint32_t process, const char *record ) { otfinfo_assert(0); return OTF_RETURN_ABORT; } int handleDefCreator( void *userData, uint32_t stream, const char *creator ) { ((definitionInfoT*)userData)->creatorName = strdup(creator); return OTF_RETURN_OK; } int handleDefUniqueId( void *userData, uint32_t stream, uint64_t uid ) { definitionInfoT *info = userData; info->traceUniqueId = uid; return OTF_RETURN_OK; } int handleDefVersion( void *userData, uint32_t stream, uint8_t major, uint8_t minor, uint8_t sub, const char *string ) { definitionInfoT *info = userData; info->otfVersionMajor = major; info->otfVersionMinor = minor; info->otfVersionSub = sub; if( string != NULL ) { info->otfVersionString = strdup(string); } else { info->otfVersionString = strdup(""); } return OTF_RETURN_OK; } int handleDefProcess( void *userData, uint32_t stream, uint32_t process, const char *name, uint32_t parent ) { /* in a low info level, increment the process counter */ if( MAXINFOLEVEL > ((definitionInfoT*)userData)->infoLevel ) { ((definitionInfoT*)userData)->counterProcessDefinition++; } else { /* in the max info level, get the process names */ int index=0; definitionInfoT *info = (definitionInfoT*)userData; while(info->processNames[index]) index++; (info->processNames)[index] = strdup(name); } return OTF_RETURN_OK; } int handleDefTimerResolution( void *userData, uint32_t stream, uint64_t ticksPerSecond ) { ((definitionInfoT*)userData)->timerResolution = ticksPerSecond; return OTF_RETURN_OK; } int handleDefinitionComment( void *userData, uint32_t stream, const char *comment ) { definitionInfoT *info = (definitionInfoT*)userData; uint32_t index = (info->counterDefinitionComment)++; (info->definitionComments) = (char**)realloc(info->definitionComments,(index + 1) * sizeof(char*)); (info->definitionComments)[index] = strdup(comment); return OTF_RETURN_OK; } /* Level 2 handles */ int handleDefFunction( void *userData, uint32_t stream, uint32_t func, const char *name, uint32_t funcGroup, uint32_t source ) { /*in a low info level, increment the function counter*/ if( MAXINFOLEVEL > ((definitionInfoT*)userData)->infoLevel ) { ((definitionInfoT*)userData)->counterFunctionDefinition++; } else { /*in the max info level, get the function names*/ int index = 0; definitionInfoT *info = (definitionInfoT*)userData; while(info->functionNames[index]) index++; (info->functionNames)[index] = strdup(name); } return OTF_RETURN_OK; } int handleDefCounter( void *userData, uint32_t stream, uint32_t counter, const char *name, uint32_t properties, uint32_t counterGroup, const char *unit ) { /*in a low info level, increment the counter counter*/ if( 3 > ((definitionInfoT*)userData)->infoLevel) { ((definitionInfoT*)userData)->counterCounterDefinition++; } else { /*in the max info level, get the counter names*/ definitionInfoT *info = (definitionInfoT*)userData; uint64_t i = 0; while( ((info->counters)[i].name) && (i < info->counterCounterDefinition) ) i++; (info->counters)[i].name = strdup(name); (info->counters)[i].id = counter; (info->counters)[i].properties = properties; } return OTF_RETURN_OK; } int handleDefMarker( void *userData, uint32_t stream, uint32_t token, const char *name, uint32_t type ) { /*in a low info level, increment the marker counter*/ if( MAXINFOLEVEL > ((definitionInfoT*)userData)->infoLevel ) { ((definitionInfoT*)userData)->counterMarkerDefinition++; } else { /*in the max info level, get the marker names*/ uint32_t index = 0; definitionInfoT *info = (definitionInfoT*)userData; while(info->markerNames[index]) index++; (info->markerNames)[index] = strdup(name); } return OTF_RETURN_OK; } int handleDefCollectiveOperation( void *userData, uint32_t stream, uint32_t collOp, const char *name, uint32_t type ) { /*in a low info level, increment the collective counter*/ if( 3 > ((definitionInfoT*)userData)->infoLevel ) { ((definitionInfoT*)userData)->counterCollectiveOperationDefinition++; } else { /*in the max info level, get the collective operation names*/ int index = 0; definitionInfoT *info = (definitionInfoT*)userData; while(info->collectiveOperationNames[index]) index++; (info->collectiveOperationNames)[index] = strdup(name); } return OTF_RETURN_OK; } int handleDefProcessGroup( void *userData, uint32_t stream, uint32_t procGroup, const char *name, uint32_t numberOfProcs, const uint32_t *procs ) { /*in a low info level, increment the process group counter*/ if( MAXINFOLEVEL > ((definitionInfoT*)userData)->infoLevel ) { ((definitionInfoT*)userData)->counterProcessGroupDefinition++; } else { /*in the max info level, get the process group names*/ int index = 0; definitionInfoT *info = (definitionInfoT*)userData; while( info->processGroupNames[index] ) index++; (info->processGroupNames)[index] = strdup(name); } return OTF_RETURN_OK; } int handleDefFunctionGroup( void *userData, uint32_t stream, uint32_t funcGroup, const char *name) { /*in a low info level, increment the function group counter*/ if( MAXINFOLEVEL > ((definitionInfoT*)userData)->infoLevel ) { ((definitionInfoT*)userData)->counterFunctionGroupDefinition++; } else { /*in the max info level, get the function group names*/ int index = 0; definitionInfoT *info = (definitionInfoT*)userData; while(info->functionGroupNames[index]) index++; (info->functionGroupNames)[index] = strdup(name); } return OTF_RETURN_OK; } int handleDefCounterGroup( void *userData, uint32_t stream, uint32_t counterGroup, const char *name ) { /*in a low info level, increment the counter group counter*/ if( MAXINFOLEVEL > ((definitionInfoT*)userData)->infoLevel ) { ((definitionInfoT*)userData)->counterCounterGroupDefinition++; } else { /*in the max info level, get the counter group names*/ int index = 0; definitionInfoT *info = (definitionInfoT*)userData; while(info->counterGroupNames[index]) index++; (info->counterGroupNames)[index] = strdup(name); } return OTF_RETURN_OK; } int handleDefSclFile( void *userData, uint32_t stream, uint32_t sourceFile, const char *name) { definitionInfoT *info = (definitionInfoT*)userData; uint32_t index = (info->counterSourceFileName)++; (info->sourceFileNames) = (char**)realloc( info->sourceFileNames,(index + 1) * sizeof(char*) ); (info->sourceFileNames)[index] = strdup(name); return OTF_RETURN_OK; } /* Level 3 handles */ int handleEnter( void *userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source ) { ((definitionInfoT*)userData)->counterEnter++; return OTF_RETURN_OK; } int handleLeave( void *userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source ) { ((definitionInfoT*)userData)->counterLeave++; return OTF_RETURN_OK; } int handleSendMsg( void *userData, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t group, uint32_t type, uint32_t length, uint32_t source ) { ((definitionInfoT*)userData)->counterSend++; return OTF_RETURN_OK; } int handleRecvMsg( void *userData, uint64_t time, uint32_t recvProc, uint32_t sendProc, uint32_t group, uint32_t type, uint32_t length, uint32_t source ) { ((definitionInfoT*)userData)->counterReceive++; return OTF_RETURN_OK; } int handleRMAPut( void *userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t source ) { ((definitionInfoT*)userData)->counterRMAPut++; return OTF_RETURN_OK; } int handleRMAPutRemoteEnd( void *userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t source ) { ((definitionInfoT*)userData)->counterRMAPutRemoteEnd++; return OTF_RETURN_OK; } int handleRMAGet( void *userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t source ) { ((definitionInfoT*)userData)->counterRMAGet++; return OTF_RETURN_OK; } int handleRMAEnd( void *userData, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t source ) { ((definitionInfoT*)userData)->counterRMAEnd++; return OTF_RETURN_OK; } int handleMarker( void *userData, uint64_t time, uint32_t process, uint32_t token, const char* text ) { ((definitionInfoT*)userData)->counterMarker++; return OTF_RETURN_OK; } int handleCollectiveOperation( void *userData, uint64_t time, uint32_t process, uint32_t collective, uint32_t procGroup, uint32_t rootProc, uint32_t sent, uint32_t received, uint64_t duration, uint32_t source ) { ((definitionInfoT*)userData)->counterCollectiveOperation++; return OTF_RETURN_OK; } int handleEndCollectiveOperation( void *userData, uint64_t time, uint32_t process, uint64_t matchingId ) { ((definitionInfoT*)userData)->counterCollectiveOperation++; return OTF_RETURN_OK; } int handleFileOperation( void *userData, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source ) { ((definitionInfoT*)userData)->counterFileOperation++; return OTF_RETURN_OK; } int handleEndFileOperation( void *userData, uint64_t time, uint32_t process, uint32_t fileid, uint64_t handleid, uint32_t operation, uint64_t bytes, uint32_t source ) { ((definitionInfoT*)userData)->counterFileOperation++; return OTF_RETURN_OK; } int handleEnterSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t function, uint32_t process, uint32_t source ) { ((definitionInfoT*)userData)->counterSnapshot++; return OTF_RETURN_OK; } int handleCounter( void* userData, uint64_t time, uint32_t process, uint32_t counter, uint64_t value ) { uint64_t i = 0; double valueDif = 0.0; double timeDif = 0.0; double rate = 0.0; mapInfoProcessT *currentElement = NULL; definitionInfoT *info = (definitionInfoT*)userData; while( (i < info->counterCounterDefinition) && (info->counters[i].id != counter)) { i++; } if( i >= info->counterCounterDefinition ) return OTF_RETURN_ABORT; /*for the counter type*/ if( ((info->counters[i].properties) & OTF_COUNTER_TYPE_BITS) == OTF_COUNTER_TYPE_ACC ) { if( (info->counters)[i].processMap == NULL ) (info->counters)[i].processMap = hash_new(); /*calculate the current counter rate*/ currentElement = hash_search( info->counters[i].processMap, process ); if( !currentElement ) { currentElement = hash_add( info->counters[i].processMap, process ); } else { valueDif = value - currentElement->lastValue; timeDif = time - currentElement->lastTime; if( timeDif > 0 ) { rate = (valueDif / timeDif) * (double)(info->timerResolution); } if( rate > currentElement->highestRate ) currentElement->highestRate = rate; } currentElement->lastValue = value; currentElement->lastTime = time; } return OTF_RETURN_OK; } uint64_t process_get_sum_time( mapInfoProcessT *set ) { uint64_t sumTime = 0; uint32_t i; mapInfoProcessT *currentElement = NULL; for( i = 0; i < HASH_SIZE; i++ ) { currentElement = &set[i]; while( currentElement ) { if( (uint32_t)-1 != currentElement->process ) sumTime += currentElement->lastTime; currentElement = currentElement->next; } } return sumTime; } uint64_t process_get_sum_value( mapInfoProcessT *set ) { uint64_t sumValue = 0; uint32_t i; mapInfoProcessT *currentElement = NULL; for( i = 0; i < HASH_SIZE; i++ ) { currentElement = &set[i]; while( currentElement ) { if( (uint32_t)-1 != currentElement->process ) sumValue += currentElement->lastValue; currentElement = currentElement->next; } } return sumValue; } double process_get_highest_rate( mapInfoProcessT *set ) { double highestRate = 0; uint32_t i; mapInfoProcessT *currentElement = NULL; for( i = 0; i < HASH_SIZE; i++ ) { currentElement = &set[i]; while( currentElement ) { if( (uint32_t)-1 != currentElement->process ) { if( highestRate < currentElement->highestRate ) highestRate = currentElement->highestRate; } currentElement = currentElement->next; } } return highestRate; } eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfinfo/PaxHeaders.7332/hash.c0000644000000000000000000000013212544237152022656 xustar0030 mtime=1435582058.539899952 30 atime=1508138860.055522817 30 ctime=1508162366.525801833 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfinfo/hash.c0000644000175000017500000000354612544237152024055 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Michael Heyde */ #include "hash.h" #include static mapInfoProcessT *add_inner( mapInfoProcessT **current, uint32_t process ) { if( NULL != *current ) { return add_inner( &((mapInfoProcessT*)(*current))->next, process ); } else { *current = (mapInfoProcessT*)calloc( 1, sizeof(mapInfoProcessT) ); (*current)->process = process; return *current; } } static mapInfoProcessT *search_inner( mapInfoProcessT *current, uint32_t process ) { if( current ) { if( current->process == process ) return current; return search_inner( current->next, process ); } return NULL; } mapInfoProcessT *hash_new( ) { mapInfoProcessT *ret; int i; ret = (mapInfoProcessT*)calloc( HASH_SIZE, sizeof(mapInfoProcessT) ); for( i = 0; i < HASH_SIZE; i++) { ret[i].process = (uint32_t)-1; } return ret; } mapInfoProcessT *hash_add( mapInfoProcessT *hash, uint32_t process) { uint32_t hashkey = process; HASH_GET_KEY( hashkey ); if( hash[hashkey].process == (uint32_t)-1 ) { hash[hashkey].process = process; return &(hash[hashkey]); } else { return add_inner( &(hash[hashkey].next), process ); } } mapInfoProcessT *hash_search( mapInfoProcessT *hash, uint32_t process) { uint32_t hashkey = process; HASH_GET_KEY( hashkey ); if( hash[hashkey].process == process ) { return &(hash[hashkey]); } else { return search_inner( hash[hashkey].next, process ); } } void hash_delete( mapInfoProcessT *hash ) { int i; for( i = 0; i < HASH_SIZE; i++ ) { mapInfoProcessT *currentElement = hash[i].next; while( NULL != currentElement ) { mapInfoProcessT *tmpElement = currentElement; currentElement = currentElement->next; free( tmpElement ); } } free( hash ); } eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfinfo/PaxHeaders.7332/otfinfo.c0000644000000000000000000000013212544237152023377 xustar0030 mtime=1435582058.539899952 30 atime=1508138860.059522917 30 ctime=1508162366.525801833 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfinfo/otfinfo.c0000644000175000017500000011114312544237152024567 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Michael Heyde */ #include "handler.h" #include "otfinfo_error.h" #include "otf.h" #include #include #include #include #include #include #define PROGRESSBARLEN 20 static void set_handles_level_1( OTF_HandlerArray *handles, definitionInfoT *info ); static void set_handles_level_2( OTF_HandlerArray *handles, definitionInfoT *info ); static void set_handles_level_3( OTF_HandlerArray *handles, definitionInfoT *info ); static void set_handles_level_4( OTF_HandlerArray *handles, definitionInfoT *info ); static void show_info_level_1( definitionInfoT *info ); static void show_info_level_2( definitionInfoT *info ); static void show_info_level_3( definitionInfoT *info ); static void show_info_level_4( definitionInfoT *info ); static void free_data_level_1( definitionInfoT *info ); static void free_data_level_2( definitionInfoT *info ); static void free_data_level_3( definitionInfoT *info ); static void free_data_level_4( definitionInfoT *info ); int main(int argc, char **argv) { definitionInfoT info; /*structur where the trace information are stored*/ int i = 0; uint32_t numFileHandles = 1; /*number of filehandles */ uint64_t checkVal = 0; /*value used for asserts*/ uint64_t size = 0; /*size of the event files*/ uint64_t minRead = 0; /*variable for progress*/ uint64_t currRead = 0; /*count of current read bytes*/ uint32_t numStreams = 0; char* parameter = NULL; /*reference to the parameters*/ char* fileLocation = NULL; /*path to the tracefiles*/ OTF_FileManager *manager = NULL; OTF_Reader *reader = NULL; OTF_MasterControl* master = NULL; OTF_HandlerArray *handles = NULL; int showProgress = 0; int infoLevel = 1; /*level for the output of information (local)*/ static const char* Helptext[] = { " \n", " otfinfo - Program to get basic information of an OTF trace. \n", " \n", " Syntax: otfinfo [options] \n", " \n", " options: \n", " -h, --help show this help message \n", " -V show OTF version \n", " -f set max number of filehandles available \n", " -l set the information level for the output \n", " (0 - 4, default: 1) \n", " -a set the information level to 4 \n", " -p show progress bar for reading event files \n", " \n", NULL }; info.infoLevel = 1; /*level of information for the handles*/ /*if no parameter was given printing the helptext*/ if( 1 >= argc ) { int l = 0; while( Helptext[l] ) { printf( "%s",Helptext[l++] ); } return 0; } /*checking for additional parameters*/ for( i = 1 ; i < argc; i++ ) { parameter = argv[i]; if( (strcmp(parameter,"-f") == 0) && (i+1 < argc) ) { i++; numFileHandles = atoi(argv[i]); } else if( (strcmp(parameter,"-l") == 0) && (i+1 < argc) ) { i++; infoLevel = atoi(argv[i]); } else if( strcmp(parameter,"-a") == 0 ) { infoLevel = 4; } else if( strcmp(parameter,"-p") == 0 ) { showProgress = 1; } else if( strcmp(parameter,"-V") == 0 ) { printf( "%u.%u.%u \"%s\"\n", OTF_VERSION_MAJOR, OTF_VERSION_MINOR, OTF_VERSION_SUB, OTF_VERSION_STRING ); return 0; } else if( (strcmp(parameter,"-h") == 0) || (strcmp(parameter,"--help") == 0) ) { int l=0; while(Helptext[l]) { printf( "%s",Helptext[l++] ); } return 0; } else if( '-' != parameter[0] ) { char* p; fileLocation = parameter; p = strrchr( parameter, '.' ); if( p && strlen(p) >= 4 && strcmp(p, ".otf") == 0 ) *p = '\0'; } else { fprintf(stderr,"ERROR: Unknown option: '%s'\n",argv[i]); exit(1); } } if( numFileHandles < 1 ) { fprintf( stderr, "ERROR: less than 1 filehandle is not permitted\n" ); exit(1); } if( NULL == fileLocation ) { fprintf( stderr, "ERROR: no trace file was specified\n" ); exit(1); } info.filePrefix = OTF_getFilename( fileLocation, 0, OTF_FILETYPE_MASTER, 0, NULL ); /*preparing the reader*/ manager = OTF_FileManager_open( numFileHandles ); otfinfo_assert( manager ); reader = OTF_Reader_open( fileLocation, manager ); otfinfo_assert( reader ); handles = OTF_HandlerArray_open(); otfinfo_assert( handles ); if( 0 < infoLevel ) { info.infoLevel = 1; set_handles_level_1( handles, &info ); if( 1 < infoLevel ) { info.infoLevel = 2; set_handles_level_2( handles,&info ); } } /*read definition file*/ checkVal = OTF_Reader_readDefinitions( reader, handles ); otfinfo_assert( checkVal != OTF_READ_ERROR ); checkVal = OTF_Reader_readMarkers( reader, handles ); otfinfo_assert( checkVal != OTF_READ_ERROR ); /*getting the size of the event files*/ master = OTF_Reader_getMasterControl( reader ); otfinfo_assert( master ); numStreams = OTF_MasterControl_getCount( master ); otfinfo_assert( numStreams > 0 ); info.traceFileSize = 0; for( i = 0; i < (int)numStreams; i++ ) { static char filename[1024]; static uint32_t filecomp = OTF_FILECOMPRESSION_COMPRESSED; static struct stat filestat; OTF_MapEntry* entry = OTF_MasterControl_getEntryByIndex( master, i ); /*get event file name of stream*/ OTF_getFilename( fileLocation, entry->argument, OTF_FILETYPE_EVENT | filecomp, sizeof(filename), filename ); /*if stat succeeds, compute total file size*/ if( stat( filename, &filestat ) == 0 ) { info.traceFileSize += (uint64_t)filestat.st_size; } /*otherwise, re-try with uncompressed file*/ else { if( filecomp == OTF_FILECOMPRESSION_COMPRESSED ) { filecomp = OTF_FILECOMPRESSION_UNCOMPRESSED; i--; continue; } } filecomp = OTF_FILECOMPRESSION_COMPRESSED; } /*printing the results and cleanup*/ if( 0 < infoLevel ) { show_info_level_1( &info ); free_data_level_1( &info ); if( 1 < infoLevel ) { show_info_level_2( &info ); free_data_level_2( &info ); } } checkVal = OTF_HandlerArray_close( handles ); otfinfo_assert( checkVal ); checkVal = OTF_Reader_close( reader ); otfinfo_assert( checkVal ); OTF_FileManager_close( manager ); /*if the info level is higher than two, we have to read again the files*/ if( 2 < infoLevel ) { /*prepare for reading*/ manager = OTF_FileManager_open( numFileHandles ); otfinfo_assert( manager ); reader = OTF_Reader_open( fileLocation, manager ); otfinfo_assert( reader ); handles = OTF_HandlerArray_open(); otfinfo_assert( handles ); info.infoLevel = 3; set_handles_level_3( handles, &info ); if( 3 < infoLevel ) { info.infoLevel = 4; set_handles_level_4( handles, &info ); } /*read definitions*/ checkVal = OTF_Reader_readDefinitions( reader, handles ); otfinfo_assert( checkVal != OTF_READ_ERROR ); if( info.counterMarkerDefinition != 0 ) { /*read markers*/ checkVal = OTF_Reader_readMarkers( reader, handles ); otfinfo_assert( checkVal != OTF_READ_ERROR ); } if( 1 == showProgress ) { /*printing a kind of progress bar*/ OTF_Reader_setRecordLimit( reader, 10000 ); size = 1; currRead = 0; printf( "\n\n" ); printf( "reading events:\n" ); for( i = 0; i < PROGRESSBARLEN + 3; i++ ) printf( " " ); printf( "|100%%\r" ); printf( "0%%|" ); fflush( stdout ); i = 0; while( (checkVal = OTF_Reader_readEvents( reader, handles )) == 10000 ) { int current; otfinfo_assert( checkVal != OTF_READ_ERROR ) OTF_Reader_eventBytesProgress( reader, &minRead, &currRead, &size ); current = ( PROGRESSBARLEN * currRead ) / size; for( ; i < current; i++ ) printf( "#" ); fflush( stdout ); } otfinfo_assert( checkVal != OTF_READ_ERROR ) for( ; i < PROGRESSBARLEN; i++ ) printf( "#" ); printf( "\n\n" ); } else { checkVal = OTF_Reader_readEvents( reader, handles ); otfinfo_assert( checkVal != OTF_READ_ERROR ); } /*printing the results and cleanup*/ show_info_level_3( &info ); free_data_level_3( &info ); if( 3 < infoLevel ) { show_info_level_4( &info ); free_data_level_4( &info ); } checkVal = OTF_HandlerArray_close( handles ); otfinfo_assert( checkVal ); checkVal = OTF_Reader_close( reader ); otfinfo_assert( checkVal ); OTF_FileManager_close( manager ); } free( info.filePrefix ); return 0; } static void set_handles_level_1( OTF_HandlerArray *handles, definitionInfoT *info ) { OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleUnknownRecord, OTF_UNKNOWN_RECORD ); /*handler and inits for getting the creator name*/ info->creatorName = NULL; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefCreator, OTF_DEFCREATOR_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFCREATOR_RECORD ); /*handler and inits for getting trace's unique id*/ info->traceUniqueId = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefUniqueId, OTF_DEFUNIQUEID_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFUNIQUEID_RECORD ); /*handler and inits for getting the otf version*/ info->otfVersionString = NULL; info->otfVersionMajor = 0; info->otfVersionMinor = 0; info->otfVersionSub = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefVersion, OTF_DEFVERSION_RECORD); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFVERSION_RECORD ); /*handler and inits for getting the count of process definitions*/ info->counterProcessDefinition = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefProcess, OTF_DEFPROCESS_RECORD); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFPROCESS_RECORD ); /*handler and inits for getting the timer resolution*/ info->timerResolution = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefTimerResolution, OTF_DEFTIMERRESOLUTION_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFTIMERRESOLUTION_RECORD ); /*handler and inits for getting comments*/ info->definitionComments = NULL; info->counterDefinitionComment = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefinitionComment, OTF_DEFINITIONCOMMENT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFINITIONCOMMENT_RECORD ); } static void show_info_level_1( definitionInfoT *info ) { uint32_t i = 0, index = 0; double resolution = info->timerResolution; double fileSize = info->traceFileSize; char* unitTimer; char* unitFileSize; /*formating the timerresolution*/ while( (resolution / 1000 >= 1.0) && (i < 4) ) { resolution /= 1000; i++; } switch( i ) { case 0: unitTimer = "Hz";break; case 1: unitTimer = "KHz";break; case 2: unitTimer = "MHz";break; default: unitTimer = "GHz";break; } /*formating the size of the event files*/ i = 0; while( (fileSize / 1024 >= 1.0) && (i < 5) ) { fileSize /= 1024; i++; } switch( i ) { case 0: unitFileSize = "Bytes"; break; case 1: unitFileSize = "KB"; break; case 2: unitFileSize = "MB"; break; case 3: unitFileSize = "GB"; break; default: unitFileSize = "TB";break; } printf( "\n##############" ); printf( "\n#info level 1#" ); printf( "\n##############\n" ); printf( "+-------------------------------------------------------------------------------\n" ); printf( "| general information \n" ); printf( "+----------------------+--------------------------------------------------------\n" ); printf( "| tracefile name | %s\n", info->filePrefix ); printf( "| creator of the trace | %s\n", info->creatorName ); printf( "| trace unique id | %lli\n", (unsigned long long int)info->traceUniqueId ); printf( "| used OTF version | %i.%i.%i %s\n", info->otfVersionMajor, info->otfVersionMinor, info->otfVersionSub, info->otfVersionString ); printf( "| event files size | %.2f %s\n", fileSize,unitFileSize ); printf( "| process definitions | %llu\n", (unsigned long long)info->counterProcessDefinition ); printf( "| timer resolution | %.2f %s\n",resolution,unitTimer ); printf( "+----------------------+--------------------------------------------------------\n" ); index = info->counterDefinitionComment; printf( "| definition comments\n" ); printf( "+-------------------------------------------------------------------------------\n" ); for( i = 0; i < index; i++ ) { printf( "| %s\n", info->definitionComments[i] ); } printf( "+-------------------------------------------------------------------------------\n" ); printf( "\n" ); } static void free_data_level_1( definitionInfoT *info ) { uint32_t i, index; free( info->creatorName ); index = info->counterDefinitionComment; for( i = 0; i < index; i++ ) { free( info->definitionComments[i] ); } free( info->definitionComments ); free( info->otfVersionString ); } static void set_handles_level_2( OTF_HandlerArray *handles, definitionInfoT *info ) { /*handler and inits for getting the count of function definitions*/ info->counterFunctionDefinition = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefFunction, OTF_DEFFUNCTION_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFFUNCTION_RECORD ); /*handler and inits for getting the count of collop. definitions*/ info->counterCollectiveOperationDefinition = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefCollectiveOperation, OTF_DEFCOLLOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFCOLLOP_RECORD ); /*handler and inits for getting the count of counter definitions*/ info->counterCounterDefinition = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefCounter, OTF_DEFCOUNTER_RECORD); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFCOUNTER_RECORD ); /*handler and inits for getting the count of process group definitions*/ info->counterProcessGroupDefinition = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefProcessGroup, OTF_DEFPROCESSGROUP_RECORD); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFPROCESSGROUP_RECORD ); /*handler and inits for getting the count of function group definitions*/ info->counterFunctionGroupDefinition = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefFunctionGroup, OTF_DEFFUNCTIONGROUP_RECORD); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFFUNCTIONGROUP_RECORD ); /*handler and inits for getting the count of counter group definitions*/ info->counterCounterGroupDefinition = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefCounterGroup, OTF_DEFCOUNTERGROUP_RECORD); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFCOUNTERGROUP_RECORD ); /*handler and inits for getting the source files*/ info->sourceFileNames = NULL; info->counterSourceFileName = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefSclFile, OTF_DEFSCLFILE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFSCLFILE_RECORD ); /*handler and inits for getting the count of marker definitions*/ info->counterMarkerDefinition = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefMarker, OTF_DEFMARKER_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFMARKER_RECORD ); } static void show_info_level_2( definitionInfoT *info ) { int index,i; printf( "\n##############" ); printf( "\n#info level 2#" ); printf( "\n##############\n" ); printf( "+-------------------------------------------------------------------------------\n" ); printf( "| trace content\n" ); printf( "+----------------------------+--------------------------------------------------\n" ); printf( "| function definitions | %llu\n", (unsigned long long)info->counterFunctionDefinition ); printf( "| counter definitions | %llu\n", (unsigned long long)info->counterCounterDefinition ); printf( "| collective op. definitions | %llu\n", (unsigned long long)info->counterCollectiveOperationDefinition ); printf( "| |\n" ); printf( "| process group definitions | %llu\n", (unsigned long long)info->counterProcessGroupDefinition ); printf( "| function group definitions | %llu\n", (unsigned long long)info->counterFunctionGroupDefinition ); printf( "| counter group definitions | %llu\n", (unsigned long long)info->counterCounterGroupDefinition ); printf( "| |\n" ); printf( "| marker definitions | %llu\n", (unsigned long long)info->counterMarkerDefinition ); printf( "+----------------------------+--------------------------------------------------\n" ); index = info->counterSourceFileName; printf( "| source file names\n" ); printf( "+-------------------------------------------------------------------------------\n" ); for( i = 0; i < index; i++) { printf( "| %s\n", info->sourceFileNames[i] ); } printf( "+-------------------------------------------------------------------------------\n" ); } static void free_data_level_2( definitionInfoT *info ) { int i, index; index = info->counterSourceFileName; for( i = 0; i < index; i++ ) { free( (info->sourceFileNames)[i] ); } free( info->sourceFileNames ); } static void set_handles_level_3( OTF_HandlerArray *handles, definitionInfoT *info ) { uint64_t i = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleUnknownRecord, OTF_UNKNOWN_RECORD ); /*handler and inits for getting the count of enters*/ info->counterEnter = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleEnter, OTF_ENTER_RECORD); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_ENTER_RECORD ); /*handler and inits for getting the count of leaves*/ info->counterLeave = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleLeave, OTF_LEAVE_RECORD); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_LEAVE_RECORD ); /*handler and inits for getting the count of sends*/ info->counterSend = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleSendMsg, OTF_SEND_RECORD); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_SEND_RECORD ); /*handler and inits for getting the count of receives*/ info->counterReceive = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleRecvMsg, OTF_RECEIVE_RECORD); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_RECEIVE_RECORD ); /*handler and inits for getting the count of RMA puts*/ info->counterRMAPut = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleRMAPut, OTF_RMAPUT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_RMAPUT_RECORD ); /*handler and inits for getting the count RAM put remote end*/ info->counterRMAPutRemoteEnd = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleRMAPutRemoteEnd, OTF_RMAPUTRE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_RMAPUTRE_RECORD ); /*handler and inits for getting the count of RMA get*/ info->counterRMAGet = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleRMAGet, OTF_RMAGET_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_RMAGET_RECORD ); /*handler and inits for getting the count of RMA end*/ info->counterRMAEnd = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleRMAEnd, OTF_RMAEND_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_RMAEND_RECORD ); /*handler and inits for getting the count of collective operations*/ info->counterCollectiveOperation = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleCollectiveOperation, OTF_COLLOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_COLLOP_RECORD ); OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleEndCollectiveOperation, OTF_ENDCOLLOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_ENDCOLLOP_RECORD ); /*handler and inits for getting the count of file operations*/ info->counterFileOperation = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleFileOperation, OTF_FILEOPERATION_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_FILEOPERATION_RECORD ); OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleEndFileOperation, OTF_ENDFILEOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_ENDFILEOP_RECORD ); /*handler and inits for getting the count of markers*/ info->counterMarker = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleMarker, OTF_MARKER_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_MARKER_RECORD ); /*handler and inits for getting the count of snapshots*/ info->counterSnapshot = 0; OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleEnterSnapshot, OTF_ENTERSNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_ENTERSNAPSHOT_RECORD ); (info->counters) = (counterT*)malloc( info->counterCounterDefinition * sizeof(counterT) ); for( i = 0; i < info->counterCounterDefinition; i++ ) { (info->counters)[i].name = NULL; (info->counters)[i].id = 0; (info->counters)[i].properties = 3; (info->counters)[i].processMap = NULL; } OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefCounter, OTF_DEFCOUNTER_RECORD); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFCOUNTER_RECORD ); OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleCounter, OTF_COUNTER_RECORD); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_COUNTER_RECORD ); } static void show_info_level_3( definitionInfoT *info ) { uint64_t i; printf( "\n##############" ); printf( "\n#info level 3#" ); printf( "\n##############\n" ); printf( "+-----------------------+-------------------------------------------------------\n" ); printf( "| enters | %llu\n", (unsigned long long)info->counterEnter ); printf( "| leaves | %llu\n", (unsigned long long)info->counterLeave ); printf( "| sends | %llu\n", (unsigned long long)info->counterSend ); printf( "| receives | %llu\n", (unsigned long long)info->counterReceive ); printf( "| RMA Put | %llu\n", (unsigned long long)info->counterRMAPut ); printf( "| RMA Put remote end | %llu\n", (unsigned long long)info->counterRMAPutRemoteEnd ); printf( "| RMA Get | %llu\n", (unsigned long long)info->counterRMAGet ); printf( "| RMA End | %llu\n", (unsigned long long)info->counterRMAEnd ); printf( "| collective operations | %llu\n", (unsigned long long)info->counterCollectiveOperation ); printf( "| file operations | %llu\n", (unsigned long long)info->counterFileOperation ); printf( "| markers | %llu\n", (unsigned long long)info->counterMarker ); printf( "| snapshots | %llu\n", (unsigned long long)info->counterSnapshot ); printf( "+-----------------------+-------------------------------------------------------\n" ); printf( "+-------------------------------------------------------------------------------\n" ); printf( "| counters[%llu]\n", (unsigned long long)info->counterCounterDefinition ); printf( "+---------------+---------------------------------------------------------------\n" ); for( i = 0; i < info->counterCounterDefinition; i++ ) { printf( "| name | %s\n", info->counters[i].name ); if( ((info->counters[i].properties) & OTF_COUNTER_TYPE_BITS) == OTF_COUNTER_TYPE_ACC ) { uint64_t lastValue = process_get_sum_value( info->counters[i].processMap ); uint64_t lastTime = process_get_sum_time( info->counters[i].processMap ); double average = ((double)(lastValue)) * ((double)(info->timerResolution)) / ((double)(lastTime)); double highestRate = process_get_highest_rate(info->counters[i].processMap); printf( "| last value | %llu\n", (unsigned long long)lastValue ); printf( "| average rate | %7.4E per sec\n", average ); printf( "| highest rate | %7.4E per sec\n", highestRate ); } printf( "| |\n" ); } printf( "+---------------+---------------------------------------------------------------\n" ); printf( "\n" ); } static void free_data_level_3( definitionInfoT *info ) { uint64_t i; for( i = 0; i < info->counterCounterDefinition; i++ ) { free( (info->counters)[i].name ); if( NULL != (info->counters)[i].processMap ) hash_delete( (info->counters)[i].processMap ); } free( info->counters ); } static void set_handles_level_4( OTF_HandlerArray *handles, definitionInfoT *info ) { /*handler and inits for getting the names of processes*/ info->processNames = NULL; info->processNames = (char**)calloc( info->counterProcessDefinition, sizeof(char*) ); OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefProcess, OTF_DEFPROCESS_RECORD); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFPROCESS_RECORD ); /*handler and inits for getting the names of functions*/ info->functionNames = NULL; info->functionNames = (char**)calloc( info->counterFunctionDefinition, sizeof(char*) ); OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefFunction, OTF_DEFFUNCTION_RECORD); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFFUNCTION_RECORD ); /*handler and inits for getting the names of collective operations*/ info->collectiveOperationNames = NULL; info->collectiveOperationNames = (char**)calloc( info->counterCollectiveOperationDefinition, sizeof(char*) ); OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefCollectiveOperation, OTF_DEFCOLLOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFCOLLOP_RECORD ); /*handler and inits for getting the names of processe groups*/ info->processGroupNames = NULL; info->processGroupNames = (char**)calloc( info->counterProcessGroupDefinition, sizeof(char*) ); OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefProcessGroup, OTF_DEFPROCESSGROUP_RECORD); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFPROCESSGROUP_RECORD ); /*handler and inits for getting the names of function groups*/ info->functionGroupNames = NULL; info->functionGroupNames = (char**)calloc( info->counterFunctionGroupDefinition, sizeof(char*) ); OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefFunctionGroup, OTF_DEFFUNCTIONGROUP_RECORD); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFFUNCTIONGROUP_RECORD ); /*handler and inits for getting the names of counter groups*/ info->counterGroupNames = NULL; info->counterGroupNames = (char**)calloc( info->counterCounterGroupDefinition, sizeof(char*) ); OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefCounterGroup, OTF_DEFCOUNTERGROUP_RECORD); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFCOUNTERGROUP_RECORD ); /*handler and inits for getting the names of markers*/ info->markerNames = NULL; info->markerNames = (char**)calloc( info->counterMarkerDefinition, sizeof(char*) ); OTF_HandlerArray_setHandler( handles, (OTF_FunctionPointer*)handleDefMarker, OTF_DEFMARKER_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handles, info, OTF_DEFMARKER_RECORD ); } static void show_info_level_4( definitionInfoT *info ) { uint64_t i; printf( "\n##############" ); printf( "\n#info level 4#" ); printf( "\n##############\n" ); printf( "+-------------------------------------------------------------------------------\n" ); printf( "| process definitions[%llu]\n", (unsigned long long)info->counterProcessDefinition ); printf( "+-------------------------------------------------------------------------------\n" ); for( i = 0; i < info->counterProcessDefinition; i++ ) { printf( "| %s\n", info->processNames[i] ); } printf( "+-------------------------------------------------------------------------------\n" ); printf( "\n" ); printf( "+-------------------------------------------------------------------------------\n" ); printf( "| function definitions[%llu]\n", (unsigned long long)info->counterFunctionDefinition ); printf( "+-------------------------------------------------------------------------------\n" ); for(i = 0; i < info->counterFunctionDefinition; i++ ) { printf( "| %s\n",info->functionNames[i] ); } printf( "+-------------------------------------------------------------------------------\n" ); printf( "\n" ); printf( "+-------------------------------------------------------------------------------\n" ); printf( "| marker definitions[%llu]\n", (unsigned long long)info->counterMarkerDefinition ); printf( "+-------------------------------------------------------------------------------\n" ); for( i = 0; i < info->counterMarkerDefinition; i++ ) { printf( "| %s\n", info->markerNames[i] ); } printf( "+-------------------------------------------------------------------------------\n" ); printf( "\n" ); printf( "+-------------------------------------------------------------------------------\n" ); printf( "| collective operation definitions[%llu]\n", (unsigned long long)info->counterCollectiveOperationDefinition ); printf( "+-------------------------------------------------------------------------------\n" ); for( i = 0; i < info->counterCollectiveOperationDefinition; i++ ) { printf( "| %s\n", info->collectiveOperationNames[i] ); } printf( "+-------------------------------------------------------------------------------\n" ); printf( "\n" ); printf( "+-------------------------------------------------------------------------------\n" ); printf( "| process group definitions[%llu]\n", (unsigned long long)info->counterProcessGroupDefinition ); printf( "+-------------------------------------------------------------------------------\n" ); for( i = 0; i < info->counterProcessGroupDefinition; i++ ) { printf( "| %s\n", info->processGroupNames[i] ); } printf( "+-------------------------------------------------------------------------------\n" ); printf( "\n" ); printf( "+-------------------------------------------------------------------------------\n" ); printf( "| function group definitions[%llu]\n", (unsigned long long)info->counterFunctionGroupDefinition ); printf( "+-------------------------------------------------------------------------------\n" ); for( i = 0; i < info->counterFunctionGroupDefinition; i++ ) { printf( "| %s\n", info->functionGroupNames[i] ); } printf( "+-------------------------------------------------------------------------------\n" ); printf( "\n" ); printf( "+-------------------------------------------------------------------------------\n" ); printf( "| counter group definitions[%llu]\n", (unsigned long long)info->counterCounterGroupDefinition ); printf( "+-------------------------------------------------------------------------------\n" ); for( i = 0; i < info->counterCounterGroupDefinition; i++ ) { printf( "| %s\n", info->counterGroupNames[i] ); } printf( "+-------------------------------------------------------------------------------\n" ); } static void free_data_level_4( definitionInfoT *info ) { uint64_t i; if( info->processNames != NULL ) { for( i = 0; i < info->counterProcessDefinition; i++ ) { free( (info->processNames)[i] ); } free( info->processNames ); } if( info->processGroupNames != NULL ) { for( i = 0; i < info->counterProcessGroupDefinition; i++ ) { free( (info->processGroupNames)[i] ); } free( info->processGroupNames ); } if( info->functionNames != NULL ) { for( i = 0; i < info->counterFunctionDefinition; i++ ) { free( (info->functionNames)[i] ); } free( info->functionNames ); } if( info->functionGroupNames != NULL ) { for( i = 0; i < info->counterFunctionGroupDefinition; i++ ) { free( (info->functionGroupNames)[i] ); } free( info->functionGroupNames ); } for(i = 0; i < info->counterCollectiveOperationDefinition; i++ ) { free( (info->collectiveOperationNames)[i] ); } free( info->collectiveOperationNames ); for(i = 0; i < info->counterCounterGroupDefinition; i++ ) { free( (info->counterGroupNames)[i] ); } free( info->counterGroupNames ); for( i = 0; i < info->counterMarkerDefinition; i++ ) { free( (info->markerNames)[i] ); } free( info->markerNames ); } eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfinfo/PaxHeaders.7332/otfinfo_error.c0000644000000000000000000000013212544237152024610 xustar0030 mtime=1435582058.539899952 30 atime=1508138860.059522917 30 ctime=1508162366.525801833 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfinfo/otfinfo_error.c0000644000175000017500000000052012544237152025774 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Michael Heyde */ #include "otfinfo_error.h" #include #include void otfinfo_assert_impl(const char* file, int line, const char* expr) { fprintf(stderr, "FATAL: %s:%d: Assertion `%s' failed\n",file, line, expr); exit(1); } eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfinfo/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212544237152023623 xustar0030 mtime=1435582058.539899952 30 atime=1508162198.008259499 30 ctime=1508162366.517801135 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfinfo/Makefile.am0000644000175000017500000000051612544237152025014 0ustar00trahaytrahay00000000000000AM_CPPFLAGS = -I$(top_builddir)/otflib -I$(top_srcdir)/otflib if AMBUILDBINARIES bin_PROGRAMS = \ otfinfo endif otfinfo_LDADD = $(top_builddir)/otflib/libopen-trace-format.la otfinfo_DEPENDENCIES = $(otfinfo_LDADD) otfinfo_SOURCES = \ handler.h \ hash.h \ otfinfo_error.h \ handler.c \ hash.c \ otfinfo.c \ otfinfo_error.c eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfinfo/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135226023630 xustar0030 mtime=1508162198.024260615 30 atime=1508162279.794471825 30 ctime=1508162366.517801135 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfinfo/Makefile.in0000644000175000017500000005324713171135226025032 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ @AMBUILDBINARIES_TRUE@bin_PROGRAMS = otfinfo$(EXEEXT) subdir = tools/otfinfo ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/m4/libtool.m4 \ $(top_srcdir)/config/m4/ltoptions.m4 \ $(top_srcdir)/config/m4/ltsugar.m4 \ $(top_srcdir)/config/m4/ltversion.m4 \ $(top_srcdir)/config/m4/lt~obsolete.m4 \ $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/config/m4/acinclude.debug.m4 \ $(top_srcdir)/config/m4/acinclude.math.m4 \ $(top_srcdir)/config/m4/acinclude.mpi.m4 \ $(top_srcdir)/config/m4/acinclude.omp.m4 \ $(top_srcdir)/config/m4/acinclude.pdflatex_pgfplots.m4 \ $(top_srcdir)/config/m4/acinclude.swig_python.m4 \ $(top_srcdir)/config/m4/acinclude.vtf3.m4 \ $(top_srcdir)/config/m4/acinclude.verbose.m4 \ $(top_srcdir)/config/m4/acinclude.zlib.m4 \ $(top_srcdir)/config/m4/acinclude.zoidfs.m4 \ $(top_srcdir)/config/m4/acarchive/ax_mpi.m4 \ $(top_srcdir)/config/m4/acarchive/ax_openmp.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_otfinfo_OBJECTS = handler.$(OBJEXT) hash.$(OBJEXT) \ otfinfo.$(OBJEXT) otfinfo_error.$(OBJEXT) otfinfo_OBJECTS = $(am_otfinfo_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(otfinfo_SOURCES) DIST_SOURCES = $(otfinfo_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BMI_INCLUDE_DIR = @BMI_INCLUDE_DIR@ BMI_LIB_DIR = @BMI_LIB_DIR@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLOCK_GETTIME_LIB = @CLOCK_GETTIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHLIB = @MATHLIB@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICFLAGS = @MPICFLAGS@ MPICXX = @MPICXX@ MPICXXFLAGS = @MPICXXFLAGS@ MPILIBS = @MPILIBS@ MPI_INCLUDE_DIR = @MPI_INCLUDE_DIR@ MPI_INCLUDE_LINE = @MPI_INCLUDE_LINE@ MPI_LIB_DIR = @MPI_LIB_DIR@ MPI_LIB_LINE = @MPI_LIB_LINE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENMP_CXXFLAGS = @OPENMP_CXXFLAGS@ OTF_VERSION_LIBRARY = @OTF_VERSION_LIBRARY@ OTF_VERSION_MAJOR = @OTF_VERSION_MAJOR@ OTF_VERSION_MINOR = @OTF_VERSION_MINOR@ OTF_VERSION_STRING = @OTF_VERSION_STRING@ OTF_VERSION_SUB = @OTF_VERSION_SUB@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFTEX = @PDFTEX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWIG = @SWIG@ SWIG_PYTHON_CFLAGS = @SWIG_PYTHON_CFLAGS@ SWIG_PYTHON_OPTS = @SWIG_PYTHON_OPTS@ VERSION = @VERSION@ VTF3_INCLUDE_DIR = @VTF3_INCLUDE_DIR@ VTF3_INCLUDE_LINE = @VTF3_INCLUDE_LINE@ VTF3_LIB_DIR = @VTF3_LIB_DIR@ VTF3_LIB_LINE = @VTF3_LIB_LINE@ ZLIB_INCLUDE_DIR = @ZLIB_INCLUDE_DIR@ ZLIB_INCLUDE_LINE = @ZLIB_INCLUDE_LINE@ ZLIB_LIB_DIR = @ZLIB_LIB_DIR@ ZLIB_LIB_LINE = @ZLIB_LIB_LINE@ ZOIDFS_INCLUDE_DIR = @ZOIDFS_INCLUDE_DIR@ ZOIDFS_INCLUDE_LINE = @ZOIDFS_INCLUDE_LINE@ ZOIDFS_LIB_DIR = @ZOIDFS_LIB_DIR@ ZOIDFS_LIB_LINE = @ZOIDFS_LIB_LINE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_inttypes_h = @have_inttypes_h@ have_stdint_h = @have_stdint_h@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ python_config = @python_config@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sizeof_long = @sizeof_long@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_builddir)/otflib -I$(top_srcdir)/otflib otfinfo_LDADD = $(top_builddir)/otflib/libopen-trace-format.la otfinfo_DEPENDENCIES = $(otfinfo_LDADD) otfinfo_SOURCES = \ handler.h \ hash.h \ otfinfo_error.h \ handler.c \ hash.c \ otfinfo.c \ otfinfo_error.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/otfinfo/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign tools/otfinfo/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list otfinfo$(EXEEXT): $(otfinfo_OBJECTS) $(otfinfo_DEPENDENCIES) $(EXTRA_otfinfo_DEPENDENCIES) @rm -f otfinfo$(EXEEXT) $(AM_V_CCLD)$(LINK) $(otfinfo_OBJECTS) $(otfinfo_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/handler.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/otfinfo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/otfinfo_error.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-binPROGRAMS .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfinfo/PaxHeaders.7332/handler.h0000644000000000000000000000013212544237152023355 xustar0030 mtime=1435582058.539899952 30 atime=1508138860.063523017 30 ctime=1508162366.521801483 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfinfo/handler.h0000644000175000017500000001554112544237152024552 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Michael Heyde */ #ifndef HANDLER_H #define HANDLER_H #include "hash.h" #include "OTF_inttypes.h" typedef struct counterS { char *name; uint32_t id; uint32_t properties; mapInfoProcessT *processMap; } counterT; typedef struct definitionInfoS { char *filePrefix; char *creatorName; char **definitionComments; char **sourceFileNames; char **processNames; char **processGroupNames; char **functionNames; char **functionGroupNames; char **collectiveOperationNames; counterT *counters; char **counterGroupNames; char **markerNames; char *otfVersionString; int infoLevel; uint8_t otfVersionMajor; uint8_t otfVersionMinor; uint8_t otfVersionSub; uint64_t traceFileSize; uint64_t traceUniqueId; uint64_t counterDefinitionComment; uint64_t counterSourceFileName; uint64_t counterFunctionGroupDefinition; uint64_t counterFunctionDefinition; uint64_t counterCollectiveOperationDefinition; uint64_t counterProcessGroupDefinition; uint64_t counterProcessDefinition; uint64_t counterCounterDefinition; uint64_t counterCounterGroupDefinition; uint64_t counterMarkerDefinition; uint64_t counterLeave; uint64_t counterEnter; uint64_t counterSend; uint64_t counterReceive; uint64_t timerResolution; uint64_t counterRMAPut; uint64_t counterRMAPutRemoteEnd; uint64_t counterRMAGet; uint64_t counterRMAEnd; uint64_t counterMarker; uint64_t counterCollectiveOperation; uint64_t counterFileOperation; uint64_t counterSnapshot; } definitionInfoT; /* Level 1/4 handles */ int handleUnknownRecord( void *userData, uint64_t time, uint32_t process, const char *record ); int handleDefCreator( void *userData, uint32_t stream, const char *creator ); int handleDefUniqueId( void *userData, uint32_t stream, uint64_t uid ); int handleDefVersion( void *userData, uint32_t stream, uint8_t major, uint8_t minor, uint8_t sub, const char *string ); int handleDefProcess( void *userData, uint32_t stream, uint32_t process, const char *name, uint32_t parent ); int handleDefTimerResolution( void *userData, uint32_t stream, uint64_t ticksPerSecond ); int handleDefinitionComment( void *userData, uint32_t stream, const char *comment ); /* Level 2 handles */ int handleDefFunction( void *userData, uint32_t stream, uint32_t func, const char *name, uint32_t funcGroup, uint32_t source ); int handleDefCounter( void *userData, uint32_t stream, uint32_t counter, const char *name, uint32_t properties, uint32_t counterGroup, const char *unit ); int handleDefMarker( void *userData, uint32_t stream, uint32_t token, const char *name, uint32_t type ); int handleDefCollectiveOperation( void *userData, uint32_t stream, uint32_t collOp, const char *name, uint32_t type ); int handleDefProcessGroup( void *userData, uint32_t stream, uint32_t procGroup, const char *name, uint32_t numberOfProcs, const uint32_t *procs ); int handleDefFunctionGroup( void *userData, uint32_t stream, uint32_t funcGroup, const char *name ); int handleDefCounterGroup( void *userData, uint32_t stream, uint32_t counterGroup, const char *name ); int handleDefSclFile( void *userData, uint32_t stream, uint32_t sourceFile, const char *name ); /* Level 3 handles */ int handleEnter( void *userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source ); int handleLeave( void *userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source ); int handleSendMsg( void *userData, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t group, uint32_t type, uint32_t length, uint32_t source ); int handleRecvMsg( void *userData, uint64_t time, uint32_t recvProc, uint32_t sendProc, uint32_t group, uint32_t type, uint32_t length, uint32_t source ); int handleRMAPut( void *userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t source ); int handleRMAPutRemoteEnd( void *userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t source ); int handleRMAGet( void *userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t source ); int handleRMAEnd( void *userData, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t source ); int handleMarker( void *userData, uint64_t time, uint32_t process, uint32_t token, const char* text ); int handleCollectiveOperation( void *userData, uint64_t time, uint32_t process, uint32_t collective, uint32_t procGroup, uint32_t rootProc, uint32_t sent, uint32_t received, uint64_t duration, uint32_t source ); int handleEndCollectiveOperation( void *userData, uint64_t time, uint32_t process, uint64_t matchingId ); int handleFileOperation( void *userData, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source ); int handleEndFileOperation( void *userData, uint64_t time, uint32_t process, uint32_t fileid, uint64_t handleid, uint32_t operation, uint64_t bytes, uint32_t source ); int handleEnterSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t function, uint32_t process, uint32_t source ); int handleCounter( void* userData, uint64_t time, uint32_t process, uint32_t counter, uint64_t value ); uint64_t process_get_sum_time( mapInfoProcessT *set ); uint64_t process_get_sum_value( mapInfoProcessT *set ); double process_get_highest_rate(mapInfoProcessT *set ); #endif /* HANDLER_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfinfo/PaxHeaders.7332/otfinfo_error.h0000644000000000000000000000013212544237152024615 xustar0030 mtime=1435582058.539899952 30 atime=1508138860.067523117 30 ctime=1508162366.521801483 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfinfo/otfinfo_error.h0000644000175000017500000000052312544237152026004 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Michael Heyde */ #ifndef OTFINFO_ERROR_H #define OTFINFO_ERROR_H #define otfinfo_assert(expr) if(!(expr)) otfinfo_assert_impl(__FILE__, __LINE__, #expr); void otfinfo_assert_impl(const char* f, int l, const char* expr); #endif /* OTFINFO_ERROR_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/tools/PaxHeaders.7332/otfdump0000644000000000000000000000013213171135476021527 xustar0030 mtime=1508162366.493799039 30 atime=1508162367.741908015 30 ctime=1508162366.493799039 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfdump/0000755000175000017500000000000013171135476022773 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfdump/PaxHeaders.7332/otfdump_vs08.vcproj0000644000000000000000000000013212544237152025364 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.962893339 30 ctime=1508162366.497799389 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfdump/otfdump_vs08.vcproj0000644000175000017500000001651612544237152026564 0ustar00trahaytrahay00000000000000 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfdump/PaxHeaders.7332/Handler.h0000644000000000000000000000013212544237152023327 xustar0030 mtime=1435582058.539899952 30 atime=1508138859.259502937 30 ctime=1508162366.493799039 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfdump/Handler.h0000644000175000017500000002500712544237152024522 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifndef OTFTOVTF3_HANDLER_H #define OTFTOVTF3_HANDLER_H #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include "OTF_inttypes.h" #include "otf.h" #define KV_QUIET_MODE 0 #define KV_BASIC_MODE 1 #define KV_FULL_MODE 2 typedef struct { uint64_t num; uint64_t minNum; uint64_t maxNum; int show_keyvalue; bool silent_mode; bool records[OTF_NRECORDS]; /* enabled record types */ std::map counter_props; FILE* outfile; } Control; int printKeyValueList(Control* c, OTF_KeyValueList* list); /* *** Definition handler *** ************************************* */ int handleDefinitionComment( void* userData, uint32_t stream, const char* comment, OTF_KeyValueList* kvlist ); int handleDefTimerResolution( void* userData, uint32_t stream, uint64_t ticksPerSecond, OTF_KeyValueList* kvlist ); int handleDefProcess( void* userData, uint32_t stream, uint32_t process, const char* name, uint32_t parent, OTF_KeyValueList* kvlist ); int handleDefProcessGroup( void* userData, uint32_t stream, uint32_t procGroup, const char* name, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList* kvlist ); int handleDefAttributeList( void* userData, uint32_t stream, uint32_t attr_token, uint32_t num, OTF_ATTR_TYPE* list, OTF_KeyValueList* kvlist ); int handleDefProcessOrGroupAttributes( void* userData, uint32_t stream, uint32_t proc_token, uint32_t attr_token, OTF_KeyValueList* kvlist ); int handleDefFunction( void* userData, uint32_t stream, uint32_t func, const char* name, uint32_t funcGroup, uint32_t source, OTF_KeyValueList* kvlist ); int handleDefFunctionGroup( void* userData, uint32_t stream, uint32_t funcGroup, const char* name, OTF_KeyValueList* kvlist ); int handleDefCollectiveOperation( void* userData, uint32_t stream, uint32_t collOp, const char* name, uint32_t type, OTF_KeyValueList* kvlist ); int handleDefCounter( void* userData, uint32_t stream, uint32_t counter, const char* name, uint32_t properties, uint32_t counterGroup, const char* unit, OTF_KeyValueList* kvlist ); int handleDefCounterGroup( void* userData, uint32_t stream, uint32_t counterGroup, const char* name, OTF_KeyValueList* kvlist ); int handleDefScl( void* userData, uint32_t stream, uint32_t source, uint32_t sourceFile, uint32_t line, OTF_KeyValueList* kvlist ); int handleDefSclFile( void* userData, uint32_t stream, uint32_t sourceFile, const char* name, OTF_KeyValueList* kvlist ); int handleDefCreator( void* userData, uint32_t stream, const char* creator, OTF_KeyValueList* kvlist ); int handleDefUniqueId( void* userData, uint32_t stream, uint64_t uid ); int handleDefVersion( void* userData, uint32_t stream, uint8_t major, uint8_t minor, uint8_t sub, const char* string ); int handleDefKeyValue( void *userData, uint32_t streamid, uint32_t token, OTF_Type type, const char *name, const char *desc, OTF_KeyValueList* kvlist ); int handleDefTimeRange( void* userData, uint32_t streamid, uint64_t minTime, uint64_t maxTime, OTF_KeyValueList* kvlist ); int handleDefCounterAssignments( void* userData, uint32_t streamid, uint32_t counter_token, uint32_t number_of_members, const uint32_t* procs_or_groups, OTF_KeyValueList* kvlist ); int handleDefProcessSubstitutes( void* userData, uint32_t streamid, uint32_t representative, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList* kvlist ); int handleDefAuxSamplePoint( void* userData, uint32_t streamid, uint64_t time, OTF_AuxSamplePointType type, OTF_KeyValueList* kvlist ); int handleNoOp( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList* kvlist ); int handleEnter( void* userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList* kvlist ); int handleLeave( void* userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList* kvlist ); int handleSendMsg( void* userData, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t group, uint32_t type, uint32_t length, uint32_t source, OTF_KeyValueList* kvlist ); int handleRecvMsg( void* userData, uint64_t time, uint32_t recvProc, uint32_t sendProc, uint32_t group, uint32_t type, uint32_t length, uint32_t source, OTF_KeyValueList* kvlist ); int handleCounter( void* userData, uint64_t time, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList* kvlist ); int handleCollectiveOperation( void* userData, uint64_t time, uint32_t process, uint32_t collective, uint32_t procGroup, uint32_t rootProc, uint32_t sent, uint32_t received, uint64_t duration, uint32_t source, OTF_KeyValueList* kvlist ); int handleBeginCollectiveOperation( void* userData, uint64_t time, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootprocess, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList* kvlist ); int handleEndCollectiveOperation( void* userData, uint64_t time, uint32_t process, uint64_t matchingId, OTF_KeyValueList* kvlist ); int handleEventComment( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* kvlist ); int handleBeginProcess( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList* kvlist ); int handleEndProcess( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList* kvlist ); int handleSnapshotComment( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* kvlist ); int handleEnterSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList* kvlist ); int handleSendSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source, OTF_KeyValueList* kvlist ); int handleOpenFileSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t source, OTF_KeyValueList* kvlist ); int handleBeginCollopSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList *list); int handleBeginFileOpSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList *list); int handleCollopCountSnapshot( void* userData, uint64_t time, uint32_t process, uint32_t communicator, uint64_t count, OTF_KeyValueList* kvlist ); int handleCounterSnapshot( void* userData, uint64_t time, uint32_t process, uint64_t originaltime, uint32_t counter, uint64_t value, OTF_KeyValueList* kvlist ); int handleSummaryComment( void * userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* kvlist ); int handleFunctionSummary( void* userData, uint64_t time, uint32_t function, uint32_t process, uint64_t invocations, uint64_t exclTime, uint64_t inclTime, OTF_KeyValueList* kvlist ); int handleFunctionGroupSummary( void* userData, uint64_t time, uint32_t funcGroup, uint32_t process, uint64_t invocations, uint64_t exclTime, uint64_t inclTime, OTF_KeyValueList* kvlist ); int handleMessageSummary( void* userData, uint64_t time, uint32_t process, uint32_t peer, uint32_t comm, uint32_t type, uint64_t sentNumber, uint64_t receivedNumber, uint64_t sentBytes, uint64_t receivedBytes, OTF_KeyValueList* kvlist ); int handleCollopSummary( void* userData, uint64_t time, uint32_t process, uint32_t comm, uint32_t collective, uint64_t sentNumber, uint64_t receivedNumber, uint64_t sentBytes, uint64_t receivedBytes, OTF_KeyValueList* kvlist); int handleDefFile( void* userData, uint32_t stream, uint32_t token, const char *name, uint32_t group, OTF_KeyValueList* kvlist ); int handleDefFileGroup( void* userData, uint32_t stream, uint32_t token, const char *name, OTF_KeyValueList* kvlist ); int handleFileOperation( void* userData, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source, OTF_KeyValueList* kvlist ); int handleBeginFileOperation( void* userData, uint64_t time, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList* kvlist ); int handleEndFileOperation( void* userData, uint64_t time, uint32_t process, uint32_t fileid, uint64_t matchingId, uint64_t handleId, uint32_t operation, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* kvlist ); int handleRMAPut( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* kvlist ); int handleRMAPutRemoteEnd( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* kvlist ); int handleRMAGet( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* kvlist); int handleRMAEnd( void* userData, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t scltoken, OTF_KeyValueList* kvlist ); int handleUnknown( void* fcb, uint64_t time, uint32_t process, const char* record ); int handleDefMarker( void *userData, uint32_t stream, uint32_t token, const char* name, uint32_t type, OTF_KeyValueList* kvlist ); int handleMarker( void *userData, uint64_t time, uint32_t process, uint32_t token, const char* text, OTF_KeyValueList* kvlist ); #endif /* OTFTOVTF3_HANDLER_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfdump/PaxHeaders.7332/otfdump.cpp0000644000000000000000000000013212544237152023763 xustar0030 mtime=1435582058.539899952 30 atime=1508138859.255502838 30 ctime=1508162366.493799039 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfdump/otfdump.cpp0000644000175000017500000005551312544237152025163 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #include "Handler.h" #include #include #include #include #include using namespace std; #if SIZEOF_LONG == 4 # define ATOL8 atoll #else # define ATOL8 atol #endif #define SHOW_HELPTEXT { \ int l = 0; while( Helptext[l] ) { printf( "%s", Helptext[l++] ); } } static const char* Helptext[] = { " \n", " otfprint - Convert an OTF trace or parts of it into a human readable, long\n", " version. \n", " \n", " Syntax: otfprint [options] \n", " \n", " options: \n", " -h, --help show this help message \n", " -V show OTF version \n", " -f set max number of filehandles available \n", " (default: 50) \n", " -o output file \n", " if the ouput file is unspecified the stdout will be \n", " used \n", " \n", " --num output only records no. [a,b] \n", " --time \n", " output only records with time stamp in [a,b] \n", " \n", " --nodef omit definition records \n", " --noevent omit event records \n", " --nostat omit statistic records \n", " --nosnap omit snapshot records \n", " --nomarker omit marker records \n", " \n", " --nokeyvalue omit key-value pairs \n", " --fullkeyvalue \n", " show key-value pairs including the contents \n", " of byte-arrays \n", " \n", " --procs show only processes \n", " is a space-seperated list of process-tokens \n", " --records show only records \n", " is a space-seperated list of record-type-numbers \n", " record-type-numbers can be found in OTF_Definitions.h \n", " (OTF_*_RECORD) \n", " \n", " -s, --silent do not display anything except the time otfprint \n", " needed to read the tracefile \n", " \n", NULL }; int main ( int argc, const char** argv ) { const char* infile= NULL; int buffersize= 4*1024; OTF_FileManager* manager; int nfiles = 50; OTF_Reader* reader; OTF_HandlerArray* handlers; vector enabledRecords; bool def= true; bool event= true; bool stat= true; bool snap= true; bool marker= true; uint64_t mintime= 0; uint64_t maxtime= (uint64_t) -1; uint64_t read; uint64_t start_t, end_t; Control fha; fha.num= 0; fha.minNum= 0; fha.maxNum= (uint64_t) -1; fha.outfile= stdout; fha.show_keyvalue = KV_BASIC_MODE; fha.silent_mode = false; for( uint32_t i= 0; i < OTF_NRECORDS; ++i ) { fha.records[i]= true; } /* argument handling */ if ( 1 >= argc ) { SHOW_HELPTEXT; exit(0); } for ( int i = 1; i < argc; i++ ) { if ( ( 0 == strcmp( "-b", argv[i] ) ) && ( i+1 < argc ) ) { buffersize = atoi( argv[i+1] ); ++i; } else if ( ( 0 == strcmp( "-o", argv[i] ) ) && ( i+1 < argc ) ) { i++; if ( '-' == argv[i][0] && '\0' == argv[i][1] ) { /* someone wants to use stdout? then keep the default */ continue; } fha.outfile= fopen( argv[i], "w" ); if ( NULL == fha.outfile ) { fprintf( stderr, "ERROR: cannot open output file '%s'\n", argv[i] ); exit(1); } } else if ( 0 == strcmp( "--help", argv[i] ) || 0 == strcmp( "-h", argv[i] ) ) { SHOW_HELPTEXT; exit(0); } else if ( 0 == strcmp( "-V", argv[i] ) ) { printf( "%u.%u.%u \"%s\"\n", OTF_VERSION_MAJOR, OTF_VERSION_MINOR, OTF_VERSION_SUB, OTF_VERSION_STRING); exit(0); } else if ( ( 0 == strcmp( "-f", argv[i] ) ) && ( i+1 < argc ) ) { nfiles = atoi( argv[i+1] ); if ( nfiles < 1 ) { fprintf( stderr, "ERROR: less than 1 filehandle is not permitted\n" ); exit(1); } ++i; } else if ( ( 0 == strcmp( "--num", argv[i] ) ) && ( i+2 < argc ) ) { fha.minNum= ATOL8( argv[i+1] ); fha.maxNum= ATOL8( argv[i+2] ); i += 2; } else if ( ( 0 == strcmp( "--time", argv[i] ) ) && ( i+2 < argc ) ) { mintime= ATOL8( argv[i+1] ); maxtime= ATOL8( argv[i+2] ); i += 2; }else if ( 0 == strcmp( "--nodef", argv[i] ) ) { def= false; } else if ( 0 == strcmp( "--noevent", argv[i] ) ) { event= false; } else if ( 0 == strcmp( "--nostat", argv[i] ) ) { stat= false; } else if ( 0 == strcmp( "--nosnap", argv[i] ) ) { snap= false; } else if ( 0 == strcmp( "--nomarker", argv[i] ) ) { marker= false; } else if ( 0 == strcmp( "--nokeyvalue", argv[i] ) ) { fha.show_keyvalue= KV_QUIET_MODE; } else if ( 0 == strcmp( "--fullkeyvalue", argv[i] ) ) { fha.show_keyvalue= KV_FULL_MODE; } else if ( (0 == strcmp( "--procs", argv[i] )) && ( i+1 < argc ) ) { while( i+1 < argc && argv[i+1][0] >= '0' && argv[i+1][0] <= '9' ) { enabledRecords.push_back( atoi(argv[i+1] ) ); ++i; } } else if ( (0 == strcmp( "--records", argv[i] )) && ( i+1 < argc ) ) { bool error= false; long a; for( a= 0; a < OTF_NRECORDS; ++a ) fha.records[a]= false; while( i+1 < argc && argv[i+1][0] >= '0' && argv[i+1][0] <= '9' ) { a= atol(argv[i+1]); if ( a >= 0 && a < OTF_NRECORDS ) { fha.records[a]= true; i++; } else { fprintf( stderr, "ERROR: Unknown record-type-number '%li'.\n", a ); error= true; break; } } if ( error ) exit(1); } else if ( 0 == strcmp( "--silent", argv[i] ) || 0 == strcmp( "-s", argv[i] ) ) { fha.silent_mode = true; } else { if ( '-' != argv[i][0] ) { infile= argv[i]; } else { fprintf( stderr, "ERROR: Unknown argument '%s'.\n", argv[i] ); exit(1); } } } if ( NULL == infile ) { printf( " no input file specified, abort\n" ); exit(1); } /* open filemanager */ manager= OTF_FileManager_open( nfiles ); assert( manager ); /* Open OTF Reader */ reader= OTF_Reader_open( infile, manager ); assert( reader ); OTF_Reader_setBufferSizes( reader, buffersize ); /* enable only the records needed */ if( false == enabledRecords.empty() ) { OTF_Reader_setProcessStatusAll( reader, 0 ); for( uint32_t i= 0; i < enabledRecords.size(); ++i ) { int ret= OTF_Reader_setProcessStatus( reader, enabledRecords[i], 1 ); if ( 0 == ret ) { printf( "Warning in OTF_Reader_setProcessStatus: cannot enable " "process %u because it is not included in any of the " "streams in the anchor file.\n", enabledRecords[i] ); } } } /* set timelimit */ OTF_Reader_setTimeInterval( reader, mintime, maxtime ); /* init handlers */ handlers= OTF_HandlerArray_open(); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefinitionComment, OTF_DEFINITIONCOMMENT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFINITIONCOMMENT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefTimerResolution, OTF_DEFTIMERRESOLUTION_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFTIMERRESOLUTION_RECORD); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefProcess, OTF_DEFPROCESS_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFPROCESS_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefProcessGroup, OTF_DEFPROCESSGROUP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFPROCESSGROUP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefAttributeList, OTF_DEFATTRLIST_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFATTRLIST_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefProcessOrGroupAttributes, OTF_DEFPROCESSORGROUPATTR_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFPROCESSORGROUPATTR_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefFunction, OTF_DEFFUNCTION_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFFUNCTION_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefFunctionGroup, OTF_DEFFUNCTIONGROUP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFFUNCTIONGROUP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefCounter, OTF_DEFCOUNTER_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFCOUNTER_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefCounterGroup, OTF_DEFCOUNTERGROUP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFCOUNTERGROUP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefScl, OTF_DEFSCL_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFSCL_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefSclFile, OTF_DEFSCLFILE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFSCLFILE_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefCreator, OTF_DEFCREATOR_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFCREATOR_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefUniqueId, OTF_DEFUNIQUEID_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFUNIQUEID_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefVersion, OTF_DEFVERSION_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFVERSION_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefFile, OTF_DEFFILE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFFILE_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefFileGroup, OTF_DEFFILEGROUP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFFILEGROUP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefCollectiveOperation, OTF_DEFCOLLOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFCOLLOP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefTimeRange, OTF_DEFTIMERANGE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFTIMERANGE_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefCounterAssignments, OTF_DEFCOUNTERASSIGNMENTS_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFCOUNTERASSIGNMENTS_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefProcessSubstitutes, OTF_DEFPROCESSSUBSTITUTES_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFPROCESSSUBSTITUTES_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefAuxSamplePoint, OTF_DEFAUXSAMPLEPOINT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFAUXSAMPLEPOINT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleNoOp, OTF_NOOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_NOOP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleEventComment, OTF_EVENTCOMMENT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_EVENTCOMMENT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleCounter, OTF_COUNTER_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_COUNTER_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleEnter, OTF_ENTER_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_ENTER_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleCollectiveOperation, OTF_COLLOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_COLLOP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleBeginCollectiveOperation, OTF_BEGINCOLLOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_BEGINCOLLOP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleEndCollectiveOperation, OTF_ENDCOLLOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_ENDCOLLOP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleRecvMsg, OTF_RECEIVE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_RECEIVE_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleSendMsg, OTF_SEND_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_SEND_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleLeave, OTF_LEAVE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_LEAVE_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleBeginProcess, OTF_BEGINPROCESS_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_BEGINPROCESS_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleEndProcess, OTF_ENDPROCESS_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_ENDPROCESS_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleFileOperation, OTF_FILEOPERATION_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_FILEOPERATION_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleBeginFileOperation, OTF_BEGINFILEOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_BEGINFILEOP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleEndFileOperation, OTF_ENDFILEOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_ENDFILEOP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleRMAPut, OTF_RMAPUT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_RMAPUT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleRMAPutRemoteEnd, OTF_RMAPUTRE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_RMAPUTRE_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleRMAGet, OTF_RMAGET_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_RMAGET_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleRMAEnd, OTF_RMAEND_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_RMAEND_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefKeyValue, OTF_DEFKEYVALUE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFKEYVALUE_RECORD ); /* snapshot records */ OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleSnapshotComment, OTF_SNAPSHOTCOMMENT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_SNAPSHOTCOMMENT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleEnterSnapshot, OTF_ENTERSNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_ENTERSNAPSHOT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleSendSnapshot, OTF_SENDSNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_SENDSNAPSHOT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleOpenFileSnapshot, OTF_OPENFILESNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_OPENFILESNAPSHOT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleBeginCollopSnapshot, OTF_BEGINCOLLOPSNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_BEGINCOLLOPSNAPSHOT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleBeginFileOpSnapshot, OTF_BEGINFILEOPSNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_BEGINFILEOPSNAPSHOT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleCollopCountSnapshot, OTF_COLLOPCOUNTSNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_COLLOPCOUNTSNAPSHOT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleCounterSnapshot, OTF_COUNTERSNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_COUNTERSNAPSHOT_RECORD ); /* summary records */ OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleFunctionSummary, OTF_FUNCTIONSUMMARY_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_FUNCTIONSUMMARY_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleFunctionGroupSummary, OTF_FUNCTIONGROUPSUMMARY_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_FUNCTIONGROUPSUMMARY_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleMessageSummary, OTF_MESSAGESUMMARY_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_MESSAGESUMMARY_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleCollopSummary, OTF_COLLOPSUMMARY_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_COLLOPSUMMARY_RECORD ); /* I/O records */ OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleFileOperation, OTF_FILEOPERATION_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_FILEOPERATION_RECORD ); /* marker records */ OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefMarker, OTF_DEFMARKER_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_DEFMARKER_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleMarker, OTF_MARKER_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_MARKER_RECORD ); /* misc records */ OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleUnknown, OTF_UNKNOWN_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, &fha, OTF_UNKNOWN_RECORD ); start_t = time(NULL); if ( def && fha.num <= fha.maxNum ) { if( !fha.silent_mode ) { fprintf( fha.outfile, "\ndefinitions:\n\n" ); } read = OTF_Reader_readDefinitions( reader, handlers ); if( read == OTF_READ_ERROR ) { fprintf(stderr,"An error occurred while reading definitions. The tracefile seems to be damaged. Abort.\n"); return 1; } } if ( event && fha.num <= fha.maxNum ) { if( !fha.silent_mode ) { fprintf( fha.outfile, "\nevents:\n\n" ); } read = OTF_Reader_readEvents( reader, handlers ); if( read == OTF_READ_ERROR ) { fprintf(stderr,"An error occurred while reading events. Maybe the tracefile has no events or it is damaged. Continue.\n"); } } if ( stat && fha.num <= fha.maxNum ) { if( !fha.silent_mode ) { fprintf( fha.outfile, "\nstatistics:\n\n" ); } read = OTF_Reader_readStatistics( reader, handlers ); if( read == OTF_READ_ERROR ) { fprintf(stderr,"An error occurred while reading statistics. The tracefile seems to be damaged. Abort.\n"); return 1; } } if ( snap && fha.num <= fha.maxNum ) { if( !fha.silent_mode ) { fprintf( fha.outfile, "\nsnapshots:\n\n" ); } read = OTF_Reader_readSnapshots( reader, handlers ); if( read == OTF_READ_ERROR ) { fprintf(stderr,"An error occurred while reading snapshots. The tracefile seems to be damaged. Abort.\n"); return 1; } } if ( marker && fha.num <= fha.maxNum ) { if( !fha.silent_mode ) { fprintf( fha.outfile, "\nmarkers:\n\n" ); } read = OTF_Reader_readMarkers( reader, handlers ); if( read == OTF_READ_ERROR ) { fprintf(stderr,"An error occurred while reading markers. The tracefile seems to be damaged. Abort.\n"); return 1; } } end_t = time(NULL); if( !fha.silent_mode ) { fprintf( fha.outfile, "\ndone\n" ); } OTF_Reader_close( reader ); OTF_HandlerArray_close( handlers ); OTF_FileManager_close( manager ); fprintf( fha.outfile, "processing time: %llu s\n", (unsigned long long int)(end_t - start_t) ); if ( stdout != fha.outfile ) { fclose( fha.outfile ); fha.outfile= NULL; } return 0; } eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfdump/PaxHeaders.7332/Handler.cpp0000644000000000000000000000013212544237152023662 xustar0030 mtime=1435582058.539899952 30 atime=1508138859.255502838 30 ctime=1508162366.493799039 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfdump/Handler.cpp0000644000175000017500000014752512544237152025067 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #include #include "Handler.h" int printKeyValueList(Control* c, OTF_KeyValueList* list) { uint32_t key; uint32_t type; uint32_t len; uint32_t i = 0; uint32_t j = 0; OTF_Value value; uint8_t *byte_array = NULL; if( (c->show_keyvalue == KV_QUIET_MODE) || (OTF_KeyValueList_getCount(list) <= 0) ) { /* empty list */ fprintf(c->outfile, "\n"); return 0; } fprintf(c->outfile, ", KeyValue: "); while( ! OTF_KeyValueList_getKeyByIndex( list, i, &key) ) { type = OTF_KeyValueList_getTypeForKey( list, key ); switch( type ) { case OTF_CHAR: OTF_KeyValueList_getChar( list, key, &(value.otf_char) ); fprintf(c->outfile, "%u:%c", key, value.otf_char); break; case OTF_UINT8: OTF_KeyValueList_getUint8( list, key, &(value.otf_uint8) ); fprintf(c->outfile, "%u:%hu", key, (unsigned short)value.otf_uint8); break; case OTF_INT8: OTF_KeyValueList_getInt8( list, key, &(value.otf_int8) ); fprintf(c->outfile, "%u:%hd", key, (short)value.otf_int8); break; case OTF_UINT16: OTF_KeyValueList_getUint16( list, key, &(value.otf_uint16) ); fprintf(c->outfile, "%u:%hu", key, value.otf_uint16); break; case OTF_INT16: OTF_KeyValueList_getInt16( list, key, &(value.otf_int16) ); fprintf(c->outfile, "%u:%hd", key, value.otf_int16); break; case OTF_UINT32: OTF_KeyValueList_getUint32( list, key, &(value.otf_uint32) ); fprintf(c->outfile, "%u:%u", key, value.otf_uint32); break; case OTF_INT32: OTF_KeyValueList_getInt32( list, key, &(value.otf_int32) ); fprintf(c->outfile, "%u:%d", key, value.otf_int32); break; case OTF_UINT64: OTF_KeyValueList_getUint64( list, key, &(value.otf_uint64) ); fprintf(c->outfile, "%u:%llu", key, (unsigned long long int)value.otf_uint64); break; case OTF_INT64: OTF_KeyValueList_getInt64( list, key, &(value.otf_int64) ); fprintf(c->outfile, "%u:%lld", key, (long long int)value.otf_int64); break; case OTF_FLOAT: OTF_KeyValueList_getFloat( list, key, &(value.otf_float) ); fprintf(c->outfile, "%u:%.3f", key, value.otf_float); break; case OTF_DOUBLE: OTF_KeyValueList_getDouble( list, key, &(value.otf_double) ); fprintf(c->outfile, "%u:%.3f", key, value.otf_double); break; case OTF_BYTE_ARRAY: OTF_KeyValueList_getArrayLength( list, key, &len ); if( c->show_keyvalue == KV_BASIC_MODE ) { fprintf(c->outfile, "%u:byte-array(%u)", key, len); break; } byte_array = (uint8_t*) malloc( len * sizeof( uint8_t ) ); OTF_KeyValueList_getByteArray( list, key, byte_array, &len ); fprintf(c->outfile, "%u:", key); for( j = 0; j < len; j++ ) { fprintf(c->outfile, "%02hX", (unsigned short)byte_array[j]); } free( byte_array ); break; } i++; if( i < OTF_KeyValueList_getCount(list) ) { fprintf(c->outfile, ", "); } } fprintf(c->outfile, "\n"); return 0; } int handleDefinitionComment( void* userData, uint32_t stream, const char* comment, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_DEFINITIONCOMMENT_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \tDefComment: stream %u, comment \"%s\"", (long long unsigned) c->num, stream, comment ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleDefTimerResolution( void* userData, uint32_t stream, uint64_t ticksPerSecond, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_DEFTIMERRESOLUTION_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \tDefTimerResolution: stream %u, TicksPerSecond %llu", (long long unsigned) c->num, stream, (long long unsigned) ticksPerSecond ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleDefProcess( void* userData, uint32_t stream, uint32_t process, const char* name, uint32_t parent, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_DEFPROCESS_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \tDefProcess: stream %u, process %u, name \"%s\", parent %u", (long long unsigned) c->num, stream, process, name, parent ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleDefProcessGroup( void* userData, uint32_t stream, uint32_t group, const char* name, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList* kvlist ) { uint32_t i; Control* c= (Control*) userData; if( c->records[OTF_DEFPROCESSGROUP_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \tDefProcessGroup: stream %u, group %u, name \"%s\", procs ", (long long unsigned) c->num, stream, group, name ); const char* sep= ""; for( i= 0; i < numberOfProcs; ++i ) { fprintf( c->outfile, "%s%u", sep, procs[i] ); sep= ", "; } printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } #define CASE_RETURN(type) \ case OTF_ATTR_##type: return #type static const char* attrToString( OTF_ATTR_TYPE type ) { switch( type ) { CASE_RETURN( IsMPIRank ); CASE_RETURN( IsPThread ); CASE_RETURN( IsOMPThread ); CASE_RETURN( IsCellSPUThread ); CASE_RETURN( hasGroupCounters ); CASE_RETURN( hasEnterLeaveRecords ); CASE_RETURN( IsCommunicator ); CASE_RETURN( IsCUDAThread ); CASE_RETURN( IsMasterThread ); case OTF_ATTR_UNKNOWN: default: { static char unknown_buffer[ 64 ]; sprintf( unknown_buffer, "UNKNOWN <%u>", type ); return unknown_buffer; } } } #undef CASE_RETURN int handleDefAttributeList( void* userData, uint32_t stream, uint32_t attr_token, uint32_t num, OTF_ATTR_TYPE* array, OTF_KeyValueList* kvlist ) { uint32_t i; Control* c= (Control*) userData; if( c->records[OTF_DEFATTRLIST_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \tDefAttributeList: stream %u, attr_token %u, attributes ", (long long unsigned) c->num, stream, attr_token); const char* sep = ""; for( i= 0; i < num; ++i ) { fprintf( c->outfile, "%s%s", sep, attrToString( array[i] ) ); sep = ", "; } printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleDefProcessOrGroupAttributes( void* userData, uint32_t stream, uint32_t proc_token, uint32_t attr_token, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_DEFPROCESSORGROUPATTR_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \tDefProcessOrGroupAttributes: stream %u, process %u, attr_token %u", (long long unsigned) c->num, stream, proc_token, attr_token); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleDefFunction( void* userData, uint32_t stream, uint32_t func, const char* name, uint32_t funcGroup, uint32_t source, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_DEFFUNCTION_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \tDefFunction: stream %u, function %u, name \"%s\", group %u, source %u", (long long unsigned) c->num, stream, func, name, funcGroup, source ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleDefFunctionGroup( void* userData, uint32_t stream, uint32_t funcGroup, const char* name, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_DEFFUNCTIONGROUP_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \tDefFunctionGroup: stream %u, group %u, name \"%s\"", (long long unsigned) c->num, stream, funcGroup, name ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } #define CASE_RETURN(name) \ case OTF_COLLECTIVE_TYPE_##name: return #name static const char* collOpTypeToString( uint32_t type ) { switch( type ) { CASE_RETURN( BARRIER ); CASE_RETURN( ONE2ALL ); CASE_RETURN( ALL2ONE ); CASE_RETURN( ALL2ALL ); case OTF_COLLECTIVE_TYPE_UNKNOWN: default: { static char unknown_buffer[ 64 ]; sprintf( unknown_buffer, "UNKNOWN <%u>", type ); return unknown_buffer; } } } #undef CASE_RETURN int handleDefCollectiveOperation( void* userData, uint32_t stream, uint32_t collOp, const char* name, uint32_t type, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_DEFCOLLOP_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \tDefCollective: stream %u, collective %u, name \"%s\", type %s", (long long unsigned) c->num, stream, collOp, name, collOpTypeToString( type ) ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } #define CASE_RETURN(prefix, name) \ case OTF_COUNTER_##prefix##_##name: return #name static const char* counterTypeToString( uint32_t properties ) { switch( properties & OTF_COUNTER_TYPE_BITS ) { CASE_RETURN( TYPE, ACC ); CASE_RETURN( TYPE, ABS ); default: { static char unknown_buffer[ 64 ]; sprintf( unknown_buffer, "UNKNOWN <%u>", properties & OTF_COUNTER_TYPE_BITS ); return unknown_buffer; } } } static const char* counterScopeToString( uint32_t properties ) { switch( properties & OTF_COUNTER_SCOPE_BITS ) { CASE_RETURN( SCOPE, START ); CASE_RETURN( SCOPE, POINT ); CASE_RETURN( SCOPE, LAST ); CASE_RETURN( SCOPE, NEXT ); default: { static char unknown_buffer[ 64 ]; sprintf( unknown_buffer, "UNKNOWN <%u>", properties & OTF_COUNTER_SCOPE_BITS ); return unknown_buffer; } } } static const char* counterVarTypeToString( uint32_t properties ) { switch( properties & OTF_COUNTER_VARTYPE_BITS ) { CASE_RETURN( VARTYPE, UNSIGNED8 ); CASE_RETURN( VARTYPE, SIGNED8 ); CASE_RETURN( VARTYPE, UNSIGNED4 ); CASE_RETURN( VARTYPE, SIGNED4 ); CASE_RETURN( VARTYPE, UNSIGNED2 ); CASE_RETURN( VARTYPE, SIGNED2 ); CASE_RETURN( VARTYPE, FLOAT ); CASE_RETURN( VARTYPE, DOUBLE ); default: { static char unknown_buffer[ 64 ]; sprintf( unknown_buffer, "UNKNOWN <%u>", properties & OTF_COUNTER_VARTYPE_BITS ); return unknown_buffer; } } } #undef CASE_RETURN int handleDefCounter( void* userData, uint32_t stream, uint32_t counter, const char* name, uint32_t properties, uint32_t counterGroup, const char* unit, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; c->counter_props[counter] = properties; if( c->records[OTF_DEFCOUNTER_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \tDefCounter: stream %u, " "counter %u, name \"%s\", properties %s/%s/%s, group %u, unit \"%s\"", (long long unsigned) c->num, stream, counter, name, counterTypeToString( properties ), counterScopeToString( properties ), counterVarTypeToString( properties ), counterGroup, unit ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleDefCounterGroup( void* userData, uint32_t stream, uint32_t counterGroup, const char* name, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_DEFCOUNTERGROUP_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \tDefCounterGroup: stream %u, group %u, name \"%s\"", (long long unsigned) c->num, stream, counterGroup, name ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleDefScl( void* userData, uint32_t stream, uint32_t source, uint32_t sourceFile, uint32_t line, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_DEFSCL_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \tDefScl: stream %u, source %u, file %u, line %u", (long long unsigned) c->num, stream, source, sourceFile, line ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleDefSclFile( void* userData, uint32_t stream, uint32_t sourceFile, const char* name, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_DEFSCLFILE_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \tDefSclFile: stream %u, file %u, name \"%s\"", (long long unsigned) c->num, stream, sourceFile, name ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleDefCreator( void* userData, uint32_t stream, const char* creator, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_DEFCREATOR_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \tDefCreator: stream %u, creator \"%s\"", (long long unsigned) c->num, stream, creator ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleDefUniqueId( void* userData, uint32_t stream, uint64_t uid ) { Control* c= (Control*) userData; if( c->records[OTF_DEFUNIQUEID_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \tDefUniqueId: stream %u, uid: %llu\n", (long long unsigned) c->num, stream, (long long unsigned) uid ); } } return OTF_RETURN_OK; } int handleDefVersion( void* userData, uint32_t stream, uint8_t major, uint8_t minor, uint8_t sub, const char* string ) { Control* c= (Control*) userData; if( c->records[OTF_DEFVERSION_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \tDefVersion: stream %u, version: %u.%u.%u \"%s\"\n", (long long unsigned) c->num, stream, major, minor, sub, string ); } } return OTF_RETURN_OK; } int handleDefFile( void* userData, uint32_t stream, uint32_t token, const char *name, uint32_t group, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_DEFFILE_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \tDefFile: %s, stream %llu, " "token %llu, group %llu", (long long unsigned) c->num, name, (long long unsigned) stream, (long long unsigned) token, (long long unsigned) group ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleDefFileGroup( void* userData, uint32_t stream, uint32_t token, const char *name, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_DEFFILEGROUP_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \tDefFileGroup: %s, token %llu, " "stream %llu", (long long unsigned) c->num, name, (long long unsigned) token, (long long unsigned) stream); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } #define CASE_RETURN(type) \ case OTF_##type: return #type static const char* keyValueTypeToString( OTF_Type type ) { switch( type ) { CASE_RETURN( CHAR ); CASE_RETURN( INT8 ); CASE_RETURN( UINT8 ); CASE_RETURN( INT16 ); CASE_RETURN( UINT16 ); CASE_RETURN( INT32 ); CASE_RETURN( UINT32 ); CASE_RETURN( INT64 ); CASE_RETURN( UINT64 ); CASE_RETURN( FLOAT ); CASE_RETURN( DOUBLE ); CASE_RETURN( BYTE_ARRAY ); case OTF_UNKNOWN: default: { static char unknown_buffer[ 64 ]; sprintf( unknown_buffer, "UNKNOWN <%u>", type ); return unknown_buffer; } } } #undef CASE_RETURN int handleDefKeyValue( void *userData, uint32_t streamid, uint32_t token, OTF_Type type, const char *name, const char* desc, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_DEFKEYVALUE_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \tDefKeyValue: stream %u, token %u, type %s, name \"%s\", desc \"%s\"", (long long unsigned) c->num, streamid, token, keyValueTypeToString( type ), name, desc ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleDefTimeRange( void* userData, uint32_t streamid, uint64_t minTime, uint64_t maxTime, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if ( c->records[OTF_DEFTIMERANGE_RECORD] ) { ++c->num; if ( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \tDefTimeRange: stream %u, " "[%llu, %llu]", (long long unsigned) c->num, streamid, (long long unsigned) minTime, (long long unsigned) maxTime ); printKeyValueList( c, kvlist ); } } return OTF_RETURN_OK; } int handleDefCounterAssignments( void* userData, uint32_t streamid, uint32_t counter_token, uint32_t number_of_members, const uint32_t* procs_or_groups, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; uint32_t i; if ( c->records[OTF_DEFCOUNTERASSIGNMENTS_RECORD] ) { ++c->num; if ( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { const char* sep= ""; fprintf( c->outfile, "(#%llu) \tDefCounterAssignments: stream %u, " "counter_token %u, assignees ", (long long unsigned) c->num, streamid, counter_token ); for ( i= 0; i < number_of_members; ++i ) { fprintf( c->outfile, "%s%u", sep, procs_or_groups[i] ); sep= ", "; } printKeyValueList( c, kvlist ); } } return OTF_RETURN_OK; } int handleDefProcessSubstitutes( void* userData, uint32_t streamid, uint32_t representative, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; uint32_t i; if ( c->records[OTF_DEFPROCESSSUBSTITUTES_RECORD] ) { ++c->num; if ( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { const char* sep= ""; fprintf( c->outfile, "(#%llu) \tDefProcessSubstitutes: stream %u, " "representative process %u, procs ", (long long unsigned) c->num, streamid, representative ); for ( i= 0; i < numberOfProcs; ++i ) { fprintf( c->outfile, "%s%u", sep, procs[i] ); sep= ", "; } printKeyValueList( c, kvlist ); } } return OTF_RETURN_OK; } static const char* auxSamplePointTypeToString( OTF_AuxSamplePointType type ) { #define CASE_RETURN(type) \ case OTF_AUX_SAMPLE_POINT_##type: return #type switch( type ) { CASE_RETURN( SNAPSHOT ); CASE_RETURN( SUMMARY ); CASE_RETURN( INLINE_SNAPSHOT ); default: static char unknown_buffer[ 64 ]; sprintf( unknown_buffer, "UNKNOWN <%u>", type ); return unknown_buffer; } #undef CASE_RETURN } int handleDefAuxSamplePoint( void* userData, uint32_t streamid, uint64_t time, OTF_AuxSamplePointType type, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if ( c->records[OTF_DEFAUXSAMPLEPOINT_RECORD] ) { ++c->num; if ( c->num >= c->minNum && c->num <= c->maxNum && !c->silent_mode ) { fprintf( c->outfile, "(#%llu) \tDefAuxSamplePoint: stream %u, time %llu, type %s", (long long unsigned) c->num, streamid, (long long unsigned) time, auxSamplePointTypeToString( type ) ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleNoOp( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_NOOP_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu NoOp: process %u", (long long unsigned) c->num, (long long unsigned) time, process ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleEnter( void* userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_ENTER_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu Enter: function %u, process %u, source %u", (long long unsigned) c->num, (long long unsigned) time, function, process, source ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleLeave( void* userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_LEAVE_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu Leave: function %u, process %u, source %u", (long long unsigned) c->num, (long long unsigned) time, function, process, source); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleSendMsg( void* userData, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t group, uint32_t type, uint32_t length, uint32_t source, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_SEND_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu SendMessage: sender %u, receiver %u, group %u, type %u, length %u, source %u", (long long unsigned) c->num, (long long unsigned) time, sender, receiver, group, type, length, source ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleRecvMsg( void* userData, uint64_t time, uint32_t recvProc, uint32_t sendProc, uint32_t group, uint32_t type, uint32_t length, uint32_t source, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_RECEIVE_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu ReceiveMessage: receiver %u, sender %u, group %u, type %u, length %u, source %u", (long long unsigned) c->num, (long long unsigned) time, recvProc, sendProc, group, type, length, source ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } static void printCounterValue( Control* c, uint32_t counter, uint64_t value ) { uint32_t properties = OTF_COUNTER_VARTYPE_UNSIGNED8; std::map::const_iterator it = c->counter_props.find( counter ); if( it != c->counter_props.end() ) { properties= it->second & OTF_COUNTER_VARTYPE_BITS; } switch( properties ) { case OTF_COUNTER_VARTYPE_UNSIGNED8: case OTF_COUNTER_VARTYPE_UNSIGNED4: case OTF_COUNTER_VARTYPE_UNSIGNED2: { uint64_t conv_value = OTF_Counter2Unsigned( value ); fprintf( c->outfile, "%llu", (unsigned long long) conv_value ); break; } case OTF_COUNTER_VARTYPE_SIGNED8: case OTF_COUNTER_VARTYPE_SIGNED4: case OTF_COUNTER_VARTYPE_SIGNED2: { int64_t conv_value = OTF_Counter2Signed( value ); fprintf( c->outfile, "%lld", (long long) conv_value ); break; } case OTF_COUNTER_VARTYPE_FLOAT: { float conv_value = OTF_Counter2Float( value ); fprintf( c->outfile, "%f", conv_value ); break; } case OTF_COUNTER_VARTYPE_DOUBLE: { double conv_value = OTF_Counter2Double( value ); fprintf( c->outfile, "%f", conv_value ); break; } default: fprintf( c->outfile, "INVALID TYPE <%08llx>", (unsigned long long)value ); } } int handleCounter( void* userData, uint64_t time, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_COUNTER_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu Counter: process %u, counter %u, value ", (long long unsigned) c->num, (long long unsigned) time, process, counter ); printCounterValue( c, counter, value ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleCollectiveOperation( void* userData, uint64_t time, uint32_t process, uint32_t collective, uint32_t procGroup, uint32_t rootProc, uint32_t sent, uint32_t received, uint64_t duration, uint32_t source, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_COLLOP_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu Collective: process %u, collective %u, group %u, root %u, sent %u, received %u, duration %llu, source %u", (long long unsigned) c->num, (long long unsigned) time, process, collective, procGroup, rootProc, sent, received, (long long unsigned) duration, source ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleBeginCollectiveOperation( void* userData, uint64_t time, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList* kvlist ) { Control* c = (Control*) userData; if( c->records[OTF_BEGINCOLLOP_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu BeginCollective: " "process %u, collective %u, " "group %u, matchingId %llu, " "root %u, sent %llu, " "received %llu, source %u", (long long unsigned) c->num, (long long unsigned) time, process, collOp, procGroup, (long long unsigned) matchingId, rootProc, (long long unsigned) sent, (long long unsigned) received, scltoken ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleEndCollectiveOperation( void* userData, uint64_t time, uint32_t process, uint64_t matchingId, OTF_KeyValueList* kvlist ) { Control* c = (Control*) userData; if( c->records[OTF_ENDCOLLOP_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu EndCollective: " "process %u, matchingId %llu", (long long unsigned) c->num, (long long unsigned) time, process, (long long unsigned) matchingId ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleEventComment( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_EVENTCOMMENT_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu EventComment: process %u, comment \"%s\"", (long long unsigned) c->num, (long long unsigned) time, process, comment ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleBeginProcess( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_BEGINPROCESS_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu BeginProcess: process %u", (long long unsigned) c->num, (long long unsigned) time, process ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleEndProcess( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_ENDPROCESS_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu EndProcess: process %u", (long long unsigned) c->num, (long long unsigned) time, process ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleSnapshotComment( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_SNAPSHOTCOMMENT_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu SnapComment: process %u, comment \"%s\"", (long long unsigned) c->num, (long long unsigned) time, process, comment ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleEnterSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_ENTERSNAPSHOT_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu SnapEnter: otime %llu, process %u, function %u, source %u", (long long unsigned) c->num, (long long unsigned) time, (long long unsigned) originaltime, process, function, source ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleSendSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_SENDSNAPSHOT_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu SnapSend: otime %llu, sender %u, receiver %u, group %u, tag %u, length %u, source %u", (long long unsigned) c->num, (long long unsigned) time, (long long unsigned) originaltime, sender, receiver, procGroup, tag, length, source ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleOpenFileSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t source, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_OPENFILESNAPSHOT_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu SnapOpenFile: otime %llu, process %u, fileid %u," " handle ID %llu, source %u", (long long unsigned) c->num, (long long unsigned) time, (long long unsigned) originaltime, process, fileid, (long long unsigned) handleid, source ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleBeginCollopSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList *kvlist) { Control* c= (Control*) userData; if( c->records[OTF_BEGINCOLLOPSNAPSHOT_RECORD ] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu SnapBeginCollop: otime %llu, process %u, collOp %u," " matchingID %llu, group %u, root %u, sent %llu, received %llu, source %u", (long long unsigned) c->num, (long long unsigned) time, (long long unsigned) originaltime, process, collOp, (long long unsigned) matchingId, procGroup, rootProc, (long long unsigned) sent, (long long unsigned) received, scltoken ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleBeginFileOpSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList *kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_BEGINFILEOPSNAPSHOT_RECORD ] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu SnapBeginFileOp: otime %llu, process %u," " matchingID %llu, source %u", (long long unsigned) c->num, (long long unsigned) time, (long long unsigned) originaltime, process, (long long unsigned) matchingId, scltoken ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleCollopCountSnapshot( void *userData, uint64_t time, uint32_t process, uint32_t communicator, uint64_t count, OTF_KeyValueList *kvlist) { Control* c= (Control*) userData; if ( c->records[OTF_COLLOPCOUNTSNAPSHOT_RECORD] ) { ++c->num; if ( c->num >= c->minNum && c->num <= c->maxNum && !c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu SnapCollopCount: process %u, " "communicator %u, count %llu", (long long unsigned) c->num, (long long unsigned) time, process, communicator, (long long unsigned) count ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleCounterSnapshot( void *userData, uint64_t time, uint32_t process, uint64_t originaltime, uint32_t counter, uint64_t value, OTF_KeyValueList *kvlist ) { Control* c= (Control*) userData; if ( c->records[OTF_COUNTERSNAPSHOT_RECORD] ) { ++c->num; if ( c->num >= c->minNum && c->num <= c->maxNum && !c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu SnapCounter: " "otime %llu, process %u, counter %u, value ", (long long unsigned) c->num, (long long unsigned) time, (long long unsigned) originaltime, process, counter ); printCounterValue( c, counter, value ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleSummaryComment( void * userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_SUMMARYCOMMENT_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu StatComment: process %u, comment \"%s\"", (long long unsigned) c->num, (long long unsigned) time, process, comment ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleFunctionSummary( void* userData, uint64_t time, uint32_t function, uint32_t process, uint64_t invocations, uint64_t exclTime, uint64_t inclTime, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_FUNCTIONSUMMARY_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu StatFunction: process %u, function %u, invocations %llu, excltime %llu, incltime %llu", (long long unsigned) c->num, (long long unsigned) time, process, function, (long long unsigned) invocations, (long long unsigned) exclTime, (long long unsigned) inclTime ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleFunctionGroupSummary( void* userData, uint64_t time, uint32_t funcGroup, uint32_t process, uint64_t invocations, uint64_t exclTime, uint64_t inclTime, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_FUNCTIONGROUPSUMMARY_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu StatFunctionGroup: process %u, group %u, invocations %llu, excltime %llu, incltime %llu", (long long unsigned) c->num, (long long unsigned) time, process, funcGroup, (long long unsigned) invocations, (long long unsigned) exclTime, (long long unsigned) inclTime ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleMessageSummary( void* userData, uint64_t time, uint32_t process, uint32_t peer, uint32_t comm, uint32_t type, uint64_t sentNumber, uint64_t receivedNumber, uint64_t sentBytes, uint64_t receivedBytes, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_MESSAGESUMMARY_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu StatMessage: process %u, " "peer %u, group %u, type %u, numsent %llu, numreceived %llu, " "bytessent %llu, bytesreceived %llu", (long long unsigned) c->num, (long long unsigned) time, process, peer, comm, type, (long long unsigned) sentNumber, (long long unsigned) receivedNumber, (long long unsigned) sentBytes, (long long unsigned) receivedBytes ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleCollopSummary( void* userData, uint64_t time, uint32_t process, uint32_t comm, uint32_t collective, uint64_t sentNumber, uint64_t receivedNumber, uint64_t sentBytes, uint64_t receivedBytes, OTF_KeyValueList* kvlist) { Control* c= (Control*) userData; if( c->records[OTF_COLLOPSUMMARY_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu StatCollOp: process %u, group %u, " "col %u, numsent %llu, numreceived %llu, " "bytessent %llu, bytesreceived %llu", (long long unsigned) c->num, (long long unsigned) time, process, comm, collective, (long long unsigned) sentNumber, (long long unsigned) receivedNumber, (long long unsigned) sentBytes, (long long unsigned) receivedBytes ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } #define CASE_RETURN(op) \ case OTF_FILEOP_##op: return #op static const char* fileOpToString( uint32_t operation ) { switch( operation & OTF_FILEOP_BITS ) { CASE_RETURN( OPEN ); CASE_RETURN( CLOSE ); CASE_RETURN( READ ); CASE_RETURN( WRITE ); CASE_RETURN( SEEK ); CASE_RETURN( UNLINK ); CASE_RETURN( RENAME ); CASE_RETURN( DUP ); CASE_RETURN( SYNC ); CASE_RETURN( LOCK ); CASE_RETURN( UNLOCK ); case OTF_FILEOP_OTHER: default: { static char unknown_buffer[ 64 ]; sprintf( unknown_buffer, "UNKNOWN <%u>", operation & OTF_FILEOP_BITS ); return unknown_buffer; } } } #undef CASE_RETURN #define PRINT_FLAG(flag) \ if( io_flags & OTF_IOFLAG_##flag ) { \ fprintf( c->outfile, "%s%s", sep, #flag ); \ io_flags &= ~OTF_IOFLAG_##flag; \ sep = ", "; \ } static void printIoFlags( Control* c, uint32_t operation ) { uint32_t io_flags = operation & OTF_IOFLAGS_BITS; if( !io_flags ) { fprintf( c->outfile, "%s", "EMPTY" ); } const char* sep = ""; PRINT_FLAG( IOFAILED ) PRINT_FLAG( ASYNC ) PRINT_FLAG( COLL ) PRINT_FLAG( DIRECT ) PRINT_FLAG( SYNC ) PRINT_FLAG( ISREADLOCK ) if( io_flags ) { fprintf( c->outfile, "%sUNKNOWN <%u>", sep, io_flags ); } } #undef PRINT_FLAG int handleFileOperation( void* userData, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_FILEOPERATION_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu FileOperation: file ID %llu, " "process %llu, handle ID %llu, operation %s, flags ", (long long unsigned) c->num, (long long unsigned) time, (long long unsigned) fileid, (long long unsigned) process, (long long unsigned) handleid, fileOpToString( operation ) ); printIoFlags( c, operation ); fprintf( c->outfile, ", bytes %llu, duration %llu, source %llu", (long long unsigned) bytes, (long long unsigned) duration, (long long unsigned) source); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleBeginFileOperation( void* userData, uint64_t time, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList* kvlist ) { Control* c = (Control*) userData; if( c->records[OTF_BEGINFILEOP_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu BeginFileOperation: " "process %llu, matching ID %llu, " "source %llu", (long long unsigned) c->num, (long long unsigned) time, (long long unsigned) process, (long long unsigned) matchingId, (long long unsigned) scltoken ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleEndFileOperation( void* userData, uint64_t time, uint32_t process, uint32_t fileid, uint64_t matchingId, uint64_t handleId, uint32_t operation, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* kvlist ) { Control* c = (Control*) userData; if( c->records[OTF_ENDFILEOP_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu EndFileOperation: " "process %llu, file ID %llu, " "matching ID %llu, handle ID %llu, " "operation %s, flags ", (long long unsigned) c->num, (long long unsigned) time, (long long unsigned) process, (long long unsigned) fileid, (long long unsigned) matchingId, (long long unsigned) handleId, fileOpToString( operation ) ); printIoFlags( c, operation ); fprintf( c->outfile, ", bytes %llu, source %llu", (long long unsigned) bytes, (long long unsigned) scltoken ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleRMAPut( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t source, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_RMAPUT_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { if( origin != 0 ) { /* transfer initiated from 3rd-party process */ fprintf( c->outfile, "(#%llu) \t%llu RMAPut: initiator %u, " "origin %u, target %u, communicator %u, " "tag %u, bytes %llu, source %llu", (long long unsigned) c->num, (long long unsigned) time, process, origin, target, communicator, tag, (long long unsigned) bytes, (long long unsigned) source); } else { fprintf( c->outfile, "(#%llu) \t%llu RMAPut: " "origin %u, target %u, communicator %u, " "tag %u, bytes %llu, source %llu", (long long unsigned) c->num, (long long unsigned) time, process, target, communicator, tag, (long long unsigned) bytes, (long long unsigned) source); } printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleRMAPutRemoteEnd( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t source, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_RMAPUTRE_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { if( origin != 0 ) { /* transfer initiated from 3rd-party process */ fprintf( c->outfile, "(#%llu) \t%llu RMAPutRemoteEnd: initiator %u, " "origin %u, target %u, communicator %u, " "tag %u, bytes %llu, source %llu", (long long unsigned) c->num, (long long unsigned) time, process, origin, target, communicator, tag, (long long unsigned) bytes, (long long unsigned) source); } else { fprintf( c->outfile, "(#%llu) \t%llu RMAPutRemoteEnd: " "origin %u, target %u, communicator %u, " "tag %u, bytes %llu, source %llu", (long long unsigned) c->num, (long long unsigned) time, process, target, communicator, tag, (long long unsigned) bytes, (long long unsigned) source); } printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleRMAGet( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t source, OTF_KeyValueList* kvlist) { Control* c= (Control*) userData; if( c->records[OTF_RMAGET_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { if( origin != 0 ) { /* transfer initiated from 3rd-party process */ fprintf( c->outfile, "(#%llu) \t%llu RMAGet: initiator %u, " "origin %u, target %u, communicator %u, " "tag %u, bytes %llu, source %llu", (long long unsigned) c->num, (long long unsigned) time, process, origin, target, communicator, tag, (long long unsigned) bytes, (long long unsigned) source); } else { fprintf( c->outfile, "(#%llu) \t%llu RMAGet: " "origin %u, target %u, communicator %u, " "tag %u, bytes %llu, source %llu", (long long unsigned) c->num, (long long unsigned) time, process, target, communicator, tag, (long long unsigned) bytes, (long long unsigned) source); } printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleRMAEnd( void* userData, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t source, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_RMAEND_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { if( remote != 0 ) { /* transfer initiated from 3rd-party process */ fprintf( c->outfile, "(#%llu) \t%llu RMAEnd: initiator %u, " "remote %u, communicator %u, " "tag %u, source %llu", (long long unsigned) c->num, (long long unsigned) time, process, remote, communicator, tag, (long long unsigned) source); } else { fprintf( c->outfile, "(#%llu) \t%llu RMAEnd: " "process %u, communicator %u, " "tag %u, source %llu", (long long unsigned) c->num, (long long unsigned) time, process, communicator, tag, (long long unsigned) source); } printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleUnknown( void* userData, uint64_t time, uint32_t process, const char* record ) { Control* c= (Control*) userData; if( c->records[OTF_UNKNOWN_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu Unknown: process %u, record \"%s\"\n", (long long unsigned) c->num, (long long unsigned) time, process, record ); } } return OTF_RETURN_OK; } #define CASE_RETURN(name) \ case OTF_MARKER_TYPE_##name: return #name static const char* markerTypeToString( uint32_t type ) { switch( type ) { CASE_RETURN( ERROR ); CASE_RETURN( WARNING ); CASE_RETURN( HINT ); default: { static char unknown_buffer[ 64 ]; sprintf( unknown_buffer, "UNKNOWN <%u>", type ); return unknown_buffer; } } } #undef CASE_RETURN int handleDefMarker( void *userData, uint32_t stream, uint32_t token, const char* name, uint32_t type, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_DEFMARKER_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) DefMarker: ID %u, name \"%s\", type %s", (long long unsigned) c->num, token, name, markerTypeToString( type ) ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } int handleMarker( void *userData, uint64_t time, uint32_t process, uint32_t token, const char* text, OTF_KeyValueList* kvlist ) { Control* c= (Control*) userData; if( c->records[OTF_MARKER_RECORD] ) { ++c->num; if( c->num >= c->minNum && c->num <= c->maxNum && ! c->silent_mode ) { fprintf( c->outfile, "(#%llu) \t%llu Marker: ID %u, process %u, text \"%s\"", (long long unsigned) c->num, (long long unsigned) time, token, process, text ); printKeyValueList(c, kvlist); } } return OTF_RETURN_OK; } eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfdump/PaxHeaders.7332/Makefile.am0000644000000000000000000000013112544237152023634 xustar0030 mtime=1435582058.539899952 29 atime=1508162197.98025755 30 ctime=1508162366.489798691 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfdump/Makefile.am0000644000175000017500000000064312544237152025027 0ustar00trahaytrahay00000000000000AM_CPPFLAGS = -I$(top_builddir)/otflib -I$(top_srcdir)/otflib if AMBUILDBINARIES #bin_PROGRAMS = otfdump # until v1.12.2 (conflicts with otfdump from OpenType Fonts) bin_PROGRAMS = otfprint endif otfprint_LDADD = $(top_builddir)/otflib/libopen-trace-format.la otfprint_DEPENDENCIES = $(otfprint_LDADD) otfprint_SOURCES = \ Makefile.am \ Handler.h \ Handler.cpp \ otfdump.cpp EXTRA_DIST = \ otfdump_vs08.vcproj eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfdump/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135226023642 xustar0030 mtime=1508162198.000258941 30 atime=1508162279.782470854 30 ctime=1508162366.493799039 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfdump/Makefile.in0000644000175000017500000005445513171135226025046 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ @AMBUILDBINARIES_TRUE@bin_PROGRAMS = otfprint$(EXEEXT) subdir = tools/otfdump ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/m4/libtool.m4 \ $(top_srcdir)/config/m4/ltoptions.m4 \ $(top_srcdir)/config/m4/ltsugar.m4 \ $(top_srcdir)/config/m4/ltversion.m4 \ $(top_srcdir)/config/m4/lt~obsolete.m4 \ $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/config/m4/acinclude.debug.m4 \ $(top_srcdir)/config/m4/acinclude.math.m4 \ $(top_srcdir)/config/m4/acinclude.mpi.m4 \ $(top_srcdir)/config/m4/acinclude.omp.m4 \ $(top_srcdir)/config/m4/acinclude.pdflatex_pgfplots.m4 \ $(top_srcdir)/config/m4/acinclude.swig_python.m4 \ $(top_srcdir)/config/m4/acinclude.vtf3.m4 \ $(top_srcdir)/config/m4/acinclude.verbose.m4 \ $(top_srcdir)/config/m4/acinclude.zlib.m4 \ $(top_srcdir)/config/m4/acinclude.zoidfs.m4 \ $(top_srcdir)/config/m4/acarchive/ax_mpi.m4 \ $(top_srcdir)/config/m4/acarchive/ax_openmp.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_otfprint_OBJECTS = Handler.$(OBJEXT) otfdump.$(OBJEXT) otfprint_OBJECTS = $(am_otfprint_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(otfprint_SOURCES) DIST_SOURCES = $(otfprint_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BMI_INCLUDE_DIR = @BMI_INCLUDE_DIR@ BMI_LIB_DIR = @BMI_LIB_DIR@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLOCK_GETTIME_LIB = @CLOCK_GETTIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHLIB = @MATHLIB@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICFLAGS = @MPICFLAGS@ MPICXX = @MPICXX@ MPICXXFLAGS = @MPICXXFLAGS@ MPILIBS = @MPILIBS@ MPI_INCLUDE_DIR = @MPI_INCLUDE_DIR@ MPI_INCLUDE_LINE = @MPI_INCLUDE_LINE@ MPI_LIB_DIR = @MPI_LIB_DIR@ MPI_LIB_LINE = @MPI_LIB_LINE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENMP_CXXFLAGS = @OPENMP_CXXFLAGS@ OTF_VERSION_LIBRARY = @OTF_VERSION_LIBRARY@ OTF_VERSION_MAJOR = @OTF_VERSION_MAJOR@ OTF_VERSION_MINOR = @OTF_VERSION_MINOR@ OTF_VERSION_STRING = @OTF_VERSION_STRING@ OTF_VERSION_SUB = @OTF_VERSION_SUB@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFTEX = @PDFTEX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWIG = @SWIG@ SWIG_PYTHON_CFLAGS = @SWIG_PYTHON_CFLAGS@ SWIG_PYTHON_OPTS = @SWIG_PYTHON_OPTS@ VERSION = @VERSION@ VTF3_INCLUDE_DIR = @VTF3_INCLUDE_DIR@ VTF3_INCLUDE_LINE = @VTF3_INCLUDE_LINE@ VTF3_LIB_DIR = @VTF3_LIB_DIR@ VTF3_LIB_LINE = @VTF3_LIB_LINE@ ZLIB_INCLUDE_DIR = @ZLIB_INCLUDE_DIR@ ZLIB_INCLUDE_LINE = @ZLIB_INCLUDE_LINE@ ZLIB_LIB_DIR = @ZLIB_LIB_DIR@ ZLIB_LIB_LINE = @ZLIB_LIB_LINE@ ZOIDFS_INCLUDE_DIR = @ZOIDFS_INCLUDE_DIR@ ZOIDFS_INCLUDE_LINE = @ZOIDFS_INCLUDE_LINE@ ZOIDFS_LIB_DIR = @ZOIDFS_LIB_DIR@ ZOIDFS_LIB_LINE = @ZOIDFS_LIB_LINE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_inttypes_h = @have_inttypes_h@ have_stdint_h = @have_stdint_h@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ python_config = @python_config@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sizeof_long = @sizeof_long@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_builddir)/otflib -I$(top_srcdir)/otflib otfprint_LDADD = $(top_builddir)/otflib/libopen-trace-format.la otfprint_DEPENDENCIES = $(otfprint_LDADD) otfprint_SOURCES = \ Makefile.am \ Handler.h \ Handler.cpp \ otfdump.cpp EXTRA_DIST = \ otfdump_vs08.vcproj all: all-am .SUFFIXES: .SUFFIXES: .cpp .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/otfdump/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign tools/otfdump/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list otfprint$(EXEEXT): $(otfprint_OBJECTS) $(otfprint_DEPENDENCIES) $(EXTRA_otfprint_DEPENDENCIES) @rm -f otfprint$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(otfprint_OBJECTS) $(otfprint_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Handler.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/otfdump.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-binPROGRAMS .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/gtg/extlib/otf/tools/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212544237152022157 xustar0030 mtime=1435582058.539899952 30 atime=1508162197.860249201 30 ctime=1508162366.389789961 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/Makefile.am0000644000175000017500000000032612544237152023347 0ustar00trahaytrahay00000000000000TMP1 = otfaux otfconfig otfdump otfinfo otfmerge otfprofile otfshrink if AMHAVEVTF3 TMP2 = otf2vtf vtf2otf else TMP2= endif if AMHAVEZLIB TMP3 = otfcompress else TMP3 = endif SUBDIRS = $(TMP1) $(TMP2) $(TMP3) eztrace-1.1-7/extlib/gtg/extlib/otf/tools/PaxHeaders.7332/vtf2otf0000644000000000000000000000013013171135476021441 xustar0029 mtime=1508162366.82582802 30 atime=1508162367.741908015 29 ctime=1508162366.82582802 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/vtf2otf/0000755000175000017500000000000013171135476022707 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/otf/tools/vtf2otf/PaxHeaders.7332/vtf2otf.c0000644000000000000000000000013212544237152023253 xustar0030 mtime=1435582058.543899952 30 atime=1507797543.962893339 30 ctime=1508162366.817827322 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/vtf2otf/vtf2otf.c0000644000175000017500000006233412544237152024452 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include #include #include "OTF_Platform.h" #include "otf.h" #ifdef HAVE_VTF3 #include "vtf3.h" #endif /* HAVE_VTF3 */ #include "Handler.h" #include "Stack.h" #define VTF32OTFCREATOR "vtf2otf" #define DEFAULT_OUTFILE "out" #define SHOW_HELPTEXT { \ int l = 0; while( Helptext[l] ) { printf( "%s", Helptext[l++] ); } } static const char* Helptext[] = { " \n", " vtf2otf - Convert VTF3 trace files to OTF format. \n", " \n", " Syntax: vtf2otf [options] \n", " \n", " options: \n", " -h, --help show this help message \n", " -V show OTF version \n", " -o namestub of the output file \n", " (default: "DEFAULT_OUTFILE") \n", " -f max count of filehandles \n", " (default: 100) \n", " -n output stream count \n", " -b size of the writer buffer \n", " -z use zlib compression \n", " -io compute io events. This is necessary for getting \n", " correct durations in IO-operations. Result of this \n", " step is a file with extra information. This file \n", " is used for creating correct duration-information in \n", " a normal run. \n", " If you do not have these extra-information-file, the \n", " duration of every IO-operation will be zero. \n", " \n", NULL }; int main (int argc, char **argv) { char* inputFile = NULL; char* outputFile = NULL; unsigned int nstreams= 0; unsigned int maxfilehandles= 100; void *fcbin; fcbT fcb; int nrectypes; int *recordtypes; int i; int a; VTF3_handler_t *handlers; void **firsthandlerargs; size_t bytesread; OTF_FileManager* manager= NULL; int buffersize = 1024 * 1024; OTF_FileCompression compression= OTF_FILECOMPRESSION_UNCOMPRESSED; char iofile[128]; fcb.ioonly= 0; /* argument handling */ if ( 1 >= argc ) { SHOW_HELPTEXT; exit(0); } for ( i = 1; i < argc; i++ ) { if ( ( 0 == strcmp( "-i", argv[i] ) ) && ( i+1 < argc ) ) { inputFile= argv[i+1]; ++i; } else if ( ( 0 == strcmp( "-o", argv[i] ) ) && ( i+1 < argc ) ) { fcb.outputFile= strdup( argv[i+1] ); ++i; } else if ( ( 0 == strcmp( "-n", argv[i] ) ) && ( i+1 < argc ) ) { nstreams = atoi( argv[i+1] ); ++i; } else if ( ( 0 == strcmp( "-f", argv[i] ) ) && ( i+1 < argc ) ) { maxfilehandles = atoi( argv[i+1] ); ++i; } else if ( ( 0 == strcmp( "-b", argv[i] ) ) && ( i+1 < argc ) ) { buffersize = atoi( argv[i+1] ); ++i; } else if ( 0 == strcmp( "-io", argv[i] ) ) { fcb.ioonly= 1; } else if ( ( 0 == strcmp( "-z", argv[i] ) ) && ( i+1 < argc ) ) { compression= atoi( argv [i+1] ); ++i; } else if ( 0 == strcmp( "--help", argv[i] ) || 0 == strcmp( "-h", argv[i] ) ) { SHOW_HELPTEXT; exit(0); } else if ( 0 == strcmp( "-V", argv[i] ) ) { printf( "%u.%u.%u \"%s\"\n", OTF_VERSION_MAJOR, OTF_VERSION_MINOR, OTF_VERSION_SUB, OTF_VERSION_STRING); exit( 0 ); } else { if ( '-' != argv[i][0] ) { inputFile= argv[i]; } else { fprintf( stderr, "ERROR: Unknown option '%s'\n", argv[i] ); exit(1); } } } /* check parameters */ if ( NULL == inputFile ) { printf( " no input file specified\n" ); exit(1); } if ( NULL == outputFile ) { /* printf( " no output file specified\n" ); exit(1); */ outputFile= strdup( DEFAULT_OUTFILE".otf" ); } if ( maxfilehandles < 1 ) { printf( " there must be at least 1 available filehandle\n" ); exit(1); } fcb.processes= NULL; fcb.processcount= 0; fcb.threadnums= 0; fcb.processgroups= NULL; fcb.processgroupcount= 0; fcb.reservedIds= NULL; fcb.reservedIdsc= 0; fcb.pghash= initHash(); fcb.handleid= 0; /* Open FileManager */ if( 0 == fcb.ioonly ) { manager= OTF_FileManager_open( maxfilehandles ); assert( NULL != manager ); /* Open OTF Writer */ fcb.outputFile= OTF_stripFilename( fcb.outputFile ); fcb.writer = OTF_Writer_open( fcb.outputFile, nstreams, manager ); OTF_Writer_setBufferSizes( fcb.writer, buffersize ); OTF_Writer_setCompression( fcb.writer, compression ); } /* Initialize VTF3. */ (void) VTF3_InitTables (); /* Again, how many different record types do exist ? */ nrectypes = VTF3_GetRecTypeArrayDim (); /* Allocate three auxiliary arrays for the record types, the record handler entry point pointers and some data. */ recordtypes = (int *) malloc ((size_t) nrectypes * sizeof (int)); handlers = (VTF3_handler_t *) malloc ((size_t) nrectypes * sizeof (VTF3_handler_t)); firsthandlerargs = (void **) malloc ((size_t) nrectypes * sizeof (void *)); /* Store the record types onto the appropriate array. Pay attention, the caller does not know their ordering scheme. */ (void) VTF3_GetRecTypeArray (recordtypes); /* What follows, this is the final handler table setup. */ if( 0 == fcb.ioonly ) { for (i = 0; i < nrectypes; i++) { if ( VTF3_RECTYPE_CLSTRREGVAL == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleClstrregval; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_COMMENT == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleComment; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_CPUREGVAL == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleCpuregval; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFACT == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefact; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFACT_OBSOL == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefact_obsol; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFCLKPERIOD == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefclkperiod; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFCLSTR == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefclstr; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFCLSTRREG == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefclstrreg; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFCLSTRREGCLASS == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefclstrregclass; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFCOMMUNICATOR == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefcommunicator; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFCPUGRP == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefcpugrp; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFCPUNAME == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefcpuname; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFCPUREG == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefcpureg; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFCPUREGCLASS == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefcpuregclass; firsthandlerargs[i] = &fcb; continue; } /* if ( VTF3_RECTYPE_DEFCREATOR == recordtypes[i] ) { */ /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ /* handlers[i] = (VTF3_handler_t) handleDefcreator; firsthandlerargs[i] = &fcb; continue; } */ if ( VTF3_RECTYPE_DEFGLOBALOP == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefglobalop; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFIOFILE == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefiofile; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFKPARREG == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefkparreg; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFMSGNAME == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefmsgname; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFOPENMPNAME == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefopenmpname; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFOPENMPTYPE == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefopenmptype; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFPATTERN == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefpattern; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFPATTERNSHAPE == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefpatternshape; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFREDFUNC_OBSOL == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefredfunc_obsol; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFSAMP == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefsamp; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFSAMPCLASS == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefsampclass; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFSCL == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefscl; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFSCLFILE == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefsclfile; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFSTATE == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefstate; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFSTATE_OBSOL == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefstate_obsol; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFSYSCPUNAMES == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefsyscpunames; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFSYSCPUNUMS == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefsyscpunums; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFTHREADNUMS == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefthreadnums; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFTIMEOFFSET == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDeftimeoffset; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFUNMERGED == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefunmerged; firsthandlerargs[i] = &fcb; continue; } /* if ( VTF3_RECTYPE_DEFVERSION == recordtypes[i] ) { */ /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ /* handlers[i] = (VTF3_handler_t) handleDefversion; firsthandlerargs[i] = writer; continue; } */ if ( VTF3_RECTYPE_DOWNTO == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDownto; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_EXCHANGE == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleExchange; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_EXCHANGE_OBSOL == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleExchange_obsol; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_FILEIOBEGIN == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleFileiobegin; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_FILEIOEND == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleFileioend; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_GLOBALOP == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleGlobalop; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_KPARREGBARSUM == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleKparregbarsum; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_KPARREGBEGIN == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleKparregbegin; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_KPARREGEND == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleKparregend; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_MUTEXACQUIRE == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleMutexacquire; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_MUTEXRELEASE == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleMutexrelease; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_OPENMPENTER == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleOpenmpenter; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_OPENMPLEAVE == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleOpenmpleave; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_PATTERN == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handlePattern; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_RECVMSG == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleRecvmsg; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_SAMP == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleSamp; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_SENDMSG == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleSendmsg; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_SRCINFO_OBSOL == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleSrcinfo_obsol; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_UNRECOGNIZABLE == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleUnrecognizable; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_UPFROM == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleUpfrom; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_UPTO == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleUpto; firsthandlerargs[i] = &fcb; continue; } } } else { /* 1 == fcb.ioonly */ for (i = 0; i < nrectypes; i++) { if ( VTF3_RECTYPE_DEFSYSCPUNUMS == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefsyscpunums; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_DEFTHREADNUMS == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleDefthreadnums; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_FILEIOBEGIN == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleFileiobegin; firsthandlerargs[i] = &fcb; continue; } if ( VTF3_RECTYPE_FILEIOEND == recordtypes[i] ) { /* Replace the predefined copy handler by our own one, do not forget to redirect the first argument, too. */ handlers[i] = (VTF3_handler_t) handleFileioend; firsthandlerargs[i] = &fcb; continue; } } } /* Open the input device */ fcbin = VTF3_OpenFileInput ( inputFile, handlers, firsthandlerargs, 0); /* Free the auxiliary arrays. */ (void) free (firsthandlerargs); (void) free (handlers); (void) free (recordtypes); if ( NULL == fcbin ) { fprintf( stderr, "cannot open input file '%s'\n", inputFile ); exit( 1 ); } /* Now push the operation to portion-wise process the input file contents. */ if( 0 == fcb.ioonly ) { OTF_Writer_writeDefCreator( fcb.writer, 0, VTF32OTFCREATOR ); /* generate a standardfile group - vampir needs a filegroup(communicator) group 0 would be invalid */ OTF_Writer_writeDefFileGroup( fcb.writer, 0, 1, "Default" ); } do { bytesread = VTF3_ReadFileInputLtdBytes (fcbin, 50000); } while (bytesread != 0); if ( NULL == fcb.processes ) { fprintf( stderr, "ERROR: Missing NCPU record\n" ); exit(1); } /* create defprocess records with thread hierarchie */ if( 0 == fcb.ioonly ) { for( i = 0; i < fcb.processcount; i++ ) { OTF_Writer_writeDefProcess( fcb.writer, 0, i + 1, fcb.processes[i][0].name, 0); for( a = 1; a < fcb.threadnums[i]; ++a ) { OTF_Writer_writeDefProcess( fcb.writer, 0, (i + 1) + (a << 16), fcb.processes[i][a].name, i + 1); } } } /* create defprocessgroup records */ for( i= 0;i < (int)fcb.processgroupcount; ++i ) { if( 0 == fcb.ioonly ) { OTF_Writer_writeDefProcessGroup( fcb.writer, 0 /* uint32_t stream */, fcb.processgroups[i].id /* uint32_t procGroup */, fcb.processgroups[i].name /* const char* name */, fcb.processgroups[i].size /* uint32_t numberOfProcs */, fcb.processgroups[i].procs /* const uint32_t* procs */ ); } free( fcb.processgroups[i].procs ); free( fcb.processgroups[i].name ); } free( fcb.processgroups ); /* free process-array */ for( i = 0; i < fcb.processcount; ++i ) { for( a = 0; a < fcb.threadnums[i]; ++a ) { writeFileIOBuffer( i + (a<<16)/*cpuid*/, &fcb.processes[i][a], fcb.outputFile ); /* delete iofiles */ if( 0 == fcb.ioonly ) { sprintf( iofile, "%s.%i.io", fcb.outputFile, i + (a<<16) ); unlink( iofile ); } Stack_delete( fcb.processes[i][a].stack ); if ( 0 != fcb.processes[i][a].name ) { free( fcb.processes[i][a].name ); } } free( fcb.processes[i] ); } free( fcb.processes ); /* Close all devices. */ (void) VTF3_Close (fcbin); if( 0 == fcb.ioonly ) { OTF_Writer_close( fcb.writer ); OTF_FileManager_close( manager ); } closeHash( fcb.pghash ); free( fcb.outputFile ); return 0; } eztrace-1.1-7/extlib/gtg/extlib/otf/tools/vtf2otf/PaxHeaders.7332/Stack.c0000644000000000000000000000013112544237152022725 xustar0030 mtime=1435582058.543899952 30 atime=1507797543.966893469 29 ctime=1508162366.82582802 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/vtf2otf/Stack.c0000644000175000017500000000363312544237152024122 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include "Stack.h" StackT* Stack_new() { StackT* ret = NULL; /* allocate memory for the stack */ ret = (StackT*) malloc( sizeof( StackT ) ); assert( ret != NULL ); ret->n = 0; ret->s = 0; ret->stack = 0; return ret; } void Stack_push( StackT* stack, StackEntryT* entry ) { /* realloc ? */ if ( stack->n >= stack->s ) { stack->s= ( stack->s > 0 ) ? ( 2* stack->s ) : 10; stack->stack= (StackEntryT*) realloc( stack->stack, stack->s * sizeof(StackEntryT) ); assert( NULL != stack->stack ); } stack->stack[stack->n] = *entry; ++(stack->n); return; } StackEntryT Stack_pop( StackT* stack ) { if( stack->n < 1 ) { fprintf( stderr, "ERROR: Stack is empty\n" ); exit( 1 ); } --(stack->n); return stack->stack[stack->n]; } void Stack_delete( StackT *stack ) { if ( 0 != stack ) { if ( 0 != stack->stack ) { free( stack->stack ); } free( stack ); } } void writeFileIOBuffer( int cpuid, processT* proc, const char* outputFile ) { FILE *pf; char file[128]; sprintf( file, "%s.%i.io", outputFile, cpuid ); pf= fopen( file, "wb" ); assert(pf); fwrite( proc->fileIObuffer, sizeof(uint64_t), proc->fileIObufferpos, pf ); proc->fileIObufferpos= 0; } void readFileIOBuffer( int cpuid, processT* proc, const char* outputFile ) { FILE *pf; char file[128]; sprintf( file, "%s.%i.io", outputFile, cpuid ); pf= fopen( file, "rb" ); if( NULL != pf ) { fseek( pf, proc->filepos * sizeof(uint64_t), SEEK_SET ); proc->fileIObufferlen= fread( proc->fileIObuffer, sizeof(uint64_t), FILEIOBUFFERSIZE, pf ); proc->fileIObufferpos= 0; proc->filepos+= proc->fileIObufferlen; fclose( pf ); } } eztrace-1.1-7/extlib/gtg/extlib/otf/tools/vtf2otf/PaxHeaders.7332/Handler.h0000644000000000000000000000013212544237152023243 xustar0030 mtime=1435582058.543899952 30 atime=1507797543.966893469 30 ctime=1508162366.805826274 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/vtf2otf/Handler.h0000644000175000017500000001656112544237152024443 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifndef VTF3TOOTF_HANDLER_H #define VTF3TOOTF_HANDLER_H int handleClstrregval( void *fcbout, double time, int clstrtoken, int clstrregarraydim, const int *clstrregtokenarray, const int *clstrregvaluetypearray, const void *clstrregvaluearray ); int handleComment( void *fcbout, double time, const char *comment ); int handleCpuregval( void *fcbout, double time, unsigned int cpuid, int cpuregarraydim, const int *cpuregtokenarray, const int *cpuregvaluetypearray, const void *cpuregvaluearray ); int handleDefact( void *fcbout, int activitytoken, const char *activityname ); int handleDefact_obsol( void *fcbout, int activitytoken, const char *activityname ); int handleDefclkperiod( void *fcbout, double clkperiod ); int handleDefclstr( void *fcbout, int clstrtoken, const char *clstrname, int cpuidarraydim, const unsigned int *cpuidarray ); int handleDefclstrreg( void *fcbout, int clstrregtoken, int clstrregclasstoken, int valuetype, const void *valuebounds, const char *clstrregname, const char *clstrregunit ); int handleDefclstrregclass( void *fcbout, int clstrregclasstoken, const char *clstrregclassname ); int handleDefcommunicator( void *fcbout, int communicator, int communicatorsize, int tripletarraydim, const unsigned int *tripletarray ); int handleDefcpugrp( void *fcbout, unsigned int cpugrpid, int cpuorcpugrpidarraydim, const unsigned int *cpuorcpugrpidarray, const char *cpugrpname ); int handleDefcpuname( void *fcbout, unsigned int cpuid, const char *cpuname ); int handleDefcpureg( void *fcbout, int cpuregtoken, int cpuregclasstoken, int valuetype, const void *valuebounds, const char *cpuregname, const char *cpuregunit ); int handleDefcpuregclass( void *fcbout, int cpuregclasstoken, const char *cpuregclassname ); /* int handleDefcreator( void *fcbout, const char *creator ); */ int handleDefglobalop( void *fcbout, int globaloptoken, const char *globalopname ); int handleDefiofile( void *fcbout, int iofiletoken, int communicator, const char *iofilename ); int handleDefkparreg( void *fcbout, int kparregtoken, const char *kparregname ); int handleDefmsgname( void *fcbout, int msgtype, int communicator, const char *msgname ); int handleDefopenmpname( void *fcbout, unsigned int nametoken, const char *openmpname ); int handleDefopenmptype( void *fcbout, unsigned int constructtypetoken, const char *constructtypename ); int handleDefpattern( void *fcbout, int activitytoken, int pattoken, int patshptoken, double radius, int ratio, int timesteparraydim, const double *timesteparray ); int handleDefpatternshape( void *fcbout, int activitytoken, int patshptoken, int patterntype, int patshptokenbref1, int patshptokenbref2 ); int handleDefredfunc_obsol( void *fcbout, int redfunctoken, const char *redfuncname ); int handleDefsamp( void *fcbout, int sampletoken, int sampleclasstoken, int iscpugrpsamp, unsigned int cpuorcpugrpid, int valuetype, const void *valuebounds, int dodifferentiation, int datarephint, const char *samplename, const char *sampleunit ); int handleDefsampclass( void *fcbout, int sampleclasstoken, const char *sampleclassname ); int handleDefscl( void *fcbout, int scltoken, int sclarraydim, const int *sclfiletokenarray, const int *scllinepositionarray ); int handleDefsclfile( void *fcbout, int sclfiletoken, const char *sclfilename ); int handleDefstate( void *fcbout, int activitytoken, int statetoken, const char *statename, int scltoken ); int handleDefstate_obsol( void *fcbout, int activitytoken, const char *activityname, unsigned int activityvalidity, int statetoken, const char *statename ); int handleDefsyscpunames( void *fcbout, int systemcpunamearraydim, char * const *systemcpunamearray ); int handleDefsyscpunums( void *fcbout, int systemcpunumberarraydim, const int *systemcpunumberarray ); int handleDefthreadnums( void *fcbout, int threadnumarraydim, const int *threadnumarray ); int handleDeftimeoffset( void *fcbout, double timeoffset ); int handleDefunmerged( void *fcbout ); /* doesn´t exist in otf int handleDefversion( void *fcbout, int versionnumber ); */ int handleDownto( void *fcbout, double time, int statetoken, unsigned int cpuid, int scltoken ); int handleExchange( void *fcbout, double time, unsigned int cpuid, int exchangetype, int statetoken, int job, int scltoken ); int handleExchange_obsol( void *fcbout, double time, unsigned int cpuid, int exchangetype, int statetoken, int activitytoken, const char *activityname, unsigned int activityvalidity, int job ); int handleFileiobegin( void *fcbout, double time, unsigned int cpuid, int fileiotype, int iofiletoken, int bytescopied, int scltoken ); int handleFileioend( void *fcbout, double time, unsigned int cpuid, int fileiotype, int iofiletoken, int bytescopied, int scltoken ); int handleGlobalop( void *fcbout, double time, int globaloptoken, unsigned int cpuid, int communicator, unsigned int rootcpuid, int bytessent, int bytesreceived, double durationtimesteps, int scltoken ); int handleKparregbarsum( void *fcbout, double time, unsigned int cpuid, int kparregtoken, int seqn, int opasize, const void *opastream, int scltoken ); int handleKparregbegin( void *fcbout, double time, unsigned int cpuid, int kparregtoken, int seqn, int numthreads, int scltoken ); int handleKparregend( void *fcbout, double time, unsigned int cpuid, int kparregtoken, int seqn, int opasize, const void *opastream, int scltoken ); int handleMutexacquire( void *fcbout, double time, unsigned int cpuid, int enterstatetoken, int leavestatetoken, int leavestatetokenisupfrom, double durationtimesteps, int mutexsize, const void *mutex, int scltoken ); int handleMutexrelease( void *fcbout, double time, unsigned int cpuid, int enterstatetoken, int leavestatetoken, int leavestatetokenisupfrom, double durationtimesteps, int mutexsize, const void *mutex, int scltoken ); int handleOpenmpenter( void *fcbout, double time, unsigned int cpuid, unsigned int constructtypetoken, unsigned int nametoken, int scltoken ); int handleOpenmpleave( void *fcbout, double time, unsigned int cpuid, int scltoken ); int handlePattern( void *fcbout, double time, unsigned int cpuid, int patorpatshptoken, double durationtimesteps, int timesteparraydim, const double *timesteparray, const int *patchindexarray ); int handleRecvmsg( void *fcbout, double time, unsigned int receiver, unsigned int sender, int communicator, int msgtype, int msglength, int scltoken ); int handleSamp( void *fcbout, double time, unsigned int cpuorcpugrpid, int samplearraydim, const int *sampletokenarray, const int *samplevaluetypearray, const void *samplevaluearray ); int handleSendmsg( void *fcbout, double time, unsigned int sender, unsigned int receiver, int communicator, int msgtype, int msglength, int scltoken ); int handleSrcinfo_obsol( void *fcbout, double time, int activitytoken, int statetoken, int scllineposition ); int handleUnrecognizable( void *fcbout, double lastvalidtime, int numberofunrecognizablechars, int typeofunrecognizablerecord, const char *unrecognizablerecord ); int handleUpfrom( void *fcbout, double time, int statetoken, unsigned int cpuid, int scltoken ); int handleUpto( void *fcbout, double time, int statetoken, unsigned int cpuid, int scltoken ) ; #endif /* VTF3TOOTF_HANDLER_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/tools/vtf2otf/PaxHeaders.7332/Hash.h0000644000000000000000000000013212544237152022551 xustar0030 mtime=1435582058.543899952 30 atime=1507797543.966893469 30 ctime=1508162366.809826623 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/vtf2otf/Hash.h0000644000175000017500000000144512544237152023744 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifndef HASH_H #define HASH_H #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "OTF_inttypes.h" #define HASHSIZE 1024 struct struct_SubEntry { uint32_t src; uint32_t dst; }; typedef struct struct_SubEntry SubEntry; struct struct_MainEntry { uint32_t src; uint32_t dst; SubEntry *children; int childrenc; }; typedef struct struct_MainEntry MainEntry; struct struct_Hash { MainEntry entrys[HASHSIZE]; }; typedef struct struct_Hash Hash; Hash *initHash( void ); void closeHash( Hash *hash ); uint32_t searchHash( Hash *hash, uint32_t src ); void addHash( Hash *hash, uint32_t src, uint32_t dst ); #endif /* HASH_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/tools/vtf2otf/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212544237152023551 xustar0030 mtime=1435582058.543899952 30 atime=1508162198.224274568 30 ctime=1508162366.801825925 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/vtf2otf/Makefile.am0000644000175000017500000000061012544237152024735 0ustar00trahaytrahay00000000000000AM_CPPFLAGS = \ -I$(top_builddir)/otflib -I$(top_srcdir)/otflib \ $(VTF3_INCLUDE_LINE) if AMBUILDBINARIES bin_PROGRAMS = \ vtf2otf endif vtf2otf_LDADD = $(top_builddir)/otflib/libopen-trace-format.la $(VTF3_LIB_LINE) vtf2otf_DEPENDENCIES = $(top_builddir)/otflib/libopen-trace-format.la vtf2otf_SOURCES = \ Handler.h \ Stack.h \ Hash.h \ vtf2otf.c \ Handler.c \ Stack.c \ Hash.c eztrace-1.1-7/extlib/gtg/extlib/otf/tools/vtf2otf/PaxHeaders.7332/Stack.h0000644000000000000000000000013212544237152022733 xustar0030 mtime=1435582058.543899952 30 atime=1507797543.966893469 30 ctime=1508162366.805826274 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/vtf2otf/Stack.h0000644000175000017500000000334112544237152024123 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifndef _STACK_H #define _STACK_H #include #include "Hash.h" #include struct struct_StackEntry { int state; }; typedef struct struct_StackEntry StackEntryT; struct struct_Stack { /* Stack entries */ StackEntryT* stack; /* Number of entries */ int n; /* Size of the stack */ int s; }; typedef struct struct_Stack StackT; #define FILEIOBUFFERSIZE 2048 typedef struct { char *name; StackT *stack; uint64_t fileIObegin; /* writing - timestamp of the last beginfileio */ uint64_t filepos; /* reading - current position in the *.io file */ uint32_t fileIObufferpos; uint32_t fileIObufferlen; /* reading - determines the end of the buffer */ uint64_t fileIObuffer[FILEIOBUFFERSIZE]; /*1st= timestamp, 2nd= duration*/ }processT; typedef struct { uint32_t id; uint32_t size; uint32_t *procs; char* name; } ProcessGroup; typedef struct { OTF_Writer* writer; processT **processes; int processcount; int *threadnums; ProcessGroup *processgroups; unsigned int processgroupcount; Hash *pghash; /* processgroup-mapping */ uint32_t *reservedIds; int reservedIdsc; char *outputFile; int ioonly; uint64_t handleid; /* needed for fileio */ }fcbT; StackT* Stack_new( void ); void Stack_delete( StackT *stack ); void Stack_push( StackT* stack, StackEntryT* entry ); StackEntryT Stack_pop( StackT* stack ); /* write out the io buffer */ void writeFileIOBuffer( int cpuid, processT* proc, const char* outputFile ); /* read from the io buffer */ void readFileIOBuffer( int cpuid, processT* proc, const char* outputFile ); #endif /* _STACK_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/tools/vtf2otf/PaxHeaders.7332/Handler.c0000644000000000000000000000013112544237152023235 xustar0030 mtime=1435582058.543899952 30 atime=1507797543.966893469 29 ctime=1508162366.82582802 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/vtf2otf/Handler.c0000644000175000017500000006567412544237152024447 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include "OTF_inttypes.h" #include "OTF_Platform.h" #include "otf.h" #ifdef HAVE_VTF3 #include "vtf3.h" #endif /* HAVE_VTF3 */ #include "Handler.h" #include "Stack.h" #ifdef __GNUC__ #else /* __GNUC__ */ #define __PRETTY_FUNCTION__ "" #endif /* __GNUC__ */ #ifdef HAVE_VTF3 int handleClstrregval( void *fcb, double time, int clstrtoken, int clstrregarraydim, const int *clstrregtokenarray, const int *clstrregvaluetypearray, const void *clstrregvaluearray ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleComment( void *fcb, double time, const char *comment ) { /** always write a VTF3 comment to an OTF DefinitionComment. a time stamp in the VTF3 comment record is ignored it */ OTF_Writer_writeDefinitionComment( ((fcbT*)fcb)->writer, 0, comment ); /* old version: if ( time == 0 ) OTF_Writer_writeDefinitionComment( fcb->writer, 0, comment ); else / * which process to write the EventComment to * / OTF_Writer_writeEventComment( fcb->writer, time, ??? , comment ); */ return 0; } int handleCpuregval( void *fcb, double time, unsigned int cpuid, int cpuregarraydim, const int *cpuregtokenarray, const int *cpuregvaluetypearray, const void *cpuregvaluearray ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleDefact( void *fcb, int activitytoken, const char *activityname ) { OTF_Writer_writeDefFunctionGroup( ((fcbT*)fcb)->writer, 0, activitytoken + 1, activityname ); return 0; } int handleDefact_obsol( void *fcb, int activitytoken, const char *activityname ) { OTF_Writer_writeDefFunctionGroup( ((fcbT*)fcb)->writer, 0, activitytoken + 1, activityname ); return 0; } int handleDefclkperiod( void *fcb, double clkperiod ) { /* ' + 0.5' makes proper rounding */ OTF_Writer_writeDefTimerResolution( ((fcbT*)fcb)->writer, 0, (uint64_t) ( 1.0 / clkperiod + 0.5 ) ); return 0; } int handleDefclstr( void *fcb, int clstrtoken, const char *clstrname, int cpuidarraydim, const unsigned int *cpuidarray ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleDefclstrreg( void *fcb, int clstrregtoken, int clstrregclasstoken, int valuetype, const void *valuebounds, const char *clstrregname, const char *clstrregunit ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleDefclstrregclass( void *fcb, int clstrregclasstoken, const char *clstrregclassname ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleDefcommunicator( void *fcb, int communicator, int communicatorsize, int tripletarraydim, const unsigned int *tripletarray ) { uint32_t* procs; uint32_t p; uint32_t i; uint32_t j; char tmp[32]; /* set first two bits to 1 */ uint32_t mcommunicator= ((uint32_t) communicator) | 0xc0000000; int existing; fcbT *fha= ((fcbT*)fcb); if ( 0 > communicator ) { fprintf( stderr, "WARNING in '%s': " "VTF3 communicator id '%i' < 0 invalid\n", "handleDefcommunicator", communicator ); } /* add the mapping */ existing= 1; while( 1 == existing ) { existing= 0; for( i= 0; i < (uint32_t)fha->reservedIdsc; ++i ) { if( fha->reservedIds[i] == mcommunicator ) { existing= 1; ++mcommunicator; break; } } } addHash( fha->pghash, (uint32_t) communicator, mcommunicator ); fha->reservedIds= (uint32_t *) realloc( fha->reservedIds, sizeof( uint32_t ) * ( fha->reservedIdsc + 1 ) ); fha->reservedIds[fha->reservedIdsc]= mcommunicator; ++fha->reservedIdsc; procs= (uint32_t*) malloc( communicatorsize * sizeof(uint32_t) ); assert( procs ); p= 0; for ( i= 0; i < (uint32_t)tripletarraydim; i++ ) { for ( j= tripletarray[3*i+0]; j <= tripletarray[3*i+1]; j += tripletarray[3*i+2] ) { assert( p < (uint32_t)communicatorsize ); procs[p]= j + 1; p++; } } assert( p == (uint32_t)communicatorsize ); fha->processgroups= ( ProcessGroup* ) realloc( fha->processgroups, sizeof(ProcessGroup) * (fha->processgroupcount + 1) ); assert( NULL != fha->processgroups ); sprintf( tmp, "communicator %u", mcommunicator& 0x3fffffff ); fha->processgroups[fha->processgroupcount].id= mcommunicator; fha->processgroups[fha->processgroupcount].size= communicatorsize; fha->processgroups[fha->processgroupcount].procs= procs; fha->processgroups[fha->processgroupcount].name= strdup( tmp ); fha->processgroupcount++; return 0; } int handleDefcpugrp( void *fcb, unsigned int cpugrpid, int cpuorcpugrpidarraydim, const unsigned int *cpuorcpugrpidarray, const char *cpugrpname ) { uint32_t* procs; uint32_t i; int existing; uint32_t tmp; /* set first bit to 1 */ uint32_t mpg= (uint32_t) cpugrpid | 0x80000000; fcbT *fha= ((fcbT*)fcb); if ( ( 1 << 31 ) > (int)cpugrpid ) { fprintf( stderr, "WARNING in '%s': " "VTF3 cpu group id '%u' < 2^31 invalid\n", "handleDefcpugrp", cpugrpid ); } /* add the mapping */ existing= 1; while( 1 == existing ) { existing= 0; for( i= 0; i < (uint32_t)fha->reservedIdsc; ++i ) { if( fha->reservedIds[i] == mpg ) { existing= 1; ++mpg; break; } } } addHash( fha->pghash, (uint32_t) cpugrpid, mpg ); fha->reservedIds= (uint32_t *) realloc( fha->reservedIds, sizeof( uint32_t ) * ( fha->reservedIdsc + 1 ) ); fha->reservedIds[fha->reservedIdsc]= mpg; ++fha->reservedIdsc; procs= (uint32_t*) malloc( cpuorcpugrpidarraydim * sizeof(uint32_t) ); assert( procs ); for ( i= 0; i < (uint32_t)cpuorcpugrpidarraydim; i++ ) { if( 0 == (cpuorcpugrpidarray[i]&0x80000000) ) { procs[i]= cpuorcpugrpidarray[i] +1; } else { tmp= searchHash( fha->pghash, cpuorcpugrpidarray[i] ); if( 0 != tmp ) { procs[i]= tmp; } else { procs[i]= cpuorcpugrpidarray[i]; } } } fha->processgroups= ( ProcessGroup* ) realloc( fha->processgroups, sizeof(ProcessGroup) * (fha->processgroupcount + 1) ); assert( NULL != fha->processgroups ); fha->processgroups[fha->processgroupcount].id= mpg; fha->processgroups[fha->processgroupcount].size= cpuorcpugrpidarraydim; fha->processgroups[fha->processgroupcount].procs= procs; fha->processgroups[fha->processgroupcount].name= strdup( cpugrpname ); fha->processgroupcount++; return 0; } int handleDefcpuname( void *fcb, unsigned int cpuid, const char *cpuname ) { int cpu = cpuid&0xffff; int thread = (cpuid>>16)&0xffff; if ( ((fcbT*)fcb)->threadnums[cpu] < thread ) { fprintf( stderr, "WARNING: Thread has not been defined, record ignored\n" ); return 0; } ((fcbT*)fcb)->processes[cpu][thread].name = strdup( cpuname ); return 0; } int handleDefcpureg( void *fcb, int cpuregtoken, int cpuregclasstoken, int valuetype, const void *valuebounds, const char *cpuregname, const char *cpuregunit ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleDefcpuregclass( void *fcb, int cpuregclasstoken, const char *cpuregclassname ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } /* int handleDefcreator( void *fcbout, const char *creator ) { OTF_Writer_writeDefCreator( ((fcbT*)fcb)->writer, VTF32OTFCREATOR ); return 0; } */ int handleDefglobalop( void *fcb, int globaloptoken, const char* globalopname ) { OTF_Writer_writeDefCollectiveOperation( ((fcbT*)fcb)->writer, 0 /* uint32_t stream */, globaloptoken + 1/* uint32_t collOp */, globalopname /* const char* name */, OTF_COLLECTIVE_TYPE_UNKNOWN /* uint32_t type */ ); return 0; } int handleDefiofile( void *fcb, int iofiletoken, int communicator, const char *iofilename ) { OTF_Writer_writeDefFile( ((fcbT*)fcb)->writer, 0/*stream*/, iofiletoken+1/*token (+1 because 0 would be an invalid otf-token)*/, iofilename/*name*/, 1/*default group*/ ); return 0; } int handleDefkparreg( void *fcb, int kparregtoken, const char *kparregname ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleDefmsgname( void *fcb, int msgtype, int communicator, const char *msgname ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleDefopenmpname( void *fcb, unsigned int nametoken, const char *openmpname ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleDefopenmptype( void *fcb, unsigned int constructtypetoken, const char *constructtypename ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleDefpattern( void *fcb, int activitytoken, int pattoken, int patshptoken, double radius, int ratio, int timesteparraydim, const double *timesteparray ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleDefpatternshape( void *fcb, int activitytoken, int patshptoken, int patterntype, int patshptokenbref1, int patshptokenbref2 ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleDefredfunc_obsol( void *fcb, int redfunctoken, const char *redfuncname ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleDefsamp( void *fcb, int sampletoken, int sampleclasstoken, int iscpugrpsamp, unsigned int cpuorcpugrpid, int valuetype, const void *valuebounds, int dodifferentiation, int datarephint, const char *samplename, const char *sampleunit ) { /* default setting */ uint32_t properties; static int first= 1; if ( 1 == first ) { first = 0; /* temporarily disabled */ /* fprintf( stderr, "translation of performance counter " "definitions not fully supported\n" ); */ } if ( datarephint == VTF3_DATAREPHINT_SAMPLE ) { properties = OTF_COUNTER_SCOPE_START; } else if ( datarephint == VTF3_DATAREPHINT_BEFORE ) { properties = OTF_COUNTER_SCOPE_LAST; } else { properties = OTF_COUNTER_SCOPE_START; /* standard value */ fprintf( stderr, "vtf2otf: in %s: counter type not yet supported," "might not be translated correctly!!!\n", __PRETTY_FUNCTION__ ); } if ( dodifferentiation ) { properties |= OTF_COUNTER_TYPE_ACC; } else { properties |= OTF_COUNTER_TYPE_ABS; } OTF_Writer_writeDefCounter( ((fcbT*)fcb)->writer, 0, sampletoken + 1, samplename, properties, sampleclasstoken + 1, sampleunit ); return 0; } int handleDefsampclass( void *fcb, int sampleclasstoken, const char *sampleclassname ) { OTF_Writer_writeDefCounterGroup( ((fcbT*)fcb)->writer, 0, sampleclasstoken + 1, sampleclassname ); return 0; } int handleDefscl( void *fcb, int scltoken, int sclarraydim, const int *sclfiletokenarray, const int *scllinepositionarray ) { int i; for( i = 0; i < sclarraydim; ++i ) { OTF_Writer_writeDefScl( ((fcbT*)fcb)->writer, 0, scltoken, sclfiletokenarray[i] + 1, scllinepositionarray[i] ); } return 0; } int handleDefsclfile( void *fcb, int sclfiletoken, const char *sclfilename ) { OTF_Writer_writeDefSclFile( ((fcbT*)fcb)->writer, 0, sclfiletoken + 1, sclfilename ); return 0; } int handleDefstate( void *fcb, int activitytoken, int statetoken, const char *statename, int scltoken ) { OTF_Writer_writeDefFunction( ((fcbT*)fcb)->writer, 0, ++statetoken, statename, activitytoken + 1, scltoken ); return 0; } int handleDefstate_obsol( void *fcb, int activitytoken, const char *activityname, unsigned int activityvalidity, int statetoken, const char *statename ) { OTF_Writer_writeDefFunction( ((fcbT*)fcb)->writer, 0, statetoken + 1, statename, activitytoken + 1, 0 ); return 0; } int handleDefsyscpunames( void *fcb, int systemcpunamearraydim, char * const *systemcpunamearray ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleDefsyscpunums( void *fcb, int systemcpunumberarraydim, const int *systemcpunumberarray ) { int a = 0; int i = 0; ((fcbT*)fcb)->processcount = 0; for( i = 0; i < systemcpunumberarraydim; i++) for( a = 0; a < systemcpunumberarray[i]; a++) ((fcbT*)fcb)->processcount++; /* create cpu array (needed for threadnums and carrying the names) */ ((fcbT*)fcb)->processes = ( processT** ) malloc ( sizeof( processT* ) * ((fcbT*)fcb)->processcount ); ((fcbT*)fcb)->threadnums = (int*) malloc( sizeof( int ) * ((fcbT*)fcb)->processcount ); for( i = 0; i < ((fcbT*)fcb)->processcount; i++) { ((fcbT*)fcb)->threadnums[i] = 1; ((fcbT*)fcb)->processes[i] = ( processT* ) malloc ( sizeof (processT) ); ((fcbT*)fcb)->processes[i][0].stack = Stack_new(); ((fcbT*)fcb)->processes[i][0].name = 0; ((fcbT*)fcb)->processes[i][0].filepos= 0; ((fcbT*)fcb)->processes[i][0].fileIObegin = (uint64_t) -1; /* invalid timestamp */ ((fcbT*)fcb)->processes[i][0].fileIObufferpos = 0; ((fcbT*)fcb)->processes[i][0].fileIObufferlen = 0; } return 0; } int handleDefthreadnums( void *fcb, int threadnumarraydim, const int *threadnumarray ) { int i; int a; processT **processestmp; if ( 0 == ((fcbT*)fcb)->processes ) { fprintf( stderr, "ERROR: Missing NCPU record\n" ); exit(1); } /* copy threadnumarray */ free( ((fcbT*)fcb)->threadnums ); ((fcbT*)fcb)->threadnums = (int*) malloc( sizeof( int ) * threadnumarraydim ); memcpy( ((fcbT*)fcb)->threadnums, threadnumarray, sizeof( int ) * threadnumarraydim ); processestmp = ( processT** ) malloc ( sizeof( processT* ) * ((fcbT*)fcb)->processcount ); for( i = 0; i < threadnumarraydim; ++i ) { processestmp[i] = ( processT* ) malloc ( sizeof (processT) * threadnumarray[i]); processestmp[i][0].stack = ((fcbT*)fcb)->processes[i][0].stack; processestmp[i][0].name = ((fcbT*)fcb)->processes[i][0].name; processestmp[i][0].fileIObegin = (uint64_t) -1; processestmp[i][0].filepos = 0; processestmp[i][0].fileIObufferpos = 0; processestmp[i][0].fileIObufferlen = 0; /* remove pointers from original array (to prevent free errors later )*/ ((fcbT*)fcb)->processes[i][0].name = 0; ((fcbT*)fcb)->processes[i][0].stack = 0; /* init the threads */ for( a = 1; a < threadnumarray[i]; ++a ) { processestmp[i][a].stack = Stack_new(); processestmp[i][a].name = 0; processestmp[i][a].fileIObegin = (uint64_t) -1; /* invalid timestamp */ processestmp[i][a].filepos = 0; processestmp[i][a].fileIObufferpos = 0; processestmp[i][a].fileIObufferlen = 0; } } /* delete old processarray */ for( i = 0; i < ((fcbT*)fcb)->processcount; ++i ) { free( ((fcbT*)fcb)->processes[i] ); } free( ((fcbT*)fcb)->processes ); ((fcbT*)fcb)->processes = processestmp; ((fcbT*)fcb)->processcount = threadnumarraydim; return 0; } int handleDeftimeoffset( void *fcb, double timeoffset ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleDefunmerged( void *fcb ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } /* int handleDefversion( void *fcbout, int versionnumber ) { OTF_Writer_writeDefversion( (OTF_Writer*) fcbout, versionnumber, 0, 0 ); return 0; } */ int handleDownto( void *fcb, double time, int statetoken, unsigned int cpuid, int scltoken ) { StackEntryT entry; int cpu = (cpuid&0xffff); int thread = (cpuid>>16)&0xffff; ++cpuid; ++statetoken; OTF_Writer_writeEnter( ((fcbT*)fcb)->writer, (uint64_t) time, statetoken, cpuid, scltoken ); entry.state = statetoken; Stack_push( ((fcbT*)fcb)->processes[cpu][thread].stack, &entry ); return 0; } int handleUpfrom( void *fcb, double time, int statetoken, unsigned int cpuid, int scltoken ) { int cpu = cpuid&0xffff; int thread = (cpuid>>16)&0xffff; /* StackEntry entry; */ ++cpuid; ++statetoken; /* entry = */ Stack_pop( ((fcbT*)fcb)->processes[cpu][thread].stack ); OTF_Writer_writeLeave( ((fcbT*)fcb)->writer, (uint64_t) time, statetoken, cpuid, scltoken ); return 0; } int handleUpto( void *fcb, double time, int statetoken, unsigned int cpuid, int scltoken ) { StackEntryT entry; int cpu = cpuid&0xffff; int thread = (cpuid>>16)&0xffff; ++cpuid; ++statetoken; entry = Stack_pop( ((fcbT*)fcb)->processes[cpu][thread].stack ); OTF_Writer_writeLeave( ((fcbT*)fcb)->writer, (uint64_t) time, entry.state, cpuid, scltoken ); return 0; } int handleExchange( void *fcb, double time, unsigned int cpuid, int exchangetype, int statetoken, int job, int scltoken ) { if ( exchangetype == VTF3_EXCHANGETYPE_DOWNTO ) { return handleDownto( fcb, time, statetoken, cpuid, scltoken ); } else if ( exchangetype == VTF3_EXCHANGETYPE_UPTO ) { return handleUpto( fcb, time, statetoken, cpuid, scltoken ); } else if ( exchangetype == VTF3_EXCHANGETYPE_UPFROM ) { return handleUpfrom( fcb, time, statetoken, cpuid, scltoken ); } else { fprintf( stderr, "ERROR: Unknown exchange type\n"); exit(1); } return 0; } int handleExchange_obsol( void *fcb, double time, unsigned int cpuid, int exchangetype, int statetoken, int activitytoken, const char *activityname, unsigned int activityvalidity, int job ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleFileiobegin( void *fcbx, double time, unsigned int cpuid, int fileiotype, int iofiletoken, int bytescopied, int scltoken ) { int cpu = (cpuid&0xffff); int thread = (cpuid>>16)&0xffff; uint32_t otfiotype; fcbT* fcb= (fcbT*) fcbx; processT* proc= &((fcbT*)fcb)->processes[cpu][thread]; uint64_t duration; if( 0 == fcb->ioonly ) { if( VTF3_FILEIOTYPE_READ == fileiotype ) { otfiotype= OTF_FILEOP_READ; } else if ( VTF3_FILEIOTYPE_WRITE == fileiotype ) { otfiotype= OTF_FILEOP_WRITE; } else { fprintf( stderr, "ERROR: fileiobegin: unknown fileiotype %i.skipping.\n", fileiotype ); return 0; } /* re-read the extra information if there is nothing left */ if( proc->fileIObufferpos >= proc->fileIObufferlen ) { readFileIOBuffer( cpuid, proc, fcb->outputFile ); } ++cpuid; ++iofiletoken; if( proc->fileIObufferpos >= proc->fileIObufferlen ) { duration= 0; } else if ( time == proc->fileIObuffer[proc->fileIObufferpos] ) { duration= proc->fileIObuffer[proc->fileIObufferpos+1]; } else { duration= 0; } OTF_Writer_writeFileOperation( fcb->writer, time, iofiletoken, cpuid, fcb->handleid, otfiotype, (uint64_t) bytescopied, duration, (uint32_t) scltoken ); ++fcb->handleid; ++proc->fileIObufferpos; } else { /* 1 == fcb->ioonly */ if( proc->fileIObegin == (uint64_t) -1 ) { proc->fileIObegin= time; /* set starttimestamp */ } else { fprintf( stderr, "ERROR: fileiobegin after fileiobegin (without end in between). Overwriting.\n" ); return 0; } } return 0; } int handleFileioend( void *fcbx, double time, unsigned int cpuid, int fileiotype, int iofiletoken, int bytescopied, int scltoken ) { int cpu = (cpuid&0xffff); int thread = (cpuid>>16)&0xffff; fcbT* fcb= (fcbT*) fcbx; processT* proc= &((fcbT*)fcb)->processes[cpu][thread]; if( 0 == fcb->ioonly ) { /* ignore, because the starttime(begin record) and duration(extra-info) are important */ } else { /* 1 == fcb->ioonly */ if( proc->fileIObegin != (uint64_t) -1 ) { if( proc->fileIObufferpos > 2045 ) writeFileIOBuffer( cpuid, proc, fcb->outputFile ); proc->fileIObuffer[proc->fileIObufferpos]= proc->fileIObegin; proc->fileIObuffer[proc->fileIObufferpos+1]= time - proc->fileIObegin; proc->fileIObufferpos+= 2; } else { fprintf( stderr, "ERROR: fileioend with no fileiobegin. Ignoring.\n" ); return 0; } } return 0; } int handleGlobalop( void *fcb, double time, int globaloptoken, unsigned int cpuid, int communicator, unsigned int rootcpuid, int bytessent, int bytesreceived, double durationtimesteps, int scltoken ) { uint32_t tmp; ++cpuid; /* map it */ tmp= searchHash( ((fcbT*)fcb)->pghash, (uint32_t) communicator ); if( 0 != tmp ) { communicator= tmp; } if ( rootcpuid >= (unsigned int)((fcbT*)fcb)->processcount ) { /* invalid root cpu id => translate to '0' */ rootcpuid= 0; } else { ++rootcpuid; } OTF_Writer_writeCollectiveOperation( ((fcbT*)fcb)->writer, (uint64_t) time, cpuid, globaloptoken + 1, communicator, rootcpuid, bytessent, bytesreceived, (uint64_t) durationtimesteps, scltoken ); return 0; } int handleKparregbarsum( void *fcb, double time, unsigned int cpuid, int kparregtoken, int seqn, int opasize, const void *opastream, int scltoken ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleKparregbegin( void *fcb, double time, unsigned int cpuid, int kparregtoken, int seqn, int numthreads, int scltoken ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleKparregend( void *fcb, double time, unsigned int cpuid, int kparregtoken, int seqn, int opasize, const void *opastream, int scltoken ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleMutexacquire( void *fcb, double time, unsigned int cpuid, int enterstatetoken, int leavestatetoken, int leavestatetokenisupfrom, double durationtimesteps, int mutexsize, const void *mutex, int scltoken ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleMutexrelease( void *fcb, double time, unsigned int cpuid, int enterstatetoken, int leavestatetoken, int leavestatetokenisupfrom, double durationtimesteps, int mutexsize, const void *mutex, int scltoken ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleOpenmpenter( void *fcb, double time, unsigned int cpuid, unsigned int constructtypetoken, unsigned int nametoken, int scltoken ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleOpenmpleave( void *fcb, double time, unsigned int cpuid, int scltoken ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handlePattern( void *fcb, double time, unsigned int cpuid, int patorpatshptoken, double durationtimesteps, int timesteparraydim, const double *timesteparray, const int *patchindexarray ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleRecvmsg( void *fcb, double time, unsigned int receiver, unsigned int sender, int communicator, int msgtype, int msglength, int scltoken ) { uint32_t tmp; if ( receiver == (uint32_t) -1 || sender == (uint32_t) -1 ) fprintf( stderr, "cpuid is not supposed to be -1" ); /* map it */ tmp= searchHash( ((fcbT*)fcb)->pghash, (uint32_t) communicator ); if( 0 != tmp ) { communicator= tmp; } ++receiver; ++sender; OTF_Writer_writeRecvMsg( ((fcbT*)fcb)->writer, (uint64_t) time, receiver, sender, communicator, msgtype, msglength, scltoken ); return 0; } int handleSamp( void *fcb, double time, unsigned int cpuorcpugrpid, int samplearraydim, const int *sampletokenarray, const int *samplevaluetypearray, const void *samplevaluearray ) { int i; uint64_t tmp; uint32_t tmp2; /* group means first bit equals 1 */ if ( (cpuorcpugrpid&0x80000000) == 0) { if ( cpuorcpugrpid == (uint32_t) -1 ) { fprintf( stderr, "cpuid is not supposed to be -1" ); } ++cpuorcpugrpid; } else { /* map it */ tmp2= searchHash( ((fcbT*)fcb)->pghash, (uint32_t) cpuorcpugrpid ); if( 0 != tmp2 ) { cpuorcpugrpid= tmp2; } } for( i = 0; i < samplearraydim; ++i ) { if ( samplevaluetypearray[i] == VTF3_VALUETYPE_FLOAT ) { tmp = (uint64_t) ( ((double*) samplevaluearray)[i] + 0.5f ); } else { tmp = ( (uint64_t*) samplevaluearray )[i]; } OTF_Writer_writeCounter( ((fcbT*)fcb)->writer, (uint64_t) time, cpuorcpugrpid, sampletokenarray[i] + 1, tmp ); } return 0; } int handleSendmsg( void *fcb, double time, unsigned int sender, unsigned int receiver, int communicator, int msgtype, int msglength, int scltoken ) { uint32_t tmp; if ( receiver == (uint32_t) -1 || sender == (uint32_t) -1 ) fprintf( stderr, "cpuid is not supposed to be -1" ); /* map it */ tmp= searchHash( ((fcbT*)fcb)->pghash, (uint32_t) communicator ); if( 0 != tmp ) { communicator= tmp; } ++receiver; ++sender; OTF_Writer_writeSendMsg( ((fcbT*)fcb)->writer, (uint64_t) time, sender, receiver, communicator, msgtype, msglength, scltoken ); return 0; } int handleSrcinfo_obsol( void *fcb, double time, int activitytoken, int statetoken, int scllineposition ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } int handleUnrecognizable( void *fcb, double lastvalidtime, int numberofunrecognizablechars, int typeofunrecognizablerecord, const char *unrecognizablerecord ) { static int first= 1; if ( 1 == first ) { first= 0; fprintf( stderr, "%s: Record not implemented in OTF_\n", __PRETTY_FUNCTION__ ); } return 0; } #endif /* HAVE_VTF3 */ eztrace-1.1-7/extlib/gtg/extlib/otf/tools/vtf2otf/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135226023556 xustar0030 mtime=1508162198.244275964 30 atime=1508162279.886479279 30 ctime=1508162366.801825925 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/vtf2otf/Makefile.in0000644000175000017500000005334713171135226024761 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ @AMBUILDBINARIES_TRUE@bin_PROGRAMS = vtf2otf$(EXEEXT) subdir = tools/vtf2otf ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/m4/libtool.m4 \ $(top_srcdir)/config/m4/ltoptions.m4 \ $(top_srcdir)/config/m4/ltsugar.m4 \ $(top_srcdir)/config/m4/ltversion.m4 \ $(top_srcdir)/config/m4/lt~obsolete.m4 \ $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/config/m4/acinclude.debug.m4 \ $(top_srcdir)/config/m4/acinclude.math.m4 \ $(top_srcdir)/config/m4/acinclude.mpi.m4 \ $(top_srcdir)/config/m4/acinclude.omp.m4 \ $(top_srcdir)/config/m4/acinclude.pdflatex_pgfplots.m4 \ $(top_srcdir)/config/m4/acinclude.swig_python.m4 \ $(top_srcdir)/config/m4/acinclude.vtf3.m4 \ $(top_srcdir)/config/m4/acinclude.verbose.m4 \ $(top_srcdir)/config/m4/acinclude.zlib.m4 \ $(top_srcdir)/config/m4/acinclude.zoidfs.m4 \ $(top_srcdir)/config/m4/acarchive/ax_mpi.m4 \ $(top_srcdir)/config/m4/acarchive/ax_openmp.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_vtf2otf_OBJECTS = vtf2otf.$(OBJEXT) Handler.$(OBJEXT) \ Stack.$(OBJEXT) Hash.$(OBJEXT) vtf2otf_OBJECTS = $(am_vtf2otf_OBJECTS) am__DEPENDENCIES_1 = AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(vtf2otf_SOURCES) DIST_SOURCES = $(vtf2otf_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BMI_INCLUDE_DIR = @BMI_INCLUDE_DIR@ BMI_LIB_DIR = @BMI_LIB_DIR@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLOCK_GETTIME_LIB = @CLOCK_GETTIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHLIB = @MATHLIB@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICFLAGS = @MPICFLAGS@ MPICXX = @MPICXX@ MPICXXFLAGS = @MPICXXFLAGS@ MPILIBS = @MPILIBS@ MPI_INCLUDE_DIR = @MPI_INCLUDE_DIR@ MPI_INCLUDE_LINE = @MPI_INCLUDE_LINE@ MPI_LIB_DIR = @MPI_LIB_DIR@ MPI_LIB_LINE = @MPI_LIB_LINE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENMP_CXXFLAGS = @OPENMP_CXXFLAGS@ OTF_VERSION_LIBRARY = @OTF_VERSION_LIBRARY@ OTF_VERSION_MAJOR = @OTF_VERSION_MAJOR@ OTF_VERSION_MINOR = @OTF_VERSION_MINOR@ OTF_VERSION_STRING = @OTF_VERSION_STRING@ OTF_VERSION_SUB = @OTF_VERSION_SUB@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFTEX = @PDFTEX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWIG = @SWIG@ SWIG_PYTHON_CFLAGS = @SWIG_PYTHON_CFLAGS@ SWIG_PYTHON_OPTS = @SWIG_PYTHON_OPTS@ VERSION = @VERSION@ VTF3_INCLUDE_DIR = @VTF3_INCLUDE_DIR@ VTF3_INCLUDE_LINE = @VTF3_INCLUDE_LINE@ VTF3_LIB_DIR = @VTF3_LIB_DIR@ VTF3_LIB_LINE = @VTF3_LIB_LINE@ ZLIB_INCLUDE_DIR = @ZLIB_INCLUDE_DIR@ ZLIB_INCLUDE_LINE = @ZLIB_INCLUDE_LINE@ ZLIB_LIB_DIR = @ZLIB_LIB_DIR@ ZLIB_LIB_LINE = @ZLIB_LIB_LINE@ ZOIDFS_INCLUDE_DIR = @ZOIDFS_INCLUDE_DIR@ ZOIDFS_INCLUDE_LINE = @ZOIDFS_INCLUDE_LINE@ ZOIDFS_LIB_DIR = @ZOIDFS_LIB_DIR@ ZOIDFS_LIB_LINE = @ZOIDFS_LIB_LINE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_inttypes_h = @have_inttypes_h@ have_stdint_h = @have_stdint_h@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ python_config = @python_config@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sizeof_long = @sizeof_long@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = \ -I$(top_builddir)/otflib -I$(top_srcdir)/otflib \ $(VTF3_INCLUDE_LINE) vtf2otf_LDADD = $(top_builddir)/otflib/libopen-trace-format.la $(VTF3_LIB_LINE) vtf2otf_DEPENDENCIES = $(top_builddir)/otflib/libopen-trace-format.la vtf2otf_SOURCES = \ Handler.h \ Stack.h \ Hash.h \ vtf2otf.c \ Handler.c \ Stack.c \ Hash.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/vtf2otf/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign tools/vtf2otf/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list vtf2otf$(EXEEXT): $(vtf2otf_OBJECTS) $(vtf2otf_DEPENDENCIES) $(EXTRA_vtf2otf_DEPENDENCIES) @rm -f vtf2otf$(EXEEXT) $(AM_V_CCLD)$(LINK) $(vtf2otf_OBJECTS) $(vtf2otf_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Handler.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Hash.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Stack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vtf2otf.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-binPROGRAMS .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/gtg/extlib/otf/tools/vtf2otf/PaxHeaders.7332/Hash.c0000644000000000000000000000013212544237152022544 xustar0030 mtime=1435582058.543899952 30 atime=1507797543.966893469 30 ctime=1508162366.837829068 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/vtf2otf/Hash.c0000644000175000017500000000421312544237152023733 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #include "Hash.h" #include #include /* *** macros ****************************************/ #ifndef sun #define HASH_GET_KEY(key) \ { \ key += ~(key << 15); \ key ^= (key >> 10); \ key += (key << 3); \ key ^= (key >> 6); \ key += ~(key << 11); \ key ^= (key >> 16); \ key &= HASHSIZE - 1; \ } #else /* sun */ /* stupid stupid gcc2.95 on sun */ uint32_t hash_get_key( uint32_t key ) { key += ~(key << 15); key ^= (key >> 10); key += (key << 3); key ^= (key >> 6); key += ~(key << 11); key ^= (key >> 16); key &= HASH_SIZE - 1; return key; } #define HASH_GET_KEY(key) key= hash_get_key(key) #endif /* sun */ Hash *initHash() { Hash *ret= (Hash*) malloc( sizeof( Hash ) ); memset( ret, 0, sizeof( Hash ) ); return ret; } void closeHash( Hash *hash ) { int i; for( i= 0; i < HASHSIZE; ++i ) { if( NULL != hash->entrys[i].children ) { free( hash->entrys[i].children ); } hash->entrys[i].children= NULL; hash->entrys[i].childrenc= 0; } free( hash ); } uint32_t searchHash( Hash *hash, uint32_t src ) { int i; uint32_t key= src; if( NULL == hash ) { return 0; } HASH_GET_KEY( key ); if( src == hash->entrys[key].src ) { return hash->entrys[key].dst; } for( i= 0; i < hash->entrys[key].childrenc; ++i ) { if( src == hash->entrys[key].children[i].src ) { return hash->entrys[key].children[i].dst; } } return 0; } void addHash( Hash *hash, uint32_t src, uint32_t dst ) { uint32_t key= src; HASH_GET_KEY( key ); /* free entry */ if( 0 == hash->entrys[key].src ) { hash->entrys[key].src= src; hash->entrys[key].dst= dst; } else { hash->entrys[key].children= (SubEntry*) realloc( hash->entrys[key].children, sizeof( SubEntry ) * (hash->entrys[key].childrenc + 1) ); hash->entrys[key].children[hash->entrys[key].childrenc].src= src; hash->entrys[key].children[hash->entrys[key].childrenc].dst= dst; ++hash->entrys[key].childrenc; } } eztrace-1.1-7/extlib/gtg/extlib/otf/tools/PaxHeaders.7332/Makefile.in0000644000000000000000000000013113171135225022162 xustar0030 mtime=1508162197.876250314 30 atime=1508162279.726466317 29 ctime=1508162366.39379031 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/Makefile.in0000644000175000017500000005104613171135225023360 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tools ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/m4/libtool.m4 \ $(top_srcdir)/config/m4/ltoptions.m4 \ $(top_srcdir)/config/m4/ltsugar.m4 \ $(top_srcdir)/config/m4/ltversion.m4 \ $(top_srcdir)/config/m4/lt~obsolete.m4 \ $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/config/m4/acinclude.debug.m4 \ $(top_srcdir)/config/m4/acinclude.math.m4 \ $(top_srcdir)/config/m4/acinclude.mpi.m4 \ $(top_srcdir)/config/m4/acinclude.omp.m4 \ $(top_srcdir)/config/m4/acinclude.pdflatex_pgfplots.m4 \ $(top_srcdir)/config/m4/acinclude.swig_python.m4 \ $(top_srcdir)/config/m4/acinclude.vtf3.m4 \ $(top_srcdir)/config/m4/acinclude.verbose.m4 \ $(top_srcdir)/config/m4/acinclude.zlib.m4 \ $(top_srcdir)/config/m4/acinclude.zoidfs.m4 \ $(top_srcdir)/config/m4/acarchive/ax_mpi.m4 \ $(top_srcdir)/config/m4/acarchive/ax_openmp.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = otfaux otfconfig otfdump otfinfo otfmerge otfprofile \ otfshrink otf2vtf vtf2otf otfcompress am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BMI_INCLUDE_DIR = @BMI_INCLUDE_DIR@ BMI_LIB_DIR = @BMI_LIB_DIR@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLOCK_GETTIME_LIB = @CLOCK_GETTIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHLIB = @MATHLIB@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICFLAGS = @MPICFLAGS@ MPICXX = @MPICXX@ MPICXXFLAGS = @MPICXXFLAGS@ MPILIBS = @MPILIBS@ MPI_INCLUDE_DIR = @MPI_INCLUDE_DIR@ MPI_INCLUDE_LINE = @MPI_INCLUDE_LINE@ MPI_LIB_DIR = @MPI_LIB_DIR@ MPI_LIB_LINE = @MPI_LIB_LINE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENMP_CXXFLAGS = @OPENMP_CXXFLAGS@ OTF_VERSION_LIBRARY = @OTF_VERSION_LIBRARY@ OTF_VERSION_MAJOR = @OTF_VERSION_MAJOR@ OTF_VERSION_MINOR = @OTF_VERSION_MINOR@ OTF_VERSION_STRING = @OTF_VERSION_STRING@ OTF_VERSION_SUB = @OTF_VERSION_SUB@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFTEX = @PDFTEX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWIG = @SWIG@ SWIG_PYTHON_CFLAGS = @SWIG_PYTHON_CFLAGS@ SWIG_PYTHON_OPTS = @SWIG_PYTHON_OPTS@ VERSION = @VERSION@ VTF3_INCLUDE_DIR = @VTF3_INCLUDE_DIR@ VTF3_INCLUDE_LINE = @VTF3_INCLUDE_LINE@ VTF3_LIB_DIR = @VTF3_LIB_DIR@ VTF3_LIB_LINE = @VTF3_LIB_LINE@ ZLIB_INCLUDE_DIR = @ZLIB_INCLUDE_DIR@ ZLIB_INCLUDE_LINE = @ZLIB_INCLUDE_LINE@ ZLIB_LIB_DIR = @ZLIB_LIB_DIR@ ZLIB_LIB_LINE = @ZLIB_LIB_LINE@ ZOIDFS_INCLUDE_DIR = @ZOIDFS_INCLUDE_DIR@ ZOIDFS_INCLUDE_LINE = @ZOIDFS_INCLUDE_LINE@ ZOIDFS_LIB_DIR = @ZOIDFS_LIB_DIR@ ZOIDFS_LIB_LINE = @ZOIDFS_LIB_LINE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_inttypes_h = @have_inttypes_h@ have_stdint_h = @have_stdint_h@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ python_config = @python_config@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sizeof_long = @sizeof_long@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ TMP1 = otfaux otfconfig otfdump otfinfo otfmerge otfprofile otfshrink @AMHAVEVTF3_FALSE@TMP2 = @AMHAVEVTF3_TRUE@TMP2 = otf2vtf vtf2otf @AMHAVEZLIB_FALSE@TMP3 = @AMHAVEZLIB_TRUE@TMP3 = otfcompress SUBDIRS = $(TMP1) $(TMP2) $(TMP3) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign tools/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/gtg/extlib/otf/tools/PaxHeaders.7332/otfconfig0000644000000000000000000000013213171135476022027 xustar0030 mtime=1508162366.457795897 30 atime=1508162367.741908015 30 ctime=1508162366.457795897 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfconfig/0000755000175000017500000000000013171135476023273 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfconfig/PaxHeaders.7332/otfconfig.c0000644000000000000000000000013212544237152024223 xustar0030 mtime=1435582058.539899952 30 atime=1508138858.999496444 30 ctime=1508162366.457795897 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfconfig/otfconfig.c0000644000175000017500000000733612544237152025423 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include "OTF_inttypes.h" #include "OTF_Platform.h" #include "otf.h" #define SHOW_HELPTEXT { \ int l = 0; while( Helptext[l] ) { printf( "%s", Helptext[l++] ); } } static const char* Helptext[] = { " \n", " otfconfig - Show parameters of the OTF configuration. \n", " \n", " Syntax: otfconfig [options] \n", " \n", " options: \n", " -h, --help show this help message \n", " -V, --version show OTF version \n", " --have-zlib is zlib enabled \n", " --have-zoidfs is ZOIDFS for IOFSL enabled \n", " --includes path to the otf headers \n", " --libs libline needed for linking otf \n", " --sizes print size of integer types \n", " \n", NULL }; int main( int argc, char** argv ) { int i; char includes[1024]= ""; char libs[1024]= ""; if( argc == 1 ) { SHOW_HELPTEXT; return 0; } for( i= 1; i < argc; ++i ) { if( 0 == strcmp( argv[i], "-h" ) || 0 == strcmp( argv[i], "--help" ) ) { SHOW_HELPTEXT; return 0; } else if ( 0 == strcmp( argv[i], "-V" ) || 0 == strcmp( argv[i], "--version" ) ) { printf( "%u.%u.%u \"%s\"\n", OTF_VERSION_MAJOR, OTF_VERSION_MINOR, OTF_VERSION_SUB, OTF_VERSION_STRING) ; return 0; } else if ( 0 == strcmp( argv[i], "--have-zlib" ) ) { #ifdef HAVE_ZLIB printf( "yes\n" ); #else /* HAVE_ZLIB */ printf( "no\n" ); #endif /* HAVE_ZLIB */ return 0; } else if ( 0 == strcmp( argv[i], "--have-zoidfs" ) ) { #ifdef HAVE_ZOIDFS printf( "yes\n" ); #else /* HAVE_ZOIDFS */ printf( "no\n" ); #endif /* HAVE_ZOIDFS */ return 0; } else if ( 0 == strcmp( argv[i], "--includes" ) ) { if ( !(*includes) ) { strncpy( includes, "-I"OTFCONFIG_INCLUDEDIR, sizeof( includes) - 1 ); } } else if ( 0 == strcmp( argv[i], "--libs" ) ) { if ( !(*libs) ) { strncpy( libs, "-L"OTFCONFIG_LIBDIR" " OTFCONFIG_LIBS, sizeof( libs ) - 1 ); } } else if ( 0 == strcmp( argv[i], "--sizes" ) ) { /* print size of integer types */ printf( " sizeof(%s)= %llu\n", " int8_t ", (long long unsigned) sizeof(int8_t) ); printf( " sizeof(%s)= %llu\n", " int16_t ", (long long unsigned) sizeof(int16_t) ); printf( " sizeof(%s)= %llu\n", " int32_t ", (long long unsigned) sizeof(int32_t) ); printf( " sizeof(%s)= %llu\n", " int64_t ", (long long unsigned) sizeof(int64_t) ); printf( " sizeof(%s)= %llu\n", " uint8_t ", (long long unsigned) sizeof(uint8_t) ); printf( " sizeof(%s)= %llu\n", " uint16_t ", (long long unsigned) sizeof(uint16_t) ); printf( " sizeof(%s)= %llu\n", " uint32_t ", (long long unsigned) sizeof(uint32_t) ); printf( " sizeof(%s)= %llu\n", " uint64_t ", (long long unsigned) sizeof(uint64_t) ); return 0; } } if ( *includes ) { printf( "%s%c", includes, *libs ? ' ' : '\n' ); } if ( *libs ) { printf( "%s\n", libs ); } return 0; } eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfconfig/PaxHeaders.7332/Makefile.am0000644000000000000000000000013112544237152024134 xustar0030 mtime=1435582058.539899952 29 atime=1508162197.95625588 30 ctime=1508162366.457795897 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfconfig/Makefile.am0000644000175000017500000000067012544237152025327 0ustar00trahaytrahay00000000000000AM_CPPFLAGS = -I$(top_builddir)/otflib -I$(top_srcdir)/otflib if AMBUILDBINARIES bin_PROGRAMS = \ otfconfig endif otfconfig_LDADD = $(top_builddir)/otflib/libopen-trace-format.la otfconfig_DEPENDENCIES = $(otfconfig_LDADD) otfconfig_SOURCES = \ otfconfig.c AM_CFLAGS = -DOTFCONFIG_INCLUDEDIR="\"$(includedir)\"" -DOTFCONFIG_LIBDIR="\"$(libdir)\"" -DOTFCONFIG_LIBS="\"-lotfaux -lopen-trace-format $(ZLIB_LIB_LINE) $(ZOIDFS_LIB_LINE)\"" eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfconfig/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135225024141 xustar0030 mtime=1508162197.976257272 30 atime=1508162279.770469881 30 ctime=1508162366.457795897 eztrace-1.1-7/extlib/gtg/extlib/otf/tools/otfconfig/Makefile.in0000644000175000017500000005303713171135225025340 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ @AMBUILDBINARIES_TRUE@bin_PROGRAMS = otfconfig$(EXEEXT) subdir = tools/otfconfig ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/m4/libtool.m4 \ $(top_srcdir)/config/m4/ltoptions.m4 \ $(top_srcdir)/config/m4/ltsugar.m4 \ $(top_srcdir)/config/m4/ltversion.m4 \ $(top_srcdir)/config/m4/lt~obsolete.m4 \ $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/config/m4/acinclude.debug.m4 \ $(top_srcdir)/config/m4/acinclude.math.m4 \ $(top_srcdir)/config/m4/acinclude.mpi.m4 \ $(top_srcdir)/config/m4/acinclude.omp.m4 \ $(top_srcdir)/config/m4/acinclude.pdflatex_pgfplots.m4 \ $(top_srcdir)/config/m4/acinclude.swig_python.m4 \ $(top_srcdir)/config/m4/acinclude.vtf3.m4 \ $(top_srcdir)/config/m4/acinclude.verbose.m4 \ $(top_srcdir)/config/m4/acinclude.zlib.m4 \ $(top_srcdir)/config/m4/acinclude.zoidfs.m4 \ $(top_srcdir)/config/m4/acarchive/ax_mpi.m4 \ $(top_srcdir)/config/m4/acarchive/ax_openmp.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_otfconfig_OBJECTS = otfconfig.$(OBJEXT) otfconfig_OBJECTS = $(am_otfconfig_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(otfconfig_SOURCES) DIST_SOURCES = $(otfconfig_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BMI_INCLUDE_DIR = @BMI_INCLUDE_DIR@ BMI_LIB_DIR = @BMI_LIB_DIR@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLOCK_GETTIME_LIB = @CLOCK_GETTIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHLIB = @MATHLIB@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICFLAGS = @MPICFLAGS@ MPICXX = @MPICXX@ MPICXXFLAGS = @MPICXXFLAGS@ MPILIBS = @MPILIBS@ MPI_INCLUDE_DIR = @MPI_INCLUDE_DIR@ MPI_INCLUDE_LINE = @MPI_INCLUDE_LINE@ MPI_LIB_DIR = @MPI_LIB_DIR@ MPI_LIB_LINE = @MPI_LIB_LINE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENMP_CXXFLAGS = @OPENMP_CXXFLAGS@ OTF_VERSION_LIBRARY = @OTF_VERSION_LIBRARY@ OTF_VERSION_MAJOR = @OTF_VERSION_MAJOR@ OTF_VERSION_MINOR = @OTF_VERSION_MINOR@ OTF_VERSION_STRING = @OTF_VERSION_STRING@ OTF_VERSION_SUB = @OTF_VERSION_SUB@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFTEX = @PDFTEX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWIG = @SWIG@ SWIG_PYTHON_CFLAGS = @SWIG_PYTHON_CFLAGS@ SWIG_PYTHON_OPTS = @SWIG_PYTHON_OPTS@ VERSION = @VERSION@ VTF3_INCLUDE_DIR = @VTF3_INCLUDE_DIR@ VTF3_INCLUDE_LINE = @VTF3_INCLUDE_LINE@ VTF3_LIB_DIR = @VTF3_LIB_DIR@ VTF3_LIB_LINE = @VTF3_LIB_LINE@ ZLIB_INCLUDE_DIR = @ZLIB_INCLUDE_DIR@ ZLIB_INCLUDE_LINE = @ZLIB_INCLUDE_LINE@ ZLIB_LIB_DIR = @ZLIB_LIB_DIR@ ZLIB_LIB_LINE = @ZLIB_LIB_LINE@ ZOIDFS_INCLUDE_DIR = @ZOIDFS_INCLUDE_DIR@ ZOIDFS_INCLUDE_LINE = @ZOIDFS_INCLUDE_LINE@ ZOIDFS_LIB_DIR = @ZOIDFS_LIB_DIR@ ZOIDFS_LIB_LINE = @ZOIDFS_LIB_LINE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_inttypes_h = @have_inttypes_h@ have_stdint_h = @have_stdint_h@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ python_config = @python_config@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sizeof_long = @sizeof_long@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_builddir)/otflib -I$(top_srcdir)/otflib otfconfig_LDADD = $(top_builddir)/otflib/libopen-trace-format.la otfconfig_DEPENDENCIES = $(otfconfig_LDADD) otfconfig_SOURCES = \ otfconfig.c AM_CFLAGS = -DOTFCONFIG_INCLUDEDIR="\"$(includedir)\"" -DOTFCONFIG_LIBDIR="\"$(libdir)\"" -DOTFCONFIG_LIBS="\"-lotfaux -lopen-trace-format $(ZLIB_LIB_LINE) $(ZOIDFS_LIB_LINE)\"" all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/otfconfig/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign tools/otfconfig/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list otfconfig$(EXEEXT): $(otfconfig_OBJECTS) $(otfconfig_DEPENDENCIES) $(EXTRA_otfconfig_DEPENDENCIES) @rm -f otfconfig$(EXEEXT) $(AM_V_CCLD)$(LINK) $(otfconfig_OBJECTS) $(otfconfig_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/otfconfig.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-binPROGRAMS .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/gtg/extlib/otf/PaxHeaders.7332/COPYING0000644000000000000000000000013212544237152020016 xustar0030 mtime=1435582058.523899952 30 atime=1507797543.966893469 30 ctime=1508162366.093764124 eztrace-1.1-7/extlib/gtg/extlib/otf/COPYING0000644000175000017500000000301512544237152021204 0ustar00trahaytrahay00000000000000Copyright (c) 2005-2013, ZIH, Technische Universitaet Dresden, Federal Republic of Germany All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of ZIH, TU Dresden nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. eztrace-1.1-7/extlib/gtg/extlib/otf/PaxHeaders.7332/ChangeLog0000644000000000000000000000013212544237152020535 xustar0030 mtime=1435582058.523899952 30 atime=1508138917.924968063 30 ctime=1508162366.093764124 eztrace-1.1-7/extlib/gtg/extlib/otf/ChangeLog0000644000175000017500000004301312544237152021725 0ustar00trahaytrahay000000000000001.12.4salmon - fixed build issues when using the Oracle compiler with the stdcxx4 C++ library - added IsCUDAThread and IsMasterThread to OTF_ATTR_TYPEs - otfprofile-mpi: - added function table to LaTeX output, sorted by invocations - fixed invalid profiling values in LaTeX output that produced when using more than one rank for analyzing the input trace - fixed a deadlock that occurred when reading events fails 1.12.3salmon - fixed conflicts with OpenType Fonts: - install header files to INCLUDEDIR/open-trace-format - renamed OTF library to libopen-trace-format - renamed otfdump to otfprint - otfprofile, LaTeX output: - swapped x & y axis of the Message Data Rate Matrix - adapted labels to Vampir - otfinfo: - fixed counting of collective operations and markers 1.12.2salmon - OTF library: - replaced temporary workaround for handling bogus zlib sync. points by a more elaborated solution - otfprofile: - fixed build error when using the IBM XL C++ compiler - removed unnecessary '-k' option from otfshrink command 1.12.1salmon - implemented workaround to avoid setting otf_errno when a false error happens during OTF_RBuffer_Jump to a bogus zlib sync point 1.12salmon - OTF library: - fixed potential segmentation fault when appending a new key-value pair to a list after removing another one - OTFAUX library: - 'OTFAUX_ThumbnailReader_read()' now correctly return success after reading the thumbnail - otfprofile: - create VampirTrace filter file from irregularity analysis - otfaux: - fixed build errors on Solaris and NetBSD - fixed "time not increasing" error when generating inline snapshots 1.11.2goldfish - lib OTFAUX: - speed-up messages matching, if no snapshots should be generated 1.11.1goldfish - new 'OTF_MasterControl_clone()' function to simplify making a copy of a master control object - otfaux: - keep the stream assignments of the input trace, when using the '-o' option - otfmerge[-mpi]: - keep inline snapshots 1.11goldfish - added support for highly parallel trace writing using the I/O Forwarding Scalability Layer (IOFSL) with atomic append aggregation - added unique id record - added new snapshot records which complete them by now - added new definition record to indicates at which timestamps are snapshots or statistics available - new 'OTF_KeyValueList_clone()' function to simplify making a copy of a key-value list - updated python interface - lib OTFAUX: - learned to generate and read a thumbnail - learned to generate snapshots - otfaux: - uses the new snapshot and thumbnail generating features from lib OTFAUX - does not generate statistics by default now (use the new '--all' option to get the old behavior) - new '-o' option to make a copy of the trace - can attach message matching information suitable for Vampir (requires the '-o' option) - can produce the new inline snapshots (requires the '-o' option) - otfcompress: - fixed link error using the GNU gold linker - otfdump: - fixed '-o' option - otfmerge[-mpi]: - fixed merging markers - otfshrink: - do not remove definitions of replaced processes - keep original name of representing process - otfprofile: - added support for detecting irregularities and to present them as markers 1.10.2coelacanth - otfdump: - don't abort when reading events fails - the input tracefile might only have statistics - otfinfo: - fixed file size calculation - otfprofile: - removed leading '=' from CSV lines to make it loadable into spreadsheets (e.g. Open Office) - fixed process naming in CSV output of collective operation statistics 1.10.1coelacanth - fixed build issues in otfprofile[-mpi]: - added missing header includes for WEXITSTATUS - moved 'using namespace std' under the header includes to solve compile error with PGI compiler 1.10coelacanth - added process substitute record - added process group attribute 'OTF_ATTR_IsCommunicator' - renamed OTF_fprintf to OTF_Error which sets the error variables otf_errno and otf_strerr - added OTF_Warning which prints warning messages if verbosity (--with-verbose) is enabled - fixed detection of C compiler flags for compiling the python interface - corrected return value of OTF_WStream_write* functions - fixed parsing of process[group] attributes record - otfmerge-mpi: - build sequential version; replaces the old otfmerge - otfprofile-mpi: - added process clustering based on feature vectors from every process trace (see docu/tools/otfprofile_clustering.pdf for more details) - added CSV output - changeable number of process groups for LaTeX output - build sequential version; replaces the old otfprofile - fixed problem with pgfplots 1.5 - improved y axis labeling for message length charts - otfshrink: - added mapping mode where all but one members per group are removed with multiple groups - reworked parameter parsing, - ranges no longer supported - fixed creation of symbolic links when non-contiguous stream IDs are used - disable 'parent' in a remaining process definition in case the parent is removed 1.9.2sawfish - otfprofile-mpi: - ignore "backward-running" P2P-messages when calculating durations - removed '0' in message length charts and added '1' as extra label - added thousands separator for large integer numbers in latex output 1.9.1sawfish - improved zlib compression - added progress display to otfprofile-mpi - use pdf[la]tex instead of latex/dvipdf to convert otfprofile-mpi's TeX output to PDF - fixed function invocation statistics in otfprofile-mpi generated from summarized information (--stat) 1.9sawfish - added MPI-parallel version of otfprofile (otfprofile-mpi) - added library 'libotfaux' for matching message events - added time range record - added counter process assignment record - minor extensions on API for handling key-value lists - define PATH_MAX under Windows if it is not defined yet - fixed incorrect execution mode when using otfdecompress under Windows 1.8.1sturgeon - added option to 'otfdump' for specifying the maximum number of files that are allowed to be open simultaneously - fixed compile error in 'otfmerge-mpi' due to a missing header include - extended the 'hello' example source code to show the usage of key-values 1.8sturgeon - extended API for reading definitions from an external memory buffer instead of a file - added copy handlers for single trace streams - added support for Python 3 - temporary disabled OpenMP support completely if the PGI compiler is used to work around some uncleared compile errors 1.7.1catfish - removed size limit of key-value byte arrays - disable OpenMP support in otfprofile if the PGI compiler is used to work around some compiler errors - fixed bug while reading an empty process group definition record - fixed composition of output file name in otf[de]compress - fixed a memory leak in python interface 1.7catfish - added second version of each record that contains a Key-Value list to store individual data - two new definition records which can be used to assign attributes to processes - two new snapshot record types: BeginCollopSnapshot, BeginFileOpSnapshot - API changes in EndFileOP record and SendSnapshot record because of a flawed design - added MPI-parallel version of otfmerge (otfmerge-mpi) - otfprofile has a lite mode usefuly for highly parallel traces - added option to otf[de]compress for specifying an output directory - try to open files with 'O_NOATIME' for reading for increased speed - try to handle ESTALE errors on NFS gracefully - fixed OTF long format for several records - fixed error handling in OTF reader - fixed bug in otfshrink: a process number can be between 0 and 4294967296 now 1.6.5stingray - enforce building position independent code (PIC) for the static version of the OTF library (so it's possible to add these objects to 3rd-party shared libraries) - fixed and enhanced calculation of trace file size in otfinfo - patched libtool: - to avoid a bug in detection of the PGI 10 C++ compiler - to detect IBM cross compilers on BlueGene/P 1.6.4stingray - enhanced reading of process group definition records 1.6.3stingray - fixed errors while reading the long OTF format - updated python interface 1.6.2stingray - fixed build errors on SUN Solaris with older GNU compilers - fixed skewed arguments for OTF_WStream_writeEndFileOperation - fixed progress calculation of otfprofile - improved performance of otfprofile - especially handling of huge tracefiles 1.6.1stingray - added tool 'otfinfo' which can be used to get basic information of a trace - fix invalid pointer dereferences in OTF_stripFilename() and OTF_File_open_zlevel() - fixed doxygen documentation: add OTF_Handler.h to package 1.6stingray - added tool 'otfshrink' which can be used to reduce a trace to specified processes - introduced an error variable (otf_errno, otf_strerr) that indicates whether an error occurred or not - fixed build dependencies of otfprofile - added file operation types OTF_FILEOP_DUP, OTF_FILEOP_SYNC, OTF_FILEOP_LOCK, and OTF_FILEOP_UNLOCK - changed datatype for sent/received data volume of collective operation begin/end records from 'uint32_t' to 'uint64_t' - replaced usage of PATH_MAX by VT_PATH_MAX to avoid compile errors 1.5.2dolphin - adapted python bindings to the current API (related to new record types) - if possible, otfprofile creates a PS-file - fixed VPATH issue, when using python bindings - fixed infinite recursion in python wrappers pyOTF_COUNTER_VARTYPE_ISSIGNED and pyOTF_COUNTER_VARTYPE_ISUNSIGNED 1.5.1dolphin - corrected package preparation for libtool - build shared OTF library by default - added version information to shared OTF library 1.5 - added file operation begin/end records - added file operation types OTF_FILEOP_UNLINK, OTF_FILEOP_RENAME, and OTF_FILEOP_OTHER - use part of fileop for I/O flags (e.g. async, coll.) - added collective operation begin/end records - added remote memory access (RMA) operation records - added marker records 1.4.1 - bugfix: removed included system headers inside 'extern "C" {}' - bugfix: added configure check for functions 'fseeko()' and 'ftello()' (these functions are not available on NEC SX platforms) - bugfix in otfprofile: fixed infinite loop while drawing the statistics for "top 50 of counters" 1.4 - added tool 'otfprofile' which can be used to generate CSV/Latex- summaries about functions and P2P-messages of a trace - build/install tool 'otfdump' by default - install documentation 1.3.10 - added configure option '--[enable|disable]-binaries' to control building of binaries (useful for multi-lib installations) 1.3.9 - fixed a portability bug: use own implementation of function 'strdup()' - install a symbolic link 'otfdecompress' which is a synonym for 'otfcompress -d' 1.3.8 - generate OTF_inttypes.h during configuring which provides the integer types like int64_t, int8_t,... - shared OTF library will be linked with zlib, thus additionally linking with zlib is not necessary - bugfix in otf2vtf: correctly handle function leave records with id 0 1.3.7 - added example for using OTF_MasterControl to the doxygen documentation - general improvement of the documentation - improved autoconf's m4 scripts for cross buildings 1.3.6 - OTF_{Keywords.h,Parse.h,Platform.h} will no longer be installed - added a compile time assert making sure the correct sizes of the integer types ([u]int*_T) - OTF is now Windows Visual Studio compatible 1.3.5 - added doxygen html documentation (docu/doxygen/html/index.html) - fixed issue, where newlines were forbidden in def, stats and snaps - added missing const to OTF_WStream_writeDefProcessGroup() 1.3.4 - bug fix in otfmerge: missing handling of DefCollectiveOperation - bugfix in the documentation: overview.eps was broken 1.3.3 - fixed configure bug when searching for zlib on mac - fixed bug in otfmerge, where the parameter "-n 0" caused an error - added macros for specifing the data type of the counter (OTF_COUNTER_VARTYPE_*) - fixed otfconfig help text - fixed bugs when using make dist - python bindings disabled by default - fixed configure bug, when using python bindings - updated python bindings to support user defined counters 1.3.2 - added small functions to convert various variable types to common counter type uint64_t. By this means, other types can be transported as uint64_t and re-casted during reading. This requires type information as additional counter property flags! 1.3.1 - if an fopen() call fails an error is now printed out every time - OTF_READ_ERROR was introduced as an error return value for all OTF_Reader_readXXX and OTF_RStream_readXXX functions. So (uint64_t)-1 is now a reserved value, thus cannot be used as record limit. The record limit always has to be smaller than or equal to OTF_READ_MAXRECORDS. - fixed issue in otfmerge, when using many streams 1.3 - integrated libtool for shared and static linkage to otf - removed the possibility to include zlib symbols into otf - fixed warning which appeared when not using zlib - added python bindings to the otf library 1.2.25 - added doxygen html documentation (docu/doxygen/html/index.html) 1.2.24 - minor change in otf[de|un]compress - strictly avoid writing of unsorted time stamps. Now, there will be an error message and the corresponding buffer/stream will be disabled for further writing. The write routines provide an invlaid return code but currently there is no way to "repair" the buffer/stream after an unsorted time stamp has been issued. 1.2.23 - removed libtool from autoconf to make configure much faster, libtool was not used by automake anyhow - removed some autoconf-generated files from CVS, you might need to re-run 'sh bootstrap' yourself 1.2.22 - fixed inttypes/stdint bug 1.2.21 - fixed "--with-zlib-symbols"-bug 1.2.20 - added own inttypes definitions in case there is no on the platform (necessary on NEC SX6) 1.2.19 - finished otfdump - removed debug output in OTF_Reader.c - re-introduced DefVersion record as read only 1.2.18 - added fwrite check for writting less bytes than expected - re-write of otfdump. Now, it uses OTF read lib instead of plain scanf. It produces nicer output and numbers records in read order. 1.2.17 - bugfixed parser (wrong treatment of unknown records) - added FileGroupOperationSummary record - changed FileOperation-, OpenFileSnapshot- and FileOperationSummary- record NOTE: these records are still experimental - included file operation records into all tools NOTE: some parameters were added/changed - the byte-parameter in the FileOperation record does now contain the new position in the file file after the seek operation - bugfixed otfmerge 1.2.16 - fixed a problem with comments in otfmerge - 2 new records introduced (NOTE: these are experimental): - OpenFileSnapshot - FileOperationSummary 1.2.15 - 3 new records introduced (NOTE: these are experimental): - DefFile - DefFileGroup - FileOperation 1.2.14 - do not linke with '-lz' if '--with-zlibsymbols' was specified - added zlib include line to otflib/Makefile.am 1.2.13 - removed intel compiler warnings - changed OTF_FILETYPE_*-macros - fixed issues with OTF_getFilename() 1.2.12 - removed intel compiler warnings in otfmerge - removed debug output - fixed 64bit issue 1.2.11 - changed OTF_RETURN*( 0=success, !0 = error ) - added these macros to all internal functions and tools for better consistency - fixed various memoryleaks in otf and otfmerge - added otfconfig to tools. otfconfig shows installationparameters important for developers - updated documentation 1.2.10 - bugfix: otfmerge does no longer accept traces with local streams 1.2.9 - changeable zlevel - changeable zbuffersize 1.2.8 - allow suffix '.dylib' for zlib library file (from Mac OS X) - removed configure warning 1.2.7 - added progress functions to OTF_RStream - added a progress counter to otfmerge 1.2.6 - support shared libraries 1.2.5 - bugfix: correctly handle process groups with more than 1000 entries 1.2.4 - bugfix: zlib compression bug, wrong sanity check fixed 1.2.3 - bugfix: provided copy handlers returned wrong value 1.2.2 - important bugfix: definitionstream 0 was ignored since version 1.2 1.2.1 - added progress functions using read bytes instead of timestamps 1.2 - introduce transparent zlib compression 1.1.7 - really did the bugfix for 1.1.6, was missing for some reasons 1.1.6 - bugfix: correctly handle process groups with more than 1000 entries 1.1.5 - have UnknownRecord report handle incomplete records or additional bytes at the end of a file. 1.1.4 - fixed a bug in OTF_Reader which might have caused the very first time stamp of a trace to be not properly sorted - introduced '--snapshots' and '--statistics' switches to do only snapshots or statistics. for statistics a selective mode is allowed which regards only some streams. By this means statistics can be created in parallel by calling otfaux multiple times. 1.1.3 - fixed a minor bug in otfaux 1.1.2 - inverted return value of call-back handlers: '0' is non-error, '!= 0' is regarded as an error, now! (this makes OTF conform with the VTF3 scheme.) 1.1.1 - OTF_Reader now considers the return values of the handlers - added OTF_VERBOSE, OTF_DEBUG macro for error treatment - introduced 'UnknownRecord' handler which allows to catch unknown record types 1.0 - initial version eztrace-1.1-7/extlib/gtg/extlib/otf/PaxHeaders.7332/otflib0000644000000000000000000000013213171135476020170 xustar0030 mtime=1508162366.229775995 30 atime=1508162367.741908015 30 ctime=1508162366.229775995 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/0000755000175000017500000000000013171135476021434 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_Parse.h0000644000000000000000000000013112544237152022174 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.263378162 29 ctime=1508162366.20177355 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_Parse.h0000644000175000017500000000362712544237152023374 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_Parse.h * * @brief All record parsing is located here. * * \ingroup internal */ #ifndef OTF_PARSE_H #define OTF_PARSE_H #include "OTF_RStream.h" #include "OTF_HandlerArray.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** Parse one event record from buffer and call the appropriate function - internal use only. */ int OTF_Reader_parseEventRecord( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** Parse one definition record from buffer and call the appropriate function - internal use only. */ int OTF_Reader_parseDefRecord( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); /** Parse one statisitc summary record from buffer and call the appropriate function - internal use only. */ int OTF_Reader_parseStatisticsRecord( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** Parse one snapshot record from buffer and call the appropriate function - internal use only. */ int OTF_Reader_parseSnapshotsRecord( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** Parse one marker record from buffer and call the appropriate function - internal use only. */ int OTF_Reader_parseMarkerRecord( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); /* *** handle unknown records or parts of it - internal use only! ****** *** */ /* These functions are external because OTF_Reader uses them */ int OTF_Reader_readUnknownRecord( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); int OTF_Reader_readUnknownDefRecord( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); int OTF_Reader_readUnknownMarkerRecord( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTF_PARSE_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_RBuffer.c0000644000000000000000000000013212544237152022451 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.135374966 30 ctime=1508162366.217774947 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_RBuffer.c0000644000175000017500000007271312544237152023652 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch also: patches by Rainer Keller, thanks a lot! */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include #include #include "OTF_Platform.h" #include "OTF_RBuffer.h" #include "OTF_Platform.h" #include "OTF_Errno.h" #include "OTF_Keywords.h" /** constructor - internal use only */ int OTF_RBuffer_init( OTF_RBuffer* rbuffer ); /** destructor - internal use only */ int OTF_RBuffer_finish( OTF_RBuffer* rbuffer ); /** Fetch the next chunk from the file to buffer. Beforehand, move the part [pos,end) to the beginning of the buffer in order to lose no record fragments. Thus, read 'size-(end-pos)' bytes at most. Return the number of bytes actually read. - internal use only */ size_t OTF_RBuffer_advance( OTF_RBuffer* rbuffer ); /** Check if there is a time stamp record at current buffer position. If so read it and update the buffers time and go to the next record. Return 1 in rbuffer case. Otherwise keep the buffer unchanged and return 0. */ char OTF_RBuffer_checkTimeRecord( OTF_RBuffer* rbuffer ); /** Check if there is a process record at current buffer position. If so read it and update the buffers process and go to the next record. Return 1 in rbuffer case. Otherwise keep the buffer unchanged and return 0. */ char OTF_RBuffer_checkProcessRecord( OTF_RBuffer* rbuffer ); /* *** internal functions which may be inlined ***************************** */ char OTF_RBuffer_checkTimeRecord( OTF_RBuffer* rbuffer ) { uint32_t p; char c; /* identify record type, assume we are at the begining of a record */ /* tolerate leading spaces */ /* do not change buffer or position until we are sure that rbuffer is a time record */ p= rbuffer->pos; c= rbuffer->buffer[ p ]; while ( ( ' ' == c ) || ( '\t' == c ) ) { ++p; c= rbuffer->buffer[ p ]; } /* check first real character c */ if ( ( '0' <= c && c <= '9' ) || ( 'a' <= c && c <= 'f' ) ) { /* time stamp record affirmed */ rbuffer->pos= p; rbuffer->time= OTF_RBuffer_readUint64( rbuffer ); OTF_RBuffer_readNewline( rbuffer ); return 1; } /* not a time record */ return 0; } char OTF_RBuffer_checkProcessRecord( OTF_RBuffer* rbuffer ) { uint32_t p; char c; /* identify record type, assume we are at the begining of a record */ /* tolerate leading spaces */ /* do not change buffer or position until we are sure that rbuffer is a time record */ p= rbuffer->pos; c= rbuffer->buffer[ p ]; while ( ( ' ' == c ) || ( '\t' == c ) ) { ++p; c= rbuffer->buffer[ p ]; } /* check first real character c */ c= rbuffer->buffer[ p ]; if ( '*' == c ) { ++p; c= rbuffer->buffer[ p ]; /* skip spaces again */ while ( ( ' ' == c ) || ( '\t' == c ) ) { ++p; c= rbuffer->buffer[ p ]; } c= rbuffer->buffer[ p ]; if ( ( '0' <= c && c <= '9' ) || ( 'a' <= c && c <= 'f' ) ) { /* process specification record affirmed */ rbuffer->pos= p; rbuffer->process= OTF_RBuffer_readUint32( rbuffer ); OTF_RBuffer_readNewline( rbuffer ); return 1; } } return 0; } /* *** public functions **************************************************** */ int OTF_RBuffer_init( OTF_RBuffer* rbuffer ) { rbuffer->file = NULL; /* buffer is allocated on demand */ rbuffer->buffer= NULL; rbuffer->pos= 0; rbuffer->lastnewline= 0; rbuffer->end= 0; rbuffer->size= 0; rbuffer->jumpsize= 1024; rbuffer->array= NULL; rbuffer->arraysize= 0; rbuffer->time= (uint64_t) -1; rbuffer->process= (uint32_t) -1; rbuffer->filesize= (uint64_t) -1; rbuffer->firstTime= (uint64_t) -1; rbuffer->lastTime= (uint64_t) -1; rbuffer->list = NULL; #ifdef HAVE_ZLIB rbuffer->zbuffersize= OTF_ZBUFFER_DEFAULTSIZE; #endif /* HAVE_ZLIB */ return 1; } int OTF_RBuffer_finish( OTF_RBuffer* rbuffer ) { free( rbuffer->buffer ); rbuffer->buffer= NULL; if ( NULL != rbuffer->array ) { free( rbuffer->array ); rbuffer->array= NULL; } return 1; } OTF_RBuffer* OTF_RBuffer_open( const char* filename, OTF_FileManager* manager ) { OTF_RBuffer* ret; /* Check the input parameters */ if( NULL == manager ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "manager has not been defined.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } ret= (OTF_RBuffer*) malloc( sizeof(OTF_RBuffer) ); if ( NULL == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } OTF_RBuffer_init( ret ); ret->file= OTF_File_open( filename, manager, OTF_FILEMODE_READ ); if ( NULL == ret->file ) { /* *** commented because it can happen when defstream cannot be loaded OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_File_open() failed. filename '%s'\n", __FUNCTION__, __FILE__, __LINE__, filename ); */ free( ret ); ret= NULL; return ret; } ret->list = OTF_KeyValueList_new(); if (ret->list == NULL) { OTF_File_close(ret->file); ret->file = NULL; free( ret ); ret= NULL; return NULL; } #ifdef HAVE_ZLIB OTF_File_setZBufferSize( ret->file, ret->zbuffersize ); #endif /* HAVE_ZLIB */ return ret; } OTF_RBuffer* OTF_RBuffer_open_with_external_buffer( uint32_t len, const char* buffer, uint8_t is_compressed ) { OTF_RBuffer* ret; ret= (OTF_RBuffer*) malloc( sizeof(OTF_RBuffer) ); if ( NULL == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } OTF_RBuffer_init( ret ); ret->file= OTF_File_open_with_external_buffer( len, buffer, is_compressed, OTF_FILEMODE_READ ); if ( NULL == ret->file ) { /* *** commented because it can happen when defstream cannot be loaded OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_File_open() failed. filename '%s'\n", __FUNCTION__, __FILE__, __LINE__, filename ); */ free( ret ); ret= NULL; return ret; } ret->list = OTF_KeyValueList_new(); if (ret->list == NULL) { OTF_File_close(ret->file); ret->file = NULL; free( ret ); ret= NULL; return NULL; } #ifdef HAVE_ZLIB OTF_File_setZBufferSize( ret->file, ret->zbuffersize ); #endif /* HAVE_ZLIB */ return ret; } int OTF_RBuffer_close( OTF_RBuffer* rbuffer ) { int ret= 1; ret &= OTF_File_close( rbuffer->file ); rbuffer->file= NULL; if( rbuffer->list != NULL) { OTF_KeyValueList_close( rbuffer->list); } OTF_RBuffer_finish( rbuffer ); free( rbuffer ); rbuffer = NULL; return ret; } int OTF_RBuffer_setSize( OTF_RBuffer* rbuffer, size_t size ) { if ( size < 100 ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "buffer size %u too small, rejected.\n", __FUNCTION__, __FILE__, __LINE__, (uint32_t) size ); return 0; } if ( size < rbuffer->size ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot shrink buffer from %u to %u.\n", __FUNCTION__, __FILE__, __LINE__, (uint32_t) rbuffer->size, (uint32_t) size ); return 0; } rbuffer->size= (uint32_t) size; rbuffer->buffer= (char*) realloc( rbuffer->buffer, rbuffer->size * sizeof(char) ); if( NULL == rbuffer->buffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } if ( rbuffer->jumpsize > size ) { rbuffer->jumpsize= (uint32_t) size; } return 1; } void OTF_RBuffer_setZBufferSize( OTF_RBuffer* rbuffer, uint32_t size ) { #ifdef HAVE_ZLIB if ( 32 > size ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "intended zbuffer size %u is too small, rejected.\n", __FUNCTION__, __FILE__, __LINE__, size ); return; } else if ( 512 > size ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "zbuffer size %u is very small, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } else if ( 10 * 1024 *1024 < size ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "zbuffer size %u is rather big, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } rbuffer->zbuffersize= size; if( NULL != rbuffer->file ) { OTF_File_setZBufferSize( rbuffer->file, rbuffer->zbuffersize ); } #endif /* HAVE_ZLIB */ } int OTF_RBuffer_setJumpSize( OTF_RBuffer* rbuffer, size_t size ) { if ( size < 100 ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "jump buffer size %u too small, rejected.\n", __FUNCTION__, __FILE__, __LINE__, (uint32_t) size ); return 0; } if ( size > rbuffer->size ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "buffer size is smaller than jump size %u.\n", __FUNCTION__, __FILE__, __LINE__, (uint32_t) size ); return 0; } rbuffer->jumpsize = (uint32_t) size; return 1; } /** make the next record availabe from the buffer. return the pointer to the record string which is terminated by '\n' not '\0' ! rbuffer funktion must be called before any record access. it ensures the record is available completely in the buffer. furthermore, time and process information is kept track of. It is recommended to use the 'OTF_RBuffer_readXXX()' functions below to read record components instead of parsing manually. In any case, after reading 'OTF_RBuffer_readNewline()' needs to be called which proceeds to the next record begin no matter if there are still characters from the current record present or not. */ char* OTF_RBuffer_getRecord( OTF_RBuffer* rbuffer ) { /* make sure there is a complete record in the buffer but steal silently away time and process records */ while ( OTF_RBuffer_guaranteeRecord( rbuffer ) ) { if ( OTF_RBuffer_checkTimeRecord( rbuffer ) ) { continue; } if ( OTF_RBuffer_checkProcessRecord( rbuffer ) ) { continue; } return rbuffer->buffer + rbuffer->pos; } /* error, could not read enough from file to buffer. probably file is exceeded. test elsewhere */ return NULL; } int OTF_RBuffer_guaranteeRecord( OTF_RBuffer* rbuffer ) { size_t add; int ret; /* check if there is at least one '\n' in the buffer */ if ( rbuffer->pos < rbuffer->lastnewline ) { return 1; } add= OTF_RBuffer_advance( rbuffer ); if ( 0 == add ) { /* no complete record available! end of file. */ /* OTF_Error( "OTF_RBuffer_guaranteeRecord() " "cannot read, file exceeded\n" ); */ return 0; } /* after advancing the buffer, check if now there is a complete record available */ /* check if there is at least one '\n' in the buffer */ if ( rbuffer->pos < rbuffer->lastnewline ) { /* success */ return 1; } /* if not try to double buffer size until a complete record fits */ /* hard bound for maximum buffer size */ while ( 1024*1024*100 > rbuffer->size ) { ret= OTF_RBuffer_setSize( rbuffer, 2* rbuffer->size ); if ( 1 != ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot double buffer size.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } add= OTF_RBuffer_advance( rbuffer ); if ( 0 == add ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "file exceeded.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } /* rbuffer->pos and rbuffer->end have changed */ if ( rbuffer->pos < rbuffer->lastnewline ) { return 1; } } OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "buffer is too small. Extending buffer has finally failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } #define REALLOCSIZE 128 char *OTF_RBuffer_printRecord( OTF_RBuffer* rbuffer ) { char *ret= NULL; uint32_t pos= 0; uint32_t size= REALLOCSIZE; uint32_t c= rbuffer->pos; ret= (char*) malloc( size ); if( NULL == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } while ( ( '\n' != rbuffer->buffer[c] ) && ( c < rbuffer->end ) ) { while( (pos+1) >= size ) { ret= (char*) realloc( ret, size + REALLOCSIZE ); if( NULL == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } size+= REALLOCSIZE; } ret[pos]= rbuffer->buffer[c]; ++pos; ++c; } ret[pos]= '\0'; return ret; } #undef REALLOCSIZE size_t OTF_RBuffer_advance( OTF_RBuffer* rbuffer ) { uint32_t i; uint32_t d; size_t ret; if ( 0 == rbuffer->size ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "buffer size not set!\n", __FUNCTION__, __FILE__, __LINE__ ); exit(1); } if( rbuffer->pos > rbuffer->end ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "current position exceeds the file length.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } d= rbuffer->end - rbuffer->pos; /* move trailing buffer contents to the begining */ for ( i= 0; i < d; ++i ) { rbuffer->buffer[i]= rbuffer->buffer[ rbuffer->pos + i ]; } rbuffer->pos= 0; ret= OTF_File_read( rbuffer->file, rbuffer->buffer + d, rbuffer->size - d ); rbuffer->end= d + ret; i= rbuffer->end; rbuffer->lastnewline= 0; while ( i > 0 ) { --i; if ( '\n' == rbuffer->buffer[i] ) { rbuffer->lastnewline= i; break; } } return ret; } /** Jump to the given file position and restore buffer and references as if the buffer had reached the position by advancing through the file linearly. In particular, find the next record start, then find next timestamp and process specification in order to set 'time' and 'process' to true values. Return 1 on success. Otherwise, when 0 is returned the file is not that large or there are no appropriate time and process specifications on the tail of the file. Then the buffer contents is undefined! */ int OTF_RBuffer_jump( OTF_RBuffer* rbuffer, uint64_t filepos ) { int ret; size_t read; /* uint64_t currentPos; */ uint32_t i; ret= OTF_File_seek( rbuffer->file, filepos ); if ( 0 != ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_File_seek() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } rbuffer->pos= 0; read= OTF_File_read( rbuffer->file, rbuffer->buffer, rbuffer->jumpsize ); rbuffer->end= (uint32_t) read; i= rbuffer->end; rbuffer->lastnewline= 0; while ( i > 0 ) { --i; if ( '\n' == rbuffer->buffer[i] ) { rbuffer->lastnewline= i; break; } } /* now we are somewhere in the middle of a record. read until next newline and take the next record which is complete */ if ( 0 == OTF_RBuffer_guaranteeRecord( rbuffer ) ) { /* OTF_Error( "OTF_RBuffer_jump() " "ERROR: could not read far enough\n" ); */ return 0; } /* with filepos == 0 we are sure to be already at the beginning of a record */ if ( 0 != filepos ) { /* skip the incomplete record */ OTF_RBuffer_readNewline( rbuffer ); } /* make sure the next record is complete */ if ( 0 == OTF_RBuffer_guaranteeRecord( rbuffer ) ) { /* OTF_Error( "OTF_RBuffer_jump() " "ERROR: could not read far enough\n" ); */ return 0; } /* now we are at the begining of a record */ rbuffer->time= (uint64_t) -1; rbuffer->process= (uint32_t) -1; /* search time stamp */ while ( ((uint64_t) -1) == rbuffer->time ) { /* go on reading while time is undefined */ if ( 0 == OTF_RBuffer_guaranteeRecord( rbuffer ) ) { /* OTF_Error( "OTF_RBuffer_jump() " "ERROR: could not read far enough\n" ); */ return 0; } if ( OTF_RBuffer_checkTimeRecord( rbuffer ) ) { continue; } /* if no time record found, skip the current record */ OTF_RBuffer_readNewline( rbuffer ); } /* search process spec. */ while ( ((uint32_t) -1) == rbuffer->process ) { /* go on reading while process is undefined */ if ( 0 == OTF_RBuffer_guaranteeRecord( rbuffer ) ) { /* OTF_Error( "OTF_RBuffer_jump() " "ERROR: could not read far enough\n" ); */ return 0; } if ( OTF_RBuffer_checkProcessRecord( rbuffer ) ) { continue; } /* if no time record found, skip the current record */ OTF_RBuffer_readNewline( rbuffer ); } return 1; } int OTF_RBuffer_readNewline( OTF_RBuffer* rbuffer ) { /* skip all non-newline characters */ while ( '\n' != rbuffer->buffer[ rbuffer->pos ] ) { ++(rbuffer->pos); if ( rbuffer->pos >= rbuffer->end ) { return 0; } } /* read newline */ ++(rbuffer->pos); /* dont need to catch ( rbuffer->pos >= rbuffer->end ) since rbuffer is its own error condition */ return 1; } void OTF_RBuffer_skipSpaces( OTF_RBuffer* rbuffer ) { /* skip spaces */ while ( ( ( ' ' == rbuffer->buffer[ rbuffer->pos ] ) || ( '\t' == rbuffer->buffer[ rbuffer->pos ] ) ) && ( rbuffer->pos < rbuffer->end ) ) { ++(rbuffer->pos); } } uint64_t OTF_RBuffer_getCurrentTime( OTF_RBuffer* rbuffer ) { if ( rbuffer->time == (uint64_t) -1 ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "Invalid time.", __FUNCTION__, __FILE__, __LINE__ ); } return rbuffer->time; } void OTF_RBuffer_setCurrentTime( OTF_RBuffer* rbuffer, uint64_t time ) { rbuffer->time= time; } uint32_t OTF_RBuffer_getCurrentProcess( OTF_RBuffer* rbuffer ) { return rbuffer->process; } void OTF_RBuffer_setCurrentProcess( OTF_RBuffer* rbuffer, uint32_t process ) { rbuffer->process= process; } uint64_t OTF_RBuffer_readUint64( OTF_RBuffer* rbuffer ) { char c; uint64_t ret = 0; OTF_RBuffer_skipSpaces( rbuffer ); while( 1 ) { c= rbuffer->buffer[rbuffer->pos]; if ( '0' <= c && c <= '9' ) { ret = (ret << 4) | ( c - '0' ); ++(rbuffer->pos); } else if ( 'a' <= c && c <= 'f' ) { ret = (ret << 4) | ( c - ( 'a' - 10 ) ); ++(rbuffer->pos); } else { return ret; } } } uint32_t OTF_RBuffer_readUint32( OTF_RBuffer* rbuffer ) { char c; uint32_t ret = 0; OTF_RBuffer_skipSpaces( rbuffer ); while( 1 ) { c= rbuffer->buffer[rbuffer->pos]; if ( '0' <= c && c <= '9' ) { ret = (ret << 4) | ( c - '0' ); ++(rbuffer->pos); } else if ( 'a' <= c && c <= 'f' ) { ret = (ret << 4) | ( c - ( 'a' - 10 ) ); ++(rbuffer->pos); } else { return ret; } } } int OTF_RBuffer_testChar( OTF_RBuffer* rbuffer, char c ) { OTF_RBuffer_skipSpaces( rbuffer ); /* only advance the buffer position if the right character is found */ if ( ( rbuffer->pos < rbuffer->end ) && ( c == rbuffer->buffer[rbuffer->pos] ) ) { ++(rbuffer->pos); return 1; } return 0; } int OTF_RBuffer_testKeyword( OTF_RBuffer* rbuffer, const char* string ) { uint32_t i = 0; uint32_t j = rbuffer->pos; OTF_RBuffer_skipSpaces( rbuffer ); /* only advance the buffer position if the right string is found */ while ( string[i] ) { if ( string[i] != rbuffer->buffer[j] ) { return 0; } else { ++i; ++j; } } /* if the next character in buffer after the keyword is \in [A,Z] then the actual keyword is continued ==> not matching! */ if ( ( 'A' <= rbuffer->buffer[j] ) && ( 'Z' >= rbuffer->buffer[j] ) ) { return 0; } rbuffer->pos = j; return 1; } int OTF_RBuffer_testPrefix( OTF_RBuffer* rbuffer, const char* string ) { uint32_t i = 0; uint32_t j = rbuffer->pos; OTF_RBuffer_skipSpaces( rbuffer ); /* only advance the buffer position if the right string is found */ while ( string[i] ) { if ( string[i] != rbuffer->buffer[j] ) { return 0; } else { ++i; ++j; } } rbuffer->pos = j; return 1; } /** Determine buffers firstTime and lastTime if not already set. Return 1 on success, 0 on error. */ int OTF_RBuffer_getFileProperties( OTF_RBuffer* rbuffer ) { /* range where the last timestamp is searched */ #define SEARCH_RANGE 4096 uint64_t pos; uint32_t searchRange; /** if both are != -1 we assume everything is fine and return successful. otherwise we go fetching both. */ if ( ( ((uint64_t) -1) != rbuffer->filesize ) || ( ((uint64_t) -1) != rbuffer->firstTime ) || ( ((uint64_t) -1) != rbuffer->lastTime ) ) { return 1; } rbuffer->filesize= OTF_File_size( rbuffer->file ); /* jump to very beginning of file */ if ( !OTF_RBuffer_jump( rbuffer, 0 ) ) { return 0; } /* get very first timestamp easily */ rbuffer->firstTime= rbuffer->time; /* now get the last one - rbuffer is a bit more tricky */ /* search range must be smaller than buffer size */ searchRange= ( SEARCH_RANGE < rbuffer->size ) ? SEARCH_RANGE : rbuffer->size; if( 0 >= searchRange ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "the search range is not allowed to be '0'.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } /* file position to jump to: a little bit before file end */ pos= ( rbuffer->filesize > searchRange ) ? ( rbuffer->filesize - searchRange ) : 0; /* while unsuccessful jump */ rbuffer->time= (uint64_t) -1; /*while ( ( !OTF_RBuffer_jump( rbuffer, pos ) ) && !!!!!!!!!!!!!!!!!!!!!!!!! ( pos > searchRange ) ) { pos= pos - searchRange; }*/ while ( ( !OTF_RBuffer_jump( rbuffer, pos ) ) && ( pos > 0 ) ) { pos= (searchRange < pos) ? pos - searchRange : 0; } if ( ((uint64_t) -1) == rbuffer->time ) { /* found no time stamp -> give up */ return 0; } /* we found a time stamp but maybe not the last one. so traverse to the end of the file */ while ( OTF_RBuffer_getRecord(rbuffer) ) { OTF_RBuffer_readNewline( rbuffer ); } rbuffer->lastTime= rbuffer->time; #undef SEARCH_RANGE return 1; } int OTF_RBuffer_searchTime( OTF_RBuffer* rbuffer, uint64_t time ) { uint64_t posA; uint64_t posB; uint64_t posC; uint64_t timeA; uint64_t timeB; uint64_t timeC; int ret; char* ret2; #define mindist 1024 if ( 0 == OTF_RBuffer_getFileProperties( rbuffer ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "could not determine file size (%llu) or first/last time" " (%llx/%llx)\n", __FUNCTION__, __FILE__, __LINE__, (unsigned long long) rbuffer->filesize, (unsigned long long) rbuffer->firstTime, (unsigned long long) rbuffer->lastTime ); return 0; } posA = 0; posB = rbuffer->filesize; timeA= rbuffer->firstTime; timeB= rbuffer->lastTime; /* catch cases where search time lies outside the file's time interval */ if ( time <= timeA ) { ret= OTF_RBuffer_jump( rbuffer, posA ); if ( 1 != ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "unsuccessful jump to begin pos= %llu.\n", __FUNCTION__, __FILE__, __LINE__, (unsigned long long) posA ); return 0; } return 1; } else if ( time > timeB ) { /* consume all records, so that the caller get none */ do { /* need to loop, so that OTF_RBuffer_jump finds the start of a zlib block */ if ( posB > rbuffer->jumpsize ) { posB -= rbuffer->jumpsize; } else { posB = 0; } ret= OTF_RBuffer_jump( rbuffer, posB ); } while ( 1 != ret ); if ( posB == 0 && 1 != ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "unsuccessful jump to begin pos= %llu.\n", __FUNCTION__, __FILE__, __LINE__, (unsigned long long) posB ); return 0; } while ( OTF_RBuffer_getRecord( rbuffer ) ) { OTF_RBuffer_readNewline( rbuffer ); } return 1; } /* do while the distance from 'posA' to 'posB' is big. this works with plain or compressed file positions. */ while ( posB - posA > mindist ) { /* strict half splitting. robust version, maybe add proportional splitting later */ posC= ( posA + posB ) / 2; ret= OTF_RBuffer_jump( rbuffer, posC ); if (1!=ret){ posB= posC; continue; } timeC= rbuffer->time; if ( time == timeC ) { /* hit exactly */ return 1; } if ( time < timeC ) { posB= posC; timeB= timeC; /* continue; */ } else /* if ( time > timeC ) */ { posA= posC; timeA= timeC; /* continue; */ } } /* target is nearly found, search linearly now */ ret= OTF_RBuffer_jump( rbuffer, posA ); if ( 1 != ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "unsuccessful jump to begin pos= %llu.\n", __FUNCTION__, __FILE__, __LINE__, (unsigned long long) posA ); return 0; } while ( rbuffer->time < time ) { OTF_RBuffer_readNewline( rbuffer ); ret2= OTF_RBuffer_getRecord( rbuffer ); if( NULL == ret2 ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_RBuffer_getRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } } return 1; #undef mindist } const char* OTF_RBuffer_readString( OTF_RBuffer* rbuffer ) { char* str; OTF_RBuffer_skipSpaces( rbuffer ); if ( !OTF_RBuffer_testChar( rbuffer, '"' ) ) { return NULL; } str= &(rbuffer->buffer[rbuffer->pos]); while ( rbuffer->buffer[rbuffer->pos] != '"' ) { if ( rbuffer->pos < rbuffer->end ) { ++(rbuffer->pos); } else { return NULL; } } rbuffer->buffer[rbuffer->pos] = '\0'; ++(rbuffer->pos); return str; } uint32_t OTF_RBuffer_readArray( OTF_RBuffer* rbuffer, uint32_t** array, uint32_t* size ) { uint32_t i= 0; uint32_t n= 0; const char* p= &( rbuffer->buffer[ rbuffer->pos ] ); while ( ( ( '0' <= *p ) && ( '9' >= *p ) ) || ( ( 'a' <= *p ) && ( 'f' >= *p ) ) || ( ' ' == *p ) || ( '\t' == *p ) || ( ',' == *p ) ) { if ( ',' == *p ) { ++n; } ++p; } if ( n > (*size) ) { (*array)= (uint32_t*) realloc( (*array), n * sizeof(uint32_t) ); assert( NULL != (*array) ); (*size)= n; } for ( i= 0; i < n; ++i ) { OTF_RBuffer_skipSpaces( rbuffer ); (*array)[i] = OTF_RBuffer_readUint32( rbuffer ); OTF_RBuffer_testChar( rbuffer, ',' ); } /* OTF_RBuffer_skipSpaces( rbuffer ); while ( ( '0' <= (char) rbuffer->buffer[rbuffer->pos] && (char) rbuffer->buffer[rbuffer->pos] <= '9' ) || ( 'a' <= (char) rbuffer->buffer[rbuffer->pos] && (char) rbuffer->buffer[rbuffer->pos] <= 'f' ) ) { array[n] = OTF_RBuffer_readUint32( rbuffer ); ++n; OTF_RBuffer_testChar( rbuffer, ',' ); OTF_RBuffer_skipSpaces( rbuffer ); } */ return n; } void OTF_RBuffer_skipKeyword( OTF_RBuffer* rbuffer ) { while ( ( (char) rbuffer->buffer[rbuffer->pos] >= 'A' && (char) rbuffer->buffer[rbuffer->pos] <= 'Z' ) || (char) rbuffer->buffer[rbuffer->pos] == '#') { ++(rbuffer->pos); } } uint64_t OTF_RBuffer_getFileSize( OTF_RBuffer* rbuffer ) { return OTF_File_size( rbuffer->file ); } uint64_t OTF_RBuffer_getFilePos( OTF_RBuffer* rbuffer ) { return OTF_File_tell( rbuffer->file ); } uint32_t OTF_RBuffer_readBytes( OTF_RBuffer* rbuffer, uint8_t *array, uint32_t max_len ) { char c; uint32_t k = 0; uint32_t i = 0; OTF_RBuffer_skipSpaces( rbuffer ); while( 1 ) { if (k == 2) { i++; k = 0; } c= rbuffer->buffer[rbuffer->pos]; if ( '0' <= c && c <= '9' ) { if ( i >= max_len ) return i + 1; array[i] = ( array[i] << 4) | ( c - '0' ); ++(rbuffer->pos); } else if ( 'a' <= c && c <= 'f' ) { if ( i >= max_len ) return i + 1; array[i] = ( array[i] << 4) | ( c - ( 'a' - 10 ) ); ++(rbuffer->pos); } else { return i; } k++; } } uint32_t OTF_RBuffer_readKeyValueList(OTF_RBuffer* buffer ) { OTF_KeyValuePair pair; if ( buffer->list == NULL) { return 0; } pair.key = OTF_RBuffer_readUint32( buffer ); if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_TYPE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_TYPE ) ) { pair.type = (OTF_Type) OTF_RBuffer_readUint32( buffer ); } else { /* Parse error */ PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_VALUE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_VALUE ) ) { switch (pair.type) { case OTF_CHAR: OTF_RBuffer_readBytes( buffer, (uint8_t*) &(pair.value.otf_char), 1 ); break; case OTF_INT8: pair.value.otf_int8 = OTF_RBuffer_readUint32( buffer ); break; case OTF_UINT8: pair.value.otf_uint8 = OTF_RBuffer_readUint32( buffer ); break; case OTF_INT16: pair.value.otf_int16 = OTF_RBuffer_readUint32( buffer ); break; case OTF_UINT16: pair.value.otf_uint16 = OTF_RBuffer_readUint32( buffer ); break; case OTF_INT32: pair.value.otf_int32 = OTF_RBuffer_readUint32( buffer ); break; case OTF_UINT32: pair.value.otf_uint32 = OTF_RBuffer_readUint32( buffer ); break; case OTF_INT64: pair.value.otf_int64 = OTF_RBuffer_readUint64( buffer ); break; case OTF_UINT64: pair.value.otf_uint64 = OTF_RBuffer_readUint64( buffer ); break; case OTF_DOUBLE: pair.value.otf_double = OTF_Int64ToDouble( OTF_RBuffer_readUint64( buffer ) ); break; case OTF_FLOAT: pair.value.otf_float = OTF_Int32ToFloat( OTF_RBuffer_readUint32( buffer ) ); break; case OTF_BYTE_ARRAY: pair.value.otf_byte_array.len = OTF_RBuffer_readBytes( buffer, pair.value.otf_byte_array.array, OTF_KEYVALUE_MAX_ARRAY_LEN); if( pair.value.otf_byte_array.len > OTF_KEYVALUE_MAX_ARRAY_LEN ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "byte-array exceeds the maximum length of %u bytes per line.\n", __FUNCTION__, __FILE__, __LINE__, OTF_KEYVALUE_MAX_ARRAY_LEN ); PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_LENGTH ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_LENGTH ) ) { pair.value.otf_byte_array.len = OTF_RBuffer_readUint32( buffer ); } break; default: /* Pasre error */ PARSE_ERROR( buffer ); return 0; } } else { /* Parse error */ PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_readNewline( buffer ) ) { OTF_KeyValueList_appendPair(buffer->list, pair); } else { PARSE_ERROR( buffer ); return 0; } return 1; } eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_WBuffer.h0000644000000000000000000000013212544237152022463 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.227377263 30 ctime=1508162366.193772853 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_WBuffer.h0000644000175000017500000001323612544237152023657 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_WBuffer.h * * @brief Provides write access to trace buffers. * * \ingroup internal */ #ifndef OTF_WBUFFER_H #define OTF_WBUFFER_H #include #include #include "OTF_inttypes.h" #include "OTF_File.h" #include "OTF_Filenames.h" #include "OTF_KeyValue.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct struct_OTF_WBuffer { OTF_File* file; /** Begin of the actual buffer. */ char* buffer; /** Current size of buffer. */ uint32_t size; /** Next write position in buffer. */ uint32_t pos; /** Current process inside this file buffer, necessary for state machine. This must not be part of OTF_WStream because there are multiple buffers per stream that might be written in parallel. */ uint32_t process; /** Current time inside this file buffer, necessary for state machine. This must not be part of OTF_WStream because there are multiple buffers per stream that might be written in parallel. */ uint64_t time; #ifdef HAVE_ZLIB /** Default size of zbuffers managed by this buffer. */ uint32_t zbuffersize; #endif /* HAVE_ZLIB */ }; typedef struct struct_OTF_WBuffer OTF_WBuffer; /** Constructor - internal use only */ OTF_WBuffer* OTF_WBuffer_open( const char* filename, OTF_FileManager* manager ); /** Destructor - internal use only */ int OTF_WBuffer_close( OTF_WBuffer* wbuffer ); /** Set the size of the buffer. Cannot shrink buffer but only extend. */ int OTF_WBuffer_setSize( OTF_WBuffer* wbuffer, size_t size ); /** Set the size of the zbuffer. */ void OTF_WBuffer_setZBufferSize( OTF_WBuffer* wbuffer, uint32_t size ); /** Writes the buffer contents to 'file' and marks the buffer empty again. */ int OTF_WBuffer_flush( OTF_WBuffer* wbuffer ); /** Ask the buffer to guarantee at least 'space' bytes at current writing position before the next flush is necessary. Return 1 on success. */ int OTF_WBuffer_guarantee( OTF_WBuffer* wbuffer, size_t space ); /** Set process state machine to 'p' and time stamp state machine to 't'. If 'p' is the current process and 't' is the current time stamp nothing is done. If the process has changed a process record will be written. If the time has changed the new time stamp and the current process will be written. If 't' is lower than the current time stamp it is regarded as an error. Return != 1 on success and 0 on error. */ int OTF_WBuffer_setTimeAndProcess( OTF_WBuffer* wbuffer, uint64_t t, uint32_t p ); /* *** basic write operations *** */ /** Append a key word to the write buffer. A key word is a string without quotes. Buffer flush is done if necessary. Return the number of bytes written. */ uint32_t OTF_WBuffer_writeKeyword( OTF_WBuffer* wbuffer, const char* keyword ); /** Append a string to the write buffer. A string is surrounded by quotes. Buffer flush is done if necessary. Return the number of bytes written. */ uint32_t OTF_WBuffer_writeString( OTF_WBuffer* wbuffer, const char* string ); /** Append a char to the write buffer. Buffer flush is done if necessary. Return the number of bytes written (=1). */ uint32_t OTF_WBuffer_writeChar( OTF_WBuffer* wbuffer, const char character ); /** This function append an 8bit unsigned integer 'value' in hex format to the write buffer. Buffer flush is done if necessary. The return value is the number of written characters. */ uint32_t OTF_WBuffer_writeUint8( OTF_WBuffer* wbuffer, uint8_t value ); /** This function append an 16bit unsigned integer 'value' in hex format to the write buffer. Buffer flush is done if necessary. The return value is the number of written characters. */ uint32_t OTF_WBuffer_writeUint16( OTF_WBuffer* wbuffer, uint16_t value ); /** This function append an unsigned integer 'value' in hex format to the write buffer. Buffer flush is done if necessary. The return value is the number of written characters. */ uint32_t OTF_WBuffer_writeUint32( OTF_WBuffer* wbuffer, uint32_t value ); /** This function append an 64bit unsigned integer 'value' in hex format to the write buffer. Buffer flush is done if necessary. The return value is the number of written characters. */ uint32_t OTF_WBuffer_writeUint64( OTF_WBuffer* wbuffer, uint64_t value ); /** Append a newline character to the buffer. Buffer flush is done if necessary. Return the number of bytes written. */ uint32_t OTF_WBuffer_writeNewline( OTF_WBuffer* wbuffer ); /** This function append an byte array in hex format to the write buffer. Buffer flush is done if necessary. The return value is the number of written characters. */ uint32_t OTF_WBuffer_writeBytes( OTF_WBuffer* wbuffer, const uint8_t *value, uint32_t len); /** Append a KeyValuePair to the buffer (short format). Return the number of bytes written. */ uint32_t OTF_WBuffer_writeKeyValuePair_short(OTF_WBuffer* buffer, OTF_KeyValuePair* pair); /** Append a KeyValuePair to the buffer (long format). Return the number of bytes written. */ uint32_t OTF_WBuffer_writeKeyValuePair_long(OTF_WBuffer* buffer, OTF_KeyValuePair* pair); /** Append a KeyValueList to the buffer (short format). Return the number of bytes written. */ uint32_t OTF_WBuffer_writeKeyValueList_short(OTF_WBuffer* buffer, OTF_KeyValueList *list ); /** Append a KeyValueList to the buffer (long format). Return the number of bytes written. */ uint32_t OTF_WBuffer_writeKeyValueList_long(OTF_WBuffer* buffer, OTF_KeyValueList *list ); /** internal use */ OTF_WBuffer* OTF_WBuffer_open_zlevel( const char* filename, OTF_FileManager* manager, OTF_FileCompression compression ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTF_WBUFFER_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_KeyValue.h0000644000000000000000000000013212544237152022650 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.211376863 30 ctime=1508162366.189772503 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_KeyValue.h0000644000175000017500000006701512544237152024050 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch, Johannes Spazier */ /** * @file OTF_KeyValue.h * * @brief Provides an additional list of key value pairs that can be added to records. * * \ingroup keyvalue */ /** * \defgroup keyvalue KeyValueList Interface * * Provides an additional list of key-value pairs that can be added to records. * * \section keyvalue_write_example A short Example of writing a KeyValueList * * You can append key-value pairs to an OTF_KeyValueList instance that can be added to any record. * * After one call to OTF_Writer_writeXxxKV() the given KeyValueList instance will be empty. * * \code * #include * #include "otf.h" * * int main( int argc, char** argv ) { * * OTF_FileManager* manager; * OTF_Writer* writer; * OTF_KeyValueList* KeyValueList; * * manager= OTF_FileManager_open( 100 ); * assert( manager ); * * writer = OTF_Writer_open( "mytrace", 1, manager ); * assert( writer ); * \endcode * * Initialize the prior declared OTF_KeyValueList. * * \code * KeyValueList = OTF_KeyValueList_new(); * \endcode * * Write a DefKeyValue record that assigns key=1 to name="first_arg" with description="first argument of function" and type=OTF_INT32. * \code * OTF_Writer_writeDefKeyValue( writer, 0, 1, OTF_INT32, "first_arg", "first argument of function" ); * \endcode * * Append a signed integer for key=1 to the initialized KeyValueList. * \code * OTF_KeyValueList_appendInt32( KeyValueList, 1, 25); * \endcode * * Write the entries of the KeyValueList together with the enter record. * Afterwards the KeyValueList will be empty! * \code * OTF_Writer_writeEnterKV( writer, 10000, 100, 1, 0, KeyValueList ); * \endcode * * Clean up before exiting the program. Close the OTF_KeyValueList. * \code * OTF_KeyValueList_close( KeyValueList ); * OTF_Writer_close( writer ); * OTF_FileManager_close( manager ); * * return 0; * } * \endcode * * Compile this using $ gcc -o write write.c `otfconfig --libs`. * * * \section keyvalue_read_example A short Example of reading from a KeyValueList * * \code * #include * #include * #include * #include "otf.h" * * int global_key = 0; * * \endcode * * Define a callback to read all DefKeyValue records. * \code * int handleDefKeyValue( void* userData, uint32_t stream, uint32_t key, OTF_Type type, const char* name, const char *description ) { * \endcode * * Find out which key you are looking for. * \code * if( strcmp( name, "first_arg") == 0 ) { * global_key = key; * } * * return OTF_RETURN_OK; * } * \endcode * * Define a callback to read all enter records. * \code * int handleEnter (void *userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList *list) { * * int value; * * \endcode * * Ask for a key value pair with key=global_key. Save the value in variable "value". * \code * switch( OTF_KeyValueList_getInt32( list, global_key, &value) ) { * case 0: * printf("We entered function %u with argument %d\n", function, value); * break; * case 1: * printf("We entered function %u with no argument.\n", function); * break; * default: * printf("An error occurred while asking for key value pair.\n"); * } * * return OTF_RETURN_OK; * } * * \endcode * * main() includes the common instructions to read an .otf-file. * \code * int main( int argc, char** argv ) { * * OTF_FileManager* manager; * OTF_Reader* reader; * OTF_HandlerArray* handlers; * * manager= OTF_FileManager_open( 100 ); * assert( manager ); * * handlers = OTF_HandlerArray_open(); * assert( handlers ); * * reader = OTF_Reader_open( "mytrace", manager ); * assert( reader ); * * OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefKeyValue, OTF_DEFKEYVALUE_RECORD ); * OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleEnter, OTF_ENTER_RECORD ); * * OTF_Reader_readDefinitions( reader, handlers ); * OTF_Reader_readEvents( reader, handlers ); * * OTF_Reader_close( reader ); * OTF_HandlerArray_close( handlers ); * OTF_FileManager_close( manager ); * * return 0; * } * \endcode * * Compile this using $ gcc -o read read.c `otfconfig --libs`. * */ #ifndef OTF_KEYVALUE_H #define OTF_KEYVALUE_H #include "OTF_inttypes.h" #include "OTF_Definitions.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** An enum which holds all OTF datatypes that are relevant for OTF_KeyValueList. \ingroup miscellaneous */ typedef enum OTF_Type_enum { OTF_UNKNOWN = -1, OTF_CHAR = 0, /**< */ OTF_INT8 = 1, /**< */ OTF_UINT8 = 2, /**< */ OTF_INT16 = 3, /**< */ OTF_UINT16 = 4, /**< */ OTF_INT32 = 5, /**< */ OTF_UINT32 = 6, /**< */ OTF_INT64 = 7, /**< */ OTF_UINT64 = 8, /**< */ OTF_FLOAT = 9, /**< */ OTF_DOUBLE = 10, /**< */ OTF_BYTE_ARRAY = 11 /**< */ } OTF_Type; /** @cond OTF_KeyValue */ /** the following lines are ignored by doxygen */ typedef struct byte_array_struct { uint8_t array[OTF_KEYVALUE_MAX_ARRAY_LEN]; uint32_t len; } byte_array; typedef union OTF_Value_union { char otf_char; int8_t otf_int8; uint8_t otf_uint8; int16_t otf_int16; uint16_t otf_uint16; int32_t otf_int32; uint32_t otf_uint32; int64_t otf_int64; uint64_t otf_uint64; float otf_float; double otf_double; byte_array otf_byte_array; } OTF_Value; struct OTF_KeyValuePair_struct { uint32_t key; OTF_Type type; OTF_Value value; }; typedef struct OTF_KeyValuePairList_struct { struct OTF_KeyValuePair_struct kvPair; struct OTF_KeyValuePairList_struct *kvNext; struct OTF_KeyValuePairList_struct *kvPrev; } OTF_KeyValuePairList; struct OTF_KeyValueList_struct { uint32_t key_count; /* number of different keys in list --> user-relevant */ uint32_t count; /* total number of entries in list (treat byte arrays particular) --> internal use only */ uint32_t size; /* number of allocated entries --> internal */ OTF_KeyValuePairList *kvBegin; /* first element of the list */ OTF_KeyValuePairList *kvEnd; /* last allocated element of the list, may be used or not */ OTF_KeyValuePairList *kvCurrent; /* first unused element in the list, insert new ones here */ }; /** @endcond */ /** Object type which holds a key-value list.*/ typedef struct OTF_KeyValueList_struct OTF_KeyValueList; /** Object type which holds a key-value pair.*/ typedef struct OTF_KeyValuePair_struct OTF_KeyValuePair; /** * Create a new OTF_KeyValueList instance. * * @return Initialized OTF_KeyValueList instance or NULL if an error * occurred. * * \ingroup keyvalue */ OTF_KeyValueList *OTF_KeyValueList_new(void); /** * Close an OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @return 0 if instance was closed successfully and 1 otherwise. * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_close(OTF_KeyValueList* list); /** * Clone an OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object or NULL. * See also OTF_KeyValueList_new(). * * @return Clone of the instance @a list or NULL. * * \ingroup keyvalue */ OTF_KeyValueList* OTF_KeyValueList_clone(OTF_KeyValueList* list); /** * Reset an OTF_KeyValueList instance without deallocating memory. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @return 0 on success, 1 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_reset(OTF_KeyValueList* list); /** * Expand an OTF_KeyValueList by allocating more memory. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param num Number of elements for which memory should be allocated. * * @return 0 on success, 1 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_realloc(OTF_KeyValueList* list, uint32_t num); /** @cond OTF_KeyValue */ /** the following lines are ignored by doxygen */ /** * Append an OTF_KeyValuePair to a given OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param pair An initialized OTF_KeyValuePair object. * * @return 0 on success, 1 if pair already in list and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_appendPair(OTF_KeyValueList* list, OTF_KeyValuePair pair); /** @endcond */ /** * Append a character to a given OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the value in the KeyValueList. * * @param value A character that should be appended to the KeyValueList. * * @return 0 on success, 1 if key already in list and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_appendChar(OTF_KeyValueList* list, uint32_t key, char value); /** * Append a signed integer of 8 bit to a OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the value in the KeyValueList. * * @param value A signed integer of 8 bit that should be appended to the KeyValueList. * * @return 0 on success, 1 if key already in list and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_appendInt8(OTF_KeyValueList* list, uint32_t key, int8_t value); /** * Append an unsigned integer of 8 bit to a OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the value in the KeyValueList. * * @param value An unsigned integer of 8 bit that should be appended to the KeyValueList. * * @return 0 on success, 1 if key already in list and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_appendUint8(OTF_KeyValueList* list, uint32_t key, uint8_t value); /** * Append a signed integer of 16 bit to a OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the value in the KeyValueList. * * @param value A signed integer of 16 bit that should be appended to the KeyValueList. * * @return 0 on success, 1 if key already in list and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_appendInt16(OTF_KeyValueList* list, uint32_t key, int16_t value); /** * Append an unsigned integer of 16 bit to a OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the value in the KeyValueList. * * @param value An unsigned integer of 16 bit that should be appended to the KeyValueList. * * @return 0 on success, 1 if key already in list and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_appendUint16(OTF_KeyValueList* list, uint32_t key, uint16_t value); /** * Append a signed integer of 32 bit to a OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the value in the KeyValueList. * * @param value A signed integer of 32 bit that should be appended to the KeyValueList. * * @return 0 on success, 1 if key already in list and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_appendInt32(OTF_KeyValueList* list, uint32_t key, int32_t value); /** * Append an unsigned integer of 32 bit to a OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the value in the KeyValueList. * * @param value An unsigned integer of 32 bit that should be appended to the KeyValueList. * * @return 0 on success, 1 if key already in list and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_appendUint32(OTF_KeyValueList* list, uint32_t key, uint32_t value); /** * Append a signed integer of 64 bit to a OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the value in the KeyValueList. * * @param value A signed integer of 64 bit that should be appended to the KeyValueList. * * @return 0 on success, 1 if key already in list and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_appendInt64(OTF_KeyValueList* list, uint32_t key, int64_t value); /** * Append an unsigned integer of 64 bit to a given OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the value in the KeyValueList. * * @param value An unsigned integer of 64 bit that should be appended to the KeyValueList. * * @return 0 on success, 1 if key already in list and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_appendUint64(OTF_KeyValueList* list, uint32_t key, uint64_t value); /** * Append a float to a given OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the value in the KeyValueList. * * @param value A float that should be appended to the KeyValueList. * * @return 0 on success, 1 if key already in list and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_appendFloat(OTF_KeyValueList* list, uint32_t key, float value); /** * Append a double to a given OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the value in the KeyValueList. * * @param value A double that should be appended to the KeyValueList. * * @return 0 on success, 1 if key already in list and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_appendDouble(OTF_KeyValueList* list, uint32_t key, double value); /** * Append a byte array to a given OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the value in the KeyValueList. * * @param value Pointer to a byte array that should be appended to the KeyValueList. * * @param len Lenght of byte array. * * @return 0 on success, 1 if key already in list and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_appendByteArray(OTF_KeyValueList* list, uint32_t key, uint8_t *value, uint32_t len); /** * Append an existing OTF_KeyValueList to a given OTF_KeyValueList instance. * * @param dest_list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param source_list Pointer to an initialized OTF_KeyValueList instance that shall be appended to the given KeyValueList. * See also OTF_KeyValueList_new(); * * @return 0 on success, 1 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_appendKeyValueList(OTF_KeyValueList* dest_list, OTF_KeyValueList *source_list); /** * Read a character from the given OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param value Pointer to a char array, where the result is saved. * * @param key An unique id that identifies the value in the OTF_KeyValueList. * * @return 0 on success, 1 if key not found, 2 if type differs * and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_getChar(OTF_KeyValueList *list, uint32_t key, char *value); /** * Read a signed integer of 8 bit from the given OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the value in the OTF_KeyValueList. * * @param value Pointer to a signed integer of 8 bit, where the result is saved. * * @return 0 on success, 1 if key not found, 2 if type differs * and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_getInt8(OTF_KeyValueList *list, uint32_t key, int8_t *value); /** * Read an unsigned integer of 8 bit from the given OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the value in the OTF_KeyValueList. * * @param value Pointer to an unsigned integer of 8 bit, where the result is saved. * * @return 0 on success, 1 if key not found, 2 if type differs * and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_getUint8(OTF_KeyValueList *list, uint32_t key, uint8_t *value); /** * Read a signed integer of 16 bit from the given OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the value in the OTF_KeyValueList. * * @param value Pointer to a signed integer of 16 bit, where the result is saved. * * @return 0 on success, 1 if key not found, 2 if type differs * and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_getInt16(OTF_KeyValueList *list, uint32_t key, int16_t *value); /** * Read an unsigned integer of 16 bit from the given OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the value in the OTF_KeyValueList. * * @param value Pointer to an unsigned integer of 16 bit, where the result is saved. * * @return 0 on success, 1 if key not found, 2 if type differs * and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_getUint16(OTF_KeyValueList *list, uint32_t key, uint16_t *value); /** * Read a signed integer of 32 bit from the given OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the value in the OTF_KeyValueList. * * @param value Pointer to a signed integer of 32 bit, where the result is saved. * * @return 0 on success, 1 if key not found, 2 if type differs * and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_getInt32(OTF_KeyValueList *list, uint32_t key, int32_t *value); /** * Read an unsigned integer of 32 bit from the given OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the value in the OTF_KeyValueList. * * @param value Pointer to an unsigned integer of 32 bit, where the result is saved. * * @return 0 on success, 1 if key not found, 2 if type differs * and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_getUint32(OTF_KeyValueList *list, uint32_t key, uint32_t *value); /** * Read a signed integer of 64 bit from the given OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * @param key An unique id that identifies the value in the OTF_KeyValueList. * * * @param value Pointer to a signed integer of 64 bit, where the result is saved. * * @return 0 on success, 1 if key not found, 2 if type differs * and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_getInt64(OTF_KeyValueList *list, uint32_t key, int64_t *value); /** * Read an unsigned integer of 64 bit from the given OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * @param key An unique id that identifies the value in the OTF_KeyValueList. * * * @param value Pointer to an unsigned integer of 64 bit, where the result is saved. * * @return 0 on success, 1 if key not found, 2 if type differs * and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_getUint64(OTF_KeyValueList *list, uint32_t key, uint64_t *value); /** * Read a float from the given OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the value in the OTF_KeyValueList. * * @param value Pointer to a float, where the result is saved. * * @return 0 on success, 1 if key not found, 2 if type differs * and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_getFloat(OTF_KeyValueList *list, uint32_t key, float *value); /** * Read a double from the given OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the value in the OTF_KeyValueList. * * @param value Pointer to a double, where the result is saved. * * @return 0 on success, 1 if key not found, 2 if type differs * and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_getDouble(OTF_KeyValueList *list, uint32_t key, double *value); /** * Read a byte array from the given OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the value in the OTF_KeyValueList. * * @param value Pointer to an allocated byte array, where the result is saved. * * @param len Input and output parameter: Musst contain the number of bytes * that can be written to the buffer pointed by the parameter \a value. * Therefore at least \a len bytes musst be allocated for this buffer before. * At the end \e len contains the number of bytes written to the buffer. * This can be less or equal to the input of parameter \a len. To get the * total number of bytes stored in the byte-array for the specific \a key you * can use the function OTF_KeyValueList_getArrayLength() before. * * @return 0 on success, 1 if key not found, 2 if type differs * and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_getByteArray(OTF_KeyValueList *list, uint32_t key, uint8_t *value, uint32_t *len); /** * Provides the lenght of a byte array in an OTF_KeyValueList instance by given key. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the pair in the OTF_KeyValueList. * * @param len Return value for the array length. * * @return 0 on success, 1 if key not found, 2 if type differs * and 255 if an error occurs * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_getArrayLength(OTF_KeyValueList *list, uint32_t key, uint32_t *len); /** * Search for key in given OTF_KeyValueList instance and return its type. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key An unique id that identifies the pair in the OTF_KeyValueList. * * @return OTF_Type on success, OTF_UNKNOWN if key not found or an error occurred. * * \ingroup keyvalue */ OTF_Type OTF_KeyValueList_getTypeForKey(OTF_KeyValueList *list, uint32_t key); /** * Search for key in the given OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key Token that shall be searched in the OTF_KeyValueList. * * @return 0 on success, 1 if key not found or an error occurred. * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_hasKey(OTF_KeyValueList *list, uint32_t key); /** * Remove key from the given OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @param key Token that shall be removed from the OTF_KeyValueList. * * @return 0 on success, 1 if key not found or an error occurred. * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_removeKey(OTF_KeyValueList *list, uint32_t key); /** * Search for a key at the given index position. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * @param index Index position in the OTF_KeyValueList. * * @param key Return value for the found key. * * @return 0 on success, 1 if index not in list * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_getKeyByIndex(OTF_KeyValueList *list, uint32_t index, uint32_t *key); /** * Search for a key-value pair at the given index position. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * @param index Index position in the OTF_KeyValueList. * * @param pair Pointer to the found key-value pair. * * @return 0 on success, 1 if index not in list * * \ingroup keyvalue */ uint8_t OTF_KeyValueList_getPairByIndex(OTF_KeyValueList *list, uint32_t index, OTF_KeyValuePair **pair); /** * Returns the number of elements in the given OTF_KeyValueList instance. * * @param list Pointer to an initialized OTF_KeyValueList object. See * also OTF_KeyValueList_new(). * * @return Number of elements currently in list. * * \ingroup keyvalue */ uint32_t OTF_KeyValueList_getCount(OTF_KeyValueList *list); /** * Convert an integer of 32 bit to a float. * * \ingroup keyvalue */ float OTF_Int32ToFloat(uint32_t value); /** * Convert a float to an integer of 32 bit. * * \ingroup keyvalue */ uint32_t OTF_FloatToInt32(float value); /** * Convert an integer of 64 bit to a double. * * \ingroup keyvalue */ double OTF_Int64ToDouble(uint64_t value); /** * Convert a double to a signed integer of 64 bit. * * \ingroup keyvalue */ uint64_t OTF_DoubleToInt64(double value); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTF_KEYVALUE_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_RStream.c0000644000000000000000000000013212544237152022473 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.147375265 30 ctime=1508162366.221775297 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_RStream.c0000644000175000017500000006041712544237152023672 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch also: patches by Rainer Keller, thanks a lot! */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "OTF_Platform.h" #include "OTF_RStream.h" #include "OTF_Platform.h" #include "OTF_Reader.h" #include "OTF_Parse.h" #include "OTF_Errno.h" #include "OTF_Keywords.h" /** constructor - internal use only */ int OTF_RStream_init( OTF_RStream* rstream ); /** destructor - internal use only */ int OTF_RStream_finish( OTF_RStream* rstream ); /* ************************************************************************** */ int OTF_RStream_init( OTF_RStream* rstream ) { rstream->namestub= NULL; rstream->id= (uint32_t) -1; rstream->defBuffer= NULL; rstream->eventBuffer= NULL; rstream->snapsBuffer= NULL; rstream->statsBuffer= NULL; rstream->markerBuffer= NULL; rstream->buffersizes= 1024*1024; #ifdef HAVE_ZLIB rstream->zbuffersizes= OTF_ZBUFFER_DEFAULTSIZE; #endif /* HAVE_ZLIB */ rstream->manager= NULL; rstream->recordLimit= OTF_READ_MAXRECORDS; return 1; } int OTF_RStream_finish( OTF_RStream* rstream ) { int ret=1; int tmpret; free( rstream->namestub ); rstream->namestub= NULL; rstream->id= (uint32_t) -1; if ( NULL != rstream->defBuffer ) { tmpret= OTF_RBuffer_close( rstream->defBuffer ); ret &= tmpret; if( 0 == tmpret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot close defbuffer.\n", __FUNCTION__, __FILE__, __LINE__ ); } rstream->defBuffer= NULL; } if ( NULL != rstream->eventBuffer ) { tmpret= OTF_RBuffer_close( rstream->eventBuffer ); ret &= tmpret; if( 0 == tmpret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot close event buffer.\n", __FUNCTION__, __FILE__, __LINE__ ); } rstream->eventBuffer= NULL; } if ( NULL != rstream->snapsBuffer ) { tmpret= OTF_RBuffer_close( rstream->snapsBuffer ); ret &= tmpret; if( 0 == tmpret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot close snapshots buffer.\n", __FUNCTION__, __FILE__, __LINE__ ); } rstream->snapsBuffer= NULL; } if ( NULL != rstream->statsBuffer ) { tmpret= OTF_RBuffer_close( rstream->statsBuffer ); ret &= tmpret; if( 0 == tmpret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot close statistics buffer.\n", __FUNCTION__, __FILE__, __LINE__ ); } rstream->statsBuffer= NULL; } if ( NULL != rstream->markerBuffer ) { tmpret= OTF_RBuffer_close( rstream->markerBuffer ); ret &= tmpret; if( 0 == tmpret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot close defbuffer.\n", __FUNCTION__, __FILE__, __LINE__ ); } rstream->markerBuffer= NULL; } return ret; } OTF_RStream* OTF_RStream_open( const char* namestub, uint32_t id, OTF_FileManager* manager ) { OTF_RStream* ret; /* Check the input parameters */ if( NULL == manager ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "manager has not been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } ret= (OTF_RStream*) malloc( sizeof(OTF_RStream) ); if( NULL == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } OTF_RStream_init( ret ); ret->namestub= strdup( namestub ); ret->id= id; ret->manager= manager; /* leave buffers alone, they are allocated on demand */ return ret; } int OTF_RStream_close( OTF_RStream* rstream ) { int ret= 1; if( NULL == rstream ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "rstream has not been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } ret &= OTF_RStream_finish( rstream ); free( rstream ); rstream = NULL; return ret; } OTF_RBuffer* OTF_RStream_getDefBuffer( OTF_RStream* rstream ) { char* filename; if ( NULL == rstream->defBuffer ) { filename= OTF_getFilename( rstream->namestub, rstream->id, OTF_FILETYPE_DEF, 0, NULL ); if( NULL == filename ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_getFilename() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } rstream->defBuffer= OTF_RBuffer_open( filename, rstream->manager ); free( filename ); filename = NULL; if ( NULL == rstream->defBuffer ) { return NULL; } OTF_RBuffer_setSize( rstream->defBuffer, rstream->buffersizes ); #ifdef HAVE_ZLIB OTF_RBuffer_setZBufferSize( rstream->defBuffer, rstream->zbuffersizes ); #endif /* HAVE_ZLIB */ } return rstream->defBuffer; } OTF_RBuffer* OTF_RStream_setDefBuffer( OTF_RStream* rstream, OTF_RBuffer* rbuffer ) { OTF_RBuffer* old= rstream->defBuffer; rstream->defBuffer= rbuffer; /* the following is important because otherwise the buffer sizes stay 0 which leads to weird problems down the road */ OTF_RBuffer_setSize( rstream->defBuffer, rstream->buffersizes ); #ifdef HAVE_ZLIB OTF_RBuffer_setZBufferSize( rstream->defBuffer, rstream->zbuffersizes ); #endif /* HAVE_ZLIB */ return old; } int OTF_RStream_closeDefBuffer( OTF_RStream* rstream ) { int ret= 1; if ( NULL != rstream->defBuffer ) { ret&= OTF_RBuffer_close( rstream->defBuffer ); if( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "closing defbuffer failed.\n", __FUNCTION__, __FILE__, __LINE__ ); } rstream->defBuffer= NULL; } return ret; } OTF_RBuffer* OTF_RStream_getEventBuffer( OTF_RStream* rstream ) { char* filename; if ( NULL == rstream->eventBuffer ) { filename = OTF_getFilename( rstream->namestub, rstream->id, OTF_FILETYPE_EVENT, 0, NULL ); if( NULL == filename ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_getFilename() failed for event file with name stub '%s' and ID %u.\n", __FUNCTION__, __FILE__, __LINE__, rstream->namestub, rstream->id ); return NULL; } rstream->eventBuffer= OTF_RBuffer_open( filename, rstream->manager ); free( filename ); filename = NULL; if ( NULL == rstream->eventBuffer ) { /* *** commented because it can happen when file not exists OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_RBuffer_open() failed for filename '%s'.\n", __FUNCTION__, __FILE__, __LINE__, filename ); */ return NULL; } OTF_RBuffer_setSize( rstream->eventBuffer, rstream->buffersizes ); #ifdef HAVE_ZLIB OTF_RBuffer_setZBufferSize( rstream->eventBuffer, rstream->zbuffersizes ); #endif /* HAVE_ZLIB */ } return rstream->eventBuffer; } int OTF_RStream_closeEventBuffer( OTF_RStream* rstream ) { int ret= 1; if ( NULL != rstream->eventBuffer ) { ret&= OTF_RBuffer_close( rstream->eventBuffer ); if( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "closing event buffer failed.\n", __FUNCTION__, __FILE__, __LINE__ ); } rstream->eventBuffer= NULL; } return ret; } OTF_RBuffer* OTF_RStream_getSnapsBuffer( OTF_RStream* rstream ) { char* filename; if ( NULL == rstream->snapsBuffer ) { filename= OTF_getFilename( rstream->namestub, rstream->id, OTF_FILETYPE_SNAPS, 0, NULL ); if( NULL == filename ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_getFilename() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } rstream->snapsBuffer= OTF_RBuffer_open( filename, rstream->manager ); free( filename ); filename = NULL; if ( NULL == rstream->snapsBuffer ) { return NULL; } OTF_RBuffer_setSize( rstream->snapsBuffer, rstream->buffersizes ); #ifdef HAVE_ZLIB OTF_RBuffer_setZBufferSize( rstream->snapsBuffer, rstream->zbuffersizes ); #endif /* HAVE_ZLIB */ } return rstream->snapsBuffer; } int OTF_RStream_closeSnapsBuffer( OTF_RStream* rstream ) { int ret= 1; if ( NULL != rstream->snapsBuffer ) { ret&= OTF_RBuffer_close( rstream->snapsBuffer ); if( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "closing snapshots buffer failed.\n", __FUNCTION__, __FILE__, __LINE__ ); } rstream->snapsBuffer= NULL; } return ret; } OTF_RBuffer* OTF_RStream_getStatsBuffer( OTF_RStream* rstream ) { char* filename; if ( NULL == rstream->statsBuffer ) { filename= OTF_getFilename( rstream->namestub, rstream->id, OTF_FILETYPE_STATS, 0, NULL ); if( NULL == filename ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_getFilename() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } rstream->statsBuffer= OTF_RBuffer_open( filename, rstream->manager ); free( filename ); filename = NULL; if ( NULL == rstream->statsBuffer ) { return NULL; } OTF_RBuffer_setSize( rstream->statsBuffer, rstream->buffersizes ); #ifdef HAVE_ZLIB OTF_RBuffer_setZBufferSize( rstream->statsBuffer, rstream->zbuffersizes ); #endif /* HAVE_ZLIB */ } return rstream->statsBuffer; } int OTF_RStream_closeStatsBuffer( OTF_RStream* rstream ) { int ret= 1; if ( NULL != rstream->statsBuffer ) { ret&= OTF_RBuffer_close( rstream->statsBuffer ); if( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "closing statistics buffer failed.\n", __FUNCTION__, __FILE__, __LINE__ ); } rstream->statsBuffer= NULL; } return ret; } OTF_RBuffer* OTF_RStream_getMarkerBuffer( OTF_RStream* rstream ) { char* filename; if ( NULL == rstream->markerBuffer ) { filename= OTF_getFilename( rstream->namestub, rstream->id, OTF_FILETYPE_MARKER, 0, NULL ); if( NULL == filename ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_getFilename() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } rstream->markerBuffer= OTF_RBuffer_open( filename, rstream->manager ); free( filename ); filename = NULL; if ( NULL == rstream->markerBuffer ) { return NULL; } OTF_RBuffer_setSize( rstream->markerBuffer, rstream->buffersizes ); #ifdef HAVE_ZLIB OTF_RBuffer_setZBufferSize( rstream->markerBuffer, rstream->zbuffersizes ); #endif /* HAVE_ZLIB */ } return rstream->markerBuffer; } int OTF_RStream_closeMarkerBuffer( OTF_RStream* rstream ) { int ret= 1; if ( NULL != rstream->markerBuffer ) { ret&= OTF_RBuffer_close( rstream->markerBuffer ); if( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "closing defbuffer failed.\n", __FUNCTION__, __FILE__, __LINE__ ); } rstream->markerBuffer= NULL; } return ret; } void OTF_RStream_setBufferSizes( OTF_RStream* rstream, uint32_t size ) { if ( 50 > size ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "intended buffer size %u is too small, rejected.\n", __FUNCTION__, __FILE__, __LINE__, size ); return; } else if ( 500 > size ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "buffer size %u is very small, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } else if ( 10 * 1024 *1024 < size ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "buffer size %u is rather big, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } rstream->buffersizes= size; } uint32_t OTF_RStream_getBufferSizes(OTF_RStream* rstream) { return rstream->buffersizes; } void OTF_RStream_setZBufferSizes( OTF_RStream* rstream, uint32_t size ) { #ifdef HAVE_ZLIB if ( 32 > size ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "intended zbuffer size %u is too small, rejected.\n", __FUNCTION__, __FILE__, __LINE__, size ); return; } else if ( 512 > size ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "zbuffer size %u is very small, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } else if ( 10 * 1024 *1024 < size ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "zbuffer size %u is rather big, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } rstream->zbuffersizes= size; #endif /* HAVE_ZLIB */ } uint32_t OTF_RStream_getZBufferSizes(OTF_RStream* rstream) { #ifdef HAVE_ZLIB return rstream->zbuffersizes; #else /* HAVE_ZLIB */ return 0; #endif /* HAVE_ZLIB */ } void OTF_RStream_setRecordLimit( OTF_RStream* rstream, uint64_t limit ) { if( limit == OTF_READ_ERROR ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "limit cannot be set to %llu. Reset to OTF_READ_MAXRECORDS.\n", __FUNCTION__, __FILE__, __LINE__, (long long unsigned) limit ); limit= OTF_READ_MAXRECORDS; } rstream->recordLimit= limit; } uint64_t OTF_RStream_getRecordLimit( OTF_RStream* rstream ) { return rstream->recordLimit; } uint64_t OTF_RStream_readDefinitions( OTF_RStream* rstream, OTF_HandlerArray* handlers ) { uint64_t recordcount= 0; int ret; char next_char = '\0'; /* initialized? */ if ( NULL == rstream->defBuffer ) { /* init */ rstream->defBuffer= OTF_RStream_getDefBuffer( rstream ); if ( NULL == rstream->defBuffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "the stream has no def buffer.\n", __FUNCTION__, __FILE__, __LINE__ ); /* there is no def buffer available for this stream */ return OTF_READ_ERROR; } } while ( NULL != OTF_RBuffer_getRecord( rstream->defBuffer ) ) { if ( recordcount >= rstream->recordLimit ) { /* record count limit reached, return */ return recordcount; } /* remember next record type, if it will be a none KEYVALUE record, dont't account it in recordcount */ next_char = *(rstream->defBuffer->buffer + rstream->defBuffer->pos); ret= OTF_Reader_parseDefRecord( rstream->defBuffer, handlers, rstream->id ); if ( 0 == ret ) { /* maybe later an errorhandler gives the record to the user */ return OTF_READ_ERROR; } /* Now reset the KeyValue list, if we consumed a none KEYVALUE record */ if ( next_char != OTF_KEYWORD_F_KEYVALUE_PREFIX /* 'K' */ ) { OTF_KeyValueList_reset(rstream->defBuffer->list); recordcount++; } } return recordcount; } uint64_t OTF_RStream_readEvents( OTF_RStream* rstream, OTF_HandlerArray* handlers ) { uint64_t recordcount= 0; int ret; # ifdef OTF_DEBUG uint64_t currenttime= 0; uint64_t oldtime= 0; # endif char next_char = '\0'; /* initialized? */ if ( NULL == rstream->eventBuffer ) { /* init */ rstream->eventBuffer= OTF_RStream_getEventBuffer( rstream ); if( NULL == rstream->eventBuffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "the stream has no event buffer.\n", __FUNCTION__, __FILE__, __LINE__ ); return OTF_READ_ERROR; } /* jump to start time - update buffer-firstTime, lastTime, curTime */ OTF_RBuffer_searchTime( rstream->eventBuffer, 0 ); } while ( NULL != OTF_RBuffer_getRecord( rstream->eventBuffer ) ) { if ( recordcount >= rstream->recordLimit ) { /* record count limit reached, return */ return recordcount; } /* debug check */ # ifdef OTF_DEBUG oldtime= currenttime; /* inlined OTF_RBuffer_getCurrentTime() */ currenttime= rstream->eventBuffer->time; if ( oldtime > currenttime ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Time does decrease!!! %llu < %llu.\n", __FUNCTION__, __FILE__, __LINE__, (unsigned long long) currenttime, (unsigned long long) oldtime ); return OTF_READ_ERROR; } # endif /* remember next record type, if it will be a none KEYVALUE record, dont't account it in recordcount */ next_char = *(rstream->eventBuffer->buffer + rstream->eventBuffer->pos); ret= OTF_Reader_parseEventRecord( rstream->eventBuffer, handlers ); if ( 0 == ret ) { /* maybe later an errorhandler gives the record to the user */ return OTF_READ_ERROR; } /* Now reset the KeyValue list, if we consumed a none KEYVALUE record */ if ( next_char != OTF_KEYWORD_F_KEYVALUE_PREFIX /* 'K' */ ) { OTF_KeyValueList_reset(rstream->eventBuffer->list); recordcount++; } } return recordcount; } uint64_t OTF_RStream_readSnapshots( OTF_RStream* rstream, OTF_HandlerArray* handlers ) { uint64_t recordcount= 0; int ret; # ifdef OTF_DEBUG uint64_t currenttime= 0; uint64_t oldtime= 0; # endif char next_char = '\0'; /* initialized? */ if ( NULL == rstream->snapsBuffer ) { /* init */ rstream->snapsBuffer= OTF_RStream_getSnapsBuffer( rstream ); if( NULL == rstream->snapsBuffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "the stream has no snapshots buffer.\n", __FUNCTION__, __FILE__, __LINE__ ); return OTF_READ_ERROR; } /* jump to start time - update buffer-firstTime, lastTime, curTime */ OTF_RBuffer_searchTime( rstream->snapsBuffer, 0 ); } while ( NULL != OTF_RBuffer_getRecord( rstream->snapsBuffer ) ) { if ( recordcount >= rstream->recordLimit ) { /* record count limit reached, return */ return recordcount; } /* debug check */ # ifdef OTF_DEBUG oldtime= currenttime; /* inlined OTF_RBuffer_getCurrentTime() */ currenttime= rstream->snapsBuffer->time; if ( oldtime > currenttime ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Time does decrease!!! %llu < %llu.\n", __FUNCTION__, __FILE__, __LINE__, (unsigned long long) currenttime, (unsigned long long) oldtime ); return OTF_READ_ERROR; } # endif /* remember next record type, if it will be a none KEYVALUE record, dont't account it in recordcount */ next_char = *(rstream->snapsBuffer->buffer + rstream->snapsBuffer->pos); ret= OTF_Reader_parseSnapshotsRecord( rstream->snapsBuffer, handlers ); if ( 0 == ret ) { /* maybe later an errorhandler gives the record to the user */ return OTF_READ_ERROR; } /* Now reset the KeyValue list, if we consumed a none KEYVALUE record */ if ( next_char != OTF_KEYWORD_F_KEYVALUE_PREFIX /* 'K' */ ) { OTF_KeyValueList_reset(rstream->snapsBuffer->list); recordcount++; } } return recordcount; } uint64_t OTF_RStream_readStatistics( OTF_RStream* rstream, OTF_HandlerArray* handlers ) { uint64_t recordcount= 0; int ret; # ifdef OTF_DEBUG uint64_t currenttime= 0; uint64_t oldtime= 0; # endif char next_char = '\0'; /* initialized? */ if ( NULL == rstream->statsBuffer ) { /* init */ rstream->statsBuffer= OTF_RStream_getStatsBuffer( rstream ); if( NULL == rstream->statsBuffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "the stream has no statistics buffer.\n", __FUNCTION__, __FILE__, __LINE__ ); return OTF_READ_ERROR; } /* jump to start time - update buffer-firstTime, lastTime, curTime */ OTF_RBuffer_searchTime( rstream->statsBuffer, 0 ); } while ( NULL != OTF_RBuffer_getRecord( rstream->statsBuffer ) ) { if ( recordcount >= rstream->recordLimit ) { /* record count limit reached, return */ return recordcount; } /* debug check */ # ifdef OTF_DEBUG oldtime= currenttime; /* inlined OTF_RBuffer_getCurrentTime() */ currenttime= rstream->statsBuffer->time; if ( oldtime > currenttime ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Time does decrease!!! %llu < %llu.\n", __FUNCTION__, __FILE__, __LINE__, (unsigned long long) currenttime, (unsigned long long) oldtime ); return OTF_READ_ERROR; } # endif /* remember next record type, if it will be a none KEYVALUE record, dont't account it in recordcount */ next_char = *(rstream->statsBuffer->buffer + rstream->statsBuffer->pos); ret= OTF_Reader_parseStatisticsRecord( rstream->statsBuffer, handlers ); if ( 0 == ret ) { /* maybe later an errorhandler gives the record to the user */ return OTF_READ_ERROR; } /* Now reset the KeyValue list, if we consumed a none KEYVALUE record */ if ( next_char != OTF_KEYWORD_F_KEYVALUE_PREFIX /* 'K' */ ) { OTF_KeyValueList_reset(rstream->statsBuffer->list); recordcount++; } } return recordcount; } uint64_t OTF_RStream_readMarker( OTF_RStream* rstream, OTF_HandlerArray* handlers ) { uint64_t recordcount= 0; int ret; char next_char = '\0'; /* initialized? */ if ( NULL == rstream->markerBuffer ) { /* init */ rstream->markerBuffer= OTF_RStream_getMarkerBuffer( rstream ); if ( NULL == rstream->markerBuffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "the stream has no marker buffer.\n", __FUNCTION__, __FILE__, __LINE__ ); /* there is no def buffer available for this stream */ return OTF_READ_ERROR; } } while ( NULL != OTF_RBuffer_getRecord( rstream->markerBuffer ) ) { if ( recordcount >= rstream->recordLimit ) { /* record count limit reached, return */ return recordcount; } /* remember next record type, if it will be a none KEYVALUE record, dont't account it in recordcount */ next_char = *(rstream->markerBuffer->buffer + rstream->markerBuffer->pos); ret= OTF_Reader_parseMarkerRecord( rstream->markerBuffer, handlers, rstream->id ); if ( 0 == ret ) { /* maybe later an errorhandler gives the record to the user */ return OTF_READ_ERROR; } /* Now reset the KeyValue list, if we consumed a none KEYVALUE record */ if ( next_char != OTF_KEYWORD_F_KEYVALUE_PREFIX /* 'K' */ ) { OTF_KeyValueList_reset(rstream->markerBuffer->list); recordcount++; } } return recordcount; } uint8_t OTF_RStream_eventProgress( OTF_RStream* rstream, uint64_t* minimum, uint64_t* current, uint64_t* maximum ) { return OTF_RStream_eventTimeProgress( rstream, minimum, current, maximum ); } uint8_t OTF_RStream_snapshotProgress( OTF_RStream* rstream, uint64_t* minimum, uint64_t* current, uint64_t* maximum ) { return OTF_RStream_snapshotTimeProgress( rstream, minimum, current, maximum ); } uint8_t OTF_RStream_statisticProgress( OTF_RStream* rstream, uint64_t* minimum, uint64_t* current, uint64_t* maximum ) { return OTF_RStream_statisticTimeProgress( rstream, minimum, current, maximum ); } uint8_t OTF_RStream_eventTimeProgress( OTF_RStream* rstream, uint64_t* minimum, uint64_t* current, uint64_t* maximum ) { if ( NULL == rstream->eventBuffer || rstream->eventBuffer->time < rstream->eventBuffer->firstTime || rstream->eventBuffer->time > rstream->eventBuffer->lastTime ) { return 0; } *minimum= rstream->eventBuffer->firstTime; *current= rstream->eventBuffer->time; *maximum= rstream->eventBuffer->lastTime; return 1; } uint8_t OTF_RStream_snapshotTimeProgress( OTF_RStream* rstream, uint64_t* minimum, uint64_t* current, uint64_t* maximum ) { if ( NULL == rstream->snapsBuffer || rstream->snapsBuffer->time < rstream->snapsBuffer->firstTime || rstream->snapsBuffer->time > rstream->snapsBuffer->lastTime ) { return 0; } *minimum= rstream->snapsBuffer->firstTime; *current= rstream->snapsBuffer->time; *maximum= rstream->snapsBuffer->lastTime; return 1; } uint8_t OTF_RStream_statisticTimeProgress( OTF_RStream* rstream, uint64_t* minimum, uint64_t* current, uint64_t* maximum ) { if ( NULL == rstream->statsBuffer || rstream->statsBuffer->time < rstream->statsBuffer->firstTime || rstream->statsBuffer->time > rstream->statsBuffer->lastTime ) { return 0; } *minimum= rstream->statsBuffer->firstTime; *current= rstream->statsBuffer->time; *maximum= rstream->statsBuffer->lastTime; return 1; } uint8_t OTF_RStream_eventBytesProgress( OTF_RStream* rstream, uint64_t* minimum, uint64_t* current, uint64_t* maximum ) { *minimum= 0; *maximum= OTF_RBuffer_getFileSize( rstream->eventBuffer ); *current= OTF_RBuffer_getFilePos( rstream->eventBuffer ); if( *current > *maximum ) { *current= *maximum; } return 1; } uint8_t OTF_RStream_snapshotBytesProgress( OTF_RStream* rstream, uint64_t* minimum, uint64_t* current, uint64_t* maximum ) { *minimum= 0; *maximum= OTF_RBuffer_getFileSize( rstream->snapsBuffer ); *current= OTF_RBuffer_getFilePos( rstream->snapsBuffer ); if( *current > *maximum ) { *current= *maximum; } return 1; } uint8_t OTF_RStream_statisticBytesProgress( OTF_RStream* rstream, uint64_t* minimum, uint64_t* current, uint64_t* maximum ) { *minimum= 0; *maximum= OTF_RBuffer_getFileSize( rstream->statsBuffer ); *current= OTF_RBuffer_getFilePos( rstream->statsBuffer ); if( *current > *maximum ) { *current= *maximum; } return 1; } eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_Platform.h0000644000000000000000000000013112544237152022706 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.143375166 29 ctime=1508162366.20177355 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_Platform.h0000644000175000017500000000227212544237152024101 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_Platform.h * * @brief Deals with platform dependend issues. * * \ingroup internal */ /* THIS HEADER SHOULD NEVER BE INCLUDED INTO OTHER HEADERS OF THE OTF LIBRARY AND HAS TO BE INCLUDED INTO ALL .C-FILES OF THE OTF LIBARY */ #ifndef OTF_PLATFORM_H #define OTF_PLATFORM_H #if defined(_WIN32) /* windows */ # include "OTF_Platform_win.h" #else /* unix */ # include "OTF_Platform_unix.h" #endif /* windows/unix */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* if you know (for sure) of more compilers supporting __FUNCTION__, then add them here */ #if defined(__GNUC__) /* gnu */ #elif defined(_MSC_VER) /* ms vs */ #elif defined(__xlC__) /* ibm xlc */ #else /* set __FUNCTION__ to a dummy for compilers not supporting this macro */ # define __FUNCTION__ "" #endif #ifndef __FILE__ # define __FILE__ "" #endif #ifndef __LINE__ # define __LINE__ 0 #endif char* OTF_basename( char* path ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTF_PLATFORM_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_Version.h.in0000644000000000000000000000013012544237152023153 xustar0030 mtime=1435582058.535899952 30 atime=1508162279.694463724 28 ctime=1508162366.2057739 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_Version.h.in0000644000175000017500000000123112544237152024341 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_Version.h * * @brief Provides version information. * * \ingroup misc */ #ifndef OTF_VERSION_H #define OTF_VERSION_H #define OTF_VERSION_MAJOR @OTF_VERSION_MAJOR@ #define OTF_VERSION_MINOR @OTF_VERSION_MINOR@ #define OTF_VERSION_SUB @OTF_VERSION_SUB@ #define OTF_VERSION_STRING "@OTF_VERSION_STRING@" /** * Because of a typo, we need to keep this for backward compatibility * \ingroup internal */ #define OTF_VERSION_MAYOR OTF_VERSION_MAJOR #endif /* OTF_VERSION_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_Writer.h0000644000000000000000000000013212544237152022377 xustar0030 mtime=1435582058.539899952 30 atime=1508138854.223377164 30 ctime=1508162366.197773201 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_Writer.h0000644000175000017500000026437612544237152023610 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_Writer.h * * @brief Transparently writes OTF traces which consist of multiple streams. * * \ingroup writer */ /** \defgroup writer Writer Interface * * This interface should be used whenever a trace file is to be written as a * whole. Therefore, an initial call to the OTF_Writer_open() function * allows to specify a number of streams which are going to be used to * automatically partition the recorded event data. OTF than takes over the * duty of distributing the data on multiple files. * * \section writer_example A simple Example * * \code * #include * #include "otf.h" * * int main( int argc, char** argv ) { * \endcode * * Declare a file manager and a writer. * \code * OTF_FileManager* manager; * OTF_Writer* writer; * \endcode * * Initialize the file manager. Open at most 100 OS files. * \code * manager= OTF_FileManager_open( 100 ); * assert( manager ); * \endcode * * Initialize the writer. Open file "test", writing one stream. * \code * writer = OTF_Writer_open( "test", 1, manager ); * assert( writer ); * \endcode * * Write some important Definition Records. * Have a look at the specific functions to see what the parameters mean. * \code * OTF_Writer_writeDefTimerResolution( writer, 0, 1000 ); * OTF_Writer_writeDefProcess( writer, 0, 1, "proc one", 0 ); * OTF_Writer_writeDefFunctionGroup( writer, 0, 1000, "all functions" ); * OTF_Writer_writeDefFunction( writer, 0, 1, "main", 1000, 0 ); * \endcode * * * Write an enter and a leave record. * time = 10000, 20000 * process = 1 * function = 1 * Sourcecode location doesn't matter, so it's zero. * \code * OTF_Writer_writeEnter( writer, 10000, 1, 1, 0 ); * OTF_Writer_writeLeave( writer, 20000, 1, 1, 0 ); * \endcode * * Clean up before exiting the program. * \code * OTF_Writer_close( writer ); * OTF_FileManager_close( manager ); * * return 0; * } * \endcode * * Compile this using $ gcc -o test test.c `otfconfig --libs`. * */ #ifndef OTF_WRITER_H #define OTF_WRITER_H #include "OTF_MasterControl.h" #include "OTF_FileManager.h" #include "OTF_WBuffer.h" #include "OTF_WStream.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** writer object \ingroup writer */ typedef struct struct_OTF_Writer OTF_Writer; /* *** public member functions *** */ /** * Create a new OTF_Writer instance with a given number of automatic streams. * * Setting the number of streams to 0 causes the OTF_Writer object to create a * separate stream for each process. Important! Explicit calls to * OTF_Writer_assignProcess() can lead to an overall number of streams which * exceeds the initial number of streams in this call. * OTF can reduce its file handle usage to a given number. Therefore, an * initialized file manager instance is needed as parameter. * See OTF_FileManager for further details. * * @param fileNamePrefix File name prefix which is going to be used by * all sub-files which belong to the trace. * @param numberOfStreams Initial number of independent data streams to * be generated. * @param fileManager File handle manager. * * * @return Initialized OTF_Writer instance or 0 if a failure * occurred. * * \ingroup writer */ OTF_Writer* OTF_Writer_open( const char* fileNamePrefix, uint32_t numberOfStreams, OTF_FileManager* fileManager ); /** * Close an OTF_Writer instance and all its related files. * * @param writer Pointer to an initialized OTF_Writer object. See * also OTF_Writer_open(). * * @return 1 if instance was closed successfully and 0 otherwise. * * \ingroup writer */ int OTF_Writer_close( OTF_Writer* writer ); /** * Close all streams that are open in this writer instance. * * @param writer Pointer to an initialized OTF_Writer object. See * also OTF_Writer_open(). * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_closeAllStreams( OTF_Writer* writer ); /** * Set the standard compression method for all buffers managed by this writer * * @param writer Pointer to an initialized OTF_Writer object. See * also OTF_Writer_open(). * * @param compression compression level to apply to all following streams * 0-9, where 0 means no compression is applied, and 9 is * the highest level of compression. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_setCompression( OTF_Writer* writer, OTF_FileCompression compression ); /** * Return the standard compression method for all buffers managed by this writer * * @param writer Pointer to an initialized OTF_Writer object. See * also OTF_Writer_open(). * * @return Standard compression level for all buffers managed by * this writer. * * \ingroup writer */ OTF_FileCompression OTF_Writer_getCompression( OTF_Writer* writer ); /** * Set the default buffer size for all buffers managed by this Writer. * This is only effective for future buffers and will not change already * allocated buffers. Those can be changed with the buffers directly. * * @param writer Pointer to an initialized OTF_Writer object. See * also OTF_Writer_open(). * * @param size Intended buffer size. * * \ingroup writer */ void OTF_Writer_setBufferSizes( OTF_Writer* writer, uint32_t size ); /** * Get the default buffer size for all buffers managed by this Writer. * * @param writer Pointer to an initialized OTF_Writer object. See * also OTF_Writer_open(). * * @return Default buffer size for all buffers managed by this Writer. * * \ingroup writer */ uint32_t OTF_Writer_getBufferSizes( OTF_Writer* writer ); /** * Set the default zbuffer size for all buffers managed by this Reader. * This is only effective for future files and will not change already * allocated zbuffers. Those can be changed with the files directly. * * @param writer Pointer to an initialized OTF_Writer object. See * also OTF_Writer_open(). * * @param size Intended zbuffer size. * * \ingroup writer */ void OTF_Writer_setZBufferSizes( OTF_Writer* writer, uint32_t size ); /** * Get the default zbuffer size. * * @param writer Pointer to an initialized OTF_Writer object. See * also OTF_Writer_open(). * * @return zbuffer size. * * \ingroup writer */ uint32_t OTF_Writer_getZBufferSizes( OTF_Writer* writer ); /** * Set the default ouput format. The format is applied to all streams opened by * the writer. * * @param writer Pointer to an initialized OTF_Writer object. See * also OTF_Writer_open(). * * @param format Intended output format (OTF_WSTREAM_FORMAT_{LONG,SHORT}). * * \ingroup writer */ void OTF_Writer_setFormat( OTF_Writer* writer, uint32_t format ); /** * Get the default output format of all streams managed by this writer. * * @param writer Pointer to an initialized OTF_Writer object. See * also OTF_Writer_open(). * * @return Default output format. * * \ingroup writer */ uint32_t OTF_Writer_getFormat( OTF_Writer* writer ); /** * Explicitly assign a given process to a specific stream. * * Mind that 0 is not a valid stream or process identifier but a reserved * value. By default, processes are automatically assigned to streams. * Therefore, this call is optional. * * @param writer Pointer to an initialized OTF_Writer object. See * also OTF_Writer_open(). * @param process Process identifier. See also OTF_Writer_writeDefProcess(). * @param stream Target stream identifier with * 0 < stream <= number of streams as defined in * OTF_Writer_open(). * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ uint32_t OTF_Writer_assignProcess( OTF_Writer* writer, uint32_t process, uint32_t stream ); /** * Get a pointer to the master control object of the given writer instance. * * @param writer Pointer to an initialized OTF_Writer object. See * also OTF_Writer_open(). * * @return Pointer to a master control object. See OTF_MasterControl. * * \ingroup writer */ OTF_MasterControl* OTF_Writer_getMasterControl( OTF_Writer* writer ); /** * Set an alternative master control object. Use this only right after * initialization but never after having written some records already! * * @param writer Pointer to an initialized OTF_Writer object. See * also OTF_Writer_open(). * @param mc new master control object * * * \ingroup writer */ void OTF_Writer_setMasterControl( OTF_Writer* writer, OTF_MasterControl* mc ); /** For a process with id 'processId' return a stream id of the stream the data is to be written to. If no mapping has been set so far it is defined in a way such that it is added to the stream with the least processes. \ingroup writer */ uint32_t OTF_Writer_mapProcess( OTF_Writer* writer, uint32_t processId ); /** Return the stream with the given stream id. If there is no such stream yet create one and append it to 'streams'. \ingroup writer */ OTF_WStream* OTF_Writer_getStream( OTF_Writer* writer, uint32_t stream ); /* Methods for writing public definition records ************************** */ /** * Write a comment record. * * @param writer Initialized OTF_Writer instance. * @param stream Target stream identifier with * 0 < stream <= number of streams as defined in * OTF_Writer_open(). * @param comment Arbitrary comment string. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefinitionComment( OTF_Writer* writer, uint32_t stream, const char* comment ); /** * Write a comment record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeDefinitionComment() * \ingroup writer */ int OTF_Writer_writeDefinitionCommentKV( OTF_Writer* writer, uint32_t stream, const char* comment, OTF_KeyValueList* list ); /** * Write the timer resolution definition record. All timed event records * will be interpreted according to this definition. By default, a timer * resultion of 1 us i.e. 1,000,000 clock ticks is assumed. * * @param writer Pointer to an initialized OTF_Writer object. See * also OTF_Writer_open(). * @param stream Target stream identifier with * 0 < stream <= number of streams as defined in * OTF_Writer_open(). * @param ticksPerSecond Clock ticks per second of the timer. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefTimerResolution( OTF_Writer* writer, uint32_t stream, uint64_t ticksPerSecond ); /** * Write the timer resolution definition record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeTimerResolution() * \ingroup writer */ int OTF_Writer_writeDefTimerResolutionKV( OTF_Writer* writer, uint32_t stream, uint64_t ticksPerSecond, OTF_KeyValueList* list ); /** * Write a process definition record. * * @param writer Pointer to an initialized OTF_Writer object. See * also OTF_Writer_open(). * @param stream Target stream identifier with * 0 < stream <= number of streams as defined in * OTF_Writer_open(). * @param process Arbitrary but unique process identifier > 0. * @param name Name of the process e.g. "Process X". * @param parent Previously declared parent process identifier or 0 if * process has no parent. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefProcess( OTF_Writer* writer, uint32_t stream, uint32_t process, const char* name, uint32_t parent ); /** * Write a process definition record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeDefProcess() * \ingroup writer */ int OTF_Writer_writeDefProcessKV( OTF_Writer* writer, uint32_t stream, uint32_t process, const char* name, uint32_t parent, OTF_KeyValueList* list ); /** * Write a process group definition record. * * OTF supports groups of processes. Their main objective is to classify * processes depending on arbitrary characteristics. Processes can reside * in multiple groups. This record type is optional. * * @param writer Pointer to an initialized OTF_Writer object. See * also OTF_Writer_open(). * @param stream Target stream identifier with * 0 < stream <= number of streams as defined in * OTF_Writer_open(). * @param procGroup Arbitrary but unique process group identifier > 0. * @param name Name of the process group e.g. "Well Balanced". * @param numberOfProcs The number of processes in the process group. * @param procs Vector of process identifiers or previously defined * process group identifiers as defined with * OTF_Writer_writeDefProcess() resp. * OTF_Writer_writeDefProcessGroup. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefProcessGroup( OTF_Writer* writer, uint32_t stream, uint32_t procGroup, const char* name, uint32_t numberOfProcs, const uint32_t* procs ); /** * Write a process group definition record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeDefProcessGroup() * \ingroup writer */ int OTF_Writer_writeDefProcessGroupKV( OTF_Writer* writer, uint32_t stream, uint32_t procGroup, const char* name, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList* list ); /** * Write an attribute list definition record. * * Defines a list of attributes that is assigned to a unique token. * * @param writer Pointer to an initialized OTF_Writer object. See * also OTF_Writer_open(). * @param stream Target stream identifier with * 0 < stream <= number of streams as defined in * OTF_Writer_open(). * @param attr_token Arbitrary but unique attribute list identifier > 0. * @param num Number of elements in the attribute list array. * @param array An array of different attributes with type of OTF_ATTR_TYPE(). * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefAttributeList( OTF_Writer* writer, uint32_t stream, uint32_t attr_token, uint32_t num, OTF_ATTR_TYPE* array ); /** * Write an attribute list definition record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeDefAttributeList() * \ingroup writer */ int OTF_Writer_writeDefAttributeListKV( OTF_Writer* writer, uint32_t stream, uint32_t attr_token, uint32_t num, OTF_ATTR_TYPE* array, OTF_KeyValueList* list ); /** * Write a process or group attributes definition record. * * @param writer Pointer to an initialized OTF_Writer object. See * also OTF_Writer_open(). * @param stream Target stream identifier with * 0 < stream <= number of streams as defined in * OTF_Writer_open(). * @param proc_token Arbitrary but unique process or process group identifier > 0. * @param attr_token A unique token that was defined with OTF_Writer_writeDefAttributeList(). * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefProcessOrGroupAttributes( OTF_Writer* writer, uint32_t stream, uint32_t proc_token, uint32_t attr_token ); /** * Write a process or group attributes definition record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeDefProcessOrGroupAttributes() * \ingroup writer */ int OTF_Writer_writeDefProcessOrGroupAttributesKV( OTF_Writer* writer, uint32_t stream, uint32_t proc_token, uint32_t attr_token, OTF_KeyValueList* list ); /** * Write a function definition record. * * Defines a function of the given name. Functions can optionally belong to a * certain function group to be defined with the * OTF_Writer_writeDefFunctionGroup() call. A source code reference can * be added to the definition aswell. * * @param writer Pointer to an initialized OTF_Writer object. See * also OTF_Writer_open(). * @param stream Target stream identifier with * 0 < stream <= number of streams as defined in * OTF_Writer_open(). * @param func Arbitrary but unique function identifier > 0. * @param name Name of the function e.g. "DoSomething". * @param funcGroup A function group identifier preliminary defined with * OTF_Writer_writeDefFunctionGroup() or 0 for no * function group assignment. * @param source Reference to the function's source code location * preliminary defined with OTF_Writer_writeDefScl() or * 0 for no source code location assignment. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefFunction( OTF_Writer* writer, uint32_t stream, uint32_t func, const char* name, uint32_t funcGroup, uint32_t source ); /** * Write a function definition record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeDefFunction() * \ingroup writer */ int OTF_Writer_writeDefFunctionKV( OTF_Writer* writer, uint32_t stream, uint32_t func, const char* name, uint32_t funcGroup, uint32_t source, OTF_KeyValueList* list ); /** * Write a function group definition record. * * @param writer Pointer to an initialized OTF_Writer object. See * also OTF_Writer_open(). * @param stream Target stream identifier with * 0 < stream <= number of streams as defined in * OTF_Writer_open(). * @param funcGroup An arbitrary but unique function group identifier > 0. * @param name Name of the function group e.g. "Computation". * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefFunctionGroup( OTF_Writer* writer, uint32_t stream, uint32_t funcGroup, const char* name ); /** * Write a function group definition record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeDefFunctionGroup() * \ingroup writer */ int OTF_Writer_writeDefFunctionGroupKV( OTF_Writer* writer, uint32_t stream, uint32_t funcGroup, const char* name, OTF_KeyValueList* list ); /** * Write a collective operation definition record. * * @param writer Initialized OTF_Writer instance. * @param stream Target stream identifier with * 0 < stream <= number of streams as defined in * OTF_Writer_open(). * @param collOp An arbitrary but unique collective op. identifier > 0. * @param name Name of the collective operation e.g. "MPI_Bcast". * @param type One of the five supported collective classes: * OTF_COLLECTIVE_TYPE_UNKNOWN (default), * OTF_COLLECTIVE_TYPE_BARRIER, * OTF_COLLECTIVE_TYPE_ONE2ALL, * OTF_COLLECTIVE_TYPE_ALL2ONE, * OTF_COLLECTIVE_TYPE_ALL2ALL. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefCollectiveOperation( OTF_Writer* writer, uint32_t stream, uint32_t collOp, const char* name, uint32_t type ); /** * Write a collective operation definition record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeDefCollectiveOperation() * \ingroup writer */ int OTF_Writer_writeDefCollectiveOperationKV( OTF_Writer* writer, uint32_t stream, uint32_t collOp, const char* name, uint32_t type, OTF_KeyValueList* list ); /** * Write a counter definition record. * * @param writer Initialized OTF_Writer instance. * @param stream Target stream identifier with * 0 < stream <= number of streams as defined in * OTF_Writer_open(). * @param counter An arbitrary but unique counter identifier. * @param name Name of the counter e.g. "Cache Misses". * @param properties A combination of a type and scope counter property. * OTF_COUNTER_TYPE_ACC (default) represents a counter * with monotonously increasing values e.g. a FLOP * counter. OTF_COUNTER_TYPE_ABS on the other hand * defines a counter with alternating absolute values e.g. * the memory usage of a process. The following counter * measurement scopes are supported: * OTF_COUNTER_SCOPE_START (default) always refers to the * start of the process, OTF_COUNTER_SCOPE_POINT refers * to exactly this moment in time, OTF_COUNTER_SCOPE_LAST * relates to the previous measurement, and * OTF_COUNTER_SCOPE_NEXT to the next measurement. * Examples: OTF_COUNTER_TYPE_ACC + * OTF_COUNTER_SCOPE_START should be used for most * standard hardware (PAPI) counters. * OTF_COUNTER_TYPE_ABS + OTF_COUNTER_SCOPE_POINT could * be used to record information 'spikes'. * OTF_COUNTER_TYPE_ABS + OTF_COUNTER_SCOPE_NEXT works * for memory allocation recording. * @param counterGroup A previously defined counter group identifier or 0 * for no group. * @param unit Unit of the counter e.g. "#" for "number of..." or 0 * for no unit. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefCounter( OTF_Writer* writer, uint32_t stream, uint32_t counter, const char* name, uint32_t properties, uint32_t counterGroup, const char* unit ); /** * Write a counter definition record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeDefCounter() * \ingroup writer */ int OTF_Writer_writeDefCounterKV( OTF_Writer* writer, uint32_t stream, uint32_t counter, const char* name, uint32_t properties, uint32_t counterGroup, const char* unit, OTF_KeyValueList* list ); /** * Write a counter group definition record. * * @param writer Initialized OTF_Writer instance. * @param stream Target stream identifier with * 0 < stream <= number of streams as defined in * OTF_Writer_open(). * @param counterGroup An arbitrary but unique counter group identifier. * @param name Counter group name. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefCounterGroup( OTF_Writer* writer, uint32_t stream, uint32_t counterGroup, const char* name ); /** * Write a counter group definition record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeDefCounterGroup() * \ingroup writer */ int OTF_Writer_writeDefCounterGroupKV( OTF_Writer* writer, uint32_t stream, uint32_t counterGroup, const char* name, OTF_KeyValueList* list ); /** * Write a source code location (SCL) record. * * @param writer Initialized OTF_Writer instance. * @param stream Target stream identifier with * 0 < stream <= number of streams as defined in * OTF_Writer_open(). * @param source Arbitrary but unique source code location * identifier > 0. * @param sourceFile Previously defined source file identifier. See * OTF_Writer_writeDefSclFile(). * @param line Line number. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefScl( OTF_Writer* writer, uint32_t stream, uint32_t source, uint32_t sourceFile, uint32_t line ); /** * Write a source code location (SCL) record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeDefScl() * \ingroup writer */ int OTF_Writer_writeDefSclKV( OTF_Writer* writer, uint32_t stream, uint32_t source, uint32_t sourceFile, uint32_t line, OTF_KeyValueList* list ); /** * Write a source code location (SCL) file record. * * @param writer Initialized OTF_Writer instance. * @param stream Target stream identifier with * 0 < stream <= number of streams as defined in * OTF_Writer_open(). * @param sourceFile Arbitrary but unique source code location * identifier != 0. * @param name File name. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefSclFile( OTF_Writer* writer, uint32_t stream, uint32_t sourceFile, const char* name ); /** * Write a source code location (SCL) file record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeDefSclFile() * \ingroup writer */ int OTF_Writer_writeDefSclFileKV( OTF_Writer* writer, uint32_t stream, uint32_t sourceFile, const char* name, OTF_KeyValueList* list ); /** * depricated. The Otf-Version-record is generated automatically at beginning of * tracing in the global definiton stream. * * \ingroup writer */ int OTF_Writer_writeOtfVersion( OTF_Writer* writer, uint32_t stream ); /** * Write a creator record. * * @param writer Initialized OTF_Writer instance. * @param stream Target stream identifier with * 0 < stream <= number of streams as defined in * OTF_Writer_open(). * @param creator String which identifies the creator of the * file e.g. "TAU Version x.y.z". * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefCreator( OTF_Writer* writer, uint32_t stream, const char* creator ); /** * Write a creator record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeDefCreator() * \ingroup writer */ int OTF_Writer_writeDefCreatorKV( OTF_Writer* writer, uint32_t stream, const char* creator, OTF_KeyValueList* list ); /** * Write a file definition record * * @param writer Initialized OTF_Writer instance. * @param stream Target stream identifier with * 0 < stream <= number of streams as defined in * OTF_Writer_open(). * @param token Arbitrary, unique identifier for the file. * Has to be > 0. * @param name Name of the file. * @param group File group identifier or 0 for no group. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefFile( OTF_Writer* writer, uint32_t stream, uint32_t token, const char* name, uint32_t group ); /** * Write a file definition record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeDefFile() * \ingroup writer */ int OTF_Writer_writeDefFileKV( OTF_Writer* writer, uint32_t stream, uint32_t token, const char* name, uint32_t group, OTF_KeyValueList* list ); /** * Write a file group definition record * * @param writer Initialized OTF_Writer instance. * @param stream Target stream identifier with * 0 < stream <= number of streams as defined in * OTF_Writer_open(). * @param token Arbitrary, unique identifier for the file group. * Has to be > 0. * @param name Name of the file group. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefFileGroup( OTF_Writer* writer, uint32_t stream, uint32_t token, const char* name ); /** * Write a file group definition record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeDefFileGroup() * \ingroup writer */ int OTF_Writer_writeDefFileGroupKV( OTF_Writer* writer, uint32_t stream, uint32_t token, const char* name, OTF_KeyValueList* list ); /** * Write a key value definition record * * @param writer Initialized OTF_Writer instance. * @param stream Target stream identifier with * 0 < stream <= number of streams as defined in * OTF_Writer_open(). * @param key Arbitrary, unique identifier for the key value pair. * @param type Type of the key. * @param name Name of the key value pair. * @param description Description of the key value pair. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefKeyValue( OTF_Writer* writer, uint32_t stream, uint32_t key, OTF_Type type, const char* name, const char* description ); /** * Write a key value definition record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeDefKeyValue() * \ingroup writer */ int OTF_Writer_writeDefKeyValueKV( OTF_Writer* writer, uint32_t stream, uint32_t key, OTF_Type type, const char* name, const char* description, OTF_KeyValueList* list ); /** * Writes a TimeRange definition * * @param writer Initialized OTF_Writer instance. * @param streamid Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * @param minTime The smallest timestamp of the events in this @a streamid. * @param maxTime The greates timestamp of the events in this @a streamid (inclusive). * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefTimeRange( OTF_Writer* writer, uint32_t streamid, uint64_t minTime, uint64_t maxTime, OTF_KeyValueList* list ); /** * Writes a CounterAssignments definition * * @param writer Initialized OTF_Writer instance. * @param streamid Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * @param counter_token Counter id. * @param number_of_members Number of entries in @procs_or_groups array. * @param procs_or_groups The processes or process groups which have recorded * counter data for counter @counter_token. * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefCounterAssignments( OTF_Writer* writer, uint32_t streamid, uint32_t counter_token, uint32_t number_of_members, const uint32_t* procs_or_groups, OTF_KeyValueList* list ); /** * Writes a ProcessSubstitutes definition record * * @param writer Initialized OTF_Writer instance. * @param streamid Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * @param representative Process ID of the process that represents several others. * @param numberOfProcs Number of entries in @procs array. * @param procs The processes which are represented by * @representative. It may or may not include * @representative itself. * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefProcessSubstitutes( OTF_Writer* writer, uint32_t streamid, uint32_t representative, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList* list ); /** * Write a auxiliary sample point definition record. * * @param writer Initialized OTF_Writer instance. * @param stream Target stream identifier with * 0 < stream <= number of streams as defined in * OTF_Writer_open(). * @param time Time at which the auxiliary sample point information * is available. * @param type Type of the auxiliary sample point. * See @a OTF_AuxSamplePointType. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefAuxSamplePoint( OTF_Writer* writer, uint32_t streamid, uint64_t time, OTF_AuxSamplePointType type, OTF_KeyValueList* list ); /** * Write a no-operation record. This can be used to write an OTF_KeyValueList * that is not attached to a special event record. * * @param writer Initialized OTF_Writer instance. * @param time The time when the NoOp event took place. * @param process Process where action took place. * @param list Initialized OTF_KeyValueList() instance or NULL. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeNoOpKV( OTF_Writer* writer, uint64_t time, uint32_t process, OTF_KeyValueList* list ); /** * Write a function entry record. * * @param writer Initialized OTF_Writer instance. * @param time The time when the function entry took place. * @param function Function to be entered as defined with * OTF_Writer_defFunction. * @param process Process where action took place. * @param source Optional reference to source code. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeEnter( OTF_Writer* writer, uint64_t time, uint32_t function, uint32_t process, uint32_t source ); /** * Write a function entry record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeEnter() * \ingroup writer */ int OTF_Writer_writeEnterKV( OTF_Writer* writer, uint64_t time, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList* list ); /** * Write a function leave record. * * @param writer Initialized OTF_Writer instance. * @param time The time when the function leave took place. * @param function Function which was left or 0 if stack integrety checking * is not needed. * @param process Process where action took place. * @param source Explicit source code location or 0. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeLeave( OTF_Writer* writer, uint64_t time, uint32_t function, uint32_t process, uint32_t source ); /** * Write a function leave record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeLeave() * \ingroup writer */ int OTF_Writer_writeLeaveKV( OTF_Writer* writer, uint64_t time, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList* list ); /** * Write a message retrieval record. * * @param writer Initialized OTF_Writer instance. * @param time The time when the message was received. * @param receiver Identifier of receiving process. * @param sender Identifier of sending process. * @param procGroup Optional process-group sender and receiver belong to, * '0' for no group. * @param tag Optional message type information. * @param length Optional message length information. * @param source Optional reference to source code. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeRecvMsg( OTF_Writer* writer, uint64_t time, uint32_t receiver, uint32_t sender, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source ); /** * Write a message retrieval record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeRecvMsg() * \ingroup writer */ int OTF_Writer_writeRecvMsgKV( OTF_Writer* writer, uint64_t time, uint32_t receiver, uint32_t sender, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source, OTF_KeyValueList* list ); /** * Write a message send record. * * @param writer Initialized OTF_Writer instance. * @param time The time when the message was send. * @param sender Sender of the message. * @param receiver Receiver of the message. * @param procGroup Optional process-group sender and receiver belong to, * '0' for no group. * @param tag Optional message type information. * @param length Optional message length information. * @param source Optional reference to source code. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeSendMsg( OTF_Writer* writer, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source ); /** * Write a message send record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeSendMsg() * \ingroup writer */ int OTF_Writer_writeSendMsgKV( OTF_Writer* writer, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source, OTF_KeyValueList* list ); /** * Write a counter measurement record. * * @param writer Initialized OTF_Writer instance. * @param time Time when counter was measured. * @param process Process where counter measurment took place. * @param counter Counter which was measured. * @param value Counter value. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeCounter( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t counter, uint64_t value ); /** * Write a counter measurement record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeCounter() * \ingroup writer */ int OTF_Writer_writeCounterKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList* list ); /** * Write a collective operation member record. * @deprecated This event record has been deprecated due to usage constraints. * Please use OTF_Writer_writeBeginCollectiveOperation() and * OTF_Writer_writeEndCollectiveOperation(), repectively. * * @param writer Initialized OTF_Writer instance. * @param time Time when collective operation was entered by member. * @param process Process identifier i.e. collective member. * @param collective Collective identifier to be defined with * OTF_Writer_writeDefCollectiveOperation(). * @param procGroup Group of processes participating in this collective. * @param rootProc Root process if != 0. * @param sent Data volume sent by member or 0. * @param received Data volumd received by member or 0. * @param duration Time spent in collective operation. * @param source Explicit source code location or 0. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeCollectiveOperation( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t collective, uint32_t procGroup, uint32_t rootProc, uint32_t sent, uint32_t received, uint64_t duration, uint32_t source ); /** * Write a collective operation member record including an OTF_KeyValueList. * @deprecated This event record has been deprecated due to usage constraints. * Please use OTF_Writer_writeBeginCollectiveOperationEV() and * OTF_Writer_writeEndCollectiveOperationEV(), repectively. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeCollectiveOperation() * \ingroup writer */ int OTF_Writer_writeCollectiveOperationKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t collective, uint32_t procGroup, uint32_t rootProc, uint32_t sent, uint32_t received, uint64_t duration, uint32_t source, OTF_KeyValueList* list ); /** * Write a begin collective operation member record. * * @param writer Initialized OTF_Writer instance. * @param time Time when collective operation was entered by member. * @param process Process identifier i.e. collective member. * @param collOp Collective identifier to be defined with * OTF_Writer_writeDefCollectiveOperation(). * @param matchingId Identifier for finding the associated end collective event * record. It must be unique within this procGroup. * @param procGroup Group of processes participating in this collective. * @param rootProc Root process if != 0. * @param sent Data volume sent by member or 0. * @param received Data volume received by member or 0. * @param scltoken Explicit source code location or 0. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeBeginCollectiveOperation( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken ); /** * Write a begin collective operation member record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeBeginCollectiveOperation() * \ingroup writer */ int OTF_Writer_writeBeginCollectiveOperationKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList* list ); /** * Write an end collective operation member record. * * @param writer Initialized OTF_Writer instance. * @param time Time when collective operation was entered by member. * @param process Process identifier i.e. collective member. * @param matchingId Matching identifier, must match a previous start * collective operation. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeEndCollectiveOperation( OTF_Writer* writer, uint64_t time, uint32_t process, uint64_t matchingId ); /** * Write an end collective operation member record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeEndCollectiveOperation() * \ingroup writer */ int OTF_Writer_writeEndCollectiveOperationKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint64_t matchingId, OTF_KeyValueList* list ); /** * Write a comment record. * * @param writer Initialized OTF_Writer instance. * @param time Comments need a timestamp for a proper positioning in the * trace. * @param process Comments also need a process identifier for a proper * positioning in the trace. * @param comment Arbitrary comment string. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeEventComment( OTF_Writer* writer, uint64_t time, uint32_t process, const char* comment ); /** * Write a comment record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeEventComment() * \ingroup writer */ int OTF_Writer_writeEventCommentKV( OTF_Writer* writer, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* list ); /** * Write a begin process record * * @param writer Initialized OTF_Writer instance. * @param time Time when process was referenced for the first time. * @param process Process identifier > 0. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeBeginProcess( OTF_Writer* writer, uint64_t time, uint32_t process ); /** * Write a begin process record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeBeginProcess() * \ingroup writer */ int OTF_Writer_writeBeginProcessKV( OTF_Writer* writer, uint64_t time, uint32_t process, OTF_KeyValueList* list ); /** * Write a end process record * * @param writer Initialized OTF_Writer instance. * @param time Time when process was referenced for the last time. * @param process Process identifier > 0. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeEndProcess( OTF_Writer* writer, uint64_t time, uint32_t process ); /** * Write a end process record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeEndProcess() * \ingroup writer */ int OTF_Writer_writeEndProcessKV( OTF_Writer* writer, uint64_t time, uint32_t process, OTF_KeyValueList* list ); /** * Write a file operation record * @deprecated This event record has been deprecated due to usage constraints. * Please use OTF_Writer_writeBeginFileOperation() and * OTF_Writer_writeEndFileOperation(), respectively. * * @param writer Initialized OTF_Writer instance. * @param time Start time of the file operation. * @param fileid File identifier > 0. * @param handleid File open identifier. * @param process Process identifier > 0. * @param operation Type of file operation @see OTF_Handler_FileOperation() * @param bytes Depends on operation @see OTF_Handler_FileOperation() * @param duration time spent in the file operation * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeFileOperation( OTF_Writer* writer, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source ); /** * Write a file operation record including an OTF_KeyValueList. * @deprecated This event record has been deprecated due to usage constraints. * Please use OTF_Writer_writeBeginFileOperationKV() and * OTF_Writer_writeEndFileOperationKV(), respectively. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeFileOperation() * \ingroup writer */ int OTF_Writer_writeFileOperationKV( OTF_Writer* writer, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source, OTF_KeyValueList* list ); /** * Write a begin file operation record * * @param writer Initialized OTF_Writer instance. * @param time Start time of file operation. * @param process Process identifier > 0. * @param matchingId Operation identifier, used for finding the associated end * file operation event record. * @param scltoken Optional reference to source code. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeBeginFileOperation( OTF_Writer* writer, uint64_t time, uint32_t process, uint64_t matchingId, uint32_t scltoken ); /** * Write a begin file operation record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeBeginFileOperation() * \ingroup writer */ int OTF_Writer_writeBeginFileOperationKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList* list ); /** * Write an end file operation record * * @param writer Initialized OTF_Writer instance. * @param time End time of file operation. * @param process Process identifier > 0. * @param fileid File identifier > 0. * @param matchingId Operation identifier, must match a previous start file * operation event record. * @param handleId Unique file open identifier. * @param operation Type of file operation @see OTF_Handler_FileOperation() * @param bytes Depends on operation @see OTF_Handler_FileOperation() * @param scltoken Optional reference to source code. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeEndFileOperation( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t fileid, uint64_t matchingId, uint64_t handleId, uint32_t operation, uint64_t bytes, uint32_t scltoken ); /** * Write an end file operation record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeEndFileOperation() * \ingroup writer */ int OTF_Writer_writeEndFileOperationKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t fileid, uint64_t matchingId, uint64_t handleId, uint32_t operation, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ); /** * Write a RMA put record - local end record. * The end of this transfer is marked by the NEXT end record on this * with the same communicator/tag pair. * * @param writer Initialized OTF_Writer instance. * @param time Time when process was referenced for the last time. * @param process Process initiating the transfer. * @param origin If >0, Process whose memory will be transferred, instead of this . * @param target Process whose memory will be written. * @param communicator Together with tag, it is used to identify the * corresponding RMA end record. * @param tag Together with communicator, it is used to identify the * corresponding RMA end record. * @param bytes How many bytes have been transfered by this call. * @param source Explicit source code location or 0. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeRMAPut( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken ); /** * Write a RMA put record - local end record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeRMAPut() * \ingroup writer */ int OTF_Writer_writeRMAPutKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ); /** * Write a RMA put record - remote end record. * The end of this transfer is marked by the NEXT end record on process * with the same communicator/tag pair. * * @param writer Initialized OTF_Writer instance. * @param time Time when process was referenced for the last time. * @param process Process initiating the transfer. * @param origin If >0, Process whose memory will be transferred, instead of this . * @param target Process whose memory will be written and where the end * record is located. * @param communicator Together with tag, it is used to identify the * corresponding RMA end record. * @param tag Together with communicator, it is used to identify the * corresponding RMA end record. * @param bytes How many bytes have been transfered by this call. * @param source Explicit source code location or 0. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeRMAPutRemoteEnd( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken ); /** * Write a RMA put record - remote end record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeRMAPutRemoteEnd() * \ingroup writer */ int OTF_Writer_writeRMAPutRemoteEndKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ); /** * Write a RMA get record. * The end of this transfer is marked by the NEXT end record on this * with the same communicator/tag pair. * * @param writer Initialized OTF_Writer instance. * @param time Time when process was referenced for the last time. * @param process Process initiating the transfer. * @param origin If >0, Process where data will be transferred to (instead of this ). * @param target Process whose memory will be read. * @param communicator Together with tag, it is used to identify the * corresponding RMA end record. * @param tag Together with communicator, it is used to identify the * corresponding RMA end record. * @param bytes How many bytes have been transfered by this call. * @param source Explicit source code location or 0. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeRMAGet( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken ); /** * Write a RMA get record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeRMAGet() * \ingroup writer */ int OTF_Writer_writeRMAGetKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ); /** * Write a RMA end record. * The end record marks the finalization of all put and get operations with the * same communicator/tag pair that occured so far for this . * * @param writer Initialized OTF_Writer instance. * @param time Time when process was referenced for the last time. * @param process Process identifier > 0. * @param remote If >0, ends RMA transfers on Process , instead of this . [remote!=0 is really weird crap and would never be used by sane programmers ;-) -- nevertheless, the IBM Cell could be programmed like this.] * @param communicator Together with tag, it is used to identify the * related RMA put/get records. * @param tag Together with communicator, it is used to identify the * related RMA put/get records. * @param source Explicit source code location or 0. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeRMAEnd( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t scltoken ); /** * Write a RMA end record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeRMAEnd() * \ingroup writer */ int OTF_Writer_writeRMAEndKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t scltoken, OTF_KeyValueList* list ); /* *** public snapshot record write handlers *** */ /** * Write a snapshot comment record. * * @param writer Initialized OTF_Writer instance. * @param time Comments need a timestamp for a proper positioning in the * trace. * @param process Comments also need a process identifier for a proper * positioning in the trace. * @param comment Arbitrary comment string. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeSnapshotComment( OTF_Writer* writer, uint64_t time, uint32_t process, const char* comment ); /** * Write a snapshot comment record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeSnapshotComment() * \ingroup writer */ int OTF_Writer_writeSnapshotCommentKV( OTF_Writer* writer, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* list ); /** * Write an enter snapshot which provides information about a past * function call * * @param writer Initialized OTF_Writer instance. * @param time Time when the snapshot was written(current time). * @param originaltime Time when the according enter record was entered. * This call is still on the stack.(It has not been left * yet) * @param function Function that the has been entered * OTF_Writer_defFunction. * @param process Process where action took place. * @param source Optional reference to source code. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeEnterSnapshot( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t function, uint32_t process, uint32_t source ); /** * Write an enter snapshot including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeEnterSnapshot() * \ingroup writer */ int OTF_Writer_writeEnterSnapshotKV( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList* list ); /** * Write a send snapshot which provides information about a past * message send operation that is still pending, i.e. not yet received * * @param writer Initialized OTF_Writer instance. * @param time Time when the snapshot was written(current time). * @param originaltime Time when the message was sent * @param sender Sender of the message. * @param receiver Receiver of the message. * @param procGroup Optional process-group sender and receiver belong to, * '0' for no group. * @param tag Optional message type information. * @param length Optional message length information. * @param source Optional reference to source code. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeSendSnapshot( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source ); /** * Write a send snapshot including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeSendSnapshot() * \ingroup writer */ int OTF_Writer_writeSendSnapshotKV( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source, OTF_KeyValueList* list ); /** * Write a snapshot record for an open (and not yet closed) file * * @param writer Initialized OTF_Writer instance. * @param time Time when the snapshot was written(current time). * @param originaltime Time when the message was sent. * @param fileid File identifier. * @param process Process where the file was opened. * @param handleid Unique file open identifier. @see OTF_Handler_FileOperation() * @param source Optional reference to source code. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeOpenFileSnapshot( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t source ); /** * Write a snapshot record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeOpenFileSnapshot() * \ingroup writer */ int OTF_Writer_writeOpenFileSnapshotKV( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t source, OTF_KeyValueList* list ); /** * Write a snapshot record for an unfinished collective operation. * * @param writer Initialized OTF_Writer instance. * @param time Time when the snapshot was written(current time). * @param originaltime Time when the collective operation began. * @param process Process identifier i.e. collective member. * @param collOp Collective identifier to be defined with * OTF_Writer_writeDefCollectiveOperation(). * @param matchingId Identifier for finding the associated end collective event * record. It must be unique within this procGroup. * @param procGroup Group of processes participating in this collective. * @param rootProc Root process if != 0. * @param sent Data volume sent by member or 0. * @param received Data volume received by member or 0. * @param scltoken Explicit source code location or 0. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeBeginCollopSnapshot( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken ); /** * Write a snapshot record for an unfinished collective operation including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeBeginCollopSnapshot() * \ingroup writer */ int OTF_Writer_writeBeginCollopSnapshotKV( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList* list ); /** * Write a snapshot for an unfinished file operation. * * @param writer Initialized OTF_Writer instance. * @param time Time when the snapshot was written(current time). * @param originaltime Time when the operation began. * @param process Process identifier > 0. * @param matchingId Operation identifier, used for finding the associated end * file operation event record. * @param scltoken Optional reference to source code. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeBeginFileOpSnapshot( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t process, uint64_t matchingId, uint32_t scltoken ); /** * Write a snapshot for an unfinished file operation including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeBeginFileOperation() * \ingroup writer */ int OTF_Writer_writeBeginFileOpSnapshotKV( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList* list ); /** * Write a snapshot for the count of finished collective operations from this * process on this communicator. * * @param writer Initialized OTF_Writer instance. * @param time Time when the snapshot was written(current time). * @param process Process identifier > 0. * @param communicator The communicator for what the count is for. * @param count The count of completed collective operations from process @. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeCollopCountSnapshot( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t communicator, uint64_t count, OTF_KeyValueList *list ); /** * Write a snapshot for the last value of a counter into the snapshot. * * @param writer Initialized OTF_Writer instance. * @param time Time when the snapshot was written(current time). * @param originaltime Sample time of the value. * @param process Process identifier > 0. * @param counter The counter. * @param value The value of the counter. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeCounterSnapshot( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList *list ); /* *** public statistics record write handlers *** */ /** * Write a summary comment record. * * @param writer Initialized OTF_Writer instance. * @param time Comments need a timestamp for a proper positioning in the * trace. * @param process Comments also need a process identifier for a proper * positioning in the trace. * @param comment Arbitrary comment string. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeSummaryComment( OTF_Writer* writer, uint64_t time, uint32_t process, const char* comment ); /** * Write a summary comment record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeSummaryComment() * \ingroup writer */ int OTF_Writer_writeSummaryCommentKV( OTF_Writer* writer, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* list ); /** * Write a function summary record. * * @param writer Initialized OTF_Writer instance. * @param time Time when summary was computed. * @param function Function as defined with * OTF_Handler_DefFunction. * @param process Process of the given function. * @param count Number of invocations. * @param excltime Time spent exclusively in the given function. * @param incltime Time spent in the given function including all * sub-routine calls. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeFunctionSummary( OTF_Writer* writer, uint64_t time, uint32_t function, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime ); /** * Write a function summary record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeFunctionSummary() * \ingroup writer */ int OTF_Writer_writeFunctionSummaryKV( OTF_Writer* writer, uint64_t time, uint32_t function, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime, OTF_KeyValueList* list ); /** * Write a functiongroup summary record. * * @param writer Initialized OTF_Writer instance. * @param time Time when summary was computed. * @param functiongroup Function group as defined with * OTF_Handler_DefFunctionGroup. * @param process Process of the given function group. * @param count Number of invocations. * @param excltime Time spent exclusively in the given function group. * @param incltime Time spent in the given function group including all * sub-routine calls. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeFunctionGroupSummary( OTF_Writer* writer, uint64_t time, uint32_t functiongroup, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime ); /** * Write a functiongroup summary record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeFunctionGroupSummary() * \ingroup writer */ int OTF_Writer_writeFunctionGroupSummaryKV( OTF_Writer* writer, uint64_t time, uint32_t functiongroup, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime, OTF_KeyValueList* list ); /** * Write a message summary record. * * @param writer Initialized OTF_Writer instance. * @param time Time when summary was computed. * @param process Process where messages originated. * @param peer Process where the message is sent to * @param comm Communicator of message summary * @param tag Message type/tag. * @param number_sent The number of messages sent. * @param number_recved The number of messages received. * @param bytes_sent The number of bytes sent via messages of the given * type. * @param bytes_recved The number of bytes received through messages of the * given type. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeMessageSummary( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t peer, uint32_t comm, uint32_t tag, uint64_t number_sent, uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved ); /** * Write a message summary record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeMessageSummary() * \ingroup writer */ int OTF_Writer_writeMessageSummaryKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t peer, uint32_t comm, uint32_t tag, uint64_t number_sent, uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved, OTF_KeyValueList* list ); /** * Write a summary record of collective operations. * * @param writer Initialized OTF_Writer instance. * @param time Time when summary was computed. * @param process Process identifier i.e. collective member. * @param comm Communicator of collective operation summary. * @param collective Collective identifier to be defined with * OTF_Writer_writeDefCollectiveOperation(). * @param number_sent The number of messages sent by member or 0. * @param number_recved The number of messages received by member or 0. * @param bytes_sent The number of bytes sent by member or 0. * @param bytes_recved The number of bytes received by member or 0. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeCollopSummary( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t comm, uint32_t collective, uint64_t number_sent, uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved ); /** * Write a summary record of collective operations including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeCollopSummary() * \ingroup writer */ int OTF_Writer_writeCollopSummaryKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t comm, uint32_t collective, uint64_t number_sent, uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved, OTF_KeyValueList* list ); /** * Writes a file operation summary record. * * @param writer Initialized OTF_Writer instance. * @param time Time when summary was computed. * @param fileid File identifier or 0 for all files. * @param process Process where file operations occured. * @param nopen Number of files opened. * @param nclose Number of files closed. * @param nread Number of read events. * @param nwrite Number of write events. * @param nseek Number of seek events. * @param bytesread Number of bytes read. * @param byteswrite Number of bytes written. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeFileOperationSummary( OTF_Writer* writer, uint64_t time, uint32_t fileid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite ); /** * Writes a file operation summary record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeFileOperationSummary() * \ingroup writer */ int OTF_Writer_writeFileOperationSummaryKV( OTF_Writer* writer, uint64_t time, uint32_t fileid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList* list ); /** * Writes a file group operation summary record. * * @param writer Initialized OTF_Writer instance. * @param time Time when summary was computed. * @param groupid File group identifier or 0 for all files/groups. * @param process Process where file operations occured. * @param nopen Number of files opened. * @param nclose Number of files closed. * @param nread Number of read events. * @param nwrite Number of write events. * @param nseek Number of seek events. * @param bytesread Number of bytes read. * @param byteswrite Number of bytes written. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeFileGroupOperationSummary( OTF_Writer* writer, uint64_t time, uint32_t groupid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite ); /** * Writes a file group operation summary record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeFileGroupOperationSummary() * \ingroup writer */ int OTF_Writer_writeFileGroupOperationSummaryKV( OTF_Writer* writer, uint64_t time, uint32_t groupid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList* list ); /* *** private member functions *** */ /* *** marker record types *** */ /** * Writes a def marker record. * * @param writer Initialized OTF_Writer instance. * qparam streamID stream identifier that must be 0, any other value is ignored * @param token The newly defined marker token. * @param name Its name * @param type Marker type, one of OTF_MARKER_TYPE_xxx * * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeDefMarker( OTF_Writer* writer, uint32_t streamID, uint32_t token, const char* name, uint32_t type ); /** * Writes a def marker record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeDefMarker() * \ingroup writer */ int OTF_Writer_writeDefMarkerKV( OTF_Writer* writer, uint32_t streamID, uint32_t token, const char* name, uint32_t type, OTF_KeyValueList* list ); /** * Writes a marker record. * * @param writer Initialized OTF_Writer instance. * @param time Time stamp of the marker record. Note that marker records are * not sorted according to time stamps! * @param process The process or process group of the marker. * @param token A marker token defined by 'DefMarker' before. * @param text Descriptive text. * * @return 1 on success, 0 if an error occurs. * * \ingroup writer */ int OTF_Writer_writeMarker( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t token, const char* text ); /** * Writes a marker record including an OTF_KeyValueList. * * @param list Initialized OTF_KeyValueList() instance or NULL. * * @see OTF_Writer_writeMarker() * \ingroup writer */ int OTF_Writer_writeMarkerKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t token, const char* text, OTF_KeyValueList* list ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTF_WRITER_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_Platform_win.h0000644000000000000000000000013212544237152023564 xustar0030 mtime=1435582058.535899952 30 atime=1507797543.978893859 30 ctime=1508162366.225775645 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_Platform_win.h0000644000175000017500000000250212544237152024752 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_Platform_win.h * * @brief Deals with platform dependend issues. * * \ingroup internal */ #ifndef OTF_PLATFORM_WIN_H #define OTF_PLATFORM_WIN_H #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #if defined(_MSC_VER) /* visual studio */ # include # include # include # define HAVE_IO_H # define HAVE_ZLIB # ifndef PATH_MAX # define PATH_MAX 255 # endif # define OTF_PATH_MAX PATH_MAX # undef ftello # define ftello (uint64_t) _ftelli64 # undef fseeko # define fseeko(f,off,orig) _fseeki64(f,(__int64)off,orig) # undef snprintf # define snprintf _snprintf # undef getpid # define getpid() _getpid() # pragma warning (disable : 4996) /* disable insecurity/deprication warnings */ int gettimeofday(struct timeval* tv, void* dummytimezone); long int nrand48 (unsigned short int xsubi[3]); # include # ifndef _S_IREAD # define _S_IREAD 256 # endif # ifndef _S_IWRITE # define _S_IWRITE 128 # endif int mkstemp(char *tmpl); #else # error "You are using an unsupported compiler on windows." #endif /* _MSC_VER */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTF_PLATFORM_WIN_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_WBuffer.c0000644000000000000000000000013212544237152022456 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.203376663 30 ctime=1508162366.221775297 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_WBuffer.c0000644000175000017500000004550112544237152023652 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include "OTF_Platform.h" #include "OTF_WBuffer.h" #include "OTF_Errno.h" #include "OTF_Keywords.h" /** constructor - internal use only */ int OTF_WBuffer_init( OTF_WBuffer* wbuffer ); /** destructor - internal use only */ int OTF_WBuffer_finish( OTF_WBuffer* wbuffer ); /* ************************************************************************** */ int OTF_WBuffer_init( OTF_WBuffer* wbuffer ) { wbuffer->file= NULL; /* buffer is allocated on demand */ wbuffer->buffer = NULL; wbuffer->size = 0; wbuffer->pos = 0; wbuffer->process = (uint32_t) -1; wbuffer->time = 0; #ifdef HAVE_ZLIB wbuffer->zbuffersize= OTF_ZBUFFER_DEFAULTSIZE; #endif /* HAVE_ZLIB */ return 1; } int OTF_WBuffer_finish( OTF_WBuffer* wbuffer ) { /* buffer shall be empty now */ if( 0 != wbuffer->pos ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "buffer is not empty (but is supposed to).\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } free( wbuffer->buffer ); wbuffer->buffer= NULL; return 1; } OTF_WBuffer* OTF_WBuffer_open( const char* filename, OTF_FileManager* manager ) { /* choose standard compression */ return OTF_WBuffer_open_zlevel( filename, manager, OTF_FILECOMPRESSION_COMPRESSED ); } int OTF_WBuffer_close( OTF_WBuffer* wbuffer ) { int ret; /* * Write a timestamp at the very end of a trace to avoid traces with a huge tail * of timestamp-less events (e.g. fake-KV-counters) that require * very inefficient (n^2) backwards search for searching the last timestamp. */ if( (uint32_t) -1 != wbuffer->process ) { OTF_WBuffer_writeUint64( wbuffer, wbuffer->time ); OTF_WBuffer_writeNewline( wbuffer ); OTF_WBuffer_writeChar( wbuffer, '*' ); OTF_WBuffer_writeUint32( wbuffer, wbuffer->process ); OTF_WBuffer_writeNewline( wbuffer ); } # ifndef OTF_DEBUG { ret= OTF_WBuffer_flush( wbuffer ); ret&= OTF_File_close( wbuffer->file ); ret&= OTF_WBuffer_finish( wbuffer ); } # else { int tmpret; ret= 1; tmpret= OTF_WBuffer_flush( wbuffer ); if( 0 == tmpret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_flush() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); } ret&= tmpret; tmpret= OTF_File_close( wbuffer->file ); if( 0 == tmpret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_File_close() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); } ret&= tmpret; tmpret= OTF_WBuffer_finish( wbuffer ); if( 0 == tmpret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_finish() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); } ret&= tmpret; } # endif free( wbuffer ); wbuffer = NULL; return ret; } int OTF_WBuffer_setSize( OTF_WBuffer* wbuffer, size_t size ) { if ( size < wbuffer->size ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot shrink buffer from %u to %u.\n", __FUNCTION__, __FILE__, __LINE__, (uint32_t) wbuffer->size, (uint32_t) size ); return 0; } wbuffer->buffer= (char*) realloc( wbuffer->buffer, size * sizeof(char) ); if( NULL == wbuffer->buffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } wbuffer->size= (uint32_t) size; return 1; } void OTF_WBuffer_setZBufferSize( OTF_WBuffer* wbuffer, uint32_t size ) { #ifdef HAVE_ZLIB if ( 32 > size ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "intended zbuffer size %u is too small, rejected.\n", __FUNCTION__, __FILE__, __LINE__, size ); return; } else if ( 512 > size ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "zbuffer size %u is very small, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } else if ( 10 * 1024 *1024 < size ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "zbuffer size %u is rather big, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } wbuffer->zbuffersize= size; if( NULL != wbuffer->file ) { OTF_File_setZBufferSize( wbuffer->file, wbuffer->zbuffersize ); } #endif /* HAVE_ZLIB */ } int OTF_WBuffer_flush( OTF_WBuffer* wbuffer ) { int retval= 1; size_t ret; ret= OTF_File_write( wbuffer->file, wbuffer->buffer, wbuffer->pos ); if( ret != wbuffer->pos ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_File_write() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); retval= 0; } wbuffer->pos= 0; return retval; } int OTF_WBuffer_guarantee( OTF_WBuffer* wbuffer, size_t space ) { if ( wbuffer->pos + space <= wbuffer->size ) { return 1; } /* not enough space available */ if ( space > wbuffer->size ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "requested %u bytes > buffer size %u.\n", __FUNCTION__, __FILE__, __LINE__, (uint32_t) space, wbuffer->size ); return 0; } if( 0 == OTF_WBuffer_flush( wbuffer ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_flush() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } return 1; } int OTF_WBuffer_setTimeAndProcess( OTF_WBuffer* wbuffer, uint64_t t, uint32_t p ) { /* write timestamp 0 always in order to generate a valid time stamp at the very beginning of every stream */ if ( ( t == wbuffer->time ) && ( 0 < t ) ) { if ( p == wbuffer->process ) { return 1; } OTF_WBuffer_writeChar( wbuffer, '*' ); OTF_WBuffer_writeUint32( wbuffer, p ); OTF_WBuffer_writeNewline( wbuffer ); wbuffer->process = p; return 1; } /* time must be strictly monotonous increasing or 0 (see above), the '==' case is already catched above and must not happen here */ if ( ( t > wbuffer->time ) || ( 0 == t ) ) { OTF_WBuffer_writeUint64( wbuffer, t ); OTF_WBuffer_writeNewline( wbuffer ); OTF_WBuffer_writeChar( wbuffer, '*' ); OTF_WBuffer_writeUint32( wbuffer, p ); OTF_WBuffer_writeNewline( wbuffer ); wbuffer->time = t; wbuffer->process = p; return 1; } else { /* print error message only once per buffer. there should be _no_ way to avoid this error message! */ if ( ( (uint64_t) -1 ) != wbuffer->time ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "time not increasing. (t= %llu, p= %u)\n", __FUNCTION__, __FILE__, __LINE__, (unsigned long long int) t, (unsigned int) p ); /* write comment to the end of the stream */ OTF_WBuffer_writeKeyword( wbuffer, "#" ); OTF_WBuffer_writeString( wbuffer, "error due to unsorted time stamp, aborted" ); OTF_WBuffer_writeNewline( wbuffer ); /* disable the buffer for future use, don't repeat the error message*/ wbuffer->time = (uint64_t) -1; } return 0; } } uint32_t OTF_WBuffer_writeKeyword( OTF_WBuffer* wbuffer, const char* keyword ) { uint32_t i; uint32_t l= (uint32_t) strlen( keyword ); int ret= OTF_WBuffer_guarantee( wbuffer, l ); if( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_guarantee() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } i= 0; while ( i < l ) { wbuffer->buffer[ wbuffer->pos +i ]= keyword[i]; i++; } wbuffer->pos += l; return l; } uint32_t OTF_WBuffer_writeString( OTF_WBuffer* wbuffer, const char* string ) { uint32_t i; uint32_t l= (uint32_t) (( NULL != string ) ? strlen( string ) : 0); if( 0 == OTF_WBuffer_guarantee( wbuffer, l+2 ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_guarantee() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } wbuffer->buffer[ wbuffer->pos ] = '"'; ++wbuffer->pos; i = 0; while ( i < l ) { if ( ( '\n' != string[i] ) && ( '"' != string[i] ) ) { wbuffer->buffer[ wbuffer->pos +i ]= string[i]; } else { wbuffer->buffer[ wbuffer->pos +i ]= ' '; } i++; } wbuffer->pos += l; wbuffer->buffer[ wbuffer->pos ] = '"'; ++wbuffer->pos; return l; } uint32_t OTF_WBuffer_writeChar( OTF_WBuffer* wbuffer, const char character ) { if( 0 == OTF_WBuffer_guarantee( wbuffer, 1 ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_guarantee() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } wbuffer->buffer[ wbuffer->pos ]= character; wbuffer->pos++; return 1; } uint32_t OTF_WBuffer_writeUint8( OTF_WBuffer* wbuffer, uint8_t value ) { static char dig[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; uint32_t l= 0; int s= 4; uint32_t v= 0; char* p = NULL; /* at max 2 digits will be written */ if( 0 == OTF_WBuffer_guarantee( wbuffer, 2 ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_guarantee() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } p= wbuffer->buffer + wbuffer->pos; /* skip leading zeros */ while ( ( 0 == v ) && ( s >= 0 ) ) { v= ( value >> s ) & 0xf ; s -= 4; } p[l++]= dig[v]; while ( s >= 0 ) { v= ( value >> s ) & 0xf ; s -= 4; p[l++]= dig[v]; } wbuffer->pos += l; return l; } uint32_t OTF_WBuffer_writeUint16( OTF_WBuffer* wbuffer, uint16_t value ) { static char dig[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; uint32_t l= 0; int s= 12; uint32_t v= 0; char* p = NULL; /* at max 4 digits will be written */ if( 0 == OTF_WBuffer_guarantee( wbuffer, 4 ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_guarantee() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } p= wbuffer->buffer + wbuffer->pos; /* skip leading zeros */ while ( ( 0 == v ) && ( s >= 0 ) ) { v= ( value >> s ) & 0xf ; s -= 4; } p[l++]= dig[v]; while ( s >= 0 ) { v= ( value >> s ) & 0xf ; s -= 4; p[l++]= dig[v]; } wbuffer->pos += l; return l; } uint32_t OTF_WBuffer_writeUint32( OTF_WBuffer* wbuffer, uint32_t value ) { static char dig[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; uint32_t l= 0; int s= 28; uint32_t v= 0; char* p = NULL; /* at max 8 digits will be written */ if( 0 == OTF_WBuffer_guarantee( wbuffer, 8 ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_guarantee() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } p= wbuffer->buffer + wbuffer->pos; /* skip leading zeros */ while ( ( 0 == v ) && ( s >= 0 ) ) { v= ( value >> s ) & 0xf ; s -= 4; } p[l++]= dig[v]; while ( s >= 0 ) { v= ( value >> s ) & 0xf ; s -= 4; p[l++]= dig[v]; } wbuffer->pos += l; return l; } uint32_t OTF_WBuffer_writeUint64( OTF_WBuffer* wbuffer, uint64_t value ) { static char dig[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; uint32_t l= 0; int s= 60; uint32_t v= 0; char* p = NULL; /* at max 16 digits will be written */ if( 0 == OTF_WBuffer_guarantee( wbuffer, 16 ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_guarantee() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } p= wbuffer->buffer + wbuffer->pos; /* skip leading zeros */ while ( ( 0 == v ) && ( s >= 0 ) ) { v= (uint32_t) (( value >> s ) & 0xf) ; s -= 4; } p[l++]= dig[v]; while ( s >= 0 ) { v= (uint32_t) (( value >> s ) & 0xf) ; s -= 4; p[l++]= dig[v]; } wbuffer->pos += l; return l; } uint32_t OTF_WBuffer_writeNewline( OTF_WBuffer* wbuffer ) { if( 0 == OTF_WBuffer_guarantee( wbuffer, 1 ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_guarantee() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } wbuffer->buffer[ wbuffer->pos ] = '\n'; ++wbuffer->pos; return 1; } uint32_t OTF_WBuffer_writeBytes( OTF_WBuffer* wbuffer, const uint8_t *value, uint32_t len) { static char dig[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; uint32_t l= 0; char v; char* p = NULL; uint32_t i; /* at max 2 * len digits will be written */ if( 0 == OTF_WBuffer_guarantee( wbuffer, len*2 ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_guarantee() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } p= wbuffer->buffer + wbuffer->pos; for( i=0; i>= 4; p[l] = dig[v & 0xF]; l += 2; wbuffer->pos += 2; } return len*2; } uint32_t OTF_WBuffer_writeKeyValuePair_short(OTF_WBuffer* buffer, OTF_KeyValuePair* pair) { uint32_t written = 0; if ( pair == NULL) { return 0; } written += OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_KEYVALUE_PREFIX ); written += OTF_WBuffer_writeUint32( buffer, pair->key ); written += OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_TYPE ); written += OTF_WBuffer_writeUint32( buffer, pair->type ); written += OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_VALUE ); switch (pair->type) { case OTF_CHAR: written += OTF_WBuffer_writeUint8( buffer, (uint8_t) pair->value.otf_char ); break; case OTF_INT8: written += OTF_WBuffer_writeUint8( buffer, pair->value.otf_int8 ); break; case OTF_UINT8: written += OTF_WBuffer_writeUint8( buffer, pair->value.otf_uint8 ); break; case OTF_INT16: written += OTF_WBuffer_writeUint16( buffer, pair->value.otf_int16 ); break; case OTF_UINT16: written += OTF_WBuffer_writeUint16( buffer, pair->value.otf_uint16 ); break; case OTF_INT32: written += OTF_WBuffer_writeUint32( buffer, pair->value.otf_int32 ); break; case OTF_UINT32: written += OTF_WBuffer_writeUint32( buffer, pair->value.otf_uint32 ); break; case OTF_INT64: written += OTF_WBuffer_writeUint64( buffer, pair->value.otf_int64 ); break; case OTF_UINT64: written += OTF_WBuffer_writeUint64( buffer, pair->value.otf_uint64 ); break; case OTF_DOUBLE: written += OTF_WBuffer_writeUint64( buffer, OTF_DoubleToInt64(pair->value.otf_double) ); break; case OTF_FLOAT: written += OTF_WBuffer_writeUint32( buffer, OTF_FloatToInt32(pair->value.otf_float) ); break; case OTF_BYTE_ARRAY: written += OTF_WBuffer_writeBytes( buffer, pair->value.otf_byte_array.array, pair->value.otf_byte_array.len > OTF_KEYVALUE_MAX_ARRAY_LEN ? OTF_KEYVALUE_MAX_ARRAY_LEN : pair->value.otf_byte_array.len ); written += OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_LENGTH ); written += OTF_WBuffer_writeUint32( buffer, pair->value.otf_byte_array.len ); break; default: /* wrong type */ written += OTF_WBuffer_writeNewline( buffer ); return written; } written += OTF_WBuffer_writeNewline( buffer ); return written; } uint32_t OTF_WBuffer_writeKeyValuePair_long(OTF_WBuffer* buffer, OTF_KeyValuePair* pair) { uint32_t written = 0; if ( pair == NULL) { return 0; } written += OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_KEYVALUE_PREFIX " " ); written += OTF_WBuffer_writeUint32( buffer, pair->key ); written += OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_TYPE " " ); written += OTF_WBuffer_writeUint32( buffer, pair->type ); written += OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_VALUE " " ); switch (pair->type) { case OTF_CHAR: written += OTF_WBuffer_writeUint8( buffer, (uint8_t) pair->value.otf_char ); break; case OTF_INT8: written += OTF_WBuffer_writeUint8( buffer, pair->value.otf_int8 ); break; case OTF_UINT8: written += OTF_WBuffer_writeUint8( buffer, pair->value.otf_uint8 ); break; case OTF_INT16: written += OTF_WBuffer_writeUint16( buffer, pair->value.otf_int16 ); break; case OTF_UINT16: written += OTF_WBuffer_writeUint16( buffer, pair->value.otf_uint16 ); break; case OTF_INT32: written += OTF_WBuffer_writeUint32( buffer, pair->value.otf_int32 ); break; case OTF_UINT32: written += OTF_WBuffer_writeUint32( buffer, pair->value.otf_uint32 ); break; case OTF_INT64: written += OTF_WBuffer_writeUint64( buffer, pair->value.otf_int64 ); break; case OTF_UINT64: written += OTF_WBuffer_writeUint64( buffer, pair->value.otf_uint64 ); break; case OTF_DOUBLE: written += OTF_WBuffer_writeUint64( buffer, OTF_DoubleToInt64(pair->value.otf_double) ); break; case OTF_FLOAT: written += OTF_WBuffer_writeUint32( buffer, OTF_FloatToInt32(pair->value.otf_float) ); break; case OTF_BYTE_ARRAY: written += OTF_WBuffer_writeBytes( buffer, pair->value.otf_byte_array.array, pair->value.otf_byte_array.len > OTF_KEYVALUE_MAX_ARRAY_LEN ? OTF_KEYVALUE_MAX_ARRAY_LEN : pair->value.otf_byte_array.len ); written += OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_LOCAL_LENGTH ); written += OTF_WBuffer_writeUint32( buffer, pair->value.otf_byte_array.len ); break; default: /* wrong type */ written += OTF_WBuffer_writeNewline( buffer ); return written; } written += OTF_WBuffer_writeNewline( buffer ); return written; } uint32_t OTF_WBuffer_writeKeyValueList_short(OTF_WBuffer* buffer, OTF_KeyValueList *list ) { OTF_KeyValuePairList *p; uint32_t i; uint32_t written = 0; if ( list == NULL) { return 0; } p = list->kvBegin; for( i = 0; i < list->count; i++ ) { written += OTF_WBuffer_writeKeyValuePair_short( buffer, &(p->kvPair) ); p = p->kvNext; } OTF_KeyValueList_reset(list); return written; } uint32_t OTF_WBuffer_writeKeyValueList_long(OTF_WBuffer* buffer, OTF_KeyValueList *list ) { OTF_KeyValuePairList *p; uint32_t i; uint32_t written = 0; if ( list == NULL) { return 0; } p = list->kvBegin; for( i = 0; i < list->count; i++ ) { written += OTF_WBuffer_writeKeyValuePair_long( buffer, &(p->kvPair) ); p = p->kvNext; } OTF_KeyValueList_reset(list); return written; } OTF_WBuffer* OTF_WBuffer_open_zlevel( const char* filename, OTF_FileManager* manager, OTF_FileCompression compression ) { OTF_WBuffer* ret= (OTF_WBuffer*) malloc( sizeof(OTF_WBuffer) ); if( NULL == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } OTF_WBuffer_init( ret ); if( NULL == manager ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "manager has not been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); free( ret ); ret= NULL; return NULL; } ret->file= OTF_File_open_zlevel( filename, manager, OTF_FILEMODE_WRITE, compression ); if( NULL == ret->file ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_File_open() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); free( ret ); ret= NULL; return NULL; } #ifdef HAVE_ZLIB OTF_File_setZBufferSize( ret->file, ret->zbuffersize ); #endif /* HAVE_ZLIB */ return ret; } eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_File_iofsl.h0000644000000000000000000000013212544237152023176 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.251377863 30 ctime=1508162366.185772154 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_File_iofsl.h0000644000175000017500000000625612544237152024376 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_File.h * * @brief Provides a low-level API for accessing files. * * \ingroup internal */ #ifndef OTF_FILE_IOFSL_H #define OTF_FILE_IOFSL_H #include "OTF_Filenames.h" #include "OTF_File.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** initialize a OTF_File object */ int OTF_File_iofsl_init( OTF_File* o ); /** * Finalize a OTF_File object * This frees all associated datastructures * including the file object itsself! **/ void OTF_File_iofsl_finalize( OTF_File* o ); /** there is no OTF_File_iofsl_open because it is just a plain wrapper for open_zlevel */ /** open a pseudo OTF_File that actually reads from the given memory buffer. The buffer is not copied, you need to manage it yourself! Don't touch it during access operations. */ OTF_File* OTF_File_iofsl_open_with_external_buffer( uint32_t len, const char* buffer, uint8_t is_compressed, OTF_FileMode mode ); /** Rename file pointed to by 'from' to file 'to'. * If the filename describes a zoidfs file the zoidfs API is used. * Otherwise standard POSIX rename is used.*/ int OTF_File_iofsl_rename(const char* from, const char* to); int OTF_File_iofsl_access(const char* filename, int mode); /** Remove the file according to the stream id encoded in the filename */ int OTF_File_iofsl_remove(const char* filename); /** Clean up everything -- relevant only for multifile use to remove the data and index file */ int OTF_File_iofsl_clean(const char* filename); /** * OTF_File_iofsl_write and OTF_File_iofsl_read do not exist * all IOFSL specific code is in the _internal versions */ /** seek absolute position in an OTF_File */ int OTF_File_iofsl_seek( OTF_File* file, uint64_t pos ); /** get absolut position from an OTF_File */ uint64_t OTF_File_iofsl_tell( OTF_File* file ); /** return the file size in bytes*/ uint64_t OTF_File_iofsl_size( OTF_File* file ); /** close OTF_File */ int OTF_File_iofsl_close( OTF_File* file ); /** return OTF_File status */ OTF_FileStatus OTF_File_iofsl_status( OTF_File* file ); /** suspend OTF_File - internal use only. */ void OTF_File_iofsl_suspend( OTF_File* file ); /** re-open the file when closed or suspended - internal use only. return 1 on success, 0 otherwise */ int OTF_File_iofsl_revive( OTF_File* file, OTF_FileMode mode ); void OTF_File_iofsl_setZBufferSize( OTF_File* file, uint32_t size ); /** For zoidfs finalize */ void OTF_File_iofsl_finalizeGlobal( void ); /** internal use */ OTF_File* OTF_File_iofsl_open_zlevel( const char* filename, OTF_FileManager* manager, OTF_FileMode mode, OTF_FileCompression compression ); /* internal function */ /* they are in the header file because they are called by OTF_File_write|read */ /** read 'length' bytes from underlying iofsl file */ size_t OTF_File_iofsl_read_internal( OTF_File* file, void* dest, size_t length ); /** Wrapper around fwrite to issue calls to zoidfs_write if needed */ size_t OTF_File_iofsl_write_internal(OTF_File* file, const void* src, size_t length); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTF_FILE_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_inttypes.c0000644000000000000000000000013212544237152022775 xustar0030 mtime=1435582058.539899952 30 atime=1508138855.047397742 30 ctime=1508162366.225775645 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_inttypes.c0000644000175000017500000000403412544237152024165 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #include "OTF_Platform.h" #include "OTF_inttypes.h" #define OTF_COMPILE_TIME_ASSERT(pred) switch(0){case 0:case pred:;} /* !!! if your compiler hits an error here, your integer types have not the correct length, thus are not defined correct !!! */ void otf_compile_time_assert(void); void otf_compile_time_assert() { OTF_COMPILE_TIME_ASSERT(sizeof(uint8_t) == 1); OTF_COMPILE_TIME_ASSERT(sizeof(int8_t) == 1); OTF_COMPILE_TIME_ASSERT(sizeof(uint16_t) == 2); OTF_COMPILE_TIME_ASSERT(sizeof(int16_t) == 2); OTF_COMPILE_TIME_ASSERT(sizeof(uint32_t) == 4); OTF_COMPILE_TIME_ASSERT(sizeof(int32_t) == 4); OTF_COMPILE_TIME_ASSERT(sizeof(uint64_t) == 8); OTF_COMPILE_TIME_ASSERT(sizeof(int64_t) == 8); } /* this function is for all unsigned integers of, 8, 16, 32 or 64 bit length */ uint64_t OTF_Unsigned2Counter( uint64_t value ) { return value; } uint64_t OTF_Counter2Unsigned( uint64_t value ) { return value; } /* this function is for all signed integers of, 8, 16, 32 or 64 bit length */ uint64_t OTF_Signed2Counter( int64_t value ) { return *( (uint64_t*) &value); } int64_t OTF_Counter2Signed( uint64_t value ) { return *( (int64_t*) &value); } /* this function is for single precision floating point variables 32 bit length */ uint64_t OTF_Float2Counter( float value ) { union types_union { float f; uint32_t u; } t; t.f= value; return (uint64_t) t.u; } float OTF_Counter2Float( uint64_t value ) { uint32_t tmp= (uint32_t) value; union types_union { float f; uint32_t u; } t; t.u= tmp; return t.f; } /* this function is for double precision floating point variables 64 bit length */ uint64_t OTF_Double2Counter( double value ) { union types_union { double d; uint64_t u; } t; t.d= value; return t.u; } double OTF_Counter2Double( uint64_t value ) { union types_union { double d; uint64_t u; } t; t.u= value; return t.d; } eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_MasterControl.c0000644000000000000000000000013212544237152023712 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.167375764 30 ctime=1508162366.217774947 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_MasterControl.c0000644000175000017500000004415412544237152025111 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "OTF_Platform.h" #include "OTF_MasterControl.h" #include "OTF_Errno.h" /** constructor - internal use only */ int OTF_MasterControl_init( OTF_MasterControl* mc ); /** destructor - internal use only */ void OTF_MasterControl_finalize( OTF_MasterControl* mc ); /** reset mapping to empty, keep file manager manager reference */ void OTF_MasterControl_reset( OTF_MasterControl* mc ); /** Get the map entry with the given argument. If not yet there, create it - internal use only */ OTF_MapEntry* OTF_MasterControl_getMapEntry( OTF_MasterControl* mc, uint32_t argument ); /** Insert a new map entry with given argument at specified pos - internal use only, called by OTF_MasterControl_getMapEntry() */ OTF_MapEntry* OTF_MasterControl_insertMapEntry( OTF_MasterControl* mc, uint32_t argument, uint32_t pos ); /** Insert the value into the map entry. */ int OTF_MapEntry_insertValue( OTF_MapEntry* mc, uint32_t value ); /** Insert a new reverse map entry value -> argument the given mapping _must_not_ be included so far return 1 on success, 0 if duplicate - internal use only */ int OTF_MasterControl_insertRMapEntry( OTF_MasterControl* mc, uint32_t value, uint32_t argument ); /* ************************************************************************** */ int OTF_MasterControl_init( OTF_MasterControl* mc ) { mc->n= 0; mc->s= 0; mc->map= NULL; mc->rn= 0; mc->rs= 0; mc->rmap= NULL; mc->manager= NULL; return 1; } void OTF_MasterControl_finalize( OTF_MasterControl* mc ) { uint32_t i; for ( i= 0; i < mc->n; i++ ) { free( mc->map[i].values ); } free( mc->map ); mc->map= NULL; free( mc->rmap ); mc->rmap= NULL; } void OTF_MasterControl_reset( OTF_MasterControl* mc ) { uint32_t i; for ( i= 0; i < mc->n; i++ ) { free( mc->map[i].values ); } free( mc->map ); mc->n= 0; mc->s= 0; mc->map= NULL; free( mc->rmap ); mc->rn= 0; mc->rs= 0; mc->rmap= NULL; } void OTF_MasterControl_finish( OTF_MasterControl* mc ) { OTF_MasterControl_close( mc ); OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "OTF_MasterControl_finish() is deprecated, " "use OTF_MasterControl_close() instead.\n", __FUNCTION__, __FILE__, __LINE__ ); } void OTF_MasterControl_close( OTF_MasterControl* mc ) { OTF_MasterControl_finalize( mc ); free( mc ); mc = NULL; } int OTF_MasterControl_read( OTF_MasterControl* mc, const char* namestub ) { char* filename; OTF_RBuffer* buffer; uint32_t argument; uint32_t value; int r; if( NULL == mc ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "master control has not been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } /* finalize + init == reset */ OTF_MasterControl_reset( mc ); filename = OTF_getFilename( namestub, 0 /* id */, OTF_FILETYPE_MASTER /* type */, 0, NULL ); if ( NULL == filename ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_getFilename() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } /* if ( ! OTF_fileExists( filename ) ) { OTF_Error( "ERROR in '%s'.c: " "Invalid input file '%s'\n", __FUNCTION__, filename ); return 0; } */ buffer = OTF_RBuffer_open( filename, mc->manager ); if( NULL == buffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "could not open file \"%s\" for reading.\n", __FUNCTION__, __FILE__, __LINE__, filename ); free( filename ); filename = NULL; return 0; } OTF_RBuffer_setSize( buffer, 1024 ); free( filename ); filename = NULL; /* must not use getRecord here! */ while ( OTF_RBuffer_guaranteeRecord( buffer ) ) { /* OTF_RBuffer_printRecord( buffer ); */ /* IOFSL config line */ if ( OTF_RBuffer_testChar( buffer, 'i' ) ) { uint32_t server_num; OTF_IofslMode mode; uint32_t streamid_bits; server_num = OTF_RBuffer_readUint32( buffer ); if ( ! OTF_RBuffer_testChar( buffer, ':') ) { OTF_Error( "OTF_MasterControl_read() " "ERROR: missing expected character ':'" ); free( buffer ); return 0; } mode = (OTF_IofslMode)OTF_RBuffer_readUint32( buffer ); if ( mode != OTF_IOFSL_MULTIFILE_SPLIT && mode != OTF_IOFSL_MULTIFILE ) { OTF_Error( "OTF_MasterControl_read() " "ERROR: invalid IofslMode." ); free( buffer ); return 0; } if ( ! OTF_RBuffer_testChar( buffer, ':') ) { OTF_Error( "OTF_MasterControl_read() " "ERROR: missing expected character ':'" ); free( buffer ); return 0; } streamid_bits = OTF_RBuffer_readUint32( buffer ); OTF_RBuffer_readNewline( buffer ); OTF_FileManager_setIofsl( mc->manager, server_num, NULL, mode, 0, 0, streamid_bits ); continue; } /* read argument */ argument= OTF_RBuffer_readUint32( buffer ); if ( ! OTF_RBuffer_testChar( buffer, ':' ) ) { OTF_RBuffer_readNewline( buffer ); continue; } do { value= OTF_RBuffer_readUint32( buffer ); r= OTF_MasterControl_append( mc, argument, value ); if ( 0 == r ) { OTF_Error( "OTF_MasterControl_read() " "ERROR: appending (%u,%u)\n", argument, value ); } } while ( OTF_RBuffer_testChar( buffer, ',' ) ); OTF_RBuffer_readNewline( buffer ); } OTF_RBuffer_close( buffer ); return 1; } OTF_MasterControl* OTF_MasterControl_new( OTF_FileManager* manager ) { OTF_MasterControl* ret; ret= (OTF_MasterControl*) malloc( sizeof(OTF_MasterControl) ); if( NULL == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } OTF_MasterControl_init( ret ); if( NULL == manager ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "manager has not been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); free( ret ); ret= NULL; return NULL; } ret->manager= manager; return ret; } OTF_MapEntry* OTF_MasterControl_insertMapEntry( OTF_MasterControl* mc, uint32_t argument, uint32_t pos ) { unsigned int i; /* realloc ? */ if ( mc->n >= mc->s ) { mc->s= ( mc->s > 0 ) ? ( 2* mc->s ) : 10; mc->map= (OTF_MapEntry*) realloc( mc->map, mc->s * sizeof(OTF_MapEntry) ); if( NULL == mc->map ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } } /* move all entries at >= pos one up */ for ( i= mc->n; i > pos; i-- ) { memcpy( &(mc->map[i]), &(mc->map[i-1]), sizeof(OTF_MapEntry) ); } /* insert new entry */ mc->map[pos].argument= argument; mc->map[pos].n= 0; mc->map[pos].s= 0; mc->map[pos].values= NULL; mc->n++; return &(mc->map[pos]); } OTF_MapEntry* OTF_MasterControl_getMapEntry( OTF_MasterControl* mc, uint32_t argument ) { unsigned int a= 0; unsigned int b= mc->n; unsigned int c; if ( 0 == mc->n ) { /* empty list, insert at 0 */ return OTF_MasterControl_insertMapEntry( mc, argument, 0 ); } if ( mc->map[a].argument > argument ) { /* insert at very beginning */ return OTF_MasterControl_insertMapEntry( mc, argument, 0 ); } if ( mc->map[b-1].argument < argument ) { /* insert at very end */ return OTF_MasterControl_insertMapEntry( mc, argument, b ); } if ( mc->map[a].argument == argument ) { /* found at a */ return &( mc->map[a] ); } if ( mc->map[b-1].argument == argument ) { /* found at b */ return &( mc->map[b-1] ); } /* some where in [a,b), do binary search */ while ( 1 ) { if ( b-1 == a ) { /* not found, insert at a+1 == b */ return OTF_MasterControl_insertMapEntry( mc, argument, b ); } c= ( a + b ) / 2; if ( mc->map[c].argument == argument ) { /* found at c */ return &( mc->map[c] ); } if ( mc->map[c].argument < argument ) { a= c; } else /* if ( mc->map[c].argument > argument ) */ { b= c; } } } int OTF_MapEntry_insertValue( OTF_MapEntry* mc, uint32_t value ) { unsigned int i; unsigned int j; unsigned int last; unsigned int middle; /* realloc ? */ if ( mc->n >= mc->s ) { mc->s= ( mc->s > 0 ) ? ( 2* mc->s ) : 10; mc->values= (uint32_t*) realloc( mc->values, mc->s * sizeof(uint32_t) ); if( NULL == mc->values ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } } /* first entry */ if ( mc->n == 0 ) { mc->values[0] = value; mc->n++; return 1; } /* search sorted list binary, move remaining entries, insert*/ i = 0; last = mc->n-1; while ( i < last+1 ) { middle = ( i + last ) / 2; if( mc->values[middle] < value ) { i = middle + 1; } else if( mc->values[middle] > value ) { last = middle - 1; } else { /* ERROR: value already there */ return 0; } } /* move al entries at > i one up */ for ( j= mc->n; j > i; j-- ) { mc->values[j]= mc->values[j-1]; } mc->values[i]= value; mc->n++; return 1; } int OTF_MasterControl_insertRMapEntry( OTF_MasterControl* mc, uint32_t rargument, uint32_t rvalue ) { unsigned int i; unsigned int j; unsigned int last; unsigned int middle; /* realloc ? */ if ( mc->rn >= mc->rs ) { mc->rs= ( mc->rs > 0 ) ? ( 2* mc->rs ) : 10; mc->rmap= (OTF_Pair*) realloc( mc->rmap, mc->rs * sizeof(OTF_Pair) ); if( NULL == mc->rmap ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } } /* search sorted list binary, move remaining entries, insert*/ i = 0; last = mc->rn-1; while ( i < last+1 ) { middle = ( i + last ) / 2; if ( mc->rmap[middle].argument < rargument ) { i = middle + 1; } else if( mc->rmap[middle].argument > rargument ) { last = middle - 1; } else { /* ERROR: value already there */ return 0; } } /* move al entries at > i one up */ for ( j= mc->rn; j > i; j-- ) { mc->rmap[j].argument= mc->rmap[j-1].argument; mc->rmap[j].value= mc->rmap[j-1].value; } mc->rmap[i].argument= rargument; mc->rmap[i].value= rvalue; mc->rn++; return 1; } int OTF_MasterControl_append( OTF_MasterControl* mc, uint32_t argument, uint32_t value ) { int ret; OTF_MapEntry* entry; if ( 0 == argument || ((uint32_t) -1) == argument ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "invalid argument value %x.\n", __FUNCTION__, __FILE__, __LINE__, argument ); return 0; } /* insert into reverse mapping first, abort if value is already there in rmap. it is important to check rmap first! */ ret= OTF_MasterControl_insertRMapEntry( mc, value, argument ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_MasterControl_insertRMapEntry() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } entry = OTF_MasterControl_getMapEntry( mc, argument ); if( NULL == entry ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_MasterControl_getMapEntry() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } return OTF_MapEntry_insertValue( entry, value ); } int OTF_MasterControl_appendList( OTF_MasterControl* mc, uint32_t argument, uint32_t l, uint32_t* values ) { uint32_t i; int ret= 1; for ( i= 0; i < l; i++ ) { ret&= OTF_MasterControl_append( mc, argument, values[i] ); } return ret; } uint32_t OTF_MasterControl_mapReverse( OTF_MasterControl* mc, uint32_t value ) { /* find value in reverse list */ unsigned int a; unsigned int b; unsigned int c; a= 0; b= mc->rn; if ( 0 >= mc->rn ) { return 0; } if ( value == mc->rmap[a].argument ) { return mc->rmap[a].value; } if ( value == mc->rmap[b-1].argument ) { return mc->rmap[b-1].value; } while ( a < b ) { c= ( a + b ) / 2; if ( value == mc->rmap[c].argument ) { /* found */ return mc->rmap[c].value; } if ( value < mc->rmap[c].argument ) { /* [a,c) */ b= c; } else { /* [c+1,b) */ a= c+1; } } return 0; } int OTF_MasterControl_write( OTF_MasterControl* mc, const char* namestub ) { char* filename= NULL; unsigned int i; unsigned int j; OTF_MapEntry* e; OTF_WBuffer* buffer; filename= OTF_getFilename( namestub, 0 /* id */, OTF_FILETYPE_MASTER /* type */, 0, NULL ); if( NULL == filename ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_getFilename() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } buffer = OTF_WBuffer_open( filename, mc->manager ); if ( NULL == buffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_open( %s ) failed.\n", __FUNCTION__, __FILE__, __LINE__, filename ); free( filename ); return 0; } OTF_WBuffer_setSize( buffer, 1024 ); free( filename ); filename = NULL; for ( i= 0; i < mc->n; i++ ) { e= &(mc->map[i]); OTF_WBuffer_writeUint32( buffer, e->argument ); OTF_WBuffer_writeChar( buffer, ':' ); if ( 0 < e->n ) { OTF_WBuffer_writeUint32( buffer, e->values[0] ); } for ( j= 1; j < e->n; j++ ) { OTF_WBuffer_writeChar( buffer, ',' ); OTF_WBuffer_writeUint32( buffer, e->values[j] ); } OTF_WBuffer_writeNewline( buffer ); } if ( OTF_FileManager_isIofsl( mc->manager ) ) { uint32_t server_num; char ** server_list; OTF_IofslMode mode; uint32_t flags; uint32_t index_buffer_length; uint32_t streamid_bits; OTF_FileManager_getIofsl( mc->manager, &server_num, &server_list, &mode, &flags, &index_buffer_length, &streamid_bits ); OTF_WBuffer_writeChar( buffer, 'i' ); OTF_WBuffer_writeUint32( buffer, server_num ); OTF_WBuffer_writeChar( buffer, ':' ); OTF_WBuffer_writeUint32( buffer, (uint32_t)mode ); OTF_WBuffer_writeChar( buffer, ':' ); OTF_WBuffer_writeUint32( buffer, streamid_bits ); OTF_WBuffer_writeNewline( buffer ); } OTF_WBuffer_close( buffer ); return 1; } int OTF_MasterControl_check( OTF_MasterControl* mc ) { unsigned int i; unsigned int j; OTF_MapEntry* e; /* check if everything is properly sorted */ /* map sorted? */ for ( i= 1; i < mc->n; i++ ) { if ( mc->map[i].argument <= mc->map[i-1].argument ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "map not sorted at %u.\n", __FUNCTION__, __FILE__, __LINE__, i ); return 0; } } /* map[x] sorted? */ for ( i= 0; i < mc->n; i++ ) { e= &(mc->map[i]); for ( j= 1; j < e->n; j++ ) { if ( e->values[j] <= e->values[j-1] ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "map[%u] not sorted at %u.\n", __FUNCTION__, __FILE__, __LINE__, i, j ); return 0; } } } /* rmap sorted */ for ( i= 1; i < mc->rn; i++ ) { if ( mc->rmap[i].argument <= mc->rmap[i-1].argument ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "rmap not sorted at %u.\n", __FUNCTION__, __FILE__, __LINE__, i ); return 0; } } return 1; } void OTF_MasterControl_print( OTF_MasterControl* mc ) { unsigned int i; unsigned int j; OTF_MapEntry* e; fprintf( stderr, "map:\n" ); for ( i= 0; i < mc->n; i++ ) { e= &(mc->map[i]); fprintf( stderr, "%x: ", e->argument ); for ( j= 0; j < e->n; j++ ) { fprintf( stderr, "%x ", e->values[j] ); } fprintf( stderr, "\n" ); } fprintf( stderr, "rmap:\n" ); for ( i= 0; i < mc->rn; i++ ) { fprintf( stderr, "%x: %x\n", mc->rmap[i].argument, mc->rmap[i].value ); } } OTF_MapEntry* OTF_MasterControl_getEntry( OTF_MasterControl* mc, uint32_t argument ) { uint32_t i; uint32_t last; uint32_t middle; if ( mc->n == 0 ) { return NULL; } i = 0; last = mc->n-1; while ( i < last+1 ) { middle = ( i + last ) / 2; if ( mc->map[middle].argument < argument ) { i = middle + 1; } else if ( mc->map[middle].argument > argument ) { last = middle - 1; } else { /* argument already there */ return &( mc->map[middle] ); } } /* argument not found */ return NULL; } OTF_MapEntry* OTF_MasterControl_getEntryByIndex( OTF_MasterControl* mc, uint32_t index ) { if ( index < mc->n ) { return &( mc->map[index] ); } return NULL; } OTF_Pair* OTF_MasterControl_getREntryByIndex( OTF_MasterControl* mc, uint32_t index ) { if ( index < mc->rn ) { return &( mc->rmap[index] ); } return NULL; } uint32_t OTF_MasterControl_getCount( OTF_MasterControl* mc ) { return mc->n; } uint32_t OTF_MasterControl_getrCount( OTF_MasterControl* mc ) { return mc->rn; } uint32_t OTF_MasterControl_getValueCount( OTF_MasterControl* mc, uint32_t argument ) { OTF_MapEntry* entry= OTF_MasterControl_getEntry( mc, argument ); if ( NULL != entry ) { return entry->n; } return 0; } uint32_t* OTF_MasterControl_getValues( OTF_MasterControl* mc, uint32_t argument ) { uint32_t i; uint32_t last; uint32_t middle; if ( mc->n == 0 ) { return NULL; } i = 0; last = mc->n-1; while ( i < last+1 ) { middle = ( i + last ) / 2; if( mc->map[middle].argument < argument ) { i = middle + 1; } else if ( mc->map[middle].argument > argument ) { last = middle - 1; } else { return mc->map[middle].values; } } /* argument not found */ return NULL; } uint32_t OTF_MasterControl_getNewStreamId( OTF_MasterControl* mc ) { uint32_t n= mc->n; /* return smallest possible stream id by default, 0 is reserved */ uint32_t ret= 1; if ( 0 < n ) { /* increment the current maximum argument by 1 */ ret= mc->map[n-1].argument +1; /* catch the worst case where the 0 and (-1) are already taken */ while ( NULL != OTF_MasterControl_getEntry(mc, ret ) || 0 == ret || ((uint32_t) -1) == ret ) { ++ret; } } return ret; } OTF_MasterControl* OTF_MasterControl_clone( OTF_MasterControl* mc, OTF_FileManager* manager ) { int ret= 1; uint32_t i; OTF_MasterControl* mc_clone; mc_clone= OTF_MasterControl_new( manager ); if ( !mc_clone ) return NULL; for ( i= 0; i < mc->n; i++ ) { OTF_MapEntry* entry= &mc->map[i]; ret = ret && OTF_MasterControl_appendList( mc_clone, entry->argument, entry->n, entry->values ); } if ( !ret ) { OTF_MasterControl_close( mc_clone ); return NULL; } return mc_clone; } eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/libotf_vs08.vcproj0000644000000000000000000000013212544237152023626 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.978893859 30 ctime=1508162366.233776343 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/libotf_vs08.vcproj0000644000175000017500000002066112544237152025022 0ustar00trahaytrahay00000000000000 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_Keywords.h0000644000000000000000000000013112544237152022731 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.295378962 29 ctime=1508162366.20177355 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_Keywords.h0000644000175000017500000003536112544237152024131 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_Keywords.h * * @brief All record format keywords are located in this file. * * \ingroup internal */ #ifndef OTF_KEYWORDS_H #define OTF_KEYWORDS_H #include "OTF_KeyValue.h" /* define all record format keywords here in order to have a single spot for them. the keywords identifying record types must follow some special rules: 1) all keywords are UPPER CASE 2) no keyword must be equal to another keyword, prefixes are allowed though 3) all definition records and only them have the prefix "DEF" or "D" 4) all summary records and only them have the prefix "SUM" or "S" 5) all status records and only them have the prefix "T" (better ideas?) 7) the prefixes for definition, summary resp. status record types are extra, the don't go into the specific definitions - see below 8) there is always a long and a short version for every keyword marked with _L_ and _S_. both versions might be equal, but always they have the same first letter given by an additional macro marked with _F_ - white spaces after the keyword should be included in the keyword */ /* *** general keywords *** */ #define OTF_KEYWORD_PROCESS_CHAR '*' /* *** definition record keywords *** */ #define OTF_KEYWORD_L_DEF_PREFIX "DEF" #define OTF_KEYWORD_S_DEF_PREFIX "D" #define OTF_KEYWORD_L_DEFTIMERRESOLUTION "TIMERRESOLUTION" #define OTF_KEYWORD_S_DEFTIMERRESOLUTION "TR" #define OTF_KEYWORD_F_DEFTIMERRESOLUTION 'T' #define OTF_KEYWORD_L_DEFPROCESS "PROCESS" #define OTF_KEYWORD_S_DEFPROCESS "P" #define OTF_KEYWORD_F_DEFPROCESS 'P' #define OTF_KEYWORD_L_DEFPROCESSGROUP "PROCESSGROUP" #define OTF_KEYWORD_S_DEFPROCESSGROUP "PG" #define OTF_KEYWORD_F_DEFPROCESSGROUP 'P' #define OTF_KEYWORD_L_DEFATTRLIST "ATTRIBUTELIST" #define OTF_KEYWORD_S_DEFATTRLIST "A" #define OTF_KEYWORD_F_DEFATTRLIST 'A' #define OTF_KEYWORD_L_DEFPROCESSORGROUPATTR "PROCESSORGROUPATTR" #define OTF_KEYWORD_S_DEFPROCESSORGROUPATTR "PGA" #define OTF_KEYWORD_F_DEFPROCESSORGROUPATTR 'P' #define OTF_KEYWORD_L_DEFFUNCTION "FUNCTION" #define OTF_KEYWORD_S_DEFFUNCTION "F" #define OTF_KEYWORD_F_DEFFUNCTION 'F' #define OTF_KEYWORD_L_DEFFUNCTIONGROUP "FUNCTIONGROUP" #define OTF_KEYWORD_S_DEFFUNCTIONGROUP "FG" #define OTF_KEYWORD_F_DEFFUNCTIONGROUP 'F' #define OTF_KEYWORD_L_DEFCOLLOP "COLLOP" #define OTF_KEYWORD_S_DEFCOLLOP "CO" #define OTF_KEYWORD_F_DEFCOLLOP 'C' #define OTF_KEYWORD_L_DEFCOUNTER "COUNTER" #define OTF_KEYWORD_S_DEFCOUNTER "CNT" #define OTF_KEYWORD_F_DEFCOUNTER 'C' #define OTF_KEYWORD_L_DEFCOUNTERGROUP "COUNTERGROUP" #define OTF_KEYWORD_S_DEFCOUNTERGROUP "CG" #define OTF_KEYWORD_F_DEFCOUNTERGROUP 'C' #define OTF_KEYWORD_L_DEFINITIONCOMMENT "COMMENT" #define OTF_KEYWORD_S_DEFINITIONCOMMENT "CMT" #define OTF_KEYWORD_F_DEFINITIONCOMMENT 'C' #define OTF_KEYWORD_L_DEFSCL "SCL" #define OTF_KEYWORD_S_DEFSCL "S" #define OTF_KEYWORD_F_DEFSCL 'S' #define OTF_KEYWORD_L_DEFSCLFILE "SCLFILE" #define OTF_KEYWORD_S_DEFSCLFILE "SF" #define OTF_KEYWORD_F_DEFSCLFILE 'S' #define OTF_KEYWORD_L_DEFUNIQUEID "UNIQUEID" #define OTF_KEYWORD_S_DEFUNIQUEID "UI" #define OTF_KEYWORD_F_DEFUNIQUEID 'U' #define OTF_KEYWORD_L_DEFVERSION "VERSION" #define OTF_KEYWORD_S_DEFVERSION "V" #define OTF_KEYWORD_F_DEFVERSION 'V' #define OTF_KEYWORD_L_DEFCREATOR "CREATOR" #define OTF_KEYWORD_S_DEFCREATOR "CR" #define OTF_KEYWORD_F_DEFCREATOR 'C' #define OTF_KEYWORD_L_DEFFILE "FILE" #define OTF_KEYWORD_S_DEFFILE "FL" #define OTF_KEYWORD_F_DEFFILE 'F' #define OTF_KEYWORD_L_DEFFILEGROUP "FILEGROUP" #define OTF_KEYWORD_S_DEFFILEGROUP "FLG" #define OTF_KEYWORD_F_DEFFILEGROUP 'F' #define OTF_KEYWORD_L_DEFKEYVALUE "KEYVALUE" #define OTF_KEYWORD_S_DEFKEYVALUE "K" #define OTF_KEYWORD_F_DEFKEYVALUE 'K' #define OTF_KEYWORD_L_DEFTIMERANGE "TIMERANGE" #define OTF_KEYWORD_S_DEFTIMERANGE "TRG" #define OTF_KEYWORD_F_DEFTIMERANGE 'T' #define OTF_KEYWORD_L_DEFCOUNTERASSIGNMENTS "COUNTERASSIGNMENTS" #define OTF_KEYWORD_S_DEFCOUNTERASSIGNMENTS "CA" #define OTF_KEYWORD_F_DEFCOUNTERASSIGNMENTS 'C' #define OTF_KEYWORD_L_DEFPROCESSSUBSTITUTES "PROCESSSUBSTITUTES" #define OTF_KEYWORD_S_DEFPROCESSSUBSTITUTES "PS" #define OTF_KEYWORD_F_DEFPROCESSSUBSTITUTES 'P' #define OTF_KEYWORD_L_DEFAUXSAMPLEPOINT "AUXSAMPLEPOINT" #define OTF_KEYWORD_S_DEFAUXSAMPLEPOINT "AUX" #define OTF_KEYWORD_F_DEFAUXSAMPLEPOINT 'A' /* *** event record keywords *** */ #define OTF_KEYWORD_L_NOOP "NOOP" #define OTF_KEYWORD_S_NOOP "N" #define OTF_KEYWORD_F_NOOP 'N' #define OTF_KEYWORD_L_ENTER "ENTER" #define OTF_KEYWORD_S_ENTER "E" #define OTF_KEYWORD_F_ENTER 'E' #define OTF_KEYWORD_L_LEAVE "LEAVE" #define OTF_KEYWORD_S_LEAVE "L" #define OTF_KEYWORD_F_LEAVE 'L' #define OTF_KEYWORD_L_RECEIVE "RECEIVE" #define OTF_KEYWORD_S_RECEIVE "R" #define OTF_KEYWORD_F_RECEIVE 'R' #define OTF_KEYWORD_L_SEND "SEND" #define OTF_KEYWORD_S_SEND "S" #define OTF_KEYWORD_F_SEND 'S' #define OTF_KEYWORD_L_COUNTER "COUNTER" #define OTF_KEYWORD_S_COUNTER "CNT" #define OTF_KEYWORD_F_COUNTER 'C' #define OTF_KEYWORD_L_COLLECTIVEOPERATION "COLLOP" #define OTF_KEYWORD_S_COLLECTIVEOPERATION "COP" #define OTF_KEYWORD_F_COLLECTIVEOPERATION 'C' #define OTF_KEYWORD_L_EVENTCOMMENT "#EVTCOMMENT" #define OTF_KEYWORD_S_EVENTCOMMENT "#" #define OTF_KEYWORD_F_EVENTCOMMENT '#' #define OTF_KEYWORD_L_BEGINPROCESS "PROCESSBEGIN" #define OTF_KEYWORD_S_BEGINPROCESS "PB" #define OTF_KEYWORD_F_BEGINPROCESS 'P' #define OTF_KEYWORD_L_ENDPROCESS "PROCESSEND" #define OTF_KEYWORD_S_ENDPROCESS "PE" #define OTF_KEYWORD_F_ENDPROCESS 'P' #define OTF_KEYWORD_L_FILEOPERATION "FILEOP" #define OTF_KEYWORD_S_FILEOPERATION "F" #define OTF_KEYWORD_F_FILEOPERATION 'F' #define OTF_KEYWORD_L_RMAPUT "TRMAPUT" #define OTF_KEYWORD_S_RMAPUT "T" #define OTF_KEYWORD_F_RMAPUT 'T' #define OTF_KEYWORD_L_RMAPUTRE "URMAPUTRE" #define OTF_KEYWORD_S_RMAPUTRE "U" #define OTF_KEYWORD_F_RMAPUTRE 'U' #define OTF_KEYWORD_L_RMAGET "GRMAGET" #define OTF_KEYWORD_S_RMAGET "G" #define OTF_KEYWORD_F_RMAGET 'G' #define OTF_KEYWORD_L_RMAEND "MRMAEND" #define OTF_KEYWORD_S_RMAEND "M" #define OTF_KEYWORD_F_RMAEND 'M' #define OTF_KEYWORD_L_BEGINCOLLECTIVEOPERATION "COLLOPBEGIN" #define OTF_KEYWORD_S_BEGINCOLLECTIVEOPERATION "COPB" #define OTF_KEYWORD_F_BEGINCOLLECTIVEOPERATION 'C' #define OTF_KEYWORD_L_ENDCOLLECTIVEOPERATION "COLLOPEND" #define OTF_KEYWORD_S_ENDCOLLECTIVEOPERATION "COPE" #define OTF_KEYWORD_F_ENDCOLLECTIVEOPERATION 'C' /* the OLD/NEW thing for begin as well to make begin and end handled the same */ #define OTF_KEYWORD_L_BEGINFILEOPERATION_OLD "FILEOPBEGIN" #define OTF_KEYWORD_S_BEGINFILEOPERATION_OLD "FB" #define OTF_KEYWORD_F_BEGINFILEOPERATION_OLD 'F' #define OTF_KEYWORD_L_BEGINFILEOPERATION_NEW "FILEOPBEGINNEW" #define OTF_KEYWORD_S_BEGINFILEOPERATION_NEW "FA" #define OTF_KEYWORD_F_BEGINFILEOPERATION_NEW 'F' /* the OLD/NEW thing fixes upward compatibility after changing the record contents */ #define OTF_KEYWORD_L_ENDFILEOPERATION_OLD "FILEOPEND" #define OTF_KEYWORD_S_ENDFILEOPERATION_OLD "FE" #define OTF_KEYWORD_F_ENDFILEOPERATION_OLD 'F' #define OTF_KEYWORD_L_ENDFILEOPERATION_NEW "FILEOPENDNEW" #define OTF_KEYWORD_S_ENDFILEOPERATION_NEW "FF" #define OTF_KEYWORD_F_ENDFILEOPERATION_NEW 'F' /* *** summary record keywords *** */ #define OTF_KEYWORD_L_SUM_PREFIX "SUM" #define OTF_KEYWORD_S_SUM_PREFIX "S" #define OTF_KEYWORD_F_SUM_PREFIX 'S' #define OTF_KEYWORD_L_SUMFUNCTION "FUNCTION" #define OTF_KEYWORD_S_SUMFUNCTION "F" #define OTF_KEYWORD_F_SUMFUNCTION 'F' #define OTF_KEYWORD_L_SUMFUNCTIONGROUP "FUNCTIONGROUP" #define OTF_KEYWORD_S_SUMFUNCTIONGROUP "G" #define OTF_KEYWORD_F_SUMFUNCTIONGROUP 'G' #define OTF_KEYWORD_L_SUMMESSAGE "MESSAGE" #define OTF_KEYWORD_S_SUMMESSAGE "M" #define OTF_KEYWORD_F_SUMMESSAGE 'M' #define OTF_KEYWORD_L_COLLOPMESSAGE "COLLMESSAGE" #define OTF_KEYWORD_S_COLLOPMESSAGE "CO" #define OTF_KEYWORD_F_COLLOPMESSAGE 'C' #define OTF_KEYWORD_L_SUMCOMMENT "COMMENT" #define OTF_KEYWORD_S_SUMCOMMENT "C" #define OTF_KEYWORD_F_SUMCOMMENT 'C' #define OTF_KEYWORD_L_SUMFILEOPERATION "FILEOPERATION" #define OTF_KEYWORD_S_SUMFILEOPERATION "FL" #define OTF_KEYWORD_F_SUMFILEOPERATION 'F' #define OTF_KEYWORD_L_SUMFILEGROUPOPERATION "FILEGROUPOPERATION" #define OTF_KEYWORD_S_SUMFILEGROUPOPERATION "FLG" #define OTF_KEYWORD_F_SUMFILEGROUPOPERATION 'F' /* *** status record keywords *** */ #define OTF_KEYWORD_L_STATUS_PREFIX "T" #define OTF_KEYWORD_S_STATUS_PREFIX "T" /* *** snapshot keywords */ #define OTF_KEYWORD_L_SNAPSHOT_PREFIX "T" #define OTF_KEYWORD_S_SNAPSHOT_PREFIX "T" #define OTF_KEYWORD_F_SNAPSHOT_PREFIX 'T' #define OTF_KEYWORD_L_SNAPSHOT_ENTER "ENTER" #define OTF_KEYWORD_S_SNAPSHOT_ENTER "E" #define OTF_KEYWORD_F_SNAPSHOT_ENTER 'E' #define OTF_KEYWORD_L_SNAPSHOT_SEND "SEND" #define OTF_KEYWORD_S_SNAPSHOT_SEND "S" #define OTF_KEYWORD_F_SNAPSHOT_SEND 'S' #define OTF_KEYWORD_L_SNAPSHOT_COMMENT "COMMENT" #define OTF_KEYWORD_S_SNAPSHOT_COMMENT "C" #define OTF_KEYWORD_F_SNAPSHOT_COMMENT 'C' #define OTF_KEYWORD_L_SNAPSHOT_OPENFILE "OPENFILE" #define OTF_KEYWORD_S_SNAPSHOT_OPENFILE "OF" #define OTF_KEYWORD_F_SNAPSHOT_OPENFILE 'O' #define OTF_KEYWORD_L_SNAPSHOT_BEGINCOLLOP "BEGINCOLLOP" #define OTF_KEYWORD_S_SNAPSHOT_BEGINCOLLOP "BC" #define OTF_KEYWORD_F_SNAPSHOT_BEGINCOLLOP 'B' #define OTF_KEYWORD_L_SNAPSHOT_BEGINFILEOP "BEGINFILEOP" #define OTF_KEYWORD_S_SNAPSHOT_BEGINFILEOP "BF" #define OTF_KEYWORD_F_SNAPSHOT_BEGINFILEOP 'B' #define OTF_KEYWORD_L_SNAPSHOT_COLLOPCOUNT "COLLOPCOUNT" #define OTF_KEYWORD_S_SNAPSHOT_COLLOPCOUNT "COC" #define OTF_KEYWORD_F_SNAPSHOT_COLLOPCOUNT 'C' #define OTF_KEYWORD_L_SNAPSHOT_COUNTER "COUNTER" #define OTF_KEYWORD_S_SNAPSHOT_COUNTER "CNT" #define OTF_KEYWORD_F_SNAPSHOT_COUNTER 'C' /* *** marker keywords */ #define OTF_KEYWORD_L_MARKER_PREFIX "MARKER" #define OTF_KEYWORD_S_MARKER_PREFIX "M" #define OTF_KEYWORD_F_MARKER_PREFIX 'M' #define OTF_KEYWORD_L_MARKER_DEFMARKER "DEF" #define OTF_KEYWORD_S_MARKER_DEFMARKER "D" #define OTF_KEYWORD_F_MARKER_DEFMARKER 'D' #define OTF_KEYWORD_L_MARKER_MARKERSPOT "SPOT" #define OTF_KEYWORD_S_MARKER_MARKERSPOT "S" #define OTF_KEYWORD_F_MARKER_MARKERSPOT 'S' /* *** keyvalue keywords *** */ #define OTF_KEYWORD_L_KEYVALUE_PREFIX "KEY" #define OTF_KEYWORD_S_KEYVALUE_PREFIX "K" #define OTF_KEYWORD_F_KEYVALUE_PREFIX 'K' /* *** local keywords *** */ #define OTF_KEYWORD_L_LOCAL_BYTES "BYTES" #define OTF_KEYWORD_S_LOCAL_BYTES "B" #define OTF_KEYWORD_L_LOCAL_BYTESREAD "BYTESREAD" #define OTF_KEYWORD_S_LOCAL_BYTESREAD "BR" #define OTF_KEYWORD_L_LOCAL_BYTESWRITE "BYTESWRITE" #define OTF_KEYWORD_S_LOCAL_BYTESWRITE "BW" #define OTF_KEYWORD_L_LOCAL_COLLECTIVE "COLL" #define OTF_KEYWORD_S_LOCAL_COLLECTIVE "CL" #define OTF_KEYWORD_L_LOCAL_COMMUNICATOR "COMM" #define OTF_KEYWORD_S_LOCAL_COMMUNICATOR "C" #define OTF_KEYWORD_L_LOCAL_COUNT "COUNT" #define OTF_KEYWORD_S_LOCAL_COUNT "N" #define OTF_KEYWORD_L_LOCAL_COUNTER "COUNTER" #define OTF_KEYWORD_S_LOCAL_COUNTER "CNT" #define OTF_KEYWORD_L_LOCAL_DURATION "DUR" #define OTF_KEYWORD_S_LOCAL_DURATION "D" #define OTF_KEYWORD_L_LOCAL_EXCLTIME "EXCL" #define OTF_KEYWORD_S_LOCAL_EXCLTIME "E" #define OTF_KEYWORD_L_LOCAL_FILE "FILE" #define OTF_KEYWORD_S_LOCAL_FILE "F" #define OTF_KEYWORD_L_LOCAL_GROUP "GROUP" #define OTF_KEYWORD_S_LOCAL_GROUP "G" #define OTF_KEYWORD_L_LOCAL_HANDLEID "HANDLEID" #define OTF_KEYWORD_S_LOCAL_HANDLEID "H" #define OTF_KEYWORD_L_LOCAL_INCLTIME "INCL" #define OTF_KEYWORD_S_LOCAL_INCLTIME "I" #define OTF_KEYWORD_L_LOCAL_LENGTH "LEN" #define OTF_KEYWORD_S_LOCAL_LENGTH "L" #define OTF_KEYWORD_L_LOCAL_LINE "LINE" #define OTF_KEYWORD_S_LOCAL_LINE "LN" #define OTF_KEYWORD_L_LOCAL_MATCHID "MATCHID" #define OTF_KEYWORD_S_LOCAL_MATCHID "MI" #define OTF_KEYWORD_L_LOCAL_MEMBERS "MEMBERS" #define OTF_KEYWORD_S_LOCAL_MEMBERS "M" #define OTF_KEYWORD_L_LOCAL_NAME "NAME" #define OTF_KEYWORD_S_LOCAL_NAME "NM" #define OTF_KEYWORD_L_LOCAL_NUMBERSENT "NUMSENT" #define OTF_KEYWORD_S_LOCAL_NUMBERSENT "NS" #define OTF_KEYWORD_L_LOCAL_NUMBERCLOSE "NUMCLOSE" #define OTF_KEYWORD_S_LOCAL_NUMBERCLOSE "NC" #define OTF_KEYWORD_L_LOCAL_NUMBERREAD "NUMREAD" #define OTF_KEYWORD_S_LOCAL_NUMBERREAD "NRD" #define OTF_KEYWORD_L_LOCAL_NUMBERRECVD "NUMRECVD" #define OTF_KEYWORD_S_LOCAL_NUMBERRECVD "NR" #define OTF_KEYWORD_L_LOCAL_NUMBERSEEK "NUMSEEK" #define OTF_KEYWORD_S_LOCAL_NUMBERSEEK "NSK" #define OTF_KEYWORD_L_LOCAL_NUMBEROPEN "NUMOPEN" #define OTF_KEYWORD_S_LOCAL_NUMBEROPEN "NO" #define OTF_KEYWORD_L_LOCAL_NUMBERWRITE "NUMWRITTEN" #define OTF_KEYWORD_S_LOCAL_NUMBERWRITE "NW" #define OTF_KEYWORD_L_LOCAL_OPERATION "OPERATION" #define OTF_KEYWORD_S_LOCAL_OPERATION "OP" #define OTF_KEYWORD_L_LOCAL_OTIME "OTIME" #define OTF_KEYWORD_S_LOCAL_OTIME "O" #define OTF_KEYWORD_L_LOCAL_PARENT "PARENT" #define OTF_KEYWORD_S_LOCAL_PARENT "PT" #define OTF_KEYWORD_L_LOCAL_PROPERTIES "PROPERTIES" #define OTF_KEYWORD_S_LOCAL_PROPERTIES "P" #define OTF_KEYWORD_L_LOCAL_RECVD "RECVD" #define OTF_KEYWORD_S_LOCAL_RECVD "R" #define OTF_KEYWORD_L_LOCAL_ROOT "ROOT" #define OTF_KEYWORD_S_LOCAL_ROOT "RT" #define OTF_KEYWORD_L_LOCAL_SCL "SCL" #define OTF_KEYWORD_S_LOCAL_SCL "X" #define OTF_KEYWORD_L_LOCAL_SENT "SENT" #define OTF_KEYWORD_S_LOCAL_SENT "S" #define OTF_KEYWORD_L_LOCAL_TAG "TAG" #define OTF_KEYWORD_S_LOCAL_TAG "T" #define OTF_KEYWORD_L_LOCAL_TYPE "TYPE" #define OTF_KEYWORD_S_LOCAL_TYPE "Y" #define OTF_KEYWORD_L_LOCAL_UNIT "UNIT" #define OTF_KEYWORD_S_LOCAL_UNIT "U" #define OTF_KEYWORD_L_LOCAL_VALUE "VALUE" #define OTF_KEYWORD_S_LOCAL_VALUE "V" #define OTF_KEYWORD_L_LOCAL_TIME "TIME" #define OTF_KEYWORD_S_LOCAL_TIME "T" #define OTF_KEYWORD_L_LOCAL_PROCESS "PROCESS" #define OTF_KEYWORD_S_LOCAL_PROCESS "P" #endif /* OTF_KEYWORDS_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_Definitions.h0000644000000000000000000000013212544237152023376 xustar0030 mtime=1435582058.531899952 30 atime=1508138854.179376065 30 ctime=1508162366.181771804 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_Definitions.h0000644000175000017500000002327612544237152024577 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_Definitions.h * * @brief Provides many many macros for different purposes. * * \ingroup misc */ #ifndef OTF_DEFINITIONS_H #define OTF_DEFINITIONS_H #include "OTF_Version.h" /* definitions of record type identifiers */ /* Event records -- have them numbered and sorted, this does not affect the format at all. This is always safe with recompilation and re-linking, yet it breaks the link compatibility of library versions.*/ #define OTF_EVENTCOMMENT_RECORD 0 #define OTF_COUNTER_RECORD 1 #define OTF_ENTER_RECORD 2 #define OTF_NOOP_RECORD 58 #define OTF_COLLOP_RECORD 5 #define OTF_RECEIVE_RECORD 10 #define OTF_SEND_RECORD 11 #define OTF_LEAVE_RECORD 12 #define OTF_BEGINPROCESS_RECORD 35 #define OTF_ENDPROCESS_RECORD 36 #define OTF_FILEOPERATION_RECORD 42 #define OTF_RMAPUT_RECORD 47 #define OTF_RMAPUTRE_RECORD 48 #define OTF_RMAGET_RECORD 49 #define OTF_RMAEND_RECORD 50 #define OTF_BEGINCOLLOP_RECORD 51 #define OTF_ENDCOLLOP_RECORD 52 #define OTF_BEGINFILEOP_RECORD 53 #define OTF_ENDFILEOP_RECORD 54 /* Definition records*/ #define OTF_DEFTIMERRESOLUTION_RECORD 13 #define OTF_DEFPROCESS_RECORD 14 #define OTF_DEFPROCESSGROUP_RECORD 15 #define OTF_DEFATTRLIST_RECORD 55 #define OTF_DEFPROCESSORGROUPATTR_RECORD 56 #define OTF_DEFPROCESSSUBSTITUTES_RECORD 63 #define OTF_DEFFUNCTION_RECORD 16 #define OTF_DEFFUNCTIONGROUP_RECORD 17 #define OTF_DEFCOUNTER_RECORD 18 #define OTF_DEFCOUNTERGROUP_RECORD 19 #define OTF_DEFCOLLOP_RECORD 20 #define OTF_DEFSCL_RECORD 21 #define OTF_DEFSCLFILE_RECORD 22 #define OTF_DEFVERSION_RECORD 23 #define OTF_DEFCREATOR_RECORD 24 #define OTF_DEFFILE_RECORD 25 #define OTF_DEFFILEGROUP_RECORD 26 #define OTF_DEFTIMERANGE_RECORD 61 #define OTF_DEFCOUNTERASSIGNMENTS_RECORD 62 #define OTF_DEFKEYVALUE_RECORD 57 #define OTF_DEFUNIQUEID_RECORD 64 #define OTF_DEFAUXSAMPLEPOINT_RECORD 65 #define OTF_FUNCTIONSUMMARY_RECORD 28 #define OTF_FUNCTIONGROUPSUMMARY_RECORD 29 #define OTF_MESSAGESUMMARY_RECORD 30 #define OTF_COLLOPSUMMARY_RECORD 44 #define OTF_FILEOPERATIONSUMMARY_RECORD 31 #define OTF_FILEGROUPOPERATIONSUMMARY_RECORD 32 #define OTF_DEFINITIONCOMMENT_RECORD 34 #define OTF_ENTERSNAPSHOT_RECORD 37 #define OTF_SENDSNAPSHOT_RECORD 38 #define OTF_SUMMARYCOMMENT_RECORD 39 #define OTF_SNAPSHOTCOMMENT_RECORD 40 #define OTF_OPENFILESNAPSHOT_RECORD 43 #define OTF_BEGINCOLLOPSNAPSHOT_RECORD 59 #define OTF_BEGINFILEOPSNAPSHOT_RECORD 60 #define OTF_COLLOPCOUNTSNAPSHOT_RECORD 66 #define OTF_COUNTERSNAPSHOT_RECORD 67 #define OTF_UNKNOWN_RECORD 41 #define OTF_DEFMARKER_RECORD 45 #define OTF_MARKER_RECORD 46 /* Number of records */ #define OTF_NRECORDS 68 /* Stream format definition */ #define OTF_WSTREAM_FORMAT_SHORT 0 #define OTF_WSTREAM_FORMAT_LONG 1 #define OTF_WSTREAM_FORMAT_INLINE_SNAPSHOTS 2 /* Counter properties There are three groups of counter properties that can be combined. Not all combinations make perfect sense, some are only there for completeness. For all groups the _BITS macro allows to identify the bits that are valid for this group. This might be useful to AND away all other bits. */ /* The counter type uses the first bit (the second is reserved so far). It says whether the counter is an accumulating counter ( OTF_COUNTER_TYPE_ACC) that is monotonously increasing. Then it's probably a good idea to visualize it's derivative instead of the original value. The alternative is an absolute value (OTF_COUNTER_TYPE_ABS) that should be displayed as is. */ /* 1st-2nd bit */ #define OTF_COUNTER_TYPE_BITS 3 #define OTF_COUNTER_TYPE_ACC 0 #define OTF_COUNTER_TYPE_ABS 1 /* The counter scope says when the values have been collected or for which interval of time they are valid. It uses the 3rd and 4th bit(bit 5 is reserved again). The default is OTF_COUNTER_SCOPE_START which means the values belong to the time interval since the beginning of the measurement. OTF_COUNTER_SCOPE_POINT means the value is only valid at a point in time but not necessarily for any interval of time. OTF_COUNTER_SCOPE_LAST means the value is related to the time interval since the last counter sample of the same counter, i.e. the immediate past. And finally OTF_COUNTER_SCOPE_NEXT means it is valid from now until the next counter sample, i.e. the future right ahead. */ #define OTF_COUNTER_SCOPE_BITS 12 #define OTF_COUNTER_SCOPE_START 0 #define OTF_COUNTER_SCOPE_POINT 4 #define OTF_COUNTER_SCOPE_LAST 8 #define OTF_COUNTER_SCOPE_NEXT 12 /* Finally, there is the variable type which occupies the 6th - 9th bit. The bit values are chosen to allow easy distinction of integers and non-integers as well as unsigned and signed. Furthermore, there are some macros to ask for the type. Some similar macros could be added for convenience. */ #define OTF_COUNTER_VARTYPE_ISINTEGER(x) (x < 256) #define OTF_COUNTER_VARTYPE_ISSIGNED(x) ((x&32) == 32) #define OTF_COUNTER_VARTYPE_ISUNSIGNED(x) ((x&32) == 0) #define OTF_COUNTER_VARTYPE_BITS 480 /* 1111xxxxx */ #define OTF_COUNTER_VARTYPE_UNSIGNED8 0 /* 0000 */ #define OTF_COUNTER_VARTYPE_SIGNED8 32 /* 0001 */ #define OTF_COUNTER_VARTYPE_UNSIGNED4 64 /* 0010 */ #define OTF_COUNTER_VARTYPE_SIGNED4 96 /* 0011 */ #define OTF_COUNTER_VARTYPE_UNSIGNED2 128 /* 0100 */ #define OTF_COUNTER_VARTYPE_SIGNED2 160 /* 0101 */ #define OTF_COUNTER_VARTYPE_FLOAT 256 /* 1000 */ #define OTF_COUNTER_VARTYPE_DOUBLE 288 /* 1001 */ #define OTF_COUNTER_PROP_DEFAULT 0 /* Types of collective operations */ #define OTF_COLLECTIVE_TYPE_UNKNOWN 0 #define OTF_COLLECTIVE_TYPE_BARRIER 1 #define OTF_COLLECTIVE_TYPE_ONE2ALL 2 #define OTF_COLLECTIVE_TYPE_ALL2ONE 3 #define OTF_COLLECTIVE_TYPE_ALL2ALL 4 /* File Operations - 32-bit The bits 0-5 contain the identifier of the file operation that has happened. The bits 6-31 are bit flags that carry additional information on the operation. A macro allows for accessing the file operation in a convenient way. */ #define OTF_FILEOP_BITS 0x0000001f #define OTF_FILEOP_OPEN 0 #define OTF_FILEOP_CLOSE 1 #define OTF_FILEOP_READ 2 #define OTF_FILEOP_WRITE 3 #define OTF_FILEOP_SEEK 4 #define OTF_FILEOP_UNLINK 5 #define OTF_FILEOP_RENAME 6 #define OTF_FILEOP_DUP 7 #define OTF_FILEOP_SYNC 8 #define OTF_FILEOP_LOCK 9 #define OTF_FILEOP_UNLOCK 10 #define OTF_FILEOP_OTHER 31 #define OTF_IOFLAGS_BITS 0xffffffe0 #define OTF_IOFLAG_IOFAILED 32 #define OTF_IOFLAG_ASYNC 64 #define OTF_IOFLAG_COLL 128 #define OTF_IOFLAG_DIRECT 256 #define OTF_IOFLAG_SYNC 512 #define OTF_IOFLAG_ISREADLOCK 1024 #define OTF_FILEOP(x) (x & OTF_FILEOP_BITS) /* Types of markers */ #define OTF_MARKER_TYPE_UNKNOWN 0 #define OTF_MARKER_TYPE_ERROR 1 #define OTF_MARKER_TYPE_WARNING 2 #define OTF_MARKER_TYPE_HINT 3 /* otf_errno related defines */ #define OTF_ERR_LEN 1000 #define OTF_NO_ERROR 0 #define OTF_ERROR -1 extern char otf_strerr[OTF_ERR_LEN]; extern int otf_errno; /* OTF_KeyValueList related defines */ /* This macro defines the maximum length of a byte array that can be appended internally to an OTF_KeyValueList() --> internal use only For the user a byte array can contain an unlimited number of bytes. NOTE: Do not edit this constant unless you know exactly what you do! */ #define OTF_KEYVALUE_MAX_ARRAY_LEN 100 /* enum used for DefAttributeList record */ /** An enum which holds all values that are possible to set with datatype OTF_ATTR_TYPE().*/ typedef enum OTF_ATTR_TYPE_enum { OTF_ATTR_UNKNOWN = 0, /**< */ OTF_ATTR_IsMPIRank = 1, /**< */ OTF_ATTR_IsPThread = 2, /**< */ OTF_ATTR_IsOMPThread = 3, /**< */ OTF_ATTR_IsCellSPUThread = 4, /**< */ OTF_ATTR_hasGroupCounters = 5, /**< */ OTF_ATTR_hasEnterLeaveRecords = 6, /**< */ OTF_ATTR_IsCommunicator = 7, /**< */ OTF_ATTR_IsCUDAThread = 8, /**< */ OTF_ATTR_IsMasterThread = 9 /**< */ } OTF_ATTR_TYPE; /** Types of AuxSamplePoints */ typedef enum OTF_AuxSamplePointType_enum { /** There are snapshot information available at this time. */ OTF_AUX_SAMPLE_POINT_SNAPSHOT = 0, /** There are summary information available at this time. */ OTF_AUX_SAMPLE_POINT_SUMMARY = 1, /** There are snapshot information available in the event stream at this time. */ OTF_AUX_SAMPLE_POINT_INLINE_SNAPSHOT = 2 } OTF_AuxSamplePointType; /* return values for handlers. they are not yet evaluated!!! */ /** When writing an own handler, use these macros to tell OTF, what to do. if you return OTF_RETURN_OK OTF continues reading the trace and calling the appropriate handlers. If you return OTF_RETURN_BREAK or OTF_RETURN_ABORT OTF stops reading immediately */ #define OTF_RETURN_OK 0 /** @see OTF_RETURN_OK */ #define OTF_RETURN_BREAK 1 /** @see OTF_RETURN_OK */ #define OTF_RETURN_ABORT 1 #define OTF_READ_ERROR (uint64_t)-1 #define OTF_READ_MAXRECORDS (uint64_t)-2 #define OTF_ZBUFFER_DEFAULTSIZE (1 * 1024 * 1024) enum enum_OTF_IofslMode { OTF_IOFSL_DISABLED = 0, OTF_IOFSL_MULTIFILE_SPLIT = 1, OTF_IOFSL_MULTIFILE = 2 }; typedef enum enum_OTF_IofslMode OTF_IofslMode; /** size in number of IdxEntry's (16 byte each) */ #define OTF_IOFSL_INDEX_BUFFER_DEFAULTLENGTH (1 * 1024) #define OTF_IOFSL_FLAG_NONBLOCKING (1<<0) #endif /* OTF_DEFINITIONS_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_CopyHandler.h0000644000000000000000000000013212544237152023333 xustar0030 mtime=1435582058.531899952 30 atime=1508138854.207376764 30 ctime=1508162366.181771804 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_CopyHandler.h0000644000175000017500000002607012544237152024527 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_CopyHandler.h * * @brief Provides handlers for copying a trace. * * \ingroup internal */ #ifndef OTF_COPYHANDLER_H #define OTF_COPYHANDLER_H #include "OTF_inttypes.h" #include "OTF_Definitions.h" #include "OTF_KeyValue.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ int OTF_CopyHandler_DefinitionComment( void* userData, uint32_t stream, const char* comment, OTF_KeyValueList* list ); int OTF_CopyHandler_DefTimerResolution( void* userData, uint32_t stream, uint64_t ticksPerSecond, OTF_KeyValueList* list ); int OTF_CopyHandler_DefProcess( void* userData, uint32_t stream, uint32_t process, const char* name, uint32_t parent, OTF_KeyValueList* list ); int OTF_CopyHandler_DefProcessGroup( void* userData, uint32_t stream, uint32_t procGroup, const char* name, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList* list ); int OTF_CopyHandler_DefAttributeList( void* userData, uint32_t stream, uint32_t attr_token, uint32_t num, OTF_ATTR_TYPE* array, OTF_KeyValueList* list ); int OTF_CopyHandler_DefProcessOrGroupAttributes( void* userData, uint32_t stream, uint32_t proc_token, uint32_t attr_token, OTF_KeyValueList* list ); int OTF_CopyHandler_DefFunction( void* userData, uint32_t stream, uint32_t func, const char* name, uint32_t funcGroup, uint32_t source, OTF_KeyValueList* list ); int OTF_CopyHandler_DefFunctionGroup( void* userData, uint32_t stream, uint32_t funcGroup, const char* name, OTF_KeyValueList* list ); int OTF_CopyHandler_DefCollectiveOperation( void* userData, uint32_t stream, uint32_t collOp, const char* name, uint32_t type, OTF_KeyValueList* list ); int OTF_CopyHandler_DefCounter( void* userData, uint32_t stream, uint32_t counter, const char* name, uint32_t properties, uint32_t counterGroup, const char* unit, OTF_KeyValueList* list ); int OTF_CopyHandler_DefCounterGroup( void* userData, uint32_t stream, uint32_t counterGroup, const char* name, OTF_KeyValueList* list ); int OTF_CopyHandler_DefScl( void* userData, uint32_t stream, uint32_t source, uint32_t sourceFile, uint32_t line, OTF_KeyValueList* list ); int OTF_CopyHandler_DefSclFile( void* userData, uint32_t stream, uint32_t sourceFile, const char* name, OTF_KeyValueList* list ); int OTF_CopyHandler_DefUniqueId( void* userData, uint32_t stream, uint64_t uid ); int OTF_CopyHandler_DefVersion( void* userData, uint32_t stream, uint8_t major, uint8_t minor, uint8_t sub, const char* string ); int OTF_CopyHandler_DefCreator( void* userData, uint32_t stream, const char* creator, OTF_KeyValueList* list ); int OTF_CopyHandler_DefFile( void* userData, uint32_t stream, uint32_t token, const char* name, uint32_t group, OTF_KeyValueList* list ); int OTF_CopyHandler_DefFileGroup( void* userData, uint32_t stream, uint32_t token, const char* name, OTF_KeyValueList* list ); int OTF_CopyHandler_DefKeyValue( void* userData, uint32_t stream, uint32_t key, OTF_Type type, const char* name, const char* description, OTF_KeyValueList* list ); int OTF_CopyHandler_DefTimeRange( void* userData, uint32_t stream, uint64_t minTime, uint64_t maxTime, OTF_KeyValueList* list ); int OTF_CopyHandler_DefCounterAssignments( void* userData, uint32_t stream, uint32_t counter, uint32_t number_of_members, const uint32_t* procs_or_groups, OTF_KeyValueList* list ); int OTF_CopyHandler_DefProcessSubstitutes( void* userData, uint32_t stream, uint32_t representative, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList* list ); int OTF_CopyHandler_DefAuxSamplePoint( void* userData, uint32_t stream, uint64_t time, OTF_AuxSamplePointType type, OTF_KeyValueList* list ); int OTF_CopyHandler_NoOp( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList* list ); int OTF_CopyHandler_Enter( void* userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList* list ); int OTF_CopyHandler_Leave( void* userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList* list ); int OTF_CopyHandler_SendMsg( void* userData, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t group, uint32_t type, uint32_t length, uint32_t source, OTF_KeyValueList* list ); int OTF_CopyHandler_RecvMsg( void* userData, uint64_t time, uint32_t recvProc, uint32_t sendProc, uint32_t group, uint32_t type, uint32_t length, uint32_t source, OTF_KeyValueList* list ); int OTF_CopyHandler_Counter( void* userData, uint64_t time, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList* list ); int OTF_CopyHandler_CollectiveOperation( void* userData, uint64_t time, uint32_t process, uint32_t collective, uint32_t procGroup, uint32_t rootProc, uint32_t sent, uint32_t received, uint64_t duration, uint32_t source, OTF_KeyValueList* list ); int OTF_CopyHandler_BeginCollectiveOperation( void* userData, uint64_t time, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList* list ); int OTF_CopyHandler_EndCollectiveOperation( void* userData, uint64_t time, uint32_t process, uint64_t matchingId, OTF_KeyValueList* list ); int OTF_CopyHandler_EventComment( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* list ); int OTF_CopyHandler_BeginProcess( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList* list ); int OTF_CopyHandler_EndProcess( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList* list ); int OTF_CopyHandler_SnapshotComment( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* list ); int OTF_CopyHandler_FileOperation( void* userData, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source, OTF_KeyValueList* list ); int OTF_CopyHandler_BeginFileOperation( void* userData, uint64_t time, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList* list ); int OTF_CopyHandler_EndFileOperation( void* userData, uint64_t time, uint32_t process, uint32_t fileid, uint64_t matchingId, uint64_t handleId, uint32_t operation, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ); int OTF_CopyHandler_RMAPut( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ); int OTF_CopyHandler_RMAPutRemoteEnd( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ); int OTF_CopyHandler_RMAGet( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ); int OTF_CopyHandler_RMAEnd( void* userData, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t scltoken, OTF_KeyValueList* list ); int OTF_CopyHandler_EnterSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList* list ); int OTF_CopyHandler_SendSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source, OTF_KeyValueList* list ); int OTF_CopyHandler_OpenFileSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t source, OTF_KeyValueList* list ); int OTF_CopyHandler_BeginCollopSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList* list ); int OTF_CopyHandler_BeginFileOpSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList* list ); int OTF_CopyHandler_CollopCountSnapshot( void* userData, uint64_t time, uint32_t process, uint32_t communicator, uint64_t count, OTF_KeyValueList* list ); int OTF_CopyHandler_CounterSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList* list ); int OTF_CopyHandler_SummaryComment( void * userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* list ); int OTF_CopyHandler_FunctionSummary( void* userData, uint64_t time, uint32_t function, uint32_t process, uint64_t invocations, uint64_t exclTime, uint64_t inclTime, OTF_KeyValueList* list ); int OTF_CopyHandler_FunctionGroupSummary( void* userData, uint64_t time, uint32_t funcGroup, uint32_t process, uint64_t invocations, uint64_t exclTime, uint64_t inclTime, OTF_KeyValueList* list ); int OTF_CopyHandler_MessageSummary( void* userData, uint64_t time, uint32_t process, uint32_t peer, uint32_t comm, uint32_t type, uint64_t sentNumber, uint64_t receivedNumber, uint64_t sentBytes, uint64_t receivedBytes, OTF_KeyValueList* list ); int OTF_CopyHandler_CollopSummary(void *userData, uint64_t time, uint32_t process, uint32_t comm, uint32_t collective, uint64_t sentNumber, uint64_t receivedNumber, uint64_t sentBytes, uint64_t receivedBytes, OTF_KeyValueList* list ); int OTF_CopyHandler_FileOperationSummary( void* userData, uint64_t time, uint32_t fileid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList* list ); int OTF_CopyHandler_FileGroupOperationSummary( void* userData, uint64_t time, uint32_t groupid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList* list ); int OTF_CopyHandler_DefMarker( void *userData, uint32_t stream, uint32_t token, const char* name, uint32_t type, OTF_KeyValueList* list ); int OTF_CopyHandler_Marker( void *userData, uint64_t time, uint32_t process, uint32_t token, const char* text, OTF_KeyValueList* list ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTF_COPYHANDLER_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_CopyHandler_stream.h0000644000000000000000000000013212544237152024706 xustar0030 mtime=1435582058.531899952 30 atime=1508138854.211376863 30 ctime=1508162366.181771804 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_CopyHandler_stream.h0000644000175000017500000002712512544237152026104 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_CopyHandler.h * * @brief Provides handlers for copying a trace. * * \ingroup internal */ #ifndef OTF_COPYHANDLER_STREAM_H #define OTF_COPYHANDLER_STREAM_H #include "OTF_inttypes.h" #include "OTF_Definitions.h" #include "OTF_KeyValue.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ int OTF_CopyHandler_stream_DefinitionComment( void* userData, uint32_t stream, const char* comment, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_DefTimerResolution( void* userData, uint32_t stream, uint64_t ticksPerSecond, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_DefProcess( void* userData, uint32_t stream, uint32_t process, const char* name, uint32_t parent, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_DefProcessGroup( void* userData, uint32_t stream, uint32_t procGroup, const char* name, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_DefAttributeList( void* userData, uint32_t stream, uint32_t attr_token, uint32_t num, OTF_ATTR_TYPE* array, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_DefProcessOrGroupAttributes( void* userData, uint32_t stream, uint32_t proc_token, uint32_t attr_token, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_DefFunction( void* userData, uint32_t stream, uint32_t func, const char* name, uint32_t funcGroup, uint32_t source, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_DefFunctionGroup( void* userData, uint32_t stream, uint32_t funcGroup, const char* name, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_DefCollectiveOperation( void* userData, uint32_t stream, uint32_t collOp, const char* name, uint32_t type, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_DefCounter( void* userData, uint32_t stream, uint32_t counter, const char* name, uint32_t properties, uint32_t counterGroup, const char* unit, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_DefCounterGroup( void* userData, uint32_t stream, uint32_t counterGroup, const char* name, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_DefScl( void* userData, uint32_t stream, uint32_t source, uint32_t sourceFile, uint32_t line, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_DefSclFile( void* userData, uint32_t stream, uint32_t sourceFile, const char* name, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_DefUniqueId( void* userData, uint32_t stream, uint64_t uid ); int OTF_CopyHandler_stream_DefVersion( void* userData, uint32_t stream, uint8_t major, uint8_t minor, uint8_t sub, const char* string ); int OTF_CopyHandler_stream_DefCreator( void* userData, uint32_t stream, const char* creator, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_DefFile( void* userData, uint32_t stream, uint32_t token, const char* name, uint32_t group, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_DefFileGroup( void* userData, uint32_t stream, uint32_t token, const char* name, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_DefKeyValue( void* userData, uint32_t stream, uint32_t key, OTF_Type type, const char* name, const char* description, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_DefTimeRange( void* userData, uint32_t stream, uint64_t minTime, uint64_t maxTime, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_DefCounterAssignments( void* userData, uint32_t stream, uint32_t counter, uint32_t number_of_members, const uint32_t* procs_or_groups, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_DefProcessSubstitutes( void* userData, uint32_t stream, uint32_t representative, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_DefAuxSamplePoint( void* userData, uint32_t stream, uint64_t time, OTF_AuxSamplePointType type, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_NoOp( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_Enter( void* userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_Leave( void* userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_SendMsg( void* userData, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t group, uint32_t type, uint32_t length, uint32_t source, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_RecvMsg( void* userData, uint64_t time, uint32_t recvProc, uint32_t sendProc, uint32_t group, uint32_t type, uint32_t length, uint32_t source, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_Counter( void* userData, uint64_t time, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_CollectiveOperation( void* userData, uint64_t time, uint32_t process, uint32_t collective, uint32_t procGroup, uint32_t rootProc, uint32_t sent, uint32_t received, uint64_t duration, uint32_t source, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_BeginCollectiveOperation( void* userData, uint64_t time, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_EndCollectiveOperation( void* userData, uint64_t time, uint32_t process, uint64_t matchingId, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_EventComment( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_BeginProcess( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_EndProcess( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_SnapshotComment( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_FileOperation( void* userData, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_BeginFileOperation( void* userData, uint64_t time, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_EndFileOperation( void* userData, uint64_t time, uint32_t process, uint32_t fileid, uint64_t matchingId, uint64_t handleId, uint32_t operation, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_RMAPut( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_RMAPutRemoteEnd( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_RMAGet( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_RMAEnd( void* userData, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t scltoken, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_EnterSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_SendSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_OpenFileSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t source, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_BeginCollopSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_BeginFileOpSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_CollopCountSnapshot( void* userData, uint64_t time, uint32_t process, uint32_t communicator, uint64_t count, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_CounterSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_SummaryComment( void * userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_FunctionSummary( void* userData, uint64_t time, uint32_t function, uint32_t process, uint64_t invocations, uint64_t exclTime, uint64_t inclTime, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_FunctionGroupSummary( void* userData, uint64_t time, uint32_t funcGroup, uint32_t process, uint64_t invocations, uint64_t exclTime, uint64_t inclTime, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_MessageSummary( void* userData, uint64_t time, uint32_t process, uint32_t peer, uint32_t comm, uint32_t type, uint64_t sentNumber, uint64_t receivedNumber, uint64_t sentBytes, uint64_t receivedBytes, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_CollopSummary(void *userData, uint64_t time, uint32_t process, uint32_t comm, uint32_t collective, uint64_t sentNumber, uint64_t receivedNumber, uint64_t sentBytes, uint64_t receivedBytes, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_FileOperationSummary( void* userData, uint64_t time, uint32_t fileid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_FileGroupOperationSummary( void* userData, uint64_t time, uint32_t groupid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_DefMarker( void *userData, uint32_t stream, uint32_t token, const char* name, uint32_t type, OTF_KeyValueList* list ); int OTF_CopyHandler_stream_Marker( void *userData, uint64_t time, uint32_t process, uint32_t token, const char* text, OTF_KeyValueList* list ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTF_COPYHANDLER_STREAM_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_CopyHandler_stream.c0000644000000000000000000000013212544237152024701 xustar0030 mtime=1435582058.531899952 30 atime=1508138854.119374566 30 ctime=1508162366.209774249 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_CopyHandler_stream.c0000644000175000017500000005332412544237152026077 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "OTF_Platform.h" #include "OTF_CopyHandler_stream.h" #include "OTF_WStream.h" /* *** Definition handlers *** ************************************* */ int OTF_CopyHandler_stream_DefinitionComment( void* userData, uint32_t stream, const char* comment, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefinitionCommentKV( (OTF_WStream*)userData, comment, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefTimerResolution( void* userData, uint32_t stream, uint64_t ticksPerSecond, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefTimerResolutionKV( (OTF_WStream*)userData, ticksPerSecond, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefProcess( void* userData, uint32_t stream, uint32_t deftoken, const char* name, uint32_t parent, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefProcessKV( (OTF_WStream*)userData, deftoken, name, parent, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefProcessGroup( void* userData, uint32_t stream, uint32_t deftoken, const char* name, uint32_t n, const uint32_t* procs, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefProcessGroupKV( (OTF_WStream*)userData, deftoken, name, n, procs, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefAttributeList( void* userData, uint32_t stream, uint32_t attr_token, uint32_t num, OTF_ATTR_TYPE* array, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefAttributeListKV( (OTF_WStream*)userData, attr_token, num, array, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefProcessOrGroupAttributes( void* userData, uint32_t stream, uint32_t proc_token, uint32_t attr_token, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefProcessOrGroupAttributesKV( (OTF_WStream*)userData, proc_token, attr_token, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefFunction( void* userData, uint32_t stream, uint32_t deftoken, const char* name, uint32_t group, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefFunctionKV( (OTF_WStream*)userData, deftoken, name, group, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefFunctionGroup( void* userData, uint32_t stream, uint32_t deftoken, const char* name, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefFunctionGroupKV( (OTF_WStream*)userData, deftoken, name, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefCollectiveOperation( void* userData, uint32_t stream, uint32_t collOp, const char* name, uint32_t type, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefCollectiveOperationKV( (OTF_WStream*)userData, collOp, name, type, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefCounter( void* userData, uint32_t stream, uint32_t deftoken, const char* name, uint32_t properties, uint32_t countergroup, const char* unit, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefCounterKV( (OTF_WStream*)userData, deftoken, name, properties, countergroup, unit, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefCounterGroup( void* userData, uint32_t stream, uint32_t deftoken, const char* name, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefCounterGroupKV( (OTF_WStream*)userData, deftoken, name, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefScl( void* userData, uint32_t stream, uint32_t deftoken, uint32_t sclfile, uint32_t sclline, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefSclKV( (OTF_WStream*)userData, deftoken, sclfile, sclline, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefSclFile( void* userData, uint32_t stream, uint32_t deftoken, const char* filename, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefSclFileKV( (OTF_WStream*)userData, deftoken, filename, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefUniqueId( void* userData, uint32_t stream, uint64_t uid ) { /* update unique-id record */ return ( 0 == OTF_WStream_writeUniqueId( (OTF_WStream*)userData ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefVersion( void* userData, uint32_t stream, uint8_t major, uint8_t minor, uint8_t sub, const char* string ) { /* update version record */ return ( 0 == OTF_WStream_writeOtfVersion( (OTF_WStream*)userData ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefCreator( void* userData, uint32_t stream, const char* creator, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefCreatorKV( (OTF_WStream*)userData, creator, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefFile( void* userData, uint32_t stream, uint32_t token, const char* name, uint32_t group, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefFileKV( (OTF_WStream*)userData, token, name, group, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefFileGroup( void* userData, uint32_t stream, uint32_t token, const char* name, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefFileGroupKV( (OTF_WStream*)userData, token, name, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefKeyValue( void* userData, uint32_t stream, uint32_t key, OTF_Type type, const char* name, const char *description, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefKeyValueKV( (OTF_WStream*)userData, key, type, name, description, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefTimeRange( void* userData, uint32_t stream, uint64_t minTime, uint64_t maxTime, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefTimeRange( (OTF_WStream*)userData, minTime, maxTime, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefCounterAssignments( void* userData, uint32_t stream, uint32_t counter, uint32_t number_of_members, const uint32_t* procs_or_groups, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefCounterAssignments( (OTF_WStream*)userData, counter, number_of_members, procs_or_groups, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefProcessSubstitutes( void* userData, uint32_t stream, uint32_t representative, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefProcessSubstitutes( (OTF_WStream*)userData, representative, numberOfProcs, procs, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefAuxSamplePoint( void* userData, uint32_t stream, uint64_t time, OTF_AuxSamplePointType type, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefAuxSamplePoint( (OTF_WStream*)userData, time, type, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } /* *** Event handlers *** ****************************************** */ int OTF_CopyHandler_stream_NoOp( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeNoOpKV( (OTF_WStream*)userData, time, process, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_EventComment( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeEventCommentKV( (OTF_WStream*)userData, time, process, comment, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_Counter( void* userData, uint64_t time, uint32_t process, uint32_t counter_token, uint64_t value, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeCounterKV( (OTF_WStream*)userData, time, process, counter_token, value, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_Enter( void* userData, uint64_t time, uint32_t statetoken, uint32_t cpuid, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeEnterKV( (OTF_WStream*)userData, time, statetoken, cpuid, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_CollectiveOperation( void* userData, uint64_t time, uint32_t process, uint32_t functionToken, uint32_t communicator, uint32_t rootprocess, uint32_t sent, uint32_t received, uint64_t duration, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeCollectiveOperationKV( (OTF_WStream*)userData, time, process, functionToken, communicator, rootprocess, sent, received, duration, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_BeginCollectiveOperation( void* userData, uint64_t time, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList* list ) { return (0 == OTF_WStream_writeBeginCollectiveOperationKV( (OTF_WStream*) userData, time, process, collOp, matchingId, procGroup, rootProc, sent, received, scltoken, list )) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_EndCollectiveOperation( void* userData, uint64_t time, uint32_t process, uint64_t matchingId, OTF_KeyValueList* list ) { return (0 == OTF_WStream_writeEndCollectiveOperationKV( (OTF_WStream*) userData, time, process, matchingId, list )) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_RecvMsg( void* userData, uint64_t time, uint32_t receiver, uint32_t sender, uint32_t communicator, uint32_t msgtype, uint32_t msglength, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeRecvMsgKV( (OTF_WStream*)userData, time, receiver, sender, communicator, msgtype, msglength, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_SendMsg( void* userData, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t communicator, uint32_t msgtype, uint32_t msglength, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeSendMsgKV( (OTF_WStream*)userData, time, sender, receiver, communicator, msgtype, msglength, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_Leave( void* userData, uint64_t time, uint32_t statetoken, uint32_t cpuid, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeLeaveKV( (OTF_WStream*)userData, time, statetoken, cpuid, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_BeginProcess( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeBeginProcessKV( (OTF_WStream*)userData, time, process, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_EndProcess( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeEndProcessKV( (OTF_WStream*)userData, time, process, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_FileOperation( void* userData, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeFileOperationKV( (OTF_WStream*)userData, time, fileid, process, handleid, operation, bytes, duration, source, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_BeginFileOperation( void* userData, uint64_t time, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList* list ) { return (0 == OTF_WStream_writeBeginFileOperationKV( (OTF_WStream*) userData, time, process, matchingId, scltoken, list )) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_EndFileOperation( void* userData, uint64_t time, uint32_t process, uint32_t fileid, uint64_t matchingId, uint64_t handleId, uint32_t operation, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ) { return (0 == OTF_WStream_writeEndFileOperationKV( (OTF_WStream*) userData, time, process, fileid, matchingId, handleId, operation, bytes, scltoken, list )) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_RMAPut( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeRMAPutKV( (OTF_WStream*)userData, time, process, origin, target, communicator, tag, bytes, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_RMAPutRemoteEnd( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeRMAPutRemoteEndKV( (OTF_WStream*)userData, time, process, origin, target, communicator, tag, bytes, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_RMAGet( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeRMAGetKV( (OTF_WStream*)userData, time, process, origin, target, communicator, tag, bytes, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_RMAEnd( void* userData, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeRMAEndKV( (OTF_WStream*)userData, time, process, remote, communicator, tag, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } /* *** snapshot handlers ********************************************** */ int OTF_CopyHandler_stream_SnapshotComment( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeSnapshotCommentKV( (OTF_WStream*)userData, time, process, comment, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_EnterSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeEnterSnapshotKV( (OTF_WStream*)userData, time, originaltime, function, process, source, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_SendSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeSendSnapshotKV( (OTF_WStream*)userData, time, originaltime, sender, receiver, procGroup, tag, length, source, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_OpenFileSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t source, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeOpenFileSnapshotKV( (OTF_WStream*)userData, time, originaltime, fileid, process, handleid, source, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_BeginCollopSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeBeginCollopSnapshotKV( (OTF_WStream*)userData, time, originaltime, process, collOp, matchingId, procGroup, rootProc, sent, received, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_BeginFileOpSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeBeginFileOpSnapshotKV( (OTF_WStream*)userData, time, originaltime, process, matchingId, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_CollopCountSnapshot( void* userData, uint64_t time, uint32_t process, uint32_t communicator, uint64_t count, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeCollopCountSnapshot( (OTF_WStream*)userData, time, process, communicator, count, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_CounterSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeCounterSnapshot( (OTF_WStream*)userData, time, originaltime, process, counter, value, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } /* *** summary handlers ********************************************** */ int OTF_CopyHandler_stream_SummaryComment( void * userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeSummaryCommentKV( (OTF_WStream*)userData, time, process, comment, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_FunctionSummary( void* userData, uint64_t time, uint32_t function, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeFunctionSummaryKV( (OTF_WStream*)userData, time, function, process, count, excltime, incltime, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_FunctionGroupSummary( void* userData, uint64_t time, uint32_t functiongroup, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeFunctionGroupSummaryKV( (OTF_WStream*)userData, time, functiongroup, process, count, excltime, incltime, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_MessageSummary( void* userData, uint64_t time, uint32_t process, uint32_t peer, uint32_t comm, uint32_t type, uint64_t sentNumber, uint64_t receivedNumber, uint64_t sentBytes, uint64_t receivedBytes, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeMessageSummaryKV((OTF_WStream*) userData, time, process, peer, comm, type, sentNumber, receivedNumber, sentBytes, receivedBytes, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_CollopSummary( void *userData, uint64_t time, uint32_t process, uint32_t comm, uint32_t collective, uint64_t sentNumber, uint64_t receivedNumber, uint64_t sentBytes, uint64_t receivedBytes, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeCollopSummaryKV((OTF_WStream*) userData, time, process, comm, collective, sentNumber, receivedNumber, sentBytes, receivedBytes, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_FileOperationSummary( void* userData, uint64_t time, uint32_t fileid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeFileOperationSummaryKV( (OTF_WStream*) userData, time, fileid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_FileGroupOperationSummary( void* userData, uint64_t time, uint32_t groupid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeFileGroupOperationSummaryKV( (OTF_WStream*) userData, time, groupid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_stream_DefMarker( void *userData, uint32_t stream, uint32_t token, const char* name, uint32_t type, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeDefMarkerKV( (OTF_WStream*) userData, token, name, type, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK;; } int OTF_CopyHandler_stream_Marker( void *userData, uint64_t time, uint32_t process, uint32_t token, const char* text, OTF_KeyValueList* list ) { return ( 0 == OTF_WStream_writeMarkerKV( (OTF_WStream*) userData, time, process, token, text, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_WStream.h0000644000000000000000000000013212544237152022505 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.219377063 30 ctime=1508162366.193772853 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_WStream.h0000644000175000017500000013135212544237152023701 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_WStream.h * * @brief Provides write access to trace streams, which consist of multiple * buffers. * * \ingroup wstream */ /** \defgroup wstream Stream Writer Interface * * This interface provides functions for writing trace at stream level. * A stream is part of a trace and consists of up to four buffers * (event buffer, definition buffer, snapshots buffer, statistics buffer). * * wstream is structured similarly to writer. * * Use this interface, if you want to a specific stream and the writer * interface does not provide the desired access. * * \section wstream_example A short Example * * \code * #include * #include "otf.h" * * int main( int argc, char** argv ) { * \endcode * * Declare a file manager and a writer. * \code * OTF_FileManager* manager; * OTF_WStream* wstream; * \endcode * * Initialize the file manager. Open at most 100 OS files. * \code * manager= OTF_FileManager_open( 100 ); * assert( manager ); * \endcode * * Initialize the wstream object. Open file "test", writing the first stream. * \code * wstream = OTF_WStream_open( "test", 0, manager ); * assert( wstream ); * \endcode * * Write some definition records. * \code * OTF_WStream_writeDefTimerResolution( wstream, 1000 ); * OTF_WStream_writeDefProcess( wstream, 1, "proc one", 0 ); * \endcode * * Clean up before exiting the program. * \code * OTF_WStream_close( wstream ); * OTF_FileManager_close( manager ); * * return 0; * } * \endcode * * Compile this using $ gcc -o test test.c `otfconfig --libs`. * * When executing this program it only writes one file (test.0.def), * containg the written records. * */ #ifndef OTF_WSTREAM_H #define OTF_WSTREAM_H #include #include "OTF_inttypes.h" #include "OTF_Definitions.h" #include "OTF_FileManager.h" #include "OTF_WBuffer.h" #include "OTF_Filenames.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct struct_OTF_WStream { /** name stub: all files will begin with this name */ char* namestub; /** Unique id for the current stream. */ uint32_t id; /** State wether to use long or short format, see OTF_WSTREAM_FORMAT_XXX macros above. */ uint32_t format; /** Definitions buffer. Definitions buffer carries definition records. */ OTF_WBuffer* defBuffer; /** Event buffer. The event buffer carries records for actual events, i.e. records with a time stamp */ OTF_WBuffer* eventBuffer; /** Snaps (snapshots) buffer. The snapshots buffer carries snapshots of the whole state at a point in time - as oppossed to events which only show changes in the state. This can be used to start from such a snapshot instead of from the very begining. */ OTF_WBuffer* snapsBuffer; /** Statistics buffer. Statistics buffer carries statistical information information about a certain time interval resp. data at points of time that allow to derive statistics without reading through all events of that interval. */ OTF_WBuffer* statsBuffer; /** Marker buffer. Marker buffer carries marker definitions and spots which live in a separate file and wich are not sorted according to time stamp in any way. */ OTF_WBuffer* markerBuffer; /** Default compression method for all buffers managed by this stream */ OTF_FileCompression compression; /** Default size of buffers managed by this WStream. */ uint32_t buffersizes; #ifdef HAVE_ZLIB /** Default size of zbuffers managed by this RStream. */ uint32_t zbuffersizes; #endif /* HAVE_ZLIB */ /** file handle manager */ OTF_FileManager* manager; }; /** wstream object \ingroup wstream */ typedef struct struct_OTF_WStream OTF_WStream; /** * Create a new OTF_WStream instance. * * @param namestub File name prefix which is going to be used by * all sub-files which belong to the writer stream. * @param id Abitrary but unique identifier of the writer stream. Must be > '0' for real streams. Use '0' for global definitions. * @param manager File handle manager. * * @return Initialized OTF_WStream instance or 0 if an error * occurred. * * \ingroup wstream */ OTF_WStream* OTF_WStream_open( const char* namestub, uint32_t id, OTF_FileManager* manager ); /** * Close an OTF_WStream instance and all its related files. * * @param wstream Pointer to an initialized OTF_WStream object. See * also OTF_WStream_open(). * * @return 1 if instance was closed successfully and 0 otherwise. * * \ingroup wstream */ int OTF_WStream_close( OTF_WStream* wstream ); /** * Flush an OTF_WStream instance, i.e. flush all associated buffers if existing. * * @param wstream Pointer to an initialized OTF_WStream object. See * also OTF_WStream_open(). * * @return 1 if everything flushed successfully and 0 otherwise. * * \ingroup wstream */ int OTF_WStream_flush( OTF_WStream* wstream ); /** * Returns the definition buffer of the according writer stream. * * @param wstream Pointer to an initialized OTF_WStream object. See * also OTF_WStream_open(). * * @return Initialized OTF_WBuffer instance or 0 if an error occured. * * \ingroup wstream */ OTF_WBuffer* OTF_WStream_getDefBuffer( OTF_WStream* wstream ); /** * Returns the event buffer of the according writer stream. * * @param wstream Pointer to an initialized OTF_WStream object. See * also OTF_WStream_open(). * * @return Initialized OTF_WBuffer instance or 0 if an error occured. * * \ingroup wstream */ OTF_WBuffer* OTF_WStream_getEventBuffer( OTF_WStream* wstream ); /** * Returns the snapshots buffer of the according writer stream. * * @param wstream Pointer to an initialized OTF_WStream object. See * also OTF_WStream_open(). * * @return Initialized OTF_WBuffer instance or 0 if an error occured. * * \ingroup wstream */ OTF_WBuffer* OTF_WStream_getSnapshotBuffer( OTF_WStream* wstream ); /** * Returns the statistics buffer of the according writer stream. * * @param wstream Pointer to an initialized OTF_WStream object. See * also OTF_WStream_open(). * * @return Initialized OTF_WBuffer instance or 0 if an error occured. * * \ingroup wstream */ OTF_WBuffer* OTF_WStream_getStatsBuffer( OTF_WStream* wstream ); /** * Returns the marker buffer of the according writer stream. * * @param wstream Pointer to an initialized OTF_WStream object. See * also OTF_WStream_open(). * * @return Initialized OTF_WBuffer instance or 0 if an error occured. * * \ingroup wstream */ OTF_WBuffer* OTF_WStream_getMarkerBuffer( OTF_WStream* wstream ); /** * Set the standard compression method for all buffers managed by this writer * stream * * @param wstream Pointer to an initialized OTF_WStream object. See * also OTF_WStream_open(). * * @param compression Default compression level. * 0-9, where 0 means no compression is applied, and 9 is * the highest level of compression. * * @return 1 on success, 0 if an error occurs. * * \ingroup wstream */ int OTF_WStream_setCompression( OTF_WStream* wstream, OTF_FileCompression compression ); /** * Return the standard compression method for all buffers managed by this writer * stream * * @param wstream Pointer to an initialized OTF_WStream object. See * also OTF_WStream_open(). * * @return Standard compression level for all buffers managed by * this writer stream. * * \ingroup wstream */ OTF_FileCompression OTF_WStream_getCompression( OTF_WStream* wstream ); /** * Set the default buffer size for all buffers managed by this writer stream. * This is only effective for future buffers and will not change already * allocated buffers. Those can be changed with the buffers directly. * * @param wstream Pointer to an initialized OTF_WStream object. See * also OTF_WStream_open(). * * @param size Intended buffer size. * * \ingroup wstream */ void OTF_WStream_setBufferSizes( OTF_WStream* wstream, uint32_t size ); /** * Get the default buffer size for all buffers managed by this writer stream. * * @param wstream Pointer to an initialized OTF_WStream object. See * also OTF_WStream_open(). * * @return Default buffer size for all buffers managed by this writer * stream. * * \ingroup wstream */ uint32_t OTF_WStream_getBufferSizes( OTF_WStream* wstream ); /** * Set the default zbuffer size for all files managed by this writer stream. * This is only effective for future files and will not change already * allocated buffers. Those can be changed with the files directly. * * @param wstream Pointer to an initialized OTF_WStream object. See * also OTF_WStream_open(). * * @param size Intended buffer size. * * \ingroup wstream */ void OTF_WStream_setZBufferSizes( OTF_WStream* wstream, uint32_t size ); /** * Get the default zbuffer size for all files managed by this writer stream. * * @param wstream Pointer to an initialized OTF_WStream object. See * also OTF_WStream_open(). * * @return Default buffer size for all buffers managed by this reader * stream. * * \ingroup wstream */ uint32_t OTF_WStream_getZBufferSizes( OTF_WStream* wstream ); /** * Set the default ouput format. * * @param wstream Pointer to an initialized OTF_WStream object. See * also OTF_WStream_open(). * * @param format Intended output format (OTF_WSTREAM_FORMAT_{LONG,SHORT}) * * \ingroup wstream */ void OTF_WStream_setFormat( OTF_WStream* wstream, uint32_t format ); /** * Get the default output format * * @param wstream Pointer to an initialized OTF_WStream object. See * also OTF_WStream_open(). * * @return Default output format. * * \ingroup wstream */ uint32_t OTF_WStream_getFormat( OTF_WStream* wstream ); /* *** definition record write handlers *** ******************************** */ /** Write a DEFINITIONCOMMENT record to stream 'wstream'. * @see OTF_Writer_writeDefinitionComment() * \ingroup wstream */ int OTF_WStream_writeDefinitionComment( OTF_WStream* wstream, const char* comment ); /** Write a DEFINITIONCOMMENT record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeDefinitionCommentEV() * \ingroup wstream */ int OTF_WStream_writeDefinitionCommentKV( OTF_WStream* wstream, const char* comment, OTF_KeyValueList* list ); /** Write a DEFTIMERRESOLUTION record to stream 'wstream'. * @see OTF_Writer_writeDefTimerResolution() * \ingroup wstream */ int OTF_WStream_writeDefTimerResolution( OTF_WStream* wstream, uint64_t ticksPerSecond ); /** Write a DEFTIMERRESOLUTION record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeDefTimerResolutionEV() * \ingroup wstream */ int OTF_WStream_writeDefTimerResolutionKV( OTF_WStream* wstream, uint64_t ticksPerSecond, OTF_KeyValueList* list ); /** Write a DEFPROCESS record to stream 'wstream'. * @see OTF_Writer_writeDefProcess() * \ingroup wstream */ int OTF_WStream_writeDefProcess( OTF_WStream* wstream, uint32_t deftoken, const char* name, uint32_t parent ); /** Write a DEFPROCESS record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeDefProcessKV() * \ingroup wstream */ int OTF_WStream_writeDefProcessKV( OTF_WStream* wstream, uint32_t deftoken, const char* name, uint32_t parent, OTF_KeyValueList* list ); /** Write a DEFPROCESSGROUP record to stream 'wstream'. * @see OTF_Writer_writeDefProcessGroup() * \ingroup wstream */ int OTF_WStream_writeDefProcessGroup( OTF_WStream* wstream, uint32_t deftoken, const char* name, uint32_t n, const uint32_t* array ); /** Write a DEFPROCESSGROUP record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeDefProcessGroupKV() * \ingroup wstream */ int OTF_WStream_writeDefProcessGroupKV( OTF_WStream* wstream, uint32_t deftoken, const char* name, uint32_t n, const uint32_t* array, OTF_KeyValueList* list ); /** Write a DEFATTRLIST record to stream 'wstream'. * @see OTF_Writer_writeDefAttributeList() * \ingroup wstream */ int OTF_WStream_writeDefAttributeList( OTF_WStream* wstream, uint32_t attr_token, uint32_t num, OTF_ATTR_TYPE* array ); /** Write a DEFATTRLIST record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeDefAttributeListKV() * \ingroup wstream */ int OTF_WStream_writeDefAttributeListKV( OTF_WStream* wstream, uint32_t attr_token, uint32_t num, OTF_ATTR_TYPE* array, OTF_KeyValueList* list ); /** Write a DEFPROCESSORGROUPATTR record to stream 'wstream'. * @see OTF_Writer_writeDefAttributeList() * \ingroup wstream */ int OTF_WStream_writeDefProcessOrGroupAttributes( OTF_WStream* wstream, uint32_t proc_token, uint32_t attr_token ); /** Write a DEFPROCESSORGROUPATTR record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeDefAttributeListKV() * \ingroup wstream */ int OTF_WStream_writeDefProcessOrGroupAttributesKV( OTF_WStream* wstream, uint32_t proc_token, uint32_t attr_token, OTF_KeyValueList* list ); /** Write a DEFFUNCTION record to stream 'wstream'. * @see OTF_Writer_writeDefFunction() * \ingroup wstream */ int OTF_WStream_writeDefFunction( OTF_WStream* wstream, uint32_t deftoken, const char* name, uint32_t group, uint32_t scltoken ); /** Write a DEFFUNCTION record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeDefFunctionKV() * \ingroup wstream */ int OTF_WStream_writeDefFunctionKV( OTF_WStream* wstream, uint32_t deftoken, const char* name, uint32_t group, uint32_t scltoken, OTF_KeyValueList* list ); /** Write a DEFFUNCTIONGROUP record to stream 'wstream'. * @see OTF_Writer_writeDefFunctionGroup() * \ingroup wstream */ int OTF_WStream_writeDefFunctionGroup( OTF_WStream* wstream, uint32_t deftoken, const char* name ); /** Write a DEFFUNCTIONGROUP record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeDefFunctionGroupKV() * \ingroup wstream */ int OTF_WStream_writeDefFunctionGroupKV( OTF_WStream* wstream, uint32_t deftoken, const char* name, OTF_KeyValueList* list ); /** Write a DEFCOLLECTIVEOPERATION record to stream 'wstream'. * @see OTF_Writer_writeDefCollectiveOperation() * \ingroup wstream */ int OTF_WStream_writeDefCollectiveOperation( OTF_WStream* wstream, uint32_t collOp, const char* name, uint32_t type ); /** Write a DEFCOLLECTIVEOPERATION record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeDefCollectiveOperationKV() * \ingroup wstream */ int OTF_WStream_writeDefCollectiveOperationKV( OTF_WStream* wstream, uint32_t collOp, const char* name, uint32_t type, OTF_KeyValueList* list ); /** Write a DEFCOUNTER record to stream 'wstream'. * @see OTF_Writer_writeDefCounter() * \ingroup wstream */ int OTF_WStream_writeDefCounter( OTF_WStream* wstream, uint32_t deftoken, const char* name, uint32_t properties, uint32_t countergroup, const char* unit ); /** Write a DEFCOUNTER record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeDefCounterKV() * \ingroup wstream */ int OTF_WStream_writeDefCounterKV( OTF_WStream* wstream, uint32_t deftoken, const char* name, uint32_t properties, uint32_t countergroup, const char* unit, OTF_KeyValueList* list ); /** Write a DEFCOUNTERGROUP record to stream 'wstream'. * @see OTF_Writer_writeDefCounterGroup() * \ingroup wstream */ int OTF_WStream_writeDefCounterGroup( OTF_WStream* wstream, uint32_t deftoken, const char* name ); /** Write a DEFCOUNTERGROUP record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeDefCounterGroupKV() * \ingroup wstream */ int OTF_WStream_writeDefCounterGroupKV( OTF_WStream* wstream, uint32_t deftoken, const char* name, OTF_KeyValueList* list ); /** Write a DEFSCL record to stream 'wstream'. * @see OTF_Writer_writeDefScl() * \ingroup wstream */ int OTF_WStream_writeDefScl( OTF_WStream* wstream, uint32_t deftoken, uint32_t sclfile, uint32_t sclline ); /** Write a DEFSCL record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeDefSclKV() * \ingroup wstream */ int OTF_WStream_writeDefSclKV( OTF_WStream* wstream, uint32_t deftoken, uint32_t sclfile, uint32_t sclline, OTF_KeyValueList* list ); /** Write a DEFSCLFILE record to stream 'wstream'. * @see OTF_Writer_writeDefSclFile() * \ingroup wstream */ int OTF_WStream_writeDefSclFile( OTF_WStream* wstream, uint32_t deftoken, const char* filename ); /** Write a DEFSCLFILE record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeDefSclFileKV() * \ingroup wstream */ int OTF_WStream_writeDefSclFileKV( OTF_WStream* wstream, uint32_t deftoken, const char* filename, OTF_KeyValueList* list ); /** Write a DEFCREATOR record to stream 'wstream'. * @see OTF_Writer_writeDefCreator() * \ingroup wstream */ int OTF_WStream_writeDefCreator( OTF_WStream* wstream, const char* creator ); /** Write a DEFCREATOR record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeDefCreatorKV() * \ingroup wstream */ int OTF_WStream_writeDefCreatorKV( OTF_WStream* wstream, const char* creator, OTF_KeyValueList* list ); /** * Write a DEFUNIQUEID record to stream 'wstream'. * This record is generated automatically at beginning of tracing in the global * definition stream. * * @param wstream Initialized OTF_WStream instance. * @return 1 on success, 0 if an error occurs. * * \ingroup wstream */ int OTF_WStream_writeUniqueId( OTF_WStream* wstream ); /** Write a DEFVERSION record to stream 'wstream'. * @see OTF_Writer_writeOtfVersion() * \ingroup wstream */ int OTF_WStream_writeOtfVersion( OTF_WStream* wstream ); /** Write a DEFFILE record to stream 'wstream'. * @see OTF_Writer_writeDefFile() * \ingroup wstream */ int OTF_WStream_writeDefFile( OTF_WStream* wstream, uint32_t token, const char* name, uint32_t group ); /** Write a DEFFILE record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeDefFileKV() * \ingroup wstream */ int OTF_WStream_writeDefFileKV( OTF_WStream* wstream, uint32_t token, const char* name, uint32_t group, OTF_KeyValueList* list ); /** Write a DEFFILEGROUP record to stream 'wstream'. * @see OTF_Writer_writeDefFileGroup() * \ingroup wstream */ int OTF_WStream_writeDefFileGroup( OTF_WStream* wstream, uint32_t token, const char* name ); /** Write a DEFFILEGROUP record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeDefFileGroupKV() * \ingroup wstream */ int OTF_WStream_writeDefFileGroupKV( OTF_WStream* wstream, uint32_t token, const char* name, OTF_KeyValueList* list ); /** Write a DEFKEYVALUE record to stream 'wstream'. * @see OTF_Writer_writeDefKeyValue() * \ingroup wstream */ int OTF_WStream_writeDefKeyValue( OTF_WStream* wstream, uint32_t key, OTF_Type type, const char* name, const char *description ); /** Write a DEFKEYVALUE record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeDefKeyValueKV() * \ingroup wstream */ int OTF_WStream_writeDefKeyValueKV( OTF_WStream* wstream, uint32_t key, OTF_Type type, const char* name, const char *description, OTF_KeyValueList* list ); /** Write a DEFTIMERANGE record including an OTF_KeyValueList to * stream 'wstream'. * @see OTF_Writer_writeDefTimeRange() * \ingroup wstream */ int OTF_WStream_writeDefTimeRange( OTF_WStream* wstream, uint64_t minTime, uint64_t maxTime, OTF_KeyValueList* list ); /** Write a DEFCOUNTERASSIGNMENTS record including an OTF_KeyValueList to * stream 'wstream'. * @see OTF_Writer_writeDefCounterAssignments() * \ingroup wstream */ int OTF_WStream_writeDefCounterAssignments( OTF_WStream* wstream, uint32_t counter_token, uint32_t number_of_members, const uint32_t* procs_or_groups, OTF_KeyValueList* list ); /** Write a DEFPROCESSSUBTITUTES record including an OTF_KeyValueList to * stream 'wstream'. * @see OTF_Writer_writeDefProcessSubsitutes() * \ingroup wstream */ int OTF_WStream_writeDefProcessSubstitutes( OTF_WStream* wstream, uint32_t representative, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList* list ); /** Write a DEFAUXSAMPLEPOINT record to stream 'wstream'. * @see OTF_Writer_writeDefAuxSamplePoint() * \ingroup wstream */ int OTF_WStream_writeDefAuxSamplePoint( OTF_WStream* wstream, uint64_t time, OTF_AuxSamplePointType type, OTF_KeyValueList* list ); /* *** event record write handlers *** ************************************* */ /** Write a NOOP record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeNoOpKV() * \ingroup wstream */ int OTF_WStream_writeNoOpKV( OTF_WStream* wstream, uint64_t time, uint32_t process, OTF_KeyValueList* list ); /** Write a ENTER record to stream 'wstream'. * @see OTF_Writer_writeEnter() * \ingroup wstream */ int OTF_WStream_writeEnter( OTF_WStream* wstream, uint64_t time, uint32_t statetoken, uint32_t cpuid, uint32_t scltoken ); /** Write a ENTER record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeEnterKV() * \ingroup wstream */ int OTF_WStream_writeEnterKV( OTF_WStream* wstream, uint64_t time, uint32_t statetoken, uint32_t cpuid, uint32_t scltoken, OTF_KeyValueList* list ); /** Write a RECEIVE record to stream 'wstream'. * @see OTF_Writer_writeRecvMsg() * \ingroup wstream */ int OTF_WStream_writeRecvMsg( OTF_WStream* wstream, uint64_t time, uint32_t receiver, uint32_t sender, uint32_t communicator, uint32_t msgtype, uint32_t msglength, uint32_t scltoken ); /** Write a RECEIVE record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeRecvMsgKV() * \ingroup wstream */ int OTF_WStream_writeRecvMsgKV( OTF_WStream* wstream, uint64_t time, uint32_t receiver, uint32_t sender, uint32_t communicator, uint32_t msgtype, uint32_t msglength, uint32_t scltoken, OTF_KeyValueList* list ); /** Write a SEND record to stream 'wstream'. * @see OTF_Writer_writeSendMsg() * \ingroup wstream */ int OTF_WStream_writeSendMsg( OTF_WStream* wstream, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t communicator, uint32_t msgtype, uint32_t msglength, uint32_t scltoken ); /** Write a SEND record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeSendMsgKV() * \ingroup wstream */ int OTF_WStream_writeSendMsgKV( OTF_WStream* wstream, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t communicator, uint32_t msgtype, uint32_t msglength, uint32_t scltoken, OTF_KeyValueList* list ); /** Write a LEAVE record to stream 'wstream'. * @see OTF_Writer_writeLeave() * \ingroup wstream */ int OTF_WStream_writeLeave( OTF_WStream* wstream, uint64_t time, uint32_t statetoken, uint32_t cpuid, uint32_t scltoken ); /** Write a LEAVE record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeLeaveKV() * \ingroup wstream */ int OTF_WStream_writeLeaveKV( OTF_WStream* wstream, uint64_t time, uint32_t statetoken, uint32_t cpuid, uint32_t scltoken, OTF_KeyValueList* list ); /** Write a COUNTER record to stream 'wstream'. * @see OTF_Writer_writeCounter() * \ingroup wstream */ int OTF_WStream_writeCounter( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t counter_token, uint64_t value ); /** Write a COUNTER record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeCounterKV() * \ingroup wstream */ int OTF_WStream_writeCounterKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t counter_token, uint64_t value, OTF_KeyValueList* list ); /** Write a COLLOP record to stream 'wstream'. * @deprecated This event record has been deprecated due to usage constraints. * Please use OTF_WStream_writeBeginCollectiveOperation() and * OTF_WStream_writeEndCollectiveOperation(), repectively. * \ingroup wstream */ int OTF_WStream_writeCollectiveOperation( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t functionToken, uint32_t communicator, uint32_t rootprocess, uint32_t sent, uint32_t received, uint64_t duration, uint32_t scltoken ); /** Write a COLLOP record including an OTF_KeyValueList to stream 'wstream'. * @deprecated This event record has been deprecated due to usage constraints. * Please use OTF_WStream_writeBeginCollectiveOperationKV() and * OTF_WStream_writeEndCollectiveOperationKV(), repectively. * \ingroup wstream */ int OTF_WStream_writeCollectiveOperationKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t functionToken, uint32_t communicator, uint32_t rootprocess, uint32_t sent, uint32_t received, uint64_t duration, uint32_t scltoken, OTF_KeyValueList* list ); /** Write a COLLOPBEGIN record to stream 'wstream'. * @see OTF_Writer_writeBeginCollectiveOperation() * \ingroup wstream */ int OTF_WStream_writeBeginCollectiveOperation( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken ); /** Write a COLLOPBEGIN record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeBeginCollectiveOperationKV() * \ingroup wstream */ int OTF_WStream_writeBeginCollectiveOperationKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList* list ); /** Write a COLLOPEND record to stream 'wstream'. * @see OTF_Writer_writeEndCollectiveOperation() * \ingroup wstream */ int OTF_WStream_writeEndCollectiveOperation( OTF_WStream* wstream, uint64_t time, uint32_t process, uint64_t matchingId ); /** Write a COLLOPEND record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeEndCollectiveOperationKV() * \ingroup wstream */ int OTF_WStream_writeEndCollectiveOperationKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint64_t matchingId, OTF_KeyValueList* list ); /** Write a #EVTCOMMENT record to stream 'wstream'. * @see OTF_Writer_writeEventComment() * \ingroup wstream */ int OTF_WStream_writeEventComment( OTF_WStream* wstream, uint64_t time, uint32_t process, const char* comment ); /** Write a #EVTCOMMENT record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeEventCommentKV() * \ingroup wstream */ int OTF_WStream_writeEventCommentKV( OTF_WStream* wstream, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* list ); /** Write a PROCESSBEGIN record to stream 'wstream'. * @see OTF_Writer_writeBeginProcess() * \ingroup wstream */ int OTF_WStream_writeBeginProcess( OTF_WStream* wstream, uint64_t time, uint32_t process ); /** Write a PROCESSBEGIN record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeBeginProcessKV() * \ingroup wstream */ int OTF_WStream_writeBeginProcessKV( OTF_WStream* wstream, uint64_t time, uint32_t process, OTF_KeyValueList* list ); /** Write a PROCESSEND record to stream 'wstream'. * @see OTF_Writer_writeEndProcess() * \ingroup wstream */ int OTF_WStream_writeEndProcess( OTF_WStream* wstream, uint64_t time, uint32_t process ); /** Write a PROCESSEND record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeEndProcessKV() * \ingroup wstream */ int OTF_WStream_writeEndProcessKV( OTF_WStream* wstream, uint64_t time, uint32_t process, OTF_KeyValueList* list ); /** Write a FILEOP record to stream 'wstream'. * @deprecated This event record has been deprecated due to usage constraints. * Please use OTF_WStream_writeBeginFileOperation() and * OTF_WStream_writeEndFileOperation(), respectively. * \ingroup wstream */ int OTF_WStream_writeFileOperation( OTF_WStream* wstream, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source ); /** Write a FILEOP record including an OTF_KeyValueList to stream 'wstream'. * @deprecated This event record has been deprecated due to usage constraints. * Please use OTF_WStream_writeBeginFileOperationKV() and * OTF_WStream_writeEndFileOperationKV(), respectively. * \ingroup wstream */ int OTF_WStream_writeFileOperationKV( OTF_WStream* wstream, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source, OTF_KeyValueList* list ); /** Write a FILEOPBEGIN record to stream 'wstream'. * @see OTF_Writer_writeBeginFileOperation() * \ingroup wstream */ int OTF_WStream_writeBeginFileOperation( OTF_WStream* wstream, uint64_t time, uint32_t process, uint64_t matchingId, uint32_t scltoken ); /** Write a FILEOPBEGIN record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeBeginFileOperationKV() * \ingroup wstream */ int OTF_WStream_writeBeginFileOperationKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList* list ); /** Write a FILEOPEND record to stream 'wstream'. * @see OTF_Writer_writeEndFileOperation() * \ingroup wstream */ int OTF_WStream_writeEndFileOperation( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t fileid, uint64_t matchingId, uint64_t handleId, uint32_t operation, uint64_t bytes, uint32_t scltoken ); /** Write a FILEOPEND record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeEndFileOperationKV() * \ingroup wstream */ int OTF_WStream_writeEndFileOperationKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t fileid, uint64_t matchingId, uint64_t handleId, uint32_t operation, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ); /** Write a RMAPUT record to stream 'wstream'. * @see OTF_Writer_writeRMAPut() * \ingroup wstream */ int OTF_WStream_writeRMAPut( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken ); /** Write a RMAPUT record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeRMAPutKV() * \ingroup wstream */ int OTF_WStream_writeRMAPutKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ); /** Write a RMAPUTRE record to stream 'wstream'. * @see OTF_Writer_writeRMAPutRemoteEnd() * \ingroup wstream */ int OTF_WStream_writeRMAPutRemoteEnd( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken ); /** Write a RMAPUTRE record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeRMAPutRemoteEndKV() * \ingroup wstream */ int OTF_WStream_writeRMAPutRemoteEndKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ); /** Write a RMAGET record to stream 'wstream'. * @see OTF_Writer_writeRMAGet() * \ingroup wstream */ int OTF_WStream_writeRMAGet( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken ); /** Write a RMAGET record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeRMAGetKV() * \ingroup wstream */ int OTF_WStream_writeRMAGetKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ); /** Write a RMAEND record to stream 'wstream'. * @see OTF_Writer_writeRMAEnd() * \ingroup wstream */ int OTF_WStream_writeRMAEnd( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t scltoken ); /** Write a RMAEND record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeRMAEndKV() * \ingroup wstream */ int OTF_WStream_writeRMAEndKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t scltoken, OTF_KeyValueList* list ); /* *** public snapshot record write handlers *** */ /** Write a #TCOMMENT record to stream 'wstream'. * @see OTF_Writer_writeSnapshotComment() * \ingroup wstream */ int OTF_WStream_writeSnapshotComment( OTF_WStream* wstream, uint64_t time, uint32_t process, const char* comment ); /** Write a #TCOMMENT record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeSnapshotCommentKV() * \ingroup wstream */ int OTF_WStream_writeSnapshotCommentKV( OTF_WStream* wstream, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* list ); /** Write a TENTER record to stream 'wstream'. * @see OTF_Writer_writeEnterSnapshot() * \ingroup wstream */ int OTF_WStream_writeEnterSnapshot( OTF_WStream* wstream, uint64_t time, uint64_t originaltime, uint32_t statetoken, uint32_t cpuid, uint32_t scltoken ); /** Write a TENTER record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeEnterSnapshotKV() * \ingroup wstream */ int OTF_WStream_writeEnterSnapshotKV( OTF_WStream* wstream, uint64_t time, uint64_t originaltime, uint32_t statetoken, uint32_t cpuid, uint32_t scltoken, OTF_KeyValueList* list ); /** Write a TSEND record to stream 'wstream'. * @see OTF_Writer_writeSendSnapshot() * \ingroup wstream */ int OTF_WStream_writeSendSnapshot( OTF_WStream* wstream, uint64_t time, uint64_t originaltime, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t type, uint32_t length, uint32_t source ); /** Write a TSEND record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeSendSnapshotKV() * \ingroup wstream */ int OTF_WStream_writeSendSnapshotKV( OTF_WStream* wstream, uint64_t time, uint64_t originaltime, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t type, uint32_t length, uint32_t source, OTF_KeyValueList* list ); /** Write a TOPENFILE record to stream 'wstream'. * @see OTF_Writer_writeOpenFileSnapshot() * \ingroup wstream */ int OTF_WStream_writeOpenFileSnapshot( OTF_WStream* wstream,uint64_t time, uint64_t originaltime, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t source ); /** Write a TOPENFILE record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeOpenFileSnapshotKV() * \ingroup wstream */ int OTF_WStream_writeOpenFileSnapshotKV( OTF_WStream* wstream,uint64_t time, uint64_t originaltime, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t source, OTF_KeyValueList* list ); /** Write a TBEGINCOLLOP record to stream 'wstream'. * @see OTF_Writer_writeBeginCollopSnapshot() * \ingroup wstream */ int OTF_WStream_writeBeginCollopSnapshot( OTF_WStream* wstream, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken ); /** Write a TBEGINCOLLOP record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeBeginCollopSnapshotKV() * \ingroup wstream */ int OTF_WStream_writeBeginCollopSnapshotKV( OTF_WStream* wstream, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList *list ); /** Write a TBEGINFILEOP record to stream 'wstream'. * @see OTF_Writer_writeBeginFileOpSnapshot() * \ingroup wstream */ int OTF_WStream_writeBeginFileOpSnapshot( OTF_WStream* wstream, uint64_t time, uint64_t originaltime, uint32_t process, uint64_t matchingId, uint32_t scltoken ); /** Write a TBEGINFILEOP record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeBeginFileOpSnapshotKV() * \ingroup wstream */ int OTF_WStream_writeBeginFileOpSnapshotKV( OTF_WStream* wstream, uint64_t time, uint64_t originaltime, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList *list ); /** Write a TCOLLOPCOUNT record to stream 'wstream'. * @see OTF_Writer_writeCollopCountSnapshot() * \ingroup wstream */ int OTF_WStream_writeCollopCountSnapshot( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t communicator, uint64_t count, OTF_KeyValueList* list ); /** Write a TCOUNTER record to stream 'wstream'. * @see OTF_Writer_writeCounterSnapshot() * \ingroup wstream */ int OTF_WStream_writeCounterSnapshot( OTF_WStream* wstream, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList* list ); /* *** public statistics record write handlers *** */ /** Write a SUMCOMMENT record to stream 'wstream'. * @see OTF_Writer_writeSummaryComment() * \ingroup wstream */ int OTF_WStream_writeSummaryComment( OTF_WStream* wstream, uint64_t time, uint32_t process, const char* comment ); /** Write a SUMCOMMENT record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeSummaryCommentKV() * \ingroup wstream */ int OTF_WStream_writeSummaryCommentKV( OTF_WStream* wstream, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* list ); /** Write a SUMFUNCTION record to stream 'wstream'. * @see OTF_Writer_writeFunctionSummary() * \ingroup wstream */ int OTF_WStream_writeFunctionSummary( OTF_WStream* wstream, uint64_t time, uint32_t function, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime ); /** Write a SUMFUNCTION record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeFunctionSummaryKV() * \ingroup wstream */ int OTF_WStream_writeFunctionSummaryKV( OTF_WStream* wstream, uint64_t time, uint32_t function, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime, OTF_KeyValueList* list ); /** Write a SUMFUNCTIONGROUP record to stream 'wstream'. * @see OTF_Writer_writeFunctionGroupSummary() * \ingroup wstream */ int OTF_WStream_writeFunctionGroupSummary( OTF_WStream* wstream, uint64_t time, uint32_t functiongroup, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime ); /** Write a SUMFUNCTIONGROUP record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeFunctionGroupSummaryKV() * \ingroup wstream */ int OTF_WStream_writeFunctionGroupSummaryKV( OTF_WStream* wstream, uint64_t time, uint32_t functiongroup, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime, OTF_KeyValueList* list ); /** Write a SUMMESSAGE record to stream 'wstream'. * @see OTF_Writer_writeMessageSummary() * \ingroup wstream */ int OTF_WStream_writeMessageSummary( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t peer, uint32_t comm, uint32_t tag, uint64_t number_sent, uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved ); /** Write a SUMMESSAGE record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeMessageSummaryKV() * \ingroup wstream */ int OTF_WStream_writeMessageSummaryKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t peer, uint32_t comm, uint32_t tag, uint64_t number_sent, uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved, OTF_KeyValueList* list ); /** Write a COLLOPMESSAGE record to stream 'wstream'. * @see OTF_Writer_writeCollopSummary() * \ingroup wstream */ int OTF_WStream_writeCollopSummary( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t comm, uint32_t collective, uint64_t number_sent, uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved ); /** Write a COLLOPMESSAGE record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeCollopSummaryKV() * \ingroup wstream */ int OTF_WStream_writeCollopSummaryKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t comm, uint32_t collective, uint64_t number_sent, uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved, OTF_KeyValueList* list ); /** Write a SUMFILEOPERATION record to stream 'wstream'. * @see OTF_Writer_writeFileOperationSummary() * \ingroup wstream */ int OTF_WStream_writeFileOperationSummary( OTF_WStream* wstream, uint64_t time, uint32_t fileid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite ); /** Write a SUMFILEOPERATION record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeFileOperationSummaryKV() * \ingroup wstream */ int OTF_WStream_writeFileOperationSummaryKV( OTF_WStream* wstream, uint64_t time, uint32_t fileid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList* list ); /** Write a SUMFILEGROUPOPERATION record to stream 'wstream'. * @see OTF_Writer_writeFileGroupOperationSummary() * \ingroup wstream */ int OTF_WStream_writeFileGroupOperationSummary( OTF_WStream* wstream, uint64_t time, uint32_t groupid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite ); /** Write a SUMFILEGROUPOPERATION record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeFileGroupOperationSummaryKV() * \ingroup wstream */ int OTF_WStream_writeFileGroupOperationSummaryKV( OTF_WStream* wstream, uint64_t time, uint32_t groupid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList* list ); /* int OTF_WStream_writeCounterSummary( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t counter, uint64_t value ); int OTF_WStream_writeCollOpSummary( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t root, uint64_t bytes_sent, uint64_t bytes_recved ); */ /* *** marker record types *** */ /** Write a def marker record to stream 'wstream'. * @see OTF_Writer_writeDefMarker() * \ingroup wstream */ int OTF_WStream_writeDefMarker( OTF_WStream* wstream, uint32_t token, const char* name, uint32_t type ); /** Write a def marker record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeDefMarkerKV() * \ingroup wstream */ int OTF_WStream_writeDefMarkerKV( OTF_WStream* wstream, uint32_t token, const char* name, uint32_t type, OTF_KeyValueList* list ); /** Write a marker record to stream 'wstream'. * @see OTF_Writer_writeMarker() * \ingroup wstream */ int OTF_WStream_writeMarker( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t token, const char* text ); /** Write a marker record including an OTF_KeyValueList to stream 'wstream'. * @see OTF_Writer_writeMarkerKV() * \ingroup wstream */ int OTF_WStream_writeMarkerKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t token, const char* text, OTF_KeyValueList* list ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTF_WSTREAM_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_File.h0000644000000000000000000000013212544237152022002 xustar0030 mtime=1435582058.531899952 30 atime=1508138854.231377363 30 ctime=1508162366.185772154 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_File.h0000644000175000017500000001666012544237152023202 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_File.h * * @brief Provides a low-level API for accessing files. * * \ingroup internal */ #ifndef OTF_FILE_H #define OTF_FILE_H #include "OTF_FileManager.h" #include "OTF_Filenames.h" #include #ifdef HAVE_ZLIB /* We cannot include the zlib.h due to possibly missing path to it (e.g. zlib.h isn't located in a default compiler search path) */ /*#include */ /* macro to access the zlib object of struct_OTF_File with the correct type */ #define OTF_FILE_Z(file) ((z_stream*) (file)->z) #endif /* HAVE_ZLIB */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** mode determining what to do with a file */ enum enum_OTF_FileMode { OTF_FILEMODE_NOTHING = 0, OTF_FILEMODE_READ= 1, OTF_FILEMODE_WRITE= 2, OTF_FILEMODE_SEEK= 3 }; typedef enum enum_OTF_FileMode OTF_FileMode; /** status of a file */ enum enum_OTF_FileStatus { OTF_FILESTATUS_UNKNOWN= 0, OTF_FILESTATUS_ACTIVE= 1, OTF_FILESTATUS_SUSPENDED= 2, OTF_FILESTATUS_CLOSED= 3 }; typedef enum enum_OTF_FileStatus OTF_FileStatus; /* Needs to be in the header so we can use it from OTF_File_iofsl */ struct struct_OTF_File { /** own copy of filename */ char* filename; /** actual file handle, it is NULL if file is currently closed, != NULL otherwise */ FILE* file; #ifdef HAVE_ZLIB /** zlib object, The actual type z_stream* cannot be used here (see notes above). Use the macro OTF_FILE_Z() to access it with the correct type. */ void* z; /** zlib entry buffer ... what a nice wordplay */ unsigned char* zbuffer; uint32_t zbuffersize; /* This is for a workaround for zlib: At the time of the first implementation of 'OTF_File_seek()' the documentation of zlib's 'inflateSync' said it would jump to the next "full flush point", i.e. the point where zlib decompression can be safely resumed after an error or -- in our case a file seek. It turned out it is only a "possible full flush point" -- this is what zlib's docu says now, after our inquiry with the zlib authors. It is also possible that it finds a fake flush point, i.e. the compressed data looks like a flush point but it is not. Now this workaround relies on the likely case that resuming decompression at a fake flush point will cause a decompression error during the next 'OTF_File_read()' operation. Should the decompression error happen later or not at all, garbage data will be produced. Then, OTF is out of luck and will throw a parser error. One can resolve this by uncompressing the trace or the stream in question with the 'otfdecompress' command. But back to the likely case where zlib decompress (the 'inflate()' routine) produces an error. Then OTF can save the day like the following: 1) Every time 'OTF_File_seek()' thinks it found a full flush point via 'inflateSync()' it stores the following byte position in 'zbuffer_seek_further' -- this is where it needs to continue to search for the next flush point later in case it turns out that it was a fake flush point. If 'zbuffer_seek_further' is 0 it means there is no following position. 2) In 'OTF_File_read()' the 'zbuffer' contents is decompressed with 'inflate()'. If this produces an error AND there is a valid following position in 'zbuffer_seek_further', then call 'OTF_File_seek()' again with the position in 'zbuffer_seek_further' and try to read again from the newly found flush point. In this case 'OTF_File_read()' is called recursively until some data is read successfully or the end of the file is reached. 3) Every time after a successful read or reaching the end of the file, the value or 'zbuffer_seek_further' is set to '0' such that the workaround is not activated for successive reads. Thus, the workaround can only by triggered by the first read request after a seek operation. It the decompression error manifests itself later than the first read operation, then the workaround cannot fix anything. However, by that time OTF should already have experienced parsing errors anyway. By Andreas Knuepfer, Thomas Ilsche, Matthias Jurenz. This was a fascinating puzzle! */ uint64_t zbuffer_seek_further; #endif /* HAVE_ZLIB */ /** keep file pos when the real file is closed, undefined while file is open, == 0 before opened for the first time */ uint64_t pos; OTF_FileMode mode; OTF_FileManager* manager; /** Reference to external buffer to read from instead of a real file. This is for reading of definitions only and has some limitations. */ const char* externalbuffer; /** the current position in the 'externalbuffer' */ uint64_t externalpos; /** the total length of the 'externalbuffer' */ uint64_t externallen; OTF_File_iofsl *iofsl; }; #ifdef HAVE_ZOIDFS /** external variable indicating whether zoidfs was initialized */ extern uint8_t zoidfs_initialized; #endif /** initialize a OTF_File object */ void OTF_File_init( OTF_File* o ); /** finalize a OTF_File object */ void OTF_File_finalize( OTF_File* o ); /** open an OTF_File */ OTF_File* OTF_File_open( const char* filename, OTF_FileManager* manager, OTF_FileMode mode ); /** open a pseudo OTF_File that actually reads from the given memory buffer. The buffer is not copied, you need to manage it yourself! Don't touch it during access operations. */ OTF_File* OTF_File_open_with_external_buffer( uint32_t len, const char* buffer, uint8_t is_compressed, OTF_FileMode mode ); /** Rename file pointed to by 'from' to file 'to'. * If the filename describes a zoidfs file the zoidfs API is used. * Otherwise standard POSIX rename is used.*/ int OTF_File_rename(const char* from, const char* to); int OTF_File_access(const char* filename, int mode); /** Remove the file according to the stream id encoded in the filename */ int OTF_File_remove(const char* filename); /** Clean up everything -- relevant only for multifile use to remove the data and index file */ int OTF_File_clean(const char* filename); /** OTF_File to an OTF_File */ size_t OTF_File_write( OTF_File* file, const void* ptr, size_t size ); /** read from an OTF_File */ size_t OTF_File_read( OTF_File* file, void* ptr, size_t size ); /** seek absolute position in an OTF_File */ int OTF_File_seek( OTF_File* file, uint64_t pos ); /** get absolut position from an OTF_File */ uint64_t OTF_File_tell( OTF_File* file ); /** return the file size in bytes*/ uint64_t OTF_File_size( OTF_File* file ); /** close OTF_File */ int OTF_File_close( OTF_File* file ); /** return OTF_File status */ OTF_FileStatus OTF_File_status( OTF_File* file ); /** suspend OTF_File - internal use only. */ void OTF_File_suspend( OTF_File* file ); /** re-open the file when closed or suspended - internal use only. return 1 on success, 0 otherwise */ int OTF_File_revive( OTF_File* file, OTF_FileMode mode ); void OTF_File_setZBufferSize( OTF_File* file, uint32_t size ); /** internal use */ OTF_File* OTF_File_open_zlevel( const char* filename, OTF_FileManager* manager, OTF_FileMode mode, OTF_FileCompression compression ); /* internal function */ /** read 'length' bytes from underlying file or from special memory buffer */ size_t OTF_File_read_internal( OTF_File* file, void* dest, size_t length ); /** Wrapper around fwrite to issue calls to zoidfs_write if needed */ size_t OTF_File_write_internal(OTF_File* file, const void* src, size_t length); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTF_FILE_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_Errno.h0000644000000000000000000000013212544237152022210 xustar0030 mtime=1435582058.531899952 30 atime=1508138854.183376164 30 ctime=1508162366.185772154 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_Errno.h0000644000175000017500000000220012544237152023371 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_Errno.h * * @brief Provides two variables that contain information about the * last error that occurred. * * You can check the error variables after every otf functions call * to find out if there was an error or not. * * Variables:
* * \code * int otf_errno - indicates whether an error occurred or not, * values can be OTF_NO_ERROR or OTF_ERROR * * char* otf_strerr - contains the last error message with a * maximum length of OTF_ERR_LEN * \endcode * * * Both variables can be used after including otf.h * \ingroup misc */ #ifndef OTF_ERRNO_H #define OTF_ERRNO_H #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** @cond Errno.h */ /** the following lines is ignored by doxygen */ void OTF_Error( const char* format, ... ); void OTF_Warning( const char* format, ... ); /** @endcond */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTF_ERRNO_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_Errno.c0000644000000000000000000000013212544237152022203 xustar0030 mtime=1435582058.531899952 30 atime=1508138854.127374766 30 ctime=1508162366.209774249 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_Errno.c0000644000175000017500000000123612544237152023374 0ustar00trahaytrahay00000000000000#ifdef HAVE_CONFIG_H #include "config.h" #endif #include "OTF_Definitions.h" #include "OTF_Errno.h" #include #include char otf_strerr[OTF_ERR_LEN] = "No errors occurred."; int otf_errno = OTF_NO_ERROR; void OTF_Error( const char* format, ... ) { va_list ap; va_start( ap, format ); vsnprintf( otf_strerr, OTF_ERR_LEN, format, ap ); otf_errno = OTF_ERROR; #ifdef OTF_VERBOSE fprintf( stderr, "%s", otf_strerr ); #endif /* OTF_VERBOSE */ va_end( ap ); } void OTF_Warning( const char* format, ... ) { va_list ap; va_start( ap, format ); #ifdef OTF_VERBOSE vfprintf( stderr, format, ap ); #endif /* OTF_VERBOSE */ va_end( ap ); } eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_Platform.c0000644000000000000000000000013212544237152022702 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.147375265 30 ctime=1508162366.217774947 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_Platform.c0000644000175000017500000001535312544237152024100 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch Copyright (c) 2004-2005, The Trustees of Indiana University and Indiana University Research and Technology Copyright (c) 2004-2006, The University of Tennessee and The University of Tennessee Research Foundation Copyright (c) 2004-2005, High Performance Computing Center Stuttgart, University of Stuttgart Copyright (c) 2004-2005, The Regents of the University of California Copyright (c) 2007, Cisco Systems, Inc. */ #include "OTF_Platform.h" #include #include #if defined(_WIN32) /* windows */ #include #include #include "OTF_inttypes_win.h" int gettimeofday(struct timeval* tv, void* dummytimezone) { union { long long ns100; FILETIME ft; } now; GetSystemTimeAsFileTime (&now.ft); tv->tv_usec = (long) ((now.ns100 / 10LL) % 1000000LL); tv->tv_sec = (long) ((now.ns100 - 116444736000000000LL) / 10000000LL); return 0; } /* Taken from: http://www.mail-archive.com/pan-devel@nongnu.org/msg00294.html */ int mkstemp(char *tmpl) { int ret = -1; mktemp(tmpl); ret = open(tmpl, O_RDWR|O_BINARY|O_CREAT|O_EXCL|_O_SHORT_LIVED, _S_IREAD|_S_IWRITE); return ret; } /* Taken from: http://gnuwin32.sourceforge.net/packages/libgw32c.htm */ long int nrand48 (unsigned short int xsubi[3]) { uint64_t x = (uint64_t) xsubi[2] << 32 | (uint32_t) xsubi[1] << 16 | xsubi[0]; x = x * 0x5deece66dull + 0xb; xsubi[0] = x & 0xffff; xsubi[1] = (x >> 16) & 0xffff; xsubi[2] = (x >> 32) & 0xffff; if (sizeof (unsigned short int) == 2) { return xsubi[2] << 15 | xsubi[1] >> 1; } else { return xsubi[2] >> 1; } } #else /* unix */ #include #include static int guess_strlen(const char* fmt, va_list ap) { char* sarg; double darg; float farg; size_t i; int iarg; int len; long larg; /* Start off with a fudge factor of 128 to handle the % escapes that * we aren't calculating here */ len = (int)strlen(fmt) + 128; for (i = 0; i < strlen(fmt); ++i) { if ('%' == fmt[i] && i + 1 < strlen(fmt) && '%' != fmt[i + 1]) { ++i; switch (fmt[i]) { case 'c': (void)va_arg(ap, int); len += 1; /* let's suppose it's a printable char */ break; case 's': sarg = va_arg(ap, char*); /* If there's an arg, get the strlen, otherwise we'll * use (null) */ if (NULL != sarg) { len += (int)strlen(sarg); } else { len += 5; } break; case 'd': case 'i': iarg = va_arg(ap, int); /* Alloc for minus sign */ if (iarg < 0) ++len; /* Now get the log10 */ do { ++len; iarg /= 10; } while (0 != iarg); break; case 'x': case 'X': iarg = va_arg(ap, int); /* Now get the log16 */ do { ++len; iarg /= 16; } while (0 != iarg); break; case 'f': farg = (float)va_arg(ap, int); /* Alloc for minus sign */ if (farg < 0) { ++len; farg = -farg; } /* Alloc for 3 decimal places + '.' */ len += 4; /* Now get the log10 */ do { ++len; farg /= 10.0; } while (0 != farg); break; case 'g': darg = va_arg(ap, int); /* Alloc for minus sign */ if (darg < 0) { ++len; darg = -darg; } /* Alloc for 3 decimal places + '.' */ len += 4; /* Now get the log10 */ do { ++len; darg /= 10.0; } while (0 != darg); break; case 'l': /* Get %ld %lx %lX %lf */ if (i + 1 < strlen(fmt)) { ++i; switch (fmt[i]) { case 'x': case 'X': larg = va_arg(ap, int); /* Now get the log16 */ do { ++len; larg /= 16; } while (0 != larg); break; case 'f': darg = va_arg(ap, int); /* Alloc for minus sign */ if (darg < 0) { ++len; darg = -darg; } /* Alloc for 3 decimal places + '.' */ len += 4; /* Now get the log10 */ do { ++len; darg /= 10.0; } while (0 != darg); break; case 'd': default: larg = va_arg(ap, int); /* Now get the log10 */ do { ++len; larg /= 10; } while (0 != larg); break; } } default: break; } } } return len; } int OTF_asprintf(char** ptr, const char* fmt, ...) { int length; va_list ap; va_start(ap, fmt); length = OTF_vasprintf(ptr, fmt, ap); va_end(ap); return length; } int OTF_vasprintf(char** ptr, const char* fmt, va_list ap) { int length; va_list ap2; /* va_list might have pointer to internal state and using * it twice is a bad idea. So make a copy for the second * use. Copy order taken from Autoconf docs. */ #if defined(HAVE_VA_COPY) && HAVE_VA_COPY va_copy(ap2, ap); #elif defined(HAVE_UNDERSCORE_VA_COPY) && HAVE_UNDERSCORE_VA_COPY __va_copy(ap2, ap); #else memcpy (&ap2, &ap, sizeof(va_list)); #endif /* guess the size */ length = guess_strlen(fmt, ap); /* allocate a buffer */ *ptr = (char*) malloc((size_t) length + 1); if (NULL == *ptr) { errno = ENOMEM; va_end(ap2); return -1; } /* fill the buffer */ length = vsprintf(*ptr, fmt, ap2); #if (defined(HAVE_VA_COPY) && HAVE_VA_COPY) || (defined(HAVE_UNDERSCORE_VA_COPY) && HAVE_UNDERSCORE_VA_COPY) va_end(ap2); #endif /* HAVE_VA_COPY || HAVE_UNDERSCORE_VA_COPY */ /* realloc */ *ptr = (char*)realloc(*ptr, (size_t)length + 1); if (NULL == *ptr) { errno = ENOMEM; return -1; } return length; } int OTF_snprintf(char* str, size_t size, const char* fmt, ...) { int length; va_list ap; va_start(ap, fmt); length = OTF_vsnprintf(str, size, fmt, ap); va_end(ap); return length; } int OTF_vsnprintf(char* str, size_t size, const char* fmt, va_list ap) { int length; char* buf; length = OTF_vasprintf(&buf, fmt, ap); if (length < 0) { return length; } /* return the length when given a null buffer (C99) */ if (str) { if ((size_t) length < size) { strcpy(str, buf); } else { memcpy(str, buf, size - 1); str[size] = '\0'; } } /* free allocated buffer */ free(buf); buf = NULL; return length; } char* OTF_strdup(const char* s) { char* c; if (s == NULL || (c = (char*)malloc(strlen(s)+1)) == NULL) { errno = ENOMEM; return NULL; } strcpy(c, s) ; return c; } #endif /* windows/unix */ char* OTF_basename(char* path) { char *ret; #if defined(_WIN32) const char* s = "\\"; #else const char* s = "/"; #endif if( path == NULL || strlen( path ) == 0 ) { ret = strdup( "." ); } else if( path[strlen(path)-1] == *s ) { ret = strdup( s ); } else { char* tmp; if( ( tmp = strrchr( path, *s ) ) != NULL ) ret = strdup( tmp+1 ); else ret = strdup( path ); } return ret; } eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_WStream.c0000644000000000000000000000013212544237152022500 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.991396344 30 ctime=1508162366.221775297 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_WStream.c0000644000175000017500000040754612544237152023707 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "OTF_Platform.h" #include "OTF_Definitions.h" #include #include #include #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #include "OTF_WStream.h" #include "OTF_Platform.h" #include "OTF_Filenames.h" #include "OTF_Keywords.h" #include "OTF_Errno.h" /** constructor - internal use only */ int OTF_WStream_init( OTF_WStream* wstream ); /** destructor - internal use only */ int OTF_WStream_finish( OTF_WStream* wstream ); /** Write a DEFUNIQUEID record to stream 'wstream'. */ int OTF_WStream_writeDefUniqueId( OTF_WStream* wstream, uint64_t uid ); /** Write a DEFVERSION record to stream 'wstream'. */ int OTF_WStream_writeDefVersion( OTF_WStream* wstream, uint8_t major, uint8_t minor, uint8_t sub, const char* string ); /* ************************************************************************* */ int OTF_WStream_init( OTF_WStream* wstream ) { wstream->namestub= NULL; wstream->id= (uint32_t) -1; wstream->format= OTF_WSTREAM_FORMAT_SHORT; wstream->defBuffer= NULL; wstream->eventBuffer= NULL; wstream->snapsBuffer= NULL; wstream->statsBuffer= NULL; wstream->markerBuffer= NULL; #ifdef HAVE_ZLIB wstream->compression= 0; wstream->zbuffersizes= OTF_ZBUFFER_DEFAULTSIZE; #endif /* HAVE_ZLIB */ wstream->buffersizes= 1024*1024; return 1; } int OTF_WStream_finish( OTF_WStream* wstream ) { int ret= 1; # ifdef OTF_DEBUG int tmpret; # endif free( wstream->namestub ); wstream->namestub= NULL; wstream->id= (uint32_t) -1; if ( NULL != wstream->defBuffer ) { # ifndef OTF_DEBUG ret&= OTF_WBuffer_close( wstream->defBuffer ); # else tmpret= OTF_WBuffer_close( wstream->defBuffer ); if( 0 == tmpret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_close() failed for the def buffer.\n", __FUNCTION__, __FILE__, __LINE__ ); } ret&= tmpret; # endif wstream->defBuffer= NULL; } if ( NULL != wstream->eventBuffer ) { # ifndef OTF_DEBUG ret&= OTF_WBuffer_close( wstream->eventBuffer ); # else tmpret= OTF_WBuffer_close( wstream->eventBuffer ); if( 0 == tmpret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_close() failed for the event buffer.\n", __FUNCTION__, __FILE__, __LINE__ ); } ret&= tmpret; # endif wstream->eventBuffer= NULL; } if ( NULL != wstream->snapsBuffer ) { # ifndef OTF_DEBUG ret&= OTF_WBuffer_close( wstream->snapsBuffer ); # else tmpret= OTF_WBuffer_close( wstream->snapsBuffer ); if( 0 == tmpret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_close() failed for the snapshots buffer.\n", __FUNCTION__, __FILE__, __LINE__ ); } ret&= tmpret; # endif wstream->snapsBuffer= NULL; } if ( NULL != wstream->statsBuffer ) { # ifndef OTF_DEBUG ret&= OTF_WBuffer_close( wstream->statsBuffer ); # else tmpret= OTF_WBuffer_close( wstream->statsBuffer ); if( 0 == tmpret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_close() failed for the statistics buffer.\n", __FUNCTION__, __FILE__, __LINE__ ); } ret&= tmpret; # endif wstream->statsBuffer= NULL; } if ( NULL != wstream->markerBuffer ) { # ifndef OTF_DEBUG ret&= OTF_WBuffer_close( wstream->markerBuffer ); # else tmpret= OTF_WBuffer_close( wstream->markerBuffer ); if( 0 == tmpret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_close() failed for the statistics buffer.\n", __FUNCTION__, __FILE__, __LINE__ ); } ret&= tmpret; # endif wstream->markerBuffer= NULL; } return ret; } OTF_WStream* OTF_WStream_open( const char* namestub, uint32_t id, OTF_FileManager* manager ) { OTF_WStream* ret= NULL; if( NULL == manager ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "manager has not been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } ret= (OTF_WStream*) malloc( sizeof(OTF_WStream) ); if( NULL == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } OTF_WStream_init( ret ); ret->namestub= strdup( namestub ); ret->id= id; ret->manager= manager; /* leave buffers allone, they are allocated on demand */ return ret; } int OTF_WStream_close( OTF_WStream* wstream ) { int ret= 0; if ( NULL != wstream ) { ret= OTF_WStream_finish( wstream ); if( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WStream_finish() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); } free( wstream ); wstream = NULL; } return ret; } int OTF_WStream_flush( OTF_WStream* wstream ) { int retval= 1; if ( NULL != wstream->defBuffer ) { retval= retval & OTF_WBuffer_flush( wstream->defBuffer ); } if ( NULL != wstream->eventBuffer ) { retval= retval & OTF_WBuffer_flush( wstream->eventBuffer ); } if ( NULL != wstream->snapsBuffer ) { retval= retval & OTF_WBuffer_flush( wstream->snapsBuffer ); } if ( NULL != wstream->statsBuffer ) { retval= retval & OTF_WBuffer_flush( wstream->statsBuffer ); } if ( NULL != wstream->markerBuffer ) { retval= retval & OTF_WBuffer_flush( wstream->markerBuffer ); } return retval; } OTF_WBuffer* OTF_WStream_getDefBuffer( OTF_WStream* wstream ) { /* have filename allocated an freed in order to avoid problems with pre-allocated buffer being too short */ char* filename; if ( NULL == wstream->defBuffer ) { filename= OTF_getFilename( wstream->namestub, wstream->id, OTF_FILETYPE_DEF, 0, NULL ); if( NULL == filename ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_getFilename() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } #ifdef HAVE_ZLIB if ( wstream->compression > 0 ) { filename = strcat( filename, ".z" ); } #endif /* HAVE_ZLIB */ if( NULL == filename ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } wstream->defBuffer= OTF_WBuffer_open_zlevel( filename, wstream->manager, wstream->compression ); if( NULL == wstream->defBuffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_open() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } #ifdef HAVE_ZLIB OTF_WBuffer_setZBufferSize( wstream->defBuffer, wstream->zbuffersizes ); #endif /* HAVE_ZLIB */ free( filename ); filename = NULL; # ifndef OTF_DEBUG OTF_WBuffer_setSize( wstream->defBuffer, wstream->buffersizes ); # else if( 0 == OTF_WBuffer_setSize( wstream->defBuffer, wstream->buffersizes ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_setSize() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); } # endif } return wstream->defBuffer; } OTF_WBuffer* OTF_WStream_getEventBuffer( OTF_WStream* wstream ) { /* have filename allocated an freed in order to avoid problems with pre-allocated buffer being too short */ char* filename; if ( NULL == wstream->eventBuffer ) { filename= OTF_getFilename( wstream->namestub, wstream->id, OTF_FILETYPE_EVENT, 0, NULL ); if( NULL == filename ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_getFilename() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } #ifdef HAVE_ZLIB if ( wstream->compression > 0 ) { filename = strcat( filename, ".z" ); } #endif /* HAVE_ZLIB */ if( NULL == filename ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } wstream->eventBuffer= OTF_WBuffer_open_zlevel( filename, wstream->manager, wstream->compression ); if( NULL == wstream->eventBuffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_open() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } #ifdef HAVE_ZLIB OTF_WBuffer_setZBufferSize( wstream->eventBuffer, wstream->zbuffersizes ); #endif /* HAVE_ZLIB */ free( filename ); filename = NULL; # ifndef OTF_DEBUG OTF_WBuffer_setSize( wstream->eventBuffer, wstream->buffersizes ); # else if( 0 == OTF_WBuffer_setSize( wstream->eventBuffer, wstream->buffersizes ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_setSize() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); } # endif } return wstream->eventBuffer; } OTF_WBuffer* OTF_WStream_getSnapshotBuffer( OTF_WStream* wstream ) { /* have filename allocated an freed in order to avoid problems with pre-allocated buffer being too short */ char* filename; if ( ( wstream->format & 2 ) == OTF_WSTREAM_FORMAT_INLINE_SNAPSHOTS ) { return OTF_WStream_getEventBuffer( wstream ); } if ( NULL == wstream->snapsBuffer ) { filename= OTF_getFilename( wstream->namestub, wstream->id, OTF_FILETYPE_SNAPS, 0, NULL ); if( NULL == filename ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_getFilename() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } #ifdef HAVE_ZLIB if ( wstream->compression > 0) { filename = strcat( filename, ".z" ); } #endif /* HAVE_ZLIB */ if( NULL == filename ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } wstream->snapsBuffer= OTF_WBuffer_open_zlevel( filename, wstream->manager, wstream->compression ); if( NULL == wstream->snapsBuffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_open() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } #ifdef HAVE_ZLIB OTF_WBuffer_setZBufferSize( wstream->snapsBuffer, wstream->zbuffersizes ); #endif /* HAVE_ZLIB */ free( filename ); filename = NULL; # ifndef OTF_DEBUG OTF_WBuffer_setSize( wstream->snapsBuffer, wstream->buffersizes ); # else if( 0 == OTF_WBuffer_setSize( wstream->snapsBuffer, wstream->buffersizes ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_setSize() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); } # endif } return wstream->snapsBuffer; } OTF_WBuffer* OTF_WStream_getStatsBuffer( OTF_WStream* wstream ) { /* have filename allocated an freed in order to avoid problems with pre-allocated buffer being too short */ char* filename; if ( NULL == wstream->statsBuffer ) { filename= OTF_getFilename( wstream->namestub, wstream->id, OTF_FILETYPE_STATS, 0, NULL ); if( NULL == filename ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_getFilename() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } #ifdef HAVE_ZLIB if ( wstream->compression > 0) { filename = strcat( filename, ".z" ); } #endif /* HAVE_ZLIB */ if( NULL == filename ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } wstream->statsBuffer= OTF_WBuffer_open_zlevel( filename, wstream->manager, wstream->compression ); if( NULL == wstream->statsBuffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_open() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } free( filename ); filename = NULL; # ifndef OTF_DEBUG OTF_WBuffer_setSize( wstream->statsBuffer, wstream->buffersizes ); # else if( 0 == OTF_WBuffer_setSize( wstream->statsBuffer, wstream->buffersizes ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_setSize() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); } # endif } return wstream->statsBuffer; } OTF_WBuffer* OTF_WStream_getMarkerBuffer( OTF_WStream* wstream ) { /* have filename allocated an freed in order to avoid problems with pre-allocated buffer being too short */ char* filename; if ( NULL == wstream->markerBuffer ) { filename= OTF_getFilename( wstream->namestub, wstream->id, OTF_FILETYPE_MARKER, 0, NULL ); if( NULL == filename ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_getFilename() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } #ifdef HAVE_ZLIB if ( wstream->compression > 0) { filename = strcat( filename, ".z" ); } #endif /* HAVE_ZLIB */ if( NULL == filename ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } wstream->markerBuffer= OTF_WBuffer_open_zlevel( filename, wstream->manager, wstream->compression ); if( NULL == wstream->markerBuffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_open() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } free( filename ); filename = NULL; # ifndef OTF_DEBUG OTF_WBuffer_setSize( wstream->markerBuffer, wstream->buffersizes ); # else if( 0 == OTF_WBuffer_setSize( wstream->markerBuffer, wstream->buffersizes ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_WBuffer_setSize() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); } # endif } return wstream->markerBuffer; } int OTF_WStream_setCompression( OTF_WStream* wstream, OTF_FileCompression compression ) { #ifdef HAVE_ZLIB if ( compression <= 9 ) { wstream->compression = compression; return 1; } else { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "compression is no expected value (%u). ignored.\n", __FUNCTION__, __FILE__, __LINE__, compression ); return 0; } #else /* HAVE_ZLIB */ if( 0 == compression ) { return 1; } else { return 0; } #endif /* HAVE_ZLIB */ } OTF_FileCompression OTF_WStream_getCompression( OTF_WStream* wstream ) { #ifdef HAVE_ZLIB return wstream->compression; #else return 0; #endif /* HAVE_ZLIB */ } void OTF_WStream_setBufferSizes( OTF_WStream* wstream, uint32_t size ) { if ( 50 > size ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "intended buffer size %u is too small, rejected.\n", __FUNCTION__, __FILE__, __LINE__, size ); return; } else if ( 500 > size ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "buffer size %u is very small, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } else if ( 10 * 1024 *1024 < size ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "buffer size %u is rather big, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } wstream->buffersizes= size; } uint32_t OTF_WStream_getBufferSizes(OTF_WStream* wstream) { return wstream->buffersizes; } void OTF_WStream_setZBufferSizes( OTF_WStream* wstream, uint32_t size ) { #ifdef HAVE_ZLIB if ( 32 > size ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "intended zbuffer size %u is too small, rejected.\n", __FUNCTION__, __FILE__, __LINE__, size ); return; } else if ( 512 > size ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "zbuffer size %u is very small, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } else if ( 10 * 1024 *1024 < size ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "zbuffer size %u is rather big, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } wstream->zbuffersizes= size; #endif /* HAVE_ZLIB */ } uint32_t OTF_WStream_getZBufferSizes(OTF_WStream* wstream) { #ifdef HAVE_ZLIB return wstream->zbuffersizes; #else /* HAVE_ZLIB */ return 0; #endif /* HAVE_ZLIB */ } void OTF_WStream_setFormat( OTF_WStream* wstream, uint32_t format ) { if ( format > 3 ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "unknown ouput format chosen.\n", __FUNCTION__, __FILE__, __LINE__ ); } wstream->format= format; } uint32_t OTF_WStream_getFormat( OTF_WStream* wstream ) { return wstream->format; } /* *** definition record write handlers *** ******************************** */ int OTF_WStream_writeDefinitionCommentKV( OTF_WStream* wstream, const char* comment, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFINITIONCOMMENT ); OTF_WBuffer_writeString( buffer, comment ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFINITIONCOMMENT " " ); OTF_WBuffer_writeString( buffer, comment ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeDefinitionComment( OTF_WStream* wstream, const char* comment ) { return OTF_WStream_writeDefinitionCommentKV(wstream, comment, NULL); } int OTF_WStream_writeDefTimerResolutionKV( OTF_WStream* wstream, uint64_t ticksPerSecond, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFTIMERRESOLUTION ); OTF_WBuffer_writeUint64( buffer, ticksPerSecond ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFTIMERRESOLUTION " " ); OTF_WBuffer_writeUint64( buffer, ticksPerSecond ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeDefTimerResolution( OTF_WStream* wstream, uint64_t ticksPerSecond ) { return OTF_WStream_writeDefTimerResolutionKV( wstream, ticksPerSecond, NULL ); } int OTF_WStream_writeDefProcessKV( OTF_WStream* wstream, uint32_t deftoken, const char* name, uint32_t parent, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; # ifdef OTF_DEBUG if( 0 == deftoken ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "'0' is an invalid token.\n", __FUNCTION__, __FILE__, __LINE__ ); } # endif if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFPROCESS ); OTF_WBuffer_writeUint32( buffer, deftoken ); if ( NULL != name ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ); OTF_WBuffer_writeString( buffer, name ); } if ( 0 != parent ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_PARENT ); OTF_WBuffer_writeUint32( buffer, parent ); } OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFPROCESS " " ); OTF_WBuffer_writeUint32( buffer, deftoken ); if ( NULL != name ) { OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NAME " " ); OTF_WBuffer_writeString( buffer, name ); } if ( 0 != parent ) { OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_PARENT " " ); OTF_WBuffer_writeUint32( buffer, parent ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeDefProcess( OTF_WStream* wstream, uint32_t deftoken, const char* name, uint32_t parent ) { return OTF_WStream_writeDefProcessKV(wstream, deftoken, name, parent, NULL); } int OTF_WStream_writeDefProcessGroupKV( OTF_WStream* wstream, uint32_t deftoken, const char* name, uint32_t n, const uint32_t* array, OTF_KeyValueList* list ) { unsigned int i; OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; # ifdef OTF_DEBUG if( 0 == deftoken ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "'0' is an invalid token.\n", __FUNCTION__, __FILE__, __LINE__ ); } # endif if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFPROCESSGROUP ); OTF_WBuffer_writeUint32( buffer, deftoken ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_MEMBERS ); for ( i = 0; i < n; ++i ) { OTF_WBuffer_writeUint32( buffer, array[i] ); OTF_WBuffer_writeChar( buffer, ',' ); } OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ); OTF_WBuffer_writeString( buffer, name ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFPROCESSGROUP " " ); OTF_WBuffer_writeUint32( buffer, deftoken ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_MEMBERS " " ); for ( i = 0; i < n; ++i ) { OTF_WBuffer_writeUint32( buffer, array[i] ); OTF_WBuffer_writeChar( buffer, ',' ); } OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NAME " " ); OTF_WBuffer_writeString( buffer, name ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeDefProcessGroup( OTF_WStream* wstream, uint32_t deftoken, const char* name, uint32_t n, const uint32_t* array ) { return OTF_WStream_writeDefProcessGroupKV(wstream, deftoken, name, n, array, NULL); } int OTF_WStream_writeDefAttributeListKV( OTF_WStream* wstream, uint32_t attr_token, uint32_t num, OTF_ATTR_TYPE* array, OTF_KeyValueList* list ) { uint32_t i; OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFATTRLIST ); OTF_WBuffer_writeUint32( buffer, attr_token ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_MEMBERS ); for ( i = 0; i < num; ++i ) { OTF_WBuffer_writeUint32( buffer, array[i] ); OTF_WBuffer_writeChar( buffer, ',' ); } OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFATTRLIST " " ); OTF_WBuffer_writeUint32( buffer, attr_token ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_MEMBERS " " ); for ( i = 0; i < num; ++i ) { OTF_WBuffer_writeUint32( buffer, array[i] ); OTF_WBuffer_writeChar( buffer, ',' ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeDefAttributeList( OTF_WStream* wstream, uint32_t attr_token, uint32_t num, OTF_ATTR_TYPE* array ) { return OTF_WStream_writeDefAttributeListKV(wstream, attr_token, num, array, NULL); } int OTF_WStream_writeDefProcessOrGroupAttributesKV( OTF_WStream* wstream, uint32_t proc_token, uint32_t attr_token, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFPROCESSORGROUPATTR ); OTF_WBuffer_writeUint32( buffer, proc_token ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_VALUE ); OTF_WBuffer_writeUint32( buffer, attr_token ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFPROCESSORGROUPATTR " " ); OTF_WBuffer_writeUint32( buffer, proc_token ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_VALUE " " ); OTF_WBuffer_writeUint32( buffer, attr_token ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeDefProcessOrGroupAttributes( OTF_WStream* wstream, uint32_t proc_token, uint32_t attr_token ) { return OTF_WStream_writeDefProcessOrGroupAttributesKV(wstream, proc_token, attr_token, NULL); } int OTF_WStream_writeDefFunctionKV( OTF_WStream* wstream, uint32_t deftoken, const char* name, uint32_t group, uint32_t scltoken, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; # ifdef OTF_DEBUG if( 0 == deftoken ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "'0' is an invalid token.\n", __FUNCTION__, __FILE__, __LINE__ ); } # endif if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFFUNCTION ); OTF_WBuffer_writeUint32( buffer, deftoken ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_GROUP ); OTF_WBuffer_writeUint32( buffer, group ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ); OTF_WBuffer_writeString( buffer, name ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFFUNCTION " " ); OTF_WBuffer_writeUint32( buffer, deftoken ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_GROUP " " ); OTF_WBuffer_writeUint32( buffer, group ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NAME " " ); OTF_WBuffer_writeString( buffer, name ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SCL " " ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeDefFunction( OTF_WStream* wstream, uint32_t deftoken, const char* name, uint32_t group, uint32_t scltoken ) { return OTF_WStream_writeDefFunctionKV(wstream, deftoken, name, group, scltoken, NULL); } int OTF_WStream_writeDefFunctionGroupKV( OTF_WStream* wstream, uint32_t deftoken, const char* name, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; # ifdef OTF_DEBUG if( 0 == deftoken ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "'0' is an invalid token.\n", __FUNCTION__, __FILE__, __LINE__ ); } # endif if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFFUNCTIONGROUP ); OTF_WBuffer_writeUint32( buffer, deftoken ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ); OTF_WBuffer_writeString( buffer, name ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFFUNCTIONGROUP " " ); OTF_WBuffer_writeUint32( buffer, deftoken ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NAME " " ); OTF_WBuffer_writeString( buffer, name ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeDefFunctionGroup( OTF_WStream* wstream, uint32_t deftoken, const char* name ) { return OTF_WStream_writeDefFunctionGroupKV(wstream, deftoken, name, NULL); } int OTF_WStream_writeDefCollectiveOperationKV( OTF_WStream* wstream, uint32_t collOp, const char* name, uint32_t type, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; # ifdef OTF_DEBUG if( 0 == collOp ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "'0' is an invalid token.\n", __FUNCTION__, __FILE__, __LINE__ ); } # endif if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFCOLLOP ); OTF_WBuffer_writeUint32( buffer, collOp ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ); OTF_WBuffer_writeString( buffer, name ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_TYPE ); OTF_WBuffer_writeUint32( buffer, type ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFCOLLOP " " ); OTF_WBuffer_writeUint32( buffer, collOp ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NAME " " ); OTF_WBuffer_writeString( buffer, name ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_TYPE " " ); OTF_WBuffer_writeUint32( buffer, type ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeDefCollectiveOperation( OTF_WStream* wstream, uint32_t collOp, const char* name, uint32_t type ) { return OTF_WStream_writeDefCollectiveOperationKV(wstream, collOp, name, type, NULL); } int OTF_WStream_writeDefCounterKV( OTF_WStream* wstream, uint32_t deftoken, const char* name, uint32_t properties, uint32_t countergroup, const char* unit, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; # ifdef OTF_DEBUG if( 0 == deftoken ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "'0' is an invalid token.\n", __FUNCTION__, __FILE__, __LINE__ ); } # endif if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFCOUNTER ); OTF_WBuffer_writeUint32( buffer, deftoken ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_GROUP ); OTF_WBuffer_writeUint32( buffer, countergroup ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ); OTF_WBuffer_writeString( buffer, name ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_PROPERTIES ); OTF_WBuffer_writeUint32( buffer, properties ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_UNIT ); OTF_WBuffer_writeString( buffer, unit ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFCOUNTER " " ); OTF_WBuffer_writeUint32( buffer, deftoken ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_GROUP " " ); OTF_WBuffer_writeUint32( buffer, countergroup ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NAME " " ); OTF_WBuffer_writeString( buffer, name ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_PROPERTIES " " ); OTF_WBuffer_writeUint32( buffer, properties ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_UNIT " " ); OTF_WBuffer_writeString( buffer, unit ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeDefCounter( OTF_WStream* wstream, uint32_t deftoken, const char* name, uint32_t properties, uint32_t countergroup, const char* unit ) { return OTF_WStream_writeDefCounterKV(wstream, deftoken, name, properties, countergroup, unit, NULL); } int OTF_WStream_writeDefCounterGroupKV( OTF_WStream* wstream, uint32_t deftoken, const char* name, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; # ifdef OTF_DEBUG if( 0 == deftoken ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "'0' is an invalid token.\n", __FUNCTION__, __FILE__, __LINE__ ); } # endif if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFCOUNTERGROUP ); OTF_WBuffer_writeUint32( buffer, deftoken ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ); OTF_WBuffer_writeString( buffer, name ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFCOUNTERGROUP " " ); OTF_WBuffer_writeUint32( buffer, deftoken ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NAME " " ); OTF_WBuffer_writeString( buffer, name ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeDefCounterGroup( OTF_WStream* wstream, uint32_t deftoken, const char* name ) { return OTF_WStream_writeDefCounterGroupKV(wstream, deftoken, name, NULL); } int OTF_WStream_writeDefSclKV( OTF_WStream* wstream, uint32_t deftoken, uint32_t sclfile, uint32_t sclline, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; # ifdef OTF_DEBUG if( 0 == deftoken ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "'0' is an invalid token.\n", __FUNCTION__, __FILE__, __LINE__ ); } # endif if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFSCL ); OTF_WBuffer_writeUint32( buffer, deftoken ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_FILE ); OTF_WBuffer_writeUint32( buffer, sclfile ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_LINE ); OTF_WBuffer_writeUint32( buffer, sclline ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFSCL " " ); OTF_WBuffer_writeUint32( buffer, deftoken ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_FILE " " ); OTF_WBuffer_writeUint32( buffer, sclfile ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_LINE " " ); OTF_WBuffer_writeUint32( buffer, sclline ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeDefScl( OTF_WStream* wstream, uint32_t deftoken, uint32_t sclfile, uint32_t sclline ) { return OTF_WStream_writeDefSclKV(wstream, deftoken, sclfile, sclline, NULL); } int OTF_WStream_writeDefSclFileKV( OTF_WStream* wstream, uint32_t deftoken, const char* filename, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; # ifdef OTF_DEBUG if( 0 == deftoken ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "'0' is an invalid token.\n", __FUNCTION__, __FILE__, __LINE__ ); } # endif if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFSCLFILE ); OTF_WBuffer_writeUint32( buffer, deftoken ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ); OTF_WBuffer_writeString( buffer, filename ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFSCLFILE " " ); OTF_WBuffer_writeUint32( buffer, deftoken ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NAME " " ); OTF_WBuffer_writeString( buffer, filename ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeDefSclFile( OTF_WStream* wstream, uint32_t deftoken, const char* filename ) { return OTF_WStream_writeDefSclFileKV(wstream, deftoken, filename, NULL); } int OTF_WStream_writeDefUniqueId( OTF_WStream* wstream, uint64_t uid ) { OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFUNIQUEID ); OTF_WBuffer_writeUint64( buffer, uid ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFUNIQUEID " " ); OTF_WBuffer_writeUint64( buffer, uid ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeUniqueId( OTF_WStream* wstream ) { uint64_t uid; struct timeval tv; const uint64_t golden_ratio = 11400714819323198485ULL; static unsigned short rnd_state[3] = { 0, 0, 0 }; /* generate an unique id */ /* 0. initialize random state */ if ( 0 == rnd_state[0] && 0 == rnd_state[1] && 0 == rnd_state[2] ) { rnd_state[0] = (unsigned short)getpid(); rnd_state[1] = 1; rnd_state[2] = 2; } /* 1. get the current timestamp */ if ( -1 == gettimeofday( &tv, NULL ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "gettimeofday() failed: %s\n", __FUNCTION__, __FILE__, __LINE__, strerror(errno) ); return 0; } uid = (uint64_t)( ( tv.tv_sec * 1000000LL ) + tv.tv_usec ); /* 2. multiply a pseudo-random integer */ uid *= (uint64_t)nrand48( rnd_state ); /* 3. multiply the golden ratio */ uid *= golden_ratio; /* do actual write the unique-id record */ return OTF_WStream_writeDefUniqueId( wstream, uid ); } int OTF_WStream_writeDefVersion( OTF_WStream* wstream, uint8_t major, uint8_t minor, uint8_t sub, const char* string ) { OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFVERSION ); OTF_WBuffer_writeUint32( buffer, major ); OTF_WBuffer_writeChar( buffer, '.' ); OTF_WBuffer_writeUint32( buffer, minor ); OTF_WBuffer_writeChar( buffer, '.' ); OTF_WBuffer_writeUint32( buffer, sub ); OTF_WBuffer_writeString( buffer, string ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFVERSION " " ); OTF_WBuffer_writeUint32( buffer, major ); OTF_WBuffer_writeChar( buffer, '.' ); OTF_WBuffer_writeUint32( buffer, minor ); OTF_WBuffer_writeChar( buffer, '.' ); OTF_WBuffer_writeUint32( buffer, sub ); OTF_WBuffer_writeString( buffer, string ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeOtfVersion( OTF_WStream* wstream ) { return OTF_WStream_writeDefVersion( wstream, OTF_VERSION_MAJOR, OTF_VERSION_MINOR, OTF_VERSION_SUB, OTF_VERSION_STRING ); } int OTF_WStream_writeDefCreatorKV( OTF_WStream* wstream, const char* creator, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFCREATOR ); OTF_WBuffer_writeString( buffer, creator ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFCREATOR " " ); OTF_WBuffer_writeString( buffer, creator ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeDefCreator( OTF_WStream* wstream, const char* creator ) { return OTF_WStream_writeDefCreatorKV(wstream, creator, NULL); } int OTF_WStream_writeDefFileKV( OTF_WStream* wstream, uint32_t token, const char* name, uint32_t group, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; # ifdef OTF_DEBUG if( 0 == token ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "'0' is an invalid token.\n", __FUNCTION__, __FILE__, __LINE__ ); } # endif if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFFILE ); OTF_WBuffer_writeUint32( buffer, token ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ); OTF_WBuffer_writeString( buffer, name ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_GROUP ); OTF_WBuffer_writeUint32( buffer, group ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFFILE " " ); OTF_WBuffer_writeUint32( buffer, token ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NAME " " ); OTF_WBuffer_writeString( buffer, name ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_GROUP " " ); OTF_WBuffer_writeUint32( buffer, group ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeDefFile( OTF_WStream* wstream, uint32_t token, const char* name, uint32_t group ) { return OTF_WStream_writeDefFileKV(wstream, token, name, group, NULL); } int OTF_WStream_writeDefFileGroupKV( OTF_WStream* wstream, uint32_t token, const char* name, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; # ifdef OTF_DEBUG if( 0 == token ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "'0' is an invalid token.\n", __FUNCTION__, __FILE__, __LINE__ ); } # endif if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFFILEGROUP ); OTF_WBuffer_writeUint32( buffer, token ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ); OTF_WBuffer_writeString( buffer, name ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFFILEGROUP " " ); OTF_WBuffer_writeUint32( buffer, token ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NAME " " ); OTF_WBuffer_writeString( buffer, name ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeDefFileGroup( OTF_WStream* wstream, uint32_t token, const char* name ) { return OTF_WStream_writeDefFileGroupKV(wstream, token, name, NULL); } int OTF_WStream_writeDefKeyValueKV( OTF_WStream* wstream, uint32_t key, OTF_Type type, const char* name, const char *description, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFKEYVALUE ); OTF_WBuffer_writeUint32( buffer, key ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_TYPE ); OTF_WBuffer_writeUint32( buffer, type ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ); OTF_WBuffer_writeString( buffer, name ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_TAG ); OTF_WBuffer_writeString( buffer, description ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFKEYVALUE " " ); OTF_WBuffer_writeUint32( buffer, key ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_TYPE " " ); OTF_WBuffer_writeUint32( buffer, type ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NAME " " ); OTF_WBuffer_writeString( buffer, name ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_TAG " " ); OTF_WBuffer_writeString( buffer, description ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeDefKeyValue( OTF_WStream* wstream, uint32_t key, OTF_Type type, const char* name, const char *description ) { return OTF_WStream_writeDefKeyValueKV(wstream, key, type, name, description, NULL); } int OTF_WStream_writeDefTimeRange( OTF_WStream* wstream, uint64_t minTime, uint64_t maxTime, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); const char* recordkw= OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFTIMERANGE; const char* timekw= OTF_KEYWORD_S_LOCAL_TIME; uint32_t ( *writeKeyValueList )( OTF_WBuffer*, OTF_KeyValueList* )= OTF_WBuffer_writeKeyValueList_short; /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { recordkw= OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFTIMERANGE " "; timekw= " " OTF_KEYWORD_L_LOCAL_TIME " "; writeKeyValueList= OTF_WBuffer_writeKeyValueList_long; } writeKeyValueList( buffer, list ); OTF_WBuffer_writeKeyword( buffer, recordkw ); OTF_WBuffer_writeUint64( buffer, minTime ); OTF_WBuffer_writeKeyword( buffer, timekw ); OTF_WBuffer_writeUint64( buffer, maxTime ); OTF_WBuffer_writeNewline( buffer ); /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeDefCounterAssignments( OTF_WStream* wstream, uint32_t counter_token, uint32_t number_of_members, const uint32_t* procs_or_groups, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); uint32_t i; const char* recordkw= OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFCOUNTERASSIGNMENTS; const char* memberskw= OTF_KEYWORD_S_LOCAL_MEMBERS; uint32_t ( *writeKeyValueList )( OTF_WBuffer*, OTF_KeyValueList* )= OTF_WBuffer_writeKeyValueList_short; /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { recordkw= OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFCOUNTERASSIGNMENTS " "; memberskw= " " OTF_KEYWORD_L_LOCAL_MEMBERS " "; writeKeyValueList= OTF_WBuffer_writeKeyValueList_long; } writeKeyValueList( buffer, list ); OTF_WBuffer_writeKeyword( buffer, recordkw ); OTF_WBuffer_writeUint32( buffer, counter_token ); OTF_WBuffer_writeKeyword( buffer, memberskw ); for ( i = 0; i < number_of_members; ++i ) { OTF_WBuffer_writeUint32( buffer, procs_or_groups[i] ); OTF_WBuffer_writeChar( buffer, ',' ); } OTF_WBuffer_writeNewline( buffer ); /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeDefProcessSubstitutes( OTF_WStream* wstream, uint32_t representative, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList* list ) { unsigned int i; OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; # ifdef OTF_DEBUG if( 0 == representative ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "'0' is an invalid token.\n", __FUNCTION__, __FILE__, __LINE__ ); } # endif if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFPROCESSSUBSTITUTES ); OTF_WBuffer_writeUint32( buffer, representative ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_MEMBERS ); for ( i = 0; i < numberOfProcs; ++i ) { OTF_WBuffer_writeUint32( buffer, procs[i] ); OTF_WBuffer_writeChar( buffer, ',' ); } OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFPROCESSSUBSTITUTES " " ); OTF_WBuffer_writeUint32( buffer, representative ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_MEMBERS " " ); for ( i = 0; i < numberOfProcs; ++i ) { OTF_WBuffer_writeUint32( buffer, procs[i] ); OTF_WBuffer_writeChar( buffer, ',' ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeDefAuxSamplePoint( OTF_WStream* wstream, uint64_t time, OTF_AuxSamplePointType type, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getDefBuffer( wstream ); const char* recordkw= OTF_KEYWORD_S_DEF_PREFIX OTF_KEYWORD_S_DEFAUXSAMPLEPOINT; const char* typekw= OTF_KEYWORD_S_LOCAL_TYPE; uint32_t ( *writeKeyValueList )( OTF_WBuffer*, OTF_KeyValueList* )= OTF_WBuffer_writeKeyValueList_short; /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) { return 0; } if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { recordkw= OTF_KEYWORD_L_DEF_PREFIX OTF_KEYWORD_L_DEFAUXSAMPLEPOINT " "; typekw= " " OTF_KEYWORD_L_LOCAL_TYPE " "; writeKeyValueList= OTF_WBuffer_writeKeyValueList_long; } writeKeyValueList( buffer, list ); OTF_WBuffer_writeKeyword( buffer, recordkw ); OTF_WBuffer_writeUint64( buffer, time ); OTF_WBuffer_writeKeyword( buffer, typekw ); OTF_WBuffer_writeUint32( buffer, type ); OTF_WBuffer_writeNewline( buffer ); /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } /* *** event record write handlers *** ************************************* */ int OTF_WStream_writeNoOpKV( OTF_WStream* wstream, uint64_t time, uint32_t process, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getEventBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_NOOP ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_NOOP " " ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeEnterKV( OTF_WStream* wstream, uint64_t time, uint32_t statetoken, uint32_t cpuid, uint32_t scltoken, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getEventBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, cpuid ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_ENTER ); OTF_WBuffer_writeUint32( buffer, statetoken ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_ENTER " " ); OTF_WBuffer_writeUint32( buffer, statetoken ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SCL " " ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeEnter( OTF_WStream* wstream, uint64_t time, uint32_t statetoken, uint32_t cpuid, uint32_t scltoken ) { return OTF_WStream_writeEnterKV(wstream, time, statetoken, cpuid, scltoken, NULL); } int OTF_WStream_writeRecvMsgKV( OTF_WStream* wstream, uint64_t time, uint32_t receiver, uint32_t sender, uint32_t communicator, uint32_t msgtag, uint32_t msglength, uint32_t scltoken, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getEventBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, receiver ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_RECEIVE ); OTF_WBuffer_writeUint32( buffer, sender ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_LENGTH ); OTF_WBuffer_writeUint32( buffer, msglength ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_TAG ); OTF_WBuffer_writeUint32( buffer, msgtag ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_COMMUNICATOR ); OTF_WBuffer_writeUint32( buffer, communicator ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_RECEIVE " " ); OTF_WBuffer_writeUint32( buffer, sender ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_LENGTH " " ); OTF_WBuffer_writeUint32( buffer, msglength ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_TAG " " ); OTF_WBuffer_writeUint32( buffer, msgtag ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_COMMUNICATOR " " ); OTF_WBuffer_writeUint32( buffer, communicator ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SCL " " ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeRecvMsg( OTF_WStream* wstream, uint64_t time, uint32_t receiver, uint32_t sender, uint32_t communicator, uint32_t msgtag, uint32_t msglength, uint32_t scltoken ) { return OTF_WStream_writeRecvMsgKV(wstream, time, receiver, sender, communicator, msgtag, msglength, scltoken, NULL); } int OTF_WStream_writeSendMsgKV( OTF_WStream* wstream, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t communicator, uint32_t msgtag, uint32_t msglength, uint32_t scltoken, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getEventBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, sender ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_SEND ); OTF_WBuffer_writeUint32( buffer, receiver ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_LENGTH ); OTF_WBuffer_writeUint32( buffer, msglength ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_TAG ); OTF_WBuffer_writeUint32( buffer, msgtag ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_COMMUNICATOR ); OTF_WBuffer_writeUint32( buffer, communicator ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_SEND " " ); OTF_WBuffer_writeUint32( buffer, receiver ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_LENGTH " " ); OTF_WBuffer_writeUint32( buffer, msglength ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_TAG " " ); OTF_WBuffer_writeUint32( buffer, msgtag ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_COMMUNICATOR " " ); OTF_WBuffer_writeUint32( buffer, communicator ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SCL " " ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeSendMsg( OTF_WStream* wstream, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t communicator, uint32_t msgtag, uint32_t msglength, uint32_t scltoken ) { return OTF_WStream_writeSendMsgKV(wstream, time, sender, receiver, communicator, msgtag, msglength, scltoken, NULL); } int OTF_WStream_writeLeaveKV( OTF_WStream* wstream, uint64_t time, uint32_t statetoken, uint32_t cpuid, uint32_t scltoken, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getEventBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, cpuid ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LEAVE ); if( 0 != statetoken || 0 != scltoken ) { OTF_WBuffer_writeUint32( buffer, statetoken ); } if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_LEAVE " " ); if( 0 != statetoken || 0 != scltoken ) { OTF_WBuffer_writeUint32( buffer, statetoken ); } if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SCL " " ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeLeave( OTF_WStream* wstream, uint64_t time, uint32_t statetoken, uint32_t cpuid, uint32_t scltoken ) { return OTF_WStream_writeLeaveKV(wstream, time, statetoken, cpuid, scltoken, NULL); } int OTF_WStream_writeCounterKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t counter_token, uint64_t value, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getEventBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_COUNTER ); OTF_WBuffer_writeUint32( buffer, counter_token ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_VALUE ); OTF_WBuffer_writeUint64( buffer, value ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_COUNTER " " ); OTF_WBuffer_writeUint32( buffer, counter_token ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_VALUE " " ); OTF_WBuffer_writeUint64( buffer, value ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeCounter( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t counter_token, uint64_t value ) { return OTF_WStream_writeCounterKV(wstream, time, process, counter_token, value, NULL); } int OTF_WStream_writeCollectiveOperationKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t functionToken, uint32_t communicator, uint32_t rootprocess, uint32_t sent, uint32_t received, uint64_t duration, uint32_t scltoken, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getEventBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_COLLECTIVEOPERATION ); OTF_WBuffer_writeUint32( buffer, functionToken ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_COMMUNICATOR ); OTF_WBuffer_writeUint32( buffer, communicator ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_ROOT ); OTF_WBuffer_writeUint32( buffer, rootprocess ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SENT ); OTF_WBuffer_writeUint32( buffer, sent ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_RECVD ); OTF_WBuffer_writeUint32( buffer, received ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_DURATION ); OTF_WBuffer_writeUint64( buffer, duration ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_COLLECTIVEOPERATION " " ); OTF_WBuffer_writeUint32( buffer, functionToken ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_COMMUNICATOR " " ); OTF_WBuffer_writeUint32( buffer, communicator ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_ROOT " " ); OTF_WBuffer_writeUint32( buffer, rootprocess ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SENT " " ); OTF_WBuffer_writeUint32( buffer, sent ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_RECVD " " ); OTF_WBuffer_writeUint32( buffer, received ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_DURATION " " ); OTF_WBuffer_writeUint64( buffer, duration ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SCL " " ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeCollectiveOperation( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t functionToken, uint32_t communicator, uint32_t rootprocess, uint32_t sent, uint32_t received, uint64_t duration, uint32_t scltoken ) { return OTF_WStream_writeCollectiveOperationKV(wstream, time, process, functionToken, communicator, rootprocess, sent, received, duration, scltoken, NULL); } int OTF_WStream_writeBeginCollectiveOperationKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList* list ) { OTF_WBuffer* buffer = OTF_WStream_getEventBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_BEGINCOLLECTIVEOPERATION ); OTF_WBuffer_writeUint32( buffer, collOp ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_HANDLEID ); OTF_WBuffer_writeUint64( buffer, matchingId ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_COMMUNICATOR ); OTF_WBuffer_writeUint32( buffer, procGroup ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_ROOT ); OTF_WBuffer_writeUint32( buffer, rootProc ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SENT ); OTF_WBuffer_writeUint64( buffer, sent ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_RECVD ); OTF_WBuffer_writeUint64( buffer, received ); if( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } else if( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_BEGINCOLLECTIVEOPERATION " " ); OTF_WBuffer_writeUint32( buffer, collOp ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_HANDLEID " " ); OTF_WBuffer_writeUint64( buffer, matchingId ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_COMMUNICATOR " " ); OTF_WBuffer_writeUint32( buffer, procGroup ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_ROOT " " ); OTF_WBuffer_writeUint32( buffer, rootProc ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SENT " " ); OTF_WBuffer_writeUint64( buffer, sent ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_RECVD " " ); OTF_WBuffer_writeUint64( buffer, received ); if( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SCL " " ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeBeginCollectiveOperation( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken ) { return OTF_WStream_writeBeginCollectiveOperationKV(wstream, time, process, collOp, matchingId, procGroup, rootProc, sent, received, scltoken, NULL); } int OTF_WStream_writeEndCollectiveOperationKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint64_t matchingId, OTF_KeyValueList* list ) { OTF_WBuffer* buffer = OTF_WStream_getEventBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_ENDCOLLECTIVEOPERATION ); OTF_WBuffer_writeUint64( buffer, matchingId ); OTF_WBuffer_writeNewline( buffer ); } else if( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_ENDCOLLECTIVEOPERATION " " ); OTF_WBuffer_writeUint64( buffer, matchingId ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeEndCollectiveOperation( OTF_WStream* wstream, uint64_t time, uint32_t process, uint64_t matchingId ) { return OTF_WStream_writeEndCollectiveOperationKV(wstream, time, process, matchingId, NULL); } int OTF_WStream_writeEventCommentKV( OTF_WStream* wstream, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getEventBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_EVENTCOMMENT ); OTF_WBuffer_writeString( buffer, comment ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_EVENTCOMMENT " " ); OTF_WBuffer_writeString( buffer, comment ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeEventComment( OTF_WStream* wstream, uint64_t time, uint32_t process, const char* comment ) { return OTF_WStream_writeEventCommentKV(wstream, time, process, comment, NULL); } int OTF_WStream_writeBeginProcessKV( OTF_WStream* wstream, uint64_t time, uint32_t process, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getEventBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_BEGINPROCESS ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_BEGINPROCESS " " ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeBeginProcess( OTF_WStream* wstream, uint64_t time, uint32_t process ) { return OTF_WStream_writeBeginProcessKV(wstream, time, process, NULL); } int OTF_WStream_writeEndProcessKV( OTF_WStream* wstream, uint64_t time, uint32_t process, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getEventBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_ENDPROCESS ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_ENDPROCESS " " ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeEndProcess( OTF_WStream* wstream, uint64_t time, uint32_t process ) { return OTF_WStream_writeEndProcessKV(wstream, time, process, NULL); } int OTF_WStream_writeFileOperationKV( OTF_WStream* wstream, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getEventBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_FILEOPERATION ); OTF_WBuffer_writeUint32( buffer, fileid ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_HANDLEID ); OTF_WBuffer_writeUint64( buffer, handleid ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_OPERATION ); OTF_WBuffer_writeUint32( buffer, operation ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_BYTES ); OTF_WBuffer_writeUint64( buffer, bytes ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_DURATION ); OTF_WBuffer_writeUint64( buffer, duration ); if( 0 != source ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ); OTF_WBuffer_writeUint32( buffer, source ); } OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_FILEOPERATION " " ); OTF_WBuffer_writeUint32( buffer, fileid ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_HANDLEID " " ); OTF_WBuffer_writeUint64( buffer, handleid ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_OPERATION " " ); OTF_WBuffer_writeUint32( buffer, operation ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_BYTES " " ); OTF_WBuffer_writeUint64( buffer, bytes ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_DURATION " " ); OTF_WBuffer_writeUint64( buffer, duration ); if( 0 != source ) { OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SCL " " ); OTF_WBuffer_writeUint32( buffer, source ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeFileOperation( OTF_WStream* wstream, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source ) { return OTF_WStream_writeFileOperationKV(wstream, time, fileid, process, handleid, operation, bytes, duration, source, NULL); } int OTF_WStream_writeBeginFileOperationKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList* list ) { OTF_WBuffer* buffer = OTF_WStream_getEventBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_BEGINFILEOPERATION_NEW ); OTF_WBuffer_writeUint64( buffer, matchingId ); if( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } else if( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_BEGINFILEOPERATION_NEW " " ); OTF_WBuffer_writeUint64( buffer, matchingId ); if( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SCL " " ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeBeginFileOperation( OTF_WStream* wstream, uint64_t time, uint32_t process, uint64_t matchingId, uint32_t scltoken ) { return OTF_WStream_writeBeginFileOperationKV(wstream, time, process, matchingId, scltoken, NULL); } int OTF_WStream_writeEndFileOperationKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t fileid, uint64_t matchingId, uint64_t handleId, uint32_t operation, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ) { OTF_WBuffer* buffer = OTF_WStream_getEventBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_ENDFILEOPERATION_NEW ); OTF_WBuffer_writeUint32( buffer, fileid ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_MATCHID ); OTF_WBuffer_writeUint64( buffer, matchingId ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_HANDLEID ); OTF_WBuffer_writeUint64( buffer, handleId ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_OPERATION ); OTF_WBuffer_writeUint32( buffer, operation ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_BYTES ); OTF_WBuffer_writeUint64( buffer, bytes ); if( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } else if( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_ENDFILEOPERATION_NEW " " ); OTF_WBuffer_writeUint32( buffer, fileid ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_MATCHID " " ); OTF_WBuffer_writeUint64( buffer, matchingId ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_HANDLEID " " ); OTF_WBuffer_writeUint64( buffer, handleId ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_OPERATION " " ); OTF_WBuffer_writeUint32( buffer, operation ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_BYTES " " ); OTF_WBuffer_writeUint64( buffer, bytes ); if( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SCL " " ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeEndFileOperation( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t fileid, uint64_t matchingId, uint64_t handleId, uint32_t operation, uint64_t bytes, uint32_t scltoken ) { return OTF_WStream_writeEndFileOperationKV(wstream, time, process, fileid, matchingId, handleId, operation, bytes, scltoken, NULL); } int OTF_WStream_writeRMAPutKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getEventBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_RMAPUT ); OTF_WBuffer_writeUint32( buffer, origin ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_PROCESS ); OTF_WBuffer_writeUint32( buffer, target ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_COMMUNICATOR ); OTF_WBuffer_writeUint32( buffer, communicator ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_TAG ); OTF_WBuffer_writeUint32( buffer, tag ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_LENGTH ); OTF_WBuffer_writeUint64( buffer, bytes ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_RMAPUT " " ); OTF_WBuffer_writeUint32( buffer, origin ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_PROCESS " " ); OTF_WBuffer_writeUint32( buffer, target ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_COMMUNICATOR " " ); OTF_WBuffer_writeUint32( buffer, communicator ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_TAG " " ); OTF_WBuffer_writeUint32( buffer, tag ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_LENGTH " " ); OTF_WBuffer_writeUint64( buffer, bytes ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SCL " " ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeRMAPut( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken ) { return OTF_WStream_writeRMAPutKV(wstream, time, process, origin, target, communicator, tag, bytes, scltoken, NULL); } int OTF_WStream_writeRMAPutRemoteEndKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getEventBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_RMAPUTRE ); OTF_WBuffer_writeUint32( buffer, origin ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_PROCESS ); OTF_WBuffer_writeUint32( buffer, target ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_COMMUNICATOR ); OTF_WBuffer_writeUint32( buffer, communicator ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_TAG ); OTF_WBuffer_writeUint32( buffer, tag ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_LENGTH ); OTF_WBuffer_writeUint64( buffer, bytes ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_RMAPUTRE " " ); OTF_WBuffer_writeUint32( buffer, origin ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_PROCESS " " ); OTF_WBuffer_writeUint32( buffer, target ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_COMMUNICATOR " " ); OTF_WBuffer_writeUint32( buffer, communicator ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_TAG " " ); OTF_WBuffer_writeUint32( buffer, tag ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_LENGTH " " ); OTF_WBuffer_writeUint64( buffer, bytes ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SCL " " ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeRMAPutRemoteEnd( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken ) { return OTF_WStream_writeRMAPutRemoteEndKV(wstream, time, process, origin, target, communicator, tag, bytes, scltoken, NULL); } int OTF_WStream_writeRMAGetKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getEventBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_RMAGET ); OTF_WBuffer_writeUint32( buffer, origin ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_PROCESS ); OTF_WBuffer_writeUint32( buffer, target ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_COMMUNICATOR ); OTF_WBuffer_writeUint32( buffer, communicator ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_TAG ); OTF_WBuffer_writeUint32( buffer, tag ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_LENGTH ); OTF_WBuffer_writeUint64( buffer, bytes ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_RMAGET " " ); OTF_WBuffer_writeUint32( buffer, origin ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_PROCESS " " ); OTF_WBuffer_writeUint32( buffer, target ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_COMMUNICATOR " " ); OTF_WBuffer_writeUint32( buffer, communicator ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_TAG " " ); OTF_WBuffer_writeUint32( buffer, tag ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_LENGTH " " ); OTF_WBuffer_writeUint64( buffer, bytes ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SCL " " ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeRMAGet( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken ) { return OTF_WStream_writeRMAGetKV(wstream, time, process, origin, target, communicator, tag, bytes, scltoken, NULL); } int OTF_WStream_writeRMAEndKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t scltoken, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getEventBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_RMAEND ); OTF_WBuffer_writeUint32( buffer, remote ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_COMMUNICATOR ); OTF_WBuffer_writeUint32( buffer, communicator ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_TAG ); OTF_WBuffer_writeUint32( buffer, tag ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_RMAEND " " ); OTF_WBuffer_writeUint32( buffer, remote ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_COMMUNICATOR " " ); OTF_WBuffer_writeUint32( buffer, communicator ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_TAG " " ); OTF_WBuffer_writeUint32( buffer, tag ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SCL " " ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeRMAEnd( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t scltoken ) { return OTF_WStream_writeRMAEndKV(wstream, time, process, remote, communicator, tag, scltoken, NULL); } /* *** public snapshot record write handlers *** */ int OTF_WStream_writeSnapshotCommentKV( OTF_WStream* wstream, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getSnapshotBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_SNAPSHOT_PREFIX OTF_KEYWORD_S_SNAPSHOT_COMMENT ); OTF_WBuffer_writeString( buffer, comment ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_SNAPSHOT_PREFIX OTF_KEYWORD_L_SNAPSHOT_COMMENT " " ); OTF_WBuffer_writeString( buffer, comment ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeSnapshotComment( OTF_WStream* wstream, uint64_t time, uint32_t process, const char* comment ) { return OTF_WStream_writeSnapshotCommentKV(wstream, time, process, comment, NULL); } int OTF_WStream_writeEnterSnapshotKV( OTF_WStream* wstream, uint64_t time, uint64_t originaltime, uint32_t statetoken, uint32_t cpuid, uint32_t scltoken, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getSnapshotBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, cpuid ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_SNAPSHOT_PREFIX OTF_KEYWORD_S_SNAPSHOT_ENTER ); OTF_WBuffer_writeUint32( buffer, statetoken ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_OTIME ); OTF_WBuffer_writeUint64( buffer, originaltime ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_SNAPSHOT_PREFIX OTF_KEYWORD_L_SNAPSHOT_ENTER " " ); OTF_WBuffer_writeUint32( buffer, statetoken ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_OTIME " " ); OTF_WBuffer_writeUint64( buffer, originaltime ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SCL " " ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeEnterSnapshot( OTF_WStream* wstream, uint64_t time, uint64_t originaltime, uint32_t statetoken, uint32_t cpuid, uint32_t scltoken ) { return OTF_WStream_writeEnterSnapshotKV(wstream, time, originaltime, statetoken, cpuid, scltoken, NULL); } int OTF_WStream_writeSendSnapshotKV( OTF_WStream* wstream, uint64_t time, uint64_t originaltime, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getSnapshotBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, sender ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_SNAPSHOT_PREFIX OTF_KEYWORD_S_SNAPSHOT_SEND ); OTF_WBuffer_writeUint32( buffer, receiver ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_OTIME ); OTF_WBuffer_writeUint64( buffer, originaltime ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_GROUP ); OTF_WBuffer_writeUint32( buffer, procGroup ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_TAG ); OTF_WBuffer_writeUint32( buffer, tag ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_LENGTH ); OTF_WBuffer_writeUint32( buffer, length ); if ( 0 != source ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ); OTF_WBuffer_writeUint32( buffer, source ); } OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_SNAPSHOT_PREFIX OTF_KEYWORD_L_SNAPSHOT_SEND " " ); OTF_WBuffer_writeUint32( buffer, receiver ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_OTIME " " ); OTF_WBuffer_writeUint64( buffer, originaltime ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_GROUP " " ); OTF_WBuffer_writeUint32( buffer, procGroup ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_TAG " " ); OTF_WBuffer_writeUint32( buffer, tag ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_LENGTH " " ); OTF_WBuffer_writeUint32( buffer, length ); if ( 0 != source ) { OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SCL " " ); OTF_WBuffer_writeUint32( buffer, source ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeSendSnapshot( OTF_WStream* wstream, uint64_t time, uint64_t originaltime, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source ) { return OTF_WStream_writeSendSnapshotKV(wstream, time, originaltime, sender, receiver, procGroup, tag, length, source, NULL); } int OTF_WStream_writeOpenFileSnapshotKV( OTF_WStream* wstream,uint64_t time, uint64_t originaltime, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t source, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getSnapshotBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_SNAPSHOT_PREFIX OTF_KEYWORD_S_SNAPSHOT_OPENFILE ); OTF_WBuffer_writeUint32( buffer, fileid ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_OTIME ); OTF_WBuffer_writeUint64( buffer, originaltime ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_HANDLEID ); OTF_WBuffer_writeUint64( buffer, handleid ); if ( 0 != source ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ); OTF_WBuffer_writeUint32( buffer, source ); } OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_SNAPSHOT_PREFIX OTF_KEYWORD_L_SNAPSHOT_OPENFILE " " ); OTF_WBuffer_writeUint32( buffer, fileid ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_OTIME " " ); OTF_WBuffer_writeUint64( buffer, originaltime ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_HANDLEID " " ); OTF_WBuffer_writeUint64( buffer, handleid ); if ( 0 != source ) { OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SCL " " ); OTF_WBuffer_writeUint32( buffer, source ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeOpenFileSnapshot( OTF_WStream* wstream,uint64_t time, uint64_t originaltime, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t source ) { return OTF_WStream_writeOpenFileSnapshotKV(wstream, time, originaltime, fileid, process, handleid, source, NULL); } int OTF_WStream_writeBeginCollopSnapshotKV( OTF_WStream* wstream, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList *list ) { OTF_WBuffer* buffer= OTF_WStream_getSnapshotBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_SNAPSHOT_PREFIX OTF_KEYWORD_S_SNAPSHOT_BEGINCOLLOP ); OTF_WBuffer_writeUint64( buffer, originaltime ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_COLLECTIVE ); OTF_WBuffer_writeUint32( buffer, collOp ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_HANDLEID ); OTF_WBuffer_writeUint64( buffer, matchingId ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_GROUP ); OTF_WBuffer_writeUint32( buffer, procGroup ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_ROOT ); OTF_WBuffer_writeUint32( buffer, rootProc ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SENT ); OTF_WBuffer_writeUint64( buffer, sent ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_RECVD ); OTF_WBuffer_writeUint64( buffer, received ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_SNAPSHOT_PREFIX OTF_KEYWORD_L_SNAPSHOT_BEGINCOLLOP " " ); OTF_WBuffer_writeUint64( buffer, originaltime ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_COLLECTIVE " " ); OTF_WBuffer_writeUint32( buffer, collOp ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_HANDLEID " " ); OTF_WBuffer_writeUint64( buffer, matchingId ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_GROUP " " ); OTF_WBuffer_writeUint32( buffer, procGroup ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_ROOT " " ); OTF_WBuffer_writeUint32( buffer, rootProc ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SENT " " ); OTF_WBuffer_writeUint64( buffer, sent ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_RECVD " " ); OTF_WBuffer_writeUint64( buffer, received ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SCL " " ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeBeginCollopSnapshot( OTF_WStream* wstream, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken ) { return OTF_WStream_writeBeginCollopSnapshotKV(wstream, time, originaltime, process, collOp, matchingId, procGroup, rootProc, sent, received, scltoken, NULL ); } int OTF_WStream_writeBeginFileOpSnapshotKV( OTF_WStream* wstream, uint64_t time, uint64_t originaltime, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList *list ) { OTF_WBuffer* buffer= OTF_WStream_getSnapshotBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_SNAPSHOT_PREFIX OTF_KEYWORD_S_SNAPSHOT_BEGINFILEOP ); OTF_WBuffer_writeUint64( buffer, originaltime ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_MATCHID ); OTF_WBuffer_writeUint64( buffer, matchingId ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_SNAPSHOT_PREFIX OTF_KEYWORD_L_SNAPSHOT_BEGINFILEOP " " ); OTF_WBuffer_writeUint64( buffer, originaltime ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_MATCHID " " ); OTF_WBuffer_writeUint64( buffer, matchingId ); if ( 0 != scltoken ) { OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SCL " " ); OTF_WBuffer_writeUint32( buffer, scltoken ); } OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeBeginFileOpSnapshot( OTF_WStream* wstream, uint64_t time, uint64_t originaltime, uint32_t process, uint64_t matchingId, uint32_t scltoken ) { return OTF_WStream_writeBeginFileOpSnapshotKV( wstream, time, originaltime, process, matchingId, scltoken, NULL); } int OTF_WStream_writeCollopCountSnapshot( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t communicator, uint64_t count, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getSnapshotBuffer( wstream ); const char* recordkw= OTF_KEYWORD_S_SNAPSHOT_PREFIX OTF_KEYWORD_S_SNAPSHOT_COLLOPCOUNT; const char* countkw= OTF_KEYWORD_S_LOCAL_COUNT; uint32_t ( *writeKeyValueList )( OTF_WBuffer*, OTF_KeyValueList* )= OTF_WBuffer_writeKeyValueList_short; /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) { return 0; } if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) { return 0; } if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { recordkw= OTF_KEYWORD_L_SNAPSHOT_PREFIX OTF_KEYWORD_L_SNAPSHOT_COLLOPCOUNT " "; countkw= " " OTF_KEYWORD_L_LOCAL_COUNT " "; writeKeyValueList = OTF_WBuffer_writeKeyValueList_long; } writeKeyValueList( buffer, list ); OTF_WBuffer_writeKeyword( buffer, recordkw ); OTF_WBuffer_writeUint32( buffer, communicator ); OTF_WBuffer_writeKeyword( buffer, countkw ); OTF_WBuffer_writeUint64( buffer, count ); OTF_WBuffer_writeNewline( buffer ); /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeCounterSnapshot( OTF_WStream* wstream, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList* list ) { OTF_WBuffer* buffer = OTF_WStream_getSnapshotBuffer( wstream ); const char* recordkw = OTF_KEYWORD_S_SNAPSHOT_PREFIX OTF_KEYWORD_S_SNAPSHOT_COUNTER; const char* counterkw = OTF_KEYWORD_S_LOCAL_COUNTER; const char* valuekw = OTF_KEYWORD_S_LOCAL_VALUE; uint32_t ( *writeKeyValueList )( OTF_WBuffer*, OTF_KeyValueList* ) = OTF_WBuffer_writeKeyValueList_short; /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) { return 0; } if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) { return 0; } if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { recordkw = OTF_KEYWORD_L_SNAPSHOT_PREFIX OTF_KEYWORD_L_SNAPSHOT_COUNTER " "; counterkw = " " OTF_KEYWORD_L_LOCAL_COUNTER " "; valuekw = " " OTF_KEYWORD_L_LOCAL_VALUE " "; writeKeyValueList = OTF_WBuffer_writeKeyValueList_long; } writeKeyValueList( buffer, list ); OTF_WBuffer_writeKeyword( buffer, recordkw ); OTF_WBuffer_writeUint64( buffer, originaltime ); OTF_WBuffer_writeKeyword( buffer, counterkw ); OTF_WBuffer_writeUint32( buffer, counter ); OTF_WBuffer_writeKeyword( buffer, valuekw ); OTF_WBuffer_writeUint64( buffer, value ); OTF_WBuffer_writeNewline( buffer ); /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } /* *** public summary record write handlers *** */ int OTF_WStream_writeSummaryCommentKV( OTF_WStream* wstream, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getStatsBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_SUM_PREFIX OTF_KEYWORD_S_SUMCOMMENT ); OTF_WBuffer_writeString( buffer, comment ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_SUM_PREFIX OTF_KEYWORD_L_SUMCOMMENT " " ); OTF_WBuffer_writeString( buffer, comment ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeSummaryComment( OTF_WStream* wstream, uint64_t time, uint32_t process, const char* comment ) { return OTF_WStream_writeSummaryCommentKV(wstream, time, process, comment, NULL); } int OTF_WStream_writeFunctionSummaryKV( OTF_WStream* wstream, uint64_t time, uint32_t function, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime, OTF_KeyValueList* list) { OTF_WBuffer* buffer= OTF_WStream_getStatsBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_SUM_PREFIX OTF_KEYWORD_S_SUMFUNCTION ); OTF_WBuffer_writeUint32( buffer, function ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_COUNT ); OTF_WBuffer_writeUint64( buffer, count ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_EXCLTIME ); OTF_WBuffer_writeUint64( buffer, excltime ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_INCLTIME ); OTF_WBuffer_writeUint64( buffer, incltime ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_SUM_PREFIX OTF_KEYWORD_L_SUMFUNCTION " " ); OTF_WBuffer_writeUint32( buffer, function ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_COUNT " " ); OTF_WBuffer_writeUint64( buffer, count ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_EXCLTIME " " ); OTF_WBuffer_writeUint64( buffer, excltime ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_INCLTIME " " ); OTF_WBuffer_writeUint64( buffer, incltime ); } OTF_WBuffer_writeNewline( buffer ); /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeFunctionSummary( OTF_WStream* wstream, uint64_t time, uint32_t function, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime ) { return OTF_WStream_writeFunctionSummaryKV(wstream, time, function, process, count, excltime, incltime, NULL); } int OTF_WStream_writeFunctionGroupSummaryKV( OTF_WStream* wstream, uint64_t time, uint32_t functiongroup, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getStatsBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_SUM_PREFIX OTF_KEYWORD_S_SUMFUNCTIONGROUP ); OTF_WBuffer_writeUint32( buffer, functiongroup ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_COUNT ); OTF_WBuffer_writeUint64( buffer, count ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_EXCLTIME ); OTF_WBuffer_writeUint64( buffer, excltime ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_INCLTIME ); OTF_WBuffer_writeUint64( buffer, incltime ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_SUM_PREFIX OTF_KEYWORD_L_SUMFUNCTIONGROUP " " ); OTF_WBuffer_writeUint32( buffer, functiongroup ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_COUNT " " ); OTF_WBuffer_writeUint64( buffer, count ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_EXCLTIME " " ); OTF_WBuffer_writeUint64( buffer, excltime ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_INCLTIME " " ); OTF_WBuffer_writeUint64( buffer, incltime ); } OTF_WBuffer_writeNewline( buffer ); /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeFunctionGroupSummary( OTF_WStream* wstream, uint64_t time, uint32_t functiongroup, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime ) { return OTF_WStream_writeFunctionGroupSummaryKV(wstream, time, functiongroup, process, count, excltime, incltime, NULL); } int OTF_WStream_writeMessageSummaryKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t peer, uint32_t comm, uint32_t tag, uint64_t number_sent, uint64_t number_recvd, uint64_t bytes_sent, uint64_t bytes_recved, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getStatsBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_SUM_PREFIX OTF_KEYWORD_S_SUMMESSAGE ); OTF_WBuffer_writeUint32( buffer, peer ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_COMMUNICATOR ); OTF_WBuffer_writeUint32( buffer, comm ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_TAG ); OTF_WBuffer_writeUint32( buffer, tag ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERSENT ); OTF_WBuffer_writeUint64( buffer, number_sent ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERRECVD ); OTF_WBuffer_writeUint64( buffer, number_recvd ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SENT ); OTF_WBuffer_writeUint64( buffer, bytes_sent ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_RECVD ); OTF_WBuffer_writeUint64( buffer, bytes_recved ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_SUM_PREFIX OTF_KEYWORD_L_SUMMESSAGE " " ); OTF_WBuffer_writeUint32( buffer, peer ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_COMMUNICATOR " " ); OTF_WBuffer_writeUint32( buffer, comm ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_TAG " " ); OTF_WBuffer_writeUint32( buffer, tag ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NUMBERSENT " " ); OTF_WBuffer_writeUint64( buffer, number_sent ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NUMBERRECVD " " ); OTF_WBuffer_writeUint64( buffer, number_recvd ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SENT " " ); OTF_WBuffer_writeUint64( buffer, bytes_sent ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_RECVD " " ); OTF_WBuffer_writeUint64( buffer, bytes_recved ); } OTF_WBuffer_writeNewline( buffer ); /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeMessageSummary( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t peer, uint32_t comm, uint32_t tag, uint64_t number_sent, uint64_t number_recvd, uint64_t bytes_sent, uint64_t bytes_recved ) { return OTF_WStream_writeMessageSummaryKV(wstream, time, process, peer, comm, tag, number_sent, number_recvd, bytes_sent, bytes_recved, NULL); } int OTF_WStream_writeCollopSummaryKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t comm, uint32_t collective, uint64_t number_sent, uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getStatsBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_SUM_PREFIX OTF_KEYWORD_S_COLLOPMESSAGE ); OTF_WBuffer_writeUint32( buffer, comm ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_COLLECTIVE ); OTF_WBuffer_writeUint32( buffer, collective ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERSENT ); OTF_WBuffer_writeUint64( buffer, number_sent ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERRECVD ); OTF_WBuffer_writeUint64( buffer, number_recved ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_SENT ); OTF_WBuffer_writeUint64( buffer, bytes_sent ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_RECVD ); OTF_WBuffer_writeUint64( buffer, bytes_recved ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_SUM_PREFIX OTF_KEYWORD_L_COLLOPMESSAGE " " ); OTF_WBuffer_writeUint32( buffer, comm ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_COLLECTIVE " " ); OTF_WBuffer_writeUint32( buffer, collective ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NUMBERSENT " " ); OTF_WBuffer_writeUint64( buffer, number_sent ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NUMBERRECVD " " ); OTF_WBuffer_writeUint64( buffer, number_recved ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_SENT " " ); OTF_WBuffer_writeUint64( buffer, bytes_sent ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_RECVD " " ); OTF_WBuffer_writeUint64( buffer, bytes_recved ); } OTF_WBuffer_writeNewline( buffer ); /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeCollopSummary( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t comm, uint32_t collective, uint64_t number_sent, uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved ) { return OTF_WStream_writeCollopSummaryKV(wstream, time, process, comm, collective, number_sent, number_recved, bytes_sent, bytes_recved, NULL); } int OTF_WStream_writeFileOperationSummaryKV( OTF_WStream* wstream, uint64_t time, uint32_t fileid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getStatsBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_SUM_PREFIX OTF_KEYWORD_S_SUMFILEOPERATION ); OTF_WBuffer_writeUint32( buffer, fileid ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBEROPEN ); OTF_WBuffer_writeUint64( buffer, nopen ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERCLOSE ); OTF_WBuffer_writeUint64( buffer, nclose ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERREAD ); OTF_WBuffer_writeUint64( buffer, nread ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERWRITE ); OTF_WBuffer_writeUint64( buffer, nwrite ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERSEEK ); OTF_WBuffer_writeUint64( buffer, nseek ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_BYTESREAD ); OTF_WBuffer_writeUint64( buffer, bytesread ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_BYTESWRITE ); OTF_WBuffer_writeUint64( buffer, byteswrite ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_SUM_PREFIX OTF_KEYWORD_L_SUMFILEOPERATION " " ); OTF_WBuffer_writeUint32( buffer, fileid ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NUMBEROPEN " " ); OTF_WBuffer_writeUint64( buffer, nopen ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NUMBERCLOSE " " ); OTF_WBuffer_writeUint64( buffer, nclose ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NUMBERREAD " " ); OTF_WBuffer_writeUint64( buffer, nread ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NUMBERWRITE " " ); OTF_WBuffer_writeUint64( buffer, nwrite ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NUMBERSEEK " " ); OTF_WBuffer_writeUint64( buffer, nseek ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_BYTESREAD " " ); OTF_WBuffer_writeUint64( buffer, bytesread ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_BYTESWRITE " " ); OTF_WBuffer_writeUint64( buffer, byteswrite ); } OTF_WBuffer_writeNewline( buffer ); /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeFileOperationSummary( OTF_WStream* wstream, uint64_t time, uint32_t fileid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite ) { return OTF_WStream_writeFileOperationSummaryKV(wstream, time, fileid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, NULL); } int OTF_WStream_writeFileGroupOperationSummaryKV( OTF_WStream* wstream, uint64_t time, uint32_t groupid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getStatsBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( 0 == OTF_WBuffer_setTimeAndProcess( buffer, time, process ) ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_SUM_PREFIX OTF_KEYWORD_S_SUMFILEGROUPOPERATION ); OTF_WBuffer_writeUint32( buffer, groupid ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBEROPEN ); OTF_WBuffer_writeUint64( buffer, nopen ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERCLOSE ); OTF_WBuffer_writeUint64( buffer, nclose ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERREAD ); OTF_WBuffer_writeUint64( buffer, nread ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERWRITE ); OTF_WBuffer_writeUint64( buffer, nwrite ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERSEEK ); OTF_WBuffer_writeUint64( buffer, nseek ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_BYTESREAD ); OTF_WBuffer_writeUint64( buffer, bytesread ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_BYTESWRITE ); OTF_WBuffer_writeUint64( buffer, byteswrite ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_SUM_PREFIX OTF_KEYWORD_L_SUMFILEGROUPOPERATION " " ); OTF_WBuffer_writeUint32( buffer, groupid ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NUMBEROPEN " " ); OTF_WBuffer_writeUint64( buffer, nopen ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NUMBERCLOSE " " ); OTF_WBuffer_writeUint64( buffer, nclose ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NUMBERREAD " " ); OTF_WBuffer_writeUint64( buffer, nread ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NUMBERWRITE " " ); OTF_WBuffer_writeUint64( buffer, nwrite ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NUMBERSEEK " " ); OTF_WBuffer_writeUint64( buffer, nseek ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_BYTESREAD " " ); OTF_WBuffer_writeUint64( buffer, bytesread ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_BYTESWRITE " " ); OTF_WBuffer_writeUint64( buffer, byteswrite ); } OTF_WBuffer_writeNewline( buffer ); /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeFileGroupOperationSummary( OTF_WStream* wstream, uint64_t time, uint32_t groupid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite ) { return OTF_WStream_writeFileGroupOperationSummaryKV(wstream, time, groupid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, NULL); } /** Write a def marker record to stream 'wstream'. \ingroup wstream */ int OTF_WStream_writeDefMarkerKV( OTF_WStream* wstream, uint32_t token, const char* name, uint32_t type, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getMarkerBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_MARKER_PREFIX OTF_KEYWORD_S_MARKER_DEFMARKER ); OTF_WBuffer_writeUint32( buffer, token ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ); OTF_WBuffer_writeString( buffer, name ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_TYPE ); OTF_WBuffer_writeUint32( buffer, type ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_MARKER_PREFIX OTF_KEYWORD_L_MARKER_DEFMARKER " " ); OTF_WBuffer_writeUint32( buffer, token ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_NAME " " ); OTF_WBuffer_writeString( buffer, name ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_TYPE " " ); OTF_WBuffer_writeUint32( buffer, type ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeDefMarker( OTF_WStream* wstream, uint32_t token, const char* name, uint32_t type ) { return OTF_WStream_writeDefMarkerKV(wstream, token, name, type, NULL); } /** Write a marker record to stream 'wstream'. \ingroup wstream */ int OTF_WStream_writeMarkerKV( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t token, const char* text, OTF_KeyValueList* list ) { OTF_WBuffer* buffer= OTF_WStream_getMarkerBuffer( wstream ); /* buffer can be NULL if file-open fails */ if ( NULL == buffer ) return 0; /* time and process are written directly, this is completely different from event records! */ if ( OTF_WSTREAM_FORMAT_SHORT == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_short(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_MARKER_PREFIX OTF_KEYWORD_S_MARKER_MARKERSPOT ); OTF_WBuffer_writeUint32( buffer, token ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_TIME ); OTF_WBuffer_writeUint64( buffer, time ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_PROCESS ); OTF_WBuffer_writeUint32( buffer, process ); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_S_LOCAL_VALUE ); OTF_WBuffer_writeString( buffer, text ); OTF_WBuffer_writeNewline( buffer ); } else if ( OTF_WSTREAM_FORMAT_LONG == ( wstream->format & 1 ) ) { OTF_WBuffer_writeKeyValueList_long(buffer, list); OTF_WBuffer_writeKeyword( buffer, OTF_KEYWORD_L_MARKER_PREFIX OTF_KEYWORD_L_MARKER_MARKERSPOT " " ); OTF_WBuffer_writeUint32( buffer, token ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_TIME " " ); OTF_WBuffer_writeUint64( buffer, time ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_PROCESS " " ); OTF_WBuffer_writeUint32( buffer, process ); OTF_WBuffer_writeKeyword( buffer, " " OTF_KEYWORD_L_LOCAL_VALUE " " ); OTF_WBuffer_writeString( buffer, text ); OTF_WBuffer_writeNewline( buffer ); } /* one or more of the last write operations could be failed; check otf_errno for errors */ return ( OTF_NO_ERROR == otf_errno ) ? 1 : 0; } int OTF_WStream_writeMarker( OTF_WStream* wstream, uint64_t time, uint32_t process, uint32_t token, const char* text ) { return OTF_WStream_writeMarkerKV(wstream, time, process, token, text, NULL); } eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_Writer.c0000644000000000000000000000013212544237152022372 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.963395645 30 ctime=1508162366.221775297 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_Writer.c0000644000175000017500000016441312544237152023572 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "OTF_Platform.h" #include "OTF_Definitions.h" #include "OTF_Writer.h" #include "OTF_Platform.h" #include "OTF_Errno.h" #include /** Holds the data objects needed for global trace creation. */ struct struct_OTF_Writer { /** All files will start with this prefix. */ char* namestub; /** Holds the current number of streams. */ uint32_t n; /** Current size of array 'streams'. */ uint32_t s; /** Sorted array of streams. */ OTF_WStream** streams; /** Maximum number of streams allowed including the special stream 0. This applies if the Writer assigns processes to streams by its own devices. The number of streams might be higher if there are explicit mappings enforced with OTF_Writer_assignProcess() for some processes after automatic mappings took effect. */ uint32_t m; /** Master control structure. Handles the mapping of processes to streams. */ OTF_MasterControl* mc; /** Default size of buffers managed by this Writer. */ uint32_t buffersizes; /** Default output format */ uint32_t format; /** File handle manager. Handles the re-usage of file handles in a thread safe way. */ OTF_FileManager* manager; #ifdef HAVE_ZLIB /** Default compression type of buffers managed by this writer */ OTF_FileCompression compression; /** Default size of zbuffers managed by this reader. */ uint32_t zbuffersizes; #endif /* HAVE_ZLIB */ /** Are the definition header records (e.g. DEFVERSION, DEFUNIQUEID) written? 1= yes 0= no */ uint32_t defHeaderWritten; }; /** constructor - internal use only */ int OTF_Writer_init( OTF_Writer* writer ); /** destructor - internal use only */ int OTF_Writer_finish( OTF_Writer* writer ); /** write header records (e.g. DEFVERSION, DEFUNIQUEID) to global definition stream - internal use only */ int OTF_Writer_writeDefinitionHeader( OTF_Writer* writer ); /* ************************************************************************* */ int OTF_Writer_init( OTF_Writer* writer ) { writer->namestub= NULL; writer->n= 0; writer->s= 0; writer->streams= NULL; writer->m= 0; writer->mc= NULL; writer->buffersizes= 1024*1024; writer->format= OTF_WSTREAM_FORMAT_SHORT; #ifdef HAVE_ZLIB writer->compression= 0; writer->zbuffersizes= OTF_ZBUFFER_DEFAULTSIZE; #endif /* HAVE_ZLIB */ writer->defHeaderWritten= 0; return 1; } int OTF_Writer_finish( OTF_Writer* writer ) { int tmpret; int ret= 1; tmpret= OTF_MasterControl_write( writer->mc, writer->namestub ); if( 0 == tmpret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_MasterControl_write() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); } ret&= tmpret; tmpret= OTF_Writer_closeAllStreams( writer ); if( 0 == tmpret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Writer_closeAllStreams() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); } ret&= tmpret; free( writer->namestub ); writer->namestub= NULL; free( writer->streams ); writer->streams= NULL; writer->s= 0; OTF_MasterControl_close( writer->mc ); #ifdef HAVE_ZLIB writer->compression= 0; writer->zbuffersizes= 0; #endif /* HAVE_ZLIB */ return ret; } OTF_Writer* OTF_Writer_open( const char* namestub, uint32_t m, OTF_FileManager* manager ) { OTF_Writer* ret= NULL; if( NULL == manager ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "manager has not been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } ret= (OTF_Writer*) malloc( sizeof(OTF_Writer) ); if( NULL == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } OTF_Writer_init( ret ); ret->m= ( 0 < m ) ? m : ((uint32_t) -1); ret->namestub= OTF_stripFilename( namestub ); ret->manager= manager; ret->mc= OTF_MasterControl_new( ret->manager ); if( NULL == ret->mc ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_MasterControl_new() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); free( ret->namestub ); ret->namestub= NULL; free( ret ); ret= NULL; return NULL; } return ret; } int OTF_Writer_close( OTF_Writer* writer ) { if( NULL == writer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "writer has not been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } if( 0 == OTF_Writer_finish( writer ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Writer_finish() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); free( writer ); writer = NULL; return 0; } free( writer ); writer = NULL; return 1; } int OTF_Writer_setCompression( OTF_Writer* writer, OTF_FileCompression compression ) { #ifdef HAVE_ZLIB if ( compression <= 9 ) { writer->compression = compression; return 1; } else { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "compression is no expected value (%u). ignored.\n", __FUNCTION__, __FILE__, __LINE__, compression ); return 0; } #else /* HAVE_ZLIB */ if( 0 == compression ) { return 1; } else { return 0; } #endif /* HAVE_ZLIB */ } OTF_FileCompression OTF_Writer_getCompression( OTF_Writer* writer ) { #ifdef HAVE_ZLIB return writer->compression; #else /* HAVE_ZLIB */ return 0; #endif /* HAVE_ZLIB */ } void OTF_Writer_setBufferSizes( OTF_Writer* writer, uint32_t size ) { if ( 50 > size ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "intended buffer size %u is too small, rejected.\n", __FUNCTION__, __FILE__, __LINE__, size ); return; } else if ( 500 > size ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "buffer size %u is very small, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } else if ( 10 * 1024 *1024 < size ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "buffer size %u is rather big, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } writer->buffersizes= size; } uint32_t OTF_Writer_getBufferSizes( OTF_Writer* writer ) { return writer->buffersizes; } void OTF_Writer_setZBufferSizes( OTF_Writer* writer, uint32_t size ) { #ifdef HAVE_ZLIB if ( 32 > size ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "intended zbuffer size %u is too small, rejected.\n", __FUNCTION__, __FILE__, __LINE__, size ); return; } else if ( 512 > size ) { OTF_Warning( "ERROR in function %s, file: %s, line: %i:\n " "buffer size %u is very small, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } else if ( 10 * 1024 *1024 < size ) { OTF_Warning( "ERROR in function %s, file: %s, line: %i:\n " "buffer size %u is rather big, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } writer->zbuffersizes= size; #endif /* HAVE_ZLIB */ } uint32_t OTF_Writer_getZBufferSizes( OTF_Writer* writer ) { #ifdef HAVE_ZLIB return writer->zbuffersizes; #else /* HAVE_ZLIB */ return 0; #endif /* HAVE_ZLIB */ } void OTF_Writer_setFormat( OTF_Writer* writer, uint32_t format ) { if ( format > 3 ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "unknown ouput format chosen.\n", __FUNCTION__, __FILE__, __LINE__ ); } writer->format= format; } uint32_t OTF_Writer_getFormat( OTF_Writer* writer ) { return writer->format; } OTF_WStream* OTF_Writer_getStream( OTF_Writer* writer, uint32_t streamId ) { uint32_t a; uint32_t b; uint32_t c; uint32_t i; /* search if already present */ a= 0; b= writer->n; if ( 0 < writer->n ) { if ( streamId == writer->streams[0]->id ) { return writer->streams[0]; } if ( streamId == writer->streams[b-1]->id ) { return writer->streams[b-1]; } while ( a < b ) { c= ( a + b ) / 2; if ( streamId == writer->streams[c]->id ) { /* found */ return writer->streams[c]; } if ( streamId < writer->streams[c]->id ) { /* [a,c) */ b= c; } else { /* [c+1,b) */ a= c+1; } } } /* not found, create & append at position 'a' */ /* fprintf(stderr," at %u\n", a ); */ if ( writer->s <= writer->n ) { writer->s += 10; writer->streams= (OTF_WStream**) realloc( writer->streams, writer->s * sizeof(OTF_WStream*) ); if( NULL == writer->streams ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } } for ( i= writer->n; i > a; --i ) { writer->streams[i]= writer->streams[i-1]; } writer->streams[a]= OTF_WStream_open( writer->namestub, streamId, writer->manager ); #ifdef HAVE_ZLIB OTF_WStream_setCompression( writer->streams[a], writer->compression ); OTF_WStream_setZBufferSizes( writer->streams[a], writer->zbuffersizes ); #endif /* HAVE_ZLIB */ OTF_WStream_setBufferSizes( writer->streams[a], writer->buffersizes ); OTF_WStream_setFormat( writer->streams[a], writer->format ); ++(writer->n); return writer->streams[a]; } uint32_t OTF_Writer_assignProcess( OTF_Writer* writer, uint32_t process, uint32_t stream ) { if ( 0 == stream ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "stream id must not be '0'.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } if( 0 == OTF_MasterControl_append( writer->mc, stream, process ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_MasterControl_append() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } return 1; } uint32_t OTF_Writer_mapProcess( OTF_Writer* writer, uint32_t process ) { uint32_t ret= OTF_MasterControl_mapReverse( writer->mc, process ); uint32_t processes= (uint32_t) -1; uint32_t n; uint32_t i; OTF_MapEntry* entry; /* here there are some ways to handle the situation: first, define a static stream id which all processes which are not explicitly mapped go to ("ret= 0xff;"). Second, add a new stream for the new process (if-branch below). Third, append the process to any existing stream, for example to the one with the fewest processes so far (else-branch below). */ if ( 0 == ret ) { /* fprintf( stderr, "OTF_Writer_mapProcess() %u unknown\n", process ); */ ret= (uint32_t) -1; n= OTF_MasterControl_getCount( writer->mc ); if ( n < writer->m ) { /* add a new stream, add process */ ret= OTF_MasterControl_getNewStreamId( writer->mc ); } else { /* if no streams are present the former branch must take care!*/ if( 0 >= n ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no processes/stream have been defined.\n", __FUNCTION__, __FILE__, __LINE__ ); assert (0); } /* find stream with fewest processes and add there */ for ( i = 0; i < n; ++i ) { entry = OTF_MasterControl_getEntryByIndex( writer->mc, i ); if ( entry->n < processes ) { processes = entry->n; ret = entry->argument; } } } assert( (uint32_t) -1 != ret ); OTF_Writer_assignProcess( writer, process, ret ); } return ret; } OTF_MasterControl* OTF_Writer_getMasterControl( OTF_Writer* writer ) { return writer->mc; } void OTF_Writer_setMasterControl( OTF_Writer* writer, OTF_MasterControl* mc ) { OTF_MasterControl_close( writer->mc ); writer->mc= mc; } int OTF_Writer_writeDefinitionHeader( OTF_Writer* writer ) { /* write DEFVERSION record */ if ( 0 == OTF_WStream_writeOtfVersion( OTF_Writer_getStream( writer, 0 ) ) ) return 0; /* write DEFUNIQUEID record */ if ( 0 == OTF_WStream_writeUniqueId( OTF_Writer_getStream( writer, 0 ) ) ) return 0; return 1; } /* *** definition record write handlers *** ******************************** */ int OTF_Writer_writeDefinitionComment( OTF_Writer* writer, uint32_t streamid, const char* comment ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefinitionComment( stream, comment ); } int OTF_Writer_writeDefinitionCommentKV( OTF_Writer* writer, uint32_t streamid, const char* comment, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefinitionCommentKV( stream, comment, list ); } int OTF_Writer_writeDefTimerResolution( OTF_Writer* writer, uint32_t streamid, uint64_t ticksPerSecond ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefTimerResolution( stream, ticksPerSecond ); } int OTF_Writer_writeDefTimerResolutionKV( OTF_Writer* writer, uint32_t streamid, uint64_t ticksPerSecond, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefTimerResolutionKV( stream, ticksPerSecond, list ); } int OTF_Writer_writeDefProcess( OTF_Writer* writer, uint32_t streamid, uint32_t deftoken, const char* name, uint32_t parent ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefProcess( stream, deftoken, name, parent ); } int OTF_Writer_writeDefProcessKV( OTF_Writer* writer, uint32_t streamid, uint32_t deftoken, const char* name, uint32_t parent, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefProcessKV( stream, deftoken, name, parent, list ); } int OTF_Writer_writeDefProcessGroup( OTF_Writer* writer, uint32_t streamid, uint32_t deftoken, const char* name, uint32_t n, const uint32_t* array ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefProcessGroup( stream, deftoken, name, n, (uint32_t*) array ); } int OTF_Writer_writeDefProcessGroupKV( OTF_Writer* writer, uint32_t streamid, uint32_t deftoken, const char* name, uint32_t n, const uint32_t* array, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefProcessGroupKV( stream, deftoken, name, n, (uint32_t*) array, list ); } int OTF_Writer_writeDefAttributeList ( OTF_Writer* writer, uint32_t streamid, uint32_t attr_token, uint32_t num, OTF_ATTR_TYPE* array ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefAttributeList( stream, attr_token, num, array ); } int OTF_Writer_writeDefAttributeListKV ( OTF_Writer* writer, uint32_t streamid, uint32_t attr_token, uint32_t num, OTF_ATTR_TYPE* array, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefAttributeListKV( stream, attr_token, num, array, list ); } int OTF_Writer_writeDefProcessOrGroupAttributes( OTF_Writer* writer, uint32_t streamid, uint32_t proc_token, uint32_t attr_token ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefProcessOrGroupAttributes( stream, proc_token, attr_token ); } int OTF_Writer_writeDefProcessOrGroupAttributesKV( OTF_Writer* writer, uint32_t streamid, uint32_t proc_token, uint32_t attr_token, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefProcessOrGroupAttributesKV( stream, proc_token, attr_token, list ); } int OTF_Writer_writeDefFunction( OTF_Writer* writer, uint32_t streamid, uint32_t deftoken, const char* name, uint32_t group, uint32_t scltoken ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefFunction( stream, deftoken, name, group, scltoken ); } int OTF_Writer_writeDefFunctionKV( OTF_Writer* writer, uint32_t streamid, uint32_t deftoken, const char* name, uint32_t group, uint32_t scltoken, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefFunctionKV( stream, deftoken, name, group, scltoken, list ); } int OTF_Writer_writeDefFunctionGroup( OTF_Writer* writer, uint32_t streamid, uint32_t deftoken, const char* name ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefFunctionGroup( stream, deftoken, name ); } int OTF_Writer_writeDefFunctionGroupKV( OTF_Writer* writer, uint32_t streamid, uint32_t deftoken, const char* name, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefFunctionGroupKV( stream, deftoken, name, list ); } int OTF_Writer_writeDefCollectiveOperation( OTF_Writer* writer, uint32_t streamid, uint32_t collective, const char* name, uint32_t type ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefCollectiveOperation( stream, collective, name, type ); } int OTF_Writer_writeDefCollectiveOperationKV( OTF_Writer* writer, uint32_t streamid, uint32_t collective, const char* name, uint32_t type, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefCollectiveOperationKV( stream, collective, name, type, list ); } int OTF_Writer_writeDefCounter( OTF_Writer* writer, uint32_t streamid, uint32_t deftoken, const char* name, uint32_t properties, uint32_t countergroup, const char* unit ) { OTF_WStream* stream= OTF_Writer_getStream( writer, streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefCounter( stream, deftoken, name, properties, countergroup, unit ); } int OTF_Writer_writeDefCounterKV( OTF_Writer* writer, uint32_t streamid, uint32_t deftoken, const char* name, uint32_t properties, uint32_t countergroup, const char* unit, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefCounterKV( stream, deftoken, name, properties, countergroup, unit, list ); } int OTF_Writer_writeDefCounterGroup( OTF_Writer* writer, uint32_t streamid, uint32_t deftoken, const char* name ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefCounterGroup( stream, deftoken, name ); } int OTF_Writer_writeDefCounterGroupKV( OTF_Writer* writer, uint32_t streamid, uint32_t deftoken, const char* name, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefCounterGroupKV( stream, deftoken, name, list ); } int OTF_Writer_writeDefScl( OTF_Writer* writer, uint32_t streamid, uint32_t deftoken, uint32_t sclfile, uint32_t sclline ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefScl( stream, deftoken, sclfile, sclline ); } int OTF_Writer_writeDefSclKV( OTF_Writer* writer, uint32_t streamid, uint32_t deftoken, uint32_t sclfile, uint32_t sclline, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefSclKV( stream, deftoken, sclfile, sclline, list ); } int OTF_Writer_writeDefSclFile( OTF_Writer* writer, uint32_t streamid, uint32_t deftoken, const char* filename ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefSclFile( stream, deftoken, filename ); } int OTF_Writer_writeDefSclFileKV( OTF_Writer* writer, uint32_t streamid, uint32_t deftoken, const char* filename, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefSclFileKV( stream, deftoken, filename, list ); } /* depricated */ int OTF_Writer_writeOtfVersion( OTF_Writer* writer, uint32_t streamid ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "calling depricated function. ignored.\n", __FUNCTION__, __FILE__, __LINE__ ); return 1; } int OTF_Writer_writeDefCreator( OTF_Writer* writer, uint32_t streamid, const char* creator ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefCreator( stream, creator ); } int OTF_Writer_writeDefCreatorKV( OTF_Writer* writer, uint32_t streamid, const char* creator, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefCreatorKV( stream, creator, list ); } int OTF_Writer_writeDefFile( OTF_Writer* writer, uint32_t streamid, uint32_t token, const char* name, uint32_t group ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); return OTF_WStream_writeDefFile( stream, token, name, group ); } int OTF_Writer_writeDefFileKV( OTF_Writer* writer, uint32_t streamid, uint32_t token, const char* name, uint32_t group, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); return OTF_WStream_writeDefFileKV( stream, token, name, group, list ); } int OTF_Writer_writeDefFileGroup( OTF_Writer* writer, uint32_t streamid, uint32_t token, const char* name ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); return OTF_WStream_writeDefFileGroup( stream, token, name ); } int OTF_Writer_writeDefFileGroupKV( OTF_Writer* writer, uint32_t streamid, uint32_t token, const char* name, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); return OTF_WStream_writeDefFileGroupKV( stream, token, name, list ); } int OTF_Writer_writeDefKeyValue( OTF_Writer* writer, uint32_t streamid, uint32_t key, OTF_Type type, const char* name, const char *description ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefKeyValue( stream, key, type, name, description ); } int OTF_Writer_writeDefKeyValueKV( OTF_Writer* writer, uint32_t streamid, uint32_t key, OTF_Type type, const char* name, const char *description, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefKeyValueKV( stream, key, type, name, description, list ); } int OTF_Writer_writeDefTimeRange( OTF_Writer* writer, uint32_t streamid, uint64_t minTime, uint64_t maxTime, OTF_KeyValueList* list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefTimeRange( stream, minTime, maxTime, list ); } int OTF_Writer_writeDefCounterAssignments( OTF_Writer* writer, uint32_t streamid, uint32_t counter_token, uint32_t number_of_members, const uint32_t* procs_or_groups, OTF_KeyValueList* list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefCounterAssignments( stream, counter_token, number_of_members, procs_or_groups, list ); } int OTF_Writer_writeDefProcessSubstitutes( OTF_Writer* writer, uint32_t streamid, uint32_t representative, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList* list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, (uint32_t) streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefProcessSubstitutes( stream, representative, numberOfProcs, (uint32_t*) procs, list ); } int OTF_Writer_writeDefAuxSamplePoint( OTF_Writer* writer, uint32_t streamid, uint64_t time, OTF_AuxSamplePointType type, OTF_KeyValueList* list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, streamid ); if ( 0 == writer->defHeaderWritten ) { OTF_Writer_writeDefinitionHeader( writer ); writer->defHeaderWritten= 1; } return OTF_WStream_writeDefAuxSamplePoint( stream, time, type, list ); } /* *** Event Records *** ****************************************** */ int OTF_Writer_writeNoOpKV( OTF_Writer* writer, uint64_t time, uint32_t process, OTF_KeyValueList* list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeNoOpKV( stream, time, process, list ); } int OTF_Writer_writeEnter( OTF_Writer* writer, uint64_t time, uint32_t statetoken, uint32_t cpuid, uint32_t scltoken ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, cpuid ) ); return OTF_WStream_writeEnter( stream, time, statetoken, cpuid, scltoken ); } int OTF_Writer_writeEnterKV( OTF_Writer* writer, uint64_t time, uint32_t statetoken, uint32_t cpuid, uint32_t scltoken, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, cpuid ) ); return OTF_WStream_writeEnterKV( stream, time, statetoken, cpuid, scltoken, list ); } int OTF_Writer_writeRecvMsg( OTF_Writer* writer, uint64_t time, uint32_t receiver, uint32_t sender, uint32_t communicator, uint32_t msgtag, uint32_t msglength, uint32_t scltoken ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, receiver ) ); return OTF_WStream_writeRecvMsg( stream, time, receiver, sender, communicator, msgtag, msglength, scltoken ); } int OTF_Writer_writeRecvMsgKV( OTF_Writer* writer, uint64_t time, uint32_t receiver, uint32_t sender, uint32_t communicator, uint32_t msgtag, uint32_t msglength, uint32_t scltoken, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, receiver ) ); return OTF_WStream_writeRecvMsgKV( stream, time, receiver, sender, communicator, msgtag, msglength, scltoken, list ); } int OTF_Writer_writeSendMsg( OTF_Writer* writer, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t communicator, uint32_t msgtag, uint32_t msglength, uint32_t scltoken ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, sender ) ); return OTF_WStream_writeSendMsg( stream, time, sender, receiver, communicator, msgtag, msglength, scltoken ); } int OTF_Writer_writeSendMsgKV( OTF_Writer* writer, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t communicator, uint32_t msgtag, uint32_t msglength, uint32_t scltoken, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, sender ) ); return OTF_WStream_writeSendMsgKV( stream, time, sender, receiver, communicator, msgtag, msglength, scltoken, list ); } int OTF_Writer_writeLeave( OTF_Writer* writer, uint64_t time, uint32_t statetoken, uint32_t cpuid, uint32_t scltoken ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, cpuid ) ); return OTF_WStream_writeLeave( stream, time, statetoken, cpuid, scltoken ); } int OTF_Writer_writeLeaveKV( OTF_Writer* writer, uint64_t time, uint32_t statetoken, uint32_t cpuid, uint32_t scltoken, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, cpuid ) ); return OTF_WStream_writeLeaveKV( stream, time, statetoken, cpuid, scltoken, list ); } int OTF_Writer_writeCounter( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t counter_token, uint64_t value ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeCounter( stream, time, process, counter_token, value ); } int OTF_Writer_writeCounterKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t counter_token, uint64_t value, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeCounterKV( stream, time, process, counter_token, value, list ); } int OTF_Writer_writeCollectiveOperation( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t collOp, uint32_t communicator, uint32_t rootprocess, uint32_t sent, uint32_t received, uint64_t duration, uint32_t scltoken ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeCollectiveOperation( stream, time, process, collOp, communicator, rootprocess, sent, received, duration, scltoken ); } int OTF_Writer_writeCollectiveOperationKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t collOp, uint32_t communicator, uint32_t rootprocess, uint32_t sent, uint32_t received, uint64_t duration, uint32_t scltoken, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeCollectiveOperationKV( stream, time, process, collOp, communicator, rootprocess, sent, received, duration, scltoken, list ); } int OTF_Writer_writeBeginCollectiveOperation( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken ) { OTF_WStream* stream = OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeBeginCollectiveOperation( stream, time, process, collOp, matchingId, procGroup, rootProc, sent, received, scltoken ); } int OTF_Writer_writeBeginCollectiveOperationKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList *list ) { OTF_WStream* stream = OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeBeginCollectiveOperationKV( stream, time, process, collOp, matchingId, procGroup, rootProc, sent, received, scltoken, list ); } int OTF_Writer_writeEndCollectiveOperation( OTF_Writer* writer, uint64_t time, uint32_t process, uint64_t matchingId ) { OTF_WStream* stream = OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeEndCollectiveOperation( stream, time, process, matchingId ); } int OTF_Writer_writeEndCollectiveOperationKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint64_t matchingId, OTF_KeyValueList *list ) { OTF_WStream* stream = OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeEndCollectiveOperationKV( stream, time, process, matchingId, list ); } int OTF_Writer_writeEventComment( OTF_Writer* writer, uint64_t time, uint32_t process, const char* comment ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeEventComment( stream, time, process, comment ); } int OTF_Writer_writeEventCommentKV( OTF_Writer* writer, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeEventCommentKV( stream, time, process, comment, list ); } int OTF_Writer_writeBeginProcess( OTF_Writer* writer, uint64_t time, uint32_t process ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeBeginProcess( stream, time, process ); } int OTF_Writer_writeBeginProcessKV( OTF_Writer* writer, uint64_t time, uint32_t process, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeBeginProcessKV( stream, time, process, list ); } int OTF_Writer_writeEndProcess( OTF_Writer* writer, uint64_t time, uint32_t process ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeEndProcess( stream, time, process ); } int OTF_Writer_writeEndProcessKV( OTF_Writer* writer, uint64_t time, uint32_t process, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeEndProcessKV( stream, time, process, list ); } int OTF_Writer_writeFileOperation( OTF_Writer* writer, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeFileOperation( stream, time, fileid, process, handleid, operation, bytes, duration, source ); } int OTF_Writer_writeFileOperationKV( OTF_Writer* writer, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeFileOperationKV( stream, time, fileid, process, handleid, operation, bytes, duration, source, list ); } int OTF_Writer_writeBeginFileOperation( OTF_Writer* writer, uint64_t time, uint32_t process, uint64_t matchingId, uint32_t scltoken ) { OTF_WStream* stream = OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeBeginFileOperation( stream, time, process, matchingId, scltoken ); } int OTF_Writer_writeBeginFileOperationKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList *list ) { OTF_WStream* stream = OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeBeginFileOperationKV( stream, time, process, matchingId, scltoken, list ); } int OTF_Writer_writeEndFileOperation( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t fileid, uint64_t matchingId, uint64_t handleId, uint32_t operation, uint64_t bytes, uint32_t scltoken ) { OTF_WStream* stream = OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeEndFileOperation( stream, time, process, fileid, matchingId, handleId, operation, bytes, scltoken ); } int OTF_Writer_writeEndFileOperationKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t fileid, uint64_t matchingId, uint64_t handleId, uint32_t operation, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList *list ) { OTF_WStream* stream = OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeEndFileOperationKV( stream, time, process, fileid, matchingId, handleId, operation, bytes, scltoken, list ); } int OTF_Writer_writeRMAPut( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeRMAPut( stream, time, process, origin, target, communicator, tag, bytes, scltoken ); } int OTF_Writer_writeRMAPutKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeRMAPutKV( stream, time, process, origin, target, communicator, tag, bytes, scltoken, list ); } int OTF_Writer_writeRMAPutRemoteEnd( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeRMAPutRemoteEnd( stream, time, process, origin, target, communicator, tag, bytes, scltoken ); } int OTF_Writer_writeRMAPutRemoteEndKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeRMAPutRemoteEndKV( stream, time, process, origin, target, communicator, tag, bytes, scltoken, list ); } int OTF_Writer_writeRMAGet( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeRMAGet( stream, time, process, origin, target, communicator, tag, bytes, scltoken ); } int OTF_Writer_writeRMAGetKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeRMAGetKV( stream, time, process, origin, target, communicator, tag, bytes, scltoken, list ); } int OTF_Writer_writeRMAEnd( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t scltoken ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeRMAEnd( stream, time, process, remote, communicator, tag, scltoken ); } int OTF_Writer_writeRMAEndKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t scltoken, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeRMAEndKV( stream, time, process, remote, communicator, tag, scltoken, list ); } /* *** public snapshot record write handlers *** */ int OTF_Writer_writeSnapshotComment( OTF_Writer* writer, uint64_t time, uint32_t process, const char* comment ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeSnapshotComment( stream, time, process, comment ); } int OTF_Writer_writeSnapshotCommentKV( OTF_Writer* writer, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeSnapshotCommentKV( stream, time, process, comment, list ); } int OTF_Writer_writeEnterSnapshot( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t function, uint32_t process, uint32_t source ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeEnterSnapshot( stream, time, originaltime, function, process, source ); } int OTF_Writer_writeEnterSnapshotKV( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeEnterSnapshotKV( stream, time, originaltime, function, process, source, list ); } int OTF_Writer_writeSendSnapshot( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t type, uint32_t length, uint32_t source ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, sender ) ); return OTF_WStream_writeSendSnapshot( stream, time, originaltime, sender, receiver, procGroup, type, length, source ); } int OTF_Writer_writeSendSnapshotKV( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t type, uint32_t length, uint32_t source, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, sender ) ); return OTF_WStream_writeSendSnapshotKV( stream, time, originaltime, sender, receiver, procGroup, type, length, source, list ); } int OTF_Writer_writeOpenFileSnapshot( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t source ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeOpenFileSnapshot( stream, time, originaltime, fileid, process, handleid, source ); } int OTF_Writer_writeOpenFileSnapshotKV( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t source, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeOpenFileSnapshotKV( stream, time, originaltime, fileid, process, handleid, source, list ); } int OTF_Writer_writeBeginCollopSnapshot( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeBeginCollopSnapshot( stream, time, originaltime, process, collOp, matchingId, procGroup, rootProc, sent, received, scltoken ); } int OTF_Writer_writeBeginCollopSnapshotKV( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeBeginCollopSnapshotKV( stream, time, originaltime, process, collOp, matchingId, procGroup, rootProc, sent, received, scltoken, list ); } int OTF_Writer_writeBeginFileOpSnapshot( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t process, uint64_t matchingId, uint32_t scltoken ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeBeginFileOpSnapshot( stream, time, originaltime, process, matchingId, scltoken ); } int OTF_Writer_writeBeginFileOpSnapshotKV( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeBeginFileOpSnapshotKV( stream, time, originaltime, process, matchingId, scltoken, list ); } int OTF_Writer_writeCollopCountSnapshot( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t communicator, uint64_t count, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeCollopCountSnapshot( stream, time, process, communicator, count, list ); } int OTF_Writer_writeCounterSnapshot( OTF_Writer* writer, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeCounterSnapshot( stream, time, originaltime, process, counter, value, list ); } /* *** public statistics record write handlers *** */ int OTF_Writer_writeSummaryComment( OTF_Writer* writer, uint64_t time, uint32_t process, const char* comment ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeSummaryComment( stream, time, process, comment ); } int OTF_Writer_writeSummaryCommentKV( OTF_Writer* writer, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeSummaryCommentKV( stream, time, process, comment, list ); } int OTF_Writer_writeFunctionSummary( OTF_Writer* writer, uint64_t time, uint32_t function, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeFunctionSummary( stream, time, function, process, count, excltime, incltime ); } int OTF_Writer_writeFunctionSummaryKV( OTF_Writer* writer, uint64_t time, uint32_t function, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeFunctionSummaryKV( stream, time, function, process, count, excltime, incltime, list ); } int OTF_Writer_writeFunctionGroupSummary( OTF_Writer* writer, uint64_t time, uint32_t functiongroup, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeFunctionGroupSummary( stream, time, functiongroup, process, count, excltime, incltime ); } int OTF_Writer_writeFunctionGroupSummaryKV( OTF_Writer* writer, uint64_t time, uint32_t functiongroup, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeFunctionGroupSummaryKV( stream, time, functiongroup, process, count, excltime, incltime, list ); } int OTF_Writer_writeMessageSummary( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t peer, uint32_t comm, uint32_t tag, uint64_t number_sent, uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeMessageSummary( stream, time, process, peer, comm, tag, number_sent, number_recved, bytes_sent, bytes_recved ); } int OTF_Writer_writeMessageSummaryKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t peer, uint32_t comm, uint32_t tag, uint64_t number_sent, uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeMessageSummaryKV( stream, time, process, peer, comm, tag, number_sent, number_recved, bytes_sent, bytes_recved, list ); } int OTF_Writer_writeCollopSummary( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t comm, uint32_t collective, uint64_t number_sent, uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeCollopSummary( stream, time, process, comm, collective, number_sent, number_recved, bytes_sent, bytes_recved ); } int OTF_Writer_writeCollopSummaryKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t comm, uint32_t collective, uint64_t number_sent, uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeCollopSummaryKV( stream, time, process, comm, collective, number_sent, number_recved, bytes_sent, bytes_recved, list ); } int OTF_Writer_writeFileOperationSummary( OTF_Writer* writer, uint64_t time, uint32_t fileid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeFileOperationSummary( stream, time, fileid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite ); } int OTF_Writer_writeFileOperationSummaryKV( OTF_Writer* writer, uint64_t time, uint32_t fileid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeFileOperationSummaryKV( stream, time, fileid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, list ); } int OTF_Writer_writeFileGroupOperationSummary( OTF_Writer* writer, uint64_t time, uint32_t groupid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeFileGroupOperationSummary( stream, time, groupid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite ); } int OTF_Writer_writeFileGroupOperationSummaryKV( OTF_Writer* writer, uint64_t time, uint32_t groupid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, OTF_Writer_mapProcess( writer, process ) ); return OTF_WStream_writeFileGroupOperationSummaryKV( stream, time, groupid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, list ); } int OTF_Writer_writeDefMarker( OTF_Writer* writer, uint32_t streamID, uint32_t token, const char* name, uint32_t type ) { OTF_WStream* stream= OTF_Writer_getStream( writer, 0 ); #ifdef OTF_DEBUG if ( 0 != streamID ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "streamID value of '%u' is ignored, '0' is used instead\n", __FUNCTION__, __FILE__, __LINE__, streamID ); } #endif /* OTF_DEBUG */ return OTF_WStream_writeDefMarker( stream, token, name, type ); } int OTF_Writer_writeDefMarkerKV( OTF_Writer* writer, uint32_t streamID, uint32_t token, const char* name, uint32_t type, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, 0 ); #ifdef OTF_DEBUG if ( 0 != streamID ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "streamID value of '%u' is ignored, '0' is used instead\n", __FUNCTION__, __FILE__, __LINE__, streamID ); } #endif /* OTF_DEBUG */ return OTF_WStream_writeDefMarkerKV( stream, token, name, type, list ); } int OTF_Writer_writeMarker( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t token, const char* text ) { OTF_WStream* stream= OTF_Writer_getStream( writer, 0 ); return OTF_WStream_writeMarker( stream, time, process, token, text ); } int OTF_Writer_writeMarkerKV( OTF_Writer* writer, uint64_t time, uint32_t process, uint32_t token, const char* text, OTF_KeyValueList *list ) { OTF_WStream* stream= OTF_Writer_getStream( writer, 0 ); return OTF_WStream_writeMarkerKV( stream, time, process, token, text, list ); } int OTF_Writer_closeAllStreams( OTF_Writer* writer ) { int ret= 1; uint32_t i; for ( i= 0; i < writer->n; ++i ) { ret&= OTF_WStream_close( writer->streams[i] ); } writer->n= 0; return ret; } eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_FileManager.c0000644000000000000000000000013212544237152023270 xustar0030 mtime=1435582058.531899952 30 atime=1508138854.163375665 30 ctime=1508162366.213774598 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_FileManager.c0000644000175000017500000002465112544237152024467 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include #include "OTF_Platform.h" #include "OTF_FileManager.h" #include "OTF_File.h" #include "OTF_File_iofsl.h" #include "OTF_Errno.h" /* *** structs *** */ /** entry of doubly linked list, used by struct struct_OTF_FileManager below. */ struct struct_OTF_FileList { OTF_File* file; struct struct_OTF_FileList* prev; struct struct_OTF_FileList* next; }; typedef struct struct_OTF_FileList OTF_FileList; /** file handles management structure */ struct struct_OTF_FileManager { /** number of files currently opened */ uint32_t count; /** number of files allow to be opened simultaneously */ uint32_t number; /** list of objects of type OTF_RBuffer or OTF_WBuffer */ OTF_FileList* list; /** IOFSL specific settings, @see OTF_FileManager_setIofsl */ uint8_t iofsl_enabled; uint32_t iofsl_flags; uint32_t iofsl_server_num; uint32_t iofsl_streamid_bits; char** iofsl_server_list; OTF_IofslMode iofsl_mode; uint32_t iofsl_index_buffer_length; }; /* *** headers *** */ void OTF_FileManager_init( OTF_FileManager* fh ); void OTF_FileManager_finalize( OTF_FileManager* fh ); int OTF_FileManager_listInsertAtHead( OTF_FileList** list, OTF_File* entry ); int OTF_FileManager_listUnlinkAtHead( OTF_FileList** list, OTF_File* entry ); int OTF_FileManager_listUnlinkAtTail( OTF_FileList** list, OTF_File* entry ); void OTF_FileManager_listPrint( OTF_FileList** list ); /* *** implementation *** */ void OTF_FileManager_init( OTF_FileManager* fh ) { fh->count= 0; fh->number= 10; fh->list= NULL; fh->iofsl_enabled = 0; fh->iofsl_flags = 0; fh->iofsl_server_num = 0; fh->iofsl_server_list = NULL; fh->iofsl_streamid_bits = 0; fh->iofsl_mode = OTF_IOFSL_DISABLED; fh->iofsl_index_buffer_length = 0; } void OTF_FileManager_finalize( OTF_FileManager* manager ) { OTF_FileList* pos; OTF_FileList* next; # ifdef OTF_DEBUG if ( 0 < manager->count ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "open file remaining.\n", __FUNCTION__, __FILE__, __LINE__ ); } # endif /* OTF_DEBUG */ if ( NULL != manager->list ) { pos= manager->list; pos->prev->next= NULL; while ( NULL != pos ) { next = pos->next; free( pos ); pos = next; } } manager->list= NULL; if ( manager->iofsl_server_list ) { uint32_t i; for ( i = 0; i < manager->iofsl_server_num; i++ ) { free( manager->iofsl_server_list[i] ); } manager->iofsl_server_list = NULL; } free ( manager->iofsl_server_list ); manager->iofsl_server_list = NULL; if ( manager->iofsl_enabled ) { OTF_File_iofsl_finalizeGlobal(); } } OTF_FileManager* OTF_FileManager_open( uint32_t number ) { OTF_FileManager* ret= (OTF_FileManager*) malloc( sizeof(OTF_FileManager) ); if( NULL == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } OTF_FileManager_init( ret ); OTF_FileManager_setNumber( ret, number ); return ret; } int OTF_FileManager_setIofsl( OTF_FileManager *m, uint32_t server_num, char **server_list, OTF_IofslMode mode, uint32_t flags, uint32_t index_buffer_length, uint32_t streamid_bits ) { uint32_t i; if ( m->iofsl_enabled ) { OTF_Warning( "WARNING OTF_FileManager_setIofsl called twice, overwriting previous settings.\n"); } assert( mode != OTF_IOFSL_DISABLED ); m->iofsl_enabled = 1; m->iofsl_server_num = server_num; m->iofsl_mode = mode; m->iofsl_index_buffer_length = index_buffer_length; m->iofsl_flags = flags; m->iofsl_server_list = NULL; m->iofsl_streamid_bits = streamid_bits; /* it is allowed to give NULL for read only */ if ( server_list != NULL ) { m->iofsl_server_list= (char**)malloc(server_num * sizeof(*server_list)); for (i = 0; i < server_num; i++) { m->iofsl_server_list[i] = strdup(server_list[i]); } } return 1; } int OTF_FileManager_getIofsl( OTF_FileManager *m, uint32_t *server_num, char ***server_list, OTF_IofslMode *mode, uint32_t *flags, uint32_t *index_buffer_length, uint32_t *streamid_bits ) { if ( m->iofsl_enabled ) { *server_num = m->iofsl_server_num; *server_list = m->iofsl_server_list; *mode = m->iofsl_mode; *index_buffer_length = m->iofsl_index_buffer_length; *flags = m->iofsl_flags; *streamid_bits = m->iofsl_streamid_bits; } return m->iofsl_enabled; } int OTF_FileManager_isIofsl( OTF_FileManager *m ) { return m->iofsl_enabled; } void OTF_FileManager_close( OTF_FileManager* fh ) { OTF_FileManager_finalize( fh ); free( fh ); fh = NULL; } uint32_t OTF_FileManager_getCount( OTF_FileManager* fh ) { return fh->count; } uint32_t OTF_FileManager_getNumber( OTF_FileManager* fh ) { return fh->number; } uint32_t OTF_FileManager_setNumber( OTF_FileManager* fh, uint32_t number ) { if ( 0 == number ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "illegal value 0 ignored.\n", __FUNCTION__, __FILE__, __LINE__ ); return fh->number; } fh->number= number; return fh->number; } /** ensure there is a free file handle available after this call. return 1 on success, 0 otherwise (which is not supposed to happen) */ int OTF_FileManager_guaranteeFile( OTF_FileManager* m ) { if ( m->count < m->number ) { /* free file handles available */ return 1; } /* suspend last entry in list */ if ( 0 == OTF_FileManager_suspendFile( m, m->list->file ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_FileManager_suspendFile() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } return 1; } /** registers the 'file' as open. return 1 on success, 0 otherwise. */ int OTF_FileManager_registerFile( OTF_FileManager* m, OTF_File* file ) { if ( OTF_FILESTATUS_ACTIVE != OTF_File_status( file ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "file not open.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } if ( m->count >= m->number ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot register new file because limit %u exceeded, call " "'OTF_FileManager_guaranteeFile()' before.\n", __FUNCTION__, __FILE__, __LINE__, m->number ); return 0; } OTF_FileManager_listInsertAtHead( &(m->list), file ); m->count++; return 1; } /** marks currently opened 'file' as used which is important for the scheduling strategy, i.e. the internal decision which file to suspend next. return 1 on success or 0 for an suspended file. */ int OTF_FileManager_touchFile( OTF_FileManager* m, OTF_File* file ) { if ( OTF_FILESTATUS_ACTIVE != OTF_File_status( file ) ) { return 0; } /* unlink 'file' from somewhere in the list and put it to head */ OTF_FileManager_listUnlinkAtHead( &(m->list), file ); OTF_FileManager_listInsertAtHead( &(m->list), file ); return 1; } /** suspend an open file explicitly. this may be called externaly or internally. return 1 on success, 0 otherwise. */ int OTF_FileManager_suspendFile( OTF_FileManager* m, OTF_File* file ) { if ( OTF_FILESTATUS_ACTIVE != OTF_File_status( file ) ) { /* file not open, so cannot be suspended */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "file to be suspended is not open.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } if ( 0 == OTF_FileManager_listUnlinkAtTail( &(m->list), file ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "could not unlink this entry.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; }; m->count--; OTF_File_suspend( file ); return 1; } int OTF_FileManager_listInsertAtHead( OTF_FileList** list, OTF_File* entry ) { OTF_FileList* newentry= (OTF_FileList*) malloc( sizeof(OTF_FileList) ); if( NULL == newentry ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } if ( NULL != (*list) ) { newentry->file= entry; newentry->prev= (*list)->prev; newentry->next= (*list); (*list)->prev->next= newentry; (*list)->prev= newentry; *list= newentry; } else { /* empty list */ newentry->file= entry; newentry->prev= newentry; newentry->next= newentry; *list= newentry; } return 0; } int OTF_FileManager_listUnlinkAtHead( OTF_FileList** list, OTF_File* file ) { OTF_FileList* pos; if ( NULL == *list ) { return 0; } pos= *list; while ( ( pos != (*list)->prev ) && ( pos->file != file ) ) { pos= pos->next; } if ( pos->file == file ) { /* found, unlink here */ pos->prev->next= pos->next; pos->next->prev= pos->prev; if ( pos->next == pos ) { /* list gets empty! */ *list= NULL; } else if ( (*list) == pos ) { /* removed current head */ *list= (*list)->next; } free( pos ); pos = NULL; return 1; } /* not found */ return 0; } int OTF_FileManager_listUnlinkAtTail( OTF_FileList** list, OTF_File* file ) { OTF_FileList* pos; if ( NULL == *list ) { return 0; } pos= (*list)->prev; while ( ( pos != (*list) ) && ( pos->file != file ) ) { pos= pos->prev; } if ( pos->file == file ) { /* found, unlink here */ pos->prev->next= pos->next; pos->next->prev= pos->prev; if ( pos->next == pos ) { /* list gets empty! */ *list= NULL; } else if ( (*list) == pos ) { /* removed current head */ *list= (*list)->next; } free( pos ); pos = NULL; return 1; } /* not found */ return 0; } void OTF_FileManager_listPrint( OTF_FileList** list ) { OTF_FileList* pos; if ( NULL == *list ) { fprintf( stderr, "empty list\n ----- \n" ); return; } pos= *list; fprintf( stderr, "head: %p --> %p (%p %u)\n", (void*)pos, (void*)pos->next, (void*)pos->file, OTF_File_status( pos->file ) ); while ( pos != (*list)->prev ) { pos= pos->next; fprintf( stderr, " %p --> %p (%p %u)\n", (void*)pos, (void*)pos->next, (void*)pos->file, OTF_File_status( pos->file ) ); } fprintf( stderr, " ----- \n" ); } eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_Handler.h0000644000000000000000000000013212544237152022500 xustar0030 mtime=1435582058.535899952 30 atime=1507797543.982893989 30 ctime=1508162366.197773201 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_Handler.h0000644000175000017500000022403612544237152023676 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_Handler.h * * @brief Provides read access to OTF traces which consist of multiple * streams. * */ /** \defgroup handler Handler Interface * * In the following, the handler interfaces for all record types are * specified. The signature of callback handler functions is equal to the * signature of corresponding record write functions except for the first * argument. The first argument common to all callback handler functions is * \em userData -- a generic pointer to custom user data. The second common * argument to all callback hander functions is \em stream which identifies the * stream where the definition occurred. A stream parameter = 0 indicates a * global definition which is the default. */ /** * \defgroup ha Handler Array Interface * * Using this interface you can setup a handler array for reading traces. * */ #include "OTF_KeyValue.h" /* Handlers for OTF definition records *****+++***************************** */ /** * Provides a comment record. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * @param comment Arbitrary comment string. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_DefinitionComment( void* userData, uint32_t stream, const char* comment, OTF_KeyValueList *list ); /** * Provides the timer resolution. All timed event records need to be * interpreted according to this definition. By default, a timer resolution of * 1 us i.e. 1,000,000 clock ticks is assumed. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * @param ticksPerSecond Clock ticks per second of the timer. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_DefTimerResolution( void* userData, uint32_t stream, uint64_t ticksPerSecond, OTF_KeyValueList *list ); /** * Provides a process definition. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * @param process Arbitrary but unique process identifier > 0. * @param name Name of the process e.g. "Process X". * @param parent Previously declared parent process identifier or 0 if * process has no parent. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_DefProcess( void* userData, uint32_t stream, uint32_t process, const char* name, uint32_t parent, OTF_KeyValueList *list ); /** * Provides a process group definition. * * OTF supports groups of processes. Their main objective is to classify * processes depending on arbitrary characteristics. Processes can reside * in multiple groups. This record type is optional. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * @param procGroup Arbitrary but unique process group identifier > 0. * @param name Name of the process group e.g. "Well Balanced". * @param numberOfProcs The number of processes in the process group. * @param procs Vector of process identifiers as provided by * OTF_Handler_DefProcess(). * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_DefProcessGroup( void* userData, uint32_t stream, uint32_t procGroup, const char* name, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList *list ); /** * Provides a list of attributes that is assigned to a unique token. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * @param attr_token Arbitrary but unique attribute list identifier > 0. * @param num Number of elements in the attribute list array. * @param array An array of different attributes with type of OTF_ATTR_TYPE(). * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_DefAttributeList( void* userData, uint32_t stream, uint32_t attr_token, uint32_t num, OTF_ATTR_TYPE* array, OTF_KeyValueList *list ); /** * Provides a process or group attributes definition. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * @param proc_token Arbitrary but unique process or process group identifier > 0. * @param attr_token A unique token that was defined with OTF_Writer_writeDefAttributeList(). * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_DefProcessOrGroupAttributes( void* userData, uint32_t stream, uint32_t proc_token, uint32_t attr_token, OTF_KeyValueList *list ); /** * Provides a function definition. * * Defines a function of the given name. Functions can optionally belong to a * certain function group provided by the * OTF_Handler_DefFunctionGroup() handler. A source code reference can * be provided aswell. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * @param func Arbitrary but unique function identifier > 0. * @param name Name of the function e.g. "DoSomething". * @param funcGroup A function group identifier preliminary provided by * OTF_Handler_DefFunctionGroup() or 0 for no * function group assignment. * @param source Reference to the function's source code location * preliminary provided by OTF_Handler_DefScl() or * 0 for no source code location assignment. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_DefFunction( void* userData, uint32_t stream, uint32_t func, const char* name, uint32_t funcGroup, uint32_t source, OTF_KeyValueList *list ); /** * Provides a function group definition. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * @param funcGroup An arbitrary but unique function group identifier > 0. * @param name Name of the function group e.g. "Computation". * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_DefFunctionGroup( void* userData, uint32_t stream, uint32_t funcGroup, const char* name, OTF_KeyValueList *list ); /** * Provides a collective operation definition. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * @param collOp An arbitrary but unique collective op. identifier > 0. * @param name Name of the collective operation e.g. "MPI_Bcast". * @param type One of the five supported collective classes: * OTF_COLLECTIVE_TYPE_UNKNOWN (default), * OTF_COLLECTIVE_TYPE_BARRIER, * OTF_COLLECTIVE_TYPE_ONE2ALL, * OTF_COLLECTIVE_TYPE_ALL2ONE, * OTF_COLLECTIVE_TYPE_ALL2ALL. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_DefCollectiveOperation( void* userData, uint32_t stream, uint32_t collOp, const char* name, uint32_t type, OTF_KeyValueList *list ); /** * Provides a counter definition. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * @param counter An arbitrary but unique counter identifier. * @param name Name of the counter e.g. "Cache Misses". * @param properties A combination of a type, scope and vartype counter property. * OTF_COUNTER_TYPE_ACC (default) represents a counter * with monotonously increasing values e.g. a FLOP * counter. OTF_COUNTER_TYPE_ABS on the other hand * defines a counter with alternating absolute values e.g. * the memory usage of a process. The following counter * measurement scopes are supported: * OTF_COUNTER_SCOPE_START (default) always refers to the * start of the process, OTF_COUNTER_SCOPE_POINT refers * to exactly this moment in time, OTF_COUNTER_SCOPE_LAST * relates to the previous measurement, and * OTF_COUNTER_SCOPE_NEXT to the next measurement. * Examples: OTF_COUNTER_TYPE_ACC + * OTF_COUNTER_SCOPE_START should be used for most * standard hardware (PAPI) counters. * OTF_COUNTER_TYPE_ABS + OTF_COUNTER_SCOPE_POINT could * be used to record information 'spikes'. * OTF_COUNTER_TYPE_ABS + OTF_COUNTER_SCOPE_NEXT works * for memory allocation recording. * The data type can be one of the following: * COUNTER_VARTYPE_{UNSIGNED8,SIGNED8,UNSIGNED4,SIGNED4, * UNSIGNED2,SIGNED2,DOUBLE,FLOAT} * You may also use COUNTER_VARTYPE_IS{INTEGER,SIGNED, * UNSIGNED}(property) to a get a clue about the data type. * @param counterGroup A previously defined counter group identifier or 0 for * no group. * @param unit Unit of the counter e.g. "#" for "number of..." or 0 * for no unit. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_DefCounter( void* userData, uint32_t stream, uint32_t counter, const char* name, uint32_t properties, uint32_t counterGroup, const char* unit, OTF_KeyValueList *list ); /** * Provides a counter group definition. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * @param counterGroup An arbitrary but unique counter group identifier > 0. * @param name Counter group name. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_DefCounterGroup( void* userData, uint32_t stream, uint32_t counterGroup, const char* name, OTF_KeyValueList *list ); /** * Provides a source code location (SCL). * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * @param source Arbitrary but unique source code location * identifier > 0. * @param sourceFile Previously defined source file identifier. See * OTW_Handler_DefSclFile(). * @param line Line number. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_DefScl( void* userData, uint32_t stream, uint32_t source, uint32_t sourceFile, uint32_t line, OTF_KeyValueList *list ); /** * Provides a source code location (SCL) file. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * @param sourceFile Arbitrary but unique source code location * identifier != 0. * @param name File name. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_DefSclFile( void* userData, uint32_t stream, uint32_t sourceFile, const char* name, OTF_KeyValueList *list ); /** * Provides file creator information. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * @param creator String which identifies the creator of the * file e.g. "TAU Version x.y.z". * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_DefCreator( void* userData, uint32_t stream, const char* creator, OTF_KeyValueList *list ); /** * Provides file unique id. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * @param uid unique id * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_DefUniqueId( void* userData, uint32_t stream, uint64_t uid, OTF_KeyValueList *list ); /** * Provides information on the trace´s otf-version. This record can only be read * and not be written. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * @param major major version number * @param minor minor version number * @param sub sub version number * @param string string identifing the version * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_DefVersion( void* userData, uint32_t stream, uint8_t major, uint8_t minor, uint8_t sub, const char* string, OTF_KeyValueList *list ); /** * Provides a file definition * NOTE: this is experimental * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * * @param token Arbitrary, unique identifier of the file. * Has to be > 0. * * @param name name of the file * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @param group A previously defined file group identifier or 0 for * no group. * * \ingroup handler */ int OTF_Handler_DefFile( void* userData, uint32_t stream, uint32_t token, const char *name, uint32_t group, OTF_KeyValueList *list ); /** * Provides a file group definition * NOTE: this is experimental * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * * @param token Arbitrary, unique identifier of the file group * Has to be > 0. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @param name Name of the file group * * \ingroup handler */ int OTF_Handler_DefFileGroup( void* userData, uint32_t stream, uint32_t token, const char *name, OTF_KeyValueList *list ); /** * Provides a KeyValue definition * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * * @param key Arbitrary, unique identifier of the KeyValue. * * @param type Type of the KeyValue. See OTF_Type(). * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @param name Name of the KeyValue. * * @param description Description of the KeyValue. * * \ingroup handler */ int OTF_Handler_DefKeyValue( void* userData, uint32_t stream, uint32_t key, OTF_Type type, const char *name, const char *description, OTF_KeyValueList *list ); /** * Provides a TimeRange definition * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * * @param minTime The smallest timestamp of the events in this @a stream. * * @param maxTime The greates timestamp of the events in this @a stream (inclusive). * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * \ingroup handler */ int OTF_Handler_DefTimeRange( void* userData, uint32_t stream, uint64_t minTime, uint64_t maxTime, OTF_KeyValueList* list ); /** * Provides a CounterAssignments definition * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * * @param counter Counter id. * * @param number_of_members Number of entries in @procs_or_groups array. * * @param procs_or_groups The processes or process groups which have recorded * counter data for counter @counter. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * \ingroup handler */ int OTF_Handler_DefCounterAssignments( void* userData, uint32_t stream, uint32_t counter, uint32_t number_of_members, const uint32_t* procs_or_groups, OTF_KeyValueList* list ); /** * Provides a auxiliary sample point definition. * * It is intentional a per-stream or global (stream id equals 0) definition. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream Identifies the stream to which this definition * belongs to. stream = 0 represents a global * definition. * * @param time Time at which the auxiliary sample point information * is available. * * @param type Type of the auxiliary sample point. See @a OTF_AuxSamplePointType. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * \ingroup handler */ int OTF_Handler_DefAuxSamplePoint( void* userData, uint32_t stream, uint63_t time, OTF_AuxSamplePointType type, OTF_KeyValueList * list ); /* Handlers for OTF event records ****************************************** */ /** * Provides a no-operation event. This event only stores a OTF_KeyValueList * together with a process number and a timestamp. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time The time associated with this event. * @param process Process where action took place. * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_NoOp( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList *list ); /** * Provides a function entry event. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time The time when the function entry took place. * @param function Function which has been entered as defined with * OTF_Writer_defFunction. * @param process Process where action took place. * @param source Explicit source code location identifier > 0 or 0 if * no source information available. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_Enter( void* userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList *list ); /** * Provides a function leave event. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time The time when the function leave took place. * @param function Function which was left or 0 if stack integrety checking * is not available. * @param process Process where action took place. * @param source Explicit source code location identifier > 0 or 0 if * no source information available. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_Leave( void* userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList *list ); /** * Provides a message send event. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time The time when the message was send. * @param sender Sender of the message. * @param receiver Receiver of the message. * @param group Process-group to which sender and receiver belong to or * 0 for no group assignment. * @param type Message type information > 0 or 0 for no information. * @param length Optional message length information. * @param source Explicit source code location identifier > 0 or 0 if * no source information available. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_SendMsg( void* userData, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t group, uint32_t type, uint32_t length, uint32_t source, OTF_KeyValueList *list ); /** * Provides a message retrieval event. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time The time when the message was received. * @param recvProc Identifier of receiving process. * @param sendProc Identifier of sending process. * @param group Process-group to which sender and receiver belong to or * 0 for no group assignment. * @param type Message type information > 0 or 0 for no information. * @param length Optional message length information. * @param source Explicit source code location identifier > 0 or 0 if * no source information available. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_RecvMsg( void* userData, uint64_t time, uint32_t recvProc, uint32_t sendProc, uint32_t group, uint32_t type, uint32_t length, uint32_t source, OTF_KeyValueList *list ); /** * Provides a counter measurement. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Time when counter was measured. * @param process Process where counter measurment took place. * @param counter Counter which was measured. * @param value Counter value. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_Counter( void* userData, uint64_t time, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList *list ); /** * Provides a collective operation member event. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Time when collective operation was entered by member. * @param process Process identifier i.e. collective member. * @param collective Collective identifier as defined with * OTF_Handler_DefCollectiveOperation(). * @param procGroup Group of processes participating in this collective. * @param rootProc Root process if != 0. * @param sent Data volume sent by member or 0. * @param received Data volume received by member or 0. * @param duration Time spent in collective operation. * @param source Explicit source code location or 0. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_CollectiveOperation( void* userData, uint64_t time, uint32_t process, uint32_t collective, uint32_t procGroup, uint32_t rootProc, uint32_t sent, uint32_t received, uint64_t duration, uint32_t source, OTF_KeyValueList *list ); /** * Provides a begin collective operation member event. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Time when collective operation was entered by member. * @param process Process identifier i.e. collective member. * @param collOp Collective identifier to be defined with * OTF_Writer_writeDefCollectiveOperation(). * @param matchingId Identifier for finding the associated end collective event * record. It must be unique within this process. * @param procGroup Group of processes participating in this collective. * @param rootProc Root process if != 0. * @param sent Data volume sent by member or 0. * @param received Data volume received by member or 0. * @param scltoken Explicit source code location or 0. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return 1 on success, 0 if an error occurs. * * \ingroup handler */ int OTF_Handler_BeginCollectiveOperation( void* userData, uint64_t time, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList *list ); /** * Provides an end collective operation member event. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Time when collective operation was entered by member. * @param process Process identifier i.e. collective member. * @param matchingId Matching identifier, must match a previous start * collective operation. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return 1 on success, 0 if an error occurs. * * \ingroup handler */ int OTF_Handler_EndCollectiveOperation( void* userData, uint64_t time, uint32_t process, uint64_t matchingId, OTF_KeyValueList *list ); /** * Provide a comment record. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Comments need a timestamp for a proper positioning in the * trace. * @param process Comments also need a process identifier for a proper * positioning in the trace. * @param comment Arbitrary comment string. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_EventComment( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList *list ); /** * Provides a process creation event. * * Marks the explicit begin of a process. This event precedes the very first * event of the respective process and should carry the same time stamp. This * is especially useful with on-line analysis. It tells whether there will be * additional records for the given process or not. Without this record type, * it could only be guessed that there might not follow more events after a * process has reached the bottom of the call stack. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Time when process was referenced for the first time. * @param process Process identifier > 0. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_BeginProcess( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList *list ); /** * Provides a process destruction event. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Time when process is referenced for the last time. * Process identifiers must not be recycled! * @param process Process identifier > 0. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_EndProcess( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList *list ); /** * Provides a file operation event * NOTE: this is experimental * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Time when process is referenced for the last time. * Process identifiers must not be recycled! * @param process Process identifier > 0. * * @param handleid Unique identifier. This parameter is important * for files that are opened multiple times at the same time, * to match the close to the correct open. * This number has to be unique for every opened file ( * Files with the same id must have different handleid !!! ). * Recommendation: use the timestamp of the openfile record, * or an increasing(with every fileopen record) variable for * this. * * @param operation Kind of operation done on the file and flags further * describing the operation. * The macro OTF_FILEOP(operation) should be used to check * for the kind of I/O operation. * - OTF_FILEOP(operation) can be checked for equality on * - OTF_FILEOP_OPEN -- open a file * - OTF_FILEOP_CLOSE -- close a file * - OTF_FILEOP_READ -- read some bytes off a file * - OTF_FILEOP_WRITE -- write some bytes to a file * - OTF_FILEOP_SEEK -- set the file pointer * - OTF_FILEOP_UNLINK -- delete a file * - OTF_FILEOP_RENAME -- rename a file * - OTF_FILEOP_DUP -- duplicate a file desriptor * - OTF_FILEOP_SYNC -- write dirty buffers to disk * - OTF_FILEOP_LOCK -- acquire a file lock * - OTF_FILEOP_UNLOCK -- release a file lock * - OTF_FILEOP_OTHER -- none of the above * - The following flags are supported and can be checked * bit-wise for existence in operation: * - OTF_IOFLAG_IOFAILED -- e.g. could not open file, * could not read or write all bytes, a lock could not be * acquired, a rename operation failed, etc. * - OTF_IOFLAG_ASYNC -- I/O is done asynchronously * - OTF_IOFLAG_COLL -- this is a collective I/O operation * - OTF_IOFLAG_DIRECT -- I/O is done bypassing the cache * - OTF_IOFLAG_SYNC -- I/O is done synchronously * - OTF_IOFLAG_ISREADLOCK -- lock is a read-only file * lock * * @param bytes Should be 0 for open and close. * Number of read/written bytes for read/write operations. * New position in the file after a seek operation. * * @param duration Time spent in the file operation. * * @param source Explicit source code location or 0. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * \ingroup handler */ int OTF_Handler_FileOperation( void* userData, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source, OTF_KeyValueList *list ); /** * Write a begin file operation record * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Start time of file operation. * @param process Process identifier > 0. * @param matchingId Operation identifier, used for finding the associated end * file operation event record. * @param scltoken Optional reference to source code. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return 1 on success, 0 if an error occurs. * * \ingroup handler */ int OTF_Handler_BeginFileOperation( void* userData, uint64_t time, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList *list ); /** * Write an end file operation record * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time End time of file operation. * @param process Process identifier > 0. * @param fileid File identifier > 0. * @param matchingId Operation identifier, must match a previous start file * operation event record. * @param handleId Unique file open identifier. * @param operation Type of file operation. See OTF_Handler_FileOperation(). * @param bytes Depends on operation. See OTF_Handler_FileOperation(). * @param scltoken Optional reference to source code. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return 1 on success, 0 if an error occurs. * * \ingroup handler */ int OTF_Handler_EndFileOperation( void* userData, uint64_t time, uint32_t process, uint32_t fileid, uint64_t matchingId, uint64_t handleId, uint32_t operation, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList *list ); /** * Provides a RMA put event - end marker is anticipated on initiating Process. * NOTE: this is experimental * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Time when process is referenced for the last time. * Process identifiers must not be recycled! * @param process Process identifier > 0. * This is the Process that initiates the transfer. * @param origin If >0, Process whose memory will be transferred, instead of this . * @param target Process whose memory will be written. * @param communicator Together with tag, it is used to identify the * corresponding RMA end record. This will be the process * group of the RMA Window in case of MPI one-sided * communication. * @param tag Together with communicator, it is used to identify the * corresponding RMA end record. Usually this will be counted * upwards to distinguish multiple transfer sections with the * same communicator BUT THIS IS NOT MANDATORY, i.e. multiple * RMA end records with the same comm/tag combination may * exist. * @param bytes Number of bytes that have been transferred by this call. * @param source Explicit source code location or 0. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return 1 on success, 0 if an error occurs. * * \ingroup handler */ int OTF_Handler_RMAPut( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t source, OTF_KeyValueList *list ); /** * Provides a RMA put event with remote finalization marker, i.e. RMA end marker * is anticipated on target Process. * NOTE: this is experimental * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Time when process is referenced for the last time. * Process identifiers must not be recycled! * @param process Process identifier > 0. * This is the Process that initiates the transfer. * @param origin If >0, Process whose memory will be transferred, instead of this . * @param target Process whose memory will be written. * That Process' stream will also carry the end record for * this transaction. * @param communicator Together with tag, it is used to identify the * corresponding RMA end record. This will be the process * group of the RMA Window in case of MPI one-sided * communication. * @param tag Together with communicator, it is used to identify the * corresponding RMA end record. Usually this will be counted * upwards to distinguish multiple transfer sections with the * same communicator BUT THIS IS NOT MANDATORY, i.e. multiple * RMA end records with the same comm/tag combination may * exist. * @param bytes Number of bytes that have been transferred by this call. * @param source Explicit source code location or 0. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return 1 on success, 0 if an error occurs. * * \ingroup handler */ int OTF_Handler_RMAPutRemoteEnd( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t source, OTF_KeyValueList *list ); /** * Provides a RMA get event - end marker is anticipated on initiating Process. * NOTE: this is experimental * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Time when process is referenced for the last time. * Process identifiers must not be recycled! * @param process Process identifier > 0. * This is the Process that initiates the transfer. * @param origin If >0, the Process whose memory will receive the data * from , instead of this . * @param target Process whose memory will be read. * @param communicator Together with tag, it is used to identify the * corresponding RMA end record. This will be the process * group of the RMA Window in case of MPI one-sided * communication. * @param tag Together with communicator, it is used to identify the * corresponding RMA end record. Usually this will be counted * upwards to distinguish multiple transfer sections with the * same communicator BUT THIS IS NOT MANDATORY, i.e. multiple * RMA end records with the same comm/tag combination may * exist. * @param bytes Number of bytes that have been transferred by this call. * @param source Explicit source code location or 0. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return 1 on success, 0 if an error occurs. * * \ingroup handler */ int OTF_Handler_RMAGet( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t source, OTF_KeyValueList *list ); /** * Provide a RMA end event. * The end record marks the finalization of all RMA operations with the * communicator and tag. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Time when process is referenced for the last time. * Process identifiers must not be recycled! * @param process Process identifier > 0. * @param remote If >0, ends RMA transfers on Process , instead of this . * @param communicator Together with tag, it is used to identify the related RMA * transfer records. * @param tag Together with communicator, it is used to identify the * related RMA transfer records. * @param source Explicit source code location or 0. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return 1 on success, 0 if an error occurs. * * \ingroup handler */ int OTF_Handler_RMAEnd( void* userData, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t source, OTF_KeyValueList *list ); /* Handlers for OTF snapshot records *************************************** */ /** * Provides a snapshot comment. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Comments need a timestamp for a proper positioning in the * trace. * @param process Comments also need a process identifier for a proper * positioning in the trace. * @param comment Arbitrary comment string. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_SnapshotComment( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList *list ); /** provides information about a past function call at the time 'originaltime'. Parameters 'time', 'function', 'process' ,'source' and the return value have the same meaning as in OTF_Handler_Enter(). \ingroup handler */ int OTF_Handler_EnterSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList *list ); /** provides information about a past message send operation at the time 'originaltime'. Parameters 'time', 'sender', 'receiver', 'procGroup', 'tag', 'length', 'source' and the return value have the same meaning as in OTF_Handler_SendMsg(). \ingroup handler */ int OTF_Handler_SendSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source, OTF_KeyValueList *list ); /** * Provides a snapshot record for opened(and not yet closed) files * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Current timestamp. * @param originaltime Timestamp when the file has been opened. * @param process Process identifier. * @param handleid Unique file open identifier. See * OTF_Handler_FileOperation(). * @param source Optional reference to source code. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * \ingroup handler */ int OTF_Handler_OpenFileSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t source, OTF_KeyValueList *list ); /** * Provides a snapshot record for unfinished collective operations * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Current timestamp. * @param originaltime Time when the collective operation began. * @param process Process identifier. * @param collOp Collective identifier to be defined with * OTF_Writer_writeDefCollectiveOperation(). * @param matchingId Identifier for finding the associated end collective event * record. It must be unique within this procGroup. * @param procGroup Group of processes participating in this collective. * @param rootProc Root process if != 0. * @param sent Data volume sent by member or 0. * @param received Data volume received by member or 0. * @param scltoken Optional reference to source code. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * \ingroup handler */ int OTF_Handler_BeginCollopSnapshot ( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList *list ); /** * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Current timestamp. * @param originaltime Timestamp when the file has been opened. * @param process Process identifier. * @param matchingId Identifier for finding the associated end file operation event * record. It must be unique. * @param scltoken Optional reference to source code. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * \ingroup handler */ int OTF_Handler_BeginFileOpSnapshot ( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList *list ); /** * Provides a snapshot how many collective operation this process has finished * until now (ie. the begin coll op records are not counted) in the specified * communicator. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time The time of the snapshot. * @param process Process identifier. * @param communicator The communicator for which the count hold. * @param count The number of coll ops this process has finished in this * comm. * * @param list Pointer to an OTF_KeyValueList() that contains individual * data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_CollopCountSnapshot( void* userData, uint64_t time, uint32_t process, uint32_t communicator, uint64_t count, OTF_KeyValueList *list ); /** * Provides the value of the counter before the snapshot. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Time of the snapshot. * @param originaltime Timestamp when the counter was sampled with this value. * @param process Process identifier. * * @param counter The counter. * @param name1 The value of the counter. * * @param list Pointer to an OTF_KeyValueList() that contains individual * data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_CounterSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList *list ); /* Handlers for OTF summary records **************************************** */ /** Provides a summary comment. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Comments need a timestamp for a proper positioning in the * trace. * @param process Comments also need a process identifier for a proper * positioning in the trace. * @param comment Arbitrary comment string. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_SummaryComment( void * userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList *list ); /** * Provides summarized information for a given function. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Time when summary was computed. * @param function Function as defined with * OTF_Handler_DefFunction. * @param process Process of the given function. * @param invocations Number of invocations. * @param exclTime Time spent exclusively in the given function. * @param inclTime Time spent in the given function including all * sub-routine calls. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_FunctionSummary( void* userData, uint64_t time, uint32_t function, uint32_t process, uint64_t invocations, uint64_t exclTime, uint64_t inclTime, OTF_KeyValueList *list ); /** * Provides summarized information for a given group of functiongroups. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Time when summary was computed. * @param funcGroup Function group as defined with * OTF_Handler_DefFunctionGroup. * @param process Process of the given function group. * @param invocations Number of invocations. * @param exclTime Time spent exclusively in the given function group. * @param inclTime Time spent in the given function group including all * sub-routine calls. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_FunctionGroupSummary( void* userData, uint64_t time, uint32_t funcGroup, uint32_t process, uint64_t invocations, uint64_t exclTime, uint64_t inclTime, OTF_KeyValueList *list ); /** * Provides summarized information for a given message type. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Time when summary was computed. * @param process Process where messages originated. * @param peer Process where the message is sent to * @param comm Communicator of message summary * @param type Message type/tag. * @param sentNumber The number of messages sent. * @param receivedNumber The number of messages received. * @param sentBytes The number of bytes sent via messages of the given * type. * @param receivedBytes The number of bytes received through messages of the * given type. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_MessageSummary( void* userData, uint64_t time, uint32_t process, uint32_t peer, uint32_t comm, uint32_t type, uint64_t sentNumber, uint64_t receivedNumber, uint64_t sentBytes, uint64_t receivedBytes, OTF_KeyValueList *list ); /** * Provides summarized information for collective operations. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Time when summary was computed. * @param process Process identifier i.e. collective member. * @param comm Communicator of collective operation summary. * @param collective Collective identifier as defined with * OTF_Handler_DefCollectiveOperation(). * @param sentNumber The number of messages sent by member or 0. * @param receivedNumber The number of messages received by member or 0. * @param sentBytes The number of bytes sent by member or 0. * @param receivedBytes The number of bytes received by member or 0. * * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_CollopSummary( void *userData, uint64_t time, uint32_t process, uint32_t comm, uint32_t collective, uint64_t sentNumber, uint64_t receivedNumber, uint64_t sentBytes, uint64_t receivedBytes, OTF_KeyValueList *list ); /** * Provides summarized information about file operations. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Time when summary was computed. * @param fileid File identifier or 0 for all files. * @param process Process where file operations occured. * @param nopen Number of open events. * @param nclose Number of close events. * @param nread Number of read events. * @param nwrite Number of write events. * @param nseek Number of seek events. * @param bytesread Number of bytes read. * @param byteswrite Number of bytes written. * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * \ingroup handler */ int OTF_Handler_FileOperationSummary( void* userData, uint64_t time, uint32_t fileid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList *list ); /** * Provides summarized information about file operations in a file group. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Time when summary was computed. * @param groupid Group identifier or 0 for all files. * @param process Process where file operations occured. * @param nopen Number of open events. * @param nclose Number of close events. * @param nread Number of read events. * @param nwrite Number of write events. * @param nseek Number of seek events. * @param bytesread Number of bytes read. * @param byteswrite Number of bytes written. * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * \ingroup handler */ int OTF_Handler_FileGroupOperationSummary( void* userData, uint64_t time, uint32_t groupid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList *list ); /** * Can be used to handle records which cannot be read. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Time when summary was computed. * @param process If 'time' equals (uin64_t) -1, the unknown record * is a definiton record and 'process' * represents the streamid of the record. * If 'time' has a valid value ( not (uint64)-1 ) the * unknown record is an event-, statistics- or * snapshotrecord and 'process' represents * the processid of the record. * @param record string which contains the record. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_UnknownRecord( void *userData, uint64_t time, uint32_t process, const char *record ); /* * Provides summarized information about a counter. * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Time when summary was computed. * @param process Process where messages originated. * @param peer Token of counter. * @param value Counter Value at current time. * * \ingroup handler */ /*int OTF_Handler_CounterSummary( void* userData, uint64_t time, uint32_t process, uint32_t counterid, uint64_t value ); */ /* Handlers for OTF marker records **************************************** */ /** * Define a marker * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param stream stream ID is ignored here * @param token The newly defined marker token. * @param name Its name * @param type Marker type, one of OTF_MARKER_TYPE_xxx * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_DefMarker( void *userData, uint32_t stream, uint32_t token, const char* name, uint32_t type, OTF_KeyValueList *list ); /** * Define a marker * * @param userData Pointer to user data which can be set with * OTF_HandlerArray_setFirstHandlerArg(). * @param time Time stamp of the marker record. Note that marker records are * not sorted according to time stamps! * @param process The process or process group of the marker. * @param token A marker token defined by 'DefMarker' before. * @param text Descriptive text. * @param list Pointer to an OTF_KeyValueList() that contains individual data. * * @return OTF_RETURN_ABORT for aborting the reading process immediately * OTF_RETURN_OK for continue reading * * \ingroup handler */ int OTF_Handler_Marker( void *userData, uint64_t time, uint32_t process, uint32_t token, const char* text, OTF_KeyValueList *list ); eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_Filenames.c0000644000000000000000000000013212544237152023021 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.207376764 30 ctime=1508162366.213774598 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_Filenames.c0000644000175000017500000001043312544237152024211 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "OTF_Platform.h" #include #include #include #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_IO_H #include #endif /* vs does not know F_OK*/ #ifndef F_OK #define F_OK 00 #endif #include "OTF_Filenames.h" #define OTF_FILENAMESUFFIX_MAIN "otf" #define OTF_FILENAMESUFFIX_DEF "def" #define OTF_FILENAMESUFFIX_EVENTS "events" #define OTF_FILENAMESUFFIX_SNAPS "snaps" #define OTF_FILENAMESUFFIX_STATS "stats" #define OTF_FILENAMESUFFIX_MARKER "marker" #include "OTF_Errno.h" char* OTF_getFilename( const char* namestub, uint32_t id, OTF_FileType type, unsigned int l, char* ret ) { char* zsuffix = ((type&OTF_FILECOMPRESSION_BITS) > 0 && (type&OTF_FILECOMPRESSION_BITS) <= 9 ) ? ".z" : ""; if ( ( NULL == ret ) || ( 0 == l ) ) { l= (unsigned int) strlen( namestub ) + 1 + 1 + 10 + 1 + 10 + 2; /* is this right ??? - at least it´s more than enough */ ret= (char*) malloc( l * sizeof(char) ); } if ( ( type & OTF_FILETYPE_IOFSL_ALL ) || ( type & OTF_FILETYPE_IOFSL_IDX ) ) { char *midfix = ( type & OTF_FILETYPE_IOFSL_ALL ) ? "all" : "idx"; switch ( type&OTF_FILETYPE_BITS ) { case OTF_FILETYPE_MASTER: /* mastercontrol file stays uncompressed even with compression or iofsl*/ snprintf( ret, l, "%s.%s", namestub, OTF_FILENAMESUFFIX_MAIN ); break; case OTF_FILETYPE_GLOBAL_DEF: snprintf( ret, l, "%s.%s%s", namestub, OTF_FILENAMESUFFIX_DEF, zsuffix ); break; case OTF_FILETYPE_DEF: snprintf( ret, l, "%s.%s.%s.%i%s", namestub, midfix, OTF_FILENAMESUFFIX_DEF, id, zsuffix ); break; case OTF_FILETYPE_EVENT: snprintf( ret, l, "%s.%s.%s.%i%s", namestub, midfix, OTF_FILENAMESUFFIX_EVENTS, id, zsuffix ); break; case OTF_FILETYPE_SNAPS: snprintf( ret, l, "%s.%s.%s.%i%s", namestub, midfix, OTF_FILENAMESUFFIX_SNAPS, id, zsuffix ); break; case OTF_FILETYPE_STATS: snprintf( ret, l, "%s.%s.%s.%i%s", namestub, midfix, OTF_FILENAMESUFFIX_STATS, id, zsuffix ); break; case OTF_FILETYPE_MARKER: snprintf( ret, l, "%s.%s.%s.%i%s", namestub, midfix, OTF_FILENAMESUFFIX_MARKER, id, zsuffix ); break; default: free(ret); ret = NULL; return NULL; } return ret; } switch ( type&OTF_FILETYPE_BITS ) { case OTF_FILETYPE_MASTER: /* mastercontrol file stays uncompressed even with compression */ snprintf( ret, l, "%s.%s", namestub, OTF_FILENAMESUFFIX_MAIN ); break; case OTF_FILETYPE_GLOBAL_DEF: snprintf( ret, l, "%s.%s%s", namestub, OTF_FILENAMESUFFIX_DEF, zsuffix ); break; case OTF_FILETYPE_DEF: snprintf( ret, l, "%s.%x.%s%s", namestub, id, OTF_FILENAMESUFFIX_DEF, zsuffix ); break; case OTF_FILETYPE_EVENT: snprintf( ret, l, "%s.%x.%s%s", namestub, id, OTF_FILENAMESUFFIX_EVENTS, zsuffix ); break; case OTF_FILETYPE_SNAPS: snprintf( ret, l, "%s.%x.%s%s", namestub, id, OTF_FILENAMESUFFIX_SNAPS, zsuffix ); break; case OTF_FILETYPE_STATS: snprintf( ret, l, "%s.%x.%s%s", namestub, id, OTF_FILENAMESUFFIX_STATS, zsuffix ); break; case OTF_FILETYPE_MARKER: snprintf( ret, l, "%s.%x.%s%s", namestub, id, OTF_FILENAMESUFFIX_MARKER, zsuffix ); break; default: free(ret); ret = NULL; return NULL; } return ret; } /** strip the a filename from the ".otf" suffix if present */ char* OTF_stripFilename( const char* filename ) { char* ret= strdup( filename ); char* p= ret; if( NULL == p ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } /* find last '.' and compare remainder with OTF_FILENAMESUFFIX_MAIN */ p= strrchr( ret, '.' ); if ( NULL != p && 0 == strcmp( p + 1, OTF_FILENAMESUFFIX_MAIN ) ) { *p= '\0'; } /* fail if the resulting filename is empty */ if ( '\0' == *ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "empty filename base.\n", __FUNCTION__, __FILE__, __LINE__ ); free( ret ); return NULL; } return ret; } int OTF_fileExists( const char* filename ) { if ( 0 == access( filename, F_OK ) ) { return 1; } else { return 0; } } eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_MasterControl.h0000644000000000000000000000013212544237152023717 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.223377164 30 ctime=1508162366.189772503 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_MasterControl.h0000644000175000017500000003152112544237152025110 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_MasterControl.h * * @brief Provides access to process-stream-mapping, which are located in * .otf files. * * \ingroup mc */ /** \defgroup mc Master Control Interface * * This interface is dedicated to managing master control files ( *.otf ) * A master control file contains a mapping from process streams * to processes and vice versa. * * \section mc_example A simple Example * * This is example will create a simple mapping and read it again to * show how reading and writing works with the master control file. * * The need for creating your own master control file arises when you are not * using the highlevel reader/writer, but the stream reader/writer. * * * \code * #include * #include * #include "otf.h" * * int main( int argc, char** argv ) { * \endcode * * Declare a couple of variables. * \code * uint32_t streamcount; * uint32_t a; * uint32_t i; * OTF_MapEntry* entry; * OTF_FileManager* manager; * OTF_MasterControl* mc; * \endcode * * Initialize the file manager and the mastercontrol. * \code * manager= OTF_FileManager_open( 100 ); * assert( manager ); * * mc = OTF_MasterControl_new( manager ); * \endcode * * Add four processes (100,101,102,103) to two streams (1,2) * \code * OTF_MasterControl_append( mc, 1, 100 ); * OTF_MasterControl_append( mc, 1, 101 ); * OTF_MasterControl_append( mc, 2, 102 ); * OTF_MasterControl_append( mc, 2, 103 ); * \endcode * * Write everything to the file "mytrace.otf" * and close the master control. * \code * OTF_MasterControl_write( mc, "mytrace" ); * OTF_MasterControl_close( mc ); * \endcode * * Now initialize the master control structure and read the * newly written master control file. * \code * mc = OTF_MasterControl_new( manager ); * OTF_MasterControl_read( mc, "mytrace" ); * \endcode * * Visit all stream-process pairs and print them out * \code * streamcount = OTF_MasterControl_getCount( mc ); * * for( i = 0; i < streamcount; ++i ) { * entry = OTF_MasterControl_getEntryByIndex( mc, i ); * for( a = 0; a < entry->n; ++a ) { * printf( " stream %u contains process %u\n", entry->argument, * entry->values[a] ); * } * } * \endcode * * Clean everything up before exiting the program * \code * OTF_MasterControl_close( mc ); * * * return 0; * } * \endcode * * Compile this using $ gcc -o test test.c `otfconfig --libs`. * * The program will show this output: * \verbatim * stream 1 contains process 100 * stream 1 contains process 101 * stream 2 contains process 102 * stream 2 contains process 103 \endverbatim * * */ #ifndef OTF_MASTERCONTROL_H #define OTF_MASTERCONTROL_H #include #include #include #include "OTF_inttypes.h" #include "OTF_File.h" #include "OTF_Filenames.h" #include "OTF_WBuffer.h" #include "OTF_RBuffer.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** entry for 1:n mapping */ struct struct_OTF_MapEntry { /** Unique argument ids. (stream ids) */ uint32_t argument; /** Current number of entries in 'values'. */ uint32_t n; /** Current size of array 'values'. */ uint32_t s; /** List of size 's' containing 'n' sorted entries of unique value ids (process ids). */ uint32_t* values; }; /** entry for 1:n mapping \ingroup mc */ typedef struct struct_OTF_MapEntry OTF_MapEntry; /** entry for 1:1 mapping */ struct struct_OTF_Pair { uint32_t argument; uint32_t value; }; /** entry for 1:1 mapping \ingroup mc */ typedef struct struct_OTF_Pair OTF_Pair; /** Data structure that collects the information about which stream contains which parts of a multi-file trace. This is supposed to be an 1:1 copy of the information in the master control file. */ struct struct_OTF_MasterControl { /** Current number of entries in 'map'. */ uint32_t n; /** Current size of array 'map'. */ uint32_t s; /** Mapping from stream ids (argument) to process ids (values). 1:n mapping since a stream can contain multiple processes. This mapping is the authoritative source as listed in the master control file. */ OTF_MapEntry* map; /** Current number of entries in 'rmap'. */ uint32_t rn; /** Current size of array 'rmap'. */ uint32_t rs; /** Reverse mapping to 'map'. this is an 1:1 mapping since every process belongs to exactly one stream. This recursive mapping is to be derived from the authoritative source in 'map'. */ OTF_Pair* rmap; /** file handle manager */ OTF_FileManager* manager; }; /** master control object. This object contains all information of the master * control file. \ingroup mc */ typedef struct struct_OTF_MasterControl OTF_MasterControl; /** * Creates an empty OTF_MasterControl object. * The returned object must be freed by OTF_MasterControl_close(). * * @param manager File handle manager. * * @return newly created master control object * * \ingroup mc */ OTF_MasterControl* OTF_MasterControl_new( OTF_FileManager* manager ); /** * INTERFACE CHANGED! * Read a master control file according to namestub, reset the _existing_ * OTF_MasterControl structure and fill it according to the file. * * @param mc Pointer to an initialized OTF_Mastercontrol object. See also * OTF_MasterControl_new(). * * @return 1 on success, 0 if an error occurs * * \ingroup mc */ int OTF_MasterControl_read(OTF_MasterControl* mc, const char* namestub ); /** Destructor, delete OTF_MasterControl object. DEPRECATED \ingroup mc*/ void OTF_MasterControl_finish( OTF_MasterControl* mc ); /** * Deletes a OTF_MasterControl object. * * @param mc Pointer to an initialized OTF_Mastercontrol object. See also * OTF_MasterControl_new(). * * \ingroup mc */ void OTF_MasterControl_close( OTF_MasterControl* mc ); /** * Makes a clone of an existing OTF_MasterControl object. * * @param mc Pointer to an initialized OTF_Mastercontrol object. * See also OTF_MasterControl_new(). * @param manager File handle manager. * * @return Cloned master control object * * \ingroup mc */ OTF_MasterControl* OTF_MasterControl_clone( OTF_MasterControl* mc, OTF_FileManager* manager ); /** * Append the mapping argument -> value to the master control structure, * * @param mc Pointer to an initialized OTF_Mastercontrol object. See also * OTF_MasterControl_new(). * @param argument Represents the stream identifier. * @param value Represents the process identifier. * * @return 1 on sucess, 0 if an error occurs (e.g. the new pair * conflicts with the current mapping). * * \ingroup mc */ int OTF_MasterControl_append( OTF_MasterControl* mc, uint32_t argument, uint32_t value ); /** * Append the mapping argument -> ( list of l values ) to the master control * structure. This is equal to calling 'OTF_MasterControl_append()' with every * value in list separately. * * @param mc Pointer to an initialized OTF_Mastercontrol object. See also * OTF_MasterControl_new(). * @param argument Represents the stream identifier. * @param l Number of elements in the value array. * @param values Array of process identifiers belonging to the stream. * * @return 1 on success, 0 if an error occurs (e.g. the new entries * conflict with the current mapping). * * * * \ingroup mc */ int OTF_MasterControl_appendList( OTF_MasterControl* mc, uint32_t argument, uint32_t l, uint32_t* values ); /** * Returns the argument to the given value. If no mapping was defined * make up a new one. * * @param mc Pointer to an initialized OTF_Mastercontrol object. See also * OTF_MasterControl_new(). * @param value Represents the process identifier. * * @return Argument to which the value belongs to. * * \ingroup mc */ uint32_t OTF_MasterControl_mapReverse( OTF_MasterControl* mc, uint32_t value ); /** * Writes a master control file with the current contents of the given * object. * * @param mc Pointer to an initialized OTF_Mastercontrol object. See also * OTF_MasterControl_new(). * @param namestub File name prefix which. * * @return 1 on success, 0 if an error occurs. * * \ingroup mc */ int OTF_MasterControl_write( OTF_MasterControl* mc, const char* namestub ); /** * Checks if the current mapping is consistent in itself. * * @param mc Pointer to an initialized OTF_Mastercontrol object. See also * OTF_MasterControl_new(). * * @return 1 on success, 0 if the mapping is not consistent in itself. * * \ingroup mc */ int OTF_MasterControl_check( OTF_MasterControl* mc ); /** * Prints the mapping to stderr. * * @param mc Pointer to an initialized OTF_Mastercontrol object. See also * OTF_MasterControl_new(). * * \ingroup mc */ void OTF_MasterControl_print( OTF_MasterControl* mc ); /** * Returns the entry for the given argument. * * @param mc Pointer to an initialized OTF_Mastercontrol object. See also * OTF_MasterControl_new(). * @param argument Represents the stream identifier. * * @return The map entry belonging to the argument, or NULL if an error * occurs. * * \ingroup mc */ OTF_MapEntry* OTF_MasterControl_getEntry( OTF_MasterControl* mc, uint32_t argument ); /** * Returns the entry for the given index. * * @param mc Pointer to an initialized OTF_Mastercontrol object. See also * OTF_MasterControl_new(). * @param index Index of the entry to return. * * @return The map entry belonging to the index, or NULL if the index * exceeds the mapping. * * \ingroup mc */ OTF_MapEntry* OTF_MasterControl_getEntryByIndex( OTF_MasterControl* mc, uint32_t index ); /** * Returns a pair of value and argument for the given index. * * @param mc Pointer to an initialized OTF_Mastercontrol object. See also * OTF_MasterControl_new(). * @param index Index of the pair in the reverse mapping. * * @return Pair of value and argument belonging * to the index, or NULL if the index exceeds the reverse * mapping. * * \ingroup mc */ OTF_Pair* OTF_MasterControl_getREntryByIndex( OTF_MasterControl* mc, uint32_t index ); /** * Returns the number of arguments in the current list. * * @param mc Pointer to an initialized OTF_Mastercontrol object. See also * OTF_MasterControl_new(). * * @return Number of entrys in the current list. * (equals the number of streams) * * \ingroup mc */ uint32_t OTF_MasterControl_getCount( OTF_MasterControl* mc ); /** * Returns the number of arguments in current reverse list. * * @param mc Pointer to an initialized OTF_Mastercontrol object. See also * OTF_MasterControl_new(). * * @return Number of entrys in the current reverse list. * (equals the number of processes) * * \ingroup mc */ uint32_t OTF_MasterControl_getrCount( OTF_MasterControl* mc ); /** * Returns the number of values for the given argument. * * @param mc Pointer to an initialized OTF_Mastercontrol object. See also * OTF_MasterControl_new(). * @param argument Represents the stream identifier. * * @return Number of values for the given argument, or * 0 if the argument is unknown. * * \ingroup mc */ uint32_t OTF_MasterControl_getValueCount( OTF_MasterControl* mc, uint32_t argument ); /** * Returns a pointer to the value array for 'argument'. Get size of list with * 'OTF_MasterControl_getValueCount()'. * * @param mc Pointer to an initialized OTF_Mastercontrol object. See also * OTF_MasterControl_new(). * @param argument Represents the stream identifier. * * @return Pointer to the value array for 'argument', or NULL if an * error occurs. * * \ingroup mc */ uint32_t* OTF_MasterControl_getValues( OTF_MasterControl* mc, uint32_t argument ); /** * Returns a previously unused argument. Of course, one cannot avoid * collisions with arguments explicitly defined later on. * * @param mc Pointer to an initialized OTF_Mastercontrol object. See also * OTF_MasterControl_new(). * * @return Unused argument. * * \ingroup mc */ uint32_t OTF_MasterControl_getNewStreamId( OTF_MasterControl* mc ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTF_MASTERCONTROL_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_inttypes_win.h0000644000000000000000000000013212544237152023657 xustar0030 mtime=1435582058.539899952 30 atime=1507797543.982893989 30 ctime=1508162366.229775995 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_inttypes_win.h0000644000175000017500000000127712544237152025055 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_inttypes_win.h * * @brief Deals with all data type related issues. * * \ingroup misc */ #ifndef OTF_INTTYPES_WIN_H #define OTF_INTTYPES_WIN_H /* needed by otf */ typedef unsigned char uint8_t; typedef signed int int32_t; typedef unsigned int uint32_t; typedef signed __int64 int64_t; typedef unsigned __int64 uint64_t; /* not needed by otf */ typedef signed char int8_t; typedef signed short int16_t; typedef unsigned short uint16_t; # define OTF_UINT64_MAX (uint64_t)-1 #endif /* OTF_INTTYPES_WIN_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_CopyHandler.c0000644000000000000000000000013012544237152023324 xustar0030 mtime=1435582058.531899952 30 atime=1508138854.139375065 28 ctime=1508162366.2057739 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_CopyHandler.c0000644000175000017500000005250512544237152024524 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "OTF_Platform.h" #include "OTF_CopyHandler.h" #include "OTF_Writer.h" /* *** Definition handlers *** ************************************* */ int OTF_CopyHandler_DefinitionComment( void* userData, uint32_t stream, const char* comment, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeDefinitionCommentKV( (OTF_Writer*)userData, stream, comment, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_DefTimerResolution( void* userData, uint32_t stream, uint64_t ticksPerSecond, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeDefTimerResolutionKV( (OTF_Writer*)userData, stream, ticksPerSecond, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_DefProcess( void* userData, uint32_t stream, uint32_t deftoken, const char* name, uint32_t parent, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeDefProcessKV( (OTF_Writer*)userData, stream, deftoken, name, parent, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_DefProcessGroup( void* userData, uint32_t stream, uint32_t deftoken, const char* name, uint32_t n, const uint32_t* procs, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeDefProcessGroupKV( (OTF_Writer*)userData, stream, deftoken, name, n, procs, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_DefAttributeList( void* userData, uint32_t stream, uint32_t attr_token, uint32_t num, OTF_ATTR_TYPE* array, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeDefAttributeListKV( (OTF_Writer*)userData, stream, attr_token, num, array, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_DefProcessOrGroupAttributes( void* userData, uint32_t stream, uint32_t proc_token, uint32_t attr_token, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeDefProcessOrGroupAttributesKV( (OTF_Writer*)userData, stream, proc_token, attr_token, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_DefFunction( void* userData, uint32_t stream, uint32_t deftoken, const char* name, uint32_t group, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeDefFunctionKV( (OTF_Writer*)userData, stream, deftoken, name, group, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_DefFunctionGroup( void* userData, uint32_t stream, uint32_t deftoken, const char* name, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeDefFunctionGroupKV( (OTF_Writer*)userData, stream, deftoken, name, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_DefCollectiveOperation( void* userData, uint32_t stream, uint32_t collOp, const char* name, uint32_t type, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeDefCollectiveOperationKV( (OTF_Writer*)userData, stream, collOp, name, type, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_DefCounter( void* userData, uint32_t stream, uint32_t deftoken, const char* name, uint32_t properties, uint32_t countergroup, const char* unit, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeDefCounterKV( (OTF_Writer*)userData, stream, deftoken, name, properties, countergroup, unit, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_DefCounterGroup( void* userData, uint32_t stream, uint32_t deftoken, const char* name, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeDefCounterGroupKV( (OTF_Writer*)userData, stream, deftoken, name, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_DefScl( void* userData, uint32_t stream, uint32_t deftoken, uint32_t sclfile, uint32_t sclline, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeDefSclKV( (OTF_Writer*)userData, stream, deftoken, sclfile, sclline, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_DefSclFile( void* userData, uint32_t stream, uint32_t deftoken, const char* filename, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeDefSclFileKV( (OTF_Writer*)userData, stream, deftoken, filename, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_DefUniqueId( void* userData, uint32_t stream, uint64_t uid ) { /* unique-id record is written implicitly */ return OTF_RETURN_OK; /* success */ } int OTF_CopyHandler_DefVersion( void* userData, uint32_t stream, uint8_t major, uint8_t minor, uint8_t sub, const char* string ) { /* version record is written implicitly */ return OTF_RETURN_OK; /* success */ } int OTF_CopyHandler_DefCreator( void* userData, uint32_t stream, const char* creator, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeDefCreatorKV( (OTF_Writer*)userData, stream, creator, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_DefFile( void* userData, uint32_t stream, uint32_t token, const char* name, uint32_t group, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeDefFileKV( (OTF_Writer*)userData, stream, token, name, group, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_DefFileGroup( void* userData, uint32_t stream, uint32_t token, const char* name, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeDefFileGroupKV( (OTF_Writer*)userData, stream, token, name, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_DefKeyValue( void* userData, uint32_t stream, uint32_t key, OTF_Type type, const char* name, const char *description, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeDefKeyValueKV( (OTF_Writer*)userData, stream, key, type, name, description, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_DefTimeRange( void* userData, uint32_t stream, uint64_t minTime, uint64_t maxTime, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeDefTimeRange( (OTF_Writer*)userData, stream, minTime, maxTime, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_DefCounterAssignments( void* userData, uint32_t stream, uint32_t counter, uint32_t number_of_members, const uint32_t* procs_or_groups, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeDefCounterAssignments( (OTF_Writer*)userData, stream, counter, number_of_members, procs_or_groups, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_DefProcessSubstitutes( void* userData, uint32_t stream, uint32_t representative, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeDefProcessSubstitutes( (OTF_Writer*)userData, stream, representative, numberOfProcs, procs, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_DefAuxSamplePoint( void* userData, uint32_t stream, uint64_t time, OTF_AuxSamplePointType type, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeDefAuxSamplePoint( (OTF_Writer*)userData, stream, time, type, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } /* *** Event handlers *** ****************************************** */ int OTF_CopyHandler_NoOp( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeNoOpKV( (OTF_Writer*)userData, time, process, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_EventComment( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeEventCommentKV( (OTF_Writer*)userData, time, process, comment, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_Counter( void* userData, uint64_t time, uint32_t process, uint32_t counter_token, uint64_t value, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeCounterKV( (OTF_Writer*)userData, time, process, counter_token, value, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_Enter( void* userData, uint64_t time, uint32_t statetoken, uint32_t cpuid, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeEnterKV( (OTF_Writer*)userData, time, statetoken, cpuid, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_CollectiveOperation( void* userData, uint64_t time, uint32_t process, uint32_t functionToken, uint32_t communicator, uint32_t rootprocess, uint32_t sent, uint32_t received, uint64_t duration, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeCollectiveOperationKV( (OTF_Writer*)userData, time, process, functionToken, communicator, rootprocess, sent, received, duration, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_BeginCollectiveOperation( void* userData, uint64_t time, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList* list ) { return (0 == OTF_Writer_writeBeginCollectiveOperationKV( (OTF_Writer*) userData, time, process, collOp, matchingId, procGroup, rootProc, sent, received, scltoken, list )) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_EndCollectiveOperation( void* userData, uint64_t time, uint32_t process, uint64_t matchingId, OTF_KeyValueList* list ) { return (0 == OTF_Writer_writeEndCollectiveOperationKV( (OTF_Writer*) userData, time, process, matchingId, list )) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_RecvMsg( void* userData, uint64_t time, uint32_t receiver, uint32_t sender, uint32_t communicator, uint32_t msgtype, uint32_t msglength, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeRecvMsgKV( (OTF_Writer*)userData, time, receiver, sender, communicator, msgtype, msglength, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_SendMsg( void* userData, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t communicator, uint32_t msgtype, uint32_t msglength, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeSendMsgKV( (OTF_Writer*)userData, time, sender, receiver, communicator, msgtype, msglength, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_Leave( void* userData, uint64_t time, uint32_t statetoken, uint32_t cpuid, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeLeaveKV( (OTF_Writer*)userData, time, statetoken, cpuid, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_BeginProcess( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeBeginProcessKV( (OTF_Writer*)userData, time, process, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_EndProcess( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeEndProcessKV( (OTF_Writer*)userData, time, process, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_FileOperation( void* userData, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeFileOperationKV( (OTF_Writer*)userData, time, fileid, process, handleid, operation, bytes, duration, source, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_BeginFileOperation( void* userData, uint64_t time, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList* list ) { return (0 == OTF_Writer_writeBeginFileOperationKV( (OTF_Writer*) userData, time, process, matchingId, scltoken, list )) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_EndFileOperation( void* userData, uint64_t time, uint32_t process, uint32_t fileid, uint64_t matchingId, uint64_t handleId, uint32_t operation, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ) { return (0 == OTF_Writer_writeEndFileOperationKV( (OTF_Writer*) userData, time, process, fileid, matchingId, handleId, operation, bytes, scltoken, list )) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_RMAPut( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeRMAPutKV( (OTF_Writer*)userData, time, process, origin, target, communicator, tag, bytes, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_RMAPutRemoteEnd( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeRMAPutRemoteEndKV( (OTF_Writer*)userData, time, process, origin, target, communicator, tag, bytes, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_RMAGet( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeRMAGetKV( (OTF_Writer*)userData, time, process, origin, target, communicator, tag, bytes, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_RMAEnd( void* userData, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeRMAEndKV( (OTF_Writer*)userData, time, process, remote, communicator, tag, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } /* *** snapshot handlers ********************************************** */ int OTF_CopyHandler_SnapshotComment( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeSnapshotCommentKV( (OTF_Writer*)userData, time, process, comment, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_EnterSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeEnterSnapshotKV( (OTF_Writer*)userData, time, originaltime, function, process, source, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_SendSnapshot( void *userData, uint64_t time, uint64_t originaltime, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeSendSnapshotKV( (OTF_Writer*)userData, time, originaltime, sender, receiver, procGroup, tag, length, source, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_OpenFileSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t source, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeOpenFileSnapshotKV( (OTF_Writer*)userData, time, originaltime, fileid, process, handleid, source, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_BeginCollopSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeBeginCollopSnapshotKV( (OTF_Writer*)userData, time, originaltime, process, collOp, matchingId, procGroup, rootProc, sent, received, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_BeginFileOpSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeBeginFileOpSnapshotKV( (OTF_Writer*)userData, time, originaltime, process, matchingId, scltoken, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_CollopCountSnapshot( void* userData, uint64_t time, uint32_t process, uint32_t communicator, uint64_t count, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeCollopCountSnapshot( (OTF_Writer*)userData, time, process, communicator, count, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_CounterSnapshot( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeCounterSnapshot( (OTF_Writer*)userData, time, originaltime, process, counter, value, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } /* *** summary handlers ********************************************** */ int OTF_CopyHandler_SummaryComment( void * userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeSummaryCommentKV( (OTF_Writer*)userData, time, process, comment, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_FunctionSummary( void* userData, uint64_t time, uint32_t function, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeFunctionSummaryKV( (OTF_Writer*)userData, time, function, process, count, excltime, incltime, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_FunctionGroupSummary( void* userData, uint64_t time, uint32_t functiongroup, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeFunctionGroupSummaryKV( (OTF_Writer*)userData, time, functiongroup, process, count, excltime, incltime, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_MessageSummary( void* userData, uint64_t time, uint32_t process, uint32_t peer, uint32_t comm, uint32_t type, uint64_t sentNumber, uint64_t receivedNumber, uint64_t sentBytes, uint64_t receivedBytes, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeMessageSummaryKV((OTF_Writer*) userData, time, process, peer, comm, type, sentNumber, receivedNumber, sentBytes, receivedBytes, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_CollopSummary( void *userData, uint64_t time, uint32_t process, uint32_t comm, uint32_t collective, uint64_t sentNumber, uint64_t receivedNumber, uint64_t sentBytes, uint64_t receivedBytes, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeCollopSummaryKV((OTF_Writer*) userData, time, process, comm, collective, sentNumber, receivedNumber, sentBytes, receivedBytes, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_FileOperationSummary( void* userData, uint64_t time, uint32_t fileid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeFileOperationSummaryKV( (OTF_Writer*) userData, time, fileid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_FileGroupOperationSummary( void* userData, uint64_t time, uint32_t groupid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeFileGroupOperationSummaryKV( (OTF_Writer*) userData, time, groupid, process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } int OTF_CopyHandler_DefMarker( void *userData, uint32_t stream, uint32_t token, const char* name, uint32_t type, OTF_KeyValueList* list ) { /* even if marker definitions could be read from many streams, they are written to stream 0 forcedly, because this is where all markers belong. */ stream= 0; return ( 0 == OTF_Writer_writeDefMarkerKV( (OTF_Writer*) userData, stream, token, name, type, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK;; } int OTF_CopyHandler_Marker( void *userData, uint64_t time, uint32_t process, uint32_t token, const char* text, OTF_KeyValueList* list ) { return ( 0 == OTF_Writer_writeMarkerKV( (OTF_Writer*) userData, time, process, token, text, list ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK; } eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_inttypes.h0000644000000000000000000000013212544237152023002 xustar0030 mtime=1435582058.539899952 30 atime=1508138853.663363177 30 ctime=1508162366.189772503 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_inttypes.h0000644000175000017500000000310612544237152024171 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_inttypes.h * * @brief Deals with all data type related issues. * * \ingroup misc */ #ifndef OTF_INTTYPES_H #define OTF_INTTYPES_H #if defined(_WIN32) /* windows */ # include "OTF_inttypes_win.h" #else /* unix */ # include "OTF_inttypes_unix.h" #endif #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** Converts unsigned integers of 8, 16, 32 or 64 bit length into OTF counter values. */ uint64_t OTF_Unsigned2Counter( uint64_t value ); /** Converts OTF counter values to unsigned integers of 8, 16, 32 or 64 bit length. */ uint64_t OTF_Counter2Unsigned( uint64_t value ); /** Converts signed integers of 8, 16, 32 or 64 bit length to OTF counter values. */ uint64_t OTF_Signed2Counter( int64_t value ); /** Converts OTF counter values to signed integers of 8, 16, 32 or 64 bit length. */ int64_t OTF_Counter2Signed( uint64_t value ); /** Converts single precision floating point variables to OTF counter values. */ uint64_t OTF_Float2Counter( float value ); /** Converts OTF counter values to single precision floating point values. */ float OTF_Counter2Float( uint64_t value ); /** Converts double precision floating point values to OTF counter values. */ uint64_t OTF_Double2Counter( double value ); /** Converts OTF counter values to double precision floating point values. */ double OTF_Counter2Double( uint64_t value ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTF_INTTYPES_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212544237152022276 xustar0030 mtime=1435582058.531899952 30 atime=1508162197.628233058 30 ctime=1508162366.177771456 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/Makefile.am0000644000175000017500000000251112544237152023464 0ustar00trahaytrahay00000000000000AM_CPPFLAGS = $(ZLIB_INCLUDE_LINE) $(ZOIDFS_INCLUDE_LINE) include_HEADERS = otf.h \ OTF_CopyHandler.h \ OTF_CopyHandler_stream.h \ OTF_Definitions.h \ OTF_Errno.h \ OTF_File.h \ OTF_File_iofsl.h \ OTF_FileManager.h \ OTF_Filenames.h \ OTF_HandlerArray.h \ OTF_inttypes.h \ OTF_KeyValue.h \ OTF_MasterControl.h \ OTF_RBuffer.h \ OTF_RStream.h \ OTF_Reader.h \ OTF_WBuffer.h \ OTF_WStream.h \ OTF_Writer.h nodist_include_HEADERS = \ OTF_inttypes_unix.h \ OTF_Version.h noinst_HEADERS = OTF_Handler.h \ OTF_Keywords.h \ OTF_Parse.h \ OTF_Platform.h \ OTF_Platform_unix.h lib_LTLIBRARIES = libopen-trace-format.la libopen_trace_format_la_CFLAGS = -prefer-pic libopen_trace_format_la_LDFLAGS = -version-info @OTF_VERSION_LIBRARY@ libopen_trace_format_la_LIBADD = $(ZLIB_LIB_LINE) $(ZOIDFS_LIB_LINE) libopen_trace_format_la_SOURCES = \ OTF_CopyHandler.c \ OTF_CopyHandler_stream.c \ OTF_Errno.c \ OTF_File.c \ OTF_File_iofsl.c \ OTF_FileManager.c \ OTF_Filenames.c \ OTF_HandlerArray.c \ OTF_KeyValue.c \ OTF_MasterControl.c \ OTF_Parse.c \ OTF_Platform.c \ OTF_RBuffer.c \ OTF_Reader.c \ OTF_RStream.c \ OTF_WBuffer.c \ OTF_Writer.c \ OTF_WStream.c \ OTF_inttypes.c EXTRA_DIST = \ OTF_Platform_win.h \ OTF_inttypes_win.h \ libotf_vs08.vcproj .PHONY: doc doc: doxygen eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_HandlerArray.h0000644000000000000000000000013212544237152023477 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.271378362 30 ctime=1508162366.189772503 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_HandlerArray.h0000644000175000017500000007723212544237152024701 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_HandlerArray.h * * @brief Provides read access to OTF traces which consist of multiple * streams. * * \ingroup handler * \ingroup ha */ /** \defgroup handler Handler Interface * * In the following, the handler interfaces for all record types are * specified. The signature of callback handler functions is equal to the * signature of corresponding record write functions except for the first * argument. The first argument common to all callback handler functions is * \em userData -- a generic pointer to custom user data. The second common * argument to all callback hander functions is \em stream which identifies the * stream where the definition occurred. A stream parameter = 0 indicates a * global definition which is the default. */ /** * \defgroup ha Handler Array Interface * * Using this interface you can setup a handler array for reading traces. * */ #ifndef OTF_HANDLERARRAY_H #define OTF_HANDLERARRAY_H #include "OTF_Writer.h" #include "OTF_WStream.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** Generic function pointer for OTF record handlers. \ingroup ha*/ typedef int (OTF_FunctionPointer) ( void *userData ); /** Object structure which holds OTF record handlers. */ struct struct_OTF_HandlerArray { /** Array of function pointer. */ OTF_FunctionPointer** pointer; /** Array of first handler arguments. */ void** firsthandlerarg; }; /** Object type which holds OTF record handlers. \ingroup ha */ typedef struct struct_OTF_HandlerArray OTF_HandlerArray; /** Open a new array of handlers. \ingroup ha */ OTF_HandlerArray* OTF_HandlerArray_open( void ); /** Close and delete a OTF_HandlerArray object. \ingroup ha */ int OTF_HandlerArray_close( OTF_HandlerArray* handlers ); /** Assign the function pointer to your own handler of the given record type. \ingroup ha */ int OTF_HandlerArray_setHandler( OTF_HandlerArray* handlers, OTF_FunctionPointer* pointer, uint32_t recordtype ); /** Assign the first argument to your own handler of the given record type. \ingroup ha */ int OTF_HandlerArray_setFirstHandlerArg( OTF_HandlerArray* handlers, void* firsthandlerarg, uint32_t recordtype ); /** Provide copy handlers to every record type. \ingroup ha */ int OTF_HandlerArray_getCopyHandler( OTF_HandlerArray* handlers, OTF_Writer* writer ); /** Provide copy handlers to every record type for OTF streams. \ingroup ha */ int OTF_HandlerArray_getCopyHandler_stream( OTF_HandlerArray* handlers, OTF_WStream* writer ); /* typdefs for OTF definition records *************************** */ /** @cond typedef */ /** the following lines are ignored by doxygen */ /* - the following part is also used to create the python wrapper automatically - respect these rules to avoid problems while generating: - write the definition macro as a comment (with a '#' placed in front) one line above the typedef itself - the use of the following datatypes is possible: char, uint8_t, uint32_t, uint64_t - the first parameter must be a "void*" pointer - to use pointer as parameter is very critical and requires some additional rules: - pointer of type "char*" are allowed anytime - pointer of type "uint32_t*" are allowed but the previous parameter must be of type "uint32_t" and contain the number of elements that are in the array the pointer references to - pointer of type "void*" are allowed as the first parameter only - if you have to add a record that breaks one of the above-mentioned rules the generation will skip this record and you manually have to update the python wrapper ( see otflib_py/README_python for further information ) - check and test the new record with the python interface to avoid bugs caused by the automatic generation do not remove the following line, because it is necessary to generate the python wrapper #START_GEN_PYWRAPPER */ /* # OTF_DEFINITIONCOMMENT_RECORD */ typedef int (OTF_Handler_DefinitionComment) ( void* userData, uint32_t stream, const char* comment, OTF_KeyValueList *list ); /* # OTF_DEFTIMERRESOLUTION_RECORD */ typedef int (OTF_Handler_DefTimerResolution) ( void* userData, uint32_t stream, uint64_t ticksPerSecond, OTF_KeyValueList *list ); /* # OTF_DEFPROCESS_RECORD */ typedef int (OTF_Handler_DefProcess) ( void* userData, uint32_t stream, uint32_t process, const char* name, uint32_t parent, OTF_KeyValueList *list ); /* # OTF_DEFPROCESSGROUP_RECORD */ typedef int (OTF_Handler_DefProcessGroup) ( void* userData, uint32_t stream, uint32_t procGroup, const char* name, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList *list ); /* # OTF_DEFATTRLIST_RECORD */ typedef int (OTF_Handler_DefAttributeList) ( void* userData, uint32_t stream, uint32_t attr_token, uint32_t num, OTF_ATTR_TYPE* array, OTF_KeyValueList *list ); /* # OTF_DEFPROCESSORGROUPATTR_RECORD */ typedef int (OTF_Handler_DefProcessOrGroupAttributes) ( void* userData, uint32_t stream, uint32_t proc_token, uint32_t attr_token, OTF_KeyValueList *list ); /* # OTF_DEFFUNCTION_RECORD */ typedef int (OTF_Handler_DefFunction) ( void* userData, uint32_t stream, uint32_t func, const char* name, uint32_t funcGroup, uint32_t source, OTF_KeyValueList *list ); /* # OTF_DEFFUNCTIONGROUP_RECORD */ typedef int (OTF_Handler_DefFunctionGroup) ( void* userData, uint32_t stream, uint32_t funcGroup, const char* name, OTF_KeyValueList *list ); /* # OTF_DEFCOLLOP_RECORD */ typedef int (OTF_Handler_DefCollectiveOperation) ( void* userData, uint32_t stream, uint32_t collOp, const char* name, uint32_t type, OTF_KeyValueList *list ); /* # OTF_DEFCOUNTER_RECORD */ typedef int (OTF_Handler_DefCounter) ( void* userData, uint32_t stream, uint32_t counter, const char* name, uint32_t properties, uint32_t counterGroup, const char* unit, OTF_KeyValueList *list ); /* # OTF_DEFCOUNTERGROUP_RECORD */ typedef int (OTF_Handler_DefCounterGroup) ( void* userData, uint32_t stream, uint32_t counterGroup, const char* name, OTF_KeyValueList *list ); /* # OTF_DEFSCL_RECORD */ typedef int (OTF_Handler_DefScl) ( void* userData, uint32_t stream, uint32_t source, uint32_t sourceFile, uint32_t line, OTF_KeyValueList *list ); /* # OTF_DEFSCLFILE_RECORD */ typedef int (OTF_Handler_DefSclFile) ( void* userData, uint32_t stream, uint32_t sourceFile, const char* name, OTF_KeyValueList *list ); /* # OTF_DEFCREATOR_RECORD */ typedef int (OTF_Handler_DefCreator) ( void* userData, uint32_t stream, const char* creator, OTF_KeyValueList *list ); /* # OTF_DEFUNIQUEID_RECORD */ typedef int (OTF_Handler_DefUniqueId) ( void* userData, uint32_t stream, uint64_t uid, OTF_KeyValueList *list ); /* # OTF_DEFVERSION_RECORD */ typedef int (OTF_Handler_DefVersion) ( void* userData, uint32_t stream, uint8_t major, uint8_t minor, uint8_t sub, const char* string, OTF_KeyValueList *list ); /* # OTF_DEFFILE_RECORD */ typedef int (OTF_Handler_DefFile) ( void* userData, uint32_t stream, uint32_t token, const char *name, uint32_t group, OTF_KeyValueList *list ); /* # OTF_DEFFILEGROUP_RECORD */ typedef int (OTF_Handler_DefFileGroup) ( void* userData, uint32_t stream, uint32_t token, const char *name, OTF_KeyValueList *list ); /* # OTF_DEFKEYVALUE_RECORD */ typedef int (OTF_Handler_DefKeyValue) ( void* userData, uint32_t stream, uint32_t key, OTF_Type type, const char *name, const char *description, OTF_KeyValueList *list ); /* # OTF_DEFTIMERANGE_RECORD */ typedef int (OTF_Handler_DefTimeRange) ( void* userData, uint32_t stream, uint64_t minTime, uint64_t maxTime, OTF_KeyValueList* list ); /* # OTF_DEFCOUNTERASSIGNMENTS_RECORD */ typedef int (OTF_Handler_DefCounterAssignments) ( void* userData, uint32_t stream, uint32_t counter, uint32_t number_of_members, const uint32_t* procs_or_groups, OTF_KeyValueList* list ); /* # OTF_DEFPROCESSSUBSTITUTES_RECORD */ typedef int (OTF_Handler_DefProcessSubstitutes) ( void* userData, uint32_t stream, uint32_t representative, uint32_t numberOfProcs, const uint32_t* procs, OTF_KeyValueList* list ); /* # OTF_DEFAUXSAMPLEPOINT_RECORD */ typedef int (OTF_Handler_DefAuxSamplePoint) ( void* userData, uint32_t stream, uint64_t time, OTF_AuxSamplePointType type, OTF_KeyValueList* list ); /* typedefs for OTF event records ****************************************** */ /* # OTF_NOOP_RECORD */ typedef int (OTF_Handler_NoOp) ( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList *list ); /* # OTF_ENTER_RECORD */ typedef int (OTF_Handler_Enter) ( void* userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList *list ); /* # OTF_LEAVE_RECORD */ typedef int (OTF_Handler_Leave) ( void* userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList *list ); /* # OTF_SEND_RECORD */ typedef int (OTF_Handler_SendMsg) ( void* userData, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t group, uint32_t type, uint32_t length, uint32_t source, OTF_KeyValueList *list ); /* # OTF_RECEIVE_RECORD */ typedef int (OTF_Handler_RecvMsg) ( void* userData, uint64_t time, uint32_t recvProc, uint32_t sendProc, uint32_t group, uint32_t type, uint32_t length, uint32_t source, OTF_KeyValueList *list ); /* # OTF_COUNTER_RECORD */ typedef int (OTF_Handler_Counter) ( void* userData, uint64_t time, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList *list ); /* # OTF_COLLOP_RECORD */ typedef int (OTF_Handler_CollectiveOperation) ( void* userData, uint64_t time, uint32_t process, uint32_t collective, uint32_t procGroup, uint32_t rootProc, uint32_t sent, uint32_t received, uint64_t duration, uint32_t source, OTF_KeyValueList *list ); /* # OTF_BEGINCOLLOP_RECORD */ typedef int (OTF_Handler_BeginCollectiveOperation) ( void* userData, uint64_t time, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList *list ); /* # OTF_ENDCOLLOP_RECORD */ typedef int (OTF_Handler_EndCollectiveOperation) ( void* userData, uint64_t time, uint32_t process, uint64_t matchingId, OTF_KeyValueList *list ); /* # OTF_EVENTCOMMENT_RECORD */ typedef int (OTF_Handler_EventComment) ( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList *list ); /* # OTF_BEGINPROCESS_RECORD */ typedef int (OTF_Handler_BeginProcess) ( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList *list ); /* # OTF_ENDPROCESS_RECORD */ typedef int (OTF_Handler_EndProcess) ( void* userData, uint64_t time, uint32_t process, OTF_KeyValueList *list ); /* # OTF_FILEOPERATION_RECORD */ typedef int (OTF_Handler_FileOperation) ( void* userData, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source, OTF_KeyValueList *list ); /* # OTF_BEGINFILEOP_RECORD */ typedef int (OTF_Handler_BeginFileOperation) ( void* userData, uint64_t time, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList *list ); /* # OTF_ENDFILEOP_RECORD */ typedef int (OTF_Handler_EndFileOperation) ( void* userData, uint64_t time, uint32_t process, uint32_t fileid, uint64_t matchingId, uint64_t handleId, uint32_t operation, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList *list ); /* # OTF_RMAPUT_RECORD */ typedef int (OTF_Handler_RMAPut) ( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t source, OTF_KeyValueList *list ); /* # OTF_RMAPUTRE_RECORD */ typedef int (OTF_Handler_RMAPutRemoteEnd) ( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t source, OTF_KeyValueList *list ); /* # OTF_RMAGET_RECORD */ typedef int (OTF_Handler_RMAGet) ( void* userData, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t source, OTF_KeyValueList *list ); /* # OTF_RMAEND_RECORD */ typedef int (OTF_Handler_RMAEnd) ( void* userData, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t source, OTF_KeyValueList *list ); /* typedefs for OTF snapshot records *************************************** */ /* # OTF_SNAPSHOTCOMMENT_RECORD */ typedef int (OTF_Handler_SnapshotComment) ( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList *list ); /* # OTF_ENTERSNAPSHOT_RECORD */ typedef int (OTF_Handler_EnterSnapshot) ( void *userData, uint64_t time, uint64_t originaltime, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList *list ); /* # OTF_SENDSNAPSHOT_RECORD */ typedef int (OTF_Handler_SendSnapshot) ( void *userData, uint64_t time, uint64_t originaltime, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source, OTF_KeyValueList *list ); /* # OTF_OPENFILESNAPSHOT_RECORD */ typedef int (OTF_Handler_OpenFileSnapshot) ( void* userData, uint64_t time, uint64_t originaltime, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t source, OTF_KeyValueList *list ); /* # OTF_BEGINCOLLOPSNAPSHOT_RECORD */ typedef int (OTF_Handler_BeginCollopSnapshot) ( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList *list ); /* # OTF_BEGINFILEOPSNAPSHOT_RECORD */ typedef int (OTF_Handler_BeginFileOpSnapshot) ( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList *list ); /* # OTF_COLLOPCOUNTSNAPSHOT_RECORD */ typedef int (OTF_Handler_CollopCountSnapshot) ( void* userData, uint64_t time, uint32_t process, uint32_t communicator, uint64_t count, OTF_KeyValueList *list ); /* # OTF_COUNTERSNAPSHOT_RECORD */ typedef int (OTF_Handler_CounterSnapshot) ( void* userData, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList *list ); /* typedefs for OTF summary records **************************************** */ /* # OTF_SUMMARYCOMMENT_RECORD */ typedef int (OTF_Handler_SummaryComment) ( void* userData, uint64_t time, uint32_t process, const char* comment, OTF_KeyValueList *list ); /* # OTF_FUNCTIONSUMMARY_RECORD */ typedef int (OTF_Handler_FunctionSummary) ( void* userData, uint64_t time, uint32_t function, uint32_t process, uint64_t invocations, uint64_t exclTime, uint64_t inclTime, OTF_KeyValueList *list ); /* # OTF_FUNCTIONGROUPSUMMARY_RECORD */ typedef int (OTF_Handler_FunctionGroupSummary) ( void* userData, uint64_t time, uint32_t funcGroup, uint32_t process, uint64_t invocations, uint64_t exclTime, uint64_t inclTime, OTF_KeyValueList *list ); /* # OTF_MESSAGESUMMARY_RECORD */ typedef int (OTF_Handler_MessageSummary) ( void* userData, uint64_t time, uint32_t process, uint32_t peer, uint32_t comm, uint32_t type, uint64_t sentNumber, uint64_t receivedNumber, uint64_t sentBytes, uint64_t receivedBytes, OTF_KeyValueList *list ); /* # OTF_COLLOPSUMMARY_RECORD */ typedef int (OTF_Handler_CollopSummary) ( void *userData, uint64_t time, uint32_t process, uint32_t comm, uint32_t collective, uint64_t sentNumber, uint64_t receivedNumber, uint64_t sentBytes, uint64_t receivedBytes, OTF_KeyValueList *list ); /* # OTF_FILEOPERATIONSUMMARY_RECORD */ typedef int (OTF_Handler_FileOperationSummary) ( void* userData, uint64_t time, uint32_t fileid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList *list ); /* # OTF_FILEGROUPOPERATIONSUMMARY_RECORD */ typedef int (OTF_Handler_FileGroupOperationSummary) ( void* userData, uint64_t time, uint32_t groupid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList *list ); /* # OTF_UNKNOWN_RECORD */ typedef int (OTF_Handler_UnknownRecord) ( void *userData, uint64_t time, uint32_t process, const char *record ); /* typedefs for OTF marker records **************************************** */ /* # OTF_DEFMARKER_RECORD */ typedef int (OTF_Handler_DefMarker) ( void *userData, uint32_t stream, uint32_t token, const char* name, uint32_t type, OTF_KeyValueList *list ); /* # OTF_MARKER_RECORD */ typedef int (OTF_Handler_Marker) ( void *userData, uint64_t time, uint32_t process, uint32_t token, const char* text, OTF_KeyValueList *list ); /** @endcond */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTF_HANDLERARRAY_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_File_iofsl.c0000644000000000000000000000013212544237152023171 xustar0030 mtime=1435582058.531899952 30 atime=1508138854.187376264 30 ctime=1508162366.209774249 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_File_iofsl.c0000644000175000017500000014215312544237152024366 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Joseph Schuchart, Thomas Ilsche strongly based on OTF_File.c by Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch also: patches by Rainer Keller, thanks a lot! */ /* * General notes about this file: * IOFSL in this context means the support for writing OTF through * an I/O forwarding capability. * This also includes the use of so called 'multifiles' * meaning that data from multiple OTF_File 'streams' is aggregated * into a single physical file (by the use of the forwarding network's * atomic append capability. * Multifiles also use index files that contain information which * stream has a data chunk at which position in the single multifile * multifile split means that each one of a set of forwarding servers * uses one physical file * N OTF_Files, M forwarding servers and F files, * with N >> M and F = M * no multifile split, means F = 1 * ZOIDS is the library to WRITE data using the IOFSL architecture, * no ZOIDFS support means we cannot writ data, but we can still use * the general IOFSL features to READ data using posix * (and we correctly use the index files etc.) * NOTE: Mixing Externalbuffer and IOFSL is not supported * (It does not make sense, does it?) */ #define IOFSL_INDEX_FMT "%s:%llu:%llu\n" #define IOFSL_INDEX_SCAN_FMT "%[^:]:%lu:%lu" #define IOFSL_INDEX_SKIPCHARS "%*[ \n]" #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "OTF_Platform.h" #include "OTF_inttypes.h" #include "OTF_File_iofsl.h" #include #include #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_STAT_H #include #endif #ifdef HAVE_FCNTL_H #include #if !(defined(HAVE_DECL_O_NOATIME) && HAVE_DECL_O_NOATIME) #define O_NOATIME 0 #endif #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_IO_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_CTYPE_H #include #endif /* vs does not know F_OK*/ #ifndef F_OK #define F_OK 00 #endif #ifdef HAVE_ZLIB #include #endif /* HAVE_ZLIB */ #ifdef HAVE_ZOIDFS #include #include #endif #include "OTF_File.h" #include "OTF_Platform.h" #include "OTF_Definitions.h" #include "OTF_Errno.h" typedef struct struct_IndexEntry { uint64_t offset; uint64_t length; } IndexEntry; struct struct_OTF_File_iofsl { /** are we working with zoidfs? */ uint32_t flags; OTF_IofslMode mode; #ifdef HAVE_ZOIDFS /** the zoidfs filehandle **/ zoidfs_handle_t* zoidfs_fh; /** the hint for use with atomic append */ zoidfs_op_hint_t* zoidfs_hint; /** the zoidfs filehandle of the index file **/ zoidfs_handle_t* zoidfs_index_fh; /* the server to use for this file */ char* zoidfs_server; #endif /* HAVE_ZOIDFS */ uint32_t server_num; /* right now this is borrowed from the FileManager rather than a copy */ char** server_list; int server_id; /* the ID of the stream -- possibly computed from the filename */ uint32_t id; uint32_t streamid_bits; /** File handle for index file, used for reading **/ FILE* indexfile; /** the id of the stream - not encoded in filename anymore **/ char* id_str; char* multifile_name; char* indexfile_name; /** how many bytes are left in the current chunk? **/ size_t data_left; /** * A buffer for the index file * The buffer contains offset and length for each index entry */ IndexEntry* index_buffer; /* The next index that will be read, not the current one */ uint32_t index_buffer_pos; /* size in number of IndexEntrys, not bytes! */ uint32_t index_buffer_length; /** the current position in the zoidfs file */ size_t pos; }; static int OTF_File_iofsl_prepareFilename( OTF_File *file ); static int OTF_File_iofsl_findIndexEntry( FILE* index, const char* id_str, off_t* index_entry_len, uint64_t *offset, uint64_t *length, uint8_t rewind ); static int OTF_File_iofsl_getIndexEntries( OTF_File* file ); static void OTF_File_iofsl_assignServer( OTF_File* file ); #ifdef HAVE_ZOIDFS static void OTF_File_iofsl_checkServer( OTF_File* file ); static int OTF_File_iofsl_flushIndexBuffer( OTF_File* file ); static int OTF_File_iofsl_resetHint( OTF_File* file ); uint8_t zoidfs_initialized = 0; static const char* zoidfs_server_env = "ZOIDFS_ION_NAME"; #endif int OTF_File_iofsl_init( OTF_File* file ) { file->filename = NULL; file->file = NULL; #ifdef HAVE_ZLIB file->z = NULL; file->zbuffer = NULL; file->zbuffersize = OTF_ZBUFFER_DEFAULTSIZE; #endif /* HAVE_ZLIB */ file->pos = 0; file->mode = OTF_FILEMODE_NOTHING; file->manager = NULL; file->externalbuffer = NULL; file->externalpos = 0; file->externallen = 0; file->iofsl = (OTF_File_iofsl*) malloc( sizeof(OTF_File_iofsl) ); if ( NULL == file->iofsl ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return -1; } file->iofsl->flags = 0; file->iofsl->mode = OTF_IOFSL_DISABLED; file->iofsl->server_num = 0; file->iofsl->server_list = NULL; file->iofsl->server_id = -1; file->iofsl->id = 0; file->iofsl->streamid_bits = 0; file->iofsl->indexfile = NULL; file->iofsl->id_str = NULL; file->iofsl->multifile_name = NULL; file->iofsl->indexfile_name = NULL; file->iofsl->data_left = 0; file->iofsl->index_buffer = NULL; file->iofsl->index_buffer_pos = 0; file->iofsl->index_buffer_length = OTF_IOFSL_INDEX_BUFFER_DEFAULTLENGTH; file->iofsl->pos = 0; #ifdef HAVE_ZOIDFS file->iofsl->zoidfs_fh = NULL; file->iofsl->zoidfs_hint = NULL; file->iofsl->zoidfs_index_fh = NULL; file->iofsl->zoidfs_server = NULL; #endif /* HAVE_ZOIDFS */ return 0; } void OTF_File_iofsl_finalize( OTF_File* file ) { assert( file->file == NULL ); #ifdef HAVE_ZLIB if ( file->z != NULL ) { free( file->z ); file->z = NULL; } if (file->zbuffer != NULL) { free( file->zbuffer ); file->zbuffer = NULL; } #endif /* HAVE_ZLIB */ file->pos = 0; file->manager = NULL; file->externalbuffer = NULL; file->externalpos = 0; file->externallen = 0; if ( file->iofsl ) { if ( file->iofsl->index_buffer != NULL ) { free( file->iofsl->index_buffer ); file->iofsl->index_buffer = NULL; } #ifdef HAVE_ZOIDFS /* is just a pointer copied from an outside list of charpointers * We are not responsible if ( file->iofsl->zoidf_sserver != NULL) { free(file->iofsl->zoidfs_server); file->iofsl->zoidfs_server = NULL; } */ if ( file->iofsl->zoidfs_hint != NULL && file->mode == OTF_FILEMODE_WRITE) { /* the hint must be present in order to write the buffer it gets initialized before the files are opened */ int ret = OTF_File_iofsl_resetHint( file ); if( ret != ZFS_OK ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n" "could not reset zoidfs hint (%d) ", __FUNCTION__, __FILE__, __LINE__, ret ); } if ( file->iofsl->zoidfs_fh != NULL ) { zoidfs_commit( file->iofsl->zoidfs_fh, file->iofsl->zoidfs_hint ); free( file->iofsl->zoidfs_fh ); file->iofsl->zoidfs_fh = NULL; } if ( file->iofsl->zoidfs_index_fh != NULL ) { zoidfs_commit(file->iofsl->zoidfs_index_fh, file->iofsl->zoidfs_hint); free(file->iofsl->zoidfs_index_fh); file->iofsl->zoidfs_index_fh = NULL; } zoidfs_hint_free( file->iofsl->zoidfs_hint ); free( file->iofsl->zoidfs_hint ); file->iofsl->zoidfs_hint = NULL; } #endif /* HAVE_ZOIDFS */ if ( file->iofsl->indexfile != NULL ) { fclose( file->iofsl->indexfile ); file->iofsl->indexfile = NULL; } if ( file->iofsl->id_str != NULL ) { free( file->iofsl->id_str ); file->iofsl->id_str = NULL; } if ( file->iofsl->multifile_name != NULL ) { free( file->iofsl->multifile_name ); file->iofsl->multifile_name = NULL; } if ( file->iofsl->indexfile_name != NULL ) { free( file->iofsl->indexfile_name ); file->iofsl->indexfile_name = NULL; } free( file->iofsl ); } file->mode = OTF_FILEMODE_NOTHING; if ( file->filename != NULL ) { free( file->filename ); file->filename = NULL; } free( file ); } void OTF_File_iofsl_finalizeGlobal( void ) { #ifdef HAVE_ZOIDFS if ( zoidfs_initialized ) { zoidfs_initialized= 0; zoidfs_finalize(); } #endif } static int OTF_File_iofsl_findIndexEntry( FILE* index, const char* id_str, off_t* index_entry_len, uint64_t *offset, uint64_t *length, uint8_t rewind ) { uint8_t found = 0; do { int ret; long unsigned off; long unsigned len; char tmp_str[100]; off_t index_start_pos; off_t index_end_pos; /* skip \n and \0 */ ret = fscanf( index, IOFSL_INDEX_SKIPCHARS ); if ( rewind || index_entry_len != NULL ) index_start_pos = ftello( index ); ret = fscanf( index, IOFSL_INDEX_SCAN_FMT, tmp_str, &off, &len ); if ( ret == EOF ) { break; } else if ( ret != 3 ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n" "Failed to parse index entry at position %li\n", __FUNCTION__, __FILE__, __LINE__, ftello( index ) ); break; } if ( index_entry_len != NULL ) index_end_pos = ftello( index ); if ( strcmp( tmp_str, id_str ) == 0 ) { found = 1; if ( rewind ) { /* seek back to the beginning of the entry */fseeko( index, index_start_pos, SEEK_SET ); } if ( index_entry_len != NULL ) *index_entry_len = index_end_pos - index_start_pos; if ( offset != NULL ) *offset = off; if ( length != NULL ) *length = len; } } while ( !found ); if ( found ) return 0; else return -1; } static int OTF_File_iofsl_getIndexEntries( OTF_File* file ) { OTF_File_iofsl *iofsl; size_t pos; if ( file == NULL || file->iofsl == NULL ) return -1; /* tilsche: Do we really need to be THIS graceful? */ iofsl = file->iofsl; if ( iofsl->id_str == NULL ) return 0; /* there are no indices to read */ if ( iofsl->indexfile == NULL ) return -1; /* if there are indices there has to be a buffer */ pos = iofsl->index_buffer_pos; rewind( iofsl->indexfile ); do { IndexEntry* entry; int ret; /* reallocate the entry buffer if necessary */ if ( pos >= iofsl->index_buffer_length ) { IndexEntry* tmp = (IndexEntry*) realloc( iofsl->index_buffer, sizeof(IndexEntry) * ( iofsl->index_buffer_length + OTF_IOFSL_INDEX_BUFFER_DEFAULTLENGTH ) ); if ( tmp == NULL ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n" "Failed to allocate %lu bytes of memory!", __FUNCTION__, __FILE__, __LINE__, sizeof(IndexEntry) * ( iofsl->index_buffer_length + OTF_IOFSL_INDEX_BUFFER_DEFAULTLENGTH ) ); return -1; } iofsl->index_buffer = tmp; iofsl->index_buffer_length += OTF_IOFSL_INDEX_BUFFER_DEFAULTLENGTH; } entry = &( iofsl->index_buffer[pos] ); ret = OTF_File_iofsl_findIndexEntry( iofsl->indexfile, iofsl->id_str, NULL, &( entry->offset ), &( entry->length ), 0 ); if ( ret == -1 ) { /* thats it, nothing more to read */ entry->offset = 0; entry->length = 0; break; } pos++; } while ( 1 ); if ( pos == 0 ) { /* this gives false warnings for defintion files of unified traces * we cannot separate between errors and just not existing files anymore OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n" "Did not find any index entries for file %s in index file %s with ID %s!\n" "Maybe the file does not contain this stream?\n", __FUNCTION__, __FILE__, __LINE__,\ file->filename, iofsl->indexfile_name, iofsl->id_str ); */ return -1; } return 0; } /** * OTF_File_write and * OTF_File_read * have no iofsl counterpart. The IOFSL specifics are handled in * OTF_File_[iofsl_](read|write)_internal */ int OTF_File_iofsl_seek( OTF_File* file, uint64_t pos ) { int ret = 0; #ifdef HAVE_ZLIB int sync; uint64_t read; #endif /* HAVE_ZLIB */ OTF_File_iofsl *iofsl; size_t size_sum; off_t real_pos; iofsl = file->iofsl; if ( OTF_FILEMODE_WRITE == file->mode ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "current file->mode is OTF_FILEMODE_WRITE. seeking forbidden.\n", __FUNCTION__, __FILE__, __LINE__ ); return -1; } if ( 0 == OTF_File_iofsl_revive( file, OTF_FILEMODE_SEEK ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_File_revive() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return -1; } if ( iofsl->index_buffer == NULL ) { OTF_Error( "ERROR missing index buffer for seeking. "); return -1; } size_sum = 0; real_pos = 0; iofsl->index_buffer_pos = 0; while (1) { IndexEntry* entry = &(iofsl->index_buffer[iofsl->index_buffer_pos]); iofsl->index_buffer_pos++; if ( entry->length > 0 ) { /* requested position is behind this chunk */ if ( pos >= ( entry->length + size_sum ) ) { size_sum += entry->length; continue; } /* requested position is in this chunk */ if ( pos >= size_sum && pos < ( size_sum + entry->length ) ) { real_pos = entry->offset + (pos - size_sum); iofsl->data_left = entry->length - (pos - size_sum); break; } /* something went wrong */ OTF_Error( "ERROR: OTF_File_seek: Failed to seek to position %lu\n", pos); return -1; } else { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Some index entries seem to be missing in index buffer " "for file %s in %s with ID %s while seeking to position %lu!\n", __FUNCTION__, __FILE__, __LINE__, file->filename, iofsl->indexfile_name, iofsl->id_str, pos); return -1; } } if ( real_pos == 0 && pos != 0 ) { OTF_Error( "ERROR: Seek in file '%s' / '%s' requested to position " "%lu but there are only %lu bytes available!\n", file->filename, iofsl->multifile_name, pos, size_sum); return -1; } ret = fseeko(file->file, real_pos, SEEK_SET); #ifdef HAVE_ZLIB if ( NULL != file->z && 0 == ret ) { do { read = OTF_File_iofsl_read_internal( file, file->zbuffer, file->zbuffersize ); OTF_FILE_Z(file)->next_in = file->zbuffer; OTF_FILE_Z(file)->avail_in = (uInt) read; OTF_FILE_Z(file)->total_in = 0; /* re-initialize z object */ inflateReset(OTF_FILE_Z(file)); /* do not sync at very beginning of compressed stream because it would skip the first block */ sync = Z_OK; if ( 0 != pos ) { sync = inflateSync( OTF_FILE_Z(file) ); } if ( Z_OK == sync ) { return ret; } if ( Z_BUF_ERROR == sync ) { continue; } if ( Z_DATA_ERROR == sync ) { /* do not emit a warning, this happens with larger zbuffers */ /* --> Chunks written were larger than the chunk we read here * so zlib cannot find a valid flush point in this chunk * --> Try the next chunk */ continue; } if ( Z_STREAM_ERROR == sync ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Z_STREAM_ERROR.\n", __FUNCTION__, __FILE__, __LINE__ ); return -1; } } while (1); } #endif /* HAVE_ZLIB */ return ret; } uint64_t OTF_File_iofsl_tell( OTF_File* file ) { if ( file->mode != OTF_FILEMODE_READ ) { return file->iofsl->pos; } else if ( file->mode == OTF_FILEMODE_READ ) { if ( file->iofsl->index_buffer != NULL ) { off_t cur_data_pos = ftello( file->file ); size_t pos = 0; size_t index_pos = 0; while ( 1 ) { IndexEntry* entry = &( file->iofsl->index_buffer[index_pos] ); index_pos++; if ( entry->length > 0 ) { /* Think carefully about it before changing the comparisons! */ /* current position is behind this chunk */ if ( (size_t)cur_data_pos > ( entry->offset + entry->length ) ) { pos += entry->length; continue; } /* current position is in this chunk */ if ( (size_t)cur_data_pos >= entry->offset && (size_t)cur_data_pos <= ( entry->offset + entry->length ) ) { pos += cur_data_pos - entry->offset; break; } /* current position is before this chunk -- this should not happen! */ OTF_Error( "ERROR: OTF_File_iofsl_tell: Current position could not be evaluated!"); return -1; } else { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Failed to find index entry for data position %lu\n", __FUNCTION__, __FILE__, __LINE__, cur_data_pos); return -1; } } return pos; } } if ( NULL != file->file ) { file->pos = ftello( file->file ); } return file->pos; } uint64_t OTF_File_iofsl_size( OTF_File* file ) { /* Iterate over the index file and sum up sizes of all chunks */ if (file->iofsl->index_buffer != NULL) { size_t sum = 0; IndexEntry* entries = file->iofsl->index_buffer; int i = 0; do { sum += (entries[i++]).length; } while (entries[i].length > 0); return sum; } return 0; } int OTF_File_iofsl_close( OTF_File* file ) { #ifdef HAVE_ZLIB size_t byteswritten; int status; #endif /* HAVE_ZLIB */ if ( NULL == file ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "file has not been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } #ifdef HAVE_ZLIB if ( NULL != file->z ) { if ( OTF_FILEMODE_WRITE != file->mode ) { inflateEnd( OTF_FILE_Z(file) ); } else { size_t towrite; /* flush buffer */ if ( 0 == OTF_File_iofsl_revive( file, OTF_FILEMODE_WRITE ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_File_iofsl_revive() failed.\n", __FUNCTION__, __FILE__, __LINE__); return 0; } status = deflate( OTF_FILE_Z(file), Z_FULL_FLUSH ); if ( status == Z_STREAM_ERROR ) { OTF_Error( "ERROR in function %s, file %s, line %i\n" "deflate() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } towrite = file->zbuffersize - OTF_FILE_Z(file)->avail_out; byteswritten = 0; if ( towrite > 0 ) byteswritten = OTF_File_iofsl_write_internal( file, file->zbuffer, towrite ); if ( towrite != byteswritten ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n" "Failed to write compressed buffer of size %lu\n", __FUNCTION__, __FILE__, __LINE__, towrite ); } while ( OTF_FILE_Z(file)->avail_out != file->zbuffersize ) { OTF_FILE_Z(file)->avail_out = file->zbuffersize; OTF_FILE_Z(file)->next_out = file->zbuffer; deflate( OTF_FILE_Z(file), Z_FULL_FLUSH ); assert( status != Z_STREAM_ERROR ); towrite = file->zbuffersize - OTF_FILE_Z(file)->avail_out; if ( towrite > 0 ) OTF_File_iofsl_write_internal( file, file->zbuffer, towrite ); } deflateEnd( OTF_FILE_Z(file) ); } } #endif /* HAVE_ZLIB */ if ( file->mode == OTF_FILEMODE_WRITE ) { #ifdef HAVE_ZOIDFS int ret = OTF_File_iofsl_flushIndexBuffer( file ); if ( ret != 1 ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "could not flush iofsl index buffer (%d) ", __FUNCTION__, __FILE__, __LINE__, ret ); return 0; } #else OTF_Error("Cannot write using IOFSL without ZOIDFS."); return 0; #endif } if ( NULL != file->file ) { OTF_FileManager_suspendFile( file->manager, file ); } OTF_File_iofsl_finalize( file ); file = NULL; return 1; } OTF_FileStatus OTF_File_iofsl_status( OTF_File* file ) { return OTF_FILESTATUS_ACTIVE; } void OTF_File_iofsl_suspend( OTF_File* file ) { /* IOFSL files are not suspended */ if ( file->mode == OTF_FILEMODE_WRITE ) { return; } /* TODO Check if that is correct */ /* get status and close OS file */ file->pos = ftello( file->file ); fclose( file->file ); file->file = NULL; } int OTF_File_iofsl_revive( OTF_File* file, OTF_FileMode mode ) { /* TODO check for correctness */ switch ( mode ) { case OTF_FILEMODE_READ: /* *** read *** */ if ( NULL == file->file ) { /* file currently closed, aka open or reopen */ if ( 0 == OTF_FileManager_guaranteeFile( file->manager ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_FileManager_guaranteeFile() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } /* open first time, as we open O_RDONLY plus O_NOATIME, which fopen doesn't know, use open/fdopen */ #ifdef _GNU_SOURCE { int fd; int retry_num = 5; int flags = O_RDONLY | O_NOATIME; while ( -1 == ( fd = open( file->iofsl->multifile_name, flags ) ) ) { /* if the user is not the owner of the file, open with * O_NOATIME will fail with errno == EPERM; * try to open without O_NOATIME again to avoid this problem */ if ( EPERM == errno ) { flags = O_RDONLY; continue; /* the file name might be stale, e.g. on Network File System (NFS) */ } else if ( ESTALE == errno && 0 < --retry_num ) { sleep(1); continue; } else { /* show this error every time */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot open file %s for reading. Maybe the number of " "opened filehandles exceeds your system's limit\n", __FUNCTION__, __FILE__, __LINE__, file->iofsl->multifile_name ); return 0; } } file->file = fdopen( fd, "r" ); } #else /* _GNU_SOURCE */ file->file = fopen( file->iofsl->multifile_name, "rb" ); #endif /* _GNU_SOURCE */ if ( NULL == file->file ) { /* show this error every time */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot open file %s for reading. Maybe the number of " "opened filehandles exceeds your system's limit\n", __FUNCTION__, __FILE__, __LINE__, file->iofsl->multifile_name ); return 0; } /* Upon repoen, seek to the current position */ if ( 0 != file->pos ) { fseeko( file->file, file->pos, SEEK_SET ); } if ( 0 == OTF_FileManager_registerFile( file->manager, file ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_FileManager_registerFile() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } } else { /* file already opened */ if ( 0 == OTF_FileManager_touchFile( file->manager, file ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_FileManager_touchFile() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } } return 1; case OTF_FILEMODE_WRITE: /* this is IOFSL specific behavior! */ /* only revive files that are to be read */ return 1; case OTF_FILEMODE_SEEK: /* *** seek *** */ if ( NULL == file->file ) { /* file currently closed */ if ( 0 == OTF_FileManager_guaranteeFile( file->manager ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_FileManager_guaranteeFile() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } if ( 0 != file->pos ) { /* re-open */ file->file = fopen( file->iofsl->multifile_name, "rb" ); if ( NULL == file->file ) { /* show this error every time */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot open file %s for reading. Maybe the number of " "opened filehandles exceeds your system's limit\n", __FUNCTION__, __FILE__, __LINE__, file->iofsl->multifile_name ); return 0; } /* dont need to seek to the saved position because there will be another seek anyway*/ /* fseeko( file->file, file->pos, SEEK_SET ); */ } else { /* open first time */ file->file = fopen( file->iofsl->multifile_name, "rb" ); if ( NULL == file->file ) { /* show this error every time */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot open file %s for reading. Maybe the number of " "opened filehandles exceeds your system's limit\n", __FUNCTION__, __FILE__, __LINE__, file->iofsl->multifile_name ); return 0; } } if ( 0 == OTF_FileManager_registerFile( file->manager, file ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_FileManager_registerFile() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } } else { /* file already opened */ if ( 0 == OTF_FileManager_touchFile( file->manager, file ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_FileManager_touchFile() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } } return 1; default: /* *** unknown mode *** */ return 0; } } /* No implementation of * OTF_File_iofsl_setZBufferSize * because it is no different for IOFSL */ OTF_File* OTF_File_iofsl_open_zlevel( const char* filename, OTF_FileManager* manager, OTF_FileMode mode, OTF_FileCompression zlevel ) { uint32_t len; OTF_File* ret; int status; /* Check input parameters */ if ( NULL == filename ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no filename has been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } if ( NULL == manager ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "manager has not been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } ret = (OTF_File*) malloc( sizeof(OTF_File) ); if ( NULL == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } if ( 0 != OTF_File_iofsl_init( ret ) ) { return NULL; } len = (uint32_t) strlen( filename ); /* Begin IOFSL specific code */ OTF_FileManager_getIofsl( manager, &(ret->iofsl->server_num), &(ret->iofsl->server_list), &(ret->iofsl->mode), &(ret->iofsl->flags), &(ret->iofsl->index_buffer_length), &(ret->iofsl->streamid_bits) ); if ( ret->iofsl->index_buffer_length == 0 ) { ret->iofsl->index_buffer_length = OTF_IOFSL_INDEX_BUFFER_DEFAULTLENGTH; } /* We do not mess with this filename, but rather with iofsl->multifile_name, copy it anyway */ ret->filename = strdup( filename ); status = OTF_File_iofsl_prepareFilename( ret ); if ( status == 0 ) return NULL; /* prepareFilename also does OTF_File_iofsl_assignServer(ret); */ ret->iofsl->index_buffer = malloc( ret->iofsl->index_buffer_length * sizeof(IndexEntry) ); assert( ret->iofsl->index_buffer != NULL ); /* End IOFSL specific code */ ret->mode = mode; if ( OTF_FILEMODE_READ == mode || OTF_FILEMODE_SEEK == mode ) { #ifdef HAVE_ZLIB if ( 0 != access( ret->iofsl->multifile_name , F_OK ) ) { /* file not found, try '.z' suffix */ len = strlen(ret->iofsl->multifile_name); strncpy(ret->iofsl->multifile_name + len, ".z", 3); if ( 0 != access( ret->iofsl->multifile_name, F_OK ) ) { /* file still not found, give up */ OTF_File_iofsl_finalize( ret ); return NULL; } strncpy(ret->iofsl->indexfile_name + len, ".z", 3); len = strlen( ret->iofsl->multifile_name ); if ( len > 2 && strcmp( ret->iofsl->multifile_name + len - 2, ".z" ) == 0 ) { ret->z = malloc( sizeof(z_stream) ); if ( NULL == ret->z ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__); OTF_File_iofsl_finalize( ret ); return NULL; } OTF_FILE_Z(ret)->next_in = NULL; OTF_FILE_Z(ret)->avail_in = 0; OTF_FILE_Z(ret)->zalloc = NULL; OTF_FILE_Z(ret)->zfree = NULL; OTF_FILE_Z(ret)->opaque = NULL; inflateInit( OTF_FILE_Z(ret) ); ret->zbuffer = malloc( ret->zbuffersize ); OTF_FILE_Z(ret)->avail_in = 0; OTF_FILE_Z(ret)->next_in = ret->zbuffer; if ( NULL == ret->zbuffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__); OTF_File_iofsl_finalize( ret ); return NULL; } } } #else /* HAVE_ZLIB */ if ( 0 != access( ret->iofsl->multifile_name, F_OK ) ) { strncpy( ret->iofsl->multifile_name + len, ".z", 3 ); if ( 0 == access( ret->iofsl->multifile_name, F_OK ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot open %s. Zlib is not enabled.\n", __FUNCTION__, __FILE__, __LINE__, ret->iofsl->multifile_name ); } /* file still not found, give up */ OTF_File_iofsl_finalize( ret ); return ret; } #endif /* HAVE_ZLIB */ /* Finally we read the index file and write all indices to buffer */ /* IOFSL specific */ assert( ret->iofsl->id_str != NULL ); assert( ret->iofsl->indexfile_name != NULL); ret->iofsl->indexfile = fopen( ret->iofsl->indexfile_name, "rb" ); if ( ret->iofsl->indexfile == NULL ) { OTF_Error( "ERROR: in function %s, file: %s, line: %i:\n " "Failed to open index file '%s' for reading!\n", __FUNCTION__, __FILE__, __LINE__, ret->iofsl->indexfile_name ); OTF_File_iofsl_finalize( ret ); ret = NULL; return ret; } if ( OTF_File_iofsl_getIndexEntries( ret ) != 0 ) { OTF_File_iofsl_finalize( ret ); ret = NULL; return ret; } /* index file is not needed anymore --> close it */ fclose( ret->iofsl->indexfile ); ret->iofsl->indexfile = NULL; } else { #ifdef HAVE_ZOIDFS int tmp, created; zoidfs_sattr_t sattr; struct timeval now; /* filemode write */ if ( !zoidfs_initialized ) { OTF_File_iofsl_checkServer( ret ); if ( ZFS_OK != zoidfs_init() ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Failed to initialize connection to ZOIDFS server: %s!\n", __FUNCTION__, __FILE__, __LINE__, ret->iofsl->zoidfs_server); OTF_File_iofsl_finalize( ret ); return NULL; } zoidfs_initialized = 1; } created = 0; memset( &sattr, 0, sizeof(sattr) ); /* set the attrs */ sattr.mask = ZOIDFS_ATTR_SETABLE; sattr.mode = 0644; sattr.uid = getuid(); sattr.gid = getgid(); gettimeofday( &now, NULL ); sattr.atime.seconds = now.tv_sec; sattr.atime.nseconds = now.tv_usec; sattr.mtime.seconds = now.tv_sec; sattr.mtime.nseconds = now.tv_usec; OTF_File_iofsl_checkServer( ret ); /* create the hint */ ret->iofsl->zoidfs_hint = malloc( sizeof(zoidfs_op_hint_t) ); if ( ret->iofsl->zoidfs_hint == NULL ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Failed to allocate %d bytes of memory.\n", __FUNCTION__, __FILE__, __LINE__, sizeof(zoidfs_op_hint_t)); OTF_File_iofsl_finalize( ret ); return NULL; } zoidfs_hint_create( ret->iofsl->zoidfs_hint ); /* create the multifile */ ret->iofsl->zoidfs_fh = malloc( sizeof(zoidfs_handle_t) ); if ( ret->iofsl->zoidfs_fh == NULL ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Failed to allocate %d bytes of memory.\n", __FUNCTION__, __FILE__, __LINE__, sizeof(zoidfs_handle_t)); OTF_File_iofsl_finalize( ret ); return NULL; } assert( ret->iofsl->multifile_name != NULL ); tmp = zoidfs_create( NULL, NULL, ret->iofsl->multifile_name, &sattr, ret->iofsl->zoidfs_fh, &created, ZOIDFS_NO_OP_HINT ); if ( tmp != ZFS_OK ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Failed to create file '%s' with reason %i using ZOIDFS server %s!\n", __FUNCTION__, __FILE__, __LINE__, ret->iofsl->multifile_name, tmp, getenv( zoidfs_server_env )); /* free the handle here to avoid writing to * a file that is not created */ free( ret->iofsl->zoidfs_fh ); ret->iofsl->zoidfs_fh = NULL; OTF_File_iofsl_finalize( ret ); return NULL; } /* create the index file */ assert( ret->iofsl->indexfile_name != NULL ); OTF_File_iofsl_checkServer( ret ); ret->iofsl->zoidfs_index_fh = malloc( sizeof(zoidfs_handle_t) ); if ( ret->iofsl->zoidfs_index_fh == NULL ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Failed to allocate %d bytes of memory.\n", __FUNCTION__, __FILE__, __LINE__, sizeof(zoidfs_handle_t)); OTF_File_iofsl_finalize( ret ); return NULL; } tmp = zoidfs_create( NULL, NULL, ret->iofsl->indexfile_name, &sattr, ret->iofsl->zoidfs_index_fh, &created, ZOIDFS_NO_OP_HINT ); if ( tmp != ZFS_OK ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Failed to create index file '%s' with reason %i using ZOIDFS!\n", __FUNCTION__, __FILE__, __LINE__, ret->iofsl->indexfile_name, tmp); zoidfs_remove( NULL, NULL, ret->filename, NULL, ZOIDFS_NO_OP_HINT ); /* free the handle here to avoid writing to * a file that is not created */ free( ret->iofsl->zoidfs_index_fh ); ret->iofsl->zoidfs_index_fh = NULL; OTF_File_iofsl_finalize( ret ); return NULL; } #ifdef HAVE_ZLIB /* is a .z appended to the file name */ len = strlen( ret->filename ); if ( len > 2 && 0 == strcmp( ret->filename + len - 2, ".z") ) { ret->z = malloc( sizeof(z_stream) ); if ( NULL == ret->z ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__); OTF_File_iofsl_finalize( ret ); return NULL; } OTF_FILE_Z(ret)->next_in = NULL; OTF_FILE_Z(ret)->avail_in = 0; OTF_FILE_Z(ret)->zalloc = NULL; OTF_FILE_Z(ret)->zfree = NULL; OTF_FILE_Z(ret)->opaque = NULL; OTF_FILE_Z(ret)->avail_out = ret->zbuffersize; OTF_FILE_Z(ret)->next_out = ret->zbuffer; deflateInit( OTF_FILE_Z(ret), zlevel ); ret->zbuffer = malloc(ret->zbuffersize); if ( NULL == ret->zbuffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__); OTF_File_iofsl_finalize( ret ); return NULL; } } #endif /* HAVE_ZLIB */ #else /* HAVE_ZOIDFS */ OTF_Error( "ERROR opening stream for writing." " Zoidfs / iofsl writing not supported by this installation.\n" ); OTF_File_iofsl_finalize( ret ); return NULL; #endif /* HAVE_ZOIDFS */ } ret->manager = manager; return ret; } size_t OTF_File_iofsl_read_internal( OTF_File* file, void* vdest, size_t length ) { uint64_t actual_length = 0; size_t toread; size_t read; char *dest = (char *)vdest; /* to allow pointer arithmetic */ /* No support in iofsl */ assert( NULL == file->externalbuffer ); if ( file->file == NULL ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "File not open!\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } if ( file->iofsl->index_buffer == NULL ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Index buffer does not exist!\n", __FUNCTION__, __FILE__, __LINE__); return 0; } /* first read the rest from the last chunk if any */ if ( file->iofsl->data_left > 0 ) { toread = ( file->iofsl->data_left > length ) ? length : file->iofsl->data_left; read = fread( dest, 1, toread, file->file ); if ( read != toread ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Expected to read %lu bytes but read only %lu\n", __FUNCTION__, __FILE__, __LINE__, toread, read); } length -= read; dest += read; file->iofsl->data_left -= read; actual_length = read; } /* now read the next chunk if required */ while ( length > 0 ) { long unsigned offset = 0; long unsigned size = 0; IndexEntry* entry = &(file->iofsl->index_buffer[file->iofsl->index_buffer_pos]); if ( entry->length == 0 ) { return actual_length; } offset = entry->offset; size = entry->length; file->iofsl->index_buffer_pos++; /* Seek to the correct position */ fseek( file->file, offset, SEEK_SET ); file->iofsl->data_left = size; /* now read as many bytes as required / possible */ toread = ( size > length ) ? length : size; read = fread( dest, 1, toread, file->file ); if ( read != toread ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Expected to read %lu bytes but read only %lu\n", __FUNCTION__, __FILE__, __LINE__, toread, read); return actual_length; } length -= read; dest += read; file->iofsl->data_left -= read; actual_length += read; } return actual_length; } size_t OTF_File_iofsl_write_internal( OTF_File* file, const void* src, size_t length ) { #if defined(HAVE_ZOIDFS) zoidfs_file_ofs_t newoff = 0; int ret; int flag = 0; IndexEntry* entry; char value[ZOIDFS_ATOMIC_APPEND_OFFSET_MAX_BYTES]; /* length defined in zoidfs-hints.h */ if ( length == 0 ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "ignoring zero sized write.\n", __FUNCTION__, __FILE__, __LINE__); return 0; } OTF_File_iofsl_checkServer( file ); ret = OTF_File_iofsl_resetHint( file ); if ( ret != ZFS_OK ) return 0; ret = zoidfs_write( file->iofsl->zoidfs_fh, 1, &src, &length, 1, &newoff, (zoidfs_file_size_t *)&length, file->iofsl->zoidfs_hint ); if ( ret != ZFS_OK ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "zoidfs_write returned bad value: %i\n", __FUNCTION__, __FILE__, __LINE__, ret); return 0; } ret = zoidfs_hint_get( *(file->iofsl->zoidfs_hint), ZOIDFS_ATOMIC_APPEND_OFFSET, ZOIDFS_ATOMIC_APPEND_OFFSET_MAX_BYTES, value, &flag ); if ( ret != ZFS_OK ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Failed to retrieve append offset!\n", __FUNCTION__, __FILE__, __LINE__); return 0; } newoff = (long unsigned)atol( value ); /** do not try to write to the index file for global files (e.g. *.otf) */ assert( file->iofsl->id_str != NULL ); assert( NULL != file->iofsl->index_buffer ); /* reallocate buffer if necessary */ if ( file->iofsl->index_buffer_pos >= file->iofsl->index_buffer_length - 1 ) { IndexEntry* tmp = (IndexEntry*) realloc( file->iofsl->index_buffer, sizeof(IndexEntry) * ( file->iofsl->index_buffer_length + OTF_IOFSL_INDEX_BUFFER_DEFAULTLENGTH ) ); if ( tmp == NULL ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Failed to allocate %lu bytes of memory!", __FUNCTION__, __FILE__, __LINE__, sizeof(IndexEntry) * (file->iofsl->index_buffer_length + OTF_IOFSL_INDEX_BUFFER_DEFAULTLENGTH ) ); return 0; } file->iofsl->index_buffer = tmp; file->iofsl->index_buffer_length += OTF_IOFSL_INDEX_BUFFER_DEFAULTLENGTH; } entry = &(file->iofsl->index_buffer[file->iofsl->index_buffer_pos]); entry->offset = newoff; entry->length = length; file->iofsl->index_buffer_pos++; /* mark this entry as the last one */ entry = &(file->iofsl->index_buffer[file->iofsl->index_buffer_pos]); entry->offset = 0; entry->length = 0; return length; #else OTF_Error("ERROR, no IOFSL write support without zoidfs."); return 0; #endif /* HAVE_ZOIDFS */ } /** * Functions that exist only for OTF_File_iofsl */ static unsigned int htoi(const char *ptr) { unsigned int value = 0; char ch = *ptr; while (ch == ' ' || ch == '\t') ch = *(++ptr); for (;;) { if (ch >= '0' && ch <= '9') value = (value << 4) + (ch - '0'); else if (ch >= 'A' && ch <= 'F') value = (value << 4) + (ch - 'A' + 10); else if (ch >= 'a' && ch <= 'f') value = (value << 4) + (ch - 'a' + 10); else return value; ch = *(++ptr); } } /** * Internal function used by management layer to map the 'otf filename' * to the physical filename * e.g. * for VT LDIR files * file->name == * fooooooooo.1e8dce3f.255991.1.def.z * ^prefix ^nodeid ^pid ^ ^suffix * |stream id * => file->iofsl->multifile_name = fooooooooo.all.def.z * => file->iofsl->indexfile_name = fooooooooo.idx.def.z * => file->iofsl->id = nodeid + pid * * for VT GDIR files * file->name == * fooooooooo.123.def.z * ^prefix ^ ^suffix * |stream id * => file->iofsl->multifile_name = fooooooooo.all.def.z * => file->iofsl->indexfile_name = fooooooooo.idx.def.z * => file->iofsl->id = stream_id * * @return 1 on success, 0 on failure */ int OTF_File_iofsl_prepareFilename( OTF_File *file ) { uint32_t streamid; size_t streamid_index; size_t id_str_len; uint8_t found_suffix; const char* post_streamid_pos; /* shortcut because we need it often */ const char* filename = file->filename; OTF_File_iofsl *iofsl = file->iofsl; /* 2 (for .1. -> .all.), + 8 (.9999999 'split') + 2 for .z */ size_t newfile_name_length = strlen(filename) + 2 + 8 + 2; assert( iofsl->multifile_name == NULL ); assert( iofsl->indexfile_name == NULL ); iofsl->multifile_name = calloc(newfile_name_length, sizeof(char)); iofsl->indexfile_name = calloc(newfile_name_length, sizeof(char)); if ( iofsl->multifile_name == NULL || iofsl->indexfile_name == NULL ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__); return 0; } /* we need to replace the stream id with 'all' */ /* search from the end of the string for all '.' until we find a digit behind one of them */ streamid_index = strlen(filename); /* remember if we found the suffix def or events */ found_suffix = 0; while ( streamid_index > 0 ) { if ( filename[--streamid_index] == '.' ) { /* if you find the suffixes 'z', 'def' or 'events' */ if ( filename[streamid_index+1] == 'z' ) continue; if ( !found_suffix && ( strncmp( &(filename[streamid_index+1]), "events", 6 ) == 0 || strncmp( &(filename[streamid_index+1]), "def", 3 ) == 0 ) ) { found_suffix = 1; continue; } /* this is the ID of the rank or thread */ if ( isxdigit( filename[streamid_index+1] ) ) { break; } } } /* name_index now points to the dot before the suspected stream id part */ /* points to the first dot after the stream id */ post_streamid_pos = strchr(&filename[streamid_index+1], '.'); /* first assume it's the stream number */ streamid = htoi( &filename[streamid_index+1] ); streamid_index++; /* streamid_index now really points to the beginning of the stream id part */ /* creat the final new name from 3 parts, replacing the stream id with 'all' */ assert( streamid_index + strlen("all") + strlen( post_streamid_pos ) < newfile_name_length ); strncpy( iofsl->multifile_name , filename, streamid_index ); strcat( iofsl->multifile_name , "all" ); strcat( iofsl->multifile_name , post_streamid_pos ); assert( streamid_index + strlen("idx") + strlen( post_streamid_pos ) < newfile_name_length ); strncpy( iofsl->indexfile_name, filename, streamid_index ); strcat( iofsl->indexfile_name, "idx" ); strcat( iofsl->indexfile_name, post_streamid_pos ); assert ( iofsl->id_str == NULL ); id_str_len = post_streamid_pos - &(filename[streamid_index]); iofsl->id_str = malloc( id_str_len + 1 ); if ( iofsl->id_str == NULL ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Failed to allocate %lu Bytes if memory\n", __FUNCTION__, __FILE__, __LINE__, id_str_len + 1); return 0; } strncpy( iofsl->id_str, &(filename[streamid_index]), id_str_len ); iofsl->id_str[id_str_len] = '\0'; /* For vtunify it is very important so that the master process that handles ids 1 and the defs (0) use the same IOFSL server for all their writing - otherwise hell breaks loose */ if ( streamid == 0 ) streamid++; /* Apply the magic bitmask to filter for the process discarding the thread id * to make sure all threads in a process use the same target forwarding server */ iofsl->id = streamid & iofsl->streamid_bits; /* this will prepare the iofsl->server_id based on id and server infos */ OTF_File_iofsl_assignServer(file); if ( iofsl->mode == OTF_IOFSL_MULTIFILE_SPLIT ) { if ( iofsl->server_id >= 0 && iofsl->id_str != NULL ) { size_t len = strlen( iofsl->multifile_name ); assert( len == strlen( iofsl->indexfile_name ) ); /* append server id and '.z' if required */ if ( strcmp( iofsl->multifile_name + len - 2, ".z" ) == 0 ) { sprintf( iofsl->multifile_name + len - 2, ".%i.z", iofsl->server_id ); sprintf( iofsl->indexfile_name + len - 2, ".%i.z", iofsl->server_id ); } else { sprintf( iofsl->multifile_name + len, ".%i", iofsl->server_id ); sprintf( iofsl->indexfile_name + len, ".%i", iofsl->server_id ); } } } return 1; } /* * Assignes a server to an OTF_File * Assumes to be called only once * Uses an environment variable containing comma separated server names * Based on the server_id = iofsl->id % num_servers * Returns the server_id used * */ static void OTF_File_iofsl_assignServer( OTF_File* file ) { OTF_File_iofsl *iofsl = file->iofsl; iofsl->server_id = iofsl->id % iofsl->server_num; #ifdef HAVE_ZOIDFS if ( iofsl->zoidfs_server != NULL ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Server already assigned for file %s (%s)\n", __FUNCTION__, __FILE__, __LINE__, file->filename, file->iofsl->zoidfs_server ); return; } if ( iofsl->server_list ) { iofsl->zoidfs_server = iofsl->server_list[iofsl->server_id]; } #endif } /* * Checks if the environment Variable for the server is set * and resets if required * Assumes assignServer is called on the file before */ #ifdef HAVE_ZOIDFS static int OTF_File_iofsl_writeIndexBuffer(OTF_File* file, char* strbuf, size_t len) { zoidfs_file_ofs_t newoff; int ret; const void* idxptr; /* prepare the hint */ ret = OTF_File_iofsl_resetHint(file); if (ret != ZFS_OK) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Failed to reset iofsl hint (%i)\n", __FUNCTION__, __FILE__, __LINE__, ret); return -1; } newoff = 0; /* write the index entry */ idxptr = (void*)strbuf; OTF_File_iofsl_checkServer(file); ret = zoidfs_write( file->iofsl->zoidfs_index_fh, 1, &(idxptr), &len, 1, &newoff, (zoidfs_file_size_t *)&len, file->iofsl->zoidfs_hint ); if (ret != ZFS_OK) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Failed to write index file entry (%i)\n", __FUNCTION__, __FILE__, __LINE__, ret); return -1; } return 0; } /** return 1 on success 0 on failure */ int OTF_File_iofsl_flushIndexBuffer(OTF_File* file) { if ( file != NULL && file->iofsl->index_buffer != NULL ) { uint32_t i; size_t bufsz = OTF_IOFSL_INDEX_BUFFER_DEFAULTLENGTH; char* strbuf = malloc(bufsz); int ret; size_t strpos = 0; OTF_File_iofsl_checkServer( file ); assert(strbuf != NULL); /* iterate over the entry and generate all entries */ for (i = 0; i < file->iofsl->index_buffer_pos; i++) { IndexEntry* entry = &(file->iofsl->index_buffer[i]); ret = snprintf(strbuf + strpos, (bufsz - strpos), IOFSL_INDEX_FMT, file->iofsl->id_str, (unsigned long long int)entry->offset, (unsigned long long int)entry->length); /* flush buffer if necessary */ if ( (size_t)ret >= (bufsz - strpos) ) { ret = OTF_File_iofsl_writeIndexBuffer( file, strbuf, strpos ); if (ret != 0) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Failed to write index buffer (%i)\n", __FUNCTION__, __FILE__, __LINE__, ret); return 0; } strpos = 0; /* repeat the operation */ ret = snprintf(strbuf + strpos, (bufsz - strpos), IOFSL_INDEX_FMT, file->iofsl->id_str, (unsigned long long int)entry->offset, (unsigned long long int)entry->length); } strpos += ret; } ret = OTF_File_iofsl_writeIndexBuffer( file, strbuf, strpos ); if (ret != ZFS_OK) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Failed to write index buffer (%i)\n", __FUNCTION__, __FILE__, __LINE__, ret); return 0; } return 1; } return 0; } /** * Check if the environment variable to pick the right zoidfs server is set * and set if it is required. * Changing the server during runtime is not really supported * due to assumptionsin the ZOIDFS layer. It will try but yield an error * The main purpose of this function is to make sure two OTF files are not * written using different servers by the same process as hell might break loose. */ static void OTF_File_iofsl_checkServer(OTF_File* file) { static int last_id; if ( file->iofsl->zoidfs_server == NULL || file->iofsl->server_id < 0 ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Server or id is not set for file '%s' / '%s'.\n", __FUNCTION__, __FILE__, __LINE__, file->filename, file->iofsl->multifile_name ); } /* Using static variables is not exactly pretty, but using environment variables isn't either. */ last_id = -1; if ( last_id != file->iofsl->server_id ) { if ( 0 != setenv( zoidfs_server_env, file->iofsl->zoidfs_server, 1 ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Failed to set environment variable %s\n", __FUNCTION__, __FILE__, __LINE__, zoidfs_server_env ); } if ( last_id != -1 ) { /* something went wrong, this should not happen under nice circumstances */ /* A different server env var was already set */ /* Probably our host process, such as vtunify-mpi, works on different streams */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Overwriting conflicting zoidfs server %i => %i ['%s' / '%s'].\n", __FUNCTION__, __FILE__, __LINE__, last_id, file->iofsl->server_id, file->filename, file->iofsl->multifile_name); } last_id = file->iofsl->server_id; } } /* Deletes all existing hints and sets the AA and (if required) * the non-blocking hint. */ static int OTF_File_iofsl_resetHint( OTF_File* file ) { int ret; /* prepare the hint */ ret = zoidfs_hint_delete_all( *(file->iofsl->zoidfs_hint) ); if ( ret != ZFS_OK ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Failed to delete all hints before setting a new one: %i\n", __FUNCTION__, __FILE__, __LINE__, ret); return -1; } ret = zoidfs_hint_set( *(file->iofsl->zoidfs_hint), ZOIDFS_ATOMIC_APPEND, ZOIDFS_HINT_ENABLED, 0 ); if ( ret != ZFS_OK ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Failed to set atomic hint: %i!\n", __FUNCTION__, __FILE__, __LINE__, ret); return -1; } if ( file->iofsl->flags & OTF_IOFSL_FLAG_NONBLOCKING ) { ret = zoidfs_hint_set( *(file->iofsl->zoidfs_hint), ZOIDFS_NONBLOCK_SERVER_IO, ZOIDFS_HINT_ENABLED, 0 ); if ( ret != ZFS_OK ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Failed to set nonblockin IO hint (%i)!\n", __FUNCTION__, __FILE__, __LINE__, ret ); } } return ret; } #endif /* HAVE_ZOIDFS */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_Reader.h0000644000000000000000000000013212544237152022325 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.215376964 30 ctime=1508162366.193772853 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_Reader.h0000644000175000017500000006570712544237152023533 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_Reader.h * * @brief Transparently reads OTF traces which consist of multiple streams. * * This interface should be used whenever a trace file is to be read as a * whole. * * \ingroup reader */ #ifndef OTF_READER_H #define OTF_READER_H #include "OTF_inttypes.h" #include "OTF_MasterControl.h" #include "OTF_FileManager.h" #include "OTF_RStream.h" #include "OTF_HandlerArray.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** \defgroup reader Reader Interface * * The reader provides high level read access to traces * disregarding the presence of streams. * * \section reader_example1 A simple Example * * \code * #include * #include * #include "otf.h" * \endcode * * Define handlers/callbacks for the records you want to read. * \code * int handleEnter (void *userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source) { * * printf("we just entered function %u\n", function); * * return OTF_RETURN_OK; * } * * int handleLeave (void *userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source) { * * printf("byebye\n"); * * return OTF_RETURN_OK; * } * \endcode * * \code * int main( int argc, char** argv ) { * \endcode * * Declare a file manager, a reader, and a handler array. * \code * OTF_FileManager* manager; * OTF_Reader* reader; * OTF_HandlerArray* handlers; * \endcode * * Initialize the file manager. Do not open more than 100 files. * \code * manager= OTF_FileManager_open( 100 ); * assert( manager ); * \endcode * * Initialize the handler array. * \code * handlers = OTF_HandlerArray_open(); * assert( handlers ); * \endcode * * Initialize the reader. * \code * reader = OTF_Reader_open( "mytrace", manager ); * assert( reader ); * \endcode * * Register your callback functions to the handler array. * \code * OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleEnter, OTF_ENTER_RECORD ); * OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleLeave, OTF_LEAVE_RECORD ); * \endcode * * * Do the actual reading. * \code * OTF_Reader_readEvents( reader, handlers ); * \endcode * * * Clean everything up before exiting the program. * \code * OTF_Reader_close( reader ); * OTF_HandlerArray_close( handlers ); * OTF_FileManager_close( manager ); * * return 0; * } * \endcode * * Compile and link this using $ gcc -o test test.c `otfconfig --libs`. * * * \section reader_example2 A second, more complex Example * * Same as before * \code * #include * #include * #include "otf.h" * \endcode * * Create a structure, which holds information needed in every handler. * We will register this structure to the handlers, so that the userData pointer * in every handler will point to it. * In this example we just want to count the occurences. * \code * typedef struct { * uint64_t count; * } HandlerArgument; * \endcode * * Define four handlers. * In every handler we will increase HandlerArgument::count. * \code * int handleDefProcess (void *userData, uint32_t stream, uint32_t process, const char *name, uint32_t parent) { * ((HandlerArgument*)userData)->count++; * return OTF_RETURN_OK; * } * int handleDefFunction (void *userData, uint32_t stream, uint32_t func, const char *name, uint32_t funcGroup, uint32_t source) { * ((HandlerArgument*)userData)->count++; * return OTF_RETURN_OK; * } * int handleEnter (void *userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source) { * ((HandlerArgument*)userData)->count++; * return OTF_RETURN_OK; * } * int handleLeave (void *userData, uint64_t time, uint32_t function, uint32_t process, uint32_t source) { * ((HandlerArgument*)userData)->count++; * return OTF_RETURN_OK; * } * \endcode * * * Same as before * \code * int main( int argc, char** argv ) { * * OTF_FileManager* manager; * OTF_Reader* reader; * OTF_HandlerArray* handlers; * \endcode * * We need some additional variables for the read progress * \code * uint64_t minbytes; * uint64_t curbytes; * uint64_t maxbytes; * \endcode * * \code * uint64_t ret; * HandlerArgument ha; * ha.count = 0; * * manager= OTF_FileManager_open( 100 ); * assert( manager ); * * handlers = OTF_HandlerArray_open(); * assert( handlers ); * * reader = OTF_Reader_open( "mytrace", manager ); * assert( reader ); * \endcode * * Register handlers for define process records, * define function records, enter records and leave records * * \code * OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefProcess, OTF_DEFPROCESS_RECORD ); * \endcode * Register the first handler argument ha to the handler where it should be passed into. * \code * OTF_HandlerArray_setFirstHandlerArg( handlers, &ha, OTF_DEFPROCESS_RECORD ); * \endcode * * \code * OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefFunction, OTF_DEFFUNCTION_RECORD ); * OTF_HandlerArray_setFirstHandlerArg( handlers, &ha, OTF_DEFFUNCTION_RECORD ); * * OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleEnter, OTF_ENTER_RECORD ); * OTF_HandlerArray_setFirstHandlerArg( handlers, &ha, OTF_ENTER_RECORD ); * * OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleLeave, OTF_LEAVE_RECORD ); * OTF_HandlerArray_setFirstHandlerArg( handlers, &ha, OTF_LEAVE_RECORD ); * \endcode * * Read definitions ( .def files). * Inside this function the defProcess and defFunction handler will be called. * \code * OTF_Reader_readDefinitions( reader, handlers ); * \endcode * * Set the record limit to zero and read the events once. * This initializes internal datastructures needed for getting the reading progress. * \code * OTF_Reader_setRecordLimit( reader, 0 ); * OTF_Reader_readEvents( reader, handlers ); * \endcode * * To leave OTF_Reader_readEvents() once in a while, in order to update the progress, * set the record limit to an appropriate number. 100000 in this case. * * \code * OTF_Reader_setRecordLimit( reader, 100000 ); * \endcode * * Read the trace until no records are left. * \code * while ( 0 != ( ret= OTF_Reader_readEvents( reader, handlers ) ) ) { * \endcode * * If an error occurs, leave the program. * \code * if( OTF_READ_ERROR == ret ) { * fprintf( stderr, "Error while reading events. Aborting\n" ); * * OTF_Reader_close( reader ); * OTF_HandlerArray_close( handlers ); * OTF_FileManager_close( manager ); * * exit(1); * } * * \endcode * Update the progress. * \code * OTF_Reader_eventBytesProgress( reader, &minbytes, &curbytes, &maxbytes ); * printf( "%llub / %llub\n", (long long unsigned)(curbytes - minbytes), (long long unsigned)(maxbytes-minbytes) ); * \endcode * * \code * } * \endcode * Print out the gathered count of occurences of the four record types. * \code * printf( "count: %llu\n", (long long unsigned) ha.count ); * \endcode * * Finish everything * \code * OTF_Reader_close( reader ); * OTF_HandlerArray_close( handlers ); * OTF_FileManager_close( manager ); * * return 0; * } * \endcode * Compile and link this using $ gcc -o test test.c `otfconfig --libs`. * * When executing this test the output will be something like this: * \verbatim * 4194304b / 73530754b * [..] * 73530754b / 73530754b * count: 4582694 \endverbatim * */ /** reader object \ingroup reader */ typedef struct struct_OTF_Reader OTF_Reader; /** * Open a MasterControl file and return a OTF_Reader. * * @param namestub File name prefix which is going to be used by * all sub-files which belong to the trace. * @param fileManager File handle manager. * * @return Initialized OTF_Reader instance or 0 if a failure * occurred. * * \ingroup reader */ OTF_Reader* OTF_Reader_open( const char* namestub, OTF_FileManager* manager ); /** * Set the default buffer size for all buffers managed by this Reader. * This is only effective for future buffers and will not change already * allocated buffers. Those can be changed with the buffers directly. * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * @param size Intended buffer size. * * @return 1 on success, 0 if an error occurs. * * \ingroup reader */ int OTF_Reader_setBufferSizes( OTF_Reader* reader, uint32_t size ); /** * Get the default buffer size. * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * * @return Default buffer size. * * \ingroup reader */ uint32_t OTF_Reader_getBufferSizes( OTF_Reader* reader ); /** * Set the default zbuffer size for all buffers managed by this Reader. * This is only effective for future files and will not change already * allocated zbuffers. Those can be changed with the files directly. * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * * @param size Intended zbuffer size. * * \ingroup reader */ void OTF_Reader_setZBufferSizes( OTF_Reader* reader, uint32_t size ); /** * Get the default zbuffer size. * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * * @return zbuffer size. * * \ingroup reader */ uint32_t OTF_Reader_getZBufferSizes( OTF_Reader* reader ); /** * Get a pointer to the mastercontrol of the reader * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * * @return Pointer to the mastercontrol. * * \ingroup reader */ OTF_MasterControl* OTF_Reader_getMasterControl( OTF_Reader* reader ); /** * Close an OTF_Reader instance and all its related files. * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * * @return 1 if instance was closed successfully and 0 otherwise. * * \ingroup reader */ int OTF_Reader_close( OTF_Reader* reader ); /** * This function reads all definitions from trace. * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * @param handlers Pointer to the handler array. * * @return number of records successfully read or OTF_READ_ERROR * * \ingroup reader */ uint64_t OTF_Reader_readDefinitions( OTF_Reader* reader, OTF_HandlerArray* handlers ); /** * This function reads all events from trace and calls the appropriate * handler sorted by time * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * @param handlers Pointer to the handler array. * * @return number of records successfully read or OTF_READ_ERROR * * \ingroup reader */ uint64_t OTF_Reader_readEvents( OTF_Reader* reader, OTF_HandlerArray* handlers ); /** * This function reads all events from trace and calls the appropriate handler * NOT sorted by time. * It calls every handler in ONE stream sorted by time. * And walks through the streams one by one. * ( So the handlers of one process will be called, sorted by time, too ) * * This function is faster than OTF_Reader_readEvents(), especially for * a bigger number of streams * * @see OTF_Reader_readEvents() * * \ingroup reader */ uint64_t OTF_Reader_readEventsUnsorted( OTF_Reader* reader, OTF_HandlerArray* handlers ); /** * This function reads all snapshots from trace * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * @param handlers Pointer to the handler array. * * @return number of records successfully read or OTF_READ_ERROR * * \ingroup reader */ uint64_t OTF_Reader_readSnapshots( OTF_Reader* reader, OTF_HandlerArray* handlers ); /** * This function reads all snapshots from trace and calls the appropriate handler * NOT sorted by time. * It calls every handler in ONE stream sorted by time. * And it walks through the streams one by one. * ( So the handlers of one process will be called, sorted by time, too ) * * This function is faster than OTF_Reader_readSnapshots(), especially for * a bigger number of streams * * @see OTF_Reader_readSnapshots() * * \ingroup reader */ uint64_t OTF_Reader_readSnapshotsUnsorted( OTF_Reader* reader, OTF_HandlerArray* handlers ); /** * This function reads all statistic records from trace * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * @param handlers Pointer to the handler array. * * @return number of records successfully read or OTF_READ_ERROR * * \ingroup reader */ uint64_t OTF_Reader_readStatistics( OTF_Reader* reader, OTF_HandlerArray* handlers ); /** * This function reads all statistics from trace and calls the appropriate handler * NOT sorted by time. * It calls every handler in ONE stream sorted by time. * And it walks through the streams one by one. * ( So the handlers of one process will be called, sorted by time, too ) * * This function is faster than OTF_Reader_readStatistics(), especially for * a bigger number of streams * * @see OTF_Reader_readStatistics() * * \ingroup reader */ uint64_t OTF_Reader_readStatisticsUnsorted( OTF_Reader* reader, OTF_HandlerArray* handlers ); /** * This function reads all markers from trace. * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * @param handlers Pointer to the handler array. * * @return number of records successfully read or OTF_READ_ERROR * * \ingroup reader */ uint64_t OTF_Reader_readMarkers( OTF_Reader* reader, OTF_HandlerArray* handlers ); /** * Searchs a reader stream and returns it. * If the stream does not exist it will be created. * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * @param id Identifier of the stream searched. * * @return Initialised OTF_RStream object. * * \ingroup reader */ OTF_RStream* OTF_Reader_getStream( OTF_Reader* reader, uint32_t id ); /** disable given process. deprecated, use 'OTF_Reader_setProcessStatus()' instead. This funktion will destroy a pending read operation, i.e. a read operation currently interrupted cannot be continued! \ingroup reader */ int OTF_Reader_disableProcess( OTF_Reader* reader, uint32_t processId ); /** enable given process. deprecated, use 'OTF_Reader_setProcessStatus()' instead. This funktion will destroy a pending read operation, i.e. a read operation currently interrupted cannot be continued! \ingroup reader */ int OTF_Reader_enableProcess( OTF_Reader* reader, uint32_t processId ); /** * Returns the current process status * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * @param processId Identifier of the process to get the status from * * @return Current process status. '1' for enabled, '0' for disabled * or unknown. * * \ingroup reader */ uint8_t OTF_Reader_getProcessStatus( OTF_Reader* reader, uint32_t processId ); /** * Sets the current status of the process. This function will destroy a pending * read operation, i.e. a read operation currently interrupted cannot be * continued! * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * @param processId Identifier of the process. * @param status new status of the process. '1' for enabled, '0' * for disabled or unknown. * * @return 1 on success, 0 if an error occurs. * * \ingroup reader */ int OTF_Reader_setProcessStatus( OTF_Reader* reader, uint32_t processId, uint8_t status ); /** * Sets the status for all processes with a single call. This function will * destroy a pending read operation, i.e. a read operation currently * interrupted cannot be continued! * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * @param status new status of the process. * * @return 1 on success, 0 if an error occurs. * * \ingroup reader */ int OTF_Reader_setProcessStatusAll( OTF_Reader* reader, uint8_t status ); /** * Set the minimum time and the maximum time of the reader. * * \par For example: * minTime = 100000; * \n maxTime = 100003; * \n Times to read: 100000, 100001, 100002 * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * @param minTime time where reading starts (including this timestamp) * @param maxTime time where reading ends (excluding this timestamp) * * \ingroup reader */ void OTF_Reader_setTimeInterval( OTF_Reader* reader, uint64_t minTime, uint64_t maxTime ); /** * Returns the begin of current time interval. * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * * \ingroup reader */ uint64_t OTF_Reader_getTimeIntervalMin( OTF_Reader* reader ); /** * Returns end of current time interval. * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * * \ingroup reader */ uint64_t OTF_Reader_getTimeIntervalMax( OTF_Reader* reader ); /** * Set the maximum number of records delivered by a single call to * OTF_Reader_readXYZ(). Defaults to OTF_READ_MAXRECORDS == \infty. * 'OTF_Reader_readXYZ()' returns with the number of records processed. * Successive calls to 'OTF_Reader_readXYZ()' will deliver the remaining * records. This funktion will NOT destroy a pending read operation, i.e. a * read operation currently interrupted CAN be continued! * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * @param limit record limit. has to be smaller than or equal to * OTF_READ_MAXRECORDS * * \ingroup reader */ void OTF_Reader_setRecordLimit( OTF_Reader* reader, uint64_t limit ); /** * Returns the current record limit. * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * * @return Current record limit. * * \ingroup reader */ uint64_t OTF_Reader_getRecordLimit( OTF_Reader* reader ); /** * Resets all filters for timelimit, process selection and record count limit. * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * * \ingroup reader */ void OTF_Reader_reset( OTF_Reader* reader ); /** * Closes all streams that are open in the reader. * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * * @return 1 on success, 0 if an error occurs. * * \ingroup reader */ int OTF_Reader_closeAllStreams( OTF_Reader* reader ); /** depricated. @see OTF_Reader_eventTimeProgress() */ uint8_t OTF_Reader_eventProgress( OTF_Reader* reader, uint64_t* minimum, uint64_t* current, uint64_t* maximum ); /** depricated. @see OTF_Reader_snapshotTimeProgress() */ uint8_t OTF_Reader_snapshotProgress( OTF_Reader* reader, uint64_t* minimum, uint64_t* current, uint64_t* maximum ); /** depricated. @see OTF_Reader_statisticTimeProgress() */ uint8_t OTF_Reader_statisticProgress( OTF_Reader* reader, uint64_t* minimum, uint64_t* current, uint64_t* maximum ); /** * Delivers a progress report for reading events. It is given in terms * of time stamps. A percentage can be computed as * ( current - minimum ) / ( maximum - minimum ). * This computation takes restricted time intervals into account which is not * possible with OTF_Reader_eventBytesProgress(). * * The progress report is only valid after one or several calls to * OTF_Reader_readEvents(). Otherwise the return arguments 'minimum', 'current' * and 'maximum' are undefined! * If 'minimum' > 'maximum' the values are invalid. * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * @param minimum Return value for the minium time. * @param current Return value for the current time. * @param maximum Return value for the maximum time. * * @return 1 on success, 0 if an error occurs. * * \ingroup reader */ uint8_t OTF_Reader_eventTimeProgress( OTF_Reader* reader, uint64_t* minimum, uint64_t* current, uint64_t* maximum ); /** * Delivers a progress report for reading snapshots. It is given in terms * of time stamps. A percentage can be computed as * ( current - minimum ) / ( maximum - minimum ). * This computation takes restricted time intervals into account which is not * possible with OTF_Reader_snapshotBytesProgress(). * * The progress report is only valid after one or several calls to * OTF_Reader_readSnapshots(). Otherwise the return arguments 'minimum', 'current' * and 'maximum' are undefined! * If 'minimum' > 'maximum' the values are invalid. * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * @param minimum Return value for the minium time. * @param current Return value for the current time. * @param maximum Return value for the maximum time. * * @return 1 on success, 0 if an error occurs. * * \ingroup reader */ uint8_t OTF_Reader_snapshotTimeProgress( OTF_Reader* reader, uint64_t* minimum, uint64_t* current, uint64_t* maximum ); /** * Delivers a progress report for reading statistics. It is given in terms * of time stamps. A percentage can be computed as * ( current - minimum ) / ( maximum - minimum ). * This computation takes restricted time intervals into account which is not * possible with OTF_Reader_statisticBytesProgress(). * * The progress report is only valid after one or several calls to * OTF_Reader_readStatistics(). Otherwise the return arguments 'minimum', 'current' * and 'maximum' are undefined! * If 'minimum' > 'maximum' the values are invalid. * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * @param minimum Return value for the minium time. * @param current Return value for the current time. * @param maximum Return value for the maximum time. * * @return 1 on success, 0 if an error occurs. * * \ingroup reader */ uint8_t OTF_Reader_statisticTimeProgress( OTF_Reader* reader, uint64_t* minimum, uint64_t* current, uint64_t* maximum ); /** * Delivers a progress report for reading events. Progress is given in terms * of bytes. The percentage can be computed as ( current - minimum ) / ( maximum - minimum ). * * ATTENTION: This is only a rough estimate of the progress, because it is * computed based on the block I/O from files but not based on the actual bytes * processed. This may result in constant values for small traces. * See also OTF_Reader_eventTimeProgress(): * * This computation takes the read bytes of every active stream into account. * The progress report is only valid after one or several calls to * OTF_Reader_readEvents(). Otherwise the return arguments 'minimum', 'current' and 'maximum' are * undefined! If 'minimum' > 'maximum' the values are invalid. * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * @param minimum Return value for the minium bytes read ( is 0 everytime ). * @param current Return value for the current bytes read. * @param maximum Return value for the filesize. * * @return 1 on success, 0 if an error occurs. * * \ingroup reader */ uint8_t OTF_Reader_eventBytesProgress( OTF_Reader* reader, uint64_t* minimum, uint64_t* current, uint64_t* maximum ); /** * Delivers a progress report for reading snapshots. Progress is given in terms * of bytes. The percentage can be computed as ( current - minimum ) / ( maximum - minimum ). * * ATTENTION: This is only a rough estimate of the progress, because it is * computed based on the block I/O from files but not based on the actual bytes * processed. This may result in constant values for small traces. * See also OTF_Reader_snapshotTimeProgress(): * * This computation takes the read bytes of every active stream into account. * The progress report is only valid after one or several calls to * OTF_Reader_readSnapshots(). Otherwise the return arguments 'minimum', 'current' and 'maximum' are * undefined! If 'minimum' > 'maximum' the values are invalid. * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * @param minimum Return value for the minium bytes read ( is 0 everytime ). * @param current Return value for the current bytes read. * @param maximum Return value for the filesize. * * @return 1 on success, 0 if an error occurs. * * \ingroup reader */ uint8_t OTF_Reader_snapshotBytesProgress( OTF_Reader* reader, uint64_t* minimum, uint64_t* current, uint64_t* maximum ); /** * Delivers a progress report for reading statistics. Progress is given in terms * of bytes. The percentage can be computed as ( current - minimum ) / ( maximum - minimum ). * * ATTENTION: This is only a rough estimate of the progress, because it is * computed based on the block I/O from files but not based on the actual bytes * processed. This may result in constant values for small traces. * See also OTF_Reader_statisticTimeProgress(): * * This computation takes the read bytes of every active stream into account. * The progress report is only valid after one or several calls to * OTF_Reader_readStatistics(). Otherwise the return arguments 'minimum', 'current' and 'maximum' are * undefined! If 'minimum' > 'maximum' the values are invalid. * * @param reader Pointer to an initialized OTF_Reader object. See * also OTF_Reader_open(). * @param minimum Return value for the minium bytes read ( is 0 everytime ). * @param current Return value for the current bytes read. * @param maximum Return value for the filesize. * * @return 1 on success, 0 if an error occurs. * * \ingroup reader */ uint8_t OTF_Reader_statisticBytesProgress( OTF_Reader* reader, uint64_t* minimum, uint64_t* current, uint64_t* maximum ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTF_READER_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_inttypes_unix.h.in0000644000000000000000000000013012544237152024450 xustar0030 mtime=1435582058.539899952 30 atime=1508162279.682462751 28 ctime=1508162366.2057739 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_inttypes_unix.h.in0000644000175000017500000000302212544237152025636 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_inttypes_unix.h * * @brief Deals with all data type related issues. * * \ingroup misc */ #ifndef OTF_INTTYPES_UNIX_H #define OTF_INTTYPES_UNIX_H #define OTF_HAVE_STDINT_H @have_stdint_h@ #define OTF_HAVE_INTTYPES_H @have_inttypes_h@ #define OTF_SIZEOF_LONG @sizeof_long@ #ifdef __sgi # undef OTF_HAVE_STDINT_H # define OTF_HAVE_STDINT_H 0 #endif #if OTF_HAVE_STDINT_H # include #elif OTF_HAVE_INTTYPES_H # include #else /* OTF_HAVE_STDINT_H || OTF_HAVE_INTTYPES_H */ typedef signed char int8_t; typedef signed short int int16_t; typedef signed int int32_t; # if OTF_SIZEOF_LONG == 8 typedef signed long int int64_t; # else /* OTF_SIZEOF_LONG */ typedef signed long long int int64_t; # endif /* OTF_SIZEOF_LONG */ typedef unsigned char uint8_t; typedef unsigned short int uint16_t; typedef unsigned int uint32_t; # if OTF_SIZEOF_LONG == 8 typedef unsigned long int uint64_t; # else /* OTF_SIZEOF_LONG */ typedef unsigned long long int uint64_t; # endif /* OTF_SIZEOF_LONG */ #endif /* OTF_HAVE_INTTYPES_H || OTF_HAVE_STDINT_H */ #ifdef UINT64_MAX # define OTF_UINT64_MAX UINT64_MAX #else /* UINT64_MAX */ # define OTF_UINT64_MAX (uint64_t)-1 #endif /* UINT64_MAX */ #endif /* OTF_INTTYPES_UNIX_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_KeyValue.c0000644000000000000000000000013212544237152022643 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.191376364 30 ctime=1508162366.213774598 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_KeyValue.c0000644000175000017500000004465212544237152024045 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch, Johannes Spazier */ #include "OTF_KeyValue.h" #include "OTF_Errno.h" #include #include uint8_t OTF_KeyValueList_getValue(OTF_KeyValueList *list, uint32_t key, OTF_Type otf_type, OTF_Value *otf_value); OTF_KeyValueList *OTF_KeyValueList_new() { OTF_KeyValueList *list = (OTF_KeyValueList*) malloc( sizeof(OTF_KeyValueList) ); if (list == NULL) { /* error: not enough memory left */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } list->kvBegin = (OTF_KeyValuePairList*) malloc( sizeof(OTF_KeyValuePairList) ); if (list->kvBegin == NULL) { /* error: not enough memory left */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); free(list); return NULL; } list->kvBegin->kvNext = NULL; list->kvBegin->kvPrev = NULL; list->kvEnd = list->kvCurrent = list->kvBegin; list->key_count = 0; list->count = 0; list->size = 1; if( OTF_KeyValueList_realloc(list, 9) ) { /* an error ocurred while realloc */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_KeyValueList_close(list); return NULL; } return list; } uint8_t OTF_KeyValueList_close(OTF_KeyValueList* list) { OTF_KeyValuePairList *next; OTF_KeyValuePairList *p; if (list == NULL) { /* error */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no list has been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return 1; } p = list->kvBegin; while (p->kvNext != NULL) { next = p->kvNext; free(p); p = next; } free(p); free(list); return 0; } OTF_KeyValueList* OTF_KeyValueList_clone(OTF_KeyValueList* list) { OTF_KeyValueList *new_list; new_list = OTF_KeyValueList_new(); if ( new_list == NULL || list == NULL ) { return new_list; } OTF_KeyValueList_appendKeyValueList( new_list, list ); return new_list; } uint8_t OTF_KeyValueList_reset(OTF_KeyValueList* list) { /*OTF_KeyValuePairList *next; OTF_KeyValuePairList *p; int num = 0;*/ if ( list == NULL) { /* error */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no list has been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return 1; } list->kvCurrent = list->kvBegin; list->key_count = 0; list->count = 0; /* deallocate memory, reduce size. */ /* this is likely slower than keep the allocated memory */ /* p = list->kvBegin; while (p != NULL && num < 9) { p = p->kvNext; num++; } list->size = 10; list->kvEnd = p; p = p->kvNext; while (p != NULL) { next = p->kvNext; free(p); p = next; } list->kvEnd->kvNext = NULL; */ return 0; } uint8_t OTF_KeyValueList_realloc(OTF_KeyValueList* list, uint32_t num) { uint32_t i; OTF_KeyValuePairList *p; if (list == NULL) { /* error */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no list has been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return 1; } p = list->kvEnd; for( i=0; ikvNext = (OTF_KeyValuePairList*) malloc( sizeof(OTF_KeyValuePairList) ); if( p->kvNext == NULL) { /* error: not enough memory left */ /* maybe some memory was allocated before, therefore increase list */ list->kvEnd = p; list->size += i; return 1; } p->kvNext->kvPrev = p; p = p->kvNext; p->kvNext = NULL; } list->kvEnd = p; list->size += num; return 0; } uint8_t OTF_KeyValueList_appendPair(OTF_KeyValueList* list, OTF_KeyValuePair pair) { OTF_KeyValuePairList *p; uint32_t i; if (list == NULL) { /* error */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no list has been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return 255; } p = list->kvBegin; /* check if key already exists */ for ( i=0; icount; i++) { /* for byte arrays it is ok that one key can be multiple times in list --> OTF_KeyValueList_appendByteArray() controls the rest */ if ( (p->kvPair.key == pair.key) && ( pair.type != OTF_BYTE_ARRAY ) ) { return 1; } p = p->kvNext; } p = list->kvCurrent; if ( (list->size - list->count) <= 1 ) { if( OTF_KeyValueList_realloc(list, 10) ) { /* an error ocurred while realloc */ if ( (list->size - list->count) < 1 ) { /* if no memory left, return with error */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return 255; } } } if( ( list->kvCurrent->kvPrev == NULL ) || ( list->kvCurrent->kvPrev->kvPair.key != pair.key ) ) { list->key_count++; } p->kvPair = pair; list->kvCurrent = p->kvNext; list->count++; return 0; } uint8_t OTF_KeyValueList_appendChar(OTF_KeyValueList* list, uint32_t key, char value) { OTF_KeyValuePair pair; pair.key = key; pair.type = OTF_CHAR; pair.value.otf_char = value; return OTF_KeyValueList_appendPair(list, pair); } uint8_t OTF_KeyValueList_appendInt8(OTF_KeyValueList* list, uint32_t key, int8_t value) { OTF_KeyValuePair pair; pair.key = key; pair.type = OTF_INT8; pair.value.otf_int8 = value; return OTF_KeyValueList_appendPair(list, pair); } uint8_t OTF_KeyValueList_appendUint8(OTF_KeyValueList* list, uint32_t key, uint8_t value) { OTF_KeyValuePair pair; pair.key = key; pair.type = OTF_UINT8; pair.value.otf_uint8 = value; return OTF_KeyValueList_appendPair(list, pair); } uint8_t OTF_KeyValueList_appendInt16(OTF_KeyValueList* list, uint32_t key, int16_t value) { OTF_KeyValuePair pair; pair.key = key; pair.type = OTF_INT16; pair.value.otf_int16 = value; return OTF_KeyValueList_appendPair(list, pair); } uint8_t OTF_KeyValueList_appendUint16(OTF_KeyValueList* list, uint32_t key, uint16_t value) { OTF_KeyValuePair pair; pair.key = key; pair.type = OTF_UINT16; pair.value.otf_uint16 = value; return OTF_KeyValueList_appendPair(list, pair); } uint8_t OTF_KeyValueList_appendInt32(OTF_KeyValueList* list, uint32_t key, int32_t value) { OTF_KeyValuePair pair; pair.key = key; pair.type = OTF_INT32; pair.value.otf_int32 = value; return OTF_KeyValueList_appendPair(list, pair); } uint8_t OTF_KeyValueList_appendUint32(OTF_KeyValueList* list, uint32_t key, uint32_t value) { OTF_KeyValuePair pair; pair.key = key; pair.type = OTF_UINT32; pair.value.otf_uint32 = value; return OTF_KeyValueList_appendPair(list, pair); } uint8_t OTF_KeyValueList_appendInt64(OTF_KeyValueList* list, uint32_t key, int64_t value) { OTF_KeyValuePair pair; pair.key = key; pair.type = OTF_INT64; pair.value.otf_int64 = value; return OTF_KeyValueList_appendPair(list, pair); } uint8_t OTF_KeyValueList_appendUint64(OTF_KeyValueList* list, uint32_t key, uint64_t value) { OTF_KeyValuePair pair; pair.key = key; pair.type = OTF_UINT64; pair.value.otf_uint64 = value; return OTF_KeyValueList_appendPair(list, pair); } uint8_t OTF_KeyValueList_appendFloat(OTF_KeyValueList* list, uint32_t key, float value) { OTF_KeyValuePair pair; pair.key = key; pair.type = OTF_FLOAT; pair.value.otf_float = value; return OTF_KeyValueList_appendPair(list, pair); } uint8_t OTF_KeyValueList_appendDouble(OTF_KeyValueList* list, uint32_t key, double value) { OTF_KeyValuePair pair; pair.key = key; pair.type = OTF_DOUBLE; pair.value.otf_double = value; return OTF_KeyValueList_appendPair(list, pair); } uint8_t OTF_KeyValueList_appendByteArray(OTF_KeyValueList* list, uint32_t key, uint8_t *value, uint32_t len) { OTF_KeyValuePair pair; uint32_t remaining_len = len; uint8_t ret = 0; /* check here if key is not in list */ if( ! OTF_KeyValueList_hasKey( list, key ) ) { /* key already in list */ return 1; } while( ( remaining_len > 0 ) && ( ! ret ) ) { len = remaining_len; if (remaining_len > OTF_KEYVALUE_MAX_ARRAY_LEN) { len = OTF_KEYVALUE_MAX_ARRAY_LEN; } pair.key = key; pair.type = OTF_BYTE_ARRAY; memcpy(pair.value.otf_byte_array.array, value, len); value+=len; pair.value.otf_byte_array.len = remaining_len; ret = OTF_KeyValueList_appendPair(list, pair); remaining_len -= len; } return ret; } uint8_t OTF_KeyValueList_appendKeyValueList(OTF_KeyValueList *dest_list, OTF_KeyValueList *source_list) { OTF_KeyValuePairList *p; uint32_t i; if ( source_list == NULL) { return 1; } p = source_list->kvBegin; for( i = 0; i < source_list->count; i++ ) { if ( 255 == OTF_KeyValueList_appendPair(dest_list, p->kvPair) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "error while appending OTF_KeyValueList.\n", __FUNCTION__, __FILE__, __LINE__ ); return 1; } p = p->kvNext; } return 0; } double OTF_Int64ToDouble(uint64_t value) { double *d = (double*) &value; return *d; } uint64_t OTF_DoubleToInt64(double value) { uint64_t *i = (uint64_t*) &value; return *i; } float OTF_Int32ToFloat(uint32_t value) { float *d = (float*) &value; return *d; } uint32_t OTF_FloatToInt32(float value) { uint32_t *i = (uint32_t*) &value; return *i; } uint8_t OTF_KeyValueList_getValue(OTF_KeyValueList *list, uint32_t key, OTF_Type otf_type, OTF_Value *otf_value) { OTF_KeyValuePairList *p; uint32_t i; if (list == NULL) { /* error */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no list has been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return 255; } p = list->kvBegin; /* search key */ for ( i=0; icount; i++) { if ( p->kvPair.key == key ) { if ( p->kvPair.type == otf_type) { *otf_value = p->kvPair.value; /* found matching key and type, all right */ return 0; } else { /* type of found key differs */ return 2; } } p = p->kvNext; } /* no key in list matches the searched key */ return 1; } uint8_t OTF_KeyValueList_getChar(OTF_KeyValueList *list, uint32_t key, char *value) { OTF_Value otf_value; int ret; if( ! (ret = OTF_KeyValueList_getValue(list, key, OTF_CHAR, &otf_value)) ) { *value = otf_value.otf_char; } return ret; } uint8_t OTF_KeyValueList_getInt8(OTF_KeyValueList *list, uint32_t key, int8_t *value) { OTF_Value otf_value; int ret; if( ! (ret = OTF_KeyValueList_getValue(list, key, OTF_INT8, &otf_value)) ) { *value = otf_value.otf_int8; } return ret; } uint8_t OTF_KeyValueList_getUint8(OTF_KeyValueList *list, uint32_t key, uint8_t *value) { OTF_Value otf_value; int ret; if( ! (ret = OTF_KeyValueList_getValue(list, key, OTF_UINT8, &otf_value)) ) { *value = otf_value.otf_uint8; } return ret; } uint8_t OTF_KeyValueList_getInt16(OTF_KeyValueList *list, uint32_t key, int16_t *value) { OTF_Value otf_value; int ret; if( ! (ret = OTF_KeyValueList_getValue(list, key, OTF_INT16, &otf_value)) ) { *value = otf_value.otf_int16; } return ret; } uint8_t OTF_KeyValueList_getUint16(OTF_KeyValueList *list, uint32_t key, uint16_t *value) { OTF_Value otf_value; int ret; if( ! (ret = OTF_KeyValueList_getValue(list, key, OTF_UINT16, &otf_value)) ) { *value = otf_value.otf_uint16; } return ret; } uint8_t OTF_KeyValueList_getInt32(OTF_KeyValueList *list, uint32_t key, int32_t *value) { OTF_Value otf_value; int ret; if( ! (ret = OTF_KeyValueList_getValue(list, key, OTF_INT32, &otf_value)) ) { *value = otf_value.otf_int32; } return ret; } uint8_t OTF_KeyValueList_getUint32(OTF_KeyValueList *list, uint32_t key, uint32_t *value) { OTF_Value otf_value; int ret; if( ! (ret = OTF_KeyValueList_getValue(list, key, OTF_UINT32, &otf_value)) ) { *value = otf_value.otf_uint32; } return ret; } uint8_t OTF_KeyValueList_getInt64(OTF_KeyValueList *list, uint32_t key, int64_t *value) { OTF_Value otf_value; int ret; if( ! (ret = OTF_KeyValueList_getValue(list, key, OTF_INT64, &otf_value)) ) { *value = otf_value.otf_int64; } return ret; } uint8_t OTF_KeyValueList_getUint64(OTF_KeyValueList *list, uint32_t key, uint64_t *value) { OTF_Value otf_value; int ret; if( ! (ret = OTF_KeyValueList_getValue(list, key, OTF_UINT64, &otf_value)) ) { *value = otf_value.otf_uint64; } return ret; } uint8_t OTF_KeyValueList_getFloat(OTF_KeyValueList *list, uint32_t key, float *value) { OTF_Value otf_value; int ret; if( ! (ret = OTF_KeyValueList_getValue(list, key, OTF_FLOAT, &otf_value)) ) { *value = otf_value.otf_float; } return ret; } uint8_t OTF_KeyValueList_getDouble(OTF_KeyValueList *list, uint32_t key, double *value) { OTF_Value otf_value; int ret; if( ! (ret = OTF_KeyValueList_getValue(list, key, OTF_DOUBLE, &otf_value)) ) { *value = otf_value.otf_double; } return ret; } uint8_t OTF_KeyValueList_getByteArray(OTF_KeyValueList *list, uint32_t key, uint8_t *value, uint32_t *len) { OTF_KeyValuePairList *p; uint32_t i; uint32_t max_len; if (list == NULL) { /* error */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no list has been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return 255; } p = list->kvBegin; max_len = *len; *len = 0; /* search key */ for ( i=0; icount; i++) { if ( p->kvPair.key == key ) { if ( p->kvPair.type == OTF_BYTE_ARRAY) { if( p->kvPair.value.otf_byte_array.len <= OTF_KEYVALUE_MAX_ARRAY_LEN ) { if( ( *len + p->kvPair.value.otf_byte_array.len ) > max_len ) { /* allocated memory pointed by "value" is not big enough to store the howle byte array */ /* fill memory until the end and exit with an error-code */ memcpy(value, p->kvPair.value.otf_byte_array.array, max_len - *len); *len = max_len; return 255; } *len += p->kvPair.value.otf_byte_array.len; memcpy(value, p->kvPair.value.otf_byte_array.array, p->kvPair.value.otf_byte_array.len); /* end of byte array reached, all right */ return 0; } else { if( ( *len + OTF_KEYVALUE_MAX_ARRAY_LEN ) > max_len ) { /* allocated memory pointed by "value" is not big enough to store the howle byte array */ /* fill memory until the end and exit with an error-code */ memcpy(value, p->kvPair.value.otf_byte_array.array, max_len - *len); *len = max_len; return 255; } *len += OTF_KEYVALUE_MAX_ARRAY_LEN; memcpy(value, p->kvPair.value.otf_byte_array.array, OTF_KEYVALUE_MAX_ARRAY_LEN); value += OTF_KEYVALUE_MAX_ARRAY_LEN; } } else { /* type of found key differs */ return 2; } } else { if( *len > 0 ) { /* byte-array not completed */ return 255; } } p = p->kvNext; } /* no key in list matches the searched key */ return 1; } uint8_t OTF_KeyValueList_getArrayLength(OTF_KeyValueList *list, uint32_t key, uint32_t *len) { OTF_Value otf_value; int ret; if( ! (ret = OTF_KeyValueList_getValue(list, key, OTF_BYTE_ARRAY, &otf_value)) ) { *len = otf_value.otf_byte_array.len; } return ret; } OTF_Type OTF_KeyValueList_getTypeForKey(OTF_KeyValueList *list, uint32_t key) { OTF_KeyValuePairList *p; uint32_t i; if (list == NULL) { /* error */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no list has been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return OTF_UNKNOWN; } p = list->kvBegin; /* search key */ for ( i=0; icount; i++) { if ( p->kvPair.key == key ) { /* found matching key, all right, return type */ return p->kvPair.type; } p = p->kvNext; } return OTF_UNKNOWN; } uint8_t OTF_KeyValueList_hasKey(OTF_KeyValueList *list, uint32_t key) { OTF_KeyValuePairList *p; uint32_t i; if (list == NULL) { /* error */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no list has been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return 2; } p = list->kvBegin; /* search key */ for ( i=0; icount; i++) { if ( p->kvPair.key == key ) { /* found matching key, all right, return true */ return 0; } p = p->kvNext; } /* key not found, return false */ return 1; } uint8_t OTF_KeyValueList_removeKey(OTF_KeyValueList *list, uint32_t key) { OTF_KeyValuePairList *p; uint32_t i; if (list == NULL) { /* error */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no list has been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return 2; } p = list->kvBegin; /* search key */ for ( i=0; icount; i++) { if ( p->kvPair.key == key ) { /* found matching key, remove them, return true */ if ( p->kvPrev ) { p->kvPrev->kvNext = p->kvNext; } else { list->kvBegin = p->kvNext; } if ( p->kvNext ) { p->kvNext->kvPrev = p->kvPrev; } /* move the deleted element after the end of the list */ p->kvPrev = list->kvEnd; p->kvNext = NULL; list->kvEnd->kvNext=p; list->kvEnd= p; list->count--; return 0; } p = p->kvNext; } /* key not found, return false */ return 1; } uint8_t OTF_KeyValueList_getKeyByIndex(OTF_KeyValueList *list, uint32_t index, uint32_t *key) { OTF_KeyValuePairList *p; uint32_t i; uint32_t prev_key = 0; if (list == NULL) { /* error */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no list has been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return 2; } if (index >= list->key_count) { /* no key for this index */ return 1; } p = list->kvBegin; prev_key = p->kvPair.key; /* go to key */ for ( i=0; ikvNext; if( p->kvPair.key == prev_key ) { i--; } prev_key = p->kvPair.key; } /* save found key for index */ *key = p->kvPair.key; return 0; } uint8_t OTF_KeyValueList_getPairByIndex(OTF_KeyValueList *list, uint32_t index, OTF_KeyValuePair **pair) { OTF_KeyValuePairList *p; uint32_t i; uint32_t prev_key = 0; if (list == NULL) { /* error */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no list has been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return 2; } if (index >= list->key_count) { /* no key for this index */ return 1; } p = list->kvBegin; prev_key = p->kvPair.key; /* go to key */ for ( i=0; ikvNext; if( p->kvPair.key == prev_key ) { i--; } prev_key = p->kvPair.key; } /* save found key-value pair for index */ *pair = &(p->kvPair); return 0; } uint32_t OTF_KeyValueList_getCount(OTF_KeyValueList *list) { return list->key_count; } eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/Makefile.in0000644000000000000000000000012713171135225022306 xustar0029 mtime=1508162197.67223612 30 atime=1508162279.666461455 28 ctime=1508162366.2057739 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/Makefile.in0000644000175000017500000014673613171135225023512 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = otflib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/m4/libtool.m4 \ $(top_srcdir)/config/m4/ltoptions.m4 \ $(top_srcdir)/config/m4/ltsugar.m4 \ $(top_srcdir)/config/m4/ltversion.m4 \ $(top_srcdir)/config/m4/lt~obsolete.m4 \ $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/config/m4/acinclude.debug.m4 \ $(top_srcdir)/config/m4/acinclude.math.m4 \ $(top_srcdir)/config/m4/acinclude.mpi.m4 \ $(top_srcdir)/config/m4/acinclude.omp.m4 \ $(top_srcdir)/config/m4/acinclude.pdflatex_pgfplots.m4 \ $(top_srcdir)/config/m4/acinclude.swig_python.m4 \ $(top_srcdir)/config/m4/acinclude.vtf3.m4 \ $(top_srcdir)/config/m4/acinclude.verbose.m4 \ $(top_srcdir)/config/m4/acinclude.zlib.m4 \ $(top_srcdir)/config/m4/acinclude.zoidfs.m4 \ $(top_srcdir)/config/m4/acarchive/ax_mpi.m4 \ $(top_srcdir)/config/m4/acarchive/ax_openmp.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \ $(noinst_HEADERS) $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = OTF_inttypes_unix.h OTF_Version.h CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" \ "$(DESTDIR)$(includedir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = libopen_trace_format_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) am_libopen_trace_format_la_OBJECTS = \ libopen_trace_format_la-OTF_CopyHandler.lo \ libopen_trace_format_la-OTF_CopyHandler_stream.lo \ libopen_trace_format_la-OTF_Errno.lo \ libopen_trace_format_la-OTF_File.lo \ libopen_trace_format_la-OTF_File_iofsl.lo \ libopen_trace_format_la-OTF_FileManager.lo \ libopen_trace_format_la-OTF_Filenames.lo \ libopen_trace_format_la-OTF_HandlerArray.lo \ libopen_trace_format_la-OTF_KeyValue.lo \ libopen_trace_format_la-OTF_MasterControl.lo \ libopen_trace_format_la-OTF_Parse.lo \ libopen_trace_format_la-OTF_Platform.lo \ libopen_trace_format_la-OTF_RBuffer.lo \ libopen_trace_format_la-OTF_Reader.lo \ libopen_trace_format_la-OTF_RStream.lo \ libopen_trace_format_la-OTF_WBuffer.lo \ libopen_trace_format_la-OTF_Writer.lo \ libopen_trace_format_la-OTF_WStream.lo \ libopen_trace_format_la-OTF_inttypes.lo libopen_trace_format_la_OBJECTS = \ $(am_libopen_trace_format_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libopen_trace_format_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(libopen_trace_format_la_CFLAGS) $(CFLAGS) \ $(libopen_trace_format_la_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libopen_trace_format_la_SOURCES) DIST_SOURCES = $(libopen_trace_format_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(include_HEADERS) $(nodist_include_HEADERS) \ $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/OTF_Version.h.in \ $(srcdir)/OTF_inttypes_unix.h.in $(top_srcdir)/config/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BMI_INCLUDE_DIR = @BMI_INCLUDE_DIR@ BMI_LIB_DIR = @BMI_LIB_DIR@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLOCK_GETTIME_LIB = @CLOCK_GETTIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATHLIB = @MATHLIB@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICFLAGS = @MPICFLAGS@ MPICXX = @MPICXX@ MPICXXFLAGS = @MPICXXFLAGS@ MPILIBS = @MPILIBS@ MPI_INCLUDE_DIR = @MPI_INCLUDE_DIR@ MPI_INCLUDE_LINE = @MPI_INCLUDE_LINE@ MPI_LIB_DIR = @MPI_LIB_DIR@ MPI_LIB_LINE = @MPI_LIB_LINE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENMP_CXXFLAGS = @OPENMP_CXXFLAGS@ OTF_VERSION_LIBRARY = @OTF_VERSION_LIBRARY@ OTF_VERSION_MAJOR = @OTF_VERSION_MAJOR@ OTF_VERSION_MINOR = @OTF_VERSION_MINOR@ OTF_VERSION_STRING = @OTF_VERSION_STRING@ OTF_VERSION_SUB = @OTF_VERSION_SUB@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFTEX = @PDFTEX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SWIG = @SWIG@ SWIG_PYTHON_CFLAGS = @SWIG_PYTHON_CFLAGS@ SWIG_PYTHON_OPTS = @SWIG_PYTHON_OPTS@ VERSION = @VERSION@ VTF3_INCLUDE_DIR = @VTF3_INCLUDE_DIR@ VTF3_INCLUDE_LINE = @VTF3_INCLUDE_LINE@ VTF3_LIB_DIR = @VTF3_LIB_DIR@ VTF3_LIB_LINE = @VTF3_LIB_LINE@ ZLIB_INCLUDE_DIR = @ZLIB_INCLUDE_DIR@ ZLIB_INCLUDE_LINE = @ZLIB_INCLUDE_LINE@ ZLIB_LIB_DIR = @ZLIB_LIB_DIR@ ZLIB_LIB_LINE = @ZLIB_LIB_LINE@ ZOIDFS_INCLUDE_DIR = @ZOIDFS_INCLUDE_DIR@ ZOIDFS_INCLUDE_LINE = @ZOIDFS_INCLUDE_LINE@ ZOIDFS_LIB_DIR = @ZOIDFS_LIB_DIR@ ZOIDFS_LIB_LINE = @ZOIDFS_LIB_LINE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ have_inttypes_h = @have_inttypes_h@ have_stdint_h = @have_stdint_h@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ python_config = @python_config@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sizeof_long = @sizeof_long@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = $(ZLIB_INCLUDE_LINE) $(ZOIDFS_INCLUDE_LINE) include_HEADERS = otf.h \ OTF_CopyHandler.h \ OTF_CopyHandler_stream.h \ OTF_Definitions.h \ OTF_Errno.h \ OTF_File.h \ OTF_File_iofsl.h \ OTF_FileManager.h \ OTF_Filenames.h \ OTF_HandlerArray.h \ OTF_inttypes.h \ OTF_KeyValue.h \ OTF_MasterControl.h \ OTF_RBuffer.h \ OTF_RStream.h \ OTF_Reader.h \ OTF_WBuffer.h \ OTF_WStream.h \ OTF_Writer.h nodist_include_HEADERS = \ OTF_inttypes_unix.h \ OTF_Version.h noinst_HEADERS = OTF_Handler.h \ OTF_Keywords.h \ OTF_Parse.h \ OTF_Platform.h \ OTF_Platform_unix.h lib_LTLIBRARIES = libopen-trace-format.la libopen_trace_format_la_CFLAGS = -prefer-pic libopen_trace_format_la_LDFLAGS = -version-info @OTF_VERSION_LIBRARY@ libopen_trace_format_la_LIBADD = $(ZLIB_LIB_LINE) $(ZOIDFS_LIB_LINE) libopen_trace_format_la_SOURCES = \ OTF_CopyHandler.c \ OTF_CopyHandler_stream.c \ OTF_Errno.c \ OTF_File.c \ OTF_File_iofsl.c \ OTF_FileManager.c \ OTF_Filenames.c \ OTF_HandlerArray.c \ OTF_KeyValue.c \ OTF_MasterControl.c \ OTF_Parse.c \ OTF_Platform.c \ OTF_RBuffer.c \ OTF_Reader.c \ OTF_RStream.c \ OTF_WBuffer.c \ OTF_Writer.c \ OTF_WStream.c \ OTF_inttypes.c EXTRA_DIST = \ OTF_Platform_win.h \ OTF_inttypes_win.h \ libotf_vs08.vcproj all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign otflib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign otflib/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): OTF_inttypes_unix.h: $(top_builddir)/config.status $(srcdir)/OTF_inttypes_unix.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ OTF_Version.h: $(top_builddir)/config.status $(srcdir)/OTF_Version.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libopen-trace-format.la: $(libopen_trace_format_la_OBJECTS) $(libopen_trace_format_la_DEPENDENCIES) $(EXTRA_libopen_trace_format_la_DEPENDENCIES) $(AM_V_CCLD)$(libopen_trace_format_la_LINK) -rpath $(libdir) $(libopen_trace_format_la_OBJECTS) $(libopen_trace_format_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopen_trace_format_la-OTF_CopyHandler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopen_trace_format_la-OTF_CopyHandler_stream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopen_trace_format_la-OTF_Errno.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopen_trace_format_la-OTF_File.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopen_trace_format_la-OTF_FileManager.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopen_trace_format_la-OTF_File_iofsl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopen_trace_format_la-OTF_Filenames.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopen_trace_format_la-OTF_HandlerArray.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopen_trace_format_la-OTF_KeyValue.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopen_trace_format_la-OTF_MasterControl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopen_trace_format_la-OTF_Parse.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopen_trace_format_la-OTF_Platform.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopen_trace_format_la-OTF_RBuffer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopen_trace_format_la-OTF_RStream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopen_trace_format_la-OTF_Reader.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopen_trace_format_la-OTF_WBuffer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopen_trace_format_la-OTF_WStream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopen_trace_format_la-OTF_Writer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopen_trace_format_la-OTF_inttypes.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libopen_trace_format_la-OTF_CopyHandler.lo: OTF_CopyHandler.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -MT libopen_trace_format_la-OTF_CopyHandler.lo -MD -MP -MF $(DEPDIR)/libopen_trace_format_la-OTF_CopyHandler.Tpo -c -o libopen_trace_format_la-OTF_CopyHandler.lo `test -f 'OTF_CopyHandler.c' || echo '$(srcdir)/'`OTF_CopyHandler.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libopen_trace_format_la-OTF_CopyHandler.Tpo $(DEPDIR)/libopen_trace_format_la-OTF_CopyHandler.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTF_CopyHandler.c' object='libopen_trace_format_la-OTF_CopyHandler.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -c -o libopen_trace_format_la-OTF_CopyHandler.lo `test -f 'OTF_CopyHandler.c' || echo '$(srcdir)/'`OTF_CopyHandler.c libopen_trace_format_la-OTF_CopyHandler_stream.lo: OTF_CopyHandler_stream.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -MT libopen_trace_format_la-OTF_CopyHandler_stream.lo -MD -MP -MF $(DEPDIR)/libopen_trace_format_la-OTF_CopyHandler_stream.Tpo -c -o libopen_trace_format_la-OTF_CopyHandler_stream.lo `test -f 'OTF_CopyHandler_stream.c' || echo '$(srcdir)/'`OTF_CopyHandler_stream.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libopen_trace_format_la-OTF_CopyHandler_stream.Tpo $(DEPDIR)/libopen_trace_format_la-OTF_CopyHandler_stream.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTF_CopyHandler_stream.c' object='libopen_trace_format_la-OTF_CopyHandler_stream.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -c -o libopen_trace_format_la-OTF_CopyHandler_stream.lo `test -f 'OTF_CopyHandler_stream.c' || echo '$(srcdir)/'`OTF_CopyHandler_stream.c libopen_trace_format_la-OTF_Errno.lo: OTF_Errno.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -MT libopen_trace_format_la-OTF_Errno.lo -MD -MP -MF $(DEPDIR)/libopen_trace_format_la-OTF_Errno.Tpo -c -o libopen_trace_format_la-OTF_Errno.lo `test -f 'OTF_Errno.c' || echo '$(srcdir)/'`OTF_Errno.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libopen_trace_format_la-OTF_Errno.Tpo $(DEPDIR)/libopen_trace_format_la-OTF_Errno.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTF_Errno.c' object='libopen_trace_format_la-OTF_Errno.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -c -o libopen_trace_format_la-OTF_Errno.lo `test -f 'OTF_Errno.c' || echo '$(srcdir)/'`OTF_Errno.c libopen_trace_format_la-OTF_File.lo: OTF_File.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -MT libopen_trace_format_la-OTF_File.lo -MD -MP -MF $(DEPDIR)/libopen_trace_format_la-OTF_File.Tpo -c -o libopen_trace_format_la-OTF_File.lo `test -f 'OTF_File.c' || echo '$(srcdir)/'`OTF_File.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libopen_trace_format_la-OTF_File.Tpo $(DEPDIR)/libopen_trace_format_la-OTF_File.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTF_File.c' object='libopen_trace_format_la-OTF_File.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -c -o libopen_trace_format_la-OTF_File.lo `test -f 'OTF_File.c' || echo '$(srcdir)/'`OTF_File.c libopen_trace_format_la-OTF_File_iofsl.lo: OTF_File_iofsl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -MT libopen_trace_format_la-OTF_File_iofsl.lo -MD -MP -MF $(DEPDIR)/libopen_trace_format_la-OTF_File_iofsl.Tpo -c -o libopen_trace_format_la-OTF_File_iofsl.lo `test -f 'OTF_File_iofsl.c' || echo '$(srcdir)/'`OTF_File_iofsl.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libopen_trace_format_la-OTF_File_iofsl.Tpo $(DEPDIR)/libopen_trace_format_la-OTF_File_iofsl.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTF_File_iofsl.c' object='libopen_trace_format_la-OTF_File_iofsl.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -c -o libopen_trace_format_la-OTF_File_iofsl.lo `test -f 'OTF_File_iofsl.c' || echo '$(srcdir)/'`OTF_File_iofsl.c libopen_trace_format_la-OTF_FileManager.lo: OTF_FileManager.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -MT libopen_trace_format_la-OTF_FileManager.lo -MD -MP -MF $(DEPDIR)/libopen_trace_format_la-OTF_FileManager.Tpo -c -o libopen_trace_format_la-OTF_FileManager.lo `test -f 'OTF_FileManager.c' || echo '$(srcdir)/'`OTF_FileManager.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libopen_trace_format_la-OTF_FileManager.Tpo $(DEPDIR)/libopen_trace_format_la-OTF_FileManager.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTF_FileManager.c' object='libopen_trace_format_la-OTF_FileManager.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -c -o libopen_trace_format_la-OTF_FileManager.lo `test -f 'OTF_FileManager.c' || echo '$(srcdir)/'`OTF_FileManager.c libopen_trace_format_la-OTF_Filenames.lo: OTF_Filenames.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -MT libopen_trace_format_la-OTF_Filenames.lo -MD -MP -MF $(DEPDIR)/libopen_trace_format_la-OTF_Filenames.Tpo -c -o libopen_trace_format_la-OTF_Filenames.lo `test -f 'OTF_Filenames.c' || echo '$(srcdir)/'`OTF_Filenames.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libopen_trace_format_la-OTF_Filenames.Tpo $(DEPDIR)/libopen_trace_format_la-OTF_Filenames.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTF_Filenames.c' object='libopen_trace_format_la-OTF_Filenames.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -c -o libopen_trace_format_la-OTF_Filenames.lo `test -f 'OTF_Filenames.c' || echo '$(srcdir)/'`OTF_Filenames.c libopen_trace_format_la-OTF_HandlerArray.lo: OTF_HandlerArray.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -MT libopen_trace_format_la-OTF_HandlerArray.lo -MD -MP -MF $(DEPDIR)/libopen_trace_format_la-OTF_HandlerArray.Tpo -c -o libopen_trace_format_la-OTF_HandlerArray.lo `test -f 'OTF_HandlerArray.c' || echo '$(srcdir)/'`OTF_HandlerArray.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libopen_trace_format_la-OTF_HandlerArray.Tpo $(DEPDIR)/libopen_trace_format_la-OTF_HandlerArray.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTF_HandlerArray.c' object='libopen_trace_format_la-OTF_HandlerArray.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -c -o libopen_trace_format_la-OTF_HandlerArray.lo `test -f 'OTF_HandlerArray.c' || echo '$(srcdir)/'`OTF_HandlerArray.c libopen_trace_format_la-OTF_KeyValue.lo: OTF_KeyValue.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -MT libopen_trace_format_la-OTF_KeyValue.lo -MD -MP -MF $(DEPDIR)/libopen_trace_format_la-OTF_KeyValue.Tpo -c -o libopen_trace_format_la-OTF_KeyValue.lo `test -f 'OTF_KeyValue.c' || echo '$(srcdir)/'`OTF_KeyValue.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libopen_trace_format_la-OTF_KeyValue.Tpo $(DEPDIR)/libopen_trace_format_la-OTF_KeyValue.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTF_KeyValue.c' object='libopen_trace_format_la-OTF_KeyValue.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -c -o libopen_trace_format_la-OTF_KeyValue.lo `test -f 'OTF_KeyValue.c' || echo '$(srcdir)/'`OTF_KeyValue.c libopen_trace_format_la-OTF_MasterControl.lo: OTF_MasterControl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -MT libopen_trace_format_la-OTF_MasterControl.lo -MD -MP -MF $(DEPDIR)/libopen_trace_format_la-OTF_MasterControl.Tpo -c -o libopen_trace_format_la-OTF_MasterControl.lo `test -f 'OTF_MasterControl.c' || echo '$(srcdir)/'`OTF_MasterControl.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libopen_trace_format_la-OTF_MasterControl.Tpo $(DEPDIR)/libopen_trace_format_la-OTF_MasterControl.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTF_MasterControl.c' object='libopen_trace_format_la-OTF_MasterControl.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -c -o libopen_trace_format_la-OTF_MasterControl.lo `test -f 'OTF_MasterControl.c' || echo '$(srcdir)/'`OTF_MasterControl.c libopen_trace_format_la-OTF_Parse.lo: OTF_Parse.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -MT libopen_trace_format_la-OTF_Parse.lo -MD -MP -MF $(DEPDIR)/libopen_trace_format_la-OTF_Parse.Tpo -c -o libopen_trace_format_la-OTF_Parse.lo `test -f 'OTF_Parse.c' || echo '$(srcdir)/'`OTF_Parse.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libopen_trace_format_la-OTF_Parse.Tpo $(DEPDIR)/libopen_trace_format_la-OTF_Parse.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTF_Parse.c' object='libopen_trace_format_la-OTF_Parse.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -c -o libopen_trace_format_la-OTF_Parse.lo `test -f 'OTF_Parse.c' || echo '$(srcdir)/'`OTF_Parse.c libopen_trace_format_la-OTF_Platform.lo: OTF_Platform.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -MT libopen_trace_format_la-OTF_Platform.lo -MD -MP -MF $(DEPDIR)/libopen_trace_format_la-OTF_Platform.Tpo -c -o libopen_trace_format_la-OTF_Platform.lo `test -f 'OTF_Platform.c' || echo '$(srcdir)/'`OTF_Platform.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libopen_trace_format_la-OTF_Platform.Tpo $(DEPDIR)/libopen_trace_format_la-OTF_Platform.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTF_Platform.c' object='libopen_trace_format_la-OTF_Platform.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -c -o libopen_trace_format_la-OTF_Platform.lo `test -f 'OTF_Platform.c' || echo '$(srcdir)/'`OTF_Platform.c libopen_trace_format_la-OTF_RBuffer.lo: OTF_RBuffer.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -MT libopen_trace_format_la-OTF_RBuffer.lo -MD -MP -MF $(DEPDIR)/libopen_trace_format_la-OTF_RBuffer.Tpo -c -o libopen_trace_format_la-OTF_RBuffer.lo `test -f 'OTF_RBuffer.c' || echo '$(srcdir)/'`OTF_RBuffer.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libopen_trace_format_la-OTF_RBuffer.Tpo $(DEPDIR)/libopen_trace_format_la-OTF_RBuffer.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTF_RBuffer.c' object='libopen_trace_format_la-OTF_RBuffer.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -c -o libopen_trace_format_la-OTF_RBuffer.lo `test -f 'OTF_RBuffer.c' || echo '$(srcdir)/'`OTF_RBuffer.c libopen_trace_format_la-OTF_Reader.lo: OTF_Reader.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -MT libopen_trace_format_la-OTF_Reader.lo -MD -MP -MF $(DEPDIR)/libopen_trace_format_la-OTF_Reader.Tpo -c -o libopen_trace_format_la-OTF_Reader.lo `test -f 'OTF_Reader.c' || echo '$(srcdir)/'`OTF_Reader.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libopen_trace_format_la-OTF_Reader.Tpo $(DEPDIR)/libopen_trace_format_la-OTF_Reader.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTF_Reader.c' object='libopen_trace_format_la-OTF_Reader.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -c -o libopen_trace_format_la-OTF_Reader.lo `test -f 'OTF_Reader.c' || echo '$(srcdir)/'`OTF_Reader.c libopen_trace_format_la-OTF_RStream.lo: OTF_RStream.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -MT libopen_trace_format_la-OTF_RStream.lo -MD -MP -MF $(DEPDIR)/libopen_trace_format_la-OTF_RStream.Tpo -c -o libopen_trace_format_la-OTF_RStream.lo `test -f 'OTF_RStream.c' || echo '$(srcdir)/'`OTF_RStream.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libopen_trace_format_la-OTF_RStream.Tpo $(DEPDIR)/libopen_trace_format_la-OTF_RStream.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTF_RStream.c' object='libopen_trace_format_la-OTF_RStream.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -c -o libopen_trace_format_la-OTF_RStream.lo `test -f 'OTF_RStream.c' || echo '$(srcdir)/'`OTF_RStream.c libopen_trace_format_la-OTF_WBuffer.lo: OTF_WBuffer.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -MT libopen_trace_format_la-OTF_WBuffer.lo -MD -MP -MF $(DEPDIR)/libopen_trace_format_la-OTF_WBuffer.Tpo -c -o libopen_trace_format_la-OTF_WBuffer.lo `test -f 'OTF_WBuffer.c' || echo '$(srcdir)/'`OTF_WBuffer.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libopen_trace_format_la-OTF_WBuffer.Tpo $(DEPDIR)/libopen_trace_format_la-OTF_WBuffer.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTF_WBuffer.c' object='libopen_trace_format_la-OTF_WBuffer.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -c -o libopen_trace_format_la-OTF_WBuffer.lo `test -f 'OTF_WBuffer.c' || echo '$(srcdir)/'`OTF_WBuffer.c libopen_trace_format_la-OTF_Writer.lo: OTF_Writer.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -MT libopen_trace_format_la-OTF_Writer.lo -MD -MP -MF $(DEPDIR)/libopen_trace_format_la-OTF_Writer.Tpo -c -o libopen_trace_format_la-OTF_Writer.lo `test -f 'OTF_Writer.c' || echo '$(srcdir)/'`OTF_Writer.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libopen_trace_format_la-OTF_Writer.Tpo $(DEPDIR)/libopen_trace_format_la-OTF_Writer.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTF_Writer.c' object='libopen_trace_format_la-OTF_Writer.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -c -o libopen_trace_format_la-OTF_Writer.lo `test -f 'OTF_Writer.c' || echo '$(srcdir)/'`OTF_Writer.c libopen_trace_format_la-OTF_WStream.lo: OTF_WStream.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -MT libopen_trace_format_la-OTF_WStream.lo -MD -MP -MF $(DEPDIR)/libopen_trace_format_la-OTF_WStream.Tpo -c -o libopen_trace_format_la-OTF_WStream.lo `test -f 'OTF_WStream.c' || echo '$(srcdir)/'`OTF_WStream.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libopen_trace_format_la-OTF_WStream.Tpo $(DEPDIR)/libopen_trace_format_la-OTF_WStream.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTF_WStream.c' object='libopen_trace_format_la-OTF_WStream.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -c -o libopen_trace_format_la-OTF_WStream.lo `test -f 'OTF_WStream.c' || echo '$(srcdir)/'`OTF_WStream.c libopen_trace_format_la-OTF_inttypes.lo: OTF_inttypes.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -MT libopen_trace_format_la-OTF_inttypes.lo -MD -MP -MF $(DEPDIR)/libopen_trace_format_la-OTF_inttypes.Tpo -c -o libopen_trace_format_la-OTF_inttypes.lo `test -f 'OTF_inttypes.c' || echo '$(srcdir)/'`OTF_inttypes.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libopen_trace_format_la-OTF_inttypes.Tpo $(DEPDIR)/libopen_trace_format_la-OTF_inttypes.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='OTF_inttypes.c' object='libopen_trace_format_la-OTF_inttypes.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libopen_trace_format_la_CFLAGS) $(CFLAGS) -c -o libopen_trace_format_la-OTF_inttypes.lo `test -f 'OTF_inttypes.c' || echo '$(srcdir)/'`OTF_inttypes.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) install-nodist_includeHEADERS: $(nodist_include_HEADERS) @$(NORMAL_INSTALL) @list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-nodist_includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-includeHEADERS install-nodist_includeHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES \ uninstall-nodist_includeHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am \ install-includeHEADERS install-info install-info-am \ install-libLTLIBRARIES install-man \ install-nodist_includeHEADERS install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-includeHEADERS \ uninstall-libLTLIBRARIES uninstall-nodist_includeHEADERS .PRECIOUS: Makefile .PHONY: doc doc: doxygen # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_Platform_unix.h0000644000000000000000000000013112544237152023751 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.151375364 29 ctime=1508162366.20177355 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_Platform_unix.h0000644000175000017500000000354012544237152025143 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_Platform_unix.h * * @brief Deals with platform dependend issues. * * \ingroup internal */ #ifndef OTF_PLATFORM_UNIX_H #define OTF_PLATFORM_UNIX_H #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #if defined(HAVE_SYS_PARAM_H) && HAVE_SYS_PARAM_H # include #endif #if defined(PATH_MAX) # define OTF_PATH_MAX (PATH_MAX + 1) #elif defined(_POSIX_PATH_MAX) # define OTF_PATH_MAX (_POSIX_PATH_MAX + 1) #else # define OTF_PATH_MAX 256 #endif #if !(defined(HAVE_FSEEKO) && HAVE_FSEEKO) # undef fseeko # undef ftello # define fseeko fseek # define ftello ftell #endif /* HAVE_FSEEKO */ #if !(defined(HAVE_ASPRINTF) && HAVE_ASPRINTF) # undef asprintf # define asprintf OTF_asprintf #endif /* HAVE_ASPRINTF */ #if !(defined(HAVE_SNPRINTF) && HAVE_SNPRINTF) # undef snprintf # define snprintf OTF_snprintf #endif /* HAVE_SNPRINTF */ #if !(defined(HAVE_VASPRINTF) && HAVE_VASPRINTF) # undef vasprintf # define vasprintf OTF_vasprintf #endif /* HAVE_VASPRINTF */ #if !(defined(HAVE_VSNPRINTF) && HAVE_VSNPRINTF) # undef vsnprintf # define vsnprintf OTF_vsnprintf #endif /* HAVE_VSNPRINTF */ #if !(defined(HAVE_STRDUP) && HAVE_STRDUP) # undef strdup # define strdup OTF_strdup #endif /* HAVE_STRDUP */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ int OTF_asprintf( char** ptr, const char* fmt, ... ); int OTF_snprintf( char* str, size_t size, const char* fmt, ... ); int OTF_vasprintf( char** ptr, const char* fmt, va_list ap ); int OTF_vsnprintf( char* str, size_t size, const char* fmt, va_list ap ); char* OTF_strdup( const char* s ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTF_PLATFORM_UNIX_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_HandlerArray.c0000644000000000000000000000013212544237152023472 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.275378462 30 ctime=1508162366.213774598 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_HandlerArray.c0000644000175000017500000007107112544237152024667 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "OTF_Platform.h" #include "OTF_HandlerArray.h" #include "OTF_Definitions.h" #include "OTF_CopyHandler.h" #include "OTF_CopyHandler_stream.h" #include "OTF_Errno.h" /** Constructor - internal use only */ int OTF_HandlerArray_init( OTF_HandlerArray* handlers ); /** Destructor - internal use only */ int OTF_HandlerArray_finish( OTF_HandlerArray* handlers ); /*********************************************************************/ int OTF_HandlerArray_init( OTF_HandlerArray* handlers ) { uint32_t i; for ( i = 0; i < OTF_NRECORDS; ++i ) { handlers->pointer[i] = NULL; handlers->firsthandlerarg[i] = NULL; } return 1; } int OTF_HandlerArray_finish( OTF_HandlerArray* handlers ) { free( handlers->pointer ); free( handlers->firsthandlerarg ); handlers->pointer = NULL; handlers->firsthandlerarg = NULL; return 1; } OTF_HandlerArray* OTF_HandlerArray_open() { OTF_HandlerArray* ret; ret = (OTF_HandlerArray*) malloc( sizeof( OTF_HandlerArray ) ); if( NULL == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } ret->pointer = (OTF_FunctionPointer**) malloc( OTF_NRECORDS * sizeof( OTF_FunctionPointer* ) ); if( NULL == ret->pointer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); free( ret ); ret= NULL; return NULL; } ret->firsthandlerarg = (void**) malloc( OTF_NRECORDS * sizeof( void* ) ); if( NULL == ret->firsthandlerarg ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); free( ret->pointer ); ret->pointer= NULL; free( ret ); ret= NULL; return NULL; } OTF_HandlerArray_init( ret ); return ret; } int OTF_HandlerArray_close( OTF_HandlerArray* handlers ) { if( NULL == handlers ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "handlers have not been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } OTF_HandlerArray_finish( handlers ); free( handlers ); handlers = NULL; return 1; } int OTF_HandlerArray_setHandler( OTF_HandlerArray* handlers, OTF_FunctionPointer* pointer, uint32_t recordtype ) { if( recordtype >= OTF_NRECORDS ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "unknown record type %u.\n", __FUNCTION__, __FILE__, __LINE__, recordtype ); return 0; } handlers->pointer[recordtype] = pointer; return 1; } int OTF_HandlerArray_setFirstHandlerArg( OTF_HandlerArray* handlers, void* firsthandlerarg, uint32_t recordtype ) { if( recordtype >= OTF_NRECORDS ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "unknown record type %u.\n", __FUNCTION__, __FILE__, __LINE__, recordtype ); return 0; } handlers->firsthandlerarg[recordtype] = firsthandlerarg; return 1; } int OTF_HandlerArray_getCopyHandler( OTF_HandlerArray* handlers, OTF_Writer* writer ) { OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefinitionComment, OTF_DEFINITIONCOMMENT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFINITIONCOMMENT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefTimerResolution, OTF_DEFTIMERRESOLUTION_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFTIMERRESOLUTION_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefProcess, OTF_DEFPROCESS_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFPROCESS_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefProcessGroup, OTF_DEFPROCESSGROUP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFPROCESSGROUP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefAttributeList, OTF_DEFATTRLIST_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFATTRLIST_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefProcessOrGroupAttributes, OTF_DEFPROCESSORGROUPATTR_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFPROCESSORGROUPATTR_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefFunction, OTF_DEFFUNCTION_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFFUNCTION_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefFunctionGroup, OTF_DEFFUNCTIONGROUP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFFUNCTIONGROUP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefCollectiveOperation, OTF_DEFCOLLOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFCOLLOP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefCounter, OTF_DEFCOUNTER_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFCOUNTER_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefCounterGroup, OTF_DEFCOUNTERGROUP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFCOUNTERGROUP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefScl, OTF_DEFSCL_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFSCL_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefSclFile, OTF_DEFSCLFILE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFSCLFILE_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefCreator, OTF_DEFCREATOR_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFCREATOR_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefFile, OTF_DEFFILE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFFILE_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefFileGroup, OTF_DEFFILEGROUP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFFILEGROUP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefKeyValue, OTF_DEFKEYVALUE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFKEYVALUE_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefTimeRange, OTF_DEFTIMERANGE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFTIMERANGE_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefCounterAssignments, OTF_DEFCOUNTERASSIGNMENTS_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFCOUNTERASSIGNMENTS_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefProcessSubstitutes, OTF_DEFPROCESSSUBSTITUTES_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFPROCESSSUBSTITUTES_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefAuxSamplePoint, OTF_DEFAUXSAMPLEPOINT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFAUXSAMPLEPOINT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_NoOp, OTF_NOOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_NOOP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_Enter, OTF_ENTER_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_ENTER_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_Leave, OTF_LEAVE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_LEAVE_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_SendMsg, OTF_SEND_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_SEND_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_RecvMsg, OTF_RECEIVE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_RECEIVE_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_Counter, OTF_COUNTER_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_COUNTER_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_CollectiveOperation, OTF_COLLOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_COLLOP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_BeginCollectiveOperation, OTF_BEGINCOLLOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_BEGINCOLLOP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_EndCollectiveOperation, OTF_ENDCOLLOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_ENDCOLLOP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_EventComment, OTF_EVENTCOMMENT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_EVENTCOMMENT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_BeginProcess, OTF_BEGINPROCESS_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_BEGINPROCESS_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_EndProcess, OTF_ENDPROCESS_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_ENDPROCESS_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_FileOperation, OTF_FILEOPERATION_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_FILEOPERATION_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_BeginFileOperation, OTF_BEGINFILEOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_BEGINFILEOP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_EndFileOperation, OTF_ENDFILEOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_ENDFILEOP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_RMAPut, OTF_RMAPUT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_RMAPUT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_RMAPutRemoteEnd, OTF_RMAPUTRE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_RMAPUTRE_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_RMAGet, OTF_RMAGET_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_RMAGET_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_RMAEnd, OTF_RMAEND_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_RMAEND_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_SnapshotComment, OTF_SNAPSHOTCOMMENT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_SNAPSHOTCOMMENT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_EnterSnapshot, OTF_ENTERSNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_ENTERSNAPSHOT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_SendSnapshot, OTF_SENDSNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_SENDSNAPSHOT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_OpenFileSnapshot, OTF_OPENFILESNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_OPENFILESNAPSHOT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_BeginCollopSnapshot, OTF_BEGINCOLLOPSNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_BEGINCOLLOPSNAPSHOT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_BeginFileOpSnapshot, OTF_BEGINFILEOPSNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_BEGINFILEOPSNAPSHOT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_CollopCountSnapshot, OTF_COLLOPCOUNTSNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_COLLOPCOUNTSNAPSHOT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_CounterSnapshot, OTF_COUNTERSNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_COUNTERSNAPSHOT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_SummaryComment, OTF_SUMMARYCOMMENT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_SUMMARYCOMMENT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_FunctionSummary, OTF_FUNCTIONSUMMARY_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_FUNCTIONSUMMARY_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_FunctionGroupSummary, OTF_FUNCTIONGROUPSUMMARY_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_FUNCTIONGROUPSUMMARY_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_MessageSummary, OTF_MESSAGESUMMARY_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_MESSAGESUMMARY_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_CollopSummary, OTF_COLLOPSUMMARY_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_COLLOPSUMMARY_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_FileOperationSummary, OTF_FILEOPERATIONSUMMARY_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_FILEOPERATIONSUMMARY_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_FileGroupOperationSummary, OTF_FILEGROUPOPERATIONSUMMARY_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_FILEGROUPOPERATIONSUMMARY_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_DefMarker, OTF_DEFMARKER_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_DEFMARKER_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_Marker, OTF_MARKER_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, writer, OTF_MARKER_RECORD ); return 1; } int OTF_HandlerArray_getCopyHandler_stream( OTF_HandlerArray* handlers, OTF_WStream* wstream ) { OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefinitionComment, OTF_DEFINITIONCOMMENT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFINITIONCOMMENT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefTimerResolution, OTF_DEFTIMERRESOLUTION_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFTIMERRESOLUTION_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefProcess, OTF_DEFPROCESS_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFPROCESS_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefProcessGroup, OTF_DEFPROCESSGROUP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFPROCESSGROUP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefAttributeList, OTF_DEFATTRLIST_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFATTRLIST_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefProcessOrGroupAttributes, OTF_DEFPROCESSORGROUPATTR_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFPROCESSORGROUPATTR_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefFunction, OTF_DEFFUNCTION_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFFUNCTION_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefFunctionGroup, OTF_DEFFUNCTIONGROUP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFFUNCTIONGROUP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefCollectiveOperation, OTF_DEFCOLLOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFCOLLOP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefCounter, OTF_DEFCOUNTER_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFCOUNTER_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefCounterGroup, OTF_DEFCOUNTERGROUP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFCOUNTERGROUP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefScl, OTF_DEFSCL_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFSCL_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefSclFile, OTF_DEFSCLFILE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFSCLFILE_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefUniqueId, OTF_DEFUNIQUEID_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFUNIQUEID_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefVersion, OTF_DEFVERSION_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFVERSION_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefCreator, OTF_DEFCREATOR_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFCREATOR_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefFile, OTF_DEFFILE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFFILE_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefFileGroup, OTF_DEFFILEGROUP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFFILEGROUP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefKeyValue, OTF_DEFKEYVALUE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFKEYVALUE_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefTimeRange, OTF_DEFTIMERANGE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFTIMERANGE_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefCounterAssignments, OTF_DEFCOUNTERASSIGNMENTS_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFCOUNTERASSIGNMENTS_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefProcessSubstitutes, OTF_DEFPROCESSSUBSTITUTES_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFPROCESSSUBSTITUTES_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefAuxSamplePoint, OTF_DEFAUXSAMPLEPOINT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFAUXSAMPLEPOINT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_NoOp, OTF_NOOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_NOOP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_Enter, OTF_ENTER_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_ENTER_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_Leave, OTF_LEAVE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_LEAVE_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_SendMsg, OTF_SEND_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_SEND_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_RecvMsg, OTF_RECEIVE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_RECEIVE_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_Counter, OTF_COUNTER_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_COUNTER_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_CollectiveOperation, OTF_COLLOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_COLLOP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_BeginCollectiveOperation, OTF_BEGINCOLLOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_BEGINCOLLOP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_EndCollectiveOperation, OTF_ENDCOLLOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_ENDCOLLOP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_EventComment, OTF_EVENTCOMMENT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_EVENTCOMMENT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_BeginProcess, OTF_BEGINPROCESS_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_BEGINPROCESS_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_EndProcess, OTF_ENDPROCESS_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_ENDPROCESS_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_FileOperation, OTF_FILEOPERATION_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_FILEOPERATION_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_BeginFileOperation, OTF_BEGINFILEOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_BEGINFILEOP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_EndFileOperation, OTF_ENDFILEOP_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_ENDFILEOP_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_RMAPut, OTF_RMAPUT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_RMAPUT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_RMAPutRemoteEnd, OTF_RMAPUTRE_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_RMAPUTRE_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_RMAGet, OTF_RMAGET_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_RMAGET_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_RMAEnd, OTF_RMAEND_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_RMAEND_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_SnapshotComment, OTF_SNAPSHOTCOMMENT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_SNAPSHOTCOMMENT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_EnterSnapshot, OTF_ENTERSNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_ENTERSNAPSHOT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_SendSnapshot, OTF_SENDSNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_SENDSNAPSHOT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_OpenFileSnapshot, OTF_OPENFILESNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_OPENFILESNAPSHOT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_BeginCollopSnapshot, OTF_BEGINCOLLOPSNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_BEGINCOLLOPSNAPSHOT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_BeginFileOpSnapshot, OTF_BEGINFILEOPSNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_BEGINFILEOPSNAPSHOT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_CollopCountSnapshot, OTF_COLLOPCOUNTSNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_COLLOPCOUNTSNAPSHOT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_CounterSnapshot, OTF_COUNTERSNAPSHOT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_COUNTERSNAPSHOT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_SummaryComment, OTF_SUMMARYCOMMENT_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_SUMMARYCOMMENT_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_FunctionSummary, OTF_FUNCTIONSUMMARY_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_FUNCTIONSUMMARY_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_FunctionGroupSummary, OTF_FUNCTIONGROUPSUMMARY_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_FUNCTIONGROUPSUMMARY_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_MessageSummary, OTF_MESSAGESUMMARY_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_MESSAGESUMMARY_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_CollopSummary, OTF_COLLOPSUMMARY_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_COLLOPSUMMARY_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_FileOperationSummary, OTF_FILEOPERATIONSUMMARY_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_FILEOPERATIONSUMMARY_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_FileGroupOperationSummary, OTF_FILEGROUPOPERATIONSUMMARY_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_FILEGROUPOPERATIONSUMMARY_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_DefMarker, OTF_DEFMARKER_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_DEFMARKER_RECORD ); OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) OTF_CopyHandler_stream_Marker, OTF_MARKER_RECORD ); OTF_HandlerArray_setFirstHandlerArg( handlers, wstream, OTF_MARKER_RECORD ); return 1; } eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_RStream.h0000644000000000000000000000013212544237152022500 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.219377063 30 ctime=1508162366.193772853 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_RStream.h0000644000175000017500000005245212544237152023677 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /* NOTE the OTF_RStream interface is not able to perform jumps to random timestamps, and cannot quit at a certain maximum time stamp. Maybe in future versions we add this. It is not in, because the OTF_Reader interface uses the buffer-methodes directly to set the timestamps, so saving it in the stream too will be worthless in this case. */ /** * @file OTF_RStream.h * * @brief Provides read access to trace streams, which consist of multiple * buffers. * * \ingroup rstream */ /** \defgroup rstream Stream Reader Interface * * rstream provides an interface for dealing with a single stream of a trace. * A stream consists of up to four different buffers (event buffer, * definition buffer, snapshots buffer, statistics buffer). * * rstream is structured similarly to the reader, but it is not * able to perform jumps to random timestamps, and cannot quit at a certain * maximum time stamp. * * \section rstream_example A simple Example * * Common includes * \code * #include * #include * #include "otf.h" * \endcode * * * Define the Handler(s). * We just want to process the def process event and print out all appearing processes. * \code * int handleDefProcess (void *userData, uint32_t stream, uint32_t process, const char *name, uint32_t parent) { * * printf( "process %u is named \"%s\"\n", process, name ); * * return OTF_RETURN_OK; * } * \endcode * * \code * int main( int argc, char** argv ) { * \endcode * * Declare a file manager, a reader, and a handler array * \code * OTF_RStream* rstream; * OTF_FileManager* manager; * OTF_HandlerArray* handlers; * \endcode * * Initialize the file manager. Do not open more than 100 files. * \code * manager= OTF_FileManager_open( 100 ); * assert( manager ); * \endcode * * Initialize the handler array. * \code * handlers = OTF_HandlerArray_open(); * assert( handlers ); * \endcode * * Initialize the rstream object. * \code * rstream = OTF_RStream_open( "mytrace", 0, manager ); * assert( rstream ); * \endcode * * Register your callback functions to the handler array. * \code * OTF_HandlerArray_setHandler( handlers, (OTF_FunctionPointer*) handleDefProcess, OTF_DEFPROCESS_RECORD ); * \endcode * * * Do the actual reading. * \code * OTF_RStream_readDefinitions( rstream, handlers ); * \endcode * * * Clean everything up before exiting the program. * \code * OTF_RStream_close( rstream ); * OTF_HandlerArray_close( handlers ); * OTF_FileManager_close( manager ); * * return 0; * } * \endcode * * Compile and link this using $ gcc -o test test.c `otfconfig --libs`. * */ #ifndef OTF_RSTREAM_H #define OTF_RSTREAM_H #include #include #include #include "OTF_inttypes.h" #include "OTF_FileManager.h" #include "OTF_RBuffer.h" #include "OTF_Filenames.h" #include "OTF_HandlerArray.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct struct_OTF_RStream { /** name stub: all files will begin with this name */ char* namestub; /** Unique id for the current stream */ uint32_t id; /** Definitions buffer. Definitions buffer carries definition records */ OTF_RBuffer* defBuffer; /** Event buffer. The event buffer carries records for actual events, i.e. records with a time stamp */ OTF_RBuffer* eventBuffer; /** Snaps (snapshots) buffer. The snapshots buffer carries snapshots of the whole state at a point in time - as oppossed to events which only show changes in the state. This can be used to start from such a snapshot instead of from the very begining. */ OTF_RBuffer* snapsBuffer; /** Statistics buffer. Statistics buffer carries statistical information about a certain time interval resp. data at points of time that allow to derive statistics without reading through all events of that interval. */ OTF_RBuffer* statsBuffer; /** Marker buffer. */ OTF_RBuffer* markerBuffer; /** Default size of buffers managed by this RStream. */ uint32_t buffersizes; #ifdef HAVE_ZLIB /** Default size of zbuffers managed by this RStream. */ uint32_t zbuffersizes; #endif /* HAVE_ZLIB */ /** file handle manager */ OTF_FileManager* manager; /** maximum number of records delivered by a single call to OTF_Reader_readXYZ() defaults to OTF_READ_MAXRECORDS == \infty */ uint64_t recordLimit; }; /** rstream object \ingroup rstream */ typedef struct struct_OTF_RStream OTF_RStream; /** * Create a new OTF_RStream instance. * * @param nameStub File name prefix which is going to be used by * all sub-files which belong to the reader stream. * @param id Abitrary but unique identifier of the reader stream. * Must be > '0' for real streams. Use '0' for global definitions. * @param manager File handle manager. * * @return Initialized OTF_RStream instance or 0 if an error * occurred. * * \ingroup rstream */ OTF_RStream* OTF_RStream_open( const char* nameStub, uint32_t id, OTF_FileManager* manager ); /** * Close an OTF_RStream instance and all its related files. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * * @return 1 if instance was closed successfully and 0 otherwise. * * \ingroup rstream */ int OTF_RStream_close( OTF_RStream* rstream ); /** * Returns the definition buffer of the according reader stream. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * * @return Initialized OTF_RBuffer instance or 0 if an error occured. * * \ingroup rstream */ OTF_RBuffer* OTF_RStream_getDefBuffer( OTF_RStream* rstream ); /** * Forces the given definition buffer to the according reader stream. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * @param rbuffer The OTF_RBuffer to use. * * @return The previously used Buffer or NULL if none. * * \ingroup rstream */ OTF_RBuffer* OTF_RStream_setDefBuffer( OTF_RStream* rstream, OTF_RBuffer* rbuffer ); /** * Closes the stream definition buffer. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * * @return 1 on success, 0 if an error occurs * * \ingroup rstream */ int OTF_RStream_closeDefBuffer( OTF_RStream* rstream ); /** * Returns the event buffer of the according reader stream. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * * @return Initialized OTF_RBuffer instance or 0 if an error occured. * * \ingroup rstream */ OTF_RBuffer* OTF_RStream_getEventBuffer( OTF_RStream* rstream ); /** * Closes the stream event buffer. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * * @return 1 on success, 0 if an error occurs * * \ingroup rstream */ int OTF_RStream_closeEventBuffer( OTF_RStream* rstream ); /** * Returns the snapshots buffer of the according reader stream. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * * @return Initialized OTF_RBuffer instance or 0 if an error occured. * * \ingroup rstream */ OTF_RBuffer* OTF_RStream_getSnapsBuffer( OTF_RStream* rstream ); /** * Closes the stream snapshots buffer. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * * @return 1 on success, 0 if an error occurs * * \ingroup rstream */ int OTF_RStream_closeSnapsBuffer( OTF_RStream* rstream ); /** * Returns the statistics buffer of the according reader stream. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * * @return Initialized OTF_RBuffer instance or 0 if an error occured. * * \ingroup rstream */ OTF_RBuffer* OTF_RStream_getStatsBuffer( OTF_RStream* rstream ); /** * Closes the stream statistics buffer. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * * @return 1 on success, 0 if an error occurs * * \ingroup rstream */ int OTF_RStream_closeStatsBuffer( OTF_RStream* rstream ); /** * Returns the marker buffer of the according reader stream. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * * @return Initialized OTF_RBuffer instance or 0 if an error occured. * * \ingroup rstream */ OTF_RBuffer* OTF_RStream_getMarkerBuffer( OTF_RStream* rstream ); /** * Closes the stream marker buffer. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * * @return 1 on success, 0 if an error occurs * * \ingroup rstream */ int OTF_RStream_closeMarkerBuffer( OTF_RStream* rstream ); /** * Set the default buffer size for all buffers managed by this reader stream. * This is only effective for future buffers and will not change already * allocated buffers. Those can be changed with the buffers directly. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * * @param size Intended buffer size. * * \ingroup rstream */ void OTF_RStream_setBufferSizes( OTF_RStream* rstream, uint32_t size ); /** * Get the default buffer size for all buffers managed by this reader stream. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * * @return Default buffer size for all buffers managed by this reader * stream. * * \ingroup rstream */ uint32_t OTF_RStream_getBufferSizes( OTF_RStream* rstream ); /** * Set the default zbuffer size for all files managed by this reader stream. * This is only effective for future files and will not change already * allocated buffers. Those can be changed with the files directly. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * * @param size Intended buffer size. * * \ingroup rstream */ void OTF_RStream_setZBufferSizes( OTF_RStream* rstream, uint32_t size ); /** * Get the default zbuffer size for all files managed by this reader stream. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * * @return Default buffer size for all buffers managed by this reader * stream. * * \ingroup rstream */ uint32_t OTF_RStream_getZBufferSizes( OTF_RStream* rstream ); /** * Sets the maximum number of records delivered by a single call to * OTF_RStream_readXYZ(). Defaults to OTF_READ_MAXRECORDS == \infty. * 'OTF_Reader_readXYZ()' returns with the number of records processed. * Successive calls to 'OTF_Reader_readXYZ()' will deliver the remaining * records. * * This function will NOT destroy a pending read operation, i.e. a read * operation currently interrupted CAN be continued! * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * @param limit new record limit. has to be smaller than or equal to * OTF_READ_MAXRECORDS * * \ingroup rstream */ void OTF_RStream_setRecordLimit( OTF_RStream* rstream, uint64_t limit ); /** * Returns the current record limit. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * * @return Current record limit. * * \ingroup rstream */ uint64_t OTF_RStream_getRecordLimit( OTF_RStream* rstream ); /** * Reads all definitions from the stream. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * @param handlers Pointer to the handler array. * * @return Number of records read or OTF_READ_MAXRECORDS * * \ingroup rstream */ uint64_t OTF_RStream_readDefinitions( OTF_RStream* rstream, OTF_HandlerArray* handlers ); /** * Reads all events from the stream and calls the appropriated handler sorted * by time. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * @param handlers Pointer to the handler array. * * @return Number of records read or OTF_READ_MAXRECORDS * * \ingroup rstream */ uint64_t OTF_RStream_readEvents( OTF_RStream* rstream, OTF_HandlerArray* handlers ); /** * Reads all snapshots from the stream. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * @param handlers Pointer to the handler array. * * @return Number of records read or OTF_READ_MAXRECORDS * * \ingroup rstream */ uint64_t OTF_RStream_readSnapshots( OTF_RStream* rstream, OTF_HandlerArray* handlers ); /** * Reads all statistics from the stream. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * @param handlers Pointer to the handler array. * * @return Number of records read or OTF_READ_MAXRECORDS * * \ingroup rstream */ uint64_t OTF_RStream_readStatistics( OTF_RStream* rstream, OTF_HandlerArray* handlers ); /** * Reads all markers from the stream. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * @param handlers Pointer to the handler array. * * @return Number of records read or OTF_READ_MAXRECORDS * * \ingroup rstream */ uint64_t OTF_RStream_readMarker( OTF_RStream* rstream, OTF_HandlerArray* handlers ); /** depricated. @see OTF_RStream_eventTimeProgress() \ingroup rstream */ uint8_t OTF_RStream_eventProgress( OTF_RStream* rstream, uint64_t* minimum, uint64_t* current, uint64_t* maximum ); /** depricated. @see OTF_RStream_snapshotTimeProgress() \ingroup rstream */ uint8_t OTF_RStream_snapshotProgress( OTF_RStream* rstream, uint64_t* minimum, uint64_t* current, uint64_t* maximum ); /** depricated. @see OTF_RStream_statisticTimeProgress() \ingroup rstream */ uint8_t OTF_RStream_statisticProgress( OTF_RStream* rstream, uint64_t* minimum, uint64_t* current, uint64_t* maximum ); /** * Delivers a progress report for reading events. It is given in terms * of time stamps. A percentage can be computed as * ( current - minimum ) / ( maximum - minimum ). * This computation takes restricted time intervals into account which is not * possible with OTF_RStream_eventBytesProgress(). * * The progress report is only valid after one or several calls to * OTF_RStream_readEvents(). Otherwise the return arguments 'minimum', 'current' * and 'maximum' are undefined! * If 'minimum' > 'maximum' the values are invalid. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * @param minimum Return value for the minium time. * @param current Return value for the current time. * @param maximum Return value for the maximum time. * * @return 1 on success, 0 if an error occurs. * * \ingroup rstream */ uint8_t OTF_RStream_eventTimeProgress( OTF_RStream* rstream, uint64_t* minimum, uint64_t* current, uint64_t* maximum ); /** * Delivers a progress report for reading snapshots. It is given in terms * of time stamps. A percentage can be computed as * ( current - minimum ) / ( maximum - minimum ). * This computation takes restricted time intervals into account which is not * possible with OTF_RStream_snapshotBytesProgress(). * * The progress report is only valid after one or several calls to * OTF_RStream_readSnapshots(). Otherwise the return arguments 'minimum', 'current' * and 'maximum' are undefined! * If 'minimum' > 'maximum' the values are invalid. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * @param minimum Return value for the minium time. * @param current Return value for the current time. * @param maximum Return value for the maximum time. * * @return 1 on success, 0 if an error occurs. * * \ingroup rstream */ uint8_t OTF_RStream_snapshotTimeProgress( OTF_RStream* rstream, uint64_t* minimum, uint64_t* current, uint64_t* maximum ); /** * Delivers a progress report for reading statistics. It is given in terms * of time stamps. A percentage can be computed as * ( current - minimum ) / ( maximum - minimum ). * This computation takes restricted time intervals into account which is not * possible with OTF_Reader_statisticBytesProgress(). * * The progress report is only valid after one or several calls to * OTF_Reader_readStatistics(). Otherwise the return arguments 'minimum', 'current' * and 'maximum' are undefined! * If 'minimum' > 'maximum' the values are invalid. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * @param minimum Return value for the minium time. * @param current Return value for the current time. * @param maximum Return value for the maximum time. * * @return 1 on success, 0 if an error occurs. * * \ingroup rstream */ uint8_t OTF_RStream_statisticTimeProgress( OTF_RStream* rstream, uint64_t* minimum, uint64_t* current, uint64_t* maximum ); /** * Delivers a progress report for reading events. Progress is given in terms * of bytes. The percentage can be computed as ( current - minimum ) / ( maximum - minimum ). * * ATTENTION: This in only a rough estimate of the progress, because it is * computed based on the block I/O from files but not based on the actual bytes * processed. This may result in constant values for small traces. * See also OTF_RStream_eventTimeProgress(): * * The progress report is only valid after one or several calls to * OTF_RStream_readEvents(). Otherwise the return arguments 'minimum', 'current' and 'maximum' are * undefined! If 'minimum' > 'maximum' the values are invalid. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * @param minimum Return value for the minium bytes read ( is 0 everytime ). * @param current Return value for the current bytes read. * @param maximum Return value for the filesize. * * @return 1 on success, 0 if an error occurs. * * \ingroup rstream */ uint8_t OTF_RStream_eventBytesProgress( OTF_RStream* rstream, uint64_t* minimum, uint64_t* current, uint64_t* maximum ); /** * Delivers a progress report for reading snapshots. Progress is given in terms * of bytes. The percentage can be computed as ( current - minimum ) / ( maximum - minimum ). * * ATTENTION: This in only a rough estimate of the progress, because it is * computed based on the block I/O from files but not based on the actual bytes * processed. This may result in constant values for small traces. * See also OTF_RStream_snapshotTimeProgress(): * * The progress report is only valid after one or several calls to * OTF_RStream_readSnapshots(). Otherwise the return arguments 'minimum', 'current' and 'maximum' are * undefined! If 'minimum' > 'maximum' the values are invalid. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * @param minimum Return value for the minium bytes read ( is 0 everytime ). * @param current Return value for the current bytes read. * @param maximum Return value for the filesize. * * @return 1 on success, 0 if an error occurs. * * \ingroup rstream */ uint8_t OTF_RStream_snapshotBytesProgress( OTF_RStream* rstream, uint64_t* minimum, uint64_t* current, uint64_t* maximum ); /** * Delivers a progress report for reading statistics. Progress is given in terms * of bytes. The percentage can be computed as ( current - minimum ) / ( maximum - minimum ). * * ATTENTION: This in only a rough estimate of the progress, because it is * computed based on the block I/O from files but not based on the actual bytes * processed. This may result in constant values for small traces. * See also OTF_RStream_statisticTimeProgress(): * * The progress report is only valid after one or several calls to * OTF_RStream_readStatistics(). Otherwise the return arguments 'minimum', 'current' and 'maximum' are * undefined! If 'minimum' > 'maximum' the values are invalid. * * @param rstream Pointer to an initialized OTF_RStream object. See * also OTF_RStream_open(). * @param minimum Return value for the minium bytes read ( is 0 everytime ). * @param current Return value for the current bytes read. * @param maximum Return value for the filesize. * * @return 1 on success, 0 if an error occurs. * * \ingroup rstream */ uint8_t OTF_RStream_statisticBytesProgress( OTF_RStream* rstream, uint64_t* minimum, uint64_t* current, uint64_t* maximum ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTF_RSTREAM_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_Reader.c0000644000000000000000000000013212544237152022320 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.163375665 30 ctime=1508162366.221775297 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_Reader.c0000644000175000017500000030456012544237152023517 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include "OTF_Platform.h" #include "OTF_Reader.h" #include "OTF_RStream.h" #include "OTF_Parse.h" #include "OTF_Errno.h" /* #include "OTF_Keywords.h" */ #include "OTF_Keywords.h" #define HEAP_CHILDRENCOUNT 2 /* *** OTF_ProcessList headers *** ********************** */ struct struct_OTF_ProcessList { /** number of processes == dimension of arrays below */ uint32_t n; /** sorted array of process ids */ uint32_t* processes; /** array of process status values accociated to the process at same index in array 'processes'. status values: 0 - unknown or disabled, 1 - enabled */ uint8_t* status; }; typedef struct struct_OTF_ProcessList OTF_ProcessList; /** OTF_ProcessList constructor */ int OTF_ProcessList_init( OTF_ProcessList* list, OTF_MasterControl* mc ); /** OTF_ProcessList destructor */ void OTF_ProcessList_finalize( OTF_ProcessList* list ); uint32_t OTF_ProcessList_getIndex( OTF_ProcessList* list, uint32_t pid ); int OTF_ProcessList_setStatus( OTF_ProcessList* list, uint32_t pid, uint8_t status ); int OTF_ProcessList_setStatusAll( OTF_ProcessList* list, uint8_t status ); uint8_t OTF_ProcessList_getStatus( OTF_ProcessList* list, uint32_t pid ); /* *** OTF_Heap headers *** ***************************** */ /** struct managing a sorted heap (a la heap sort) of OTF_RBuffers that belong to a common query */ struct struct_OTF_Heap { /** number of current entries */ uint32_t n; /** array dimension s <= n */ uint32_t s; /** array of OTF_RBuffers, during querying they are sorted according to each buffers next time stamp */ OTF_RBuffer** buffers; /** experimental. minimim, maximum and current progress value(*) of all buffers in that heap, cut by the readers global setting(*). (*) progress value are time stamps or bytes */ uint64_t progressMin; uint64_t progressMax; uint64_t progressCurrent; uint64_t bytesMax; uint64_t bytesMin; uint64_t bytesCurrent; uint64_t bytesDone; }; typedef struct struct_OTF_Heap OTF_Heap; /** initialize heap. taking RBuffers from the given master control object, keep only that streams that have at least one process enabled. 'which' decides whether to take definition buffer, event buffer, etc. from every stream */ int OTF_Heap_initEventHeap( OTF_Heap* heap, OTF_Reader* reader ); int OTF_Heap_initDefHeap( OTF_Heap* heap, OTF_Reader* reader ); int OTF_Heap_initStatisticsHeap( OTF_Heap* heap, OTF_Reader* reader ); int OTF_Heap_initSnapshotsHeap( OTF_Heap* heap, OTF_Reader* reader ); int OTF_Heap_initMarkerHeap( OTF_Heap* heap, OTF_Reader* reader ); void OTF_Heap_finalize( OTF_Heap* heap ); /** initial (full) sort operation */ int OTF_Heap_sort( OTF_Heap* heap ); /** do a fast re-sort after only the first entrie's sort key changed */ int OTF_Heap_resort( OTF_Heap* heap ); int OTF_Heap_checksorted( OTF_Heap* heap ); /* *** OTF_Reader headers ******************************* */ struct struct_OTF_Reader { /** name stub: all files will begin with this name */ char* namestub; /** Number of streams. */ uint32_t n; /** List of stream sorted by stream id. */ OTF_RStream** stream; OTF_ProcessList* processList; OTF_Heap* definitionHeap; OTF_Heap* eventHeap; OTF_Heap* snapshotsHeap; OTF_Heap* statisticsHeap; OTF_Heap* markerHeap; /** Master control structure. */ OTF_MasterControl* mc; /** Contain the minimum time stamp where to start reading. */ uint64_t minTime; /** Contain the maximum time stamp where to stop reading. */ uint64_t maxTime; /** maximum number of records delivered by a single call to OTF_Reader_readXYZ() defaults to OTF_READ_MAXRECORDS == \infty */ uint64_t recordLimit; /** Default size of buffers managed by this Reader. */ uint32_t buffersizes; #ifdef HAVE_ZLIB /** Default size of zbuffers managed by this reader. */ uint32_t zbuffersizes; #endif /* HAVE_ZLIB */ /** file handle manager */ OTF_FileManager* manager; }; /* *** reader functions macros *** *************************************** */ /** constructor - internal use only */ int OTF_Reader_init( OTF_Reader* reader ); /** destructor - internal use only */ int OTF_Reader_finish( OTF_Reader* reader ); /** dump existing OTF_Heap members. this is necessary after changing time interval or process selection */ void OTF_Reader_resetHeaps( OTF_Reader* reader ); /* *** ProcessList functions ****************** */ int OTF_ProcessList_init( OTF_ProcessList* list, OTF_MasterControl* mc ) { uint32_t i; uint32_t n; OTF_Pair* pair; # ifdef OTF_DEBUG uint8_t test; # endif n= OTF_MasterControl_getrCount( mc ); if ( 0 >= n ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no process has been defined in the master control.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } list->n= n; list->processes= (uint32_t*) malloc( n * sizeof(uint32_t) ); if( NULL == list->processes ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } list->status= (uint8_t*) malloc( n * sizeof(uint8_t) ); if( NULL == list->status ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); free( list->processes ); list->processes= NULL; return 0; } /* put process entries to 'processes' sorted. */ for ( i= 0; i < n; i++ ) { pair= OTF_MasterControl_getREntryByIndex( mc, i ); if( NULL == pair ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_MasterControl_getREntryByIndex() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); free( list->processes ); list->processes= NULL; free( list->status ); list->status= NULL; return 0; } list->processes[i]= pair->argument; /* set to enabled status by default */ list->status[i]= 1; } # ifdef OTF_DEBUG /* check if list->processes[i] is sorted like it is suppossed to be */ test= 1; for ( i= 1; i < n; i++ ) { if ( list->processes[i] < list->processes[i-1] ) { test= 0; } } if ( 1 != test ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "process list from MasterControl is not sorted.\n", __FUNCTION__, __FILE__, __LINE__ ); free( list->processes ); list->processes= NULL; free( list->status ); list->status= NULL; return 0; } # endif return 1; } void OTF_ProcessList_finalize( OTF_ProcessList* list ) { list->n= 0; if( list->processes != NULL ) { free( list->processes ); list->processes= NULL; } if( list->status != NULL ) { free( list->status ); list->status= NULL; } } uint32_t OTF_ProcessList_getIndex( OTF_ProcessList* list, uint32_t pid ) { uint32_t a= 0; uint32_t b= list->n -1; uint32_t c; if ( pid < list->processes[a] ) { /* not found */ return (uint32_t) -1; } if ( pid > list->processes[b] ) { /* not found */ return (uint32_t) -1; } if ( pid == list->processes[a] ) { return a; } if ( pid == list->processes[b] ) { return b; } while ( a +1 < b ) { c= ( a + b ) / 2; if ( pid == list->processes[c] ) { return c; } if ( pid < list->processes[c] ) { b= c; } else { a= c; } } /* not found */ return (uint32_t) -1; } int OTF_ProcessList_setStatus( OTF_ProcessList* list, uint32_t pid, uint8_t status ) { uint32_t index= OTF_ProcessList_getIndex( list, pid ); if ( index < list->n ) { list->status[index]= status; /* success */ return 1; } else { /* pid not found, error */ return 0; } } int OTF_ProcessList_setStatusAll( OTF_ProcessList* list, uint8_t status ) { uint32_t i; for ( i= 0; i < list->n; i++ ) { list->status[i]= status; } return 1; } uint8_t OTF_ProcessList_getStatus( OTF_ProcessList* list, uint32_t pid ) { uint32_t index= OTF_ProcessList_getIndex( list, pid ); if ( index < list->n ) { /* success */ return list->status[index]; } /* pid not found, error */ return 0; } /* *** OTF_Heap functions *** ***************** */ /** initialize heap. taking RBuffers from the given master control object, keep only that streams that have at least one process enabled. 'which' decides whether to take definition buffer, event buffer, etc. from every stream */ int OTF_Heap_initEventHeap( OTF_Heap* heap, OTF_Reader* reader ) { uint32_t i; uint32_t j; uint8_t enabled; OTF_MapEntry* entry; OTF_RStream* stream; OTF_RBuffer* buffer; heap->n= 0; heap->s= OTF_MasterControl_getCount( reader->mc ); heap->buffers= (OTF_RBuffer**) malloc( heap->s * sizeof(OTF_RBuffer*) ); if( NULL == heap->buffers ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } for ( i= 0; i < heap->s; i++ ) { entry= OTF_MasterControl_getEntryByIndex( reader->mc, i ); if( NULL == entry ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_MasterControl_getEntryByIndex() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); free( heap->buffers ); heap->buffers= NULL; return 0; } enabled= 0; j= 0; while ( ( j < entry->n ) && ( 0 == enabled ) ) { enabled= enabled || OTF_ProcessList_getStatus( reader->processList, entry->values[j] ); j++; } if ( enabled ) { stream= OTF_Reader_getStream( reader, entry->argument ); if( NULL == stream ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot get stream '%llu'\n", __FUNCTION__, __FILE__, __LINE__, (long long unsigned) entry->argument ); free( heap->buffers ); heap->buffers= NULL; return 0; } buffer= OTF_RStream_getEventBuffer( stream ); if ( NULL != buffer ) { heap->buffers[ heap->n ]= buffer; (heap->n)++; } else { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot open event buffer of stream %u.\n", __FUNCTION__, __FILE__, __LINE__, entry->argument ); free( heap->buffers ); heap->buffers= NULL; return 0; } } } heap->progressMin= 0; heap->progressMax= (uint64_t) -1; heap->progressCurrent= 0; return 1; } /** initialize heap. taking RBuffers from the given master control object, keep only that streams that have at least one process enabled. 'which' decides whether to take definition buffer, event buffer, etc. from every stream */ int OTF_Heap_initDefHeap( OTF_Heap* heap, OTF_Reader* reader ) { uint32_t i; uint32_t j; uint8_t enabled; OTF_MapEntry* entry; OTF_RStream* stream; OTF_RBuffer* buffer; heap->n= 0; heap->s= 1 + OTF_MasterControl_getCount( reader->mc ); heap->buffers= (OTF_RBuffer**) malloc( heap->s * sizeof(OTF_RBuffer*) ); if( NULL == heap->buffers ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } /* stream 0 */ stream= OTF_Reader_getStream( reader, 0 ); if( NULL != stream ) { buffer= OTF_RStream_getDefBuffer( stream ); if( NULL != buffer ) { /* buffer == NULL allowed! */ heap->buffers[ heap->n ]= buffer; (heap->n)++; } } /* remaining streams */ for ( i= 0; i < heap->s -1; i++ ) { entry= OTF_MasterControl_getEntryByIndex( reader->mc, i ); if( NULL == entry ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_MasterControl_getEntryByIndex() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); free( heap->buffers ); heap->buffers= NULL; return 0; } enabled= 0; j= 0; while ( ( j < entry->n ) && ( 0 == enabled ) ) { enabled= enabled || OTF_ProcessList_getStatus( reader->processList, entry->values[j] ); j++; } if ( enabled ) { stream= OTF_Reader_getStream( reader, entry->argument ); if( NULL == stream ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot get stream '%llu'\n", __FUNCTION__, __FILE__, __LINE__, (long long unsigned) entry->argument ); free( heap->buffers ); heap->buffers= NULL; return 0; } buffer= OTF_RStream_getDefBuffer( stream ); /* buffer == NULL allowed! */ heap->buffers[ heap->n ]= buffer; (heap->n)++; } } return 1; } /** initialize heap. taking RBuffers from the given master control object, keep only that streams that have at least one process enabled. 'which' decides whether to take definition buffer, event buffer, etc. from every stream */ int OTF_Heap_initStatisticsHeap( OTF_Heap* heap, OTF_Reader* reader ) { uint32_t i; uint32_t j; uint8_t enabled; OTF_MapEntry* entry; OTF_RStream* stream; OTF_RBuffer* buffer; heap->n= 0; heap->s= OTF_MasterControl_getCount( reader->mc ); heap->buffers= (OTF_RBuffer**) malloc( heap->s * sizeof(OTF_RBuffer*) ); if( NULL == heap->buffers ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } for ( i= 0; i < heap->s; i++ ) { entry= OTF_MasterControl_getEntryByIndex( reader->mc, i ); if( NULL == entry ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_MasterControl_getEntryByIndex() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); free( heap->buffers ); heap->buffers= NULL; return 0; } enabled= 0; j= 0; while ( ( j < entry->n ) && ( 0 == enabled ) ) { enabled= enabled || OTF_ProcessList_getStatus( reader->processList, entry->values[j] ); j++; } if ( enabled ) { stream= OTF_Reader_getStream( reader, entry->argument ); if( NULL == stream ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot get stream '%llu'\n", __FUNCTION__, __FILE__, __LINE__, (long long unsigned) entry->argument ); free( heap->buffers ); heap->buffers= NULL; return 0; } buffer= OTF_RStream_getStatsBuffer( stream ); if ( NULL != buffer ) { heap->buffers[ heap->n ]= buffer; (heap->n)++; } } } heap->progressMin= 0; heap->progressMax= (uint64_t) -1; heap->progressCurrent= 0; return 1; } /** initialize heap. taking RBuffers from the given master control object, keep only that streams that have at least one process enabled. 'which' decides whether to take definition buffer, event buffer, etc. from every stream */ int OTF_Heap_initSnapshotsHeap( OTF_Heap* heap, OTF_Reader* reader ) { uint32_t i; uint32_t j; uint8_t enabled; OTF_MapEntry* entry; OTF_RStream* stream; OTF_RBuffer* buffer; heap->n= 0; heap->s= OTF_MasterControl_getCount( reader->mc ); heap->buffers= (OTF_RBuffer**) malloc( heap->s * sizeof(OTF_RBuffer*) ); if( NULL == heap->buffers ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } for ( i= 0; i < heap->s; i++ ) { entry= OTF_MasterControl_getEntryByIndex( reader->mc, i ); if( NULL == entry ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_MasterControl_getEntryByIndex() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); free( heap->buffers ); heap->buffers= NULL; return 0; } enabled= 0; j= 0; while ( ( j < entry->n ) && ( 0 == enabled ) ) { enabled= enabled || OTF_ProcessList_getStatus( reader->processList, entry->values[j] ); j++; } if ( enabled ) { stream= OTF_Reader_getStream( reader, entry->argument ); if( NULL == stream ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot get stream '%llu'\n", __FUNCTION__, __FILE__, __LINE__, (long long unsigned) entry->argument ); free( heap->buffers ); heap->buffers= NULL; return 0; } buffer= OTF_RStream_getSnapsBuffer( stream ); if ( NULL != buffer ) { heap->buffers[ heap->n ]= buffer; (heap->n)++; } } } heap->progressMin= 0; heap->progressMax= (uint64_t) -1; heap->progressCurrent= 0; return 1; } /** initialize heap. taking RBuffers from the given master control object, keep only that streams that have at least one process enabled. 'which' decides whether to take definition buffer, event buffer, etc. from every stream */ int OTF_Heap_initMarkerHeap( OTF_Heap* heap, OTF_Reader* reader ) { uint32_t i; uint32_t j; uint8_t enabled; OTF_MapEntry* entry; OTF_RStream* stream; OTF_RBuffer* buffer; heap->n= 0; heap->s= 1 + OTF_MasterControl_getCount( reader->mc ); heap->buffers= (OTF_RBuffer**) malloc( heap->s * sizeof(OTF_RBuffer*) ); if( NULL == heap->buffers ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } /* stream 0 */ stream= OTF_Reader_getStream( reader, 0 ); if( NULL != stream ) { buffer= OTF_RStream_getMarkerBuffer( stream ); if( NULL != buffer ) { /* buffer == NULL allowed! */ heap->buffers[ heap->n ]= buffer; (heap->n)++; } } /* remaining streams */ for ( i= 0; i < heap->s -1; i++ ) { entry= OTF_MasterControl_getEntryByIndex( reader->mc, i ); if( NULL == entry ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_MasterControl_getEntryByIndex() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); free( heap->buffers ); heap->buffers= NULL; return 0; } enabled= 0; j= 0; while ( ( j < entry->n ) && ( 0 == enabled ) ) { enabled= enabled || OTF_ProcessList_getStatus( reader->processList, entry->values[j] ); j++; } if ( enabled ) { stream= OTF_Reader_getStream( reader, entry->argument ); if( NULL == stream ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot get stream '%llu'\n", __FUNCTION__, __FILE__, __LINE__, (long long unsigned) entry->argument ); free( heap->buffers ); heap->buffers= NULL; return 0; } buffer= OTF_RStream_getMarkerBuffer( stream ); /* buffer == NULL allowed! */ heap->buffers[ heap->n ]= buffer; (heap->n)++; } } return 1; } void OTF_Heap_finalize( OTF_Heap* heap ) { heap->n= 0; heap->s= 0; free( heap->buffers ); heap->buffers= NULL; } int OTF_Heap_sort( OTF_Heap* heap ) { int32_t i; int32_t j; int32_t v; int32_t w; int32_t k; OTF_RBuffer* tmp; if( 0 == heap->n ) { return 1; } /* calculate the first node to begin with */ i= ( heap->n - 1 ) / HEAP_CHILDRENCOUNT; /* establish a sorted heap ;) */ for ( ; i >= 0; i-- ) { /* first descendant of v */ v = i; w = HEAP_CHILDRENCOUNT * v + 1; while ( w < (int32_t) heap->n ) { /* pick the lowest descendant */ for( j= 1, k= 0; j < HEAP_CHILDRENCOUNT; j++ ) { if ( w + j >= (int32_t) heap->n ) { break; } if ( heap->buffers[w+j]->time < heap->buffers[w+k]->time ) { k= j; } } w = w+k; if ( heap->buffers[v]->time < heap->buffers[w]->time ) { /* v has heap property, exit loop */ break; } /* swap entries */ tmp = heap->buffers[v]; heap->buffers[v] = heap->buffers[w]; heap->buffers[w] = tmp; /* continue further down the heap */ v = w; w = HEAP_CHILDRENCOUNT * v + 1; } } return 1; } int OTF_Heap_resort( OTF_Heap* heap ) { uint32_t v; uint32_t w; uint32_t j; uint32_t k; OTF_RBuffer* tmp; /* assume a sorted heap except for the top element */ /* follow the first item down the heap */ v = 0; w = 1; while ( w < heap->n ) { /* pick the lowest descendant */ for( j= 1, k= 0; j < HEAP_CHILDRENCOUNT; j++ ) { if ( w + j >= heap->n ) { break; } if ( heap->buffers[w+j]->time < heap->buffers[w+k]->time ) { k= j; } } w = w+k; if ( heap->buffers[v]->time < heap->buffers[w]->time ) { /* v has heap property */ break; } /* swap entries */ tmp = heap->buffers[v]; heap->buffers[v] = heap->buffers[w]; heap->buffers[w] = tmp; /* continue */ v = w; w = HEAP_CHILDRENCOUNT * v + 1; } return 1; } int OTF_Heap_checksorted( OTF_Heap* heap ) { int ret= 1; uint32_t i; int j; /* fprintf( stderr, "%u-heap with %u entries:\n", HEAP_CHILDRENCOUNT, heap->n ); for ( i= 0; i < heap->n; i++ ) { fprintf( stderr, "%i: %llu\n", i, heap->buffers[i]->time ); } */ /* all but the top entry need to be >= their parent entry */ for ( i= 1; i < heap->n; i++ ) { j= ( i -1 ) / HEAP_CHILDRENCOUNT; ret = ret && ( heap->buffers[j]->time <= heap->buffers[i]->time ); } assert( 1 == ret ); return ret; } /* *** Reader functions *********************** */ int OTF_Reader_init( OTF_Reader* reader ) { reader->namestub= NULL; reader->n= 0; reader->stream= NULL; reader->processList= NULL; reader->definitionHeap= NULL; reader->eventHeap= NULL; reader->snapshotsHeap= NULL; reader->statisticsHeap= NULL; reader->markerHeap= NULL; reader->mc= NULL; reader->minTime= 0; reader->maxTime= (uint64_t) -1; reader->recordLimit= OTF_READ_MAXRECORDS; reader->buffersizes= 1024*1024; #ifdef HAVE_ZLIB reader->zbuffersizes= OTF_ZBUFFER_DEFAULTSIZE; #endif /* HAVE_ZLIB */ reader->manager= NULL; return 1; } int OTF_Reader_finish( OTF_Reader* reader ) { int ret= 1; free( reader->namestub ); reader->namestub= NULL; ret&= OTF_Reader_closeAllStreams( reader ); free( reader->stream ); reader->stream = NULL; if ( NULL != reader->processList ) { OTF_ProcessList_finalize( reader->processList ); free( reader->processList ); reader->processList= NULL; } if ( NULL != reader->definitionHeap ) { OTF_Heap_finalize( reader->definitionHeap ); free( reader->definitionHeap ); reader->definitionHeap= NULL; } if ( NULL != reader->eventHeap ) { OTF_Heap_finalize( reader->eventHeap ); free( reader->eventHeap ); reader->eventHeap= NULL; } if ( NULL != reader->snapshotsHeap ) { OTF_Heap_finalize( reader->snapshotsHeap ); free( reader->snapshotsHeap ); reader->snapshotsHeap= NULL; } if ( NULL != reader->statisticsHeap ) { OTF_Heap_finalize( reader->statisticsHeap ); free( reader->statisticsHeap ); reader->statisticsHeap= NULL; } if ( NULL != reader->markerHeap ) { OTF_Heap_finalize( reader->markerHeap ); free( reader->markerHeap ); reader->markerHeap= NULL; } if ( NULL != reader->mc ) { OTF_MasterControl_close( reader->mc ); reader->mc = NULL; } return ret; } void OTF_Reader_resetHeaps( OTF_Reader* reader ) { if ( NULL != reader->definitionHeap ) { OTF_Heap_finalize( reader->definitionHeap ); free( reader->definitionHeap ); reader->definitionHeap= NULL; } if ( NULL != reader->eventHeap ) { OTF_Heap_finalize( reader->eventHeap ); free( reader->eventHeap ); reader->eventHeap= NULL; } if ( NULL != reader->snapshotsHeap ) { OTF_Heap_finalize( reader->snapshotsHeap ); free( reader->snapshotsHeap ); reader->snapshotsHeap= NULL; } if ( NULL != reader->statisticsHeap ) { OTF_Heap_finalize( reader->statisticsHeap ); free( reader->statisticsHeap ); reader->statisticsHeap= NULL; } if ( NULL != reader->markerHeap ) { OTF_Heap_finalize( reader->markerHeap ); free( reader->markerHeap ); reader->markerHeap= NULL; } } OTF_Reader* OTF_Reader_open( const char* namestub, OTF_FileManager* manager ) { OTF_Reader* ret; int read; ret = (OTF_Reader*) malloc( sizeof( OTF_Reader ) ); if( NULL == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } OTF_Reader_init( ret ); ret->namestub = OTF_stripFilename( namestub ); if( NULL == manager ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "manager has not been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Reader_finish(ret); free( ret ); ret= NULL; return NULL; } ret->manager=manager; ret->mc= OTF_MasterControl_new( manager ); if( NULL == ret->mc ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_MasterControl_new() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Reader_finish(ret); free( ret ); ret= NULL; return NULL; } read= OTF_MasterControl_read( ret->mc, ret->namestub ); if( 0 == read ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_MasterControl_read() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Reader_finish(ret); free( ret ); ret= NULL; return NULL; } ret->processList= (OTF_ProcessList*) malloc( sizeof(OTF_ProcessList) ); if( NULL == ret->processList ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Reader_finish(ret); free( ret ); ret= NULL; return NULL; } ret->processList->status = NULL; ret->processList->processes = NULL; if( 0 == OTF_ProcessList_init( ret->processList, ret->mc ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_ProcessList_init() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Reader_finish(ret); free( ret ); ret= NULL; return NULL; } return ret; } int OTF_Reader_close( OTF_Reader* reader ) { int ret=1; if( NULL == reader ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no reader has been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } ret&= OTF_Reader_finish( reader ); free( reader ); reader = NULL; return ret; } int OTF_Reader_setBufferSizes( OTF_Reader* reader, uint32_t size ) { if ( 50 > size ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "intended buffer size %u is too small, rejected.\n", __FUNCTION__, __FILE__, __LINE__, size ); return 0; } else if ( 500 > size ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "buffer size %u is very small, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } else if ( 10 * 1024 *1024 < size ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "buffer size %u is rather big, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } reader->buffersizes= size; return 1; } uint32_t OTF_Reader_getBufferSizes( OTF_Reader* reader ) { return reader->buffersizes; } void OTF_Reader_setZBufferSizes( OTF_Reader* reader, uint32_t size ) { #ifdef HAVE_ZLIB if ( 32 > size ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "intended zbuffer size %u is too small, rejected.\n", __FUNCTION__, __FILE__, __LINE__, size ); return; } else if ( 512 > size ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "buffer size %u is very small, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } else if ( 10 * 1024 *1024 < size ) { OTF_Warning( "WARNING in function %s, file: %s, line: %i:\n " "buffer size %u is rather big, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } reader->zbuffersizes= size; #endif /* HAVE_ZLIB */ } uint32_t OTF_Reader_getZBufferSizes( OTF_Reader* reader ) { #ifdef HAVE_ZLIB return reader->zbuffersizes; #else /* HAVE_ZLIB */ return 0; #endif /* HAVE_ZLIB */ } void OTF_Reader_reset( OTF_Reader* reader ) { OTF_Reader_resetHeaps( reader ); /* reset time interval */ OTF_Reader_setTimeInterval( reader, 0, (uint64_t) -1 ); /* reset all processes to enabled */ OTF_Reader_setProcessStatusAll( reader, 1 ); /* reset record count limit to \infty */ OTF_Reader_setRecordLimit( reader, OTF_READ_MAXRECORDS ); } OTF_RStream* OTF_Reader_getStream( OTF_Reader* reader, uint32_t id ) { uint32_t i; uint32_t begin; uint32_t middle; uint32_t end; /* search list of stream for the given stream id - binary search */ begin = 0; end = reader->n-1; while ( begin < end+1 ) { middle = ( begin + end ) / 2; if ( reader->stream[middle]->id < id ) { begin = middle + 1; } else if ( reader->stream[middle]->id > id ) { end = middle - 1; } else { /* stream already there */ return reader->stream[middle]; } } /* add a new stream */ ++(reader->n); /* allocate memory */ reader->stream = (OTF_RStream**) realloc( reader->stream , reader->n * sizeof( OTF_RStream* ) ); if( NULL == reader->stream ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } /* move all stream > i one up */ for ( i = reader->n-1; i > begin; --i ) { reader->stream[i] = reader->stream[i-1]; } reader->stream[i] = OTF_RStream_open( reader->namestub, id, reader->manager ); OTF_RStream_setBufferSizes( reader->stream[i], reader->buffersizes ); #ifdef HAVE_ZLIB OTF_RStream_setZBufferSizes( reader->stream[i], reader->zbuffersizes ); #endif /* HAVE_ZLIB */ return reader->stream[i]; } int OTF_Reader_disableProcess( OTF_Reader* reader, uint32_t processId ) { return OTF_ProcessList_setStatus( reader->processList, processId, 0 ); } int OTF_Reader_enableProcess( OTF_Reader* reader, uint32_t processId ) { return OTF_ProcessList_setStatus( reader->processList, processId, 1 ); } /** get process status, '1' for enabled, '0' for disabled or unknown */ uint8_t OTF_Reader_getProcessStatus( OTF_Reader* reader, uint32_t processId ) { return OTF_ProcessList_getStatus( reader->processList, processId ); } /** nicer equivalent to 'OTF_Reader_disableProcess()' and 'OTF_Reader_enableProcess()'. status is '0' for disabled and '1' for enabled */ int OTF_Reader_setProcessStatus( OTF_Reader* reader, uint32_t processId, uint8_t status ) { OTF_Reader_resetHeaps( reader ); return OTF_ProcessList_setStatus( reader->processList, processId, status ); } int OTF_Reader_setProcessStatusAll( OTF_Reader* reader, uint8_t status ) { OTF_Reader_resetHeaps( reader ); return OTF_ProcessList_setStatusAll( reader->processList, status ); } uint64_t OTF_Reader_readDefinitions( OTF_Reader* reader, OTF_HandlerArray* handlers ) { uint64_t recordcount= 0; int ret; char* pos; uint32_t i; OTF_MapEntry* entry; uint32_t streamId; char next_char = '\0'; /* initialized? */ if ( NULL == reader->definitionHeap ) { /* init */ reader->definitionHeap= (OTF_Heap*) malloc( sizeof(OTF_Heap) ); if( NULL == reader->definitionHeap ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return OTF_READ_ERROR; } if( 0 == OTF_Heap_initDefHeap( reader->definitionHeap, reader ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Heap_initDefHeap() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->definitionHeap ); free( reader->definitionHeap ); reader->definitionHeap= NULL; return OTF_READ_ERROR; } for ( i= 0; i < reader->definitionHeap->n; i++ ) { if ( NULL != reader->definitionHeap->buffers[i] ) { pos= OTF_RBuffer_getRecord( reader->definitionHeap->buffers[i] ); /* remove empty streams */ if ( NULL == pos ) { /* keep original order */ reader->definitionHeap->buffers[i]= NULL; } } } } /* read streams */ for ( i= 0; i < reader->definitionHeap->n; i ++ ) { if ( NULL == reader->definitionHeap->buffers[i] ) { continue; } streamId= 0; if ( i > 0 ) { entry= OTF_MasterControl_getEntryByIndex( reader->mc, i -1 ); streamId= entry->argument; } pos= (char*) 0x2; while ( NULL != pos ) { if ( recordcount >= reader->recordLimit ) { /* record count limit reached, return */ return recordcount; } /* remember next record type, if it will be a none KEYVALUE record, dont't account it in recordcount */ next_char = *(reader->definitionHeap->buffers[i]->buffer + reader->definitionHeap->buffers[i]->pos); ret= OTF_Reader_parseDefRecord( reader->definitionHeap->buffers[i], handlers, streamId ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_parseDefRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->definitionHeap ); free( reader->definitionHeap ); reader->definitionHeap= NULL; return OTF_READ_ERROR; } /* Now reset the KeyValue list, if we consumed a none KEYVALUE record */ if ( next_char != OTF_KEYWORD_F_KEYVALUE_PREFIX /* 'K' */ ) { OTF_KeyValueList_reset(reader->definitionHeap->buffers[i]->list); recordcount++; } /* prepare next record in that stream */ pos= OTF_RBuffer_getRecord( reader->definitionHeap->buffers[i] ); if ( NULL == pos ) { /* test if the file is really exceeded or if there is some junk left. test here instead of in 'OTF_RBuffer_getRecord()'. throw a warning/error in case*/ if ( reader->definitionHeap->buffers[i]->pos < reader->definitionHeap->buffers[i]->end ) { ret= OTF_Reader_readUnknownDefRecord( reader->definitionHeap->buffers[i], handlers, streamId ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_readUnknownDefRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->definitionHeap ); free( reader->definitionHeap ); reader->definitionHeap= NULL; return OTF_READ_ERROR; } } /* stream is empty -> remove from heap */ reader->definitionHeap->buffers[i]= NULL; } } } return recordcount; } OTF_MasterControl* OTF_Reader_getMasterControl( OTF_Reader* reader ) { return reader->mc; } uint64_t OTF_Reader_readEvents( OTF_Reader* reader, OTF_HandlerArray* handlers ) { uint64_t recordcount= 0; int ret; char* pos; uint32_t i; uint32_t currentprocess= 0; # ifdef OTF_DEBUG uint64_t oldtime= 0; # endif uint64_t p; char next_char = '\0'; /* initialized? */ if ( NULL == reader->eventHeap ) { /* init */ reader->eventHeap= (OTF_Heap*) malloc( sizeof(OTF_Heap) ); if( NULL == reader->eventHeap ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return OTF_READ_ERROR; } if( 0 == OTF_Heap_initEventHeap( reader->eventHeap, reader) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Heap_initEventHeap() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->eventHeap ); free( reader->eventHeap ); reader->eventHeap= NULL; return OTF_READ_ERROR; } /* for progress report */ reader->eventHeap->progressMin= (uint64_t) -1; reader->eventHeap->progressMax= 0; reader->eventHeap->bytesMax= 0; reader->eventHeap->bytesMin= 0; reader->eventHeap->bytesCurrent= 0; reader->eventHeap->bytesDone= 0; /* make all buffers in heap jump to start time */ for ( i= 0; i < reader->eventHeap->n; i++ ) { ret= 1; /* the file has to retrieve his own information ... especially his "lastTime" is intressting */ OTF_RBuffer_getFileProperties( reader->eventHeap->buffers[i] ); /* get last filepos of lasttime (right in front of the next time) */ if( reader->maxTime < reader->eventHeap->buffers[i]->lastTime ) { /* interval -> take the pos right behind the lasttime, right before the next time */ ret= OTF_RBuffer_searchTime( reader->eventHeap->buffers[i], reader->maxTime ); while( reader->maxTime >= reader->eventHeap->buffers[i]->time ) { OTF_RBuffer_getRecord( reader->eventHeap->buffers[i] ); OTF_RBuffer_readNewline( reader->eventHeap->buffers[i] ); } reader->eventHeap->bytesMax+= OTF_RBuffer_getFilePos( reader->eventHeap->buffers[i] ); } else { /* no interval -> take the fileend */ reader->eventHeap->bytesMax+= OTF_RBuffer_getFileSize( reader->eventHeap->buffers[i] ); } /* get the filepos of the firsttime */ ret&= OTF_RBuffer_searchTime( reader->eventHeap->buffers[i], reader->minTime ); reader->eventHeap->bytesMin+= OTF_RBuffer_getFilePos( reader->eventHeap->buffers[i] ); if( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_RBuffer_searchTime() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->eventHeap ); free( reader->eventHeap ); reader->eventHeap= NULL; return OTF_READ_ERROR; } /* for progress report: get union of all buffer's time interval */ p= reader->eventHeap->buffers[i]->firstTime; reader->eventHeap->progressMin= ( reader->eventHeap->progressMin <= p ) ? reader->eventHeap->progressMin : p; p= reader->eventHeap->buffers[i]->lastTime; reader->eventHeap->progressMax= ( reader->eventHeap->progressMax >= p ) ? reader->eventHeap->progressMax : p; /* make sure buffer's time information is updated*/ pos= OTF_RBuffer_getRecord( reader->eventHeap->buffers[i] ); /* remove empty streams */ if ( NULL == pos ) { reader->eventHeap->n--; reader->eventHeap->buffers[i]= reader->eventHeap->buffers[reader->eventHeap->n]; /* make sure to repeat this for loop with the same index i */ i--; continue; } /* inlined OTF_RBuffer_getCurrentTime() */ if( reader->eventHeap->buffers[i]->time < reader->minTime ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "current time %llu < mintime %llu.\n", __FUNCTION__, __FILE__, __LINE__, (long long unsigned) reader->eventHeap->buffers[i]->time, (long long unsigned) reader->minTime ); OTF_Heap_finalize( reader->eventHeap ); free( reader->eventHeap ); reader->eventHeap= NULL; return OTF_READ_ERROR; } } OTF_Heap_sort( reader->eventHeap ); # ifdef OTF_DEBUG OTF_Heap_checksorted( reader->eventHeap ); # endif /* OTF_DEBUG */ /* for progress report: cut intervals [progressMin,progressMax] and [minTime,maxTime] */ reader->eventHeap->progressMin= ( reader->eventHeap->progressMin >= reader->minTime ) ? reader->eventHeap->progressMin : reader->minTime; reader->eventHeap->progressMax= ( reader->eventHeap->progressMax <= reader->maxTime ) ? reader->eventHeap->progressMax : reader->maxTime; if ( reader->eventHeap->n > 0 ) { reader->eventHeap->progressCurrent= reader->eventHeap->buffers[0]->time; } else { reader->eventHeap->progressCurrent= 0; } } while ( reader->eventHeap->n > 0 ) { if ( recordcount >= reader->recordLimit ) { /* record count limit reached, return */ return recordcount; } /* inlined OTF_RBuffer_getCurrentTime() */ # ifdef OTF_DEBUG oldtime= reader->eventHeap->progressCurrent; # endif reader->eventHeap->progressCurrent= reader->eventHeap->buffers[0]->time; /* debug check */ # ifdef OTF_DEBUG if ( oldtime > reader->eventHeap->progressCurrent ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Time decreases. %llu < %llu.\n", __FUNCTION__, __FILE__, __LINE__, (unsigned long long) reader->eventHeap->progressCurrent, (unsigned long long) oldtime ); OTF_Heap_finalize( reader->eventHeap ); free( reader->eventHeap ); reader->eventHeap= NULL; return OTF_READ_ERROR; } # endif /* OTF_DEBUG */ /* check for time interval */ if ( reader->eventHeap->progressCurrent >= reader->maxTime ) { /* add the last filepos of this buffer to "bytesDone" */ reader->eventHeap->bytesDone+= OTF_RBuffer_getFilePos( reader->eventHeap->buffers[0] ); /* drop that stream */ reader->eventHeap->n--; reader->eventHeap->buffers[0]= reader->eventHeap->buffers[reader->eventHeap->n]; OTF_Heap_resort( reader->eventHeap ); continue; } /* inlined OTF_RBuffer_getCurrentProcess() */ currentprocess= reader->eventHeap->buffers[0]->process; /* check if process is enabled */ if ( 0 == OTF_ProcessList_getStatus( reader->processList, currentprocess ) ) { /* ignore record */ OTF_RBuffer_readNewline( reader->eventHeap->buffers[0] ); /* prepare next record in that stream */ pos= OTF_RBuffer_getRecord( reader->eventHeap->buffers[0] ); if ( NULL == pos ) { /* test if the file is really exceeded or if there is some junk left. test here instead of in 'OTF_RBuffer_getRecord()'. throw a warning/error in case*/ if ( reader->eventHeap->buffers[0]->pos < reader->eventHeap->buffers[0]->end ) { ret= OTF_Reader_readUnknownRecord( reader->eventHeap->buffers[0], handlers ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_readUnknownRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->eventHeap ); free( reader->eventHeap ); reader->eventHeap= NULL; return OTF_READ_ERROR; } } /* add the last filepos of this buffer to "bytesDone" */ reader->eventHeap->bytesDone+= OTF_RBuffer_getFilePos( reader->eventHeap->buffers[0] ); /* stream is empty -> remove from heap */ reader->eventHeap->n--; reader->eventHeap->buffers[0]= reader->eventHeap->buffers[reader->eventHeap->n]; } OTF_Heap_resort( reader->eventHeap ); continue; } /* remember next record type, if it will be a none KEYVALUE record, dont't account it in recordcount */ next_char = *(reader->eventHeap->buffers[0]->buffer + reader->eventHeap->buffers[0]->pos); ret= OTF_Reader_parseEventRecord( reader->eventHeap->buffers[0], handlers ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_parseEventRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->eventHeap ); free( reader->eventHeap ); reader->eventHeap= NULL; return OTF_READ_ERROR; } /* Now reset the KeyValue list, if we consumed a none KEYVALUE record */ if ( next_char != OTF_KEYWORD_F_KEYVALUE_PREFIX /* 'K' */ ) { OTF_KeyValueList_reset(reader->eventHeap->buffers[0]->list); recordcount++; } /* prepare next record in that stream */ pos= OTF_RBuffer_getRecord( reader->eventHeap->buffers[0] ); if ( NULL == pos ) { /* test if the file is really exceeded or if there is some junk left. test here instead of in 'OTF_RBuffer_getRecord()'. throw a warning/error in case*/ if ( reader->eventHeap->buffers[0]->pos < reader->eventHeap->buffers[0]->end ) { ret= OTF_Reader_readUnknownRecord( reader->eventHeap->buffers[0], handlers ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_readUnknownRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->eventHeap ); free( reader->eventHeap ); reader->eventHeap= NULL; return OTF_READ_ERROR; } } /* add the last filepos of this buffer to "bytesDone" */ reader->eventHeap->bytesDone+= OTF_RBuffer_getFilePos( reader->eventHeap->buffers[0] ); /* stream is empty -> remove from heap */ reader->eventHeap->n--; reader->eventHeap->buffers[0]= reader->eventHeap->buffers[reader->eventHeap->n]; } OTF_Heap_resort( reader->eventHeap ); } return recordcount; } uint64_t OTF_Reader_readEventsUnsorted( OTF_Reader* reader, OTF_HandlerArray* handlers ) { uint64_t recordcount= 0; uint64_t p; uint32_t currentprocess= 0; char* pos; uint32_t i; int ret; double s_reziprok; uint64_t delta_t; char next_char = '\0'; /* initialized? */ if ( NULL == reader->eventHeap ) { /* init */ reader->eventHeap= (OTF_Heap*) malloc( sizeof(OTF_Heap) ); if( NULL == reader->eventHeap ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return OTF_READ_ERROR; } if( 0 == OTF_Heap_initEventHeap( reader->eventHeap, reader) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Heap_initEventHeap() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->eventHeap ); free( reader->eventHeap ); reader->eventHeap= NULL; return OTF_READ_ERROR; } /* for progress report */ reader->eventHeap->progressMin= (uint64_t) -1; reader->eventHeap->progressMax= 0; reader->eventHeap->bytesMax= 0; reader->eventHeap->bytesMin= 0; reader->eventHeap->bytesCurrent= 0; reader->eventHeap->bytesDone= 0; /* make all buffers in heap jump to start time */ for ( i= 0; i < reader->eventHeap->n; i++ ) { ret= 1; /* the file has to retrieve his own information ... especially his "lastTime" is intressting */ OTF_RBuffer_getFileProperties( reader->eventHeap->buffers[i] ); /* get last filepos of lasttime (right in front of the next time) */ if( reader->maxTime < reader->eventHeap->buffers[i]->lastTime ) { /* interval -> take the pos right behind the lasttime, right before the next time */ ret= OTF_RBuffer_searchTime( reader->eventHeap->buffers[i], reader->maxTime ); while( reader->maxTime >= reader->eventHeap->buffers[i]->time ) { OTF_RBuffer_getRecord( reader->eventHeap->buffers[i] ); OTF_RBuffer_readNewline( reader->eventHeap->buffers[i] ); } reader->eventHeap->bytesMax+= OTF_RBuffer_getFilePos( reader->eventHeap->buffers[i] ); } else { /* no interval -> take the fileend */ reader->eventHeap->bytesMax+= OTF_RBuffer_getFileSize( reader->eventHeap->buffers[i] ); } /* get the filepos of the firsttime */ ret&= OTF_RBuffer_searchTime( reader->eventHeap->buffers[i], reader->minTime ); reader->eventHeap->bytesMin+= OTF_RBuffer_getFilePos( reader->eventHeap->buffers[i] ); if( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_RBuffer_searchTime() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->eventHeap ); free( reader->eventHeap ); reader->eventHeap= NULL; return OTF_READ_ERROR; } /* for progress report: get union of all buffer's time interval */ p= reader->eventHeap->buffers[i]->firstTime; reader->eventHeap->progressMin= ( reader->eventHeap->progressMin <= p ) ? reader->eventHeap->progressMin : p; p= reader->eventHeap->buffers[i]->lastTime; reader->eventHeap->progressMax= ( reader->eventHeap->progressMax >= p ) ? reader->eventHeap->progressMax : p; /* make sure buffer's time information is updated*/ pos= OTF_RBuffer_getRecord( reader->eventHeap->buffers[i] ); /* remove empty streams */ if ( NULL == pos ) { reader->eventHeap->n--; reader->eventHeap->buffers[i]= reader->eventHeap->buffers[reader->eventHeap->n]; /* make sure to repeat this for loop with the same index i */ i--; continue; } /* inlined OTF_RBuffer_getCurrentTime() */ if( reader->eventHeap->buffers[i]->time < reader->minTime ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "current time %llu < mintime %llu.\n", __FUNCTION__, __FILE__, __LINE__, (long long unsigned) reader->eventHeap->buffers[i]->time, (long long unsigned) reader->minTime ); OTF_Heap_finalize( reader->eventHeap ); free( reader->eventHeap ); reader->eventHeap= NULL; return OTF_READ_ERROR; } } /* for progress report: cut intervals [progressMin,progressMax] and [minTime,maxTime] */ reader->eventHeap->progressMin= ( reader->eventHeap->progressMin >= reader->minTime ) ? reader->eventHeap->progressMin : reader->minTime; reader->eventHeap->progressMax= ( reader->eventHeap->progressMax <= reader->maxTime ) ? reader->eventHeap->progressMax : reader->maxTime; } s_reziprok= 1/(double)reader->eventHeap->s; delta_t= reader->eventHeap->progressMax-reader->eventHeap->progressMin; while ( reader->eventHeap->n > 0 && recordcount < reader->recordLimit ) { /* inlined OTF_RBuffer_getCurrentTime() */ /* calculate a "current time", which is between min and max. * In this case we have to: min + ((delta)/s)*(s-n) + (curtime-min)/s * * s= all streams * n= streams left * delta= max-min */ reader->eventHeap->progressCurrent= (uint64_t) ( reader->eventHeap->progressMin + (delta_t*s_reziprok) * (reader->eventHeap->s-reader->eventHeap->n) + (reader->eventHeap->buffers[0]->time-reader->eventHeap->progressMin)*s_reziprok ); /* check for time interval */ if ( reader->eventHeap->buffers[0]->time >= reader->maxTime ) { /* add the last filepos of this buffer to "bytesDone" */ reader->eventHeap->bytesDone+= OTF_RBuffer_getFilePos( reader->eventHeap->buffers[0] ); /* drop that stream */ reader->eventHeap->n--; reader->eventHeap->buffers[0]= reader->eventHeap->buffers[reader->eventHeap->n]; continue; } /* inlined OTF_RBuffer_getCurrentProcess() */ currentprocess= reader->eventHeap->buffers[0]->process; /* check if process is enabled */ if ( 0 == OTF_ProcessList_getStatus( reader->processList, currentprocess ) ) { /* ignore record */ OTF_RBuffer_readNewline( reader->eventHeap->buffers[0] ); /* prepare next record in that stream */ pos= OTF_RBuffer_getRecord( reader->eventHeap->buffers[0] ); if ( NULL == pos ) { /* test if the file is really exceeded or if there is some junk left. test here instead of in 'OTF_RBuffer_getRecord()'. throw a warning/error in case*/ if ( reader->eventHeap->buffers[0]->pos < reader->eventHeap->buffers[0]->end ) { ret= OTF_Reader_readUnknownRecord( reader->eventHeap->buffers[0], handlers ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_readUnknownRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->eventHeap ); free( reader->eventHeap ); reader->eventHeap= NULL; return OTF_READ_ERROR; } } /* add the last filepos of this buffer to "bytesDone" */ reader->eventHeap->bytesDone+= OTF_RBuffer_getFilePos( reader->eventHeap->buffers[0] ); /* stream is empty -> remove from heap */ reader->eventHeap->n--; reader->eventHeap->buffers[0]= reader->eventHeap->buffers[reader->eventHeap->n]; } continue; } /* remember next record type, if it will be a none KEYVALUE record, dont't account it in recordcount */ next_char = *(reader->eventHeap->buffers[0]->buffer + reader->eventHeap->buffers[0]->pos); ret= OTF_Reader_parseEventRecord( reader->eventHeap->buffers[0], handlers ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_parseEventRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->eventHeap ); free( reader->eventHeap ); reader->eventHeap= NULL; return OTF_READ_ERROR; } /* Now reset the KeyValue list, if we consumed a none KEYVALUE record */ if ( next_char != OTF_KEYWORD_F_KEYVALUE_PREFIX /* 'K' */ ) { OTF_KeyValueList_reset(reader->eventHeap->buffers[0]->list); recordcount++; } /* prepare next record in that stream */ pos= OTF_RBuffer_getRecord( reader->eventHeap->buffers[0] ); if ( NULL == pos ) { /* test if the file is really exceeded or if there is some junk left. test here instead of in 'OTF_RBuffer_getRecord()'. throw a warning/error in case*/ if ( reader->eventHeap->buffers[0]->pos < reader->eventHeap->buffers[0]->end ) { ret= OTF_Reader_readUnknownRecord( reader->eventHeap->buffers[0], handlers ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_readUnknownRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->eventHeap ); free( reader->eventHeap ); reader->eventHeap= NULL; return OTF_READ_ERROR; } } /* add the last filepos of this buffer to "bytesDone" */ reader->eventHeap->bytesDone+= OTF_RBuffer_getFilePos( reader->eventHeap->buffers[0] ); /* stream is empty -> remove from heap */ reader->eventHeap->n--; reader->eventHeap->buffers[0]= reader->eventHeap->buffers[reader->eventHeap->n]; } } return recordcount; } uint64_t OTF_Reader_readSnapshots( OTF_Reader* reader, OTF_HandlerArray* handlers ) { uint64_t recordcount= 0; int ret; char* pos; uint32_t i; uint32_t currentprocess= 0; # ifdef OTF_DEBUG uint64_t oldtime= 0; # endif uint64_t p; char next_char = '\0'; /* initialized? */ if ( NULL == reader->snapshotsHeap ) { /* init */ reader->snapshotsHeap= (OTF_Heap*) malloc( sizeof(OTF_Heap) ); if( NULL == reader->snapshotsHeap ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return OTF_READ_ERROR; } if( 0 == OTF_Heap_initSnapshotsHeap( reader->snapshotsHeap, reader) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->snapshotsHeap ); free( reader->snapshotsHeap ); reader->snapshotsHeap= NULL; return OTF_READ_ERROR; } /* for progress report */ reader->snapshotsHeap->progressMin= (uint64_t) -1; reader->snapshotsHeap->progressMax= 0; reader->snapshotsHeap->bytesMax= 0; reader->snapshotsHeap->bytesMin= 0; reader->snapshotsHeap->bytesCurrent= 0; reader->snapshotsHeap->bytesDone= 0; /* make all buffers in heap jump to start time */ for ( i= 0; i < reader->snapshotsHeap->n; i++ ) { ret= 1; /* the file has to retrieve his own information ... especially his "lastTime" is intressting */ OTF_RBuffer_getFileProperties( reader->snapshotsHeap->buffers[i] ); /* get last filepos of lasttime (right in front of the next time) */ if( reader->maxTime < reader->snapshotsHeap->buffers[i]->lastTime ) { /* interval -> take the pos right behind the lasttime, right before the next time */ ret= OTF_RBuffer_searchTime( reader->snapshotsHeap->buffers[i], reader->maxTime ); while( reader->maxTime >= reader->snapshotsHeap->buffers[i]->time ) { OTF_RBuffer_getRecord( reader->snapshotsHeap->buffers[i] ); OTF_RBuffer_readNewline( reader->snapshotsHeap->buffers[i] ); } reader->snapshotsHeap->bytesMax+= OTF_RBuffer_getFilePos( reader->snapshotsHeap->buffers[i] ); } else { /* no interval -> take the fileend */ reader->snapshotsHeap->bytesMax+= OTF_RBuffer_getFileSize( reader->snapshotsHeap->buffers[i] ); } /* get the filepos of the firsttime */ ret&= OTF_RBuffer_searchTime( reader->snapshotsHeap->buffers[i], reader->minTime ); reader->snapshotsHeap->bytesMin+= OTF_RBuffer_getFilePos( reader->snapshotsHeap->buffers[i] ); if( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_RBuffer_searchTime() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->snapshotsHeap ); free( reader->snapshotsHeap ); reader->snapshotsHeap= NULL; return OTF_READ_ERROR; } /* for progress report: get union of all buffer's time interval */ p= reader->snapshotsHeap->buffers[i]->firstTime; reader->snapshotsHeap->progressMin= ( reader->snapshotsHeap->progressMin <= p ) ? reader->snapshotsHeap->progressMin : p; p= reader->snapshotsHeap->buffers[i]->lastTime; reader->snapshotsHeap->progressMax= ( reader->snapshotsHeap->progressMax >= p ) ? reader->snapshotsHeap->progressMax : p; /* make sure buffer's time information is updated*/ pos= OTF_RBuffer_getRecord( reader->snapshotsHeap->buffers[i] ); /* remove empty streams */ if ( NULL == pos ) { reader->snapshotsHeap->n--; reader->snapshotsHeap->buffers[i]= reader->snapshotsHeap->buffers[reader->snapshotsHeap->n]; /* make sure to repeat this for loop with the same index i */ i--; continue; } /* inlined OTF_RBuffer_getCurrentTime() */ if( reader->snapshotsHeap->buffers[i]->time < reader->minTime ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "current time %llu < mintime %llu.\n", __FUNCTION__, __FILE__, __LINE__, (long long unsigned) reader->snapshotsHeap->buffers[i]->time, (long long unsigned) reader->minTime ); OTF_Heap_finalize( reader->snapshotsHeap ); free( reader->snapshotsHeap ); reader->snapshotsHeap= NULL; return OTF_READ_ERROR; } } OTF_Heap_sort( reader->snapshotsHeap ); # ifdef OTF_DEBUG OTF_Heap_checksorted( reader->snapshotsHeap ); # endif /* OTF_DEBUG */ /* for progress report: cut intervals [progressMin,progressMax] and [minTime,maxTime] */ reader->snapshotsHeap->progressMin= ( reader->snapshotsHeap->progressMin >= reader->minTime ) ? reader->snapshotsHeap->progressMin : reader->minTime; reader->snapshotsHeap->progressMax= ( reader->snapshotsHeap->progressMax <= reader->maxTime ) ? reader->snapshotsHeap->progressMax : reader->maxTime; if ( reader->snapshotsHeap->n > 0 ) { reader->snapshotsHeap->progressCurrent= reader->snapshotsHeap->buffers[0]->time; } else { reader->snapshotsHeap->progressCurrent= 0; } } while ( reader->snapshotsHeap->n > 0 ) { if ( recordcount >= reader->recordLimit ) { /* record count limit reached, return */ return recordcount; } /* inlined OTF_RBuffer_getCurrentTime() */ # ifdef OTF_DEBUG oldtime= reader->snapshotsHeap->progressCurrent; # endif reader->snapshotsHeap->progressCurrent= reader->snapshotsHeap->buffers[0]->time; /* debug check */ # ifdef OTF_DEBUG if ( oldtime > reader->snapshotsHeap->progressCurrent ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Time does decrease. %llu < %llu.\n", __FUNCTION__, __FILE__, __LINE__, (unsigned long long) reader->snapshotsHeap->progressCurrent, (unsigned long long) oldtime ); OTF_Heap_finalize( reader->snapshotsHeap ); free( reader->snapshotsHeap ); reader->snapshotsHeap= NULL; return OTF_READ_ERROR; } # endif /* OTF_DEBUG */ /* check for time interval */ if ( reader->snapshotsHeap->progressCurrent >= reader->maxTime ) { /* add the last filepos of this buffer to "bytesDone" */ reader->snapshotsHeap->bytesDone+= OTF_RBuffer_getFilePos( reader->snapshotsHeap->buffers[0] ); /* drop that stream */ reader->snapshotsHeap->n--; reader->snapshotsHeap->buffers[0]= reader->snapshotsHeap->buffers[reader->snapshotsHeap->n]; OTF_Heap_resort( reader->snapshotsHeap ); continue; } /* inlined OTF_RBuffer_getCurrentProcess() */ currentprocess= reader->snapshotsHeap->buffers[0]->process; /* check if process is enabled */ if ( 0 == OTF_ProcessList_getStatus( reader->processList, currentprocess ) ) { /* ignore record */ OTF_RBuffer_readNewline( reader->snapshotsHeap->buffers[0] ); /* prepare next record in that stream */ pos= OTF_RBuffer_getRecord( reader->snapshotsHeap->buffers[0] ); if ( NULL == pos ) { /* test if the file is really exceeded or if there is some junk left. test here instead of in 'OTF_RBuffer_getRecord()'. throw a warning/error in case*/ if ( reader->snapshotsHeap->buffers[0]->pos < reader->snapshotsHeap->buffers[0]->end ) { ret= OTF_Reader_readUnknownRecord( reader->snapshotsHeap->buffers[0], handlers ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_readUnknownRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->snapshotsHeap ); free( reader->snapshotsHeap ); reader->snapshotsHeap= NULL; return OTF_READ_ERROR; } } /* add the last filepos of this buffer to "bytesDone" */ reader->snapshotsHeap->bytesDone+= OTF_RBuffer_getFilePos( reader->snapshotsHeap->buffers[0] ); /* stream is empty -> remove from heap */ reader->snapshotsHeap->n--; reader->snapshotsHeap->buffers[0]= reader->snapshotsHeap->buffers[reader->snapshotsHeap->n]; } OTF_Heap_resort( reader->snapshotsHeap ); continue; } /* remember next record type, if it will be a none KEYVALUE record, dont't account it in recordcount */ next_char = *(reader->snapshotsHeap->buffers[0]->buffer + reader->snapshotsHeap->buffers[0]->pos); ret= OTF_Reader_parseSnapshotsRecord( reader->snapshotsHeap->buffers[0], handlers ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_parseSnapshotsRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->snapshotsHeap ); free( reader->snapshotsHeap ); reader->snapshotsHeap= NULL; return OTF_READ_ERROR; } /* Now reset the KeyValue list, if we consumed a none KEYVALUE record */ if ( next_char != OTF_KEYWORD_F_KEYVALUE_PREFIX /* 'K' */ ) { OTF_KeyValueList_reset(reader->snapshotsHeap->buffers[0]->list); recordcount++; } /* prepare next record in that stream */ pos= OTF_RBuffer_getRecord( reader->snapshotsHeap->buffers[0] ); if ( NULL == pos ) { /* test if the file is really exceeded or if there is some junk left. test here instead of in 'OTF_RBuffer_getRecord()'. throw a warning/error in case*/ if ( reader->snapshotsHeap->buffers[0]->pos < reader->snapshotsHeap->buffers[0]->end ) { ret= OTF_Reader_readUnknownRecord( reader->snapshotsHeap->buffers[0], handlers ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_readUnknownRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->snapshotsHeap ); free( reader->snapshotsHeap ); reader->snapshotsHeap= NULL; return OTF_READ_ERROR; } } /* add the last filepos of this buffer to "bytesDone" */ reader->snapshotsHeap->bytesDone+= OTF_RBuffer_getFilePos( reader->snapshotsHeap->buffers[0] ); /* stream is empty -> remove from heap */ reader->snapshotsHeap->n--; reader->snapshotsHeap->buffers[0]= reader->snapshotsHeap->buffers[reader->snapshotsHeap->n]; } OTF_Heap_resort( reader->snapshotsHeap ); } return recordcount; } uint64_t OTF_Reader_readSnapshotsUnsorted( OTF_Reader* reader, OTF_HandlerArray* handlers ) { uint64_t recordcount= 0; uint64_t p; uint32_t currentprocess= 0; char* pos; uint32_t i; int ret; double s_reziprok; uint64_t delta_t; char next_char = '\0'; /* initialized? */ if ( NULL == reader->snapshotsHeap ) { /* init */ reader->snapshotsHeap= (OTF_Heap*) malloc( sizeof(OTF_Heap) ); if( NULL == reader->snapshotsHeap ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return OTF_READ_ERROR; } if( 0 == OTF_Heap_initSnapshotsHeap( reader->snapshotsHeap, reader) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Heap_initSnapshotsHeap() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->snapshotsHeap ); free( reader->snapshotsHeap ); reader->snapshotsHeap= NULL; return OTF_READ_ERROR; } /* for progress report */ reader->snapshotsHeap->progressMin= (uint64_t) -1; reader->snapshotsHeap->progressMax= 0; reader->snapshotsHeap->bytesMax= 0; reader->snapshotsHeap->bytesMin= 0; reader->snapshotsHeap->bytesCurrent= 0; reader->snapshotsHeap->bytesDone= 0; /* make all buffers in heap jump to start time */ for ( i= 0; i < reader->snapshotsHeap->n; i++ ) { ret= 1; /* the file has to retrieve his own information ... especially his "lastTime" is intressting */ OTF_RBuffer_getFileProperties( reader->snapshotsHeap->buffers[i] ); /* get last filepos of lasttime (right in front of the next time) */ if( reader->maxTime < reader->snapshotsHeap->buffers[i]->lastTime ) { /* interval -> take the pos right behind the lasttime, right before the next time */ ret= OTF_RBuffer_searchTime( reader->snapshotsHeap->buffers[i], reader->maxTime ); while( reader->maxTime >= reader->snapshotsHeap->buffers[i]->time ) { OTF_RBuffer_getRecord( reader->snapshotsHeap->buffers[i] ); OTF_RBuffer_readNewline( reader->snapshotsHeap->buffers[i] ); } reader->snapshotsHeap->bytesMax+= OTF_RBuffer_getFilePos( reader->snapshotsHeap->buffers[i] ); } else { /* no interval -> take the fileend */ reader->snapshotsHeap->bytesMax+= OTF_RBuffer_getFileSize( reader->snapshotsHeap->buffers[i] ); } /* get the filepos of the firsttime */ ret&= OTF_RBuffer_searchTime( reader->snapshotsHeap->buffers[i], reader->minTime ); reader->snapshotsHeap->bytesMin+= OTF_RBuffer_getFilePos( reader->snapshotsHeap->buffers[i] ); if( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_RBuffer_searchTime() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->snapshotsHeap ); free( reader->snapshotsHeap ); reader->snapshotsHeap= NULL; return OTF_READ_ERROR; } /* for progress report: get union of all buffer's time interval */ p= reader->snapshotsHeap->buffers[i]->firstTime; reader->snapshotsHeap->progressMin= ( reader->snapshotsHeap->progressMin <= p ) ? reader->snapshotsHeap->progressMin : p; p= reader->snapshotsHeap->buffers[i]->lastTime; reader->snapshotsHeap->progressMax= ( reader->snapshotsHeap->progressMax >= p ) ? reader->snapshotsHeap->progressMax : p; /* make sure buffer's time information is updated*/ pos= OTF_RBuffer_getRecord( reader->snapshotsHeap->buffers[i] ); /* remove empty streams */ if ( NULL == pos ) { reader->snapshotsHeap->n--; reader->snapshotsHeap->buffers[i]= reader->snapshotsHeap->buffers[reader->snapshotsHeap->n]; /* make sure to repeat this for loop with the same index i */ i--; continue; } /* inlined OTF_RBuffer_getCurrentTime() */ if( reader->snapshotsHeap->buffers[i]->time < reader->minTime ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "current time %llu < mintime %llu.\n", __FUNCTION__, __FILE__, __LINE__, (long long unsigned) reader->snapshotsHeap->buffers[i]->time, (long long unsigned) reader->minTime ); OTF_Heap_finalize( reader->snapshotsHeap ); free( reader->snapshotsHeap ); reader->snapshotsHeap= NULL; return OTF_READ_ERROR; } } /* for progress report: cut intervals [progressMin,progressMax] and [minTime,maxTime] */ reader->snapshotsHeap->progressMin= ( reader->snapshotsHeap->progressMin >= reader->minTime ) ? reader->snapshotsHeap->progressMin : reader->minTime; reader->snapshotsHeap->progressMax= ( reader->snapshotsHeap->progressMax <= reader->maxTime ) ? reader->snapshotsHeap->progressMax : reader->maxTime; } s_reziprok= 1/(double)reader->snapshotsHeap->s; delta_t= reader->snapshotsHeap->progressMax-reader->snapshotsHeap->progressMin; while ( reader->snapshotsHeap->n > 0 && recordcount < reader->recordLimit ) { /* inlined OTF_RBuffer_getCurrentTime() */ /* calculate a "current time", which is between min and max. * In this case we have to: min + ((delta)/s)*(s-n) + (curtime-min)/s * * s= all streams * n= streams left * delta= max-min */ reader->snapshotsHeap->progressCurrent= (uint64_t) ( reader->snapshotsHeap->progressMin + (delta_t*s_reziprok) * (reader->snapshotsHeap->s-reader->snapshotsHeap->n) + (reader->snapshotsHeap->buffers[0]->time-reader->snapshotsHeap->progressMin)*s_reziprok ); /* check for time interval */ if ( reader->snapshotsHeap->buffers[0]->time >= reader->maxTime ) { /* add the last filepos of this buffer to "bytesDone" */ reader->snapshotsHeap->bytesDone+= OTF_RBuffer_getFilePos( reader->snapshotsHeap->buffers[0] ); /* drop that stream */ reader->snapshotsHeap->n--; reader->snapshotsHeap->buffers[0]= reader->snapshotsHeap->buffers[reader->snapshotsHeap->n]; continue; } /* inlined OTF_RBuffer_getCurrentProcess() */ currentprocess= reader->snapshotsHeap->buffers[0]->process; /* check if process is enabled */ if ( 0 == OTF_ProcessList_getStatus( reader->processList, currentprocess ) ) { /* ignore record */ OTF_RBuffer_readNewline( reader->snapshotsHeap->buffers[0] ); /* prepare next record in that stream */ pos= OTF_RBuffer_getRecord( reader->snapshotsHeap->buffers[0] ); if ( NULL == pos ) { /* test if the file is really exceeded or if there is some junk left. test here instead of in 'OTF_RBuffer_getRecord()'. throw a warning/error in case*/ if ( reader->snapshotsHeap->buffers[0]->pos < reader->snapshotsHeap->buffers[0]->end ) { ret= OTF_Reader_readUnknownRecord( reader->snapshotsHeap->buffers[0], handlers ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_readUnknownRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->snapshotsHeap ); free( reader->snapshotsHeap ); reader->snapshotsHeap= NULL; return OTF_READ_ERROR; } } /* add the last filepos of this buffer to "bytesDone" */ reader->snapshotsHeap->bytesDone+= OTF_RBuffer_getFilePos( reader->snapshotsHeap->buffers[0] ); /* stream is empty -> remove from heap */ reader->snapshotsHeap->n--; reader->snapshotsHeap->buffers[0]= reader->snapshotsHeap->buffers[reader->snapshotsHeap->n]; } continue; } /* remember next record type, if it will be a none KEYVALUE record, dont't account it in recordcount */ next_char = *(reader->snapshotsHeap->buffers[0]->buffer + reader->snapshotsHeap->buffers[0]->pos); ret= OTF_Reader_parseSnapshotsRecord( reader->snapshotsHeap->buffers[0], handlers ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_parseSnapshotsRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->snapshotsHeap ); free( reader->snapshotsHeap ); reader->snapshotsHeap= NULL; return OTF_READ_ERROR; } /* Now reset the KeyValue list, if we consumed a none KEYVALUE record */ if ( next_char != OTF_KEYWORD_F_KEYVALUE_PREFIX /* 'K' */ ) { OTF_KeyValueList_reset(reader->snapshotsHeap->buffers[0]->list); recordcount++; } /* prepare next record in that stream */ pos= OTF_RBuffer_getRecord( reader->snapshotsHeap->buffers[0] ); if ( NULL == pos ) { /* test if the file is really exceeded or if there is some junk left. test here instead of in 'OTF_RBuffer_getRecord()'. throw a warning/error in case*/ if ( reader->snapshotsHeap->buffers[0]->pos < reader->snapshotsHeap->buffers[0]->end ) { ret= OTF_Reader_readUnknownRecord( reader->snapshotsHeap->buffers[0], handlers ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_readUnknownRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->snapshotsHeap ); free( reader->snapshotsHeap ); reader->snapshotsHeap= NULL; return OTF_READ_ERROR; } } /* add the last filepos of this buffer to "bytesDone" */ reader->snapshotsHeap->bytesDone+= OTF_RBuffer_getFilePos( reader->snapshotsHeap->buffers[0] ); /* stream is empty -> remove from heap */ reader->snapshotsHeap->n--; reader->snapshotsHeap->buffers[0]= reader->snapshotsHeap->buffers[reader->snapshotsHeap->n]; } } return recordcount; } uint64_t OTF_Reader_readStatistics( OTF_Reader* reader, OTF_HandlerArray* handlers ) { uint64_t recordcount= 0; int ret; char* pos; uint32_t i; uint32_t currentprocess= 0; # ifdef OTF_DEBUG uint64_t oldtime= 0; # endif uint64_t p; char next_char = '\0'; /* initialized? */ if ( NULL == reader->statisticsHeap ) { /* init */ reader->statisticsHeap= (OTF_Heap*) malloc( sizeof(OTF_Heap) ); if( NULL == reader->statisticsHeap ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return OTF_READ_ERROR; } if( 0 == OTF_Heap_initStatisticsHeap( reader->statisticsHeap, reader) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Heap_initStatisticsHeap() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->statisticsHeap ); free( reader->statisticsHeap ); reader->statisticsHeap= NULL; return OTF_READ_ERROR; } /* for progress report */ reader->statisticsHeap->progressMin= (uint64_t) -1; reader->statisticsHeap->progressMax= 0; reader->statisticsHeap->bytesMax= 0; reader->statisticsHeap->bytesMin= 0; reader->statisticsHeap->bytesCurrent= 0; reader->statisticsHeap->bytesDone= 0; /* make all buffers in heap jump to start time */ for ( i= 0; i < reader->statisticsHeap->n; i++ ) { ret= 1; /* the file has to retrieve his own information ... especially his "lastTime" is intressting */ OTF_RBuffer_getFileProperties( reader->statisticsHeap->buffers[i] ); /* get last filepos of lasttime (right in front of the next time) */ if( reader->maxTime < reader->statisticsHeap->buffers[i]->lastTime ) { /* interval -> take the pos right behind the lasttime, right before the next time */ ret= OTF_RBuffer_searchTime( reader->statisticsHeap->buffers[i], reader->maxTime ); while( reader->maxTime >= reader->statisticsHeap->buffers[i]->time ) { OTF_RBuffer_getRecord( reader->statisticsHeap->buffers[i] ); OTF_RBuffer_readNewline( reader->statisticsHeap->buffers[i] ); } reader->statisticsHeap->bytesMax+= OTF_RBuffer_getFilePos( reader->statisticsHeap->buffers[i] ); } else { /* no interval -> take the fileend */ reader->statisticsHeap->bytesMax+= OTF_RBuffer_getFileSize( reader->statisticsHeap->buffers[i] ); } /* get the filepos of the firsttime */ ret&= OTF_RBuffer_searchTime( reader->statisticsHeap->buffers[i], reader->minTime ); reader->statisticsHeap->bytesMin+= OTF_RBuffer_getFilePos( reader->statisticsHeap->buffers[i] ); if( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_RBuffer_searchTime() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->statisticsHeap ); free( reader->statisticsHeap ); reader->statisticsHeap= NULL; return OTF_READ_ERROR; } /* for progress report: get union of all buffer's time interval */ p= reader->statisticsHeap->buffers[i]->firstTime; reader->statisticsHeap->progressMin= ( reader->statisticsHeap->progressMin <= p ) ? reader->statisticsHeap->progressMin : p; p= reader->statisticsHeap->buffers[i]->lastTime; reader->statisticsHeap->progressMax= ( reader->statisticsHeap->progressMax >= p ) ? reader->statisticsHeap->progressMax : p; /* make sure buffer's time information is updated*/ pos= OTF_RBuffer_getRecord( reader->statisticsHeap->buffers[i] ); /* remove empty streams */ if ( NULL == pos ) { reader->statisticsHeap->n--; reader->statisticsHeap->buffers[i]= reader->statisticsHeap->buffers[reader->statisticsHeap->n]; /* make sure to repeat this for loop with the same index i */ i--; continue; } /* inlined OTF_RBuffer_getCurrentTime() */ if( reader->statisticsHeap->buffers[i]->time < reader->minTime ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "current time %llu < mintime %llu.\n", __FUNCTION__, __FILE__, __LINE__, (long long unsigned) reader->statisticsHeap->buffers[i]->time, (long long unsigned) reader->minTime ); OTF_Heap_finalize( reader->statisticsHeap ); free( reader->statisticsHeap ); reader->statisticsHeap= NULL; return OTF_READ_ERROR; } } OTF_Heap_sort( reader->statisticsHeap ); # ifdef OTF_DEBUG OTF_Heap_checksorted( reader->statisticsHeap ); # endif /* OTF_DEBUG */ /* for progress report: cut intervals [progressMin,progressMax] and [minTime,maxTime] */ reader->statisticsHeap->progressMin= ( reader->statisticsHeap->progressMin >= reader->minTime ) ? reader->statisticsHeap->progressMin : reader->minTime; reader->statisticsHeap->progressMax= ( reader->statisticsHeap->progressMax <= reader->maxTime ) ? reader->statisticsHeap->progressMax : reader->maxTime; if ( reader->statisticsHeap->n > 0 ) { reader->statisticsHeap->progressCurrent= reader->statisticsHeap->buffers[0]->time; } else { reader->statisticsHeap->progressCurrent= 0; } } while ( reader->statisticsHeap->n > 0 ) { if ( recordcount >= reader->recordLimit ) { /* record count limit reached, return */ return recordcount; } /* inlined OTF_RBuffer_getCurrentTime() */ # ifdef OTF_DEBUG oldtime= reader->statisticsHeap->progressCurrent; # endif reader->statisticsHeap->progressCurrent= reader->statisticsHeap->buffers[0]->time; /* debug check */ # ifdef OTF_DEBUG if ( oldtime > reader->statisticsHeap->progressCurrent ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Time does decrease. %llu < %llu.\n", __FUNCTION__, __FILE__, __LINE__, (unsigned long long) reader->statisticsHeap->progressCurrent, (unsigned long long) oldtime ); OTF_Heap_finalize( reader->statisticsHeap ); free( reader->statisticsHeap ); reader->statisticsHeap= NULL; return OTF_READ_ERROR; } # endif /* check for time interval */ if ( reader->statisticsHeap->progressCurrent >= reader->maxTime ) { /* add the last filepos of this buffer to "bytesDone" */ reader->statisticsHeap->bytesDone+= OTF_RBuffer_getFilePos( reader->statisticsHeap->buffers[0] ); /* drop that stream */ reader->statisticsHeap->n--; reader->statisticsHeap->buffers[0]= reader->statisticsHeap->buffers[reader->statisticsHeap->n]; OTF_Heap_resort( reader->statisticsHeap ); continue; } /* inlined OTF_RBuffer_getCurrentProcess() */ currentprocess= reader->statisticsHeap->buffers[0]->process; /* check if process is enabled */ if ( 0 == OTF_ProcessList_getStatus( reader->processList, currentprocess ) ) { /* ignore record */ OTF_RBuffer_readNewline( reader->statisticsHeap->buffers[0] ); /* prepare next record in that stream */ pos= OTF_RBuffer_getRecord( reader->statisticsHeap->buffers[0] ); if ( NULL == pos ) { /* test if the file is really exceeded or if there is some junk left. test here instead of in 'OTF_RBuffer_getRecord()'. throw a warning/error in case*/ if ( reader->statisticsHeap->buffers[0]->pos < reader->statisticsHeap->buffers[0]->end ) { ret= OTF_Reader_readUnknownRecord( reader->statisticsHeap->buffers[0], handlers ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_readUnknownRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->statisticsHeap ); free( reader->statisticsHeap ); reader->statisticsHeap= NULL; return OTF_READ_ERROR; } } /* add the last filepos of this buffer to "bytesDone" */ reader->statisticsHeap->bytesDone+= OTF_RBuffer_getFilePos( reader->statisticsHeap->buffers[0] ); /* stream is empty -> remove from heap */ reader->statisticsHeap->n--; reader->statisticsHeap->buffers[0]= reader->statisticsHeap->buffers[reader->statisticsHeap->n]; } OTF_Heap_resort( reader->statisticsHeap ); continue; } /* remember next record type, if it will be a none KEYVALUE record, dont't account it in recordcount */ next_char = *(reader->statisticsHeap->buffers[0]->buffer + reader->statisticsHeap->buffers[0]->pos); ret= OTF_Reader_parseStatisticsRecord( reader->statisticsHeap->buffers[0], handlers ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_parseStatisticsRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->statisticsHeap ); free( reader->statisticsHeap ); reader->statisticsHeap= NULL; return OTF_READ_ERROR; } /* Now reset the KeyValue list, if we consumed a none KEYVALUE record */ if ( next_char != OTF_KEYWORD_F_KEYVALUE_PREFIX /* 'K' */ ) { OTF_KeyValueList_reset(reader->statisticsHeap->buffers[0]->list); recordcount++; } /* prepare next record in that stream */ pos= OTF_RBuffer_getRecord( reader->statisticsHeap->buffers[0] ); if ( NULL == pos ) { /* test if the file is really exceeded or if there is some junk left. test here instead of in 'OTF_RBuffer_getRecord()'. throw a warning/error in case*/ if ( reader->statisticsHeap->buffers[0]->pos < reader->statisticsHeap->buffers[0]->end ) { ret= OTF_Reader_readUnknownRecord( reader->statisticsHeap->buffers[0], handlers ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_readUnknownRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->statisticsHeap ); free( reader->statisticsHeap ); reader->statisticsHeap= NULL; return OTF_READ_ERROR; } } /* add the last filepos of this buffer to "bytesDone" */ reader->statisticsHeap->bytesDone+= OTF_RBuffer_getFilePos( reader->statisticsHeap->buffers[0] ); /* stream is empty -> remove from heap */ reader->statisticsHeap->n--; reader->statisticsHeap->buffers[0]= reader->statisticsHeap->buffers[reader->statisticsHeap->n]; } OTF_Heap_resort( reader->statisticsHeap ); } return recordcount; } uint64_t OTF_Reader_readStatisticsUnsorted( OTF_Reader* reader, OTF_HandlerArray* handlers ) { uint64_t recordcount= 0; uint64_t p; uint32_t currentprocess= 0; char* pos; uint32_t i; int ret; double s_reziprok; uint64_t delta_t; char next_char = '\0'; /* initialized? */ if ( NULL == reader->statisticsHeap ) { /* init */ reader->statisticsHeap= (OTF_Heap*) malloc( sizeof(OTF_Heap) ); if( NULL == reader->statisticsHeap ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return OTF_READ_ERROR; } if( 0 == OTF_Heap_initStatisticsHeap( reader->statisticsHeap, reader) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Heap_initStatisticsHeap() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->statisticsHeap ); free( reader->statisticsHeap ); reader->statisticsHeap= NULL; return OTF_READ_ERROR; } /* for progress report */ reader->statisticsHeap->progressMin= (uint64_t) -1; reader->statisticsHeap->progressMax= 0; reader->statisticsHeap->bytesMax= 0; reader->statisticsHeap->bytesMin= 0; reader->statisticsHeap->bytesCurrent= 0; reader->statisticsHeap->bytesDone= 0; /* make all buffers in heap jump to start time */ for ( i= 0; i < reader->statisticsHeap->n; i++ ) { ret= 1; /* the file has to retrieve his own information ... especially his "lastTime" is intressting */ OTF_RBuffer_getFileProperties( reader->statisticsHeap->buffers[i] ); /* get last filepos of lasttime (right in front of the next time) */ if( reader->maxTime < reader->statisticsHeap->buffers[i]->lastTime ) { /* interval -> take the pos right behind the lasttime, right before the next time */ ret= OTF_RBuffer_searchTime( reader->statisticsHeap->buffers[i], reader->maxTime ); while( reader->maxTime >= reader->statisticsHeap->buffers[i]->time ) { OTF_RBuffer_getRecord( reader->statisticsHeap->buffers[i] ); OTF_RBuffer_readNewline( reader->statisticsHeap->buffers[i] ); } reader->statisticsHeap->bytesMax+= OTF_RBuffer_getFilePos( reader->statisticsHeap->buffers[i] ); } else { /* no interval -> take the fileend */ reader->statisticsHeap->bytesMax+= OTF_RBuffer_getFileSize( reader->statisticsHeap->buffers[i] ); } /* get the filepos of the firsttime */ ret&= OTF_RBuffer_searchTime( reader->statisticsHeap->buffers[i], reader->minTime ); reader->statisticsHeap->bytesMin+= OTF_RBuffer_getFilePos( reader->statisticsHeap->buffers[i] ); if( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_RBuffer_searchTime() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->statisticsHeap ); free( reader->statisticsHeap ); reader->statisticsHeap= NULL; return OTF_READ_ERROR; } /* for progress report: get union of all buffer's time interval */ p= reader->statisticsHeap->buffers[i]->firstTime; reader->statisticsHeap->progressMin= ( reader->statisticsHeap->progressMin <= p ) ? reader->statisticsHeap->progressMin : p; p= reader->statisticsHeap->buffers[i]->lastTime; reader->statisticsHeap->progressMax= ( reader->statisticsHeap->progressMax >= p ) ? reader->statisticsHeap->progressMax : p; /* make sure buffer's time information is updated*/ pos= OTF_RBuffer_getRecord( reader->statisticsHeap->buffers[i] ); /* remove empty streams */ if ( NULL == pos ) { reader->statisticsHeap->n--; reader->statisticsHeap->buffers[i]= reader->statisticsHeap->buffers[reader->statisticsHeap->n]; /* make sure to repeat this for loop with the same index i */ i--; continue; } /* inlined OTF_RBuffer_getCurrentTime() */ if( reader->statisticsHeap->buffers[i]->time < reader->minTime ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "current time %llu < mintime %llu.\n", __FUNCTION__, __FILE__, __LINE__, (long long unsigned) reader->statisticsHeap->buffers[i]->time, (long long unsigned) reader->minTime ); OTF_Heap_finalize( reader->statisticsHeap ); free( reader->statisticsHeap ); reader->statisticsHeap= NULL; return OTF_READ_ERROR; } } /* for progress report: cut intervals [progressMin,progressMax] and [minTime,maxTime] */ reader->statisticsHeap->progressMin= ( reader->statisticsHeap->progressMin >= reader->minTime ) ? reader->statisticsHeap->progressMin : reader->minTime; reader->statisticsHeap->progressMax= ( reader->statisticsHeap->progressMax <= reader->maxTime ) ? reader->statisticsHeap->progressMax : reader->maxTime; } s_reziprok= 1/(double)reader->statisticsHeap->s; delta_t= reader->statisticsHeap->progressMax-reader->statisticsHeap->progressMin; while ( reader->statisticsHeap->n > 0 && recordcount < reader->recordLimit ) { /* inlined OTF_RBuffer_getCurrentTime() */ /* calculate a "current time", which is between min and max. * In this case we have to: min + ((delta)/s)*(s-n) + (curtime-min)/s * * s= all streams * n= streams left * delta= max-min */ reader->statisticsHeap->progressCurrent= (uint64_t) ( reader->statisticsHeap->progressMin + (delta_t*s_reziprok) * (reader->statisticsHeap->s-reader->statisticsHeap->n) + (reader->statisticsHeap->buffers[0]->time-reader->statisticsHeap->progressMin)*s_reziprok ); /* check for time interval */ if ( reader->statisticsHeap->buffers[0]->time >= reader->maxTime ) { /* add the last filepos of this buffer to "bytesDone" */ reader->statisticsHeap->bytesDone+= OTF_RBuffer_getFilePos( reader->statisticsHeap->buffers[0] ); /* drop that stream */ reader->statisticsHeap->n--; reader->statisticsHeap->buffers[0]= reader->statisticsHeap->buffers[reader->statisticsHeap->n]; continue; } /* inlined OTF_RBuffer_getCurrentProcess() */ currentprocess= reader->statisticsHeap->buffers[0]->process; /* check if process is enabled */ if ( 0 == OTF_ProcessList_getStatus( reader->processList, currentprocess ) ) { /* ignore record */ OTF_RBuffer_readNewline( reader->statisticsHeap->buffers[0] ); /* prepare next record in that stream */ pos= OTF_RBuffer_getRecord( reader->statisticsHeap->buffers[0] ); if ( NULL == pos ) { /* test if the file is really exceeded or if there is some junk left. test here instead of in 'OTF_RBuffer_getRecord()'. throw a warning/error in case*/ if ( reader->statisticsHeap->buffers[0]->pos < reader->statisticsHeap->buffers[0]->end ) { ret= OTF_Reader_readUnknownRecord( reader->statisticsHeap->buffers[0], handlers ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_readUnknownRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->statisticsHeap ); free( reader->statisticsHeap ); reader->statisticsHeap= NULL; return OTF_READ_ERROR; } } /* add the last filepos of this buffer to "bytesDone" */ reader->statisticsHeap->bytesDone+= OTF_RBuffer_getFilePos( reader->statisticsHeap->buffers[0] ); /* stream is empty -> remove from heap */ reader->statisticsHeap->n--; reader->statisticsHeap->buffers[0]= reader->statisticsHeap->buffers[reader->statisticsHeap->n]; } continue; } /* remember next record type, if it will be a none KEYVALUE record, dont't account it in recordcount */ next_char = *(reader->statisticsHeap->buffers[0]->buffer + reader->statisticsHeap->buffers[0]->pos); ret= OTF_Reader_parseStatisticsRecord( reader->statisticsHeap->buffers[0], handlers ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_parseStatisticsRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->statisticsHeap ); free( reader->statisticsHeap ); reader->statisticsHeap= NULL; return OTF_READ_ERROR; } /* Now reset the KeyValue list, if we consumed a none KEYVALUE record */ if ( next_char != OTF_KEYWORD_F_KEYVALUE_PREFIX /* 'K' */ ) { OTF_KeyValueList_reset(reader->statisticsHeap->buffers[0]->list); recordcount++; } /* prepare next record in that stream */ pos= OTF_RBuffer_getRecord( reader->statisticsHeap->buffers[0] ); if ( NULL == pos ) { /* test if the file is really exceeded or if there is some junk left. test here instead of in 'OTF_RBuffer_getRecord()'. throw a warning/error in case*/ if ( reader->statisticsHeap->buffers[0]->pos < reader->statisticsHeap->buffers[0]->end ) { ret= OTF_Reader_readUnknownRecord( reader->statisticsHeap->buffers[0], handlers ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_readUnknownRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->statisticsHeap ); free( reader->statisticsHeap ); reader->statisticsHeap= NULL; return OTF_READ_ERROR; } } /* add the last filepos of this buffer to "bytesDone" */ reader->statisticsHeap->bytesDone+= OTF_RBuffer_getFilePos( reader->statisticsHeap->buffers[0] ); /* stream is empty -> remove from heap */ reader->statisticsHeap->n--; reader->statisticsHeap->buffers[0]= reader->statisticsHeap->buffers[reader->statisticsHeap->n]; } } return recordcount; } /* this is much simple than the other 'OTF_Reader_readXXX' functions because it only looks at stream '0' */ uint64_t OTF_Reader_readMarkers( OTF_Reader* reader, OTF_HandlerArray* handlers ) { uint64_t recordcount= 0; int ret; char* pos; uint32_t i; OTF_MapEntry* entry; uint32_t streamId; char next_char = '\0'; /* initialized? */ if ( NULL == reader->markerHeap ) { /* init */ reader->markerHeap= (OTF_Heap*) malloc( sizeof(OTF_Heap) ); if( NULL == reader->markerHeap ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return OTF_READ_ERROR; } if( 0 == OTF_Heap_initMarkerHeap( reader->markerHeap, reader ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Heap_initDefHeap() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->markerHeap ); free( reader->markerHeap ); reader->markerHeap= NULL; return OTF_READ_ERROR; } for ( i= 0; i < reader->markerHeap->n; i++ ) { if ( NULL != reader->markerHeap->buffers[i] ) { pos= OTF_RBuffer_getRecord( reader->markerHeap->buffers[i] ); /* remove empty streams */ if ( NULL == pos ) { /* keep original order */ reader->markerHeap->buffers[i]= NULL; } } } } /* read streams */ for ( i= 0; i < reader->markerHeap->n; i ++ ) { if ( NULL == reader->markerHeap->buffers[i] ) { continue; } streamId= 0; if ( i > 0 ) { entry= OTF_MasterControl_getEntryByIndex( reader->mc, i -1 ); streamId= entry->argument; } pos= (char*) 0x2; while ( NULL != pos ) { if ( recordcount >= reader->recordLimit ) { /* record count limit reached, return */ return recordcount; } /* remember next record type, if it will be a none KEYVALUE record, dont't account it in recordcount */ next_char = *(reader->markerHeap->buffers[i]->buffer + reader->markerHeap->buffers[i]->pos); ret= OTF_Reader_parseMarkerRecord( reader->markerHeap->buffers[i], handlers, streamId ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_parseMarkerRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->markerHeap ); free( reader->markerHeap ); reader->markerHeap= NULL; return OTF_READ_ERROR; } /* Now reset the KeyValue list, if we consumed a none KEYVALUE record */ if ( next_char != OTF_KEYWORD_F_KEYVALUE_PREFIX /* 'K' */ ) { OTF_KeyValueList_reset(reader->markerHeap->buffers[i]->list); recordcount++; } /* prepare next record in that stream */ pos= OTF_RBuffer_getRecord( reader->markerHeap->buffers[i] ); if ( NULL == pos ) { /* test if the file is really exceeded or if there is some junk left. test here instead of in 'OTF_RBuffer_getRecord()'. throw a warning/error in case*/ if ( reader->markerHeap->buffers[i]->pos < reader->markerHeap->buffers[i]->end ) { ret= OTF_Reader_readUnknownMarkerRecord( reader->markerHeap->buffers[i], handlers, streamId ); if ( 0 == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_Reader_readUnknownMarkerRecord() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); OTF_Heap_finalize( reader->markerHeap ); free( reader->markerHeap ); reader->markerHeap= NULL; return OTF_READ_ERROR; } } /* stream is empty -> remove from heap */ reader->markerHeap->buffers[i]= NULL; } } } return recordcount; } void OTF_Reader_setTimeInterval( OTF_Reader* reader, uint64_t minTime, uint64_t maxTime ) { OTF_Reader_resetHeaps( reader ); reader->minTime = minTime; reader->maxTime = maxTime; } uint64_t OTF_Reader_getTimeIntervalMin( OTF_Reader* reader ) { return reader->minTime; } uint64_t OTF_Reader_getTimeIntervalMax( OTF_Reader* reader ) { return reader->maxTime; } void OTF_Reader_setRecordLimit( OTF_Reader* reader, uint64_t limit ) { if( limit == OTF_READ_ERROR ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "limit cannot be set to %llu. Reset to OTF_READ_MAXRECORDS.\n", __FUNCTION__, __FILE__, __LINE__, (long long unsigned) limit ); limit= OTF_READ_MAXRECORDS; } reader->recordLimit= limit; } uint64_t OTF_Reader_getRecordLimit( OTF_Reader* reader ) { return reader->recordLimit; } int OTF_Reader_closeAllStreams( OTF_Reader* reader ) { int ret= 1; uint32_t i; for ( i = 0; i < reader->n ; ++i ) { ret&= OTF_RStream_close( reader->stream[i] ); } reader->n = 0; return ret; } uint8_t OTF_Reader_eventProgress( OTF_Reader* reader, uint64_t* minimum, uint64_t* current, uint64_t* maximum ) { return OTF_Reader_eventTimeProgress( reader, minimum, current, maximum ); } uint8_t OTF_Reader_snapshotProgress( OTF_Reader* reader, uint64_t* minimum, uint64_t* current, uint64_t* maximum ) { return OTF_Reader_snapshotTimeProgress( reader, minimum, current, maximum ); } uint8_t OTF_Reader_statisticProgress( OTF_Reader* reader, uint64_t* minimum, uint64_t* current, uint64_t* maximum ) { return OTF_Reader_statisticTimeProgress( reader, minimum, current, maximum ); } uint8_t OTF_Reader_eventTimeProgress( OTF_Reader* reader, uint64_t* minimum, uint64_t* current, uint64_t* maximum ) { if ( NULL == reader->eventHeap || reader->eventHeap->progressCurrent < reader->eventHeap->progressMin || reader->eventHeap->progressCurrent > reader->eventHeap->progressMax ) { return 0; } *minimum= reader->eventHeap->progressMin; *current= reader->eventHeap->progressCurrent; *maximum= reader->eventHeap->progressMax; return 1; } uint8_t OTF_Reader_snapshotTimeProgress( OTF_Reader* reader, uint64_t* minimum, uint64_t* current, uint64_t* maximum ) { if ( NULL == reader->snapshotsHeap || reader->snapshotsHeap->progressCurrent < reader->snapshotsHeap->progressMin || reader->snapshotsHeap->progressCurrent > reader->snapshotsHeap->progressMax ) { return 0; } *minimum= reader->snapshotsHeap->progressMin; *current= reader->snapshotsHeap->progressCurrent; *maximum= reader->snapshotsHeap->progressMax; return 1; } uint8_t OTF_Reader_statisticTimeProgress( OTF_Reader* reader, uint64_t* minimum, uint64_t* current, uint64_t* maximum ) { if ( NULL == reader->statisticsHeap || reader->statisticsHeap->progressCurrent < reader->statisticsHeap->progressMin || reader->statisticsHeap->progressCurrent > reader->statisticsHeap->progressMax ) { return 0; } *minimum= reader->statisticsHeap->progressMin; *current= reader->statisticsHeap->progressCurrent; *maximum= reader->statisticsHeap->progressMax; return 1; } uint8_t OTF_Reader_eventBytesProgress( OTF_Reader* reader, uint64_t* minimum, uint64_t* current, uint64_t* maximum ) { uint32_t i; uint64_t pos; *minimum= reader->eventHeap->bytesMin; *maximum= reader->eventHeap->bytesMax; *current= reader->eventHeap->bytesDone; for( i= 0; i < reader->eventHeap->n; ++i ) { pos= OTF_RBuffer_getFilePos( reader->eventHeap->buffers[i] ); *current+= pos; } if( *current > *maximum ) { *current= *maximum; } return 1; } uint8_t OTF_Reader_snapshotBytesProgress( OTF_Reader* reader, uint64_t* minimum, uint64_t* current, uint64_t* maximum ) { uint32_t i; uint64_t pos; *minimum= reader->snapshotsHeap->bytesMin; *maximum= reader->snapshotsHeap->bytesMax; *current= reader->snapshotsHeap->bytesDone; for( i= 0; i < reader->snapshotsHeap->n; ++i ) { pos= OTF_RBuffer_getFilePos( reader->snapshotsHeap->buffers[i] ); *current+= pos; } if( *current > *maximum ) { *current= *maximum; } return 1; } uint8_t OTF_Reader_statisticBytesProgress( OTF_Reader* reader, uint64_t* minimum, uint64_t* current, uint64_t* maximum ) { uint32_t i; uint64_t pos; *minimum= reader->statisticsHeap->bytesMin; *maximum= reader->statisticsHeap->bytesMax; *current= reader->statisticsHeap->bytesDone; for( i= 0; i < reader->statisticsHeap->n; ++i ) { pos= OTF_RBuffer_getFilePos( reader->statisticsHeap->buffers[i] ); *current+= pos; } if( *current > *maximum ) { *current= *maximum; } return 1; } eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_File.c0000644000000000000000000000013212544237152021775 xustar0030 mtime=1435582058.531899952 30 atime=1508138854.171375865 30 ctime=1508162366.209774249 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_File.c0000644000175000017500000007104212544237152023170 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch also: patches by Rainer Keller, thanks a lot! */ /* macros to enable 64 bit file access. make sure all std headers are included AFTER this macro definitions */ /* config.h handles this now: #define _LARGEFILE_SOURCE #define _LARGEFILE_SOURCE #define _LARGEFILE64_SOURCE #define _LARGE_FILES */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "OTF_Platform.h" #include "OTF_inttypes.h" #include #include #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_STAT_H #include #endif #ifdef HAVE_FCNTL_H #include #if !(defined(HAVE_DECL_O_NOATIME) && HAVE_DECL_O_NOATIME) #define O_NOATIME 0 #endif #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_IO_H #include #endif /* vs does not know F_OK*/ #ifndef F_OK #define F_OK 00 #endif #ifdef HAVE_ZLIB #include #endif /* HAVE_ZLIB */ #include "OTF_File.h" #include "OTF_File_iofsl.h" #include "OTF_Platform.h" #include "OTF_Definitions.h" #include "OTF_Errno.h" static int OTF_File_nameSuffixCmp(const char *filename, const char *suffix); void OTF_File_init( OTF_File* file ) { /* internal function, called only by OTF_File_open*, * no need (and possibility) to check for Iofsl */ file->filename= NULL; file->file= NULL; #ifdef HAVE_ZLIB file->z= NULL; file->zbuffer= NULL; file->zbuffersize= 1024*10; file->zbuffer_seek_further= 0; #endif /* HAVE_ZLIB */ file->pos= 0; file->mode= OTF_FILEMODE_NOTHING; file->manager= NULL; file->externalbuffer= NULL; file->externalpos= 0; file->externallen= 0; file->iofsl= NULL; } void OTF_File_finalize( OTF_File* file ) { /* internal function, called only by OTF_File_close, * no need to check for Iofsl */ file->filename= NULL; file->file= NULL; #ifdef HAVE_ZLIB file->z= NULL; file->zbuffer= NULL; file->zbuffersize= 0; file->zbuffer_seek_further= 0; #endif /* HAVE_ZLIB */ file->pos= 0; file->mode= OTF_FILEMODE_NOTHING; file->manager= NULL; file->externalbuffer= NULL; file->externalpos= 0; file->externallen= 0; } OTF_File* OTF_File_open( const char* filename, OTF_FileManager* manager, OTF_FileMode mode ) { return OTF_File_open_zlevel( filename, manager, mode, OTF_FILECOMPRESSION_COMPRESSED ); } OTF_File* OTF_File_open_with_external_buffer( uint32_t len, const char* buffer, uint8_t is_compressed, OTF_FileMode mode ) { OTF_File* ret; ret= (OTF_File*) malloc( sizeof(OTF_File) ); if( NULL == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } OTF_File_init( ret ); ret->externalbuffer= buffer; ret->externalpos= 0; ret->externallen= (uint64_t) len; ret->mode = mode; if ( is_compressed ) { #ifdef HAVE_ZLIB /* alloc zlib stuff */ ret->z= malloc( sizeof(z_stream) ); if( NULL == ret->z ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); free( ret ); ret= NULL; return NULL; } OTF_FILE_Z(ret)->next_in= NULL; OTF_FILE_Z(ret)->avail_in= 0; OTF_FILE_Z(ret)->zalloc= NULL; OTF_FILE_Z(ret)->zfree= NULL; OTF_FILE_Z(ret)->opaque= NULL; inflateInit( OTF_FILE_Z(ret) ); ret->zbuffer= malloc( ret->zbuffersize ); if( NULL == ret->zbuffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); free( ret->zbuffer ); ret->zbuffer= NULL; free( ret->z ); ret->z= NULL; free( ret ); ret= NULL; return NULL; } #else /* HAVE_ZLIB */ free( ret ); ret= NULL; OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "built without HAVE_ZLIB, still trying to open with compressed buffer.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; #endif /* HAVE_ZLIB */ } else { /* normal, don't need any special setup */ } ret->manager= NULL; return ret; } size_t OTF_File_write( OTF_File* file, const void* ptr, size_t size ) { size_t byteswritten = 0; #ifdef HAVE_ZLIB int status; #endif/* HAVE_ZLIB */ /* IOFSL is used in the _internal functions */ if ( NULL != file->externalbuffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "not yet supported in 'external buffer' mode.\n", __FUNCTION__, __FILE__, __LINE__ ); return (size_t) -1; } if( OTF_FILEMODE_WRITE != file->mode ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "current file->mode is not OTF_FILEMODE_WRITE. writing forbidden.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } if( 0 == OTF_File_revive( file, OTF_FILEMODE_WRITE ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_File_revive() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } #ifdef HAVE_ZLIB if ( NULL != file->z ) { /* compress the data without using the ybuffer */ OTF_FILE_Z(file)->avail_in = size; OTF_FILE_Z(file)->next_in = (void*)ptr; while (OTF_FILE_Z(file)->avail_in > 0) { status = deflate(OTF_FILE_Z(file), Z_FULL_FLUSH); if (status == Z_STREAM_ERROR) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "error in compressing, status %i.\n", __FUNCTION__, __FILE__, __LINE__, status ); return byteswritten; } while (OTF_FILE_Z(file)->avail_out == 0) { size_t towrite = file->zbuffersize - OTF_FILE_Z(file)->avail_out; if (towrite != OTF_File_write_internal(file, file->zbuffer, towrite)) { OTF_Error( "ERROR in function %s, file: %s, line %i:\n", "Failed to write %u bytes to file!\n", __FUNCTION__, __FILE__, __LINE__, towrite); return byteswritten; } OTF_FILE_Z(file)->avail_out = file->zbuffersize; OTF_FILE_Z(file)->next_out = file->zbuffer; status = deflate(OTF_FILE_Z(file), Z_FULL_FLUSH); if (status == Z_STREAM_ERROR) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "error in compressing, status %i.\n", __FUNCTION__, __FILE__, __LINE__, status ); assert(status != Z_STREAM_ERROR); return byteswritten; } } byteswritten = size - OTF_FILE_Z(file)->avail_in; } } else { #endif /* HAVE_ZLIB */ byteswritten= OTF_File_write_internal(file, ptr, size); if( byteswritten < size ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "less bytes written than expected %u < %u.\n", __FUNCTION__, __FILE__, __LINE__, (uint32_t) byteswritten, (uint32_t) size ); } #ifdef HAVE_ZLIB } #endif /* HAVE_ZLIB */ return byteswritten; } size_t OTF_File_read( OTF_File* file, void* ptr, size_t size ) { #ifdef HAVE_ZLIB /* size_t read; */ int status; #endif /* HAVE_ZLIB */ /* IOFSL is used in the _internal functions */ if( OTF_FILEMODE_WRITE == file->mode ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "current file->mode is OTF_FILEMODE_WRITE. reading forbidden.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } if( 0 == OTF_File_revive( file, OTF_FILEMODE_READ ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_File_revive() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } #ifdef HAVE_ZLIB if ( NULL != file->z ) { OTF_FILE_Z(file)->next_out= ptr; OTF_FILE_Z(file)->avail_out= (uInt) size; while ( 0 < OTF_FILE_Z(file)->avail_out ) { if ( 0 == OTF_FILE_Z(file)->avail_in ) { OTF_FILE_Z(file)->avail_in= (uInt) OTF_File_read_internal( file, file->zbuffer, file->zbuffersize ); OTF_FILE_Z(file)->next_in= file->zbuffer; } if ( 0 == OTF_FILE_Z(file)->avail_in ) { break; } status = inflate( OTF_FILE_Z(file), Z_SYNC_FLUSH ); if ( status != Z_OK ) { /* see declaration of 'zbuffer_seek_further' in struct_OTF_File in OTF_File.h */ if ( 0 != file->zbuffer_seek_further ) { if ( 0 == OTF_File_seek( file, file->zbuffer_seek_further ) ) { file->zbuffer_seek_further= 0; return 0; } return OTF_File_read( file, ptr, size ); } OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "error in uncompressing, status %u.\n", __FUNCTION__, __FILE__, __LINE__, status ); return 0; } } file->zbuffer_seek_further= 0; return size - OTF_FILE_Z(file)->avail_out; } else { return OTF_File_read_internal( file, ptr, size ); } #else /* HAVE_ZLIB */ return OTF_File_read_internal( file, ptr, size ); #endif /* HAVE_ZLIB */ } int OTF_File_seek( OTF_File* file, uint64_t pos ) { int ret; #ifdef HAVE_ZLIB int sync; uint64_t read; #endif /* HAVE_ZLIB */ if ( NULL != file->iofsl ) { return OTF_File_iofsl_seek( file, pos ); } if ( NULL != file->externalbuffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "not yet supported in 'external buffer' mode.\n", __FUNCTION__, __FILE__, __LINE__ ); return -1; } if( OTF_FILEMODE_WRITE == file->mode ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "current file->mode is OTF_FILEMODE_WRITE. seeking forbidden.\n", __FUNCTION__, __FILE__, __LINE__ ); return -1; } if( 0 == OTF_File_revive( file, OTF_FILEMODE_SEEK ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_File_revive() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return -1; } ret= fseeko( file->file, pos, SEEK_SET ); #ifdef HAVE_ZLIB if ( NULL != file->z && 0 == ret ) { do { /* OLD: read= fread( file->zbuffer, 1, file->zbuffersize, file->file ); */ read= OTF_File_read_internal( file, file->zbuffer, file->zbuffersize ); if ( 0 == read ) { return 0; } OTF_FILE_Z(file)->next_in= file->zbuffer; OTF_FILE_Z(file)->avail_in= (uInt) read; OTF_FILE_Z(file)->total_in= 0; /* re-initialize z object */ inflateReset(OTF_FILE_Z(file)); /* do not sync at very beginning of compressed stream because it would skip the first block */ sync= Z_OK; if ( 0 != pos ) { sync= inflateSync( OTF_FILE_Z(file) ); if ( Z_OK == sync ) { /* see declaration of 'zbuffer_seek_further' in struct_OTF_File in OTF_File.h */ file->zbuffer_seek_further= pos + OTF_FILE_Z(file)->total_in; } } if ( Z_OK == sync ) { return ret; } pos += read; if ( Z_BUF_ERROR == sync ) { continue; } if ( Z_DATA_ERROR == sync ) { /* do not break here, this might happen with larger zlib chunks return -1; */ } if ( Z_STREAM_ERROR == sync ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "Z_STREAM_ERROR.\n", __FUNCTION__, __FILE__, __LINE__ ); return -1; } } while ( 1 ); } #endif /* HAVE_ZLIB */ return ret; } uint64_t OTF_File_tell( OTF_File* file ) { if ( NULL != file->iofsl ) { return OTF_File_iofsl_tell( file ); } if ( NULL != file->externalbuffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "not yet supported in 'external buffer' mode.\n", __FUNCTION__, __FILE__, __LINE__ ); return (uint64_t) -1; } if ( NULL != file->file ) { file->pos= ftello( file->file ); } return file->pos; } uint64_t OTF_File_size( OTF_File* file ) { struct stat st; if ( NULL != file->iofsl ) { return OTF_File_iofsl_size( file ); } if ( NULL != file->externalbuffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "not yet supported in 'external buffer' mode.\n", __FUNCTION__, __FILE__, __LINE__ ); return (uint64_t) -1; } if ( stat( file->filename, &st ) == -1 ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "stat() failed: %s\n", __FUNCTION__, __FILE__, __LINE__, strerror(errno) ); return 0; } else { return st.st_size; } } int OTF_File_close( OTF_File* file ) { #ifdef HAVE_ZLIB size_t byteswritten; int status; #endif /* HAVE_ZLIB */ if ( NULL == file ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "file has not been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } if ( NULL != file->iofsl ) { return OTF_File_iofsl_close( file ); } #ifdef HAVE_ZLIB if ( NULL != file->z ) { if ( OTF_FILEMODE_WRITE != file->mode ) { inflateEnd( OTF_FILE_Z(file) ); } else { size_t towrite; /* flush buffer */ if( 0 == OTF_File_revive( file, OTF_FILEMODE_WRITE ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_File_revive() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } status = deflate( OTF_FILE_Z(file), Z_FULL_FLUSH ); if (status == Z_STREAM_ERROR) { OTF_Error( "ERROR in function %s, file %s, line %i\n" "deflate() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } towrite = file->zbuffersize - OTF_FILE_Z(file)->avail_out; byteswritten = 0; if (towrite > 0) byteswritten = OTF_File_write_internal(file, file->zbuffer, towrite); if (towrite != byteswritten) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n" "Failed to write compressed buffer of size %lu\n", __FUNCTION__, __FILE__, __LINE__, towrite ); } while (OTF_FILE_Z(file)->avail_out != file->zbuffersize) { OTF_FILE_Z(file)->avail_out = file->zbuffersize; OTF_FILE_Z(file)->next_out = file->zbuffer; deflate( OTF_FILE_Z(file), Z_FULL_FLUSH ); assert(status != Z_STREAM_ERROR); towrite = file->zbuffersize - OTF_FILE_Z(file)->avail_out; if (towrite > 0) OTF_File_write_internal(file, file->zbuffer, towrite); } deflateEnd( OTF_FILE_Z(file) ); } free( file->z ); file->z = NULL; free( file->zbuffer ); file->zbuffer = NULL; } #endif /* HAVE_ZLIB */ if ( NULL != file->file ) { OTF_FileManager_suspendFile( file->manager, file ); } free( file->filename ); OTF_File_finalize( file ); free( file ); file = NULL; return 1; } OTF_FileStatus OTF_File_status( OTF_File* file ) { if ( NULL != file->iofsl ) { return OTF_File_iofsl_status( file ); } if ( NULL != file->externalbuffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "not yet supported in 'external buffer' mode.\n", __FUNCTION__, __FILE__, __LINE__ ); return OTF_FILESTATUS_UNKNOWN; } if ( NULL == file->file ) { if ( 0 == file->pos ) { return OTF_FILESTATUS_CLOSED; } else { return OTF_FILESTATUS_SUSPENDED; } } return OTF_FILESTATUS_ACTIVE; } void OTF_File_suspend( OTF_File* file ) { if ( NULL != file->iofsl ) { OTF_File_iofsl_suspend( file ); return; } if ( NULL != file->externalbuffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "not yet supported in 'external buffer' mode.\n", __FUNCTION__, __FILE__, __LINE__ ); return; } /* get status and close OS file */ file->pos= ftello( file->file ); fclose( file->file ); file->file= NULL; } int OTF_File_revive( OTF_File* file, OTF_FileMode mode ) { if ( NULL != file->iofsl ) { return OTF_File_iofsl_revive( file, mode ); } if ( NULL != file->externalbuffer ) { /* no need to revive, everything is fine in 'external buffer' mode */ return 1; } switch ( mode ) { case OTF_FILEMODE_READ : /* *** read *** */ if ( NULL == file->file ) { /* file currently closed, aka open or reopen */ if ( 0 == OTF_FileManager_guaranteeFile( file->manager ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_FileManager_guaranteeFile() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } /* open first time, as we open O_RDONLY plus O_NOATIME, which fopen doesn't know, use open/fdopen */ #ifdef _GNU_SOURCE { int fd; int retry_num = 5; int flags = O_RDONLY | O_NOATIME; while ( -1 == ( fd = open( file->filename, flags ) ) ) { /* if the user is not the owner of the file, open with O_NOATIME will fail with errno == EPERM; try to open without O_NOATIME again to avoid this problem */ if ( EPERM == errno ) { flags = O_RDONLY; continue; /* the file name might be stale, e.g. on Network File System (NFS) */ } else if ( ESTALE == errno && 0 < --retry_num ) { sleep(1); continue; } else { /* show this error every time */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot open file %s for reading. Maybe the number of " "opened filehandles exceeds your system's limit\n", __FUNCTION__, __FILE__, __LINE__, file->filename ); return 0; } } file->file= fdopen( fd, "r" ); } #else /* _GNU_SOURCE */ file->file= fopen( file->filename, "rb" ); #endif /* _GNU_SOURCE */ if( NULL == file->file ) { /* show this error every time */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot open file %s for reading. Maybe the number of " "opened filehandles exceeds your system's limit\n", __FUNCTION__, __FILE__, __LINE__, file->filename ); return 0; } /* Upon repoen, seek to the current position */ if ( 0 != file->pos ) { fseeko( file->file, file->pos, SEEK_SET ); } if ( 0 == OTF_FileManager_registerFile( file->manager, file ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_FileManager_registerFile() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } } else { /* file already opened */ if ( 0 == OTF_FileManager_touchFile( file->manager, file ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_FileManager_touchFile() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } } return 1; case OTF_FILEMODE_WRITE : /* *** write *** */ if ( NULL == file->file ) { /* file currently closed */ if ( 0 == OTF_FileManager_guaranteeFile( file->manager ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_FileManager_guaranteeFile() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } if ( 0 != file->pos ) { /* re-open */ file->file= fopen( file->filename, "ab" ); if( NULL == file->file ) { /* show this error every time */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot open file %s for writing. Maybe the number of " "opened filehandles exceeds your system's limit\n", __FUNCTION__, __FILE__, __LINE__, file->filename ); return 0; } } else { /* open first time */ file->file= fopen( file->filename, "wb" ); if( NULL == file->file ) { /* show this error every time */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot open file %s for writing. Maybe the number of " "opened filehandles exceeds your system's limit\n", __FUNCTION__, __FILE__, __LINE__, file->filename ); return 0; } } if ( 0 == OTF_FileManager_registerFile( file->manager, file ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_FileManager_registerFile() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } } else { /* file already opened */ if ( 0 == OTF_FileManager_touchFile( file->manager, file ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_FileManager_touchFile() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } } return 1; case OTF_FILEMODE_SEEK : /* *** seek *** */ if ( NULL == file->file ) { /* file currently closed */ if ( 0 == OTF_FileManager_guaranteeFile( file->manager ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_FileManager_guaranteeFile() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } if ( 0 != file->pos ) { /* re-open */ file->file= fopen( file->filename, "rb" ); if( NULL == file->file ) { /* show this error every time */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot open file %s for reading. Maybe the number of " "opened filehandles exceeds your system's limit\n", __FUNCTION__, __FILE__, __LINE__, file->filename ); return 0; } /* dont need to seek to the saved position because there will be another seek anyway*/ /* fseeko( file->file, file->pos, SEEK_SET ); */ } else { /* open first time */ file->file= fopen( file->filename, "rb" ); if( NULL == file->file ) { /* show this error every time */ OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot open file %s for reading. Maybe the number of " "opened filehandles exceeds your system's limit\n", __FUNCTION__, __FILE__, __LINE__, file->filename ); return 0; } } if ( 0 == OTF_FileManager_registerFile( file->manager, file ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_FileManager_registerFile() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } } else { /* file already opened */ if ( 0 == OTF_FileManager_touchFile( file->manager, file ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "OTF_FileManager_touchFile() failed.\n", __FUNCTION__, __FILE__, __LINE__ ); return 0; } } return 1; default: /* *** unknown mode *** */ return 0; } } void OTF_File_setZBufferSize( OTF_File* file, uint32_t size ) { /* no specific IOFSL version */ #ifdef HAVE_ZLIB if( NULL != file->z ) { void *tmp; if ( 32 > size ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "intended zbuffer size %u is too small, rejected.\n", __FUNCTION__, __FILE__, __LINE__, size ); return; } else if ( 512 > size ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "zbuffer size %u is very small, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } else if ( 10 * 1024 *1024 < size ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "zbuffer size %u is rather big, accepted though.\n", __FUNCTION__, __FILE__, __LINE__, size ); } /* use realloc instead of free()/malloc() */ /*if( NULL != file->zbuffer ) { free( file->zbuffer ); }*/ tmp = realloc( file->zbuffer, size ); if (tmp == NULL) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "No memory left to reallocate zlib buffer.\n", __FUNCTION__, __FILE__, __LINE__ ); return; } file->zbuffer = tmp; file->zbuffersize= size; OTF_FILE_Z(file)->avail_out = size; OTF_FILE_Z(file)->next_out = OTF_FILE_Z(file)->next_in = file->zbuffer; } #endif /* HAVE_ZLIB */ } /** * returns 0 if suffix is-suffix of filename * true if suffix is not NOT a suffix of filename */ static int OTF_File_nameSuffixCmp(const char *filename, const char *suffix) { size_t filename_length, suffix_length; assert( filename && suffix ); filename_length = strlen( filename ); suffix_length = strlen( suffix ); if ( suffix_length > filename_length ) { return 1; } return strncmp( filename + filename_length - suffix_length, suffix, suffix_length); } OTF_File* OTF_File_open_zlevel( const char* filename, OTF_FileManager* manager, OTF_FileMode mode, OTF_FileCompression zlevel ) { uint32_t len; OTF_File* ret; /* Check input parameters */ if( NULL == filename ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no filename has been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } if( NULL == manager ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "manager has not been specified.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } if ( OTF_FileManager_isIofsl( manager ) ) { /* open all files except *.otf and global definitions/markers with iofsl */ if ( OTF_File_nameSuffixCmp( filename, ".otf" ) && OTF_File_nameSuffixCmp( filename, ".0.def" ) && OTF_File_nameSuffixCmp( filename, ".0.def.z" ) && OTF_File_nameSuffixCmp( filename, ".0.marker" ) && OTF_File_nameSuffixCmp( filename, ".0.marker.z" ) ) { return OTF_File_iofsl_open_zlevel( filename, manager, mode, zlevel ); } } ret= (OTF_File*) malloc( sizeof(OTF_File) ); if( NULL == ret ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); return NULL; } OTF_File_init( ret ); len= (uint32_t) strlen( filename ); ret->filename= malloc( len +3 ); if( NULL == ret->filename ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); free( ret ); ret= NULL; return NULL; } strncpy( ret->filename, filename, len +1 ); ret->mode = mode; if ( OTF_FILEMODE_READ == mode || OTF_FILEMODE_SEEK == mode ) { #ifdef HAVE_ZLIB if ( 0 != access( ret->filename, F_OK ) ) { /* file not found, try '.z' suffix */ strncpy( ret->filename +len, ".z", 3 ); if ( 0 != access( ret->filename, F_OK ) ) { /* file still not found, give up */ free( ret->filename ); ret->filename= NULL; free( ret ); ret= NULL; return ret; } ret->z= malloc( sizeof(z_stream) ); if( NULL == ret->z ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); free( ret->filename ); ret->filename= NULL; free( ret ); ret= NULL; return NULL; } OTF_FILE_Z(ret)->next_in= NULL; OTF_FILE_Z(ret)->avail_in= 0; OTF_FILE_Z(ret)->zalloc= NULL; OTF_FILE_Z(ret)->zfree= NULL; OTF_FILE_Z(ret)->opaque= NULL; inflateInit( OTF_FILE_Z(ret) ); ret->zbuffer= malloc( ret->zbuffersize ); if( NULL == ret->zbuffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); free( ret->zbuffer ); ret->zbuffer= NULL; free( ret->z ); ret->z= NULL; free( ret->filename ); ret->filename= NULL; free( ret ); ret= NULL; return NULL; } } #else /* HAVE_ZLIB */ if ( 0 != access( ret->filename, F_OK ) ) { strncpy( ret->filename +len, ".z", 3 ); if ( 0 == access( ret->filename, F_OK ) ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "cannot open %s. Zlib is not enabled.\n", __FUNCTION__, __FILE__, __LINE__, ret->filename ); } /* file still not found, give up */ free( ret->filename ); ret->filename= NULL; free( ret ); ret= NULL; return ret; } #endif /* HAVE_ZLIB */ } else { /* filemode write */ #ifdef HAVE_ZLIB /* is a .z appended to the file name */ if ( len > 2 && 0 == strcmp( ret->filename + len - 2, ".z" ) ) { ret->z= malloc( sizeof(z_stream) ); if( NULL == ret->z ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); free( ret->filename ); ret->filename= NULL; free( ret ); ret= NULL; return NULL; } OTF_FILE_Z(ret)->next_in= NULL; OTF_FILE_Z(ret)->avail_in= 0; OTF_FILE_Z(ret)->zalloc= NULL; OTF_FILE_Z(ret)->zfree= NULL; OTF_FILE_Z(ret)->opaque= NULL; deflateInit( OTF_FILE_Z(ret), zlevel ); ret->zbuffer= malloc( ret->zbuffersize ); if( NULL == ret->zbuffer ) { OTF_Error( "ERROR in function %s, file: %s, line: %i:\n " "no memory left.\n", __FUNCTION__, __FILE__, __LINE__ ); free( ret->z ); ret->z= NULL; free( ret->filename ); ret->filename= NULL; free( ret ); ret= NULL; return NULL; } } #endif /* HAVE_ZLIB */ } ret->manager= manager; return ret; } size_t OTF_File_write_internal( OTF_File* file, const void* src, size_t length ) { if ( NULL != file->iofsl ) return OTF_File_iofsl_write_internal( file, src, length ); return fwrite(src, 1, length, file->file); } size_t OTF_File_read_internal( OTF_File* file, void* dest, size_t length ) { uint64_t actual_length; if ( NULL != file->iofsl ) return OTF_File_iofsl_read_internal( file, dest, length ); /* default behavior first */ if ( NULL == file->externalbuffer ) return fread( dest, 1, length, file->file ); /* now for the special case: read from the external buffer */ actual_length= file->externallen - file->externalpos; actual_length= ( length <= actual_length ) ? length : actual_length; memcpy( dest, file->externalbuffer + file->externalpos, actual_length ); file->externalpos += actual_length; return actual_length; } eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/otf.h0000644000000000000000000000013112544237152021202 xustar0030 mtime=1435582058.539899952 29 atime=1508138855.95142032 30 ctime=1508162366.177771456 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/otf.h0000644000175000017500000000515212544237152022375 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * \mainpage Open Trace Format API Documentation * * \section introduction Introduction * * This library supports efficient parallel and distributed access to trace * data and offers selective reading access regarding arbitrary time * intervals, process selection and record types. Optional auxiliary * information can assist this selective access. * * The Open Trace Format makes use of a portable ASCII encoding. * It distributes single traces to multiple so called streams * with one or more files each. Merging of records from multiple files is done * transparently by the OTF library. The number of possible streams is not * limited by the number of available file handles. * * * For more information read the specification (docu/api/specification.pdf) * * OTF is available under the BSD open source license that allows free usage * for academic and commercial applications. * * * \section quicklinks Quick Links * * \subsection interfaces Interfaces * - \ref reader "Global Reader" - \ref rstream "Stream Reader" * - \ref writer "Global Writer" - \ref wstream "Stream Writer " * - \ref handler "Handlers" - \ref ha "Handler Array" * * - \ref fm "File Manager" * - \ref mc "Master Control" * * - \ref keyvalue "KeyValueList" * * - \ref misc "Miscellaneous" * * \subsection examples Examples * - \ref reader_example1 "Reader" * - \ref reader_example2 "Reader 2" * - \ref rstream_example "Stream Reader" * - \ref writer_example "Writer" * - \ref wstream_example "Stream Writer" * - \ref mc_example "Master Control" * - \ref keyvalue_read_example "KeyValueList - Read" * - \ref keyvalue_write_example "KeyValueList - Write" * * \subsection Contact * - report bugs to andreas.knuepfer@tu-dresden.de * -
OTF-Home * */ /** * @file otf.h * * @brief Main include file for applications using OTF. */ /** * \defgroup misc Miscellaneous */ /** * \defgroup internal Internal Interfaces * * All files in this module contain Interfaces that are not meant to be accessed directly. */ #ifndef OTF_H #define OTF_H #include "OTF_Definitions.h" #include "OTF_KeyValue.h" #include "OTF_FileManager.h" #include "OTF_Filenames.h" #include "OTF_HandlerArray.h" #include "OTF_MasterControl.h" #include "OTF_RStream.h" #include "OTF_Reader.h" #include "OTF_WStream.h" #include "OTF_Writer.h" #endif /* OTF_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_Parse.c0000644000000000000000000000013212544237152022170 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.175375964 30 ctime=1508162366.217774947 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_Parse.c0000644000175000017500000040767612544237152023403 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "OTF_Definitions.h" #include "OTF_Platform.h" #include "OTF_Parse.h" #include "OTF_Keywords.h" #include "OTF_Errno.h" /* *** local headers *** **************************************************** */ /* *** Definition records *** ************************************* */ /** This function reads a COMMENT record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readDefinitionComment( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); /** This function reads a DEFTIMERRESOLUTION record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readDefTimerResolution( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); /** This function reads a DEFPROCESS record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readDefProcess( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); /** This function reads a DEFPROCESSGROUP record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readDefProcessGroup( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); /** This function reads a DEFATTRLIST record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readDefAttributeList( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); /** This function reads a DEFPROCESSORGROUPATTR record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readDefProcessOrGroupAttributes( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); /** This function reads a DEFFUNCTION record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readDefFunction( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); /** This function reads a DEFFUNCTIONGROUP record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readDefFunctionGroup( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); /** This function reads a DEFCOLLOP record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readDefCollectiveOperation( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); /** This function reads a DEFCOUNTER record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readDefCounter( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); /** This function reads a DEFCOUNTERGROUP record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readDefCounterGroup( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); /** This function reads a DEFSCL record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readDefScl( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); /** This function reads a DEFSCLFILE record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readDefSclFile( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); /** This function reads a DEFUNIQUEID record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readDefUniqueId( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); /** This function reads a DEFVERSION record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readDefVersion( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); /** This function reads a DEFCREATOR record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readDefCreator( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); /** This function reads a DEFFILE record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readDefFile( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); /** This function reads a DEFFILEGROUP record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readDefFileGroup( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); int OTF_Reader_readDefKeyValue( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); int OTF_Reader_readDefTimeRange( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); int OTF_Reader_readDefCounterAssignments( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); int OTF_Reader_readDefProcessSubstitutes( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); int OTF_Reader_readDefAuxSamplePoint( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ); /* *** Event records *** ****************************************** */ /** This function reads a NOOP record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readNoOp( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a COMMENT record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readEventComment( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a COUNTER record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readCounter( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads an ENTER record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readEnter( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a LEAVE record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readLeave( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a COLLECTIVEOPERATION record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readCollectiveOperation( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a BEGINCOLLECTIVEOPERATION record from buffer, parses the parameter of the record and calls the appropriate handler.*/ int OTF_Reader_readBeginCollectiveOperation( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads an ENDCOLLECTIVEOPERATION record from buffer, parses the parameter of the record and calls the appropriate handler.*/ int OTF_Reader_readEndCollectiveOperation( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a RECVMSG record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readRecvMsg( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a SENDMSG record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readSendMsg( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a PROCESSBEGIN record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readBeginProcess( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a PROCESSEND record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readEndProcess( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a FILEOPERATION record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readFileOperation( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a BEGINFILEOPERATION record from buffer, parses the parameter of the record and calls the appropriate handler.*/ int OTF_Reader_readBeginFileOperation( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads an ENDFILEOPERATION record from buffer, parses the parameter of the record and calls the appropriate handler.*/ int OTF_Reader_readEndFileOperation( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads an ENDFILEOPERATION record from buffer, parses the parameter of the record and calls the appropriate handler. THIS is for an older version but needs to stay as a bug fix. */ int OTF_Reader_readEndFileOperation_old( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a RMAPUT record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readRMAPut( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a RMAPUTRE record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readRMAPutRemoteEnd( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a RMAGET record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readRMAGet( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a RMAEND record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readRMAEnd( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /* *** Snapshot records *** ****************************************** */ /** This function reads a COMMENT record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readSnapshotComment( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a TENTER record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readEnterSnapshot( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a TSEND record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readSendSnapshot( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a TOPENFILE record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readOpenFileSnapshot( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a TBEGINCOLLOP record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readBeginCollopSnapshot( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a TBEGINFILEOP record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readBeginFileOpSnapshot( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a TCOLLOPCOUNT record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readCollopCountSnapshot( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a TCOUNTER record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readCounterSnapshot( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /* *** Summary records *** ****************************************** */ /** This function reads a COMMENT record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readSummaryComment( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a SUMFUNCTION record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readFunctionSummary( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a SUMFUNCTIONGROUP record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readFunctionGroupSummary( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a SUMMESSAGE record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readMessageSummary( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a COLLOPMESSAGE record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readCollopSummary( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a SUMFILEOPERATION record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readFileOperationSummary( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /** This function reads a SUMFILEGROUPOPERATION record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readFileGroupOperationSummary( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /* *** Marker records *** ***************************************** */ /** This function reads a DefMarker record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readDefMarker( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t stream ); /** This function reads a Marker record from buffer, parse the parameter of the record and call the appropriate handler.*/ int OTF_Reader_readMarkerSpot( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ); /* ************************************************************************* */ /* *** public function bodies *** ********************************* */ int OTF_Reader_parseEventRecord( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { /* look at this code very carfully until you understand it!!! the order of cases depends on the first characters of the 'OTF_KEYWORD_' macros - so changes there requires changes here! see comments in 'OTF_Keywords.h' also! */ /* accept empty lines */ OTF_RBuffer_skipSpaces( buffer ); switch( buffer->buffer[buffer->pos] ) { case OTF_KEYWORD_F_EVENTCOMMENT /*'#'*/ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_EVENTCOMMENT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_EVENTCOMMENT ) ) { OTF_RBuffer_skipKeyword( buffer ); return OTF_Reader_readEventComment( buffer, handlers ); } break; case OTF_KEYWORD_F_KEYVALUE_PREFIX /* 'K' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_KEYVALUE_PREFIX ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_KEYVALUE_PREFIX ) ) { OTF_RBuffer_skipKeyword( buffer ); return OTF_RBuffer_readKeyValueList( buffer ); } break; case OTF_KEYWORD_F_NOOP /* 'N' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_NOOP ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_NOOP ) ) { OTF_RBuffer_skipKeyword( buffer ); return OTF_Reader_readNoOp( buffer, handlers ); } break; case OTF_KEYWORD_F_ENTER /* 'E' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_ENTER ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_ENTER ) ) { OTF_RBuffer_skipKeyword( buffer ); return OTF_Reader_readEnter( buffer, handlers ); } break; case OTF_KEYWORD_F_LEAVE /* 'L' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LEAVE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LEAVE ) ) { OTF_RBuffer_skipKeyword( buffer ); return OTF_Reader_readLeave( buffer, handlers ); } break; case OTF_KEYWORD_F_SEND /* 'S' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_SEND ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_SEND ) ) { OTF_RBuffer_skipKeyword( buffer ); return OTF_Reader_readSendMsg( buffer, handlers ); } break; case OTF_KEYWORD_F_RECEIVE /* 'R' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_RECEIVE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_RECEIVE ) ) { return OTF_Reader_readRecvMsg( buffer, handlers ); } break; case OTF_KEYWORD_F_COUNTER /* 'C' */ : /* case OTF_KEYWORD_F_COLLECTIVEOPERATION / * C * / : */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_COUNTER ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_COUNTER ) ) { return OTF_Reader_readCounter( buffer, handlers ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_COLLECTIVEOPERATION ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_COLLECTIVEOPERATION ) ) { OTF_RBuffer_skipKeyword( buffer ); return OTF_Reader_readCollectiveOperation( buffer, handlers ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_BEGINCOLLECTIVEOPERATION ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_BEGINCOLLECTIVEOPERATION ) ) { OTF_RBuffer_skipKeyword( buffer ); return OTF_Reader_readBeginCollectiveOperation( buffer, handlers ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_ENDCOLLECTIVEOPERATION ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_ENDCOLLECTIVEOPERATION ) ) { OTF_RBuffer_skipKeyword( buffer ); return OTF_Reader_readEndCollectiveOperation( buffer, handlers ); } break; case OTF_KEYWORD_F_FILEOPERATION /* F */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_FILEOPERATION ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_FILEOPERATION ) ) { return OTF_Reader_readFileOperation( buffer, handlers ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_BEGINFILEOPERATION_NEW ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_BEGINFILEOPERATION_NEW ) ) { return OTF_Reader_readBeginFileOperation( buffer, handlers ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_ENDFILEOPERATION_NEW ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_ENDFILEOPERATION_NEW ) ) { return OTF_Reader_readEndFileOperation( buffer, handlers ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_BEGINFILEOPERATION_OLD ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_BEGINFILEOPERATION_OLD ) ) { return OTF_Reader_readBeginFileOperation( buffer, handlers ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_ENDFILEOPERATION_OLD ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_ENDFILEOPERATION_OLD ) ) { return OTF_Reader_readEndFileOperation_old( buffer, handlers ); } break; case OTF_KEYWORD_F_BEGINPROCESS /* 'P' */ : /* case OTF_KEYWORD_F_ENDPROCESS / * 'P' * / : */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_BEGINPROCESS ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_BEGINPROCESS ) ) { return OTF_Reader_readBeginProcess( buffer, handlers ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_ENDPROCESS ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_ENDPROCESS ) ) { return OTF_Reader_readEndProcess( buffer, handlers ); } break; case OTF_KEYWORD_F_RMAPUT /* T */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_RMAPUT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_RMAPUT ) ) { return OTF_Reader_readRMAPut( buffer, handlers ); } /* try inline snapshots */ return OTF_Reader_parseSnapshotsRecord( buffer, handlers ); case OTF_KEYWORD_F_RMAPUTRE /* U */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_RMAPUTRE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_RMAPUTRE ) ) { return OTF_Reader_readRMAPutRemoteEnd( buffer, handlers ); } break; case OTF_KEYWORD_F_RMAGET /* G */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_RMAGET ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_RMAGET ) ) { return OTF_Reader_readRMAGet( buffer, handlers ); } break; case OTF_KEYWORD_F_RMAEND /* M */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_RMAEND ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_RMAEND ) ) { return OTF_Reader_readRMAEnd( buffer, handlers ); } break; case '\n': /* accept empty lines */ return OTF_RBuffer_readNewline( buffer ); } return OTF_Reader_readUnknownRecord( buffer, handlers ); } int OTF_Reader_parseDefRecord( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { /* check prefix */ if ( OTF_RBuffer_testPrefix( buffer, OTF_KEYWORD_L_DEF_PREFIX ) || OTF_RBuffer_testPrefix( buffer, OTF_KEYWORD_S_DEF_PREFIX ) ) { /* fine */ } else if ( OTF_RBuffer_testPrefix( buffer, OTF_KEYWORD_L_KEYVALUE_PREFIX ) || OTF_RBuffer_testPrefix( buffer, OTF_KEYWORD_S_KEYVALUE_PREFIX ) ) { return OTF_RBuffer_readKeyValueList( buffer ); } else if ( buffer->buffer[buffer->pos] == '\n' ) { return OTF_RBuffer_readNewline( buffer ); } else { return OTF_Reader_readUnknownDefRecord( buffer, handlers, streamid ); } switch( buffer->buffer[buffer->pos] ) { /* case OTF_KEYWORD_F_DEFAUXSAMPLEPOINT 'A' : */ case OTF_KEYWORD_F_DEFATTRLIST /* 'A' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFATTRLIST ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFATTRLIST ) ) { return OTF_Reader_readDefAttributeList( buffer, handlers, streamid ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFAUXSAMPLEPOINT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFAUXSAMPLEPOINT ) ) { return OTF_Reader_readDefAuxSamplePoint( buffer, handlers, streamid ); } break; /* case OTF_KEYWORD_F_DEFINITIONCOMMENT 'C' :*/ /* case OTF_KEYWORD_F_DEFCOUNTER 'C' : */ /* case OTF_KEYWORD_F_DEFCOUNTERGROUP 'C' : */ /* case OTF_KEYWORD_F_DEFCOLLOP 'C' : */ /* case OTF_KEYWORD_F_DEFCOUNTERASSIGNMENTS / * C * / : */ case OTF_KEYWORD_F_DEFCREATOR /* 'C' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFINITIONCOMMENT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFINITIONCOMMENT ) ) { OTF_RBuffer_skipKeyword( buffer ); return OTF_Reader_readDefinitionComment( buffer, handlers, streamid ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFCOUNTERGROUP ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFCOUNTERGROUP ) ) { return OTF_Reader_readDefCounterGroup( buffer, handlers, streamid ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFCREATOR ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFCREATOR ) ) { return OTF_Reader_readDefCreator( buffer, handlers, streamid ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFCOLLOP ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFCOLLOP ) ) { return OTF_Reader_readDefCollectiveOperation( buffer, handlers, streamid ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFCOUNTER ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFCOUNTER ) ) { return OTF_Reader_readDefCounter( buffer, handlers, streamid ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFCOUNTERASSIGNMENTS ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFCOUNTERASSIGNMENTS ) ) { return OTF_Reader_readDefCounterAssignments( buffer, handlers, streamid ); } break; /* case OTF_KEYWORD_F_DEFFUNCTION 'F' : */ /* case OTF_KEYWORD_F_DEFFFILE 'F' : */ /* case OTF_KEYWORD_F_DEFFFILEGROUP 'F' : */ case OTF_KEYWORD_F_DEFFUNCTIONGROUP /* 'F' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFFUNCTIONGROUP ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFFUNCTIONGROUP ) ) { return OTF_Reader_readDefFunctionGroup( buffer, handlers, streamid ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFFUNCTION ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFFUNCTION ) ) { return OTF_Reader_readDefFunction( buffer, handlers, streamid ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFFILEGROUP ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFFILEGROUP ) ) { return OTF_Reader_readDefFileGroup( buffer, handlers, streamid ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFFILE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFFILE ) ) { return OTF_Reader_readDefFile( buffer, handlers, streamid ); } break; case OTF_KEYWORD_F_DEFKEYVALUE /* 'K' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFKEYVALUE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFKEYVALUE ) ) { return OTF_Reader_readDefKeyValue( buffer, handlers, streamid ); } break; /* case OTF_KEYWORD_F_DEFPROCESSORGROUPATTR 'P' : */ /* case OTF_KEYWORD_F_DEFPROCESS 'P' : */ case OTF_KEYWORD_F_DEFPROCESSGROUP /* 'P' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFPROCESSORGROUPATTR ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFPROCESSORGROUPATTR ) ) { return OTF_Reader_readDefProcessOrGroupAttributes( buffer, handlers, streamid ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFPROCESSGROUP ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFPROCESSGROUP ) ) { return OTF_Reader_readDefProcessGroup( buffer, handlers, streamid ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFPROCESS ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFPROCESS ) ) { return OTF_Reader_readDefProcess( buffer, handlers, streamid ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFPROCESSSUBSTITUTES ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFPROCESSSUBSTITUTES ) ) { return OTF_Reader_readDefProcessSubstitutes( buffer, handlers, streamid ); } break; /* case OTF_KEYWORD_F_DEFSCL 'S' : */ case OTF_KEYWORD_F_DEFSCLFILE /* 'S' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFSCLFILE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFSCLFILE ) ) { return OTF_Reader_readDefSclFile( buffer, handlers, streamid ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFSCL ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFSCL ) ) { return OTF_Reader_readDefScl( buffer, handlers, streamid ); } break; /* case OTF_KEYWORD_F_DEFTIMERANGE / * T * / : */ case OTF_KEYWORD_F_DEFTIMERRESOLUTION /* 'T' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFTIMERRESOLUTION ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFTIMERRESOLUTION ) ) { return OTF_Reader_readDefTimerResolution( buffer, handlers, streamid ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFTIMERANGE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFTIMERANGE ) ) { return OTF_Reader_readDefTimeRange( buffer, handlers, streamid ); } break; case OTF_KEYWORD_F_DEFVERSION /* 'V' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFVERSION ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFVERSION ) ) { return OTF_Reader_readDefVersion( buffer, handlers, streamid ); } break; case OTF_KEYWORD_F_DEFUNIQUEID /* 'U' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_DEFUNIQUEID ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_DEFUNIQUEID ) ) { return OTF_Reader_readDefUniqueId( buffer, handlers, streamid ); } break; } return OTF_Reader_readUnknownDefRecord( buffer, handlers, streamid ); } int OTF_Reader_parseStatisticsRecord( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { /* check prefix */ if ( OTF_RBuffer_testPrefix( buffer, OTF_KEYWORD_L_SUM_PREFIX ) || OTF_RBuffer_testPrefix( buffer, OTF_KEYWORD_S_SUM_PREFIX ) ) { /* fine */ } else if ( OTF_RBuffer_testPrefix( buffer, OTF_KEYWORD_L_KEYVALUE_PREFIX ) || OTF_RBuffer_testPrefix( buffer, OTF_KEYWORD_S_KEYVALUE_PREFIX ) ) { return OTF_RBuffer_readKeyValueList( buffer ); } else if ( buffer->buffer[buffer->pos] == '\n' ) { return OTF_RBuffer_readNewline( buffer ); } else { return OTF_Reader_readUnknownRecord( buffer, handlers ); } switch( buffer->buffer[buffer->pos] ) { /* case OTF_KEYWORD_F_SUMFILEOPERATION 'F' : */ /* case OTF_KEYWORD_F_SUMFILEGROUPOPERATION 'F' : */ case OTF_KEYWORD_F_SUMFUNCTION /* 'F' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_SUMFUNCTION ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_SUMFUNCTION ) ) { return OTF_Reader_readFunctionSummary( buffer, handlers ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_SUMFILEGROUPOPERATION ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_SUMFILEGROUPOPERATION ) ) { return OTF_Reader_readFileGroupOperationSummary( buffer, handlers ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_SUMFILEOPERATION ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_SUMFILEOPERATION ) ) { return OTF_Reader_readFileOperationSummary( buffer, handlers ); } /** This is necessary to read a FunctionGroupSummary record in long format, because the first character of the long and short keyword differs. */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_SUMFUNCTIONGROUP ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_SUMFUNCTIONGROUP ) ) { return OTF_Reader_readFunctionGroupSummary( buffer, handlers ); } break; case OTF_KEYWORD_F_SUMFUNCTIONGROUP /* 'G' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_SUMFUNCTIONGROUP ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_SUMFUNCTIONGROUP ) ) { return OTF_Reader_readFunctionGroupSummary( buffer, handlers ); } break; case OTF_KEYWORD_F_SUMMESSAGE /* 'M' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_SUMMESSAGE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_SUMMESSAGE ) ) { return OTF_Reader_readMessageSummary( buffer, handlers ); } break; case OTF_KEYWORD_F_SUMCOMMENT /* 'C' */ : /*case OTF_KEYWORD_F_COLLOPMESSAGE*/ /* 'C' */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_SUMCOMMENT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_SUMCOMMENT ) ) { return OTF_Reader_readSummaryComment( buffer, handlers ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_COLLOPMESSAGE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_COLLOPMESSAGE ) ) { return OTF_Reader_readCollopSummary( buffer, handlers ); } break; } return OTF_Reader_readUnknownRecord( buffer, handlers ); } int OTF_Reader_parseSnapshotsRecord( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { /* check prefix */ if ( OTF_RBuffer_testPrefix( buffer, OTF_KEYWORD_L_SNAPSHOT_PREFIX ) || OTF_RBuffer_testPrefix( buffer, OTF_KEYWORD_S_SNAPSHOT_PREFIX ) ) { /* fine */ } else if ( OTF_RBuffer_testPrefix( buffer, OTF_KEYWORD_L_KEYVALUE_PREFIX ) || OTF_RBuffer_testPrefix( buffer, OTF_KEYWORD_S_KEYVALUE_PREFIX ) ) { return OTF_RBuffer_readKeyValueList( buffer ); } else if ( buffer->buffer[buffer->pos] == '\n' ) { return OTF_RBuffer_readNewline( buffer ); } else { return OTF_Reader_readUnknownRecord( buffer, handlers ); } switch( buffer->buffer[buffer->pos] ) { case OTF_KEYWORD_F_SNAPSHOT_ENTER /* 'E' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_SNAPSHOT_ENTER ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_SNAPSHOT_ENTER ) ) { return OTF_Reader_readEnterSnapshot( buffer, handlers ); } break; case OTF_KEYWORD_F_SNAPSHOT_SEND /* 'S' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_SNAPSHOT_SEND ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_SNAPSHOT_SEND ) ) { return OTF_Reader_readSendSnapshot( buffer, handlers ); } break; case OTF_KEYWORD_F_SNAPSHOT_OPENFILE /* 'O' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_SNAPSHOT_OPENFILE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_SNAPSHOT_OPENFILE ) ) { return OTF_Reader_readOpenFileSnapshot( buffer, handlers ); } break; case OTF_KEYWORD_F_SNAPSHOT_COMMENT /* 'C' */ : /*case OTF_KEYWORD_F_SNAPSHOT_COLLOPCOUNT*/ /* 'C' */ /*case OTF_KEYWORD_F_SNAPSHOT_COUNTER*/ /* 'C' */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_SNAPSHOT_COMMENT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_SNAPSHOT_COMMENT ) ) { return OTF_Reader_readSnapshotComment( buffer, handlers ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_SNAPSHOT_COLLOPCOUNT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_SNAPSHOT_COLLOPCOUNT ) ) { return OTF_Reader_readCollopCountSnapshot( buffer, handlers ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_SNAPSHOT_COUNTER ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_SNAPSHOT_COUNTER ) ) { return OTF_Reader_readCounterSnapshot( buffer, handlers ); } break; case OTF_KEYWORD_F_SNAPSHOT_BEGINCOLLOP /* 'B' */ : /*case OTF_KEYWORD_F_SNAPSHOT_BEGINFILEOP*/ /* 'B' */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_SNAPSHOT_BEGINCOLLOP ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_SNAPSHOT_BEGINCOLLOP ) ) { return OTF_Reader_readBeginCollopSnapshot( buffer, handlers ); } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_SNAPSHOT_BEGINFILEOP ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_SNAPSHOT_BEGINFILEOP ) ) { return OTF_Reader_readBeginFileOpSnapshot( buffer, handlers ); } break; } return OTF_Reader_readUnknownRecord( buffer, handlers ); } int OTF_Reader_parseMarkerRecord( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { /* check prefix */ if ( OTF_RBuffer_testPrefix( buffer, OTF_KEYWORD_L_MARKER_PREFIX ) || OTF_RBuffer_testPrefix( buffer, OTF_KEYWORD_S_MARKER_PREFIX ) ) { /* fine */ } else if ( OTF_RBuffer_testPrefix( buffer, OTF_KEYWORD_L_KEYVALUE_PREFIX ) || OTF_RBuffer_testPrefix( buffer, OTF_KEYWORD_S_KEYVALUE_PREFIX ) ) { return OTF_RBuffer_readKeyValueList( buffer ); } else if ( buffer->buffer[buffer->pos] == '\n' ) { return OTF_RBuffer_readNewline( buffer ); } else { return OTF_Reader_readUnknownMarkerRecord( buffer, handlers, streamid ); } switch( buffer->buffer[buffer->pos] ) { case OTF_KEYWORD_F_MARKER_DEFMARKER /* 'D' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_MARKER_DEFMARKER ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_MARKER_DEFMARKER ) ) { OTF_RBuffer_skipKeyword( buffer ); return OTF_Reader_readDefMarker( buffer, handlers, streamid ); } break; case OTF_KEYWORD_F_MARKER_MARKERSPOT /* 'S' */ : if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_MARKER_MARKERSPOT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_MARKER_MARKERSPOT ) ) { return OTF_Reader_readMarkerSpot( buffer, handlers ); } break; } return OTF_Reader_readUnknownMarkerRecord( buffer, handlers, streamid ); } /* *** local function bodies *** ********************************** */ /* *** Definition records *** ************************************* */ int OTF_Reader_readDefinitionComment( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { const char* comment; if ( handlers->pointer[OTF_DEFINITIONCOMMENT_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } comment = OTF_RBuffer_readString( buffer ); if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefinitionComment*) handlers->pointer[OTF_DEFINITIONCOMMENT_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFINITIONCOMMENT_RECORD], streamid, comment, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefTimerResolution( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { uint64_t ticksPerSecond; if ( handlers->pointer[OTF_DEFTIMERRESOLUTION_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } ticksPerSecond = OTF_RBuffer_readUint64( buffer ); if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefTimerResolution*) handlers->pointer[OTF_DEFTIMERRESOLUTION_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFTIMERRESOLUTION_RECORD], streamid, ticksPerSecond, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefProcess( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { uint32_t deftoken; uint32_t parent = 0; const char* name; if ( handlers->pointer[OTF_DEFPROCESS_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } deftoken = OTF_RBuffer_readUint32( buffer ); if ( buffer->buffer[buffer->pos] == '\n' ) { name = NULL; parent = 0; } else { /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NAME ) || OTF_RBuffer_testKeyword( buffer, "N" )/*deprecated keyword*/) { name = OTF_RBuffer_readString( buffer ); if ( name == NULL ) { PARSE_ERROR( buffer ); return 0; } if ( buffer->buffer[buffer->pos] == '\n' ) { parent = 0; } else { /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_PARENT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_PARENT ) || OTF_RBuffer_testKeyword( buffer, "P") /*deprecated keyword*/) { parent = OTF_RBuffer_readUint32( buffer ); } } } else if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_PARENT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_PARENT ) || OTF_RBuffer_testKeyword( buffer, "P") /*deprecated keyword*/) { parent = OTF_RBuffer_readUint32( buffer ); name = NULL; } else { PARSE_ERROR( buffer ); return 0; } } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefProcess*) handlers->pointer[OTF_DEFPROCESS_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFPROCESS_RECORD], streamid, deftoken, name, parent, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefProcessGroup( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { int ret; uint32_t n; uint32_t deftoken; const char* name; uint8_t skip_keyword = 0; if ( handlers->pointer[OTF_DEFPROCESSGROUP_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } deftoken = OTF_RBuffer_readUint32( buffer ); if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_MEMBERS ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_MEMBERS ) ) { n= OTF_RBuffer_readArray( buffer, &(buffer->array), &(buffer->arraysize) ); } else { /* maybe an empty array was written, therefore read the following 2 keywords together */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_MEMBERS OTF_KEYWORD_S_LOCAL_NAME ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_MEMBERS OTF_KEYWORD_L_LOCAL_NAME ) ) { skip_keyword = 1; n = 0; } else { PARSE_ERROR( buffer ); return 0; } } /** check if the token matchs with the format of the record */ if ( skip_keyword || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NAME ) || OTF_RBuffer_testKeyword( buffer, "N" )/*deprecated keyword*/) { name = OTF_RBuffer_readString( buffer ); if ( name == NULL ) { PARSE_ERROR( buffer ); return 0; } } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ ret= ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefProcessGroup*) handlers->pointer[OTF_DEFPROCESSGROUP_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFPROCESSGROUP_RECORD], streamid, deftoken, name, n, buffer->array, buffer->list ) ) ); return ret; } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefAttributeList( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { int ret; uint32_t num; uint32_t attr_token; if ( handlers->pointer[OTF_DEFATTRLIST_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } attr_token = OTF_RBuffer_readUint32( buffer ); if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_MEMBERS ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_MEMBERS ) ) { num = OTF_RBuffer_readArray( buffer, &(buffer->array), &(buffer->arraysize) ); } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ ret= ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefAttributeList*) handlers->pointer[OTF_DEFATTRLIST_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFATTRLIST_RECORD], streamid, attr_token, num, (OTF_ATTR_TYPE*)buffer->array, buffer->list ) ) ); return ret; } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefProcessOrGroupAttributes( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { int ret; uint32_t proc_token; uint32_t attr_token; if ( handlers->pointer[OTF_DEFPROCESSORGROUPATTR_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } proc_token = OTF_RBuffer_readUint32( buffer ); if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_VALUE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_VALUE ) ) { attr_token = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ ret= ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefProcessOrGroupAttributes*) handlers->pointer[OTF_DEFPROCESSORGROUPATTR_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFPROCESSORGROUPATTR_RECORD], streamid, proc_token, attr_token, buffer->list ) ) ); return ret; } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefFunction( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { uint32_t deftoken; uint32_t group; uint32_t scltoken; const char* name; if ( handlers->pointer[OTF_DEFFUNCTION_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } deftoken= OTF_RBuffer_readUint32( buffer ); /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_GROUP ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_GROUP ) ) { group= OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NAME ) || OTF_RBuffer_testKeyword( buffer, "N" )/*deprecated keyword*/) { name= OTF_RBuffer_readString( buffer ); if ( NULL == name ) { PARSE_ERROR( buffer ); return 0; } } else { PARSE_ERROR( buffer ); return 0; } if ( buffer->buffer[buffer->pos] == '\n' ) { scltoken= 0; } else { /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, "S" )/*deprecated keyword*/ ) { scltoken= OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefFunction*) handlers->pointer[OTF_DEFFUNCTION_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFFUNCTION_RECORD], streamid, deftoken, name, group, scltoken, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefFunctionGroup( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { uint32_t deftoken; const char* name; if ( handlers->pointer[OTF_DEFFUNCTIONGROUP_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } deftoken = OTF_RBuffer_readUint32( buffer ); /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NAME ) || OTF_RBuffer_testKeyword( buffer, "N" )/*deprecated keyword*/) { name = OTF_RBuffer_readString( buffer ); if ( name == NULL ) { PARSE_ERROR( buffer ); return 0; } } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefFunctionGroup*) handlers->pointer[OTF_DEFFUNCTIONGROUP_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFFUNCTIONGROUP_RECORD], streamid, deftoken, name, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefCollectiveOperation( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { uint32_t collOp; const char* name; uint32_t type; if ( handlers->pointer[OTF_DEFCOLLOP_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } collOp = OTF_RBuffer_readUint32( buffer ); /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NAME ) || OTF_RBuffer_testKeyword( buffer, "N" )/*deprecated keyword*/) { name = OTF_RBuffer_readString( buffer ); if ( name == NULL ) { PARSE_ERROR( buffer ); return 0; } } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matches with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_TYPE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_TYPE ) || OTF_RBuffer_testKeyword( buffer, "T")/*deprecated keyword*/) { type = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefCollectiveOperation*) handlers->pointer[OTF_DEFCOLLOP_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFCOLLOP_RECORD], streamid, collOp, name, type, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefCounter( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { uint32_t deftoken; uint32_t properties; uint32_t countergroup; const char* unit; const char* name; if ( handlers->pointer[OTF_DEFCOUNTER_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } deftoken = OTF_RBuffer_readUint32( buffer ); /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_GROUP ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_GROUP ) ) { countergroup = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NAME ) || OTF_RBuffer_testKeyword( buffer, "N" )/*deprecated keyword*/) { name = OTF_RBuffer_readString( buffer ); if ( name == NULL ) { PARSE_ERROR( buffer ); return 0; } } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_PROPERTIES ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_PROPERTIES ) ) { properties = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** WARNING: double reading is intentionally, because in former versions of otf it wrote the group twice(bug) ... if it doesnt find this second group, it is simply skipped */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_GROUP ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_GROUP ) ) { countergroup = OTF_RBuffer_readUint32( buffer ); } /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_UNIT) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_UNIT ) ) { unit = OTF_RBuffer_readString( buffer ); if ( unit == NULL ) { PARSE_ERROR( buffer ); return 0; } } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefCounter*) handlers->pointer[OTF_DEFCOUNTER_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFCOUNTER_RECORD], streamid, deftoken, name, properties, countergroup, unit, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefCounterGroup( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { uint32_t deftoken; const char* name; if ( handlers->pointer[OTF_DEFCOUNTERGROUP_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } deftoken = OTF_RBuffer_readUint32( buffer ); /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NAME ) || OTF_RBuffer_testKeyword( buffer, "N" )/*deprecated keyword*/) { name = OTF_RBuffer_readString( buffer ); if ( name == NULL ) { PARSE_ERROR( buffer ); return 0; } } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefCounterGroup*) handlers->pointer[OTF_DEFCOUNTERGROUP_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFCOUNTERGROUP_RECORD], streamid, deftoken, name, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefScl( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { uint32_t deftoken; uint32_t sclfile; uint32_t sclline; if ( handlers->pointer[OTF_DEFSCL_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } deftoken = OTF_RBuffer_readUint32( buffer ); /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_FILE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_FILE ) ) { sclfile = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_LINE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_LINE ) || OTF_RBuffer_testKeyword( buffer, "L" )/*deprecated keyword*/ ) { sclline = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefScl*) handlers->pointer[OTF_DEFSCL_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFSCL_RECORD], streamid, deftoken, sclfile, sclline, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefSclFile( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { uint32_t deftoken; const char* filename; if ( handlers->pointer[OTF_DEFSCLFILE_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } deftoken = OTF_RBuffer_readUint32( buffer ); /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NAME ) || OTF_RBuffer_testKeyword( buffer, "N" )/*deprecated keyword*/) { filename = OTF_RBuffer_readString( buffer ); if ( filename == NULL ) { PARSE_ERROR( buffer ); return 0; } } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefSclFile*) handlers->pointer[OTF_DEFSCLFILE_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFSCLFILE_RECORD], streamid, deftoken, filename, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefUniqueId( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { uint64_t uid; if ( handlers->pointer[OTF_DEFUNIQUEID_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } uid = OTF_RBuffer_readUint64( buffer ); if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefUniqueId*) handlers->pointer[OTF_DEFUNIQUEID_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFUNIQUEID_RECORD], streamid, uid, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefVersion( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { uint8_t major; uint8_t minor; uint8_t sub; const char* string; if ( handlers->pointer[OTF_DEFVERSION_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } major = (uint8_t) OTF_RBuffer_readUint32( buffer ); if ( ! OTF_RBuffer_testChar( buffer, '.' ) ) { PARSE_ERROR( buffer ); return 0; } minor = (uint8_t) OTF_RBuffer_readUint32( buffer ); if ( ! OTF_RBuffer_testChar( buffer, '.' ) ) { PARSE_ERROR( buffer ); return 0; } sub = (uint8_t) OTF_RBuffer_readUint32( buffer ); string = OTF_RBuffer_readString( buffer ); if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefVersion*) handlers->pointer[OTF_DEFVERSION_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFVERSION_RECORD], streamid, major, minor, sub, string, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefCreator( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { const char* creator; if ( handlers->pointer[OTF_DEFCREATOR_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } creator = OTF_RBuffer_readString( buffer ); if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefCreator*) handlers->pointer[OTF_DEFCREATOR_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFCREATOR_RECORD], streamid, creator, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefFile( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { uint32_t token; const char* name; uint32_t group; if ( handlers->pointer[OTF_DEFFILE_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } token= OTF_RBuffer_readUint32( buffer ); if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NAME ) ) { name= OTF_RBuffer_readString( buffer ); if ( NULL == name ) { PARSE_ERROR( buffer ); return 0; } } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_GROUP ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_GROUP ) ) { group= OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefFile*) handlers->pointer[OTF_DEFFILE_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFFILE_RECORD], streamid, token, name, group, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefFileGroup( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { uint32_t token; const char* name; if ( handlers->pointer[OTF_DEFFILEGROUP_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } token= OTF_RBuffer_readUint32( buffer ); if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NAME ) ) { name= OTF_RBuffer_readString( buffer ); if ( NULL == name ) { PARSE_ERROR( buffer ); return 0; } } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefFileGroup*) handlers->pointer[OTF_DEFFILEGROUP_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFFILEGROUP_RECORD], streamid, token, name, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefKeyValue( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { uint32_t key; OTF_Type type; const char* name; const char* description; if ( handlers->pointer[OTF_DEFKEYVALUE_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } key= OTF_RBuffer_readUint32( buffer ); if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_TYPE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_TYPE ) ) { type= (OTF_Type) OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NAME ) ) { name= OTF_RBuffer_readString( buffer ); if ( NULL == name ) { PARSE_ERROR( buffer ); return 0; } } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_TAG ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_TAG ) ) { description= OTF_RBuffer_readString( buffer ); if ( NULL == description ) { PARSE_ERROR( buffer ); return 0; } } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefKeyValue*) handlers->pointer[OTF_DEFKEYVALUE_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFKEYVALUE_RECORD], streamid, key, type, name, description, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefTimeRange( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { uint64_t minTime; uint64_t maxTime; if ( handlers->pointer[OTF_DEFTIMERANGE_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } minTime= OTF_RBuffer_readUint64( buffer ); if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_TIME ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_TIME ) ) { maxTime= OTF_RBuffer_readUint64( buffer ); } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefTimeRange*) handlers->pointer[OTF_DEFTIMERANGE_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFTIMERANGE_RECORD], streamid, minTime, maxTime, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefCounterAssignments( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { uint32_t counter; uint32_t number_of_members; if ( handlers->pointer[OTF_DEFCOUNTERASSIGNMENTS_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } counter= OTF_RBuffer_readUint32( buffer ); if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_MEMBERS ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_MEMBERS ) ) { number_of_members= OTF_RBuffer_readArray( buffer, &buffer->array, &buffer->arraysize ); } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefCounterAssignments*) handlers->pointer[OTF_DEFCOUNTERASSIGNMENTS_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFCOUNTERASSIGNMENTS_RECORD], streamid, counter, number_of_members, buffer->array, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefProcessSubstitutes( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { uint32_t representative; uint32_t number_of_procs; if ( handlers->pointer[OTF_DEFPROCESSSUBSTITUTES_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } representative= OTF_RBuffer_readUint32( buffer ); if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_MEMBERS ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_MEMBERS ) ) { number_of_procs= OTF_RBuffer_readArray( buffer, &buffer->array, &buffer->arraysize ); } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefProcessSubstitutes*) handlers->pointer[OTF_DEFPROCESSSUBSTITUTES_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFPROCESSSUBSTITUTES_RECORD], streamid, representative, number_of_procs, buffer->array, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readDefAuxSamplePoint( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { uint64_t time; OTF_AuxSamplePointType type; if ( handlers->pointer[OTF_DEFAUXSAMPLEPOINT_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } time= OTF_RBuffer_readUint64( buffer ); if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_TYPE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_TYPE ) ) { type= (OTF_AuxSamplePointType) OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefAuxSamplePoint*) handlers->pointer[OTF_DEFAUXSAMPLEPOINT_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFAUXSAMPLEPOINT_RECORD], streamid, time, type, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } /* *** Event records *** ****************************************** */ int OTF_Reader_readEventComment( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { const char* comment; if ( handlers->pointer[OTF_EVENTCOMMENT_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } comment = OTF_RBuffer_readString( buffer ); if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_EventComment*) handlers->pointer[OTF_EVENTCOMMENT_RECORD] ) ( handlers->firsthandlerarg[OTF_EVENTCOMMENT_RECORD], buffer->time, buffer->process, comment, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readCounter( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { int ret= 1; int32_t counter_token; uint64_t value; if ( handlers->pointer[OTF_COUNTER_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } counter_token = OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_VALUE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_VALUE ) ); value = OTF_RBuffer_readUint64( buffer ); ret= ret && OTF_RBuffer_readNewline( buffer ); if ( ret ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_Counter*) handlers->pointer[OTF_COUNTER_RECORD] ) ( handlers->firsthandlerarg[OTF_COUNTER_RECORD], buffer->time, buffer->process, counter_token, value, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readNoOp( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { if ( handlers->pointer[OTF_NOOP_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_NoOp*) handlers->pointer[OTF_NOOP_RECORD] ) ( handlers->firsthandlerarg[OTF_NOOP_RECORD], buffer->time, buffer->process, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readEnter( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint32_t statetoken; uint32_t scltoken; if ( handlers->pointer[OTF_ENTER_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } statetoken = OTF_RBuffer_readUint32( buffer ); if ( buffer->buffer[buffer->pos] == '\n' ) { scltoken = 0; } else { /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, "S" )/*deprecated keyword*/) { scltoken = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_Enter*) handlers->pointer[OTF_ENTER_RECORD] ) ( handlers->firsthandlerarg[OTF_ENTER_RECORD], buffer->time, statetoken, buffer->process, scltoken, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readCollectiveOperation( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint32_t functionToken; uint32_t communicator; uint32_t rootprocess; uint32_t sent; uint32_t received; uint32_t scltoken; uint64_t duration; if ( handlers->pointer[OTF_COLLOP_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } functionToken = OTF_RBuffer_readUint32( buffer ); /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_COMMUNICATOR ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_COMMUNICATOR ) ) { communicator = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_ROOT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_ROOT ) ) { rootprocess = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SENT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SENT ) ) { sent = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_RECVD ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_RECVD ) ) { received = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_DURATION ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_DURATION ) ) { duration = OTF_RBuffer_readUint64( buffer ); } else { PARSE_ERROR( buffer ); return 0; } if ( buffer->buffer[buffer->pos] == '\n' ) { scltoken = 0; } else { /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, "S" )/*deprecated keyword*/) { scltoken = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_CollectiveOperation*) handlers->pointer[OTF_COLLOP_RECORD] ) ( handlers->firsthandlerarg[OTF_COLLOP_RECORD], buffer->time, buffer->process, functionToken, communicator, rootprocess, sent, received, duration, scltoken, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readBeginCollectiveOperation( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint32_t collOp; uint64_t matchingId; uint32_t procGroup; uint32_t rootProc; uint64_t sent; uint64_t received; uint32_t scltoken; if( handlers->pointer[OTF_BEGINCOLLOP_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } collOp = OTF_RBuffer_readUint32( buffer ); /** check if the token matches with the format of the record */ if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_HANDLEID ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_HANDLEID ) ) { matchingId = OTF_RBuffer_readUint64( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matches with the format of the record */ if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_COMMUNICATOR ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_COMMUNICATOR ) ) { procGroup = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matches with the format of the record */ if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_ROOT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_ROOT ) ) { rootProc = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matches with the format of the record */ if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SENT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SENT ) ) { sent = OTF_RBuffer_readUint64( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matches with the format of the record */ if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_RECVD ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_RECVD ) ) { received = OTF_RBuffer_readUint64( buffer ); } else { PARSE_ERROR( buffer ); return 0; } if( buffer->buffer[buffer->pos] == '\n' ) { scltoken = 0; } else { /** check if the token matches with the format of the record */ if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, "S" )/*deprecated keyword*/) { scltoken = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } } if( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_BeginCollectiveOperation*) handlers->pointer[OTF_BEGINCOLLOP_RECORD] ) ( handlers->firsthandlerarg[OTF_BEGINCOLLOP_RECORD], buffer->time, buffer->process, collOp, matchingId, procGroup, rootProc, sent, received, scltoken, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readEndCollectiveOperation( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint64_t matchingId; if( handlers->pointer[OTF_ENDCOLLOP_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } matchingId = OTF_RBuffer_readUint64( buffer ); if( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_EndCollectiveOperation*) handlers->pointer[OTF_ENDCOLLOP_RECORD] ) ( handlers->firsthandlerarg[OTF_ENDCOLLOP_RECORD], buffer->time, buffer->process, matchingId, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readRecvMsg( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint32_t sender; uint32_t communicator; uint32_t msgtype; uint32_t msglength; uint32_t scltoken; if ( handlers->pointer[OTF_RECEIVE_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } sender = OTF_RBuffer_readUint32( buffer ); /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_LENGTH ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_LENGTH ) ) { msglength = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_TAG) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_TAG ) ) { msgtype = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_COMMUNICATOR ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_COMMUNICATOR ) ) { communicator = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } if ( buffer->buffer[buffer->pos] == '\n' ) { scltoken = 0; } else { /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, "S" )/*deprecated keyword*/) { scltoken = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_RecvMsg*) handlers->pointer[OTF_RECEIVE_RECORD] ) ( handlers->firsthandlerarg[OTF_RECEIVE_RECORD], buffer->time, buffer->process, sender, communicator, msgtype, msglength, scltoken, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readSendMsg( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint32_t receiver; uint32_t communicator; uint32_t msgtype; uint32_t msglength; uint32_t scltoken; if ( handlers->pointer[OTF_SEND_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } receiver = OTF_RBuffer_readUint32( buffer ); /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_LENGTH ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_LENGTH ) ) { msglength = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_TAG ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_TAG ) ) { msgtype = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_COMMUNICATOR ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_COMMUNICATOR ) ) { communicator = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } if ( buffer->buffer[buffer->pos] == '\n' ) { scltoken = 0; } else { /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, "S" )/*deprecated keyword*/) { scltoken = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_SendMsg*) handlers->pointer[OTF_SEND_RECORD] ) ( handlers->firsthandlerarg[OTF_SEND_RECORD], buffer->time, buffer->process, receiver, communicator, msgtype, msglength, scltoken, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readLeave( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint32_t statetoken; uint32_t scltoken; if ( handlers->pointer[OTF_LEAVE_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } if ( buffer->buffer[buffer->pos] == '\n' ) { statetoken = 0; scltoken = 0; } else { statetoken = OTF_RBuffer_readUint32( buffer ); if ( buffer->buffer[buffer->pos] == '\n' ) { scltoken = 0; } else { /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, "S" )/*deprecated keyword*/) { scltoken = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } } } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_Leave*) handlers->pointer[OTF_LEAVE_RECORD] ) ( handlers->firsthandlerarg[OTF_LEAVE_RECORD], buffer->time, statetoken, buffer->process, scltoken, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readBeginProcess( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { if ( handlers->pointer[OTF_BEGINPROCESS_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_BeginProcess*) handlers->pointer[OTF_BEGINPROCESS_RECORD] ) ( handlers->firsthandlerarg[OTF_BEGINPROCESS_RECORD], buffer->time, buffer->process, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readEndProcess( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { if ( handlers->pointer[OTF_ENDPROCESS_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_EndProcess*) handlers->pointer[OTF_ENDPROCESS_RECORD] ) ( handlers->firsthandlerarg[OTF_ENDPROCESS_RECORD], buffer->time, buffer->process, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readFileOperation( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint32_t ret= 1; uint32_t fileid; uint64_t handleid; uint32_t operation; uint64_t bytes; uint64_t duration; uint32_t source; if ( handlers->pointer[OTF_FILEOPERATION_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } fileid = OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_HANDLEID ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_HANDLEID ) ); handleid = OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_OPERATION ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_OPERATION ) ); operation = OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_BYTES ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_BYTES ) ); bytes = OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_DURATION ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_DURATION ) ); duration = OTF_RBuffer_readUint64( buffer ); if( 0 == ret ) { PARSE_ERROR( buffer ); return 0; } if ( buffer->buffer[buffer->pos] == '\n' ) { source = 0; } else { if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SCL ) ) { source = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_FileOperation*) handlers->pointer[OTF_FILEOPERATION_RECORD] ) ( handlers->firsthandlerarg[OTF_FILEOPERATION_RECORD], buffer->time, fileid, buffer->process, handleid, operation, bytes, duration, source, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readBeginFileOperation( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint64_t matchingId; uint32_t scltoken; if( handlers->pointer[OTF_BEGINFILEOP_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } matchingId = OTF_RBuffer_readUint64( buffer ); if( buffer->buffer[buffer->pos] == '\n' ) { scltoken = 0; } else { if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SCL ) ) { scltoken = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } } if( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_BeginFileOperation*) handlers->pointer[OTF_BEGINFILEOP_RECORD] ) ( handlers->firsthandlerarg[OTF_BEGINFILEOP_RECORD], buffer->time, buffer->process, matchingId, scltoken, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readEndFileOperation( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint32_t fileid; uint64_t matchingId; uint64_t handleId; uint32_t operation; uint64_t bytes; uint32_t scltoken; if( handlers->pointer[OTF_ENDFILEOP_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } fileid = OTF_RBuffer_readUint32( buffer ); /** check if the token matches with the format of the record */ if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_MATCHID ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_MATCHID ) ) { matchingId = OTF_RBuffer_readUint64( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matches with the format of the record */ if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_HANDLEID ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_HANDLEID ) ) { handleId = OTF_RBuffer_readUint64( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matches with the format of the record */ if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_OPERATION) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_OPERATION) ) { operation = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matches with the format of the record */ if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_BYTES) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_BYTES) ) { bytes = OTF_RBuffer_readUint64( buffer ); } else { PARSE_ERROR( buffer ); return 0; } if( buffer->buffer[buffer->pos] == '\n' ) { scltoken = 0; } else { if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SCL ) ) { scltoken = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } } if( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_EndFileOperation*) handlers->pointer[OTF_ENDFILEOP_RECORD] ) ( handlers->firsthandlerarg[OTF_ENDFILEOP_RECORD], buffer->time, buffer->process, fileid, matchingId, handleId, operation, bytes, scltoken, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } /* the OLD/NEW thing fixes upward compatibility after changing the record contents - the new version is above, it will read the current version of the record - the old version is just below this line, it will read the old version of this record which misses one value */ int OTF_Reader_readEndFileOperation_old( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint32_t fileid; uint64_t handleid; uint32_t operation; uint64_t bytes; uint32_t scltoken; if( handlers->pointer[OTF_ENDFILEOP_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } fileid = OTF_RBuffer_readUint32( buffer ); /** check if the token matches with the format of the record */ if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_HANDLEID ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_HANDLEID ) ) { handleid = OTF_RBuffer_readUint64( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matches with the format of the record */ if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_OPERATION) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_OPERATION) ) { operation = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matches with the format of the record */ if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_BYTES) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_BYTES) ) { bytes = OTF_RBuffer_readUint64( buffer ); } else { PARSE_ERROR( buffer ); return 0; } if( buffer->buffer[buffer->pos] == '\n' ) { scltoken = 0; } else { if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SCL ) ) { scltoken = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } } if( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_EndFileOperation*) handlers->pointer[OTF_ENDFILEOP_RECORD] ) ( handlers->firsthandlerarg[OTF_ENDFILEOP_RECORD], buffer->time, buffer->process, fileid, handleid /* matchingID */, 0 /* handleID */, operation, bytes, scltoken, buffer->list ) ) ); /* this odd code above fixes upward compatibility after changing the record contents. in this case, the matchingID was missing, so we decided to take the handleID as the mathingID and pretend there is no handleID -- this is the only useful rescue in our opinion */ } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readRMAPut( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint32_t ret= 1; uint32_t origin; uint32_t target; uint32_t communicator; uint32_t tag; uint64_t bytes; uint32_t scltoken; if ( handlers->pointer[OTF_RMAPUT_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } origin = OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_PROCESS ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_PROCESS ) ); target = OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_COMMUNICATOR ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_COMMUNICATOR ) ); communicator = OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_TAG ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_TAG ) ); tag = OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_LENGTH ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_LENGTH ) ); bytes = OTF_RBuffer_readUint64( buffer ); if( 0 == ret ) { PARSE_ERROR( buffer ); return 0; } if ( buffer->buffer[buffer->pos] == '\n' ) { scltoken = 0; } else { if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SCL ) ) { scltoken = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_RMAPut*) handlers->pointer[OTF_RMAPUT_RECORD] ) ( handlers->firsthandlerarg[OTF_RMAPUT_RECORD], buffer->time, buffer->process, origin, target, communicator, tag, bytes, scltoken, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readRMAPutRemoteEnd( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint32_t ret= 1; uint32_t origin; uint32_t target; uint32_t communicator; uint32_t tag; uint64_t bytes; uint32_t scltoken; if ( handlers->pointer[OTF_RMAPUTRE_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } origin = OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_PROCESS ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_PROCESS ) ); target = OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_COMMUNICATOR ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_COMMUNICATOR ) ); communicator = OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_TAG ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_TAG ) ); tag = OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_LENGTH ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_LENGTH ) ); bytes = OTF_RBuffer_readUint64( buffer ); if( 0 == ret ) { PARSE_ERROR( buffer ); return 0; } if ( buffer->buffer[buffer->pos] == '\n' ) { scltoken = 0; } else { if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SCL ) ) { scltoken = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_RMAPutRemoteEnd*) handlers->pointer[OTF_RMAPUTRE_RECORD] ) ( handlers->firsthandlerarg[OTF_RMAPUTRE_RECORD], buffer->time, buffer->process, origin, target, communicator, tag, bytes, scltoken, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readRMAGet( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint32_t ret= 1; uint32_t origin; uint32_t target; uint32_t communicator; uint32_t tag; uint64_t bytes; uint32_t scltoken; if ( handlers->pointer[OTF_RMAGET_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } origin = OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_PROCESS ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_PROCESS ) ); target = OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_COMMUNICATOR ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_COMMUNICATOR ) ); communicator = OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_TAG ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_TAG ) ); tag = OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_LENGTH ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_LENGTH ) ); bytes = OTF_RBuffer_readUint64( buffer ); if( 0 == ret ) { PARSE_ERROR( buffer ); return 0; } if ( buffer->buffer[buffer->pos] == '\n' ) { scltoken = 0; } else { if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SCL ) ) { scltoken = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_RMAGet*) handlers->pointer[OTF_RMAGET_RECORD] ) ( handlers->firsthandlerarg[OTF_RMAGET_RECORD], buffer->time, buffer->process, origin, target, communicator, tag, bytes, scltoken, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readRMAEnd( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint32_t ret= 1; uint32_t remote; uint32_t communicator; uint32_t tag; uint32_t scltoken; if ( handlers->pointer[OTF_RMAEND_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } remote = OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_COMMUNICATOR ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_COMMUNICATOR ) ); communicator = OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_TAG ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_TAG ) ); tag = OTF_RBuffer_readUint32( buffer ); if( 0 == ret ) { PARSE_ERROR( buffer ); return 0; } if ( buffer->buffer[buffer->pos] == '\n' ) { scltoken = 0; } else { if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SCL ) ) { scltoken = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_RMAEnd*) handlers->pointer[OTF_RMAEND_RECORD] ) ( handlers->firsthandlerarg[OTF_RMAEND_RECORD], buffer->time, buffer->process, remote, communicator, tag, scltoken, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } /* *** Snapshot records *** ****************************************** */ int OTF_Reader_readSnapshotComment( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { const char* comment; if ( handlers->pointer[OTF_SNAPSHOTCOMMENT_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } comment = OTF_RBuffer_readString( buffer ); if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_SnapshotComment*) handlers->pointer[OTF_SNAPSHOTCOMMENT_RECORD] ) ( handlers->firsthandlerarg[OTF_SNAPSHOTCOMMENT_RECORD], buffer->time, buffer->process, comment, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readEnterSnapshot( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint64_t originaltime; uint32_t function; uint32_t source; if ( NULL == handlers->pointer[OTF_ENTERSNAPSHOT_RECORD] ) { return OTF_RBuffer_readNewline( buffer ); } function= OTF_RBuffer_readUint32( buffer ); if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_OTIME) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_OTIME) ) { originaltime= OTF_RBuffer_readUint64( buffer ); } else { PARSE_ERROR( buffer ); return 0; } if ( buffer->buffer[buffer->pos] == '\n' ) { source = 0; } else { /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, "S" )/*deprecated keyword*/) { source = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_EnterSnapshot*) handlers->pointer[OTF_ENTERSNAPSHOT_RECORD] ) ( handlers->firsthandlerarg[OTF_ENTERSNAPSHOT_RECORD], buffer->time, originaltime, function, buffer->process, source, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readSendSnapshot( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { int ret= 1; uint64_t originaltime; uint32_t receiver; uint32_t procGroup; uint32_t tag; uint32_t length; uint32_t source; if ( NULL == handlers->pointer[OTF_SENDSNAPSHOT_RECORD] ) { return OTF_RBuffer_readNewline( buffer ); } receiver= OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_OTIME) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_OTIME) ); originaltime= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_GROUP) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_GROUP) ); procGroup= OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_TAG) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_TAG) ); tag= OTF_RBuffer_readUint32( buffer ); if ( 0 == ret ) { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_LENGTH) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_LENGTH) ) { length= OTF_RBuffer_readUint32( buffer ); } else { /* support for old tracefiles */ length = 0; } if ( buffer->buffer[buffer->pos] == '\n' ) { source = 0; } else { /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, "S" )/*deprecated keyword*/) { source = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_SendSnapshot*) handlers->pointer[OTF_SENDSNAPSHOT_RECORD] ) ( handlers->firsthandlerarg[OTF_SENDSNAPSHOT_RECORD], buffer->time, originaltime, buffer->process, receiver, procGroup, tag, length, source, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readOpenFileSnapshot( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint64_t originaltime; uint32_t fileid; uint64_t handleid; uint32_t source; if ( NULL == handlers->pointer[OTF_OPENFILESNAPSHOT_RECORD] ) { return OTF_RBuffer_readNewline( buffer ); } fileid= OTF_RBuffer_readUint32( buffer ); if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_OTIME) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_OTIME) ) { originaltime= OTF_RBuffer_readUint64( buffer ); } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_HANDLEID) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_HANDLEID) ) { handleid= OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } if ( buffer->buffer[buffer->pos] == '\n' ) { source = 0; } else { /** check if the token matchs with the format of the record */ if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, "S" )/*deprecated keyword*/) { source = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_OpenFileSnapshot*) handlers->pointer[OTF_OPENFILESNAPSHOT_RECORD] ) ( handlers->firsthandlerarg[OTF_OPENFILESNAPSHOT_RECORD], buffer->time, originaltime, fileid, buffer->process, handleid, source, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readBeginCollopSnapshot( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint64_t originaltime; uint32_t collOp; uint64_t matchingId; uint32_t procGroup; uint32_t rootProc; uint64_t sent; uint64_t received; uint32_t scltoken; if ( NULL == handlers->pointer[OTF_BEGINCOLLOPSNAPSHOT_RECORD] ) { return OTF_RBuffer_readNewline( buffer ); } originaltime= OTF_RBuffer_readUint64( buffer ); /** check if the token matches with the format of the record */ if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_COLLECTIVE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_COLLECTIVE ) ) { collOp = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matches with the format of the record */ if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_HANDLEID ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_HANDLEID ) ) { matchingId = OTF_RBuffer_readUint64( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matches with the format of the record */ if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_GROUP ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_GROUP ) ) { procGroup = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matches with the format of the record */ if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_ROOT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_ROOT ) ) { rootProc = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matches with the format of the record */ if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SENT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SENT ) ) { sent = OTF_RBuffer_readUint64( buffer ); } else { PARSE_ERROR( buffer ); return 0; } /** check if the token matches with the format of the record */ if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_RECVD ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_RECVD ) ) { received = OTF_RBuffer_readUint64( buffer ); } else { PARSE_ERROR( buffer ); return 0; } if( buffer->buffer[buffer->pos] == '\n' ) { scltoken = 0; } else { /** check if the token matches with the format of the record */ if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SCL ) ) { scltoken = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } } if( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_BeginCollopSnapshot*) handlers->pointer[OTF_BEGINCOLLOPSNAPSHOT_RECORD] ) ( handlers->firsthandlerarg[OTF_BEGINCOLLOPSNAPSHOT_RECORD], buffer->time, originaltime, buffer->process, collOp, matchingId, procGroup, rootProc, sent, received, scltoken, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readBeginFileOpSnapshot( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint64_t originaltime; uint64_t matchingId; uint32_t scltoken; if( handlers->pointer[OTF_BEGINFILEOPSNAPSHOT_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } originaltime = OTF_RBuffer_readUint64( buffer ); /** check if the token matches with the format of the record */ if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_MATCHID ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_MATCHID ) ) { matchingId = OTF_RBuffer_readUint64( buffer ); } else { PARSE_ERROR( buffer ); return 0; } if( buffer->buffer[buffer->pos] == '\n' ) { scltoken = 0; } else { if( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SCL ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SCL ) ) { scltoken = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } } if( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_BeginFileOpSnapshot*) handlers->pointer[OTF_BEGINFILEOPSNAPSHOT_RECORD] ) ( handlers->firsthandlerarg[OTF_BEGINFILEOPSNAPSHOT_RECORD], buffer->time, originaltime, buffer->process, matchingId, scltoken, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readCollopCountSnapshot( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint32_t communicator; uint64_t count; if ( handlers->pointer[OTF_COLLOPCOUNTSNAPSHOT_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } communicator = OTF_RBuffer_readUint32( buffer ); if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_COUNT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_COUNT ) ) { count = OTF_RBuffer_readUint64( buffer ); } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_CollopCountSnapshot*) handlers->pointer[OTF_COLLOPCOUNTSNAPSHOT_RECORD] ) ( handlers->firsthandlerarg[OTF_COLLOPCOUNTSNAPSHOT_RECORD], buffer->time, buffer->process, communicator, count, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readCounterSnapshot( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint64_t originaltime; uint32_t counter; uint64_t value; if ( handlers->pointer[OTF_COUNTERSNAPSHOT_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } originaltime = OTF_RBuffer_readUint64( buffer ); if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_COUNTER ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_COUNTER ) ) { counter = OTF_RBuffer_readUint32( buffer ); } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_VALUE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_VALUE ) ) { value = OTF_RBuffer_readUint64( buffer ); } else { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return OTF_RETURN_OK /*0*/ == ( (OTF_Handler_CounterSnapshot*) handlers->pointer[OTF_COUNTERSNAPSHOT_RECORD] )( handlers->firsthandlerarg[OTF_COUNTERSNAPSHOT_RECORD], buffer->time, originaltime, buffer->process, counter, value, buffer->list ); } else { PARSE_ERROR( buffer ); return 0; } } /* *** Summary records *** ****************************************** */ int OTF_Reader_readSummaryComment( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { const char* comment; if ( handlers->pointer[OTF_SUMMARYCOMMENT_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } comment = OTF_RBuffer_readString( buffer ); if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_SummaryComment*) handlers->pointer[OTF_SUMMARYCOMMENT_RECORD] ) ( handlers->firsthandlerarg[OTF_SUMMARYCOMMENT_RECORD], buffer->time, buffer->process, comment, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readFunctionSummary( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { int ret= 1; uint32_t function; uint64_t count; uint64_t excltime; uint64_t incltime; if ( NULL == handlers->pointer[OTF_FUNCTIONSUMMARY_RECORD] ) { return OTF_RBuffer_readNewline( buffer ); } /* read data items */ /* tested outside: ret= ret && OTF_RBuffer_testKeyword( buffer, "SUMF" ); */ function= OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_COUNT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_COUNT ) || OTF_RBuffer_testKeyword( buffer, "C" )/*deprecated keyword*/); count= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_EXCLTIME) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_EXCLTIME) ); excltime= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_INCLTIME) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_INCLTIME) ); incltime= OTF_RBuffer_readUint64( buffer ); ret= ret && OTF_RBuffer_readNewline( buffer ); if ( ret ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_FunctionSummary*) handlers->pointer[OTF_FUNCTIONSUMMARY_RECORD] ) ( handlers->firsthandlerarg[OTF_FUNCTIONSUMMARY_RECORD], buffer->time, function, buffer->process, count, excltime, incltime, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readFunctionGroupSummary( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { int ret= 1; uint32_t functiongroup; uint64_t count; uint64_t excltime; uint64_t incltime; if ( NULL == handlers->pointer[OTF_FUNCTIONGROUPSUMMARY_RECORD] ) { return OTF_RBuffer_readNewline( buffer ); } /* read data items */ /* tested outside: ret= ret && OTF_RBuffer_testKeyword( buffer, "SUMG" ); */ functiongroup= OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_COUNT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_COUNT ) || OTF_RBuffer_testKeyword( buffer, "C" )/*deprecated keyword*/); count= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_EXCLTIME) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_EXCLTIME) ); excltime= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_INCLTIME) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_INCLTIME) ); incltime= OTF_RBuffer_readUint64( buffer ); ret= ret && OTF_RBuffer_readNewline( buffer ); if ( ret ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_FunctionGroupSummary*) handlers->pointer[OTF_FUNCTIONGROUPSUMMARY_RECORD] ) ( handlers->firsthandlerarg[OTF_FUNCTIONGROUPSUMMARY_RECORD], buffer->time, functiongroup, buffer->process, count, excltime, incltime, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readMessageSummary( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { int ret= 1; uint32_t peer; uint32_t comm; uint32_t tag; uint64_t number_sent; uint64_t number_recvd; uint64_t bytes_sent; uint64_t bytes_recved; if ( NULL == handlers->pointer[OTF_MESSAGESUMMARY_RECORD] ) { return OTF_RBuffer_readNewline( buffer ); } /* read data items */ /* tested outside: OTF_RBuffer_testKeyword( buffer, "SUMM" ); */ peer= OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_COMMUNICATOR ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_COMMUNICATOR)); comm= OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_TAG ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_TAG ) || OTF_RBuffer_testKeyword( buffer, "A" ) ); tag= OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERSENT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NUMBERSENT ) ); number_sent= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERRECVD ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NUMBERRECVD ) ); number_recvd= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SENT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SENT ) ); bytes_sent= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_RECVD ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_RECVD ) ); bytes_recved= OTF_RBuffer_readUint64( buffer ); ret= ret && OTF_RBuffer_readNewline( buffer ); if ( ret ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_MessageSummary*) handlers->pointer[OTF_MESSAGESUMMARY_RECORD] ) ( handlers->firsthandlerarg[OTF_MESSAGESUMMARY_RECORD], buffer->time, buffer->process, peer, comm, tag, number_sent, number_recvd, bytes_sent, bytes_recved, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readCollopSummary( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { int ret= 1; uint32_t comm; uint32_t collective; uint64_t number_sent; uint64_t number_recved; uint64_t bytes_sent; uint64_t bytes_recved; if ( NULL == handlers->pointer[OTF_COLLOPSUMMARY_RECORD] ) { return OTF_RBuffer_readNewline( buffer ); } /* read data items */ /* tested outside: OTF_RBuffer_testKeyword( buffer, "SUMM" ); */ comm = OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_COLLECTIVE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_COLLECTIVE ) ); collective = OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERSENT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NUMBERSENT ) ); number_sent= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERRECVD ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NUMBERRECVD ) ); number_recved= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_SENT ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_SENT ) ); bytes_sent= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_RECVD ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_RECVD ) ); bytes_recved= OTF_RBuffer_readUint64( buffer ); ret= ret && OTF_RBuffer_readNewline( buffer ); if ( ret ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_CollopSummary*) handlers->pointer[OTF_COLLOPSUMMARY_RECORD] ) ( handlers->firsthandlerarg[OTF_COLLOPSUMMARY_RECORD], buffer->time, buffer->process, comm, collective, number_sent, number_recved, bytes_sent, bytes_recved, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readFileOperationSummary( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint32_t ret= 1; uint32_t fileid; uint64_t nopen; uint64_t nclose; uint64_t nread; uint64_t nwrite; uint64_t nseek; uint64_t bytesread; uint64_t byteswrite; if ( NULL == handlers->pointer[OTF_FILEOPERATIONSUMMARY_RECORD] ) { return OTF_RBuffer_readNewline( buffer ); } /* read data items */ fileid= OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBEROPEN ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NUMBEROPEN ) ); nopen= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERCLOSE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NUMBERCLOSE ) ); nclose= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERREAD) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NUMBERREAD) ); nread= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERWRITE) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NUMBERWRITE) ); nwrite= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERSEEK ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NUMBERSEEK ) ); nseek= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_BYTESREAD) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_BYTESREAD) ); bytesread= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_BYTESWRITE) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_BYTESWRITE) ); byteswrite= OTF_RBuffer_readUint64( buffer ); ret= ret && OTF_RBuffer_readNewline( buffer ); if ( ret ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_FileOperationSummary*) handlers->pointer[OTF_FILEOPERATIONSUMMARY_RECORD] ) ( handlers->firsthandlerarg[OTF_FILEOPERATIONSUMMARY_RECORD], buffer->time, fileid, buffer->process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readFileGroupOperationSummary( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint32_t ret= 1; uint32_t groupid; uint64_t nopen; uint64_t nclose; uint64_t nread; uint64_t nwrite; uint64_t nseek; uint64_t bytesread; uint64_t byteswrite; if ( NULL == handlers->pointer[OTF_FILEGROUPOPERATIONSUMMARY_RECORD] ) { return OTF_RBuffer_readNewline( buffer ); } /* read data items */ groupid= OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBEROPEN ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NUMBEROPEN ) ); nopen= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERCLOSE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NUMBERCLOSE ) ); nclose= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERREAD) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NUMBERREAD) ); nread= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERWRITE) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NUMBERWRITE) ); nwrite= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NUMBERSEEK ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NUMBERSEEK ) ); nseek= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_BYTESREAD) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_BYTESREAD) ); bytesread= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_BYTESWRITE) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_BYTESWRITE) ); byteswrite= OTF_RBuffer_readUint64( buffer ); ret= ret && OTF_RBuffer_readNewline( buffer ); if ( ret ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_FileGroupOperationSummary*) handlers->pointer[OTF_FILEGROUPOPERATIONSUMMARY_RECORD] ) ( handlers->firsthandlerarg[OTF_FILEGROUPOPERATIONSUMMARY_RECORD], buffer->time, groupid, buffer->process, nopen, nclose, nread, nwrite, nseek, bytesread, byteswrite, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } /* *** Marker records *** ******************************************* */ int OTF_Reader_readDefMarker( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { uint32_t ret= 1; uint32_t token; const char* name; uint32_t type; if ( handlers->pointer[OTF_DEFMARKER_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } token = OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_NAME ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_NAME ) ); name= OTF_RBuffer_readString( buffer ); if ( name == NULL ) { PARSE_ERROR( buffer ); return 0; } ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_TYPE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_TYPE ) ); type = OTF_RBuffer_readUint32( buffer ); if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_DefMarker*) handlers->pointer[OTF_DEFMARKER_RECORD] ) ( handlers->firsthandlerarg[OTF_DEFMARKER_RECORD], streamid, token, name, type, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } int OTF_Reader_readMarkerSpot( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { uint32_t ret= 1; uint32_t token; uint64_t time; uint32_t process; const char* text; if ( handlers->pointer[OTF_MARKER_RECORD] == NULL ) { return OTF_RBuffer_readNewline( buffer ); } token= OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_TIME ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_TIME ) ); time= OTF_RBuffer_readUint64( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_PROCESS ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_PROCESS ) ); process= OTF_RBuffer_readUint32( buffer ); ret= ret && ( OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_S_LOCAL_VALUE ) || OTF_RBuffer_testKeyword( buffer, OTF_KEYWORD_L_LOCAL_VALUE ) ); text= OTF_RBuffer_readString( buffer ); if ( text == NULL ) { PARSE_ERROR( buffer ); return 0; } if ( OTF_RBuffer_readNewline( buffer ) ) { /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ return ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_Marker*) handlers->pointer[OTF_MARKER_RECORD] ) ( handlers->firsthandlerarg[OTF_MARKER_RECORD], time, process, token, text, buffer->list ) ) ); } else { PARSE_ERROR( buffer ); return 0; } } /* *** unknown records *** ****************************************** */ int OTF_Reader_readUnknownRecord( OTF_RBuffer* buffer, OTF_HandlerArray* handlers ) { int ret; char *string; if ( NULL == handlers->pointer[OTF_UNKNOWN_RECORD] ) { return OTF_RBuffer_readNewline( buffer ); } string= OTF_RBuffer_printRecord( buffer ); /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ ret= ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_UnknownRecord*) handlers->pointer[OTF_UNKNOWN_RECORD] ) ( handlers->firsthandlerarg[OTF_UNKNOWN_RECORD], buffer->time, buffer->process, string ) ) ); free( string ); string= NULL; /* don't check if newline is actually there because this could be the very parse error */ OTF_RBuffer_readNewline( buffer ); return ret; } int OTF_Reader_readUnknownDefRecord( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { int ret; char *string; if ( NULL == handlers->pointer[OTF_UNKNOWN_RECORD] ) { return OTF_RBuffer_readNewline( buffer ); } string= OTF_RBuffer_printRecord( buffer ); /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ ret= ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_UnknownRecord*) handlers->pointer[OTF_UNKNOWN_RECORD]) ( handlers->firsthandlerarg[OTF_UNKNOWN_RECORD], (uint64_t) -1, streamid, string ) ) ); free( string ); string= NULL; /* don't check if newline is actually there because this could be the very parse error */ OTF_RBuffer_readNewline( buffer ); return ret; } int OTF_Reader_readUnknownMarkerRecord( OTF_RBuffer* buffer, OTF_HandlerArray* handlers, uint32_t streamid ) { int ret; char *string; if ( NULL == handlers->pointer[OTF_UNKNOWN_RECORD] ) { return OTF_RBuffer_readNewline( buffer ); } string= OTF_RBuffer_printRecord( buffer ); /* 0 is considered as the non-error return value of call-back handlers, but the current function returns 0 on errors! */ ret= ( OTF_RETURN_OK /*0*/ == ( ( (OTF_Handler_UnknownRecord*) handlers->pointer[OTF_UNKNOWN_RECORD]) ( handlers->firsthandlerarg[OTF_UNKNOWN_RECORD], (uint64_t) 0, streamid, string ) ) ); free( string ); string= NULL; /* don't check if newline is actually there because this could be the very parse error */ OTF_RBuffer_readNewline( buffer ); return ret; } eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_RBuffer.h0000644000000000000000000000013212544237152022456 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.243377663 30 ctime=1508162366.189772503 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_RBuffer.h0000644000175000017500000002176112544237152023654 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_RBuffer.h * * @brief Provides read access to trace buffers. * * \ingroup internal */ #ifndef OTF_RBUFFER_H #define OTF_RBUFFER_H #include #include #include "OTF_inttypes.h" #include "OTF_File.h" #include "OTF_KeyValue.h" /* *** some macros *** ****************************************** */ #define PARSE_ERROR( buffer ) { \ char* record = OTF_RBuffer_printRecord( buffer ); \ if ( NULL != record ) { \ OTF_Error( "Parse error in function %s, file: %s, line: %i:\n %s\n", \ __FUNCTION__, __FILE__, __LINE__, record ); \ free( record ); \ } \ } #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct struct_OTF_RBuffer { OTF_File* file; /** actual buffer */ char* buffer; /** Current read position in buffer. 'end <= pos' indicates an invalid state! */ uint32_t pos; /** Current end of data in buffer in case it is not full. 'end <= pos' indicates an invalid state! */ uint32_t end; /** Last '\n' in the buffer. */ uint32_t lastnewline; /** Current size of buffer. */ uint32_t size; /** If 'OTF_RBuffer_jump()' is called only 'jumpsize' bytes are read into buffer. */ uint32_t jumpsize; /** Array which hold the members of a DEFPROCESSGROUP record or the list of attributes of a DEFATTRLIST record. */ uint32_t* array; /** Current size of array. */ uint32_t arraysize; /** Current time inside this stream, necessary for state machine, (-1) means unknown. */ uint64_t time; /** Current process inside this stream, necessary for state machine, (-1) means unknown. */ uint32_t process; /** Total size of the file in bytes. This is used in searchTime(). A value of (-1) means unknown. Determined by internal function OTF_RBuffer_getFileProperties(). */ uint64_t filesize; /** The very first timestamp of that stream. This is used in searchTime(). A value of (-1) means unknown. Determined by internal function OTF_RBuffer_getFileProperties(). */ uint64_t firstTime; /** The very last timestamp of that stream. This is used in searchTime(). A value of (-1) means unknown. Determined by internal function OTF_RBuffer_getFileProperties(). */ uint64_t lastTime; OTF_KeyValueList* list; #ifdef HAVE_ZLIB /** Default size of zbuffers managed by this buffer. */ uint32_t zbuffersize; #endif /* HAVE_ZLIB */ }; typedef struct struct_OTF_RBuffer OTF_RBuffer; /** constructor - internal use only */ OTF_RBuffer* OTF_RBuffer_open( const char* filename, OTF_FileManager* manager ); /** constructor - internal use only -- special version with a memory buffer to read from instead of an input file, either compressed or uncompressed */ OTF_RBuffer* OTF_RBuffer_open_with_external_buffer( uint32_t len, const char* buffer, uint8_t is_compressed ); /** destructor - internal use only */ int OTF_RBuffer_close( OTF_RBuffer* rbuffer ); /** Set buffer size. Cannot shrink buffer but only extend. */ int OTF_RBuffer_setSize( OTF_RBuffer* rbuffer, size_t size ); /** Set zbuffer size. */ void OTF_RBuffer_setZBufferSize( OTF_RBuffer* rbuffer, uint32_t size ); /** Set 'jumpsize'. Return 0 if 'size' is greater than the buffer size. */ int OTF_RBuffer_setJumpSize( OTF_RBuffer* rbuffer, size_t size ); /** Make the next record availabe from the buffer. Return the pointer to the record string which is terminated by '\n' not '\0' ! This funktion must be called before any record access. It ensures the record is available completely in the buffer. Furthermore, time and process information is kept track of. It is recommended to use the 'OTF_RBuffer_readXXX()' functions below to read record components instead of parsing manually. In any case, after reading 'OTF_RBuffer_readNewline()' needs to be called which proceeds to the next record begin no matter if there are still characters from the current record present or not. */ char* OTF_RBuffer_getRecord( OTF_RBuffer* rbuffer ); /** Ask the buffer to guarantee at least one complete record at the current read position inside the buffer. This means one line, e.g. '\n' character. If no complete record is found the buffer has to be advanced by reading new contents from file. Return 1 on success, 0 means the file is exceeded. */ int OTF_RBuffer_guaranteeRecord( OTF_RBuffer* rbuffer ); /** Print the record at the current buffer position, i.e. until the next newline character. This is for debugging purposes only and won't modify the buffer in any way. */ char *OTF_RBuffer_printRecord( OTF_RBuffer* rbuffer ); /** Jump to the given file position and restore buffer and references as if the buffer had reached the position by advancing through the file linearly. In particular, find the next record start, then find next timestamp and process specification in order to set 'time' and 'process' to true values. Return error code 1 on success. Otherwise the file is not that large or there are no appropriate time and process specifications on the tail of the file. Then the buffer contents is undefined */ int OTF_RBuffer_jump( OTF_RBuffer* rbuffer, uint64_t filepos ); /** Read an 64bit unsigned integer in hex format from buffer and return it. */ uint64_t OTF_RBuffer_readUint64( OTF_RBuffer* rbuffer ); /** Read an unsigned integer in hex format from buffer and return it. */ uint32_t OTF_RBuffer_readUint32( OTF_RBuffer* rbuffer ); /** Read a string from buffer and return it. */ const char* OTF_RBuffer_readString( OTF_RBuffer* rbuffer ); /** Read an array from buffer and return the number of elements. (re)malloc memory for *array internally, needs to be freed by caller */ uint32_t OTF_RBuffer_readArray( OTF_RBuffer* rbuffer, uint32_t** array, uint32_t* size ); /** Test if the next character equals the given one (leading spaces are ignored). If the right character is found return 1, and advance by 1 step. If the character was not found, keep the buffer position such that the test can be repeated with another character. */ int OTF_RBuffer_testChar( OTF_RBuffer* rbuffer, char c ); /** Test if the next string equals the given one (leading spaces are ignored). The next character must not be an uppercase letter as used in keywords. If the right string is found return 1, and advance the buffer position. If the string was not found, keep the buffer position such that the test can be repeated with another string. */ int OTF_RBuffer_testKeyword( OTF_RBuffer* rbuffer, const char* string ); /** Test if the next string equals the given one (leading spaces are ignored). This version is similar to the above function but does not test the following character, i.e. it can be used to test for prefixes. If the right string is found return 1, and advance the buffer position. If the string was not found, keep the buffer position such that the test can be repeated with another string. */ int OTF_RBuffer_testPrefix( OTF_RBuffer* rbuffer, const char* string ); /** Read a newline such that the buffer pos is at the next record beginning. Skip all characters found, assume they are to be ignored. Return 1 on success, 0 on error. */ int OTF_RBuffer_readNewline( OTF_RBuffer* rbuffer ); /** Advance the buffer position while there are spaces. */ void OTF_RBuffer_skipSpaces( OTF_RBuffer* rbuffer ); /** Advance the buffer position while there are capital letters. */ void OTF_RBuffer_skipKeyword( OTF_RBuffer* rbuffer ); /** Return the current time of the buffer. */ uint64_t OTF_RBuffer_getCurrentTime( OTF_RBuffer* rbuffer ); /** Set the current time of the buffer to the given one. */ void OTF_RBuffer_setCurrentTime( OTF_RBuffer* rbuffer, uint64_t time ); /** Return the current process of the buffer. */ uint32_t OTF_RBuffer_getCurrentProcess( OTF_RBuffer* rbuffer ); /** Set the current process of the buffer to the given one. */ void OTF_RBuffer_setCurrentProcess( OTF_RBuffer* rbuffer, uint32_t process ); /** Search the buffer for the given time and set the buffer position to the next record after that time. Return 1 on success, 0 on error. */ int OTF_RBuffer_searchTime( OTF_RBuffer* rbuffer, uint64_t time ); /** Determine buffers filesize, firstTime and lastTime if not already set. Return 1 on success, 0 on error. */ int OTF_RBuffer_getFileProperties( OTF_RBuffer* rbuffer ); /** Returns the filesize of the file attached to this buffer */ uint64_t OTF_RBuffer_getFileSize( OTF_RBuffer* rbuffer ); /** Returns the fileposition of the file attached to this buffer */ uint64_t OTF_RBuffer_getFilePos( OTF_RBuffer* rbuffer ); /** Read a byte array in hex format from buffer and return the number of bytes read (=lenght of array). If the return value is greater than max_len, there is more to read (this indicates an error in some cases!). */ uint32_t OTF_RBuffer_readBytes( OTF_RBuffer* rbuffer, uint8_t *array, uint32_t max_len ); /** Read a KeyValueList from the buffer. Return 1 on success, 0 on error */ uint32_t OTF_RBuffer_readKeyValueList(OTF_RBuffer* buffer ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTF_RBUFFER_H */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_Filenames.h0000644000000000000000000000013212544237152023026 xustar0030 mtime=1435582058.535899952 30 atime=1508138854.235377463 30 ctime=1508162366.185772154 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_Filenames.h0000644000175000017500000000374312544237152024224 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_Filenames.h * * @brief Handles file naming issues. * * \ingroup internal */ #ifndef OTF_FILENAMES #define OTF_FILENAMES #include "OTF_inttypes.h" #include "OTF_Definitions.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /*#define OTF_FILETYPE_MASTER 0 #define OTF_FILETYPE_GLOBAL_DEF 1 #define OTF_FILETYPE_DEF 2 #define OTF_FILETYPE_EVENT 3 #define OTF_FILETYPE_SNAPS 4 #define OTF_FILETYPE_STATS 5*/ #define OTF_FILETYPE_MASTER 16 #define OTF_FILETYPE_GLOBAL_DEF 32 #define OTF_FILETYPE_DEF 64 #define OTF_FILETYPE_EVENT 128 #define OTF_FILETYPE_SNAPS 256 #define OTF_FILETYPE_STATS 512 #define OTF_FILETYPE_MARKER 1024 #define OTF_FILETYPE_IOFSL_ALL 2048 #define OTF_FILETYPE_IOFSL_IDX 4096 #define OTF_FILETYPE_BITS (16+32+64+128+256+512+1024) typedef uint32_t OTF_FileType; /* zlevel has to be 0-9 */ #define OTF_FILECOMPRESSION_UNCOMPRESSED 0 /* default compression level */ #define OTF_FILECOMPRESSION_COMPRESSED 4 #define OTF_FILECOMPRESSION_BITS (1+2+4+8) typedef uint32_t OTF_FileCompression; /** provide a name stub, a stream id and the type of file. the function will create the proper filename in 'ret'. ret may be pre-allocated with length 'l' or NULL with 'l=0'. in the latter case memory is allocated via malloc internally but has to be freed later on. on success the resulting string is returned, return NULL indicates an error. */ char* OTF_getFilename( const char* namestub, uint32_t id, OTF_FileType type, unsigned int l, char* ret ); /** strip the a filename from the ".otf" suffix if present */ char* OTF_stripFilename( const char* filename ); /** DEPRICATED Check whether a file exists or not. Return 1 on success. */ int OTF_fileExists( const char* filename ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTF_FILENAMES */ eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/PaxHeaders.7332/OTF_FileManager.h0000644000000000000000000000013212544237152023275 xustar0030 mtime=1435582058.531899952 30 atime=1508138854.215376964 30 ctime=1508162366.185772154 eztrace-1.1-7/extlib/gtg/extlib/otf/otflib/OTF_FileManager.h0000644000175000017500000000727612544237152024500 0ustar00trahaytrahay00000000000000/* This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2013. Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch */ /** * @file OTF_FileManager.h * * @brief Manages file handles. * * i.e. Opens, closes and suspends files, if there are not enough * filehandles available. * * \ingroup fm */ /** * \defgroup fm File Manager Interface * * The file manager schedules an unlimited number OTF_Files to a limited * number of actual open OS files. Therefore all open are registered with * this manager. When a file is requested while no more OS files are * available any of the other files are suspended, i.i. the OS file is * closed. */ #ifndef OTF_FILEMANAGER_H #define OTF_FILEMANAGER_H #include "OTF_inttypes.h" #include "OTF_Definitions.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct struct_OTF_File; typedef struct struct_OTF_File OTF_File; typedef struct struct_OTF_File_iofsl OTF_File_iofsl; struct struct_OTF_FileManager; /** file manager object \ingroup fm */ typedef struct struct_OTF_FileManager OTF_FileManager; /** Generates a new file manager with a maximum number of files that are allowed to be open simultaneously. \ingroup fm */ OTF_FileManager* OTF_FileManager_open( uint32_t number ); /** Closes the file manager \ingroup fm */ void OTF_FileManager_close( OTF_FileManager* m ); /** Returns the number of files currently open. */ uint32_t OTF_FileManager_getCount( OTF_FileManager* m ); /** Returns the numbner of files allowed to be open simultaneously. */ uint32_t OTF_FileManager_getNumber( OTF_FileManager* m ); /** Sets the number of files allowed to be open simultaneously. */ uint32_t OTF_FileManager_setNumber( OTF_FileManager* m, uint32_t number ); /** Ensure there is a free file handle available after this call. return 1 on success, 0 otherwise (which is not supposed to happen) */ int OTF_FileManager_guaranteeFile( OTF_FileManager* m ); /** Registers the 'file' as open. Return 1 on success, 0 otherwise. */ int OTF_FileManager_registerFile( OTF_FileManager* m, OTF_File* file ); /** Marks currently opened 'file' as used which is important for the scheduling strategy, i.e. the internal decision which file to suspend next. return 1 on success or 0 for an suspended file. */ int OTF_FileManager_touchFile( OTF_FileManager* m, OTF_File* file ); /** Suspend an open file explicitly. this may be called externaly or internally. Return 1 on success, 0 otherwise. */ int OTF_FileManager_suspendFile( OTF_FileManager* m, OTF_File* file ); /** * @param enabled - enable or disable iofsl * @param server_num - number of servers used * @param server_list - comma separated string containing the actual server adresses, only used by writing * @param mode - enum, either OTF_IOFSL_MULTIFILE or OTF_IOFSL_MULTIFILE_SPLIT * @param flags - e.g. nonblocking * @param index_buffer_length - length of the index buffer (16 byte entries) * @param streamid_bits - magic bitmask that is used to filter out process id from a stream id * @return 1 on success, 0 on failure */ int OTF_FileManager_setIofsl( OTF_FileManager *m, uint32_t server_num, char **server_list, OTF_IofslMode mode, uint32_t flags, uint32_t index_buffer_length, uint32_t streamid_bits ); /** * similar to @OTF_FileManager_setIofsl, but with reference parameters * return 1 if enabled, 0 if disabled */ int OTF_FileManager_getIofsl( OTF_FileManager *m, uint32_t *server_num, char ***server_list, OTF_IofslMode *mode, uint32_t *flags, uint32_t *index_buffer_length, uint32_t *streamid_bits ); /** * Check if iofsl is enabled on this filemanager */ int OTF_FileManager_isIofsl( OTF_FileManager *m ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OTF_FILEMANAGER_H */ eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/COPYING0000644000000000000000000000013212544237152015737 xustar0030 mtime=1435582058.511899952 30 atime=1507797543.986894119 30 ctime=1508162365.961752604 eztrace-1.1-7/extlib/gtg/COPYING0000644000175000017500000000267012544237152017133 0ustar00trahaytrahay00000000000000Copyright CNRS, INRIA, Universit Bordeaux 1. This software is governed by the CeCILL-C license under French law and abiding by the rules of distribution of free software. You can use, modify and/ or redistribute the software under the terms of the CeCILL-C license as circulated by CEA, CNRS and INRIA at the following URL "http://www.cecill.info". As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license, users are provided only with a limited warranty and the software's author, the holder of the economic rights, and the successive licensors have only limited liability. In this respect, the user's attention is drawn to the risks associated with loading, using, modifying and/or developing or reproducing the software by the user in light of its specific status of free software, that may mean that it is complicated to manipulate, and that also therefore means that it is reserved for developers and experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the software's suitability as regards their requirements in conditions enabling the security of their systems and/or data to be ensured and, more generally, to use and operate it in the same conditions as regards security. The fact that you are presently reading this means that you have had knowledge of the CeCILL-C license and that you accept its terms. eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/exm0000644000000000000000000000013213171135476015423 xustar0030 mtime=1508162366.005756442 30 atime=1508162367.741908015 30 ctime=1508162366.005756442 eztrace-1.1-7/extlib/gtg/exm/0000755000175000017500000000000013171135476016667 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/gtg/exm/PaxHeaders.7332/paje_example2.c0000644000000000000000000000013212544237152020355 xustar0030 mtime=1435582058.523899952 30 atime=1507797543.986894119 30 ctime=1508162365.993755395 eztrace-1.1-7/extlib/gtg/exm/paje_example2.c0000644000175000017500000001161712544237152021552 0ustar00trahaytrahay00000000000000/* * Small example to generate a trace in the Paje format * Author Kevin Coulomb */ #include #include #include #include #include /* Size of the buffer used */ #define TXTSIZE 200 /* Small function to clean the buffer */ void clear (char* buf, int size){ int i; for (i=0;i #include #include #include /* Size of the buffer used */ #define TXTSIZE 200 /* Small function to clean the buffer */ void clear (char* buf, int size){ int i; for (i=0;i use gtg_f implicit none real (8) :: time real (8) :: val integer :: ierr integer :: buf = 0 !! Init call setTraceType_f (PAJE, buf) call initTrace_f ("fpaje", ierr) !! Creating proc types call addContType_f ("CT_NET", "0", "Network", ierr) call addContType_f ("CT_NODE", "CT_NET", "Node", ierr) call addContType_f ("CT_PROC", "CT_NODE", "Proc", ierr) !! Creating state types call addStateType_f ("ST_NodeState", "CT_NODE", "Node state", ierr) call addStateType_f ("ST_ProcState", "CT_PROC", "Procstate", ierr) !! Creating Entity value types call addEntityValue_f ("SN_0", "ST_NodeState", "Sleep", P_RED, ierr) call addEntityValue_f ("SN_1", "ST_NodeState", "WaitLocal",& & P_BLUE, ierr) call addEntityValue_f ("SN_2", "ST_NodeState", "WaitDistant", & & P_GREEN, ierr) call addEntityValue_f ("SP_3", "ST_ProcState", "Produit", P_DARKPINK,& & ierr) call addEntityValue_f ("SP_4", "ST_ProcState", "Somme", P_BROWN, ierr) call addEntityValue_f ("SP_5", "ST_ProcState", "Difference",& & P_ORANGE, ierr) !! Creating link types call addLinkType_f ("L_0", "Fanin", "CT_NET", "CT_PROC", "CT_PROC", & & ierr) call addLinkType_f ("L_1", "Bloc", "CT_NET", "CT_PROC", "CT_PROC", & & ierr) !! Creating var type call addVarType_f ("V_Mem", "Memoire", "CT_NODE", ierr) !! Creating event types call addEventType_f ("E_0", "CT_PROC", "Lapin", ierr) call addEventType_f ("E_1", "CT_PROC", "Chocolat", ierr) time = 0.000000000000 !! Adding containers call addContainer_f (time, "C_Net0", "CT_NET", "0", "Ensemble0", "0",& & ierr) call addContainer_f (time, "C_N0", "CT_NODE", "C_Net0", "Node0", "0",& & ierr) call addContainer_f (time, "C_P0", "CT_PROC", "C_N0", "Proc0", "0", & & ierr) call addContainer_f (time, "C_P1", "CT_PROC", "C_N0", "Proc1", "0", & & ierr) call addContainer_f (time, "C_P2", "CT_PROC", "C_N0", "Proc2", "0", & & ierr) call addContainer_f (time, "C_N1", "CT_NODE", "C_Net0", "Node1", "0",& & ierr) call addContainer_f (time, "C_P3", "CT_PROC", "C_N1", "Proc3", "0", & & ierr) call addContainer_f (time, "C_P4", "CT_PROC", "C_N1", "Proc4", "0", & & ierr) call addContainer_f (time, "C_P5", "CT_PROC", "C_N1", "Proc5", "0", & & ierr) !! Setting var, events states, links on proc/nodes time = 0.0111742 val = 1.0 call setVar_f (time, "V_Mem", "C_N0", val, ierr) time = 0.0211 call setState_f (time, "ST_NodeState", "C_N1", "SN_1", ierr) time = 0.0212742 call setState_f (time, "ST_NodeState", "C_N0", "SN_0", ierr) time = 0.0214742 val = 2.0 call setVar_f (time, "V_Mem", "C_N0", val, ierr) time = 0.0311742 call setState_f (time, "ST_NodeState", "C_N1", "SN_2", ierr) time = 0.0411742 call setState_f (time, "ST_NodeState", "C_N0", "SN_1", ierr) time = 0.0311742 val = 3.0 call setVar_f (time, "V_Mem", "C_N0", val, ierr) time = 0.0411742 val = 1.0 call setVar_f (time, "V_Mem", "C_N1", val, ierr) time = 0.0511742 call setState_f (time, "ST_NodeState", "C_N1", "SN_0", ierr) time = 0.0511742 val = 2.0 call setVar_f (time, "V_Mem", "C_N1", val, ierr) time = 0.0611742 call setState_f (time, "ST_NodeState", "C_N0", "SN_2", ierr) time = 0.0611742 val = 3.0 call setVar_f (time, "V_Mem", "C_N1", val, ierr) time = 0.0151742 call setState_f (time, "ST_ProcState", "C_P0", "SP_3", ierr) time = 0.0161742 call setState_f (time, "ST_ProcState", "C_P1", "SP_3", ierr) time = 0.0161742 call setState_f (time, "ST_ProcState", "C_P0", "SP_5", ierr) time = 0.0171742 call setState_f (time, "ST_ProcState", "C_P3", "SP_5", ierr) time = 0.0171742 call setState_f (time, "ST_ProcState", "C_P4", "SP_3", ierr) time = 0.0181742 call setState_f (time, "ST_ProcState", "C_P5", "SP_4", ierr) time = 0.0181742 call setState_f (time, "ST_ProcState", "C_P2", "SP_3", ierr) time = 0.0191742 call setState_f (time, "ST_ProcState", "C_P3", "SP_4", ierr) time = 0.0191742 call setState_f (time, "ST_ProcState", "C_P1", "SP_4", ierr) time = 0.0111742 call setState_f (time, "ST_ProcState", "C_P0", "SP_3", ierr) time = 0.0111742 call setState_f (time, "ST_ProcState", "C_P0", "SP_3", ierr) time = 0.0211742 call setState_f (time, "ST_ProcState", "C_P5", "SP_4", ierr) time = 0.0211742 call setState_f (time, "ST_ProcState", "C_P4", "SP_5", ierr) time = 0.0311742 call setState_f (time, "ST_ProcState", "C_P3", "SP_5", ierr) time = 0.0311742 call setState_f (time, "ST_ProcState", "C_P2", "SP_5", ierr) time = 0.0411742 call setState_f (time, "ST_ProcState", "C_P0", "SP_3", ierr) time = 0.0411742 call setState_f (time, "ST_ProcState", "C_P1", "SP_3", ierr) time = 0.0511742 call setState_f (time, "ST_ProcState", "C_P1", "SP_4", ierr) time = 0.0511742 call setState_f (time, "ST_ProcState", "C_P2", "SP_4", ierr) time = 0.0611742 call setState_f (time, "ST_ProcState", "C_P0", "SP_3", ierr) time = 0.0611742 call setState_f (time, "ST_ProcState", "C_P3", "SP_3", ierr) time = 0.0711742 call setState_f (time, "ST_ProcState", "C_P0", "SP_4", ierr) time = 0.0711742 call setState_f (time, "ST_ProcState", "C_P5", "SP_5", ierr) time = 0.0811742 call setState_f (time, "ST_ProcState", "C_P4", "SP_5", ierr) time = 0.0811742 call setState_f (time, "ST_ProcState", "C_P2", "SP_4", ierr) time = 0.0911742 call setState_f (time, "ST_ProcState", "C_P0", "SP_3", ierr) time = 0.02 call startLink_f (time, "L_0", "C_Net0", "C_P2", "C_P4", "12", "0", & & ierr) time = 0.03 call startLink_f (time, "L_1", "C_Net0", "C_P4", "C_P2", "13", "1", & & ierr) time = 0.04 call startLink_f (time, "L_0", "C_Net0", "C_P0", "C_P5", "14", "2", & & ierr) time = 0.05 call startLink_f (time, "L_1", "C_Net0", "C_P3", "C_P1", "15", "3", & & ierr) time = 0.03 call endLink_f (time, "L_0", "C_Net0", "C_P2", "C_P4", "12", "0", & & ierr) time = 0.04 call endLink_f (time, "L_1", "C_Net0", "C_P4", "C_P2", "13", "1", & & ierr) time = 0.05 call endLink_f (time, "L_0", "C_Net0", "C_P0", "C_P5", "14", "2", & & ierr) time = 0.06 call endLink_f (time, "L_1", "C_Net0", "C_P3", "C_P1", "15", "3", & & ierr) time = 0.02 call addEvent_f (time, "E_0", "C_P0", "11", ierr) time = 0.05 call addEvent_f (time, "E_0", "C_P2", "10", ierr) time = 0.07 call addEvent_f (time, "E_1", "C_P1", "1", ierr) time = 0.08 call addEvent_f (time, "E_1", "C_P5", "3", ierr) !! Cleaning call endTrace_f (ierr) end program main eztrace-1.1-7/extlib/gtg/exm/PaxHeaders.7332/vite_example.c0000644000000000000000000000013212544237152020323 xustar0030 mtime=1435582058.523899952 30 atime=1507797543.986894119 30 ctime=1508162366.009756791 eztrace-1.1-7/extlib/gtg/exm/vite_example.c0000644000175000017500000001216312544237152021515 0ustar00trahaytrahay00000000000000#include #include #include int main (int argc, char** argv){ int rk; MPI_Init (&argc, &argv); MPI_Comm_rank (MPI_COMM_WORLD, &rk); setTraceType (VITE, BUFF); setComm (MPI_COMM_WORLD); initTrace ("cvite"); if (rk==0){ addContType ("CT_NET", "0", "Network"); addContType ("CT_NODE", "CT_NET", "Node"); addContType ("CT_PROC", "CT_NODE", "Proc"); addStateType ("ST_NodeState", "CT_NODE", "Node state"); addStateType ("ST_ProcState", "CT_PROC", "Procstate"); addEntityValue ("SN_0", "ST_NodeState", "Sleep", "0.5 0.5 0.5"); addEntityValue ("SN_1", "ST_NodeState", "WaitLocal", "0.0 0.5 0.9"); addEntityValue ("SN_2", "ST_NodeState", "WaitDistant", "0.9 0.5 0.0"); addEntityValue ("SP_3", "ST_ProcState", "Produit", "0.5 0.9 0.0"); addEntityValue ("SP_4", "ST_ProcState", "Somme", "0.9 0.9 0.0"); addEntityValue ("SP_5", "ST_ProcState", "Difference", "0.1 0.5 0.4"); addLinkType ("L_0", "Fanin", "CT_NET", "CT_PROC", "CT_PROC"); addLinkType ("L_1", "Bloc", "CT_NET", "CT_PROC", "CT_PROC"); addVarType ("V_Mem", "Memoire", "CT_NODE"); addEventType ("E_0", "CT_PROC", "Lapin"); addEventType ("E_1", "CT_PROC", "Chocolat"); addContainer (0.00000, "C_Net0", "CT_NET", "0", "Ensemble0", "0"); addContainer (0.00000, "C_N0", "CT_NODE", "C_Net0", "Node0", "0"); addContainer (0.00000, "C_N1", "CT_NODE", "C_Net0", "Node1", "0"); addContainer (0.00000, "C_P0", "CT_PROC", "C_N0", "Proc0", "cvite_proc0"); addContainer (0.00000, "C_P1", "CT_PROC", "C_N0", "Proc1", "cvite_proc1"); addContainer (0.00000, "C_P2", "CT_PROC", "C_N0", "Proc2", "cvite_proc2"); addContainer (0.00000, "C_P3", "CT_PROC", "C_N1", "Proc3", "cvite_proc3"); addContainer (0.00000, "C_P4", "CT_PROC", "C_N1", "Proc4", "cvite_proc4"); addContainer (0.00000, "C_P5", "CT_PROC", "C_N1", "Proc5", "cvite_proc5"); } setVar (0.0111742, "V_Mem", "C_N0", 1.0000000); setState (0.01120000, "ST_NodeState", "C_N1", "SN_1"); setState (0.02121000, "ST_NodeState", "C_N0", "SN_0"); setVar (0.0212742, "V_Mem", "C_N0", 2.0000000); setState (0.03122000, "ST_NodeState", "C_N1", "SN_2"); setState (0.04123000, "ST_NodeState", "C_N0", "SN_1"); setVar (0.0313742, "V_Mem", "C_N0", 3.0000000); setVar (0.0414742, "V_Mem", "C_N1", 1.0000000); setState (0.05124000, "ST_NodeState", "C_N1", "SN_0"); setVar (0.0515742, "V_Mem", "C_N1", 2.0000000); setState (0.06124500, "ST_NodeState", "C_N0", "SN_2"); setVar (0.0616742, "V_Mem", "C_N1", 3.0000000); switch (rk){ case 0: setState (0.00130000, "ST_ProcState", "C_P0", "SP_3"); setState (0.00150000, "ST_ProcState", "C_P0", "SP_5"); setState (0.00230000, "ST_ProcState", "C_P0", "SP_3"); setState (0.00330000, "ST_ProcState", "C_P0", "SP_3"); setState (0.00830000, "ST_ProcState", "C_P0", "SP_3"); setState (0.03130000, "ST_ProcState", "C_P0", "SP_3"); setState (0.05130000, "ST_ProcState", "C_P0", "SP_4"); setState (0.09130000, "ST_ProcState", "C_P0", "SP_3"); startLink (0.040000, "L_0", "C_Net0", "C_P0", "C_P5", "14", "2"); endLink (0.050000, "L_0", "C_Net0", "C_P0", "C_P5", "14", "2"); addEvent (0.030000, "E_0", "C_P0", "11"); break; case 1 : setState (0.00140000, "ST_ProcState", "C_P1", "SP_3"); setState (0.00210000, "ST_ProcState", "C_P1", "SP_4"); setState (0.00930000, "ST_ProcState", "C_P1", "SP_3"); setState (0.01030000, "ST_ProcState", "C_P1", "SP_4"); addEvent (0.070000, "E_1", "C_P1", "1"); break; case 3 : setState (0.00160000, "ST_ProcState", "C_P3", "SP_5"); setState (0.00200000, "ST_ProcState", "C_P3", "SP_4"); setState (0.00630000, "ST_ProcState", "C_P3", "SP_5"); setState (0.04130000, "ST_ProcState", "C_P3", "SP_3"); startLink (0.050000, "L_1", "C_Net0", "C_P3", "C_P1", "15", "3"); endLink (0.060000, "L_1", "C_Net0", "C_P3", "C_P1", "15", "3"); break; case 4 : setState (0.00170000, "ST_ProcState", "C_P4", "SP_3"); setState (0.00530000, "ST_ProcState", "C_P4", "SP_5"); setState (0.07130000, "ST_ProcState", "C_P4", "SP_5"); startLink (0.030000, "L_1", "C_Net0", "C_P4", "C_P2", "13", "1"); endLink (0.030000, "L_0", "C_Net0", "C_P2", "C_P4", "12", "0"); break; case 5 : setState (0.00180000, "ST_ProcState", "C_P5", "SP_4"); setState (0.00430000, "ST_ProcState", "C_P5", "SP_4"); setState (0.06130000, "ST_ProcState", "C_P5", "SP_5"); addEvent (0.090000, "E_1", "C_P5", "3"); break; case 2 : setState (0.00190000, "ST_ProcState", "C_P2", "SP_3"); setState (0.00730000, "ST_ProcState", "C_P2", "SP_5"); setState (0.02130000, "ST_ProcState", "C_P2", "SP_4"); setState (0.08130000, "ST_ProcState", "C_P2", "SP_4"); startLink (0.020000, "L_0", "C_Net0", "C_P2", "C_P4", "12", "0"); endLink (0.040000, "L_1", "C_Net0", "C_P4", "C_P2", "13", "1"); addEvent (0.050000, "E_0", "C_P2", "10"); break; default : break; } endTrace (); MPI_Finalize (); return EXIT_SUCCESS; } eztrace-1.1-7/extlib/gtg/exm/PaxHeaders.7332/gtg_color.c0000644000000000000000000000013212544237152017620 xustar0030 mtime=1435582058.523899952 30 atime=1507797543.986894119 30 ctime=1508162365.977753999 eztrace-1.1-7/extlib/gtg/exm/gtg_color.c0000644000175000017500000000453312544237152021014 0ustar00trahaytrahay00000000000000#include #include #include int main (int argc, char** argv){ (void) argc; (void) argv; setTraceType (PAJE); initTrace ("gtg_color", 0, GTG_FLAG_NONE); addContType ("CT_NET", "0", "Network"); addContType ("CT_NODE", "CT_NET", "Node"); addContType ("CT_PROC", "CT_NODE", "Proc"); addStateType ("ST_NodeState", "CT_NODE", "Node state"); addStateType ("ST_ProcState", "CT_PROC", "Procstate"); addEntityValue ("SN_0", "ST_NodeState", "black", GTG_BLACK); addEntityValue ("SN_1", "ST_NodeState", "red", GTG_RED); addEntityValue ("SN_2", "ST_NodeState", "green", GTG_GREEN); addEntityValue ("SN_3", "ST_NodeState", "blue", GTG_BLUE); addEntityValue ("SN_4", "ST_NodeState", "white", GTG_WHITE); addEntityValue ("SN_5", "ST_NodeState", "teal", GTG_TEAL); addEntityValue ("SN_6", "ST_NodeState", "darkgrey", GTG_DARKGREY); addEntityValue ("SN_7", "ST_NodeState", "yellow", GTG_YELLOW); addEntityValue ("SN_8", "ST_NodeState", "purple", GTG_PURPLE); addEntityValue ("SN_9", "ST_NodeState", "lightbrown", GTG_LIGHTBROWN); addEntityValue ("SN_10", "ST_NodeState", "lightgrey", GTG_LIGHTGREY); addEntityValue ("SN_11", "ST_NodeState", "darkblue", GTG_DARKBLUE); addEntityValue ("SN_12", "ST_NodeState", "pink", GTG_PINK); addEntityValue ("SN_13", "ST_NodeState", "darkpink", GTG_DARKPINK); addEntityValue ("SN_14", "ST_NodeState", "seablue", GTG_SEABLUE); addEntityValue ("SN_15", "ST_NodeState", "kaki", GTG_KAKI); addEntityValue ("SN_16", "ST_NodeState", "redblood", GTG_REDBLOOD); addEntityValue ("SN_17", "ST_NodeState", "brown", GTG_BROWN); addEntityValue ("SN_18", "ST_NodeState", "grenat", GTG_GRENAT); addEntityValue ("SN_19", "ST_NodeState", "orange", GTG_ORANGE); addEntityValue ("SN_20", "ST_NodeState", "mauve", GTG_MAUVE); addEntityValue ("SN_21", "ST_NodeState", "lightpink", GTG_LIGHTPINK); addContainer (0.00000, "C_Net0", "CT_NET", "0", "Ensemble0", "0"); addContainer (0.00000, "C_N0", "CT_NODE", "C_Net0", "Node0", "0"); addContainer (0.00000, "C_P0", "CT_PROC", "C_N0", "Proc0", "0"); int i; for(i=0; i<21;i++) { char* nodeState = NULL; asprintf(&nodeState, "SN_%d", i); setState ((float)i, "ST_NodeState", "C_P0", nodeState); free(nodeState); } endTrace (); return EXIT_SUCCESS; } eztrace-1.1-7/extlib/gtg/exm/PaxHeaders.7332/paje_example.c0000644000000000000000000000013212544237152020273 xustar0030 mtime=1435582058.523899952 30 atime=1507797543.986894119 30 ctime=1508162365.997755744 eztrace-1.1-7/extlib/gtg/exm/paje_example.c0000644000175000017500000001117412544237152021466 0ustar00trahaytrahay00000000000000#include #include #include int main (int argc, char** argv){ (void) argc; (void) argv; setTraceType (PAJE); initTrace ("cpaje", 0, GTG_FLAG_NONE); addContType ("CT_NET", "0", "Network"); addContType ("CT_NODE", "CT_NET", "Node"); addContType ("CT_PROC", "CT_NODE", "Proc"); addStateType ("ST_NodeState", "CT_NODE", "Node state"); addStateType ("ST_ProcState", "CT_PROC", "Procstate"); addEntityValue ("SN_0", "ST_NodeState", "Sleep", GTG_LIGHTPINK); addEntityValue ("SN_1", "ST_NodeState", "WaitLocal", GTG_PINK); addEntityValue ("SN_2", "ST_NodeState", "WaitDistant", GTG_BLUE); addEntityValue ("SP_3", "ST_ProcState", "Produit", GTG_ORANGE); addEntityValue ("SP_4", "ST_ProcState", "Somme", GTG_GREEN); addEntityValue ("SP_5", "ST_ProcState", "Difference", GTG_BLACK); addLinkType ("L_0", "Fanin", "CT_NET", "CT_PROC", "CT_PROC"); addLinkType ("L_1", "Bloc", "CT_NET", "CT_PROC", "CT_PROC"); addVarType ("V_Mem", "Memoire", "CT_NODE"); addEventType ("E_0", "CT_PROC", "Lapin"); addEventType ("E_1", "CT_PROC", "Chocolat"); addContainer (0.00000, "C_Net0", "CT_NET", "0", "Ensemble0", "0"); addContainer (0.00000, "C_N0", "CT_NODE", "C_Net0", "Node0", "0"); addContainer (0.00000, "C_P0", "CT_PROC", "C_N0", "Proc0", "0"); addContainer (0.00000, "C_P1", "CT_PROC", "C_N0", "Proc1", "0"); addContainer (0.00000, "C_P2", "CT_PROC", "C_N0", "Proc2", "0"); addContainer (0.00000, "C_N1", "CT_NODE", "C_Net0", "Node1", "0"); addContainer (0.00000, "C_P3", "CT_PROC", "C_N1", "Proc3", "0"); addContainer (0.00000, "C_P4", "CT_PROC", "C_N1", "Proc4", "0"); addContainer (0.00000, "C_P5", "CT_PROC", "C_N1", "Proc5", "0"); setVar (0.0111742, "V_Mem", "C_N0", 1.0000000); setState (0.01120000, "ST_NodeState", "C_N1", "SN_1"); setState (0.02121000, "ST_NodeState", "C_N0", "SN_0"); setVar (0.0212742, "V_Mem", "C_N0", 2.0000000); setState (0.03122000, "ST_NodeState", "C_N1", "SN_2"); setState (0.04123000, "ST_NodeState", "C_N0", "SN_1"); setVar (0.0313742, "V_Mem", "C_N0", 3.0000000); setVar (0.0414742, "V_Mem", "C_N1", 1.0000000); setState (0.05124000, "ST_NodeState", "C_N1", "SN_0"); setVar (0.0515742, "V_Mem", "C_N1", 2.0000000); setState (0.06124500, "ST_NodeState", "C_N0", "SN_2"); setVar (0.0616742, "V_Mem", "C_N1", 3.0000000); setState (0.00130000, "ST_ProcState", "C_P0", "SP_3"); setState (0.00140000, "ST_ProcState", "C_P1", "SP_3"); setState (0.00150000, "ST_ProcState", "C_P0", "SP_5"); setState (0.00160000, "ST_ProcState", "C_P3", "SP_5"); setState (0.00170000, "ST_ProcState", "C_P4", "SP_3"); setState (0.00180000, "ST_ProcState", "C_P5", "SP_4"); setState (0.00190000, "ST_ProcState", "C_P2", "SP_3"); setState (0.00200000, "ST_ProcState", "C_P3", "SP_4"); setState (0.00210000, "ST_ProcState", "C_P1", "SP_4"); setState (0.00230000, "ST_ProcState", "C_P0", "SP_3"); setState (0.00330000, "ST_ProcState", "C_P0", "SP_3"); setState (0.00430000, "ST_ProcState", "C_P5", "SP_4"); setState (0.00530000, "ST_ProcState", "C_P4", "SP_5"); setState (0.00630000, "ST_ProcState", "C_P3", "SP_5"); setState (0.00730000, "ST_ProcState", "C_P2", "SP_5"); setState (0.00830000, "ST_ProcState", "C_P0", "SP_3"); setState (0.00930000, "ST_ProcState", "C_P1", "SP_3"); setState (0.01030000, "ST_ProcState", "C_P1", "SP_4"); setState (0.02130000, "ST_ProcState", "C_P2", "SP_4"); setState (0.03130000, "ST_ProcState", "C_P0", "SP_3"); setState (0.04130000, "ST_ProcState", "C_P3", "SP_3"); setState (0.05130000, "ST_ProcState", "C_P0", "SP_4"); setState (0.06130000, "ST_ProcState", "C_P5", "SP_5"); setState (0.07130000, "ST_ProcState", "C_P4", "SP_2"); setState (0.08130000, "ST_ProcState", "C_P2", "SP_4"); setState (0.09130000, "ST_ProcState", "C_P0", "SP_3"); startLink (0.020000, "L_0", "C_Net0", "C_P2", "C_P4", "12", "0"); startLink (0.030000, "L_1", "C_Net0", "C_P4", "C_P2", "13", "1"); startLink (0.040000, "L_0", "C_Net0", "C_P0", "C_P5", "14", "2"); startLink (0.050000, "L_1", "C_Net0", "C_P3", "C_P1", "15", "3"); endLink (0.030000, "L_0", "C_Net0", "C_P2", "C_P4", "12", "0"); endLink (0.040000, "L_1", "C_Net0", "C_P4", "C_P2", "13", "1"); endLink (0.050000, "L_0", "C_Net0", "C_P0", "C_P5", "14", "2"); endLink (0.060000, "L_1", "C_Net0", "C_P3", "C_P1", "15", "3"); addEvent (0.030000, "E_0", "C_P0", "11"); addEvent (0.050000, "E_0", "C_P2", "10"); addEvent (0.070000, "E_1", "C_P1", "1"); addEvent (0.090000, "E_1", "C_P5", "3"); endTrace (); return EXIT_SUCCESS; } eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/ChangeLog0000644000000000000000000000013212544237152016456 xustar0030 mtime=1435582058.511899952 30 atime=1507797543.986894119 30 ctime=1508162365.965752952 eztrace-1.1-7/extlib/gtg/ChangeLog0000644000175000017500000000036212544237152017646 0ustar00trahaytrahay00000000000000Version 0.2 ----------- * Events can now be recorded out of order * Add an AddComment function (not implemented for OTF files) * Improved Vampir/Triva compatibility * Paje traces can now be compressed Version 0.1 ----------- * First release eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/ltmain.sh0000644000000000000000000000013013171135226016516 xustar0028 mtime=1508162198.4282888 30 atime=1508162281.234588638 30 ctime=1508162365.969753301 eztrace-1.1-7/extlib/gtg/ltmain.sh0000644000175000017500000117147413171135226017726 0ustar00trahaytrahay00000000000000#! /bin/sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2014-01-03.01 # libtool (GNU libtool) 2.4.6 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . PROGRAM=libtool PACKAGE=libtool VERSION="2.4.6 Debian-2.4.6-2" package_revision=2.4.6 ## ------ ## ## Usage. ## ## ------ ## # Run './libtool --help' for help with using this script from the # command line. ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # After configure completes, it has a better idea of some of the # shell tools we need than the defaults used by the functions shared # with bootstrap, so set those here where they can still be over- # ridden by the user, but otherwise take precedence. : ${AUTOCONF="autoconf"} : ${AUTOMAKE="automake"} ## -------------------------- ## ## Source external libraries. ## ## -------------------------- ## # Much of our low-level functionality needs to be sourced from external # libraries, which are installed to $pkgauxdir. # Set a version string for this script. scriptversion=2015-01-20.17; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # Copyright (C) 2004-2015 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. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 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. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNES 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 . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some retarded systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo 'GREP' >> conftest.nl "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s|\([`"$\\]\)|\\\1|g' # Same as above, but do not quote variable references. sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' # Sed substitution that converts a w32 file name or path # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_double_quote_subst, that '$' was protected from # expansion. Since each input '\' is now two '\'s, look for any number # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath=$0 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # We should try to minimise forks, especially on Windows where they are # unreasonably slow, so skip the feature probes when bash or zsh are # being used: if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then : ${_G_HAVE_ARITH_OP="yes"} : ${_G_HAVE_XSI_OPS="yes"} # The += operator was introduced in bash 3.1 case $BASH_VERSION in [12].* | 3.0 | 3.0*) ;; *) : ${_G_HAVE_PLUSEQ_OP="yes"} ;; esac fi # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. test -z "$_G_HAVE_PLUSEQ_OP" \ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ && _G_HAVE_PLUSEQ_OP=yes if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1+=\\ \$func_quote_for_eval_result" }' else func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1=\$$1\\ \$func_quote_for_eval_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT # -------------------------------------------------------- # Perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_mkdir_p_IFS # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # func_normal_abspath PATH # ------------------------ # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` while :; do # Processed it all yet? if test / = "$func_normal_abspath_tpath"; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result"; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=$func_dirname_result if test -z "$func_relative_path_tlibdir"; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_for_eval ARG... # -------------------------- # Aesthetically quote ARGs to be evaled later. # This function returns two values: # i) func_quote_for_eval_result # double-quoted, suitable for a subsequent eval # ii) func_quote_for_eval_unquoted_result # has all characters that are still active within double # quotes backslashified. func_quote_for_eval () { $debug_cmd func_quote_for_eval_unquoted_result= func_quote_for_eval_result= while test 0 -lt $#; do case $1 in *[\\\`\"\$]*) _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; *) _G_unquoted_arg=$1 ;; esac if test -n "$func_quote_for_eval_unquoted_result"; then func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" else func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" fi case $_G_unquoted_arg in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_quoted_arg=\"$_G_unquoted_arg\" ;; *) _G_quoted_arg=$_G_unquoted_arg ;; esac if test -n "$func_quote_for_eval_result"; then func_append func_quote_for_eval_result " $_G_quoted_arg" else func_append func_quote_for_eval_result "$_G_quoted_arg" fi shift done } # func_quote_for_expand ARG # ------------------------- # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { $debug_cmd case $1 in *[\\\`\"]*) _G_arg=`$ECHO "$1" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; *) _G_arg=$1 ;; esac case $_G_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_arg=\"$_G_arg\" ;; esac func_quote_for_expand_result=$_G_arg } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_for_expand "$_G_cmd" eval "func_notquiet $func_quote_for_expand_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_for_expand "$_G_cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_tr_sh # ---------- # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: #! /bin/sh # Set a version string for this script. scriptversion=2014-01-07.03; # UTC # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # Copyright (C) 2010-2015 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. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# warranty; '. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # to the main code. A hook is just a named list of of function, that can # be run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of functions called by FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It is assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook funcions.n" ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do eval $_G_hook '"$@"' # store returned options list back into positional # parameters for next 'cmd' execution. eval _G_hook_result=\$${_G_hook}_result eval set dummy "$_G_hook_result"; shift done func_quote_for_eval ${1+"$@"} func_run_hooks_result=$func_quote_for_eval_result } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list in your hook function, remove any # options that you action, and then pass back the remaining unprocessed # options in '_result', escaped suitably for # 'eval'. Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # func_quote_for_eval ${1+"$@"} # my_options_prep_result=$func_quote_for_eval_result # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # # Note that for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # ;; # *) set dummy "$_G_opt" "$*"; shift; break ;; # esac # done # # func_quote_for_eval ${1+"$@"} # my_silent_option_result=$func_quote_for_eval_result # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # # func_quote_for_eval ${1+"$@"} # my_option_validation_result=$func_quote_for_eval_result # } # func_add_hook func_validate_options my_option_validation # # You'll alse need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd func_options_prep ${1+"$@"} eval func_parse_options \ ${func_options_prep_result+"$func_options_prep_result"} eval func_validate_options \ ${func_parse_options_result+"$func_parse_options_result"} eval func_run_hooks func_options \ ${func_validate_options_result+"$func_validate_options_result"} # save modified positional parameters for caller func_options_result=$func_run_hooks_result } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propogate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before # returning. func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= func_run_hooks func_options_prep ${1+"$@"} # save modified positional parameters for caller func_options_prep_result=$func_run_hooks_result } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd func_parse_options_result= # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. func_run_hooks func_parse_options ${1+"$@"} # Adjust func_parse_options positional parameters to match eval set dummy "$func_run_hooks_result"; shift # Break out of the loop if we already parsed every option. test $# -gt 0 || break _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) test $# = 0 && func_missing_arg $_G_opt && break case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} func_parse_options_result=$func_quote_for_eval_result } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" func_run_hooks func_validate_options ${1+"$@"} # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE # save modified positional parameters for caller func_validate_options_result=$func_run_hooks_result } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables after # splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} test "x$func_split_equals_lhs" = "x$1" \ && func_split_equals_rhs= }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # func_split_short_opt SHORTOPT # ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /(C)/!b go :more /\./!{ N s|\n# | | b more } :go /^# Written by /,/# warranty; / { s|^# || s|^# *$|| s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| p } /^# Written by / { s|^# || p } /^warranty; /q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. scriptversion='(GNU libtool) 2.4.6' # func_echo ARG... # ---------------- # Libtool also displays the current mode in messages, so override # funclib.sh func_echo with this custom definition. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" done IFS=$func_echo_IFS } # func_warning ARG... # ------------------- # Libtool warnings are not categorized, so override funclib.sh # func_warning with this simpler definition. func_warning () { $debug_cmd $warning_func ${1+"$@"} } ## ---------------- ## ## Options parsing. ## ## ---------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --mode=MODE use operation mode MODE --no-warnings equivalent to '-Wnone' --preserve-dup-deps don't remove duplicate dependency libraries --quiet, --silent don't print informational messages --tag=TAG use configuration variables from tag TAG -v, --verbose print more informational messages than default --version print version information -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. When passed as first option, '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. Try '$progname --help --mode=MODE' for a more detailed description of MODE. When reporting a bug, please describe a test case to reproduce it and include the following information: host-triplet: $host shell: $SHELL compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) version: $progname $scriptversion Debian-2.4.6-2 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . GNU libtool home page: . General help using GNU software: ." exit 0 } # func_lo2o OBJECT-NAME # --------------------- # Transform OBJECT-NAME from a '.lo' suffix to the platform specific # object suffix. lo2o=s/\\.lo\$/.$objext/ o2lo=s/\\.$objext\$/.lo/ if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_lo2o () { case $1 in *.lo) func_lo2o_result=${1%.lo}.$objext ;; * ) func_lo2o_result=$1 ;; esac }' # func_xform LIBOBJ-OR-SOURCE # --------------------------- # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) # suffix to a '.lo' libtool-object suffix. eval 'func_xform () { func_xform_result=${1%.*}.lo }' else # ...otherwise fall back to using sed. func_lo2o () { func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` } func_xform () { func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` } fi # func_fatal_configuration ARG... # ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func__fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } # func_config # ----------- # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # ------------- # Display the features supported by this script. func_features () { echo "host: $host" if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag TAGNAME # ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname=$1 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf=/$re_begincf/,/$re_endcf/p # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # libtool_options_prep [ARG]... # ----------------------------- # Preparation for options parsed by libtool. libtool_options_prep () { $debug_mode # Option defaults: opt_config=false opt_dlopen= opt_dry_run=false opt_help=false opt_mode= opt_preserve_dup_deps=false opt_quiet=false nonopt= preserve_args= # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Pass back the list of options. func_quote_for_eval ${1+"$@"} libtool_options_prep_result=$func_quote_for_eval_result } func_add_hook func_options_prep libtool_options_prep # libtool_parse_options [ARG]... # --------------------------------- # Provide handling for libtool specific options. libtool_parse_options () { $debug_cmd # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) func_config ;; --dlopen|-dlopen) opt_dlopen="${opt_dlopen+$opt_dlopen }$1" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) func_features ;; --finish) set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $_G_opt && break opt_mode=$1 case $1 in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $_G_opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" ;; --no-warnings|--no-warning|--no-warn) opt_warning=false func_append preserve_args " $_G_opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $_G_opt" ;; --silent|--quiet) opt_quiet=: opt_verbose=false func_append preserve_args " $_G_opt" ;; --tag) test $# = 0 && func_missing_arg $_G_opt && break opt_tag=$1 func_append preserve_args " $_G_opt $1" func_enable_tag "$1" shift ;; --verbose|-v) opt_quiet=false opt_verbose=: func_append preserve_args " $_G_opt" ;; # An option not handled by this hook function: *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} libtool_parse_options_result=$func_quote_for_eval_result } func_add_hook func_parse_options libtool_parse_options # libtool_validate_options [ARG]... # --------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. libtool_validate_options () { # save first non-option argument if test 0 -lt $#; then nonopt=$1 shift fi # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" case $host in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match test yes != "$build_libtool_libs" \ && test yes != "$build_old_libs" \ && func_fatal_configuration "not configured to build any kind of library" # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test execute != "$opt_mode"; then func_error "unrecognized option '-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help=$help help="Try '$progname --help --mode=$opt_mode' for more information." } # Pass back the unparsed argument list func_quote_for_eval ${1+"$@"} libtool_validate_options_result=$func_quote_for_eval_result } func_add_hook func_validate_options libtool_validate_options # Process options as early as possible so that --help and --version # can return quickly. func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## ----------- ## ## Main. ## ## ----------- ## magic='%%%MAGIC variable%%%' magic_exe='%%%MAGIC EXE variable%%%' # Global variables. extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # func_generated_by_libtool # True iff stdin has been generated by Libtool. This function is only # a basic sanity check; it will hardly flush out determined imposters. func_generated_by_libtool_p () { $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test yes = "$lalib_p" } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { test -f "$1" && $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $debug_cmd save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # 'FILE.' does not work on cygwin managed mounts. func_source () { $debug_cmd case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $debug_cmd if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=$1 if test yes = "$build_libtool_libs"; then write_lobj=\'$2\' else write_lobj=none fi if test yes = "$build_old_libs"; then write_oldobj=\'$3\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $debug_cmd # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $debug_cmd if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $debug_cmd # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $debug_cmd if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result=$1 fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $debug_cmd if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result=$3 fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $debug_cmd case $4 in $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $debug_cmd $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $debug_cmd case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result=$1 } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $debug_cmd if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd=func_convert_path_$func_stripname_result fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $debug_cmd func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result=$1 } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_dll_def_p FILE # True iff FILE is a Windows DLL '.def' file. # Keep in sync with _LT_DLL_DEF_P in libtool.m4 func_dll_def_p () { $debug_cmd func_dll_def_p_tmp=`$SED -n \ -e 's/^[ ]*//' \ -e '/^\(;.*\)*$/d' \ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ -e q \ "$1"` test DEF = "$func_dll_def_p_tmp" } # func_mode_compile arg... func_mode_compile () { $debug_cmd # Get the compilation command and the source file. base_compile= srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg=$arg arg_mode=normal ;; target ) libobj=$arg arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs=$IFS; IFS=, for arg in $args; do IFS=$save_ifs func_append_quoted lastarg "$arg" done IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg=$srcfile srcfile=$arg ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj=$func_basename_result } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test yes = "$build_libtool_libs" \ || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname=$func_basename_result xdir=$func_dirname_result lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test no = "$compiler_c_o"; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext lockfile=$output_obj.lock else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test yes = "$build_old_libs"; then if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix '.c' with the library object suffix, '.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the '--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE use a list of object files found in FILE to specify objects -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with '-') are ignored. Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in '.la', then a libtool library is created, only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created using 'ar' and 'ranlib', or on Windows using 'lib'. If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test : = "$opt_help"; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | $SED '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $debug_cmd # The first argument is the command name. cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "'$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir=$func_dirname_result ;; *) func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file=$progdir/$program fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if $opt_dry_run; then # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd=\$cmd$args fi } test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $debug_cmd libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "'$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument '$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $debug_cmd # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=false stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=: if $isdir; then destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." destdir=$func_dirname_result destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking '$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname=$1 shift srcname=$realname test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme=$stripme case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= ;; esac ;; os2*) case $realname in *_dll.a) tstripme= ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name=$func_basename_result instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest=$destfile destfile= ;; *) func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=.exe fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script '$wrapper'" finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then func_warning "'$lib' has not been installed in '$libdir'" finalize=false fi done relink_command= func_source "$wrapper" outputname= if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file=$func_basename_result outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file=$outputname else func_warning "cannot relink '$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name=$func_basename_result # Set up the ranlib parameters. oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $debug_cmd my_outputname=$1 my_originator=$2 my_pic_p=${3-false} my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* External symbol declarations for the compiler. */\ " if test yes = "$dlself"; then func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" name=$func_basename_result case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi func_show_eval '$RM "${nlist}I"' if test -n "$global_symbol_to_import"; then eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[];\ " if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ static void lt_syminit(void) { LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; for (; symbol->name; ++symbol) {" $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" echo >> "$output_objdir/$my_dlsyms" "\ } }" fi echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = { {\"$my_originator\", (void *) 0}," if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ {\"@INIT@\", (void *) <_syminit}," fi case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $debug_cmd win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || func_cygming_gnu_implib_p "$1" then win32_nmres=import else win32_nmres= fi ;; *) func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s|.*|import| p q } }'` ;; esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $debug_cmd sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $debug_cmd match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive that possess that section. Heuristic: eliminate # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $debug_cmd if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result= fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $debug_cmd f_ex_an_ar_dir=$1; shift f_ex_an_ar_oldlib=$1 if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $debug_cmd my_gentop=$1; shift my_oldlibs=${1+"$@"} my_oldobjs= my_xlib= my_xabs= my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` func_basename "$darwin_archive" darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches; do func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" cd "unfat-$$/$darwin_base_archive-$darwin_arch" func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result=$my_oldobjs } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ #if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC #elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined other platforms ... */ #endif #if defined PATH_MAX # define LT_PATHMAX PATH_MAX #elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free (stale); stale = 0; } \ } while (0) #if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; size_t tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined HAVE_DOS_BASED_FILE_SYSTEM if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined HAVE_DOS_BASED_FILE_SYSTEM } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = (size_t) (q - p); p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (STREQ (str, pat)) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else size_t len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { size_t orig_value_len = strlen (orig_value); size_t add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ size_t len = strlen (new_value); while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $debug_cmd case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_suncc_cstd_abi # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! # Several compiler flags select an ABI that is incompatible with the # Cstd library. Avoid specifying it if any are in CXXFLAGS. func_suncc_cstd_abi () { $debug_cmd case " $compile_command " in *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) suncc_use_cstd_abi=no ;; *) suncc_use_cstd_abi=yes ;; esac } # func_mode_link arg... func_mode_link () { $debug_cmd case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=false prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test yes != "$build_libtool_libs" \ && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg=$1 shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir=$arg prev= continue ;; dlfiles|dlprefiles) $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=: } case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test no = "$dlself"; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test dlprefiles = "$prev"; then dlself=yes elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols=$arg test -f "$arg" \ || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex=$arg prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir=$arg prev= continue ;; mllvm) # Clang does not use LLVM to link, so we can simply discard any # '-mllvm $arg' options when doing the link step. prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object fi # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; os2dllname) os2dllname=$arg prev= continue ;; precious_regex) precious_files_regex=$arg prev= continue ;; release) release=-$arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds=$arg prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg=$arg case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between '-L' and '$1'" else func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of '$dir'" dir=$absdir ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test X-lc = "X$arg" && continue ;; esac elif test X-lc_r = "X$arg"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -mllvm) prev=mllvm continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module=$wl-multi_module continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "'-no-install' is ignored for $host" func_warning "assuming '-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -os2dllname) prev=os2dllname continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization # -specs=* GCC specs files # -stdlib=* select c++ std lib with clang # -fsanitize=* Clang/GCC memory and address sanitizer -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ -specs=*|-fsanitize=*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; -Z*) if test os2 = "`expr $host : '.*\(os2\)'`"; then # OS/2 uses -Zxxx to specify OS/2-specific options compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case $arg in -Zlinker | -Zstack) prev=xcompiler ;; esac continue else # Otherwise treat like 'Some other compiler flag' below func_quote_for_eval "$arg" arg=$func_quote_for_eval_result fi ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result test none = "$pic_object" || { # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object } # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test dlfiles = "$prev"; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test dlprefiles = "$prev"; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the '$prevarg' option requires an argument" if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname=$func_basename_result libobjs_save=$libobjs if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" # Definition is injected by LT_CONFIG during libtool generation. func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" func_dirname "$output" "/" "" output_objdir=$func_dirname_result$objdir func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test lib = "$linkmode"; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=false newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test lib,link = "$linkmode,$pass"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs=$tmp_deplibs fi if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass"; then libs=$deplibs deplibs= fi if test prog = "$linkmode"; then case $pass in dlopen) libs=$dlfiles ;; dlpreopen) libs=$dlprefiles ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test lib,dlpreopen = "$linkmode,$pass"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs=$dlprefiles fi if test dlopen = "$pass"; then # Collect dlpreopened libraries save_deplibs=$deplibs deplibs= fi for deplib in $libs; do lib= found=false case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test lib != "$linkmode" && test prog != "$linkmode"; then func_warning "'-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test lib = "$linkmode"; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib=$searchdir/lib$name$search_ext if test -f "$lib"; then if test .la = "$search_ext"; then found=: else found=false fi break 2 fi done done if $found; then # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll=$l done if test "X$ll" = "X$old_library"; then # only static version available found=false func_dirname "$lib" "" "." ladir=$func_dirname_result lib=$ladir/$old_library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi else # deplib doesn't seem to be a libtool library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l *.ltframework) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test conv = "$pass" && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi if test scan = "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "'-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test link = "$pass"; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=false case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=: fi ;; pass_all) valid_a_lib=: ;; esac if $valid_a_lib; then echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" else echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." fi ;; esac continue ;; prog) if test link != "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test conv = "$pass"; then deplibs="$deplib $deplibs" elif test prog = "$linkmode"; then if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=: continue ;; esac # case $deplib $found || test -f "$lib" \ || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "'$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir=$func_dirname_result dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass" || { test prog != "$linkmode" && test lib != "$linkmode"; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test conv = "$pass"; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for '$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done elif test prog != "$linkmode" && test lib != "$linkmode"; then func_fatal_error "'$lib' is not a convenience library" fi continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test yes = "$prefer_static_libs" || test built,no = "$prefer_static_libs,$installed"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib=$l done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for '$lib'" fi # This library was specified with -dlopen. if test dlopen = "$pass"; then test -z "$libdir" \ && func_fatal_error "cannot -dlopen a convenience library: '$lib'" if test -z "$dlname" || test yes != "$dlopen_support" || test no = "$build_libtool_libs" then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of '$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir=$ladir fi ;; esac func_basename "$lib" laname=$func_basename_result # Find the relevant object directory and library name. if test yes = "$installed"; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library '$lib' was moved." dir=$ladir absdir=$abs_ladir libdir=$abs_ladir else dir=$lt_sysroot$libdir absdir=$lt_sysroot$libdir fi test yes = "$hardcode_automatic" && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir=$ladir absdir=$abs_ladir # Remove this search path later func_append notinst_path " $abs_ladir" else dir=$ladir/$objdir absdir=$abs_ladir/$objdir # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test dlpreopen = "$pass"; then if test -z "$libdir" && test prog = "$linkmode"; then func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" fi case $host in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test lib = "$linkmode"; then deplibs="$dir/$old_library $deplibs" elif test prog,link = "$linkmode,$pass"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test prog = "$linkmode" && test link != "$pass"; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=false if test no != "$link_all_deplibs" || test -z "$library_names" || test no = "$build_libtool_libs"; then linkalldeplibs=: fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if $linkalldeplibs; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test prog,link = "$linkmode,$pass"; then if test -n "$library_names" && { { test no = "$prefer_static_libs" || test built,yes = "$prefer_static_libs,$installed"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then # Make sure the rpath contains only unique directories. case $temp_rpath: in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if $alldeplibs && { test pass_all = "$deplibs_check_method" || { test yes = "$build_libtool_libs" && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test built = "$use_static_libs" && test yes = "$installed"; then use_static_libs=no fi if test -n "$library_names" && { test no = "$use_static_libs" || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc* | *os2*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test no = "$installed"; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule= for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule=$dlpremoduletest break fi done if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then echo if test prog = "$linkmode"; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test lib = "$linkmode" && test yes = "$hardcode_into_libs"; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname=$1 shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname=$dlname elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc* | *os2*) func_arith $current - $age major=$func_arith_result versuffix=-$major ;; esac eval soname=\"$soname_spec\" else soname=$realname fi # Make a new name for the extract_expsyms_cmds to use soroot=$soname func_basename "$soroot" soname=$func_basename_result func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from '$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for '$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test prog = "$linkmode" || test relink != "$opt_mode"; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test no = "$hardcode_direct"; then add=$dir/$linklib case $host in *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; *-*-sysv4*uw2*) add_dir=-L$dir ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir=-L$dir ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we cannot # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library"; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add=$dir/$old_library fi elif test -n "$old_library"; then add=$dir/$old_library fi fi esac elif test no = "$hardcode_minus_L"; then case $host in *-*-sunos*) add_shlibpath=$dir ;; esac add_dir=-L$dir add=-l$name elif test no = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; relink) if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$dir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$absdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name elif test yes = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; *) lib_linked=no ;; esac if test yes != "$lib_linked"; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test prog = "$linkmode"; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test yes != "$hardcode_direct" && test yes != "$hardcode_minus_L" && test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test prog = "$linkmode" || test relink = "$opt_mode"; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$libdir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$libdir add=-l$name elif test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add=-l$name elif test yes = "$hardcode_automatic"; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib"; then add=$inst_prefix_dir$libdir/$linklib else add=$libdir/$linklib fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir=-L$libdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name fi if test prog = "$linkmode"; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test prog = "$linkmode"; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test unsupported != "$hardcode_direct"; then test -n "$old_library" && linklib=$old_library compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test yes = "$build_libtool_libs"; then # Not a shared library if test pass_all != "$deplibs_check_method"; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system cannot link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test yes = "$module"; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test lib = "$linkmode"; then if test -n "$dependency_libs" && { test yes != "$hardcode_into_libs" || test yes = "$build_old_libs" || test yes = "$link_static"; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs=$temp_deplibs fi func_append newlib_search_path " $absdir" # Link against this library test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test no != "$link_all_deplibs"; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path=$deplib ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of '$dir'" absdir=$dir fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names"; then for tmp in $deplibrary_names; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl"; then depdepl=$absdir/$objdir/$depdepl darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" path= fi fi ;; *) path=-L$absdir/$objdir ;; esac else eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "'$deplib' seems to be moved" path=-L$absdir fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test link = "$pass"; then if test prog = "$linkmode"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs=$newdependency_libs if test dlpreopen = "$pass"; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test dlopen != "$pass"; then test conv = "$pass" || { # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= } if test prog,link = "$linkmode,$pass"; then vars="compile_deplibs finalize_deplibs" else vars=deplibs fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Add Sun CC postdeps if required: test CXX = "$tagname" && { case $host_os in linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; solaris*) func_cc_basename "$CC" case $func_cc_basename_result in CC* | sunCC*) func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; esac } # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i= ;; esac if test -n "$i"; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test prog = "$linkmode"; then dlfiles=$newdlfiles fi if test prog = "$linkmode" || test lib = "$linkmode"; then dlprefiles=$newdlprefiles fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "'-R' is ignored for archives" test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "'-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "'-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs=$output func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form 'libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test no = "$module" \ && func_fatal_help "libtool library '$output' must begin with 'lib'" if test no != "$need_lib_prefix"; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test pass_all != "$deplibs_check_method"; then func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test no = "$dlself" \ || func_warning "'-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test 1 -lt "$#" \ && func_warning "ignoring multiple '-rpath's for a libtool library" install_libdir=$1 oldlibs= if test -z "$rpath"; then if test yes = "$build_libtool_libs"; then # Building a libtool convenience library. # Some compilers have problems with a '.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "'-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs=$IFS; IFS=: set dummy $vinfo 0 0 0 shift IFS=$save_ifs test -n "$7" && \ func_fatal_help "too many parameters to '-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major=$1 number_minor=$2 number_revision=$3 # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # that has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|freebsd-elf|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_revision ;; freebsd-aout|qnx|sunos) current=$number_major revision=$number_minor age=0 ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_minor lt_irix_increment=no ;; *) func_fatal_configuration "$modename: unknown library version type '$version_type'" ;; esac ;; no) current=$1 revision=$2 age=$3 ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT '$current' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION '$revision' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE '$age' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE '$age' is greater than the current interface number '$current'" func_fatal_error "'$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" # On Darwin other compilers case $CC in nagfor*) verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" ;; *) verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; esac ;; freebsd-aout) major=.$current versuffix=.$current.$revision ;; freebsd-elf) func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; irix | nonstopux) if test no = "$lt_irix_increment"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring=$verstring_prefix$major.$revision # Add in all the interfaces that we are compatible with. loop=$revision while test 0 -ne "$loop"; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring_prefix$major.$iface:$verstring done # Before this point, $major must not contain '.'. major=.$major versuffix=$major.$revision ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=.$current.$age.$revision verstring=$current.$age.$revision # Add in all the interfaces that we are compatible with. loop=$age while test 0 -ne "$loop"; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring:$iface.0 done # Make executables depend on our current version. func_append verstring ":$current.0" ;; qnx) major=.$current versuffix=.$current ;; sco) major=.$current versuffix=.$current ;; sunos) major=.$current versuffix=.$current.$revision ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 file systems. func_arith $current - $age major=$func_arith_result versuffix=-$major ;; *) func_fatal_configuration "unknown library version type '$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring=0.0 ;; esac if test no = "$need_version"; then versuffix= else versuffix=.0.0 fi fi # Remove version info from name if versioning should be avoided if test yes,no = "$avoid_version,$need_version"; then major= versuffix= verstring= fi # Check to see if the archive will have undefined symbols. if test yes = "$allow_undefined"; then if test unsupported = "$allow_undefined_flag"; then if test yes = "$build_old_libs"; then func_warning "undefined symbols not allowed in $host shared libraries; building static only" build_libtool_libs=no else func_fatal_error "can't build $host shared library unless -no-undefined is specified" fi fi else # Don't allow undefined symbols. allow_undefined_flag=$no_undefined_flag fi fi func_generate_dlsyms "$libname" "$libname" : func_append libobjs " $symfileobj" test " " = "$libobjs" && libobjs= if test relink != "$opt_mode"; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) if test -n "$precious_files_regex"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles=$dlfiles dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles=$dlprefiles dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test yes = "$build_libtool_libs"; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test yes = "$build_libtool_need_lc"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release= versuffix= major= newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib=$potent_lib while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | $SED 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib= ;; esac fi if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib=$potent_lib # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs= tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test yes = "$allow_libtool_libs_with_static_runtimes"; then for i in $predeps $postdeps; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test none = "$deplibs_check_method"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test yes = "$droppeddeps"; then if test yes = "$module"; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test no = "$allow_undefined"; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs=$new_libs # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test yes = "$build_libtool_libs"; then # Remove $wl instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test yes = "$hardcode_into_libs"; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath=$finalize_rpath test relink = "$opt_mode" || rpath=$compile_rpath$rpath for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath=$finalize_shlibpath test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname=$1 shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname=$realname fi if test -z "$dlname"; then dlname=$soname fi lib=$output_objdir/$realname linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols=$output_objdir/$libname.uexp func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile func_dll_def_p "$export_symbols" || { # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols=$export_symbols export_symbols= always_export_symbols=yes } fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs=$IFS; IFS='~' for cmd1 in $cmds; do IFS=$save_ifs # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test yes = "$try_normal_branch" \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=$output_objdir/$output_la.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS=$save_ifs if test -n "$export_symbols_regex" && test : != "$skipped_export"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test : != "$skipped_export" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs=$tmp_deplibs if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test yes = "$compiler_needs_object" && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test : != "$skipped_export" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then output=$output_objdir/$output_la.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then output=$output_objdir/$output_la.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test yes = "$compiler_needs_object"; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-$k.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test -z "$objlist" || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test 1 -eq "$k"; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-$k.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-$k.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi ${skipped_export-false} && { func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi } test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs=$IFS; IFS='~' for cmd in $concat_cmds; do IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi ${skipped_export-false} && { if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi } libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs=$IFS; IFS='~' for cmd in $cmds; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs # Restore the uninstalled library and exit if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test yes = "$module" || test yes = "$export_dynamic"; then # On all known operating systems, these are identical. dlname=$soname fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "'-R' is ignored for objects" test -n "$vinfo" && \ func_warning "'-version-info' is ignored for objects" test -n "$release" && \ func_warning "'-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object '$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj=$output ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # if reload_cmds runs $LD directly, get rid of -Wl from # whole_archive_flag_spec and hope we can get by with turning comma # into space. case $reload_cmds in *\$LD[\ \$]*) wl= ;; esac if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags else gentop=$output_objdir/${obj}x func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test yes = "$build_libtool_libs" || libobjs=$non_pic_objects # Create the old-style object. reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs output=$obj func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi test yes = "$build_libtool_libs" || { if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS } if test -n "$pic_flag" || test default != "$pic_mode"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output=$libobj func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "'-version-info' is ignored for programs" test -n "$release" && \ func_warning "'-release' is ignored for programs" $preload \ && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test CXX = "$tagname"; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " $wl-bind_at_load" func_append finalize_command " $wl-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs=$new_libs func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath=$rpath rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath=$rpath if test -n "$libobjs" && test yes = "$build_old_libs"; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" false # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=: case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=false ;; *cygwin* | *mingw* ) test yes = "$build_libtool_libs" || wrappers_required=false ;; *) if test no = "$need_relink" || test yes != "$build_libtool_libs"; then wrappers_required=false fi ;; esac $wrappers_required || { # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command=$compile_command$compile_rpath # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.$objext"; then func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' fi exit $exit_status } if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test yes = "$no_install"; then # We don't need to create a wrapper script. link_command=$compile_var$compile_command$compile_rpath # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi case $hardcode_action,$fast_install in relink,*) # Fast installation is not supported link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath func_warning "this platform does not like uninstalled shared libraries" func_warning "'$output' will be relinked during installation" ;; *,yes) link_command=$finalize_var$compile_command$finalize_rpath relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` ;; *,no) link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath ;; *,needless) link_command=$finalize_var$compile_command$finalize_rpath relink_command= ;; esac # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource=$output_path/$objdir/lt-$output_name.c cwrapper=$output_path/$output_name.exe $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host"; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do case $build_libtool_libs in convenience) oldobjs="$libobjs_save $symfileobj" addlibs=$convenience build_libtool_libs=no ;; module) oldobjs=$libobjs_save addlibs=$old_convenience build_libtool_libs=no ;; *) oldobjs="$old_deplibs $non_pic_objects" $preload && test -f "$symfileobj" \ && func_append oldobjs " $symfileobj" addlibs=$old_convenience ;; esac if test -n "$addlibs"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase=$func_basename_result case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj"; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test -z "$oldobjs"; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test yes = "$build_old_libs" && old_library=$libname.$libext func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test yes = "$hardcode_automatic"; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test yes = "$installed"; then if test -z "$install_libdir"; then break fi output=$output_objdir/${outputname}i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name=$func_basename_result func_resolve_sysroot "$deplib" eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs=$newdependency_libs newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles=$newdlprefiles else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles=$newdlprefiles fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test -n "$bindir"; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result/$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that cannot go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test no,yes = "$installed,$need_relink"; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } if test link = "$opt_mode" || test relink = "$opt_mode"; then func_mode_link ${1+"$@"} fi # func_mode_uninstall arg... func_mode_uninstall () { $debug_cmd RM=$nonopt files= rmforce=false exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic for arg do case $arg in -f) func_append RM " $arg"; rmforce=: ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir=$func_dirname_result if test . = "$dir"; then odir=$objdir else odir=$dir/$objdir fi func_basename "$file" name=$func_basename_result test uninstall = "$opt_mode" && odir=$dir # Remember odir for removal later, being careful to avoid duplicates if test clean = "$opt_mode"; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif $rmforce; then continue fi rmfiles=$file case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case $opt_mode in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test none != "$pic_object"; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test none != "$non_pic_object"; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test clean = "$opt_mode"; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.$objext" if test yes = "$fast_install" && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name"; then func_append rmfiles " $odir/lt-$noexename.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the $objdir's in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then func_mode_uninstall ${1+"$@"} fi test -z "$opt_mode" && { help=$generic_help func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode '$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # where we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: eztrace-1.1-7/extlib/gtg/PaxHeaders.7332/config.guess0000644000000000000000000000013213171135227017216 xustar0030 mtime=1508162199.996398379 30 atime=1508162274.522045942 30 ctime=1508162365.969753301 eztrace-1.1-7/extlib/gtg/config.guess0000755000175000017500000012564413171135227020424 0ustar00trahaytrahay00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2016 Free Software Foundation, Inc. timestamp='2016-10-02' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || \ echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case "${UNAME_MACHINE_ARCH}" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case "${UNAME_MACHINE_ARCH}" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; *:Sortix:*:*) echo ${UNAME_MACHINE}-unknown-sortix exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; e2k:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; k1om:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; mips64el:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; riscv32:Linux:*:* | riscv64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; SX-ACE:SUPER-UX:*:*) echo sxace-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; amd64:Isilon\ OneFS:*:*) echo x86_64-unknown-onefs exit ;; esac cat >&2 </dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: eztrace-1.1-7/extlib/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135253016164 xustar0030 mtime=1508162219.677811012 30 atime=1508162286.551021617 30 ctime=1508162365.681728176 eztrace-1.1-7/extlib/Makefile.in0000644000175000017500000005065013171135253017361 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @AMEXTERNLITL_TRUE@am__append_1 = @AMEXTERNLITL_FALSE@am__append_2 = litl @AMEXTERNGTG_TRUE@am__append_3 = @AMEXTERNGTG_FALSE@am__append_4 = gtg @OPENMP_FOUND_TRUE@am__append_5 = opari2 subdir = extlib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = litl gtg opari2 am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CUDA_CFLAGS = @CUDA_CFLAGS@ CUDA_LDFLAGS = @CUDA_LDFLAGS@ CUDA_LIBS = @CUDA_LIBS@ CUDA_ROOT = @CUDA_ROOT@ CUPTI_CFLAGS = @CUPTI_CFLAGS@ CUPTI_LDFLAGS = @CUPTI_LDFLAGS@ CUPTI_LIBS = @CUPTI_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ DYNLIB_EXT = @DYNLIB_EXT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FGREP = @FGREP@ GREP = @GREP@ GTGDIR = @GTGDIR@ GTG_CPPFLAGS = @GTG_CPPFLAGS@ GTG_DEPENDENCIES = @GTG_DEPENDENCIES@ GTG_EXT_CPPFLAGS = @GTG_EXT_CPPFLAGS@ GTG_EXT_LDFLAGS = @GTG_EXT_LDFLAGS@ GTG_EXT_LIB = @GTG_EXT_LIB@ GTG_LDFLAGS = @GTG_LDFLAGS@ GTG_LIB = @GTG_LIB@ GTG_OUT_OF_ORDER = @GTG_OUT_OF_ORDER@ HAVE_ENV = @HAVE_ENV@ HAVE_LIBBACKTRACE = @HAVE_LIBBACKTRACE@ HAVE_LIBOPCODE = @HAVE_LIBOPCODE@ HAVE_PRCTL_H = @HAVE_PRCTL_H@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LD_LIBRARY_PATH_NAME = @LD_LIBRARY_PATH_NAME@ LD_PRELOAD_NAME = @LD_PRELOAD_NAME@ LIBBACKTRACE_CPPFLAGS = @LIBBACKTRACE_CPPFLAGS@ LIBBACKTRACE_LDFLAGS = @LIBBACKTRACE_LDFLAGS@ LIBBACKTRACE_LIB = @LIBBACKTRACE_LIB@ LIBBACKTRACE_ROOT = @LIBBACKTRACE_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LITL_PRINT = @LITL_PRINT@ LITL_ROOT = @LITL_ROOT@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPI_CFLAGS = @MPI_CFLAGS@ MPI_EVENT_ID = @MPI_EVENT_ID@ MPI_INC = @MPI_INC@ MPI_LDFLAGS = @MPI_LDFLAGS@ MPI_MODULE_NAME = @MPI_MODULE_NAME@ MPI_ROOT = @MPI_ROOT@ NM = @NM@ NMEDIT = @NMEDIT@ NVCC = @NVCC@ NVCCFLAGS = @NVCCFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAPIDIR = @PAPIDIR@ PAPI_CPPFLAGS = @PAPI_CPPFLAGS@ PAPI_ENABLED = @PAPI_ENABLED@ PAPI_LDFLAGS = @PAPI_LDFLAGS@ PAPI_LIBDIR = @PAPI_LIBDIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PPTRACE_BINARY_TYPE = @PPTRACE_BINARY_TYPE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STARPU_CFLAGS = @STARPU_CFLAGS@ STARPU_CPPFLAGS = @STARPU_CPPFLAGS@ STARPU_LDFLAGS = @STARPU_LDFLAGS@ STARPU_LIBS = @STARPU_LIBS@ STARPU_ROOT = @STARPU_ROOT@ STRIP = @STRIP@ TARGET_BITS = @TARGET_BITS@ TL_CPPFLAGS = @TL_CPPFLAGS@ TL_EXT_CPPFLAGS = @TL_EXT_CPPFLAGS@ TL_EXT_LDFLAGS = @TL_EXT_LDFLAGS@ TL_EXT_LIB = @TL_EXT_LIB@ TL_LDFLAGS = @TL_LDFLAGS@ TL_LIB = @TL_LIB@ USE_BIN_INSTRUMENTATION = @USE_BIN_INSTRUMENTATION@ USE_CUDADIR_FROM_USER = @USE_CUDADIR_FROM_USER@ USE_GETTID = @USE_GETTID@ USE_MPIDIR_FROM_USER = @USE_MPIDIR_FROM_USER@ USE_PAPIDIR_FROM_USER = @USE_PAPIDIR_FROM_USER@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = $(am__append_1) $(am__append_2) $(am__append_3) \ $(am__append_4) $(am__append_5) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu extlib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu extlib/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/PaxHeaders.7332/litl0000644000000000000000000000013213171135475015014 xustar0030 mtime=1508162365.893746671 30 atime=1508162367.741908015 30 ctime=1508162365.893746671 eztrace-1.1-7/extlib/litl/0000755000175000017500000000000013171135475016260 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/litl/PaxHeaders.7332/aclocal.m40000644000000000000000000000013113171135250016717 xustar0030 mtime=1508162216.009542742 29 atime=1508162216.10154945 30 ctime=1508162365.725732015 eztrace-1.1-7/extlib/litl/aclocal.m40000644000175000017500000012447613171135250020125 0ustar00trahaytrahay00000000000000# generated automatically by aclocal 1.15.1 -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.15.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.15.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_COND_IF -*- Autoconf -*- # Copyright (C) 2008-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_COND_IF # _AM_COND_ELSE # _AM_COND_ENDIF # -------------- # These macros are only used for tracing. m4_define([_AM_COND_IF]) m4_define([_AM_COND_ELSE]) m4_define([_AM_COND_ENDIF]) # AM_COND_IF(COND, [IF-TRUE], [IF-FALSE]) # --------------------------------------- # If the shell condition COND is true, execute IF-TRUE, otherwise execute # IF-FALSE. Allow automake to learn about conditional instantiating macros # (the AC_CONFIG_FOOS). AC_DEFUN([AM_COND_IF], [m4_ifndef([_AM_COND_VALUE_$1], [m4_fatal([$0: no such condition "$1"])])dnl _AM_COND_IF([$1])dnl if test -z "$$1_TRUE"; then : m4_n([$2])[]dnl m4_ifval([$3], [_AM_COND_ELSE([$1])dnl else $3 ])dnl _AM_COND_ENDIF([$1])dnl fi[]dnl ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) eztrace-1.1-7/extlib/litl/PaxHeaders.7332/missing0000644000000000000000000000013213171135250016454 xustar0030 mtime=1508162216.641588825 30 atime=1508162271.417796528 30 ctime=1508162365.749734109 eztrace-1.1-7/extlib/litl/missing0000755000175000017500000001533013171135250017650 0ustar00trahaytrahay00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/extlib/litl/PaxHeaders.7332/doc0000644000000000000000000000013213171135475015561 xustar0030 mtime=1508162365.925749463 30 atime=1508162367.741908015 30 ctime=1508162365.925749463 eztrace-1.1-7/extlib/litl/doc/0000755000175000017500000000000013171135475017025 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/litl/doc/PaxHeaders.7332/Doxyfile.in0000644000000000000000000000013212426414022017737 xustar0030 mtime=1415190546.310452975 30 atime=1507797543.994894378 30 ctime=1508162365.925749463 eztrace-1.1-7/extlib/litl/doc/Doxyfile.in0000644000175000017500000023542712426414022021143 0ustar00trahaytrahay00000000000000# Doxyfile 1.8.4 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # # All text after a double hash (##) is considered a comment and is placed # in front of the TAG it is preceding . # All text after a hash (#) is considered a comment and will be ignored. # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" "). #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all # text before the first occurrence of this tag. Doxygen uses libiconv (or the # iconv built into libc) for the transcoding. See # http://www.gnu.org/software/libiconv for the list of possible encodings. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or sequence of words) that should # identify the project. Note that if you do not use Doxywizard you need # to put quotes around the project name if it contains spaces. PROJECT_NAME = @PACKAGE_NAME@ # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = @PACKAGE_VERSION@ # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer # a quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = # With the PROJECT_LOGO tag one can specify an logo or icon that is # included in the documentation. The maximum height of the logo should not # exceed 55 pixels and the maximum width should not exceed 200 pixels. # Doxygen will copy the logo to the output directory. PROJECT_LOGO = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, # Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, # Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English # messages), Korean, Korean-en, Latvian, Lithuanian, Norwegian, Macedonian, # Persian, Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, # Slovak, Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = YES # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. Note that you specify absolute paths here, but also # relative paths, which will be relative from the directory where doxygen is # started. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful if your file system # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like regular Qt-style comments # (thus requiring an explicit @brief command for a brief description.) JAVADOC_AUTOBRIEF = NO # If the QT_AUTOBRIEF tag is set to YES then Doxygen will # interpret the first line (until the first dot) of a Qt-style # comment as the brief description. If set to NO, the comments # will behave just like regular Qt-style comments (thus requiring # an explicit \brief command for a brief description.) QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 4 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # This tag can be used to specify a number of word-keyword mappings (TCL only). # A mapping has the form "name=value". For example adding # "class=itcl::class" will allow you to use the command class in the # itcl::class meaning. TCL_SUBST = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = YES # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java # sources only. Doxygen will then generate output that is more tailored for # Java. For instance, namespaces will be presented as packages, qualified # scopes will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources only. Doxygen will then generate output that is more tailored for # Fortran. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for # VHDL. OPTIMIZE_OUTPUT_VHDL = NO # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, # and language is one of the parsers supported by doxygen: IDL, Java, # Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, # C++. For instance to make doxygen treat .inc files as Fortran files (default # is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note # that for custom extensions you also need to set FILE_PATTERNS otherwise the # files are not read by doxygen. EXTENSION_MAPPING = # If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all # comments according to the Markdown format, which allows for more readable # documentation. See http://daringfireball.net/projects/markdown/ for details. # The output of markdown processing is further processed by doxygen, so you # can mix doxygen, HTML, and XML commands with Markdown formatting. # Disable only in case of backward compatibilities issues. MARKDOWN_SUPPORT = YES # When enabled doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by by putting a % sign in front of the word # or globally by setting AUTOLINK_SUPPORT to NO. AUTOLINK_SUPPORT = YES # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should # set this tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. # func(std::string) {}). This also makes the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. # Doxygen will parse them like normal C++ but will assume all classes use public # instead of private inheritance when no explicit protection keyword is present. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES (the # default) will make doxygen replace the get and set methods by a property in # the documentation. This will only work if the methods are indeed getting or # setting a simple type. If this is not the case, or you want to show the # methods anyway, you should set this option to NO. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and # unions are shown inside the group in which they are included (e.g. using # @ingroup) instead of on a separate page (for HTML and Man pages) or # section (for LaTeX and RTF). INLINE_GROUPED_CLASSES = NO # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and # unions with only public data fields or simple typedef fields will be shown # inline in the documentation of the scope in which they are defined (i.e. file, # namespace, or group documentation), provided this scope is documented. If set # to NO (the default), structs, classes, and unions are shown on a separate # page (for HTML and Man pages) or section (for LaTeX and RTF). INLINE_SIMPLE_STRUCTS = NO # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum # is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically # be useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. TYPEDEF_HIDES_STRUCT = NO # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This # cache is used to resolve symbols given their name and scope. Since this can # be an expensive process and often the same symbol appear multiple times in # the code, doxygen keeps a cache of pre-resolved symbols. If the cache is too # small doxygen will become slower. If the cache is too large, memory is wasted. # The cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid # range is 0..9, the default is 0, corresponding to a cache size of 2^16 = 65536 # symbols. LOOKUP_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_PACKAGE tag is set to YES all members with package or internal # scope will be included in the documentation. EXTRACT_PACKAGE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base # name of the file that contains the anonymous namespace. By default # anonymous namespaces are hidden. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. #HIDE_UNDOC_CLASSES = NO HIDE_UNDOC_CLASSES = YES # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen # will list include files with double quotes in the documentation # rather than with sharp brackets. FORCE_LOCAL_INCLUDES = NO # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen # will sort the (brief and detailed) documentation of class members so that # constructors and destructors are listed first. If set to NO (the default) # the constructors will appear in the respective orders defined by # SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. # This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO # and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. SORT_MEMBERS_CTORS_1ST = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the # hierarchy of group names into alphabetical order. If set to NO (the default) # the group names will appear in their defined order. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to # do proper type resolution of all parameters of a function it will reject a # match between the prototype and the implementation of a member function even # if there is only one candidate or it is obvious which candidate to choose # by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen # will still accept a match between prototype and implementation in such cases. STRICT_PROTO_MATCHING = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if section-label ... \endif # and \cond section-label ... \endcond blocks. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or macro consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and macros in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES # Set the SHOW_FILES tag to NO to disable the generation of the Files page. # This will remove the Files entry from the Quick Index and from the # Folder Tree View (if specified). The default is YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the # Namespaces page. # This will remove the Namespaces entry from the Quick Index # and from the Folder Tree View (if specified). The default is YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command , where is the value of # the FILE_VERSION_FILTER tag, and is the name of an input file # provided by doxygen. Whatever the program writes to standard output # is used as the file version. See the manual for examples. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file # that represents doxygen's defaults, run doxygen with the -l option. # You can optionally specify a file name after the option, if omitted # DoxygenLayout.xml will be used as the name of the layout file. LAYOUT_FILE = # The CITE_BIB_FILES tag can be used to specify one or more bib files # containing the references data. This must be a list of .bib files. The # .bib extension is automatically appended if omitted. Using this command # requires the bibtex tool to be installed. See also # http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style # of the bibliography can be controlled using LATEX_BIB_STYLE. To use this # feature you need bibtex and perl available in the search path. Do not use # file names with spaces, bibtex cannot handle them. CITE_BIB_FILES = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # The WARN_NO_PARAMDOC option can be enabled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = @top_srcdir@/src @top_srcdir@/utils # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is # also the default input encoding. Doxygen uses libiconv (or the iconv built # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for # the list of possible encodings. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh # *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py # *.f90 *.f *.for *.vhd *.vhdl FILE_PATTERNS = # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # Note that relative paths are relative to the directory from which doxygen is # run. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. Note that the wildcards are matched # against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* EXCLUDE_PATTERNS = # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. # If FILTER_PATTERNS is specified, this tag will be ignored. # Note that the filter must not add or remove lines; it is applied before the # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. # Doxygen will compare the file name with each pattern and apply the # filter if there is a match. # The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty or if # non of the patterns match the file name, INPUT_FILTER is applied. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file # pattern. A pattern will override the setting for FILTER_PATTERN (if any) # and it is also possible to disable source filtering for a specific pattern # using *.ext= (so without naming a filter). This option only has effect when # FILTER_SOURCE_FILES is enabled. FILTER_SOURCE_PATTERNS = # If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page # (index.html). This can be useful if you have a project on for instance GitHub # and want reuse the introduction page also for the doxygen output. USE_MDFILE_AS_MAINPAGE = #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = YES # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C, C++ and Fortran comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = NO # If the REFERENCES_RELATION tag is set to YES # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = NO # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will # link to the source code. # Otherwise they will link to the documentation. REFERENCES_LINK_SOURCE = YES # If the USE_HTAGS tag is set to YES then the references to source code # will point to the HTML generated by the htags(1) tool instead of doxygen # built-in source browser. The htags tool is part of GNU's global source # tagging system (see http://www.gnu.org/software/global/global.html). You # will need version 4.8.6 or higher. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = YES # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = __ #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. Note that when using a custom header you are responsible # for the proper inclusion of any scripts and style sheets that doxygen # needs, which is dependent on the configuration options used. # It is advised to generate a default header using "doxygen -w html # header.html footer.html stylesheet.css YourConfigFile" and then modify # that header. Note that the header is subject to change so you typically # have to redo this when upgrading to a newer version of doxygen or when # changing the value of configuration settings such as GENERATE_TREEVIEW! HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If left blank doxygen will # generate a default style sheet. Note that it is recommended to use # HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this # tag will in the future become obsolete. HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify an additional # user-defined cascading style sheet that is included after the standard # style sheets created by doxygen. Using this option one can overrule # certain style aspects. This is preferred over using HTML_STYLESHEET # since it does not replace the standard style sheet and is therefor more # robust against future updates. Doxygen will copy the style sheet file to # the output directory. HTML_EXTRA_STYLESHEET = # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note # that these files will be copied to the base HTML output directory. Use the # $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these # files. In the HTML_STYLESHEET file, use the file name only. Also note that # the files will be copied as-is; there are no commands or markers available. HTML_EXTRA_FILES = # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. # Doxygen will adjust the colors in the style sheet and background images # according to this color. Hue is specified as an angle on a colorwheel, # see http://en.wikipedia.org/wiki/Hue for more information. # For instance the value 0 represents red, 60 is yellow, 120 is green, # 180 is cyan, 240 is blue, 300 purple, and 360 is red again. # The allowed range is 0 to 359. HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of # the colors in the HTML output. For a value of 0 the output will use # grayscales only. A value of 255 will produce the most vivid colors. HTML_COLORSTYLE_SAT = 100 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to # the luminance component of the colors in the HTML output. Values below # 100 gradually make the output lighter, whereas values above 100 make # the output darker. The value divided by 100 is the actual gamma applied, # so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, # and 100 does not change the gamma. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting # this to NO can help when comparing the output of multiple runs. HTML_TIMESTAMP = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. HTML_DYNAMIC_SECTIONS = NO # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of # entries shown in the various tree structured indices initially; the user # can expand and collapse entries dynamically later on. Doxygen will expand # the tree to such a level that at most the specified number of entries are # visible (unless a fully collapsed tree already exceeds this amount). # So setting the number of entries 1 will produce a full collapsed tree by # default. 0 is a special value representing an infinite number of entries # and will result in a full expanded tree by default. HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files # will be generated that can be used as input for Apple's Xcode 3 # integrated development environment, introduced with OSX 10.5 (Leopard). # To create a documentation set, doxygen will generate a Makefile in the # HTML output directory. Running make will produce the docset in that # directory and running "make install" will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find # it at startup. # See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html # for more information. GENERATE_DOCSET = NO # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the # feed. A documentation feed provides an umbrella under which multiple # documentation sets from a single provider (such as a company or product suite) # can be grouped. DOCSET_FEEDNAME = "Doxygen generated docs" # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that # should uniquely identify the documentation set bundle. This should be a # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen # will append .docset to the name. DOCSET_BUNDLE_ID = org.doxygen.Project # When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely # identify the documentation publisher. This should be a reverse domain-name # style string, e.g. com.mycompany.MyDocSet.documentation. DOCSET_PUBLISHER_ID = org.doxygen.Publisher # The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. DOCSET_PUBLISHER_NAME = Publisher # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING # is used to encode HtmlHelp index (hhk), content (hhc) and project file # content. CHM_INDEX_ENCODING = # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated # that can be used as input for Qt's qhelpgenerator to generate a # Qt Compressed Help (.qch) of the generated HTML documentation. GENERATE_QHP = NO # If the QHG_LOCATION tag is specified, the QCH_FILE tag can # be used to specify the file name of the resulting .qch file. # The path specified is relative to the HTML output folder. QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#namespace QHP_NAMESPACE = org.doxygen.Project # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#virtual-folders QHP_VIRTUAL_FOLDER = doc # If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to # add. For more information please see # http://doc.trolltech.com/qthelpproject.html#custom-filters QHP_CUST_FILTER_NAME = # The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see # # Qt Help Project / Custom Filters. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's # filter section matches. # # Qt Help Project / Filter Attributes. QHP_SECT_FILTER_ATTRS = # If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can # be used to specify the location of Qt's qhelpgenerator. # If non-empty doxygen will try to run qhelpgenerator on the generated # .qhp file. QHG_LOCATION = # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files # will be generated, which together with the HTML files, form an Eclipse help # plugin. To install this plugin and make it available under the help contents # menu in Eclipse, the contents of the directory containing the HTML and XML # files needs to be copied into the plugins directory of eclipse. The name of # the directory within the plugins directory should be the same as # the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before # the help appears. GENERATE_ECLIPSEHELP = NO # A unique identifier for the eclipse help plugin. When installing the plugin # the directory name containing the HTML and XML files should also have # this name. ECLIPSE_DOC_ID = org.doxygen.Project # The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) # at top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. Since the tabs have the same information as the # navigation tree you can set this option to NO if you already set # GENERATE_TREEVIEW to YES. DISABLE_INDEX = NO # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. # If the tag value is set to YES, a side panel will be generated # containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). # Windows users are probably better off using the HTML help feature. # Since the tree basically has the same information as the tab index you # could consider to set DISABLE_INDEX to NO when enabling this option. GENERATE_TREEVIEW = NO # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values # (range [0,1..20]) that doxygen will group on one line in the generated HTML # documentation. Note that a value of 0 will completely suppress the enum # values from appearing in the overview section. ENUM_VALUES_PER_LINE = 4 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 # When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open # links to external symbols imported via tag files in a separate window. EXT_LINKS_IN_WINDOW = NO # Use this tag to change the font size of Latex formulas included # as images in the HTML documentation. The default is 10. Note that # when you change the font size after a successful doxygen run you need # to manually remove any form_*.png images from the HTML output directory # to force them to be regenerated. FORMULA_FONTSIZE = 10 # Use the FORMULA_TRANPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are # not supported properly for IE 6.0, but are supported on all modern browsers. # Note that when changing this option you need to delete any form_*.png files # in the HTML output before the changes have effect. FORMULA_TRANSPARENT = YES # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax # (see http://www.mathjax.org) which uses client side Javascript for the # rendering instead of using prerendered bitmaps. Use this if you do not # have LaTeX installed or if you want to formulas look prettier in the HTML # output. When enabled you may also need to install MathJax separately and # configure the path to it using the MATHJAX_RELPATH option. USE_MATHJAX = NO # When MathJax is enabled you can set the default output format to be used for # the MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and # SVG. The default value is HTML-CSS, which is slower, but has the best # compatibility. MATHJAX_FORMAT = HTML-CSS # When MathJax is enabled you need to specify the location relative to the # HTML output directory using the MATHJAX_RELPATH option. The destination # directory should contain the MathJax.js script. For instance, if the mathjax # directory is located at the same level as the HTML output directory, then # MATHJAX_RELPATH should be ../mathjax. The default value points to # the MathJax Content Delivery Network so you can quickly see the result without # installing MathJax. # However, it is strongly recommended to install a local # copy of MathJax from http://www.mathjax.org before deployment. MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest # The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension # names that should be enabled during MathJax rendering. MATHJAX_EXTENSIONS = # The MATHJAX_CODEFILE tag can be used to specify a file with javascript # pieces of code that will be used on startup of the MathJax code. MATHJAX_CODEFILE = # When the SEARCHENGINE tag is enabled doxygen will generate a search box # for the HTML output. The underlying search engine uses javascript # and DHTML and should work on any modern browser. Note that when using # HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets # (GENERATE_DOCSET) there is already a search function so this one should # typically be disabled. For large projects the javascript based search engine # can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. SEARCHENGINE = YES # When the SERVER_BASED_SEARCH tag is enabled the search engine will be # implemented using a web server instead of a web client using Javascript. # There are two flavours of web server based search depending on the # EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for # searching and an index file used by the script. When EXTERNAL_SEARCH is # enabled the indexing and searching needs to be provided by external tools. # See the manual for details. SERVER_BASED_SEARCH = NO # When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP # script for searching. Instead the search results are written to an XML file # which needs to be processed by an external indexer. Doxygen will invoke an # external search engine pointed to by the SEARCHENGINE_URL option to obtain # the search results. Doxygen ships with an example indexer (doxyindexer) and # search engine (doxysearch.cgi) which are based on the open source search # engine library Xapian. See the manual for configuration details. EXTERNAL_SEARCH = NO # The SEARCHENGINE_URL should point to a search engine hosted by a web server # which will returned the search results when EXTERNAL_SEARCH is enabled. # Doxygen ships with an example search engine (doxysearch) which is based on # the open source search engine library Xapian. See the manual for configuration # details. SEARCHENGINE_URL = # When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed # search data is written to a file for indexing by an external tool. With the # SEARCHDATA_FILE tag the name of this file can be specified. SEARCHDATA_FILE = searchdata.xml # When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the # EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is # useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple # projects and redirect the results back to the right project. EXTERNAL_SEARCH_ID = # The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen # projects other than the one defined by this configuration file, but that are # all added to the same external search index. Each project needs to have a # unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id # of to a relative location where the documentation can be found. # The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ... EXTRA_SEARCH_MAPPINGS = #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = YES # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. # Note that when enabling USE_PDFLATEX this option is only used for # generating bitmaps for formulas in the HTML output, but not in the # Makefile that is written to the output directory. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, letter, legal and # executive. If left blank a4 will be used. PAPER_TYPE = a4 # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for # the generated latex document. The footer should contain everything after # the last chapter. If it is left blank doxygen will generate a # standard footer. Notice: only use this tag if you know what you are doing! LATEX_FOOTER = # The LATEX_EXTRA_FILES tag can be used to specify one or more extra images # or other source files which should be copied to the LaTeX output directory. # Note that the files will be copied as-is; there are no commands or markers # available. LATEX_EXTRA_FILES = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = YES # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = YES # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO # If LATEX_SOURCE_CODE is set to YES then doxygen will include # source code with syntax highlighting in the LaTeX output. # Note that which sources are shown also depends on other settings # such as SOURCE_BROWSER. LATEX_SOURCE_CODE = NO # The LATEX_BIB_STYLE tag can be used to specify the style to use for the # bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See # http://en.wikipedia.org/wiki/BibTeX for more info. LATEX_BIB_STYLE = plain #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load style sheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options related to the DOCBOOK output #--------------------------------------------------------------------------- # If the GENERATE_DOCBOOK tag is set to YES Doxygen will generate DOCBOOK files # that can be used to generate PDF. GENERATE_DOCBOOK = NO # The DOCBOOK_OUTPUT tag is used to specify where the DOCBOOK pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be put in # front of it. If left blank docbook will be used as the default path. DOCBOOK_OUTPUT = docbook #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. # This is useful # if you want to understand what is going on. # On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = YES # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_DEFINED tags. EXPAND_ONLY_PREDEF = YES # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # pointed to by INCLUDE_PATH will be searched when a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the := operator # instead of the = operator. PREDEFINED = __attribute__(x)= USE_GETTID __x86_64__ # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition that # overrules the definition found in the source code. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all references to function-like macros # that are alone on a line, have an all uppercase name, and do not end with a # semicolon, because these will confuse the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. For each # tag file the location of the external documentation should be added. The # format of a tag file without this location is as follows: # # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths # or URLs. Note that each tag file must have a unique name (where the name does # NOT include the path). If a tag file is not located in the directory in which # doxygen is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # If the EXTERNAL_PAGES tag is set to YES all external pages will be listed # in the related pages index. If set to NO, only the current project's # pages will be listed. EXTERNAL_PAGES = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option also works with HAVE_DOT disabled, but it is recommended to # install and use dot, since it yields more powerful graphs. CLASS_DIAGRAMS = YES # You can define message sequence charts within doxygen comments using the \msc # command. Doxygen will then run the mscgen tool (see # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the # documentation. The MSCGEN_PATH tag allows you to specify the directory where # the mscgen tool resides. If left empty the tool is assumed to be found in the # default search path. MSCGEN_PATH = # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = NO # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is # allowed to run in parallel. When set to 0 (the default) doxygen will # base this on the number of processors available in the system. You can set it # explicitly to a value larger than 0 to get control over the balance # between CPU load and processing speed. DOT_NUM_THREADS = 0 # By default doxygen will use the Helvetica font for all dot files that # doxygen generates. When you want a differently looking font you can specify # the font name using DOT_FONTNAME. You need to make sure dot is able to find # the font, which can be done by putting it in a standard location or by setting # the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the # directory containing the font. DOT_FONTNAME = Helvetica # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. # The default size is 10pt. DOT_FONTSIZE = 10 # By default doxygen will tell dot to use the Helvetica font. # If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to # set the path where dot can find it. DOT_FONTPATH = # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If the UML_LOOK tag is enabled, the fields and methods are shown inside # the class node. If there are many fields or methods and many nodes the # graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS # threshold limits the number of items for each type to make the size more # manageable. Set this to 0 for no limit. Note that the threshold may be # exceeded by 50% before the limit is enforced. UML_LIMIT_NUM_FIELDS = 10 # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT options are set to YES then # doxygen will generate a call dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable call graphs # for selected functions only using the \callgraph command. CALL_GRAPH = NO # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then # doxygen will generate a caller dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable caller # graphs for selected functions only using the \callergraph command. CALLER_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will generate a graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are svg, png, jpg, or gif. # If left blank png will be used. If you choose svg you need to set # HTML_FILE_EXTENSION to xhtml in order to make the SVG files # visible in IE 9+ (other browsers do not have this requirement). DOT_IMAGE_FORMAT = png # If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to # enable generation of interactive SVG images that allow zooming and panning. # Note that this requires a modern browser other than Internet Explorer. # Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you # need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files # visible. Older versions of IE do not have SVG support. INTERACTIVE_SVG = NO # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MSCFILE_DIRS tag can be used to specify one or more directories that # contain msc files that are included in the documentation (see the # \mscfile command). MSCFILE_DIRS = # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # nodes that will be shown in the graph. If the number of nodes in a graph # becomes larger than this value, doxygen will truncate the graph, which is # visualized by representing a node as a red box. Note that doxygen if the # number of direct children of the root node in a graph is already larger than # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. DOT_GRAPH_MAX_NODES = 50 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that the size of a graph can be further restricted by # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, because dot on Windows does not # seem to support this out of the box. Warning: Depending on the platform used, # enabling this option may lead to badly anti-aliased labels on the edges of # a graph (i.e. they become hard to read). DOT_TRANSPARENT = NO # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = YES # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES eztrace-1.1-7/extlib/litl/doc/PaxHeaders.7332/header.tex.in0000644000000000000000000000013212426414022020203 xustar0030 mtime=1415190546.310452975 30 atime=1508162273.661976737 30 ctime=1508162365.925749463 eztrace-1.1-7/extlib/litl/doc/header.tex.in0000644000175000017500000001317512426414022021401 0ustar00trahaytrahay00000000000000 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % FOR PRINTING \documentclass[ 11pt, a4paper, openright ]{report} \newcommand{\litl}{LiTL} \newcommand{\reporttitle}{\litl} \newcommand{\reportsubtitle}{Lightweight Trace Library @PACKAGE_VERSION@} \newcommand{\reportsubsubtitle}{User Manual} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{etex} \usepackage[utf8]{inputenc} \usepackage{pdflscape} \usepackage[T1]{fontenc} \usepackage[small,bf]{caption} % for plotting \usepackage{subfigure} \usepackage{graphicx} \usepackage{color} \usepackage{xcolor} \definecolor{ListingsKeywordColor}{rgb}{0,0,0.4} \definecolor{ListingsIdentifierColor}{rgb}{0,0.5,0} \definecolor{ListingsCommentColor}{rgb}{0.4,0.4,0.4} \definecolor{ListingsStringColor}{rgb}{0.6000,0.3333,0.7333}%{0.8,0,0} \definecolor{ListingsRuleSepColor}{rgb}{0,0,0} \definecolor{ListingsEmphColor}{rgb}{0,0.6667,0.6667} \definecolor{ListingsBreakSymbolColor}{rgb}{0.780,0.082,0.522} \definecolor{LinkColor}{rgb}{0,0,0.5} \definecolor{UnitColor}{rgb}{0,0,0} \definecolor{MathsVectorColor}{rgb}{0,0,0} \definecolor{MathsMatrixColor}{rgb}{0,0,0} \definecolor{MyGreen}{HTML}{228B22} \definecolor{MyBlue}{HTML}{0000FF} \colorlet{MatrixElementsLight}{gray!20!white} \colorlet{MatrixElementsDark}{gray!40} \usepackage{tikz} \usepackage{pgfplots} \usetikzlibrary{ external, arrows, positioning, decorations.pathmorphing, 3d } \tikzexternalize \tikzsetexternalprefix{imgs/tikz/} \tikzset{ external/export=false, %Define standard arrow tip >=stealth', %Define style for boxes punkt/.style={ rectangle, rounded corners, draw=black, very thick, text width=6.5em, minimum height=2em, text centered}, % Define arrow style pil/.style={ ->, semithick, shorten <= 0pt, shorten >= 0pt,}, pild/.style={ ->, thick, %>=angle 90, shorten <= 0pt, shorten >= 0pt,} } \pgfkeys{ /tikz/external/mode=list and make } \pgfplotsset{ xtick scale label code/.code={$\times 10^{#1}$} } \pgfplotsset{ ytick scale label code/.code={$\times 10^{#1}$} } \pgfplotsset{ invoke before crossref tikzpicture={\tikzexternaldisable}, invoke after crossref tikzpicture={\tikzexternalenable}, } % for listing \usepackage{listings} \lstset{ basicstyle=\scriptsize\ttfamily, tabsize=3, showtabs=false, showspaces=false, showstringspaces=false, tab=\rightarrowfill, keywordstyle=\color{ListingsKeywordColor}, identifierstyle=\color{ListingsIdentifierColor}, commentstyle=\color{ListingsCommentColor}, stringstyle=\color{ListingsStringColor}, emphstyle=\color{ListingsEmphColor}\bfseries\underbar, frame=none, rulesepcolor=\color{ListingsRuleSepColor}, numbers=left, numberstyle=\tiny, numbersep=5pt, captionpos=top, frame=tb, firstnumber=1, stepnumber=1, % numberfirstline=false, breaklines=true, breakatwhitespace=true, % prebreak=\mbox{\,$\color{ListingsBreakSymbolColor}\mathbf{\hookleftarrow}$}, mathescape=true, morekeywords={}, } \usepackage{url} \usepackage[final]{hyperref} \hypersetup{ % Farben fuer die Links colorlinks=false, % Links erhalten Farben statt Kaeten urlcolor=LinkColor, % \href{...}{...} external (URL) filecolor=LinkColor, % \href{...} local file linkcolor=LinkColor, %\ref{...} and \pageref{...} menucolor=LinkColor, citecolor=LinkColor, % Links raiselinks=true, % calculate real height of the link breaklinks, % Links berstehen Zeilenumbruch %backref=page, % Backlinks im Literaturverzeichnis (section, slide, page, none) %pagebackref=true, % Backlinks im Literaturverzeichnis mit Seitenangabe verbose, % hyperindex=true, % backlinkex index linktocpage=true, % Inhaltsverzeichnis verlinkt Seiten % hyperfootnotes=false, % Keine Links auf Fussnoten % Bookmarks % bookmarks=true, % Erzeugung von Bookmarks fuer PDF-Viewer bookmarksopenlevel=1, % Gliederungstiefe der Bookmarks bookmarksopen=false, % Expandierte Untermenues in Bookmarks bookmarksnumbered=true, % Nummerierung der Bookmarks bookmarkstype=toc, % Art der Verzeichnisses % Anchors plainpages=false, % Anchors even on plain pages ? pageanchor=true, % Pages are linkable % PDF Informationen pdftitle={\reporttitle: \reportsubtitle. \reportsubsubtitle}, % Titel pdfauthor={Roman Iakymchuk}, % Autor pdfcreator={LaTeX, hyperref, KOMA-Script}, pdfstartview=Fit, % Dokument wird Fit Height geaefnet pdffitwindow=true, pdfpagemode=UseOutlines, % Bookmarks im Viewer anzeigen % pdfpagelabels=true, % set PDF page labels } \usepackage{cleveref} \Crefname{figure}{Fig.}{Figs.} % to disable some warnings \usepackage{silence} \WarningFilter{latex}{Citation} \WarningFilter{latex}{Reference} \WarningFilter{latex}{Text page 8 contains only floats} \WarningFilter{rerunfilecheck}{File} \WarningFilter{latex}{There were undefined references} \WarningFilter{latex}{Label(s) may have changed} \newcommand{\bytes}{b} \newcommand{\kb}{Kb} \newcommand{\mb}{Mb} \newcommand{\ghz}{GHz} \newcommand{\flop}{Flop} \newcommand{\flops}{Flops} \newcommand{\gflops}{G\flops} \newcommand{\eztrace}{EZTrace} \newcommand{\fxt}{FxT} \newcommand{\pthread}{Pthreads} \newcommand{\openmp}{OpenMP} \newcommand{\mpi}{MPI} \newcommand{\dash}{ -- } eztrace-1.1-7/extlib/litl/doc/PaxHeaders.7332/user_manual.tex.in0000644000000000000000000000013212426414022021266 xustar0030 mtime=1415190546.310452975 30 atime=1508162273.649975772 30 ctime=1508162365.925749463 eztrace-1.1-7/extlib/litl/doc/user_manual.tex.in0000644000175000017500000005424612426414022022470 0ustar00trahaytrahay00000000000000\include{header} % Title Page \title{ {\Huge\bf \reporttitle{}}\\[6mm] {\LARGE\bf \reportsubtitle}\\[12mm] {\Large\bf \reportsubsubtitle}} \author{Roman Iakymchuk and Fran\c{c}ois Trahay} \begin{document} \hypersetup{pageanchor=false} \maketitle \hypersetup{pageanchor=true} % \setcounter{page}{2} \tableofcontents \chapter{License of \litl} Copyright (c) 2013, Télécom SudParis\\ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: \begin{itemize} \item Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. \item Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. \end{itemize} THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \chapter{Overview of \litl} \litl{}~\cite{litl} is a lightweight binary trace library that aims at providing performance analysis tools with a scalable event recording mechanism that utilizes minimum resources of the CPU and memory. In order to efficiently analyze modern HPC applications that combine \openmp{} (or \pthread) threads and \mpi{} processes, we design and implement various mechanisms to ensure the scalability of \litl{} for a large number of both threads and processes. \litl{} is designed in order to resolve the following performance tracing issues: \begin{itemize} \item Scalability and the number of threads; \item Scalability and the number of recorded traces; \item Optimization in the storage capacity usage. \end{itemize} As a result, \litl{} provides similar functionality to standard event recording libraries and records events only from user-space. \litl{} minimizes the usage of the CPU time and memory space in order to avoid disturbing the application that is being analyzed. Also, \litl{} is fully thread-safe that allows to record events from multi-threaded applications. Finally, \litl{} is a generic library that can be used in conjunction with many performance analysis tools and frameworks. \chapter{Installation} \section{Requirements} In order to use \litl{}, the following software is required: \begin{enumerate} \item autoconf of version 2.63; \end{enumerate} \section{Getting \litl} Current development version of \litl{} is available via Git\\ \hspace*{0.9cm}\texttt{git clone git+ssh://fusionforge.int-evry.fr//var/lib/}\\ \hspace*{0.9cm}\texttt{gforge/chroot/scmrepos/git/litl/litl.git}\\ After getting the latest development version from Git, the following command should be run\\ \hspace*{0.9cm}\texttt{./bootstrap}\\ And, only afterwards the tool can be built. \section{Building \eztrace{}} At first, to configure \litl{} the following configure script should be invoked\\ \hspace*{0.9cm}\texttt{./configure -\,-prefix=}\\ The configuration script contains many different options that can be set. However, during the first try we recommend to use the default settings. Once \litl{} is configured, the next two commands should be executed to complete the building\\ \hspace*{0.9cm}\texttt{make}\\ \hspace*{0.9cm}\texttt{make install} In order to check whether \litl{} was installed correctly, a set of tests can be run as\\ \hspace*{0.9cm}\texttt{make check} \chapter{How to Use \litl{}?} \section{Reading Events} After the application was traced and events were recorded into binary trace files, those traces can be analyzed using \texttt{litl\_read} as\\ \hspace*{0.9cm}\texttt{litl\_read -f trace.file}\\ This utility shows the recorded events in the following format: \begin{itemize} \item Time since last probe record on the same CPU; \item ID of the current thread on this CPU; \item Event type; \item Code of the probe; \item Number of parameters of the probe; \item List of parameters of the probe, if any. \end{itemize} \section{Merging Traces} Once the traces were recorded, they can be merged into an archive of traces for further processing by the following command\\ \hspace*{0.9cm}\texttt{litl\_read -o archive.trace trace.0 trace.1 ... trace.n} \section{Splitting Traces} In case of a need for a detailed analysis of a particular trace files, an archive of traces can be split back into separate traces by\\ \hspace*{0.9cm}\texttt{litl\_read -f archive.trace -d output.dir} \section{Environment Variables} For a more flexible and comfortable usage of \litl{}, we provide the following environment variables: \begin{itemize} \item \texttt{LITL\_BUFFER\_SIZE} provides users with the alternative possibility to set a buffer size. If the variable is not specified, then the provided value inside the application is used; \item \texttt{LITL\_BUFFER\_FLUSH} specifies the behavior of \litl{} when the event buffer is full. If it is set to ``0'', \litl{} stop recording events. The trace is, thus, truncated and there is no impact on the application performance. If it is set to ``1'' the buffer is written to disk and additional events can be recorded. This permits to record traces that are larger than the buffer size. Please note that the Flush policy may have a significant impact on the application performance since it requires to write a large amount of data to disk during the execution of the application. The default value is \textbf{0}. \item \texttt{LITL\_TID\_RECORDING} provides users with an alternative possibility to enable or disable tid recording. If it is set to ``1'', the tid recording is enabled. Otherwise, when it is set to ``0'', the tid recording is disable; The default value is \textbf{1}. \item \texttt{LITL\_THREAD\_SAFETY} specifies the behavior of \litl{} while tracing multi-threaded applications. If it is set to ``1'', the thread safety is enabled. Otherwise, when it is set to ``0'', the event recording is not thread safe; The default value is \textbf{1}. \item \texttt{LITL\_TIMING\_METHOD} specifies the timing method that will be used during the recording phase. The \litl{} timing methods can be divided into two groups: those that measure time in clock ticks and those that rely on the \texttt{clock\_gettime()} function. The first group has only one method: \begin{itemize} \item \texttt{ticks} that uses the CPU specific register, e.g. rdtsc on X86 and X86\_64 architectures. \end{itemize} The second group comprises of the other five different methods: \begin{itemize} \item \texttt{monotonic} that corresponds to \texttt{CLOCK\_MONOTONIC}; \item \texttt{monotonic\_raw}\dash{}\texttt{CLOCK\_MONOTONIC\_RAW}; \item \texttt{realtime}\dash{}\texttt{CLOCK\_REALTIME}; \item \texttt{thread\_cputime}\dash{}\texttt{CLOCK\_THREAD\_CPUTIME\_ID}; \item \texttt{process\_cputime}\dash{}\texttt{CLOCK\_PROCESS\_CPUTIME\_ID}. \end{itemize} User can also define its own timing method and set the environment variable accordingly. \end{itemize} \chapter{\litl{} in Details} \section{Event Types and The Storage Usage} Each event in the \litl{} library consists of two parts: the event core (the event code, the time when the event occurred, the thread identifier, and the number of parameters) and event parameters. The number of event parameters recorded by \litl{} varies from zero to ten. The parameters passed to each event have different data type. In order to handle the variety of possible cases, event's parameters in \litl{} can be represented by the largest data type, which is \texttt{uint64\_t} on x86\_64 architectures. Hence, any parameter -- no matter whether it is a \texttt{char}, an \texttt{int} or a \texttt{long int} -- can be recorded without being truncated. However, the reserved slot for each parameter is often bigger than its actual size. Thus, this leads to the non-optimal usage of resources. Our goal is to keep trace files as small as possible without losing any of the recorded data. Therefore, we propose to use the compacted event storage that aims at utilizing every byte from the allocated space. In our approach, we introduce three different types of events: regular, raw, and packed. The regular event is without any major optimization being involved. The raw event stores parameters in the string format. Its purpose is to gather either the regular parameters in a string format or the information about the abnormal behavior of applications like thrown exceptions. The packed event represents the optimized versions of storing events, where each parameter can be saved as a group of bytes. Accordingly, by using the event type packed for recording and storing events, we theoretically are capable to save up to 65\,\% of the disk space compare to the regular \litl{}. \Cref{fig:event_storage_fxt} shows, on an example of three regular events with different number of parameters, the occupied space of events within the trace file recorded by \eztrace\ with \litl{}. We symbolically partitioned the trace file into bytes and also chunks of bytes, which store event's components. The space occupied by each event is highlighted with parentheses. \begin{landscape} \input{@top_srcdir@/doc/tikz/event.storage.all.line.packed} \input{@top_srcdir@/doc/tikz/event.storage.trace.file} \end{landscape} \Cref{fig:event_storage_litl} shows the storage of the recorded packed events in the trace file while using \eztrace\ with \litl{}. We consider one particular scenario when each event's parameter can be represented by \texttt{uint8\_t}; this requires only one byte for the storage. To store larger event's parameters we use arrays of \texttt{uint8\_t}. This scenario corresponds to the optimal performance in terms of the memory and disk space usage. Under this approach, not only the size of the core event's components is shrunk, but also the size of event's parameters is reduced significantly. The gained performance, e.i. the reduced space, can be characterized by the gray area that corresponds to the difference in storage between the regular and packed events. The size of three packed events is smaller than the size of one regular event with five parameters. This figure confirms our assumption regarding the possibility of reducing the size of both the recorded events and trace files. \section{Scalability vs. the Number of Threads} The advent of multi-core processor have led to the increase in the number of processing units per machine. It becomes usual to equip a typical high performance computing platform with 8, 16, or even more cores per node. In order to exploit efficiently such facilities, developers can use hybrid programming models that mix \openmp{} (or \pthread) threads and \mpi{} processes within one application. Hence, the number of threads per node, which executes the same application, can be quite large\dash{}8, 16, or even more threads. The number of threads per node is the scalability issue for the conventional binary tracing libraries such as \fxt{}~\cite{Danjean05FxT}, because in its implementation all threads within one process record events into a single buffer, see~\Cref{fig:event_recording_fxt}. This recording mechanism causes a {\em contention} problem\dash{}when multiple threads record events simultaneously, the pointer to the next available slot in the buffer is changed concurrently. The modifications of the pointer can be done atomically in order to preserve the data consistency. However, the atomic operation does not scale quite well when it is performed by a large number of threads at the same time. Thus, analyzing \openmp{} applications that run lots of threads using such tracing libraries may result in the high overhead. \input{@top_srcdir@/doc/tikz/event.recording.all} \subsection{Recording Events} While designing \litl{}, we aim at resolving the above-mentioned limitation of \fxt{}. Thus, we propose to record events into separate buffers, meaning to have one buffer per thread instead of one buffer per process. This approach is illustrated on~\Cref{fig:event_recording_litl}. To keep multiple buffers in order within the trace file, we add a header into the trace file with the information regarding the number of threads and pairs \emph{}; \emph{tid} stands for the thread identifier; \emph{offset} corresponds to the position of the first chunk of events for a given thread within the trace starting from its beginning. The last event of each chunk contains either an \emph{offset} to the next chunk of events or a symbol specifying the end of recording for a given thread. While flushing the current buffer to the trace file, the following two actions are performed: \begin{enumerate} \item Setting the offset of the current chunk to specify the end of the recording; \item Update the offset from the previous chunk to point to the current one. \end{enumerate} \Cref{fig:event_storage_trace} demonstrates the storage mechanism on an example of three threads, including the positioning of chunks of events as well as the way of linking those chunks into one chain of the corresponding thread using offsets. During the application execution, it may occur that some threads start recording events later than others. This scenario requires appropriate modifications and adjustments to the above approach. According to the previous approach, the header is the first block of data that is added to the trace file; it is written before flushing the first chunk of events. Thus, the header contains the information only regarding the started threads. In order to add pairs \emph{} of the late threads, we reserve a space for $64$ pairs (chunk of pairs) between chunks of events within the trace file. So, when one among those late threads wants to flush its buffer to the trace file, we add its pair \emph{} directly to the next free spot in the chunk of pairs. The chunks of pairs are binded with offset in the same way as chunks of events. Therefore, \eztrace{} does not have limitations on the number of threads per process and also processes. \subsection{Post-Mortem Analysis} We develop the functionality for analyzing the generated traces by capturing the procedure of the event recording mechanism. At first, \litl{} reads the trace header with the information regarding the buffer size, threads (the number of threads, tids, and offsets), and also pairs \emph{} that correspond to the late threads. Using this preliminary information, \litl{} allocates memory buffers for reading; the number of buffers equals the number of threads used during the recording phase, meaning one buffer per thread. Then, \litl{} loads chunks of events from the trace file into these buffers using pairs \emph{}. After processing the first chunks of events, \litl{} loads the buffers with the next ones using the information concerning their positions in the trace, which is given by the offsets. This procedure is recursive and stops when the symbol specifying the end of recording is reached. \section{Scalability vs. the Number of Traces} Usually binary tracing libraries generate one trace file per process. This means that for parallel applications with hundreds of \mpi{} processes the equal amount of trace files is created. This is one side of the problem. The other side appears while analyzing the applications execution due to the limitation on the number of trace files that can be opened and processed at the same time. Therefore, often those tracing libraries do not perform well and even crashes when the number of traces exceeds the Linux OS limit on the number of simultaneously opened files. In order to overcome the opened files limitation imposed by the Linux OS, one may increase the limit to the maximum possible value. However, this would temporarily solve the problem. Instead, we propose to create archives of traces during the post-mortem phase. More precisely, we suggest to merge multiple traces into a trace archive using the \texttt{litl\_merge} utility from \litl. \Cref{fig:storage_trace_merge} illustrates the structure of the new combined trace created by \texttt{litl\_merge}. The archives of traces preserve all information concerning each trace: headers, pairs \emph{}, and positioning of events chunks. They also contain new global headers that store the information regarding the amount of trace files in the archive and triples \emph{}; \emph{fid} stands for a file identifier; \emph{size} is a size of a particular trace file; \emph{offset} holds the position of a trace file within the archive of traces. Therefore, archives of traces not only solve the performance analysis problem, but also make the further analysis of the applications performance more convenient. One more useful feature provided by \litl{}, which is the opposite of \texttt{litl\_merge}, is a possibility to extract trace files from archives with the \texttt{litl\_split} utility. This utility can be applied when there is a need to analyze a particular trace or a set of traces among the merged ones. \begin{landscape} \input{@top_srcdir@/doc/tikz/event.storage.trace.file.merge} \end{landscape} \chapter{\litl{} in \fxt{} Applications} In this chapter, we present an approach of integrating \litl\ (as a possible replacement of \fxt{} and enable its usage in parallel with \fxt) into applications that already reply on \fxt{}. To simplify the process of integrating \litl\ into such applications, we map the functionality of \litl\ into the corresponding functionality from \fxt\ in \texttt{fxt.h} and \texttt{fut.h} headers; those files are part of \litl. As a result, developers of those applications can easier switch between two binary trace libraries and use \litl\ in conjunction with these two header files. Therefore, only minor changes are applied to the applications code. Even though \litl\ and \fxt\ target the same issue of gathering the information of the application execution, they have differences in the organization of the event recording as well as the event reading processes. In order to deal with those differences, we suggest to modify \fxt-related applications by following our suggestions. \section{Recording Events} The main difference between two trace libraries is in the organization of the initialization phase of the event recording process. So, in \fxt\ it is implemented as \lstset{language=C, caption={}, label={lstl:fxt}} \begin{lstlisting} fut_set_filename(filename); if (allow_flush && ...) { enable_fut_flush(); } fut_enable_tid_logging(); // IMPORTANT! fut_setup is AFTER all auxiliary functions if (fut_setup(buffer_size, FUT_KEYMASKALL, thread_id) < 0) { perror("fut_setup"); } \end{lstlisting} While in \litl\ the procedure is the following \lstset{language=C, caption={}, label={lstl:litl}} \begin{lstlisting} litl_trace = litl_write_init_trace(buffer_size); // the recording should be paused, because some further functions, // e.g. *_set_filename() can be intercepted litl_write_pause_recording(litl_trace); if (allow_flush && ...) { litl_write_buffer_flush_on(litl_trace); } litl_write_tid_recording_on(litl_trace); litl_write_set_filename(litl_trace, filename); // Do not forget to resume recording litl_write_resume_recording(litl_trace); \end{lstlisting} The mapping between the \litl\ and \fxt\ functions, which is implemented in \texttt{fut.h} and \texttt{fxt.h}, is organized as follow \begin{center} \begin{tabular}{lll} \hline\\ \texttt{fut\_setup()} & $\rightarrow$ & \texttt{litl\_write\_init\_trace()}\\ & & \texttt{litl\_write\_pause\_recording()}\\ \texttt{enable\_fut\_flush()} & $\rightarrow$ & \texttt{litl\_write\_buffer\_flush\_on()}\\ \texttt{fut\_enable\_tid\_logging()} & $\rightarrow$ & \texttt{litl\_write\_tid\_recording\_on()} \\ \texttt{fut\_set\_filename()} & $\rightarrow$ & \texttt{litl\_write\_set\_filename()}\\ & & \texttt{litl\_write\_resume\_recording()}\\ \hline\\ \end{tabular} \end{center} As a result, \litl\ can be used within the \fxt-related applications by simply replacing the \fxt\ code as follow \lstset{language=C, caption={}, label={lstl:litl_new}} \begin{lstlisting} // IMPORTANT! fut_setup is BEFORE all auxiliary functions if (fut_setup(buffer_size, FUT_KEYMASKALL, thread_id) < 0) { perror("fut_setup"); } fut_set_filename(filename); if (allow_flush && ...) { enable_fut_flush(); } fut_enable_tid_logging(); \end{lstlisting} Finally, the mapping between the \litl\ and \fxt\ event recording functions is organized as \begin{center} \begin{tabular}{lll} \hline\\ \texttt{FUT\_DO\_PROBEx()} & $\rightarrow$ & \texttt{litl\_write\_probe\_pack\_x()}\\ \texttt{FUT\_DO\_PROBE()} & $\rightarrow$ & \texttt{litl\_write\_probe\_pack\_0()}\\ \texttt{FUT\_DO\_PROBESTR()} & $\rightarrow$ & \texttt{litl\_write\_probe\_raw()}\\ \hline\\ \end{tabular} \end{center} For the successful and easy porting of \litl\ into your \fxt-related applications the above-mentioned suggestions needs to be incorporated. \chapter{Troubleshooting} If you encounter a bug or want some explanation about \litl{}, please contact and ask our development team on the development mailing list \begin{itemize} \item \url{litl-devel@fusionforge.int-evry.fr}. \end{itemize} \bibliographystyle{plain} \cleardoublepage \phantomsection \addcontentsline{toc}{chapter}{Bibliography} \small \bibliography{@top_srcdir@/doc/references} \normalsize \end{document} eztrace-1.1-7/extlib/litl/doc/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212632273316017670 xustar0030 mtime=1449752270.432876297 30 atime=1508162189.103646793 30 ctime=1508162365.917748765 eztrace-1.1-7/extlib/litl/doc/Makefile.am0000644000175000017500000000275112632273316021064 0ustar00trahaytrahay00000000000000if WITHDOC if HAVE_DOXYGEN doxyfile.stamp: $(DOXYGEN) Doxyfile echo Timestamp > doxyfile.stamp CLEANFILES = doxyfile.stamp all-local: doxyfile.stamp latex/refman.pdf latex/refman.pdf: $(MAKE) -C latex clean-local: rm -rf $(top_srcdir)/doc/man html latex doxyfile.stamp EXTRA_DIST = html \ $(top_srcdir)/doc/tikz/event.recording.all.tex\ $(top_srcdir)/doc/tikz/event.storage.all.line.packed.tex\ $(top_srcdir)/doc/tikz/event.storage.trace.file.merge.tex\ $(top_srcdir)/doc/tikz/event.storage.trace.file.tex \ $(top_srcdir)/doc/references.bib install-data-local: for f in `find $(builddir)/html` ; do \ $(INSTALL_DATA) -D $$f \ $(DESTDIR)$(datadir)/doc/$(PACKAGE)/$$f ; done $(INSTALL_DATA) -D $(builddir)/latex/refman.pdf \ $(DESTDIR)$(datadir)/doc/$(PACKAGE)/ uninstall-local: rm -rf $(DESTDIR)$(datadir)/doc/$(PACKAGE)/html \ $(DESTDIR)$(datadir)/doc/$(PACKAGE)/refman.pdf endif if HAVE_LATEXMK doc_DATA = user_manual.pdf docfiles = user_manual.pdf MANNAME = user_manual MANTEXSRC = $(MANNAME).tex MANAUX = $(MANNAME).aux MANPDF = $(MANNAME).pdf CLEANFILES = $(MANPDF) $(MANNAME).log $(MANNAME).idx $(MANNAME).out \ $(MANNAME).toc $(MANAUX) $(MANNAME).auxlock $(MANNAME).bbl \ $(MANNAME).blg $(MANNAME).fdb_latexmk $(MANNAME).fls header.aux $(MANPDF): $(MANTEXSRC) latexmk -pdf -pdflatex="pdflatex -interaction=nonstopmode" -bibtex $< #dist_doc_DATA = $(docfiles) endif endif #WITHDOC eztrace-1.1-7/extlib/litl/doc/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135250017672 xustar0030 mtime=1508162216.685592033 30 atime=1508162273.633974485 30 ctime=1508162365.925749463 eztrace-1.1-7/extlib/litl/doc/Makefile.in0000644000175000017500000004256013171135250021070 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = Doxyfile user_manual.tex header.tex CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(docdir)" DATA = $(doc_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Doxyfile.in $(srcdir)/Makefile.in \ $(srcdir)/header.tex.in $(srcdir)/user_manual.tex.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLOCK_GETTIME_AVAIL = @CLOCK_GETTIME_AVAIL@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOXYGEN = @DOXYGEN@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FORCE_32BIT = @FORCE_32BIT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIZEOF_SIZE_T = @SIZEOF_SIZE_T@ STRIP = @STRIP@ USE_GETTID = @USE_GETTID@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@CLEANFILES = doxyfile.stamp @HAVE_LATEXMK_TRUE@@WITHDOC_TRUE@CLEANFILES = $(MANPDF) $(MANNAME).log $(MANNAME).idx $(MANNAME).out \ @HAVE_LATEXMK_TRUE@@WITHDOC_TRUE@ $(MANNAME).toc $(MANAUX) $(MANNAME).auxlock $(MANNAME).bbl \ @HAVE_LATEXMK_TRUE@@WITHDOC_TRUE@ $(MANNAME).blg $(MANNAME).fdb_latexmk $(MANNAME).fls header.aux @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@EXTRA_DIST = html \ @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@ $(top_srcdir)/doc/tikz/event.recording.all.tex\ @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@ $(top_srcdir)/doc/tikz/event.storage.all.line.packed.tex\ @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@ $(top_srcdir)/doc/tikz/event.storage.trace.file.merge.tex\ @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@ $(top_srcdir)/doc/tikz/event.storage.trace.file.tex \ @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@ $(top_srcdir)/doc/references.bib @HAVE_LATEXMK_TRUE@@WITHDOC_TRUE@doc_DATA = user_manual.pdf @HAVE_LATEXMK_TRUE@@WITHDOC_TRUE@docfiles = user_manual.pdf @HAVE_LATEXMK_TRUE@@WITHDOC_TRUE@MANNAME = user_manual @HAVE_LATEXMK_TRUE@@WITHDOC_TRUE@MANTEXSRC = $(MANNAME).tex @HAVE_LATEXMK_TRUE@@WITHDOC_TRUE@MANAUX = $(MANNAME).aux @HAVE_LATEXMK_TRUE@@WITHDOC_TRUE@MANPDF = $(MANNAME).pdf all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): @HAVE_DOXYGEN_TRUE@Doxyfile: $(top_builddir)/config.status $(srcdir)/Doxyfile.in @HAVE_DOXYGEN_TRUE@ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ user_manual.tex: $(top_builddir)/config.status $(srcdir)/user_manual.tex.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ header.tex: $(top_builddir)/config.status $(srcdir)/header.tex.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-docDATA: $(doc_DATA) @$(NORMAL_INSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-docDATA: @$(NORMAL_UNINSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am @HAVE_DOXYGEN_FALSE@all-local: @WITHDOC_FALSE@all-local: all-am: Makefile $(DATA) all-local installdirs: for dir in "$(DESTDIR)$(docdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." @HAVE_DOXYGEN_FALSE@clean-local: @WITHDOC_FALSE@clean-local: @HAVE_DOXYGEN_FALSE@uninstall-local: @WITHDOC_FALSE@uninstall-local: @HAVE_DOXYGEN_FALSE@install-data-local: @WITHDOC_FALSE@install-data-local: clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-docDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-docDATA uninstall-local .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ clean-libtool clean-local cscopelist-am ctags-am distclean \ distclean-generic distclean-libtool distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-data-local install-docDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags-am uninstall uninstall-am uninstall-docDATA \ uninstall-local .PRECIOUS: Makefile @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@doxyfile.stamp: @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@ $(DOXYGEN) Doxyfile @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@ echo Timestamp > doxyfile.stamp @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@all-local: doxyfile.stamp latex/refman.pdf @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@latex/refman.pdf: @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@ $(MAKE) -C latex @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@clean-local: @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@ rm -rf $(top_srcdir)/doc/man html latex doxyfile.stamp @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@install-data-local: @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@ for f in `find $(builddir)/html` ; do \ @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@ $(INSTALL_DATA) -D $$f \ @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@ $(DESTDIR)$(datadir)/doc/$(PACKAGE)/$$f ; done @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@ $(INSTALL_DATA) -D $(builddir)/latex/refman.pdf \ @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@ $(DESTDIR)$(datadir)/doc/$(PACKAGE)/ @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@uninstall-local: @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@ rm -rf $(DESTDIR)$(datadir)/doc/$(PACKAGE)/html \ @HAVE_DOXYGEN_TRUE@@WITHDOC_TRUE@ $(DESTDIR)$(datadir)/doc/$(PACKAGE)/refman.pdf @HAVE_LATEXMK_TRUE@@WITHDOC_TRUE@$(MANPDF): $(MANTEXSRC) @HAVE_LATEXMK_TRUE@@WITHDOC_TRUE@ latexmk -pdf -pdflatex="pdflatex -interaction=nonstopmode" -bibtex $< #dist_doc_DATA = $(docfiles) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/litl/PaxHeaders.7332/install-sh0000644000000000000000000000013213171135250017061 xustar0030 mtime=1508162216.641588825 30 atime=1508162216.641588825 30 ctime=1508162365.745733759 eztrace-1.1-7/extlib/litl/install-sh0000755000175000017500000003546313171135250020266 0ustar00trahaytrahay00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2014-09-12.12; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) # $RANDOM is not portable (e.g. dash); use it when possible to # lower collision chance tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 # As "mkdir -p" follows symlinks and we work in /tmp possibly; so # create the $tmpdir first (and fail if unsuccessful) to make sure # that nobody tries to guess the $tmpdir name. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/extlib/litl/PaxHeaders.7332/README0000644000000000000000000000013212426414022015737 xustar0030 mtime=1415190546.310452975 30 atime=1507797543.998894509 30 ctime=1508162365.741733411 eztrace-1.1-7/extlib/litl/README0000644000175000017500000000372712426414022017137 0ustar00trahaytrahay00000000000000 LiTL: Lightweight Trace Library ============================================= LiTL is a lightweight tool for recording events during the execution of scientific high-performance applications. LiTL is designed to record events on the user level only. Therefore, it consumes much less resources (CPU time, memory, and the disk space) as the alternative tools, e.g. FxT that gather events on both user and kernel levels. As a result, LiTL is well-suited for recording events on embedded systems like ARM architectures. Requirements ============================================= In order to use LiTL, the following software is needed: * autoconf 2.63; Getting LiTL ============================================= Current development version of LiTL is available via Git git clone git+ssh://fusionforge.int-evry.fr//var/lib/gforge/chroot/ scmrepos/git/litl/litl.git After getting the latest development version (from Git), './bootstrap' should be run in the root directory and only then the tool can be built. Installing LiTL ============================================= At first, to configure LiTL the following script should be invoked: $ ./configure --prefix= The configuration script contains many different options that can be set. However, we recommend to use the default settings. Once LiTL is configured, the next two commands should be executed: $ make $ make install In order to check whether LiTL was installed correctly, a set of tests can be run as $ make check Using LiTL ============================================= litl_print ---------- This tool is used to analyze trace files produced by LiTL as $ litl_print -f trace.file litl_merge ---------- This tool is used to merge severals traces into one archive as $ litl_merge -o archive.trace trace.0 trace.1 ... trace.n litl_split ---------- This tool is used to split an archive of traces into separate trace files as $ litl_split -f archive.trace -d output.dir eztrace-1.1-7/extlib/litl/PaxHeaders.7332/configure.ac0000644000000000000000000000013213046641054017353 xustar0030 mtime=1486570028.992127993 30 atime=1508162184.175314504 30 ctime=1508162365.725732015 eztrace-1.1-7/extlib/litl/configure.ac0000644000175000017500000001056313046641054020547 0ustar00trahaytrahay00000000000000# Copyright © Télécom SudParis. # See COPYING in top-level directory. # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.68]) AC_INIT([litl], [0.1.8], [litl-devel@fusionforge.int-evry.fr]) AM_INIT_AUTOMAKE([1.10 tar-pax color-tests]) # Checks for programs. AC_PROG_CC AC_PROG_INSTALL AC_PROG_MAKE_SET AC_PROG_LIBTOOL AM_PROG_CC_C_O # Checks for libraries. AC_CHECK_LIB([m], [ceil]) AC_CHECK_LIB([rt], [clock_gettime]) AC_CONFIG_MACRO_DIR([m4]) # Checks for header files. AC_CHECK_HEADERS([stdint.h stdlib.h stdio.h string.h math.h time.h sys/stat.h \ unistd.h sys/syscall.h]) # Checks for typedefs, structures, and compiler characteristics. AC_TYPE_UINT8_T AC_TYPE_UINT16_T AC_TYPE_UINT32_T AC_TYPE_UINT64_T AC_DEFUN([wrp_CHECK_SIZEOF_AND_SUBST], [ AC_REQUIRE([AC_PROG_AWK]) AC_CHECK_SIZEOF([$1]) m4_pushdef([name],SIZEOF_[]m4_toupper(m4_translit($1,[ *],[_p]))) name=$($AWK '/name/{print $[]3}' confdefs.h) AC_SUBST(name) m4_popdef([name]) ]) wrp_CHECK_SIZEOF_AND_SUBST([size_t]) #AC_MSG_ERROR(sizeof size_t: $sizeof_size_t / $SIZEOF_SIZE_T) #AC_SUBST(SIZEOF_SIZE_T) # Checks for library functions. AC_FUNC_MALLOC AC_ARG_ENABLE([gettid], AC_HELP_STRING([--enable-gettid], [Use syscall(SYS_gettid) to get the thread ID instead of pthread_self(). This however costs a system call for each trace entry])) if test "x$enable_gettid" = xyes; then use_gettid=yes fi if test "x$use_gettid" = xyes ; then AC_SUBST(USE_GETTID, 1) else AC_SUBST(USE_GETTID, 0) fi # On many multicore CPUs, clock cycles are not synchronized. Therefore, we # prefer to use clock_gettime() instead of time stamp counter (clock cycles). AC_MSG_CHECKING([for clock_gettime(CLOCK_REALTIME)]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[ #include struct timespec tp; ]], [[ clock_gettime(CLOCK_REALTIME, &tp); ]])], have_clock_gettime=yes AC_DEFINE(CLOCK_GETTIME_AVAIL, [1], [Use clock_gettime]) AC_MSG_RESULT([yes]), AC_MSG_RESULT([no]) ) if test "x$have_clock_gettime" = xyes ; then AC_SUBST(CLOCK_GETTIME_AVAIL, 1) else AC_SUBST(CLOCK_GETTIME_AVAIL, 0) fi # Check the architecture type case "$host" in x86_64-*) AC_MSG_WARN([ARCH: X86_64]) arch_str="X86_64" ;; arm*-*) AC_MSG_WARN([ARCH: ARM]) arch_str="ARM" ;; i686*-*) AC_MSG_WARN([ARCH: i686]) arch_str="i686" ;; *) AC_MSG_WARN([unknown architecture: falling back to x86_64]) ;; esac # Check whether 32-bit library will be built AC_ARG_ENABLE([32bit], AC_HELP_STRING([--enable-32bit], [build 32-bit library])) if test "x$enable_32bit" = xyes; then AC_SUBST(FORCE_32BIT, 1) else AC_SUBST(FORCE_32BIT, 0) fi build_doc=no AC_ARG_WITH(doc, [AS_HELP_STRING([--with-doc], [Generate documentation])], [if test x$withval != xno ; then build_doc=yes fi], [build_doc=no]) if test "x$build_doc" = "xyes" ; then AC_MSG_RESULT(Documentation will be generated) # Check for presence of pdfLaTeX AC_CHECK_PROG(PDFLATEX, pdflatex, pdflatex) if test -z "$PDFLATEX"; then AC_MSG_WARN([Unable to create PDF version of the user manual -- pdflatex is missing!]) fi # Check for presence of latexmk AC_CHECK_PROG(LATEXMK, latexmk, latexmk) if test -z "$LATEXMK"; then AC_MSG_WARN([Unable to create PDF version of the user manual -- latemk is missing!]) fi # Check for presence of doxygen AC_CHECK_PROGS([DOXYGEN], [doxygen]) if test -z "$DOXYGEN"; then AC_MSG_WARN([Doxygen not found - continuing without Doxygen support]) fi else AC_MSG_RESULT(Documentation will not be generated) fi AM_CONDITIONAL([WITHDOC], [test "$with_doc" = "yes"]) AM_CONDITIONAL([HAVE_PDFLATEX], test -n "$PDFLATEX") AM_CONDITIONAL([HAVE_LATEXMK], test -n "$LATEXMK") AM_CONDITIONAL([HAVE_DOXYGEN], [test -n "$DOXYGEN"])AM_COND_IF([HAVE_DOXYGEN], [AC_CONFIG_FILES([doc/Doxyfile])]) AC_SUBST(libdir) AC_SUBST(exec_prefix) AC_SUBST(prefix) AC_SUBST(includedir) AC_OUTPUT([Makefile litl.pc \ src/Makefile \ src/litl_config.h \ utils/Makefile \ tests/Makefile \ doc/Makefile \ doc/user_manual.tex \ doc/header.tex ]) eztrace-1.1-7/extlib/litl/PaxHeaders.7332/litl.pc.in0000644000000000000000000000013112426414022016753 xustar0030 mtime=1415190546.310452975 29 atime=1508162273.54996773 30 ctime=1508162365.729732363 eztrace-1.1-7/extlib/litl/litl.pc.in0000644000175000017500000000032112426414022020137 0ustar00trahaytrahay00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: LiTL Description: LiTL -- Lightweight Trace Library Version: @VERSION@ Libs: -L${libdir} -llitl Cflags: -I${includedir} eztrace-1.1-7/extlib/litl/PaxHeaders.7332/src0000644000000000000000000000013213171135475015603 xustar0030 mtime=1508162365.789737598 30 atime=1508162367.741908015 30 ctime=1508162365.789737598 eztrace-1.1-7/extlib/litl/src/0000755000175000017500000000000013171135475017047 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/litl/src/PaxHeaders.7332/litl_read.c0000644000000000000000000000013213143047722017757 xustar0030 mtime=1502367698.656455918 30 atime=1508138852.875343497 30 ctime=1508162365.789737598 eztrace-1.1-7/extlib/litl/src/litl_read.c0000644000175000017500000003513613143047722021156 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ #include #include #include #include #include #include #include "litl_tools.h" #include "litl_read.h" /* * Initializes the trace header */ static void __litl_read_init_trace_header(litl_read_trace_t* trace) { int res; litl_size_t header_size, general_header_size; general_header_size = sizeof(litl_general_header_t); // read the trace header header_size = sizeof(litl_general_header_t); trace->header_buffer_ptr = (litl_buffer_t) malloc(header_size); if (!trace->header_buffer_ptr) { perror("Could not allocate memory for the trace header!"); exit(EXIT_FAILURE); } res = read(trace->f_handle, trace->header_buffer_ptr, header_size); // If the end of file is reached, then all data are read; res = 0. // Otherwise, res equals the number of elements (= 1) or the error // occurred and res = -1. if (res == -1) { perror("Could not read the trace header!"); exit(EXIT_FAILURE); } // init the trace header trace->header = (litl_general_header_t *) trace->header_buffer_ptr; // get the number of processes trace->nb_processes = trace->header->nb_processes; // relocate the header buffer header_size += trace->nb_processes * sizeof(litl_process_header_t); trace->header_buffer_ptr = (litl_buffer_t) realloc(trace->header_buffer_ptr, header_size); // read the trace header res = read(trace->f_handle, trace->header_buffer_ptr + general_header_size, header_size - general_header_size); if (res == -1) { perror("Could not read the trace header!"); exit(EXIT_FAILURE); } trace->header = (litl_general_header_t *) trace->header_buffer_ptr; trace->header_buffer = trace->header_buffer_ptr + general_header_size; } /* * Initializes the trace header, meaning it reads chunks with all pairs */ static void __litl_read_init_process_header(litl_read_trace_t* trace, litl_read_process_t* process) { // init the header structure litl_trace_size_t header_size; litl_med_size_t nb_threads = (process->header->header_nb_threads > NBTHREADS) ? process->header->header_nb_threads : NBTHREADS; header_size = (nb_threads + 1) * sizeof(litl_thread_pair_t); process->header_buffer_ptr = (litl_buffer_t) malloc(header_size); // read threads pairs (tid, offset) lseek(trace->f_handle, process->header->offset, SEEK_SET); header_size = (process->header->header_nb_threads + 1) * sizeof(litl_thread_pair_t); int res = read(trace->f_handle, process->header_buffer_ptr, header_size); if (res == -1) { perror("Could not read the trace header!"); exit(EXIT_FAILURE); } process->header_buffer = process->header_buffer_ptr; } /* * Reads another portion of pairs(tid, offset) from the trace file */ static void __litl_read_next_pairs_buffer(litl_read_trace_t* trace, litl_read_process_t* process, litl_offset_t offset) { lseek(trace->f_handle, offset, SEEK_SET); litl_med_size_t nb_threads = (process->nb_threads - process->header->header_nb_threads) > NBTHREADS ? NBTHREADS : (process->nb_threads - process->header->header_nb_threads); int res = read(trace->f_handle, process->header_buffer_ptr, (nb_threads + 1) * sizeof(litl_thread_pair_t)); process->header_buffer = process->header_buffer_ptr; if (res == -1) { perror( "Could not read the next part of pairs (tid, offset) from the trace file!"); exit(EXIT_FAILURE); } } /* * Initializes buffers -- one buffer per thread. */ static void __litl_read_init_threads(litl_read_trace_t* trace, litl_read_process_t* process) { litl_med_size_t thread_index, size; litl_thread_pair_t *thread_pair; size = sizeof(litl_thread_pair_t); // init nb_threads and allocate memory process->nb_threads = process->header->nb_threads; process->threads = (litl_read_thread_t **) malloc( process->nb_threads * sizeof(litl_read_thread_t*)); // increase a bit the buffer size 'cause of the event's tail and the offset process->header->buffer_size += __litl_get_reg_event_size(LITL_MAX_PARAMS) + __litl_get_reg_event_size(0); for (thread_index = 0; thread_index < process->nb_threads; thread_index++) { // allocate thread structure process->threads[thread_index] = (litl_read_thread_t *) malloc( sizeof(litl_read_thread_t)); process->threads[thread_index]->thread_pair = (litl_thread_pair_t *) malloc( sizeof(litl_thread_pair_t)); process->threads[thread_index]->buffer_ptr = (litl_buffer_t) malloc( process->header->buffer_size); // read pairs (tid, offset) thread_pair = (litl_thread_pair_t *) process->header_buffer; // deal with slots of pairs if ((thread_pair->tid == 0) && (thread_pair->offset != 0)) { __litl_read_next_pairs_buffer( trace, process, process->header->offset + thread_pair->offset); thread_pair = (litl_thread_pair_t *) process->header_buffer; } // end of reading pairs if ((thread_pair->tid == 0) && (thread_pair->offset == 0)) break; process->threads[thread_index]->thread_pair->tid = thread_pair->tid; // use two offsets: process and thread. Process offset for a position // of thread pairs; thread offset for a position of events process->threads[thread_index]->thread_pair->offset = thread_pair->offset + process->header->offset; // read chunks of data // use offsets in order to access a chuck of data that corresponds to // each thread lseek(trace->f_handle, process->threads[thread_index]->thread_pair->offset, SEEK_SET); int res = read(trace->f_handle, process->threads[thread_index]->buffer_ptr, process->header->buffer_size); if (res == -1) { perror("Could not read the first partition of data from the trace file!"); exit(EXIT_FAILURE); } process->threads[thread_index]->buffer = process->threads[thread_index]->buffer_ptr; process->threads[thread_index]->tracker = process->header->buffer_size; process->threads[thread_index]->offset = 0; process->header_buffer += size; } } /* * Opens a trace */ litl_read_trace_t* litl_read_open_trace(const char* filename) { litl_read_trace_t *trace = (litl_read_trace_t *) malloc( sizeof(litl_read_trace_t)); // open a trace file if ((trace->f_handle = open(filename, O_RDONLY)) < 0) { fprintf(stderr, "Cannot open %s\n", filename); exit(EXIT_FAILURE); } // init the trace header __litl_read_init_trace_header(trace); return trace; } /* * Initializes processes as trace may store multiple processes */ void litl_read_init_processes(litl_read_trace_t* trace) { trace->processes = (litl_read_process_t **) malloc( trace->nb_processes * sizeof(litl_read_process_t*)); litl_med_size_t process_index, size; size = sizeof(litl_process_header_t); for (process_index = 0; process_index < trace->nb_processes; process_index++) { trace->processes[process_index] = (litl_read_process_t *) malloc( sizeof(litl_read_process_t)); // read the process header trace->processes[process_index]->header = (litl_process_header_t *) trace->header_buffer; trace->header_buffer += size; trace->processes[process_index]->cur_index = -1; trace->processes[process_index]->is_initialized = 0; // init the process header __litl_read_init_process_header(trace, trace->processes[process_index]); // init buffers of events: one buffer per thread __litl_read_init_threads(trace, trace->processes[process_index]); } } /* * Returns a pointer to the trace header */ litl_general_header_t* litl_read_get_trace_header(litl_read_trace_t* trace) { return trace->header; } /* * Returns a pointer to the process header */ litl_process_header_t* litl_read_get_process_header( litl_read_process_t* process) { return process->header; } /* * Sets the buffer size */ void litl_read_set_buffer_size(litl_read_trace_t* trace, const litl_size_t buf_size) { litl_med_size_t i; for (i = 0; i < trace->nb_processes; i++) trace->processes[i]->header->buffer_size = buf_size; } /* * Returns the buffer size */ litl_size_t litl_read_get_buffer_size(litl_read_trace_t* trace) { return trace->processes[0]->header->buffer_size; } /* * Reads a next portion of events from the trace file to the buffer */ static void __litl_read_next_buffer(litl_read_trace_t* trace, litl_read_process_t* process, litl_read_thread_t* thread) { lseek(trace->f_handle, process->header->offset + thread->thread_pair->offset, SEEK_SET); thread->offset = 0; // read portion of next events int res = read(trace->f_handle, thread->buffer_ptr, process->header->buffer_size); if (res == -1) { perror("Could not read the next part of the trace file!"); exit(EXIT_FAILURE); } thread->buffer = thread->buffer_ptr; thread->tracker = thread ->offset + process->header->buffer_size; } /* * Resets the thread buffers of a given process */ void litl_read_reset_process(litl_read_process_t* process) { litl_med_size_t thread_index; for (thread_index = 0; thread_index < process->nb_threads; thread_index++) process->threads[thread_index]->buffer = process->threads[thread_index]->buffer_ptr; } /* * Reads an event */ static litl_read_event_t* __litl_read_next_thread_event( litl_read_trace_t* trace, litl_read_process_t* process, litl_read_thread_t* thread) { litl_data_t to_be_loaded; litl_t* event; litl_buffer_t buffer; buffer = thread->buffer; to_be_loaded = 0; if (!buffer) { thread->cur_event.event = NULL; return NULL ; } event = (litl_t *) buffer; // While reading events from the buffer, there can be two situations: // 1. The situation when the buffer contains exact number of events; // 2. The situation when only a part of the last event is loaded. // Check whether the main four components (tid, time, code, nb_params) are // loaded. // Check whether all arguments are loaded. // If any of these cases is not true, the next part of the trace plus // the current event is loaded to the buffer litl_size_t remaining_size = thread->tracker - thread->offset; if (remaining_size < __litl_get_reg_event_size(0)) { // this event is truncated. We can't even read the nb_param field to_be_loaded = 1; } else { // The nb_param (or size) field is available. Let's check whether // the event is truncated litl_med_size_t event_size = __litl_get_gen_event_size(event); if (remaining_size < event_size) to_be_loaded = 1; } // fetch the next block of data from the trace if (to_be_loaded) { __litl_read_next_buffer(trace, process, thread); buffer = thread->buffer; event = (litl_t *) buffer; } to_be_loaded = 0; // event that stores tid and offset if (event->code == LITL_OFFSET_CODE) { if (event->parameters.offset.offset != 0) { thread->thread_pair->offset = event->parameters.offset.offset; to_be_loaded = 1; } else { buffer = NULL; thread->cur_event.event = NULL; return NULL ; } } // fetch the next block of data from the trace if (to_be_loaded) { __litl_read_next_buffer(trace, process, thread); buffer = thread->buffer; event = (litl_t *) buffer; } // move pointer to the next event and update __offset litl_med_size_t evt_size = __litl_get_gen_event_size(event); thread->buffer += evt_size; thread->offset += evt_size; thread->cur_event.event = event; thread->cur_event.tid = thread->thread_pair->tid; return &thread->cur_event; } litl_read_event_t* litl_read_next_thread_event(litl_read_trace_t* trace, litl_read_process_t* process, litl_read_thread_t* thread) { return __litl_read_next_thread_event(trace, process, thread); } /* * Searches for the next event inside the trace */ litl_read_event_t* litl_read_next_process_event(litl_read_trace_t* trace, litl_read_process_t* process) { litl_med_size_t thread_index; litl_time_t min_time = -1; if (!process->is_initialized) { for (thread_index = 0; thread_index < process->nb_threads; thread_index++) __litl_read_next_thread_event(trace, process, process->threads[thread_index]); process->cur_index = -1; process->is_initialized = 1; } // read the next event from the buffer if (process->cur_index != -1) __litl_read_next_thread_event(trace, process, process->threads[process->cur_index]); int found = 0; for (thread_index = 0; thread_index < process->nb_threads; thread_index++) { litl_read_event_t *evt = LITL_READ_GET_CUR_EVENT_PER_THREAD(process, thread_index); if ( evt && evt->event && (LITL_READ_GET_TIME(evt) < min_time)) { found = 1; min_time = LITL_READ_GET_TIME(evt); process->cur_index = thread_index; } } if (found) return LITL_READ_GET_CUR_EVENT(process); return NULL ; } /* * Reads the next event from a trace */ litl_read_event_t* litl_read_next_event(litl_read_trace_t* trace) { litl_med_size_t process_index; litl_read_event_t* event = NULL; for (process_index = 0; process_index < trace->nb_processes; process_index++) { event = litl_read_next_process_event(trace, trace->processes[process_index]); if (event != NULL ) break; } return event; } /* * Closes the trace and frees the buffer */ void litl_read_finalize_trace(litl_read_trace_t* trace) { litl_med_size_t process_index, thread_index; // close the file close(trace->f_handle); trace->f_handle = -1; // free traces for (process_index = 0; process_index < trace->nb_processes; process_index++) { for (thread_index = 0; thread_index < trace->processes[process_index]->nb_threads; thread_index++) { free(trace->processes[process_index]->threads[thread_index]->thread_pair); free(trace->processes[process_index]->threads[thread_index]->buffer_ptr); free(trace->processes[process_index]->threads[thread_index]); } free(trace->processes[process_index]->threads); free(trace->processes[process_index]->header_buffer_ptr); free(trace->processes[process_index]); } // free a trace structure free(trace->processes); free(trace->header_buffer_ptr); free(trace); // set the trace pointer to NULL trace = NULL; } eztrace-1.1-7/extlib/litl/src/PaxHeaders.7332/fut.h0000644000000000000000000000013212426414022016615 xustar0030 mtime=1415190546.310452975 30 atime=1508138917.012945286 30 ctime=1508162365.781736901 eztrace-1.1-7/extlib/litl/src/fut.h0000644000175000017500000000667412426414022020021 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ /** * \file fut.h * \brief fut Provides a mapping of the LiTL APIs into the FxT APIs for easier * usage of LiTL in FxT-related applications * * \authors * Developers are: \n * Roman Iakymchuk -- roman.iakymchuk@telecom-sudparis.eu \n * Francois Trahay -- francois.trahay@telecom-sudparis.eu \n */ #ifndef FUT_H_ #define FUT_H_ #include "fxt.h" /* "how" parameter values, analagous to "how" parameters to FKT */ #define FUT_ENABLE 0xCE03 /* for enabling probes with 1's in keymask */ #define FUT_DISABLE 0xCE04 /* for disabling probes with 1's in keymask */ #define FUT_SETMASK 0xCE05 /* for enabling 1's, disabling 0's in keymask */ /* Simple keymasks */ #define FUT_KEYMASK0 0x00000001 #define FUT_KEYMASK1 0x00000002 #define FUT_KEYMASK2 0x00000004 #define FUT_KEYMASK3 0x00000008 #define FUT_KEYMASK4 0x00000010 #define FUT_KEYMASK5 0x00000020 #define FUT_KEYMASK6 0x00000040 #define FUT_KEYMASK7 0x00000080 #define FUT_KEYMASK8 0x00000100 #define FUT_KEYMASK9 0x00000200 #define FUT_KEYMASK10 0x00000400 #define FUT_KEYMASK11 0x00000800 #define FUT_KEYMASK12 0x00001000 #define FUT_KEYMASK13 0x00002000 #define FUT_KEYMASK14 0x00004000 #define FUT_KEYMASK15 0x00008000 #define FUT_KEYMASK16 0x00010000 #define FUT_KEYMASK17 0x00020000 #define FUT_KEYMASK18 0x00040000 #define FUT_KEYMASK19 0x00080000 #define FUT_KEYMASK20 0x00100000 #define FUT_KEYMASK21 0x00200000 #define FUT_KEYMASK22 0x00400000 #define FUT_KEYMASK23 0x00800000 #define FUT_KEYMASK24 0x01000000 #define FUT_KEYMASK25 0x02000000 #define FUT_KEYMASK26 0x04000000 #define FUT_KEYMASK27 0x08000000 #define FUT_KEYMASK28 0x10000000 #define FUT_KEYMASK29 0x20000000 #define FUT_KEYMASK30 0x40000000 #define FUT_KEYMASK31 0x80000000 #define FUT_KEYMASKALL 0xffffffff #define FUT_GCC_INSTRUMENT_KEYMASK FUT_KEYMASK29 /* Fixed parameters of the fut coding scheme */ #define FUT_GENERIC_EXIT_OFFSET 0x100 /* exit this much above entry */ #define FUT_UNPAIRED_LIMIT_CODE 0xf000 /* all unpaired codes above this limit */ /* Codes for fut use */ #define FUT_SETUP_CODE 0xffff #define FUT_KEYCHANGE_CODE 0xfffe #define FUT_RESET_CODE 0xfffd #define FUT_CALIBRATE0_CODE 0xfffc #define FUT_CALIBRATE1_CODE 0xfffb #define FUT_CALIBRATE2_CODE 0xfffa #define FUT_THREAD_BIRTH_CODE 0xfff9 #define FUT_THREAD_DEATH_CODE 0xfff8 #define FUT_SET_THREAD_NAME_CODE 0xfff7 #define FUT_NEW_LWP_CODE 0xfff6 #define FUT_START_FLUSH_CODE 0xfff5 #define FUT_STOP_FLUSH_CODE 0xfff4 #define FUT_RQS_NEWLEVEL 0xffef #define FUT_RQS_NEWLWPRQ 0xffee #define FUT_RQS_NEWRQ 0xffed #define FUT_SWITCH_TO_CODE 0x31a #define FUT_MAIN_ENTRY_CODE 0x301 #define FUT_MAIN_EXIT_CODE 0x401 #endif /* FUT_H_ */ eztrace-1.1-7/extlib/litl/src/PaxHeaders.7332/litl_timer.h0000644000000000000000000000013213012560437020167 xustar0030 mtime=1479205151.268726939 30 atime=1508138852.803341698 30 ctime=1508162365.777736551 eztrace-1.1-7/extlib/litl/src/litl_timer.h0000644000175000017500000000551113012560437021360 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ #ifndef LITL_TIMER_H_ #define LITL_TIMER_H_ /** * \file litl_timer.h * \brief litl_timer Provides a set of functions for measuring time * * \authors * Developers are : \n * Roman Iakymchuk -- roman.iakymchuk@telecom-sudparis.eu \n * Francois Trahay -- francois.trahay@telecom-sudparis.eu \n */ #include "litl_types.h" /** * \defgroup litl_timer LiTL Timing Methods */ /** * \defgroup litl_timer_init Initialization Functions * \ingroup litl_timer */ /** * \defgroup litl_timer_measure Pre-Defined Timing Methods * \ingroup litl_timer */ /** * \ingroup litl_timer_init * \brief A callback function that returns the current time in ns. It can be * either a pointer to one of the timing functions provided by LiTL or a * user-defined function */ typedef litl_time_t (*litl_timing_method_t)(); /** * \ingroup litl_timer_measure * \brief Calls the selected timing method and get the current time in ns */ extern litl_timing_method_t litl_get_time; /** * \ingroup litl_timer_init * \brief Initializes the timing mechanism */ void litl_time_initialize(); /** * \ingroup litl_timer_init * \brief Selects the timing function to use * \param callback A name of timing function * \return Returns -1 if an error occurs. Otherwise, returns 0 */ int litl_set_timing_method(litl_timing_method_t callback); // Pre-defined timing methods: /** * \ingroup litl_timer_measure * \brief Uses clock_gettime(CLOCK_MONOTONIC_RAW) * \return Returns time that is similar to CLOCK_MONOTONIC, but provides access * to a raw hardware-based time */ litl_time_t litl_get_time_monotonic_raw(); /** * \ingroup litl_timer_measure * \brief Uses clock_gettime(CLOCK_MONOTONIC) * \return Returns the monotonic time since some unspecified starting point */ litl_time_t litl_get_time_monotonic(); /** * \ingroup litl_timer_measure * \brief Uses clock_gettime(CLOCK_REALTIME) * \return Returns the real (wall-clock) time */ litl_time_t litl_get_time_realtime(); /** * \ingroup litl_timer_measure * \brief Uses clock_gettime(CLOCK_PROCESS_CPUTIME) * \return Returns the high-resolution per-process time from the CPU */ litl_time_t litl_get_time_process_cputime(); /** * \ingroup litl_timer_measure * \brief Uses clock_gettime(CLOCK_THREAD_CPUTIME) * \return Returns the thread-specific CPU-time */ litl_time_t litl_get_time_thread_cputime(); /** * \ingroup litl_timer_measure * \brief Uses CPU-specific register (for instance, rdtsc for X86* processors) * \return Returns the measured time in clock cycles */ litl_time_t litl_get_time_ticks(); /** * \ingroup litl_timer_measure * \brief Ultra-fast measurement function * \return Always returns 0 */ litl_time_t litl_get_time_none(); #endif /* LITL_TIMER_H_ */ eztrace-1.1-7/extlib/litl/src/PaxHeaders.7332/litl_split.c0000644000000000000000000000013212657116522020203 xustar0030 mtime=1455201618.044644717 30 atime=1508138852.847342797 30 ctime=1508162365.789737598 eztrace-1.1-7/extlib/litl/src/litl_split.c0000644000175000017500000001163712657116522021402 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ #define _GNU_SOURCE #include #include #include #include #include "litl_split.h" static litl_trace_split_t* __arch; /* * Opens an archive of traces */ static void __litl_split_open_archive(const char *arch_name) { __arch = malloc(sizeof(litl_trace_split_t)); // open an archive of traces if ((__arch->f_handle = open(arch_name, O_RDONLY)) < 0) { fprintf(stderr, "Cannot open %s\n", arch_name); exit(EXIT_FAILURE); } // allocate buffer for read/write ops __arch->buffer_size = 16 * 1024 * 1024; // 16 MB __arch->buffer = (litl_buffer_t) malloc(__arch->buffer_size); } /* * Initializes a structure that stores triples from the trace header */ static void __litl_split_read_header() { int res __attribute__ ((__unused__)); litl_size_t header_size, general_header_size; general_header_size = sizeof(litl_general_header_t); // read a general header header_size = general_header_size; __arch->header_buffer_ptr = (litl_buffer_t) malloc(header_size); res = read(__arch->f_handle, __arch->header_buffer_ptr, header_size); __arch->header_buffer = __arch->header_buffer_ptr; // get the number of processes __arch->trace_header = (litl_general_header_t *) __arch->header_buffer; __arch->nb_processes = __arch->trace_header->nb_processes; if (__arch->nb_processes == 1) { printf( "The given trace is not an archive. Therefore, there is nothing to split.\n"); exit(EXIT_SUCCESS); } // Yes, we work with an archive of trace. So, we increase the header size // and relocate the header buffer header_size += __arch->nb_processes * sizeof(litl_process_header_t); __arch->header_buffer_ptr = (litl_buffer_t) realloc(__arch->header_buffer_ptr, header_size); // read headers of all processes res = read(__arch->f_handle, __arch->header_buffer_ptr + general_header_size, header_size - general_header_size); if (res == -1) { perror("Could not read the archive header!"); exit(EXIT_FAILURE); } __arch->header_buffer = __arch->header_buffer_ptr; __arch->trace_header = (litl_general_header_t *) __arch->header_buffer; __arch->header_buffer += general_header_size; // for splitting: one process into one trace file __arch->trace_header->nb_processes = 1; } /* * Writes each trace from an archive into a separate trace file */ static void __litl_split_extract_traces(const char *dir) { int trace_out, res __attribute__ ((__unused__)); char* trace_name; litl_size_t buffer_size; litl_med_size_t general_header_size, process_header_size; general_header_size = sizeof(litl_general_header_t); process_header_size = sizeof(litl_process_header_t); while (__arch->nb_processes-- != 0) { // get a process header __arch->process_header = (litl_process_header_t *) __arch->header_buffer; __arch->header_buffer += process_header_size; res = asprintf(&trace_name, "%s/%s", dir, __arch->process_header->process_name); // create and open a new trace file if ((trace_out = open(trace_name, O_WRONLY | O_CREAT, 0644)) < 0) { fprintf(stderr, "Cannot create and open %s\n", __arch->process_header->process_name); exit(EXIT_FAILURE); } // write a general trace header res = write(trace_out, __arch->trace_header, general_header_size); // write a process header buffer_size = __arch->process_header->offset; __arch->process_header->offset = general_header_size + process_header_size; res = write(trace_out, __arch->process_header, process_header_size); // set a file pointer to the position of the current process lseek(__arch->f_handle, buffer_size, SEEK_SET); // read data and write to a separate trace while (__arch->process_header->trace_size) { buffer_size = __arch->process_header->trace_size > __arch->buffer_size ? __arch->buffer_size : __arch->process_header->trace_size; res = read(__arch->f_handle, __arch->buffer, buffer_size); res = write(trace_out, __arch->buffer, buffer_size); __arch->process_header->trace_size -= buffer_size; } free(trace_name); close(trace_out); } } /* * Closes the archive and free the allocated memory */ static void __litl_split_close_archive() { close(__arch->f_handle); __arch->f_handle = -1; free(__arch->header_buffer_ptr); free(__arch->buffer); free(__arch); } void litl_split_archive(const char *arch_name, const char *output_dir) { // open an archive of traces and allocate memory for a buffer __litl_split_open_archive(arch_name); // get info from the archive's header __litl_split_read_header(); // split the archive __litl_split_extract_traces(output_dir); // close the archive and free the allocated memory __litl_split_close_archive(); } eztrace-1.1-7/extlib/litl/src/PaxHeaders.7332/litl_config.h.in0000644000000000000000000000013213046641054020723 xustar0030 mtime=1486570028.992127993 30 atime=1508162273.581970304 30 ctime=1508162365.781736901 eztrace-1.1-7/extlib/litl/src/litl_config.h.in0000644000175000017500000000101313046641054022105 0ustar00trahaytrahay00000000000000#ifndef LITL_CONFIG_H #define LITL_CONFIG_H #define USE_GETTID @USE_GETTID@ #define FORCE_32BIT @FORCE_32BIT@ #if FORCE_32_BIT /* compile for 32bit architecture */ #define HAVE_32BIT 1 #else /* FORCE_32_BIT */ /* detect 32/64 bit architecture */ #ifndef SIZEOF_SIZE_T #define SIZEOF_SIZE_T @SIZEOF_SIZE_T@ #endif #if (SIZEOF_SIZE_T == 4) /* 32bit arch */ #define HAVE_32BIT 1 #else /* 64bit arch */ #define HAVE_32BIT 0 #endif #endif #define CLOCK_GETTIME_AVAIL @CLOCK_GETTIME_AVAIL@ #endif /* LITL_CONFIG_H */ eztrace-1.1-7/extlib/litl/src/PaxHeaders.7332/fxt.h0000644000000000000000000000013212426414022016620 xustar0030 mtime=1415190546.310452975 30 atime=1508138917.012945286 30 ctime=1508162365.781736901 eztrace-1.1-7/extlib/litl/src/fxt.h0000644000175000017500000000634012426414022020012 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ /** * \file fxt.h * \brief fxt Provides a mapping of the LiTL APIs into the FxT APIs for easier * usage of LiTL in FxT-related applications * * \authors * Developers are: \n * Roman Iakymchuk -- roman.iakymchuk@telecom-sudparis.eu \n * Francois Trahay -- francois.trahay@telecom-sudparis.eu \n */ #ifndef FXT_H_ #define FXT_H_ #include #include #include "litl_types.h" #include "litl_write.h" #include "litl_read.h" typedef litl_write_trace_t* fxt_t; static fxt_t __trace; /* BEGIN -- Recording functions */ #define fut_setup(buffer_size, keymask, threadid) do { \ __trace = litl_write_init_trace(buffer_size); \ litl_write_pause_recording(__trace); \ }while(0) // finalizing traces #define fut_endup(filename) do { \ litl_write_finalize_trace(__trace); \ }while(0) #define fut_done(void) do { \ } while(0) #define fut_set_filename(filename) do { \ litl_write_set_filename(__trace, filename); \ litl_write_resume_recording(__trace); \ } while(0) #define enable_fut_flush() do { \ litl_write_buffer_flush_on(__trace); \ } while(0) #define disable_fut_flush() do { \ litl_write_buffer_flush_off(__trace); \ } while(0) #define fut_enable_tid_logging() do { \ litl_write_tid_recording_on(__trace); \ } while(0) #define fut_disable_tid_logging() do { \ litl_write_tid_recording_off(__trace); \ } while(0) /* END -- Recording functions */ /* BEGIN -- Events */ #define FUT_DO_PROBE0(code) \ do { \ litl_t*retval; \ litl_write_probe_pack_0(__trace, code, retval); \ assert(retval != NULL); \ } while(0) #define FUT_DO_PROBE1(code, arg1) \ do { \ litl_t* retval; \ litl_write_probe_pack_1(__trace, code, arg1, retval); \ assert(retval != NULL); \ }while(0) #define FUT_DO_PROBE2(code, arg1, arg2) \ do { \ litl_t *retval; \ litl_write_probe_pack_2(__trace, code, arg1, arg2, retval); \ assert(retval != NULL); \ }while(0) #define FUT_DO_PROBE3(code, arg1, arg2, arg3) \ do { \ litl_t *retval; \ litl_write_probe_pack_3(__trace, code, arg1, arg2, arg3, retval); \ assert(retval != NULL); \ }while(0) #define FUT_DO_PROBE4(code, arg1, arg2, arg3, arg4) \ do { \ litl_t *retval; \ litl_write_probe_pack_4(__trace, code, arg1, arg2, arg3, arg4, retval); \ assert(retval != NULL); \ }while(0) #define FUT_DO_PROBE5(code, arg1, arg2, arg3, arg4, arg5) \ do { \ litl_t *retval; \ litl_write_probe_pack_5(__trace, code, arg1, arg2, arg3, arg4, arg5, retval); \ assert(retval != NULL); \ }while(0) #define FUT_DO_PROBE6(code, arg1, arg2, arg3, arg4, arg5, arg6) \ do { \ litl_t *retval; \ litl_write_probe_pack_6(__trace, code, arg1, arg2, arg3, arg4, arg5, arg6, retval); \ assert(retval != NULL); \ }while(0) #define FUT_DO_PROBE(code, ...) litl_write_probe_pack_0(__trace, code); #define FUT_DO_PROBESTR(code, str) litl_write_probe_raw(__trace, code, strlen(str), str) /* END -- Events */ #endif /* FXT_H_ */ eztrace-1.1-7/extlib/litl/src/PaxHeaders.7332/litl_timer.c0000644000000000000000000000013013012560437020160 xustar0030 mtime=1479205151.268726939 28 atime=1508138852.7793411 30 ctime=1508162365.785737249 eztrace-1.1-7/extlib/litl/src/litl_timer.c0000644000175000017500000001764413012560437021365 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ #include #include #include #include #include #include "litl_timer.h" litl_time_t litl_get_time_none(); static void __litl_time_ticks_initialize(); #define ERROR_TIMER_NOT_AVAILABLE() do { \ fprintf(stderr, "Trying to use timer function %s, but it is not available on this platform\n",__FUNCTION__); \ abort(); \ } while(0) // Choose the default timing method #if CLOCK_GETTIME_AVAIL #ifdef CLOCK_MONOTONIC_RAW #define TIMER_DEFAULT litl_get_time_monotonic_raw #else #define TIMER_DEFAULT litl_get_time_monotonic #endif // CLOCK_MONOTONIC_RAW #else // CLOCK_GETTIME_AVAIL #define TIMER_DEFAULT litl_get_time_ticks #endif // CLOCK_GETTIME_AVAIL /* * Selected timing method */ litl_timing_method_t litl_get_time = TIMER_DEFAULT; /* * Benchmarks function f and returns the number of calls to f that can be done * in 100 microseconds */ static unsigned __litl_time_benchmark_generic(litl_timing_method_t f) { unsigned i = 0; unsigned threshold = 100000; // how many calls to f() in 100 microseconds ? litl_time_t t1, t2; t1 = f(); do { t2 = f(); i++; } while (t2 - t1 < threshold); return i; } /* * Selects the most efficient timing method */ static void __litl_time_benchmark() { unsigned best_score = 0; unsigned cur_score; #define RUN_BENCHMARK(_func_) do { \ cur_score = __litl_time_benchmark_generic(_func_); \ if(cur_score > best_score) { \ best_score = cur_score; \ litl_set_timing_method(_func_); \ } \ }while(0) #if CLOCK_GETTIME_AVAIL #ifdef CLOCK_MONOTONIC_RAW RUN_BENCHMARK(litl_get_time_monotonic_raw); #endif #ifdef CLOCK_MONOTONIC RUN_BENCHMARK(litl_get_time_monotonic); #endif #ifdef CLOCK_REALTIME RUN_BENCHMARK(litl_get_time_realtime); #endif #ifdef CLOCK_PROCESS_CPUTIME_ID RUN_BENCHMARK(litl_get_time_process_cputime); #endif #ifdef CLOCK_THREAD_CPUTIME_ID RUN_BENCHMARK(litl_get_time_thread_cputime); #endif #endif /* CLOCK_GETTIME_AVAIL */ #if defined(__x86_64__) || defined(__i386) __litl_time_ticks_initialize(); RUN_BENCHMARK(litl_get_time_ticks); #endif printf("[LiTL] selected timing method:"); #if CLOCK_GETTIME_AVAIL #ifdef CLOCK_MONOTONIC_RAW if(litl_get_time == litl_get_time_monotonic_raw) printf("monotonic_raw\n"); #endif #ifdef CLOCK_MONOTONIC if(litl_get_time == litl_get_time_monotonic) printf("monotonic\n"); #endif #ifdef CLOCK_REALTIME if(litl_get_time == litl_get_time_realtime) printf("realtime\n"); #endif #ifdef CLOCK_PROCESS_CPUTIME_ID if(litl_get_time == litl_get_time_process_cputime) printf("process_cputime\n"); #endif #ifdef CLOCK_THREAD_CPUTIME_ID if(litl_get_time == litl_get_time_thread_cputime) printf("thread_cputime\n"); #endif #endif /* CLOCK_GETTIME_AVAIL */ #if defined(__x86_64__) || defined(__i386) if(litl_get_time == litl_get_time_ticks) printf("ticks\n"); #endif } /* * Initializes the timing mechanism */ void litl_time_initialize() { char* time_str = getenv("LITL_TIMING_METHOD"); if (time_str) { if (strcmp(time_str, "monotonic_raw") == 0) { #if(defined(CLOCK_GETTIME_AVAIL) && defined( CLOCK_MONOTONIC_RAW)) litl_set_timing_method(litl_get_time_monotonic_raw); #else goto not_available; #endif } else if (strcmp(time_str, "monotonic") == 0) { #if(defined(CLOCK_GETTIME_AVAIL) && defined( CLOCK_MONOTONIC)) litl_set_timing_method(litl_get_time_monotonic); #else goto not_available; #endif } else if (strcmp(time_str, "realtime") == 0) { #if(defined(CLOCK_GETTIME_AVAIL) && defined( CLOCK_REALTIME)) litl_set_timing_method(litl_get_time_realtime); #else goto not_available; #endif } else if (strcmp(time_str, "process_cputime") == 0) { #if(defined(CLOCK_GETTIME_AVAIL) && defined( CLOCK_PROCESS_CPUTIME_ID)) litl_set_timing_method(litl_get_time_process_cputime); #else goto not_available; #endif } else if (strcmp(time_str, "thread_cputime") == 0) { #if(defined(CLOCK_GETTIME_AVAIL) && defined( CLOCK_THREAD_CPUTIME_ID)) litl_set_timing_method(litl_get_time_thread_cputime); #else goto not_available; #endif } else if (strcmp(time_str, "ticks") == 0) { #if defined(__x86_64__) || defined(__i386) litl_set_timing_method(litl_get_time_ticks); /* dry run to make sure that the initialization process is done */ litl_get_time_ticks(); #else goto not_available; #endif } else if (strcmp(time_str, "none") == 0) { litl_set_timing_method(litl_get_time_none); } else if (strcmp(time_str, "best") == 0) { __litl_time_benchmark(); } else { fprintf(stderr, "Unknown timining method: '%s'\n", time_str); abort(); } } return; not_available: __attribute__ ((__unused__)) fprintf(stderr, "Timing function '%s' not available on this system\n", time_str); abort(); } /* * Returns -1 if none of timings is available. Otherwise, it returns 0 */ int litl_set_timing_method(litl_timing_method_t callback) { if (!callback) return -1; litl_get_time = callback; if(callback == litl_get_time_ticks) { __litl_time_ticks_initialize(); } return 0; } #if CLOCK_GETTIME_AVAIL static inline litl_time_t __litl_get_time_generic(clockid_t clk_id) { litl_time_t time; struct timespec tp; clock_gettime(clk_id, &tp); time = 1000000000 * tp.tv_sec + tp.tv_nsec; return time; } #endif /* * Uses clock_gettime(CLOCK_MONOTONIC_RAW) */ litl_time_t litl_get_time_monotonic_raw() { #if(defined(CLOCK_GETTIME_AVAIL) && defined( CLOCK_MONOTONIC_RAW)) return __litl_get_time_generic(CLOCK_MONOTONIC_RAW); #else ERROR_TIMER_NOT_AVAILABLE() ; return -1; #endif } /* * Uses clock_gettime(CLOCK_MONOTONIC) */ litl_time_t litl_get_time_monotonic() { #if CLOCK_GETTIME_AVAIL return __litl_get_time_generic(CLOCK_MONOTONIC); #else ERROR_TIMER_NOT_AVAILABLE() ; return -1; #endif } /* * Uses clock_gettime(CLOCK_REALTIME) */ litl_time_t litl_get_time_realtime() { #if (defined(CLOCK_GETTIME_AVAIL) && defined (CLOCK_REALTIME)) return __litl_get_time_generic(CLOCK_REALTIME); #else ERROR_TIMER_NOT_AVAILABLE() ; return -1; #endif } /* * Uses clock_gettime(CLOCK_PROCESS_CPUTIME_ID) */ litl_time_t litl_get_time_process_cputime() { #if (defined(CLOCK_GETTIME_AVAIL) && defined (CLOCK_PROCESS_CPUTIME_ID)) return __litl_get_time_generic(CLOCK_PROCESS_CPUTIME_ID); #else ERROR_TIMER_NOT_AVAILABLE() ; return -1; #endif } /* * Uses clock_gettime(CLOCK_THREAD_CPUTIME_ID) */ litl_time_t litl_get_time_thread_cputime() { #if (defined(CLOCK_GETTIME_AVAIL) && defined(CLOCK_THREAD_CPUTIME_ID)) return __litl_get_time_generic(CLOCK_THREAD_CPUTIME_ID); #else ERROR_TIMER_NOT_AVAILABLE() ; return -1; #endif } litl_time_t litl_get_time_none() { return 0; } static int ticks_initialized = 0; static litl_time_t __ticks_per_sec = 0; /* * Uses CPU specific register (for instance, rdtsc for X86* processors) */ litl_time_t litl_get_time_ticks() { #ifdef __x86_64__ // This is a copy of rdtscll function from asm/msr.h #define ticks(val) do { \ uint32_t __a,__d; \ asm volatile("rdtsc" : "=a" (__a), "=d" (__d)); \ (val) = ((litl_time_t)__a) | (((litl_time_t)__d)<<32); \ } while(0) #elif defined(__i386) #define ticks(val) \ __asm__ volatile("rdtsc" : "=A" (val)) #else ERROR_TIMER_NOT_AVAILABLE(); #define ticks(val) (val) = -1 #endif litl_time_t time; ticks(time); return time * 1e9 / __ticks_per_sec; } /* initialize the ticks timer */ static void __litl_time_ticks_initialize() { if (!ticks_initialized) { /* since ticks return a timestamp measured in clock cycles, * we need to be able to convert it to ns */ litl_time_t init_start, init_end; /* how many cycles in 1 second ? */ ticks(init_start); usleep(1000000); ticks(init_end); __ticks_per_sec = init_end - init_start; ticks_initialized = 1; } } eztrace-1.1-7/extlib/litl/src/PaxHeaders.7332/litl_split.h0000644000000000000000000000013212657116522020210 xustar0030 mtime=1455201618.044644717 30 atime=1508138852.871343397 30 ctime=1508162365.781736901 eztrace-1.1-7/extlib/litl/src/litl_split.h0000644000175000017500000000155612657116522021406 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ #ifndef LITL_SPLIT_H_ #define LITL_SPLIT_H_ /** * \file litl_split.h * \brief litl_split Provides a set of functions for extracting trace files * from an archive of traces * * \authors * Developers are : \n * Roman Iakymchuk -- roman.iakymchuk@telecom-sudparis.eu \n * Francois Trahay -- francois.trahay@telecom-sudparis.eu \n */ #include "litl_types.h" /** * \defgroup litl_split LiTL Splitting Functions */ /** * \ingroup litl_split * \brief Extracts each trace from an archive into a separate trace file * \param arch_name A name of an archive * \param output_dir A path to the directory with extracted traces */ void litl_split_archive(const char *arch_name, const char *output_dir); #endif /* LITL_SPLIT_H_ */ eztrace-1.1-7/extlib/litl/src/PaxHeaders.7332/litl_tools.h0000644000000000000000000000013213012560437020207 xustar0030 mtime=1479205151.268726939 30 atime=1508138852.883343697 30 ctime=1508162365.777736551 eztrace-1.1-7/extlib/litl/src/litl_tools.h0000644000175000017500000000265413012560437021405 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ #ifndef LITL_TOOLS_H_ #define LITL_TOOLS_H_ /** * \file litl_tools.h * \brief litl_tools Provides a set of auxiliary functions * * \authors * Developers are : \n * Roman Iakymchuk -- roman.iakymchuk@telecom-sudparis.eu \n * Francois Trahay -- francois.trahay@telecom-sudparis.eu \n */ #include #include "litl_types.h" /** * \defgroup litl_tools LiTL Auxiliary Functions */ /** * \ingroup litl_tools * \brief Returns the size of a regular event (in Bytes) depending on the number * of its parameters * \param nb_params A number of event's parameters * \return A size of a regular event */ litl_size_t __litl_get_reg_event_size(litl_data_t nb_params); /** * \ingroup litl_tools * \brief Returns the size of an event (in Bytes) depending on the number or size * of its parameters * \param type The type of event * \param nb_params The number or size of parameters * \return A size of a regular event */ litl_size_t __litl_get_event_size(litl_type_t type, int param_size); /** * \ingroup litl_tools * \brief Returns the size of a general event (in Bytes) depending on its type * and the number of its parameters * \param p_evt A pointer to an event * \return A size of a given event */ litl_size_t __litl_get_gen_event_size(litl_t *p_evt); #endif /* LITL_TOOLS_H_ */ eztrace-1.1-7/extlib/litl/src/PaxHeaders.7332/litl_tools.c0000644000000000000000000000013213012560437020202 xustar0030 mtime=1479205151.268726939 30 atime=1508138852.851342898 30 ctime=1508162365.785737249 eztrace-1.1-7/extlib/litl/src/litl_tools.c0000644000175000017500000000335313012560437021375 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ #include #include #include #include "litl_tools.h" #include "litl_write.h" /* * Returns the size in bytes of a REGULAR event depending on * the number of arguments */ litl_size_t __litl_get_reg_event_size(litl_data_t nb_params) { return LITL_BASE_SIZE + (nb_params * sizeof(litl_param_t)) + sizeof(litl_data_t); } litl_size_t __litl_get_event_size(litl_type_t type, int param_size) { switch (type) { case LITL_TYPE_REGULAR: return LITL_BASE_SIZE + (param_size * sizeof(litl_param_t)) + sizeof(litl_data_t); case LITL_TYPE_RAW: return LITL_BASE_SIZE + param_size + sizeof(((litl_t*)0)->parameters.raw.size); case LITL_TYPE_PACKED: return LITL_BASE_SIZE + param_size + sizeof(((litl_t*)0)->parameters.packed.size); case LITL_TYPE_OFFSET: return LITL_BASE_SIZE + param_size + sizeof(((litl_t*)0)->parameters.offset.nb_params); default: fprintf(stderr, "Unknown event type %d!\n", type); abort(); } return 0; } /* * Returns the size in bytes of an event of any type */ litl_size_t __litl_get_gen_event_size(litl_t *p_evt) { switch (p_evt->type) { case LITL_TYPE_REGULAR: return __litl_get_event_size(p_evt->type, p_evt->parameters.regular.nb_params); case LITL_TYPE_RAW: return __litl_get_event_size(p_evt->type, p_evt->parameters.raw.size); case LITL_TYPE_PACKED: return __litl_get_event_size(p_evt->type, p_evt->parameters.packed.size); case LITL_TYPE_OFFSET: return __litl_get_event_size(p_evt->type, p_evt->parameters.offset.nb_params); default: fprintf(stderr, "Unknown event type %d!\n", p_evt->type); abort(); } return 0; } eztrace-1.1-7/extlib/litl/src/PaxHeaders.7332/litl_types.h0000644000000000000000000000013213045053145020212 xustar0030 mtime=1486116453.400402495 30 atime=1508138852.807341799 30 ctime=1508162365.773736202 eztrace-1.1-7/extlib/litl/src/litl_types.h0000644000175000017500000003427613045053145021415 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ /** * \file litl_types.h * \brief litl_types Provides a set of data structures for recording and * reading events as well as merging and splitting trace files * * \authors * Developers are: \n * Roman Iakymchuk -- roman.iakymchuk@telecom-sudparis.eu \n * Francois Trahay -- francois.trahay@telecom-sudparis.eu \n */ #ifndef LITL_TYPES_H_ #define LITL_TYPES_H_ #include "litl_config.h" /** * \defgroup litl_types LiTL Data Types and Defined Variables */ /** * \defgroup litl_types_general General Data Types and Defined Variables * \ingroup litl_types */ /** * \defgroup litl_types_write Data Types for Recording Events * \ingroup litl_types */ /** * \defgroup litl_types_read Data Types for Reading Events * \ingroup litl_types */ /** * \defgroup litl_types_merge Data Types for Merging Traces * \ingroup litl_types */ /** * \defgroup litl_types_split Data Types for Splitting Archives of Traces * \ingroup litl_types */ #include #include #if USE_GETTID #include #include // For SYS_xxx definitions #else #include #endif // current thread id #if USE_GETTID /** * \ingroup litl_types_general * \brief A current thread ID */ #define CUR_TID syscall(SYS_gettid) #else /** * \ingroup litl_types_general * \brief A current thread ID */ #define CUR_TID pthread_self() #endif #if HAVE_32BIT /** * \ingroup litl_types_general * \brief A data type for storing thread IDs */ typedef uint32_t litl_tid_t; /** * \ingroup litl_types_general * \brief A data type for storing time stamps */ typedef uint32_t litl_time_t; /** * \ingroup litl_types_general * \brief A data type for storing traces sizes */ typedef uint32_t litl_trace_size_t; /** * \ingroup litl_types_general * \brief A data type for the non-optimized storage of parameters */ typedef uint32_t litl_param_t; /** * \ingroup litl_types_general * \brief A data type for storing offsets */ typedef uint32_t litl_offset_t; #else /* HAVE_32BIT */ /** * \ingroup litl_types_general * \brief A data type for storing thread IDs */ typedef uint64_t litl_tid_t; /** * \ingroup litl_types_general * \brief A data type for storing time stamps */ typedef uint64_t litl_time_t; /** * \ingroup litl_types_general * \brief A data type for storing traces sizes */ typedef uint64_t litl_trace_size_t; /** * \ingroup litl_types_general * \brief A data type for the non-optimized storage of parameters */ typedef uint64_t litl_param_t; /** * \ingroup litl_types_general * \brief A data type for storing offsets */ typedef uint64_t litl_offset_t; #endif /* HAVE_32BIT */ /** * \ingroup litl_types_general * \brief A data type for storing sets of events */ typedef uint8_t* litl_buffer_t; // TODO: there is a possibility of using uint16_t, however then the alignment // would collapse /** * \ingroup litl_types_general * \brief A data type for storing events codes */ typedef uint32_t litl_code_t; /** * \ingroup litl_types_general * \brief An auxiliary data type for storing data */ typedef uint32_t litl_size_t; /** * \ingroup litl_types_general * \brief An auxiliary data type for the optimized storage of data */ typedef uint16_t litl_med_size_t; /** * \ingroup litl_types_general * \brief A data type for the optimized storage of parameters */ typedef uint8_t litl_data_t; /** * \ingroup litl_types_general * \brief Defines the code of an event of type offset */ #define LITL_OFFSET_CODE 13 /** * \ingroup litl_types_general * \brief Defines the maximum number of parameters */ #define LITL_MAX_PARAMS 10 /** * \ingroup litl_types_general * \brief Defines the "maximum" size of raw data */ #define LITL_MAX_DATA (LITL_MAX_PARAMS * sizeof(litl_param_t)) /** * \ingroup litl_types_general * \brief The enumeration of event types */ typedef enum { LITL_TYPE_REGULAR /**< Regular */, LITL_TYPE_RAW /**< Raw */, LITL_TYPE_PACKED /**< Packed */, LITL_TYPE_OFFSET /**< Offset */ }__attribute__((packed)) litl_type_t; /** * \struct litl_t * \ingroup litl_types_general * \brief A general structure of LiTL event type */ typedef struct { litl_time_t time; /**< The time of the measurement */ litl_code_t code; /**< An event code */ litl_type_t type; /**< An event type */ /** * \union parameters * \brief Event parameters */ union { /** * \struct regular * \brief A regular event */ struct { litl_data_t nb_params; /**< A number of arguments */ litl_param_t param[LITL_MAX_PARAMS]; /**< An array of arguments of lengths from 0 to 10 */ }__attribute__((packed)) regular; /** * \struct raw * \brief A raw event */ struct { litl_size_t size; /**< A size of data (in Bytes) */ litl_data_t data[LITL_MAX_DATA]; /**< A raw data */ }__attribute__((packed)) raw; /** * \struct packed * \brief A packed event */ struct { litl_size_t size; /**< A size of data (in Bytes) */ litl_data_t param[LITL_MAX_DATA]; /**< A data */ }__attribute__((packed)) packed; /** * \struct offset * \brief An offset event */ struct { litl_data_t nb_params; /**< A number of parameters (=1) */ litl_param_t offset; /**< An offset to the next chunk of events */ }__attribute__((packed)) offset; } parameters; }__attribute__((packed)) litl_t; /** * \ingroup litl_types_general * \brief Defines the maximum number of threads (pairs of tid and offset) stored * in one data * slot */ #define NBTHREADS 32 /** * \ingroup litl_types_general * \brief A general data structure that corresponds to the header of a trace * file */ typedef struct { litl_data_t litl_ver[8]; /**< Information regarding the version of LiTL */ litl_data_t sysinfo[128]; /**< Information regarding OS, Hardware, etc. */ litl_med_size_t nb_processes; /**< A number of processes in the trace file */ }__attribute__((packed)) litl_general_header_t; /** * \ingroup litl_types_general * \brief A general data structure that corresponds to the header of a trace * file */ typedef struct { litl_data_t process_name[256]; /**< A name of the process */ litl_med_size_t nb_threads; /**< A total number of threads */ litl_med_size_t header_nb_threads; /**< A number of threads, which info is stored in the header */ litl_size_t buffer_size; /**< A size of buffer */ litl_trace_size_t trace_size; /**< A trace size */ litl_offset_t offset; /**< An offset to the process-specific threads pairs and their events */ }__attribute__((packed)) litl_process_header_t; /** * \ingroup litl_types_general * \brief A data structure for pairs (tid, offset) stored in the trace header */ typedef struct { litl_tid_t tid; /**< A thread ID */ litl_offset_t offset; /**< An offset to the chunk of events */ } litl_thread_pair_t; /** * \ingroup litl_types_general * \brief A data structure for triples (nb_processes, position, offset) */ typedef struct { litl_med_size_t nb_processes; /**< A number of processes */ litl_offset_t position; /**< A position of the offset within the archive */ litl_offset_t offset; /**< An offset to process-specific data */ } litl_trace_triples_t; /** * \ingroup litl_types_write * \brief Thread-specific buffer */ typedef struct { litl_buffer_t buffer_ptr; /**< A pointer to the beginning of the buffer */ litl_buffer_t buffer; /**< A pointer to the next free slot */ litl_tid_t tid; /**< An ID of the working thread */ litl_offset_t offset; /**< An offset to the next buffer in the trace file */ litl_data_t already_flushed; /**< Handles the situation when some threads start after the header was flushed, i.e. their tids and offsets were not included into the header*/ int initialized; } litl_write_buffer_t; /** * \ingroup litl_types_write * \brief A data structure for recording events */ typedef struct { int f_handle; /**< A file handler */ char* filename; /**< A file name */ litl_offset_t general_offset; /**< An offset from the beginning of the trace file to the next free slot */ litl_buffer_t header_ptr; /**< A pointer to the beginning of the header */ litl_buffer_t header; /**< A pointer to the next free slot in the header */ litl_size_t header_size; /**< A header size */ litl_size_t header_offset; /**< An offset from the beginning of the header to the next free slot */ litl_med_size_t header_nb_threads; /**< A number of threads in the header */ litl_data_t is_header_flushed; /**< Indicates whether the header with threads pairs has been flushed */ litl_med_size_t nb_threads; /**< A number of threads */ litl_med_size_t nb_slots; /**< A number of chunks with the information on threads (tid, offset); first chunk, which is in the header, does not count; each contains at most NBTHREADS threads */ litl_param_t threads_offset; /**< An offset to the next chunk of pairs (tid, offset) for a given thread */ litl_write_buffer_t **buffers; /**< An array of thread-specific buffers */ litl_size_t nb_allocated_buffers; /**< A number of thread-specific buffers that are allocated */ litl_size_t buffer_size; /**< A buffer size */ litl_data_t is_buffer_full; /**< Indicates whether the buffer is full */ pthread_once_t index_once; /**< Guarantees that the initialization function is called only once */ pthread_key_t index; /**< A private thread variable that holds its index */ pthread_mutex_t lock_litl_flush; /**< Handles write conflicts while using pthread */ pthread_mutex_t lock_buffer_init; /**< Handles race conditions while initializing threads pairs and buffers pointers */ litl_data_t is_litl_initialized; /**< Ensures that a performance analysis library does not start recording events before the initialization is finished */ volatile litl_data_t is_recording_paused; /**< Indicates whether LiTL stops recording events (1) for a while or not (0) */ litl_data_t allow_buffer_flush; /**< Indicates whether buffer flush is enabled (1) or not (0). In case the flushing is disabled, the recording of events is stopped. By default, it is activated */ litl_data_t allow_thread_safety; /**< Indicates whether LiTL uses thread-safety (1) or not (0). By default, it is activated */ litl_data_t allow_tid_recording; /**< Indicates whether LiTL records tid (1) or not (0). By default, it is activated */ } litl_write_trace_t; /** * \ingroup litl_types_read * \brief A data structure for reading one event */ typedef struct { litl_tid_t tid; /**< A thread ID */ litl_t *event; /**< A pointer to the read event */ } litl_read_event_t; /** * \ingroup litl_types_read * \brief A data structure for reading thread-specific events */ typedef struct { litl_thread_pair_t* thread_pair; /**< A thread pair (tid, offset) */ litl_buffer_t buffer_ptr; /**< A pointer to the beginning of the buffer */ litl_buffer_t buffer; /**< A pointer to the current position in the buffer */ litl_offset_t offset; /**< An offset from the beginning of the buffer */ litl_offset_t tracker; /**< An indicator of the end of the buffer, which equals to offset + buffer_size */ litl_read_event_t cur_event; /**< The current event */ } litl_read_thread_t; /** * \ingroup litl_types_read * \brief A data structure for reading process-specific events */ typedef struct { litl_process_header_t* header; /**< A pointer to the process header */ litl_buffer_t header_buffer_ptr; /**< A pointer to the beginning of the header buffer */ litl_buffer_t header_buffer; /**< A pointer to the current position within the header buffer */ litl_med_size_t nb_threads; /**< A number of threads */ litl_read_thread_t **threads; /**< An array of threads */ int cur_index; /**< An index of the current thread */ int is_initialized; /**< Indicates that the process was initialized */ } litl_read_process_t; /** * \ingroup litl_types_read * \brief A data structure for reading events from both regular trace files and * archives of traces */ typedef struct { int f_handle; /**< A file handler */ litl_general_header_t* header; /**< A pointer to the trace header */ litl_buffer_t header_buffer_ptr; /**< A pointer to the beginning of the header buffer */ litl_buffer_t header_buffer; /**< A pointer to the current position in the header buffer */ litl_med_size_t nb_processes; /**< A number of processes */ litl_read_process_t **processes; /**< An array of processes */ } litl_read_trace_t; /** * \ingroup litl_types_merge * \brief A data structure for merging trace files into an archive of traces */ typedef struct { int f_handle; /**< A file handler */ char* filename; /**< A file name */ litl_med_size_t nb_traces; /**< A number of traces */ char** traces_names; /**< An array of traces names */ litl_buffer_t buffer_ptr; /**< A pointer to the beginning of the buffer */ litl_buffer_t buffer; /**< A pointer to the current position in the buffer */ litl_size_t buffer_size; /**< A buffer size */ litl_offset_t general_offset; /**< An offset from the beginning of the trace file till the current position */ } litl_trace_merge_t; /** * \ingroup litl_types_split * \brief A data structure for splitting an archive of traces */ typedef struct { int f_handle; /**< A file handler */ litl_buffer_t header_buffer_ptr; /**< A pointer to the beginning of the header buffer */ litl_buffer_t header_buffer; /**< A pointer to the current position within the header buffer */ litl_general_header_t* trace_header; /**< A pointer to a trace header */ litl_process_header_t* process_header; /**< A pointer to a process header */ litl_med_size_t nb_processes; /**< A number of processes */ litl_buffer_t buffer; /**< A pointer to the buffer */ litl_size_t buffer_size; /**< A buffer size */ } litl_trace_split_t; /* * Defining formats for printing data */ #define PRTIu32 "u" #define PRTIx32 "x" #if HAVE_32BIT #define PRTIu64 "u" #define PRTIx64 "x" #else #define PRTIu64 "lu" #define PRTIx64 "lx" #endif /* HAVE_32BIT */ /* * For internal use only. * Computes the offset of MEMBER in structure TYPE */ #define __litl_offset_of(TYPE, MEMBER) ((size_t) &((TYPE*)0)->MEMBER) /* * For internal use only. * Computes the offset of the first parameter in an event */ #define LITL_BASE_SIZE __litl_offset_of(litl_t, parameters) #endif /* LITL_TYPES_H_ */ eztrace-1.1-7/extlib/litl/src/PaxHeaders.7332/litl_merge.c0000644000000000000000000000013212657116522020147 xustar0030 mtime=1455201618.044644717 30 atime=1508138852.915344496 30 ctime=1508162365.789737598 eztrace-1.1-7/extlib/litl/src/litl_merge.c0000644000175000017500000001755512657116522021353 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ #define _GNU_SOURCE #include #include #include #include #include #include "litl_merge.h" static litl_trace_merge_t* __arch; static litl_trace_triples_t** __triples; /* * Sets a new name for the archive */ static void __litl_merge_set_archive_name(const char* filename) { int res __attribute__ ((__unused__)); // check whether the file name was set. If no, set it by default trace name if (filename == NULL ) res = asprintf(&__arch->filename, "/tmp/%s_%s", getenv("USER"), "litl_archive_1"); if (asprintf(&__arch->filename, "%s", filename) == -1) { perror("Error: Cannot set the filename for recording events!\n"); exit(EXIT_FAILURE); } } /* * Adds a trace header: * - The number of traces * - Triples: a file id, a file size, and an offset */ static void __litl_merge_add_archive_header() { int trace_in, res __attribute__ ((__unused__)); litl_med_size_t trace_index, process_index, general_header_size, process_header_size, global_header_size, nb_processes, total_nb_processes; litl_buffer_t header_buffer; total_nb_processes = 0; global_header_size = 0; general_header_size = sizeof(litl_general_header_t); process_header_size = sizeof(litl_process_header_t); // create an array of arrays of offsets __triples = (litl_trace_triples_t **) malloc( __arch->nb_traces * sizeof(litl_trace_triples_t *)); // read all header of traces and write them to the global header of the archive for (trace_index = 0; trace_index < __arch->nb_traces; trace_index++) { if ((trace_in = open(__arch->traces_names[trace_index], O_RDONLY)) < 0) { fprintf(stderr, "[litl_merge] Cannot open %s to read its header\n", __arch->traces_names[trace_index]); exit(EXIT_FAILURE); } // read the trace header header_buffer = (litl_buffer_t) malloc(general_header_size); res = read(trace_in, header_buffer, general_header_size); nb_processes = ((litl_general_header_t *) header_buffer)->nb_processes; __triples[trace_index] = (litl_trace_triples_t *) malloc( nb_processes * sizeof(litl_trace_triples_t)); // add a general header if (trace_index == 0) { sprintf((char*) ((litl_general_header_t *) __arch->buffer)->litl_ver, "%s", (char*) ((litl_general_header_t *) header_buffer)->litl_ver); sprintf((char*) ((litl_general_header_t *) __arch->buffer)->sysinfo, "%s", (char*) ((litl_general_header_t *) header_buffer)->sysinfo); global_header_size += general_header_size; __arch->buffer += general_header_size; } // read headers of processes res = read(trace_in, __arch->buffer, nb_processes * process_header_size); // find the trace size if (nb_processes == 1) { struct stat st; if (fstat(trace_in, &st)) { perror("Cannot apply fstat to the input trace files!"); exit(EXIT_FAILURE); } ((litl_process_header_t *) __arch->buffer)->trace_size = (litl_trace_size_t) st.st_size - general_header_size - process_header_size; } for (process_index = 0; process_index < nb_processes; process_index++) { __triples[trace_index][process_index].nb_processes = nb_processes; __triples[trace_index][process_index].position = global_header_size + (process_index + 1) * process_header_size - sizeof(litl_offset_t); __triples[trace_index][process_index].offset = ((litl_process_header_t *) __arch->buffer)->offset - general_header_size - nb_processes * process_header_size; __arch->buffer += process_header_size; } total_nb_processes += nb_processes; global_header_size += nb_processes * process_header_size; free(header_buffer); close(trace_in); } // update the number of processes ((litl_general_header_t *) __arch->buffer_ptr)->nb_processes = total_nb_processes; res = write(__arch->f_handle, __arch->buffer_ptr, global_header_size); __arch->general_offset += global_header_size; __arch->buffer = __arch->buffer_ptr; } /* * Creates and opens an archive for traces. * Allocates memory for the buffer */ static void __litl_merge_init_archive(const char* arch_name, char** traces_names, const int nb_traces) { __arch = (litl_trace_merge_t *) malloc(sizeof(litl_trace_merge_t)); // allocate buffer for read/write ops __arch->buffer_size = 16 * 1024 * 1024; // 16 MB __arch->buffer_ptr = (litl_buffer_t) calloc(__arch->buffer_size, 1); __arch->buffer = __arch->buffer_ptr; __arch->nb_traces = nb_traces; __arch->traces_names = traces_names; __arch->general_offset = 0; __litl_merge_set_archive_name(arch_name); // create an archive for trace files in rw-r-r- mode (0644) if ((__arch->f_handle = open(__arch->filename, O_WRONLY | O_CREAT, 0644)) < 0) { fprintf(stderr, "[litl_merge] Cannot open %s archive\n", __arch->filename); exit(EXIT_FAILURE); } // add a general archive header and also a set of process headers __litl_merge_add_archive_header(); } /* * Merges trace files. This is a modified version of the cat implementation * from the Kernighan & Ritchie book */ static void __litl_merge_create_archive() { int trace_in, res; litl_offset_t offset; litl_med_size_t trace_index, process_index, nb_processes; litl_trace_size_t header_offset, general_header_size, process_header_size; general_header_size = sizeof(litl_general_header_t); process_header_size = sizeof(litl_process_header_t); for (trace_index = 0; trace_index < __arch->nb_traces; trace_index++) { if ((trace_in = open(__arch->traces_names[trace_index], O_RDONLY)) < 0) { fprintf(stderr, "[litl_merge] Cannot open %s\n", __arch->traces_names[trace_index]); exit(EXIT_FAILURE); } // update offsets of processes nb_processes = __triples[trace_index][0].nb_processes; for (process_index = 0; process_index < nb_processes; process_index++) { lseek(__arch->f_handle, __triples[trace_index][process_index].position, SEEK_SET); offset = __triples[trace_index][process_index].offset + __arch->general_offset; res = write(__arch->f_handle, &offset, sizeof(litl_offset_t)); lseek(__arch->f_handle, __arch->general_offset, SEEK_SET); } // merge traces header_offset = general_header_size + nb_processes * process_header_size; lseek(trace_in, header_offset, SEEK_SET); // solution: Reading and writing blocks of data. Use the file size // to deal with the reading of the last block from the // traces while (1) { res = read(trace_in, __arch->buffer, __arch->buffer_size); if (res < 0) { perror("Cannot read the data from the traces!"); exit(EXIT_FAILURE); } res = write(__arch->f_handle, __arch->buffer, res); __arch->general_offset += res; if ((litl_size_t) res < __arch->buffer_size) break; } close(trace_in); } } /* * Frees the allocated memory */ static void __litl_merge_finalize_archive() { close(__arch->f_handle); // free offsets litl_med_size_t trace_index; for (trace_index = 0; trace_index < __arch->nb_traces; trace_index++) free(__triples[trace_index]); free(__triples); // free filenames free(__arch->filename); for (trace_index = 0; trace_index < __arch->nb_traces; trace_index++) free(__arch->traces_names[trace_index]); free(__arch->traces_names); free(__arch->buffer_ptr); __arch->buffer_ptr = NULL; __arch = NULL; } void litl_merge_traces(const char* arch_name, char** traces_names, const int nb_traces) { __litl_merge_init_archive(arch_name, traces_names, nb_traces); __litl_merge_create_archive(); __litl_merge_finalize_archive(); } eztrace-1.1-7/extlib/litl/src/PaxHeaders.7332/litl_read.h0000644000000000000000000000013213064466141017766 xustar0030 mtime=1490185313.540469912 30 atime=1508138852.939345095 30 ctime=1508162365.777736551 eztrace-1.1-7/extlib/litl/src/litl_read.h0000644000175000017500000004306313064466141021163 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ #ifndef LITL_READ_H_ #define LITL_READ_H_ /** * \file litl_read.h * \brief litl_read Provides a set of functions for reading events from a * regular trace file or an archive of traces * * \authors * Developers are: \n * Roman Iakymchuk -- roman.iakymchuk@telecom-sudparis.eu \n * Francois Trahay -- francois.trahay@telecom-sudparis.eu \n */ #include "litl_types.h" /** * \defgroup litl_read LiTL Reading Functions */ /** * \defgroup litl_read_init Initialization Functions * \ingroup litl_read */ /** * \defgroup litl_read_main Functions for Reading Events * \ingroup litl_read */ /** * \defgroup litl_read_process Functions for Processing Events * \ingroup litl_read */ /** * \ingroup litl_read_init * \brief Opens a trace and reads the first portion of data (trace header) to the buffer * \param filename A filename * \return A pointer to the trace object. NULL in case of failure */ litl_read_trace_t* litl_read_open_trace(const char* filename); /** * \ingroup litl_read_init * \brief Initializes the event reading structure * \param trace A pointer to the trace object */ void litl_read_init_processes(litl_read_trace_t* trace); /** * \ingroup litl_read_init * \brief Returns a pointer to the trace header * \param trace A pointer to the trace object * \return A pointer to the trace header */ litl_general_header_t* litl_read_get_trace_header(litl_read_trace_t* trace); /** * \ingroup litl_read_init * \brief Returns a pointer to the process header * \param process A pointer to the process object * \return A pointer to the trace header */ litl_process_header_t* litl_read_get_process_header( litl_read_process_t* process); /** * \ingroup litl_read_init * \brief Sets the buffer size * \param trace A pointer to the trace object * \param buf_size A buffer size (in Byte) */ void litl_read_set_buffer_size(litl_read_trace_t* trace, const litl_size_t buf_size); /** * \ingroup litl_read_init * \brief Returns the buffer size * \param trace A pointer to the trace object * \return A buffer size (in Byte) */ litl_size_t litl_read_get_buffer_size(litl_read_trace_t* trace); /** * \ingroup litl_read_main * \brief Resets the trace pointer * \param process A pointer to the process object */ void litl_read_reset_process(litl_read_process_t* process); /** * \ingroup litl_read_main * \brief Reads the next event from a trace * \param trace A pointer to the trace object * \param process A pointer to the process object */ litl_read_event_t* litl_read_next_process_event(litl_read_trace_t* trace, litl_read_process_t* process); /** * \ingroup litl_read_main * \brief Reads the next event from a trace * \param trace A pointer to the trace object * \param process A pointer to the process object * \param thread A pointer to the thread object */ litl_read_event_t* litl_read_next_thread_event(litl_read_trace_t* trace, litl_read_process_t* process, litl_read_thread_t* thread); /** * \ingroup litl_read_main * \brief Reads the next event from a trace file * \param trace A pointer to the trace object */ litl_read_event_t* litl_read_next_event(litl_read_trace_t* trace); /** * \ingroup litl_read_main * \brief Closes the trace and frees the allocated memory * \param trace A pointer to the trace object */ void litl_read_finalize_trace(litl_read_trace_t* trace); /*** Internal-use macros ***/ /* * For internal use only * Initializes a pointer for browsing the parameters of an event */ #define __LITL_READ_INIT_PTR(evt, _ptr_) \ do { \ if(LITL_READ_GET_TYPE(evt) == LITL_TYPE_REGULAR) \ _ptr_ = &LITL_READ_REGULAR(evt)->param[0]; \ else if(LITL_READ_GET_TYPE(evt) == LITL_TYPE_PACKED) \ _ptr_ = &(LITL_READ_PACKED(evt))->param[0]; \ } while(0) #if DEBUG #define __LITL_CHECK_EVENT_SIZE(evt, _ptr_) \ do{ \ void* base_ptr; \ __LITL_READ_INIT_PTR(evt, base_ptr); \ int expected_size=0; \ if(LITL_READ_GET_TYPE(evt) == LITL_TYPE_REGULAR){ \ expected_size = LITL_READ_REGULAR(evt)->nb_params * sizeof(litl_param_t); \ int actual_size= ((char*)_ptr_)-((char*)base_ptr); \ if(actual_size != expected_size){ \ fprintf(stderr, "[LiTL] Warning: parameters take %d bytes, but %d bytes were read!\n", expected_size, actual_size); \ abort(); \ } \ } else { \ expected_size = LITL_READ_PACKED(evt)->size; \ int actual_size= ((char*)_ptr_)-((char*)base_ptr); \ if(actual_size != expected_size){ \ fprintf(stderr, "[LiTL] Warning: parameters take %d bytes, but %d bytes were read!\n", expected_size, actual_size); \ abort(); \ } \ } \ }while(0) #else #define __LITL_CHECK_EVENT_SIZE(evt, _ptr_) do { }while(0) #endif /* * For internal use only * Returns the next parameter in an event */ #define __LITL_READ_GET_ARG(evt, _ptr_, arg) \ do { \ if(LITL_READ_GET_TYPE(evt) == LITL_TYPE_REGULAR) \ __LITL_READ_GET_ARG_REGULAR(_ptr_, arg); \ else \ __LITL_READ_GET_ARG_PACKED(_ptr_, arg); \ } while(0) /* * For internal use only * Returns the next parameter in a regular event */ #define __LITL_READ_GET_ARG_REGULAR(_ptr_, arg) do { \ arg = (typeof(arg)) *(litl_param_t*)_ptr_; \ (litl_param_t*)_ptr_++; \ } while(0) /* * For internal use only * Returns the next parameter in a packed event */ #define __LITL_READ_GET_ARG_PACKED(_ptr_, arg) do { \ memcpy(&arg, _ptr_, sizeof(arg)); \ _ptr_ = ((char*)_ptr_)+sizeof(arg); \ } while(0) /*** functions for reading events ***/ /** * \ingroup litl_read_process * \brief Returns a current event of a given thread * \param process An event reading object * \param thread_index An index of a given thread */ #define LITL_READ_GET_CUR_EVENT_PER_THREAD(process, thread_index) \ (&(process)->threads[(thread_index)]->cur_event) /** * \ingroup litl_read_process * \brief Returns a current event of a given trace * \param process An event reading object */ #define LITL_READ_GET_CUR_EVENT(process) \ LITL_READ_GET_CUR_EVENT_PER_THREAD(process, (process)->cur_index) /** * \ingroup litl_read_process * \brief Returns a thread id of a given event * \param read_event An event */ #define LITL_READ_GET_TID(read_event) (read_event)->tid /** * \ingroup litl_read_process * \brief Returns a time stamp of a given event * \param read_event An event */ #define LITL_READ_GET_TIME(read_event) (read_event)->event->time /** * \ingroup litl_read_process * \brief Returns a type of a given event * \param read_event An event */ #define LITL_READ_GET_TYPE(read_event) (read_event)->event->type /** * \ingroup litl_read_process * \brief Returns a code of a given event * \param read_event An event */ #define LITL_READ_GET_CODE(read_event) (read_event)->event->code /** * \ingroup litl_read_process * \brief Returns a size and parameters in the string format of a raw event * \param read_event An event */ #define LITL_READ_RAW(read_event) (&(read_event)->event->parameters.raw) /** * \ingroup litl_read_process * \brief Returns a size and a list of parameters of a regular event * \param read_event An event */ #define LITL_READ_REGULAR(read_event) (&(read_event)->event->parameters.regular) /** * \ingroup litl_read_process * \brief Returns a size and a list of parameters of a packed event * \param read_event An event */ #define LITL_READ_PACKED(read_event) (&(read_event)->event->parameters.packed) /** * \ingroup litl_read_process * \brief Returns a size and an offset of an event of type offset * \param read_event An event */ #define LITL_READ_OFFSET(read_event) (&(read_event)->event->parameters.offset) /** * \ingroup litl_read_process * \brief Assigns the first parameter of p_evt to param1 * \param p_evt A pointer to an event * \param param1 1st parameter for this event */ #define litl_read_get_param_1(p_evt, \ param1) \ do { \ void* _ptr_; \ __LITL_READ_INIT_PTR(p_evt, _ptr_); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param1); \ __LITL_CHECK_EVENT_SIZE(p_evt, _ptr_); \ } while(0) /** * \ingroup litl_read_process * \brief Assigns the first 2 parameters of p_evt to param1 and param2 * \param p_evt A pointer to an event * \param param1 1st parameter for this event * \param param2 2nd parameter for this event */ #define litl_read_get_param_2(p_evt, \ param1, \ param2) \ do { \ void* _ptr_; \ __LITL_READ_INIT_PTR(p_evt, _ptr_); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param1); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param2); \ __LITL_CHECK_EVENT_SIZE(p_evt, _ptr_); \ } while(0) /** * \ingroup litl_read_process * \brief Assigns the first 3 parameters of p_evt to param1, ..., param3 * \param p_evt A pointer to an event * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event */ #define litl_read_get_param_3(p_evt, \ param1, \ param2, \ param3) \ do { \ void* _ptr_; \ __LITL_READ_INIT_PTR(p_evt, _ptr_); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param1); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param2); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param3); \ __LITL_CHECK_EVENT_SIZE(p_evt, _ptr_); \ } while(0) /** * \ingroup litl_read_process * \brief Assigns the first 4 parameters of p_evt to param1, ..., param4 * \param p_evt A pointer to an event * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \param param4 4th parameter for this event */ #define litl_read_get_param_4(p_evt, \ param1, \ param2, \ param3, \ param4) \ do { \ void* _ptr_; \ __LITL_READ_INIT_PTR(p_evt, _ptr_); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param1); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param2); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param3); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param4); \ __LITL_CHECK_EVENT_SIZE(p_evt, _ptr_); \ } while(0) /** * \ingroup litl_read_process * \brief Assigns the first 5 parameters of p_evt to param1, ..., param5 * \param p_evt A pointer to an event * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \param param4 4th parameter for this event * \param param5 5th parameter for this event */ #define litl_read_get_param_5(p_evt, \ param1, \ param2, \ param3, \ param4, \ param5) \ do { \ void* _ptr_; \ __LITL_READ_INIT_PTR(p_evt, _ptr_); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param1); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param2); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param3); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param4); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param5); \ __LITL_CHECK_EVENT_SIZE(p_evt, _ptr_); \ } while(0) /** * \ingroup litl_read_process * \brief Assigns the first 6 parameters of p_evt to param1, ..., param6 * \param p_evt A pointer to an event * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \param param4 4th parameter for this event * \param param5 5th parameter for this event * \param param6 6th parameter for this event */ #define litl_read_get_param_6(p_evt, \ param1, \ param2, \ param3, \ param4, \ param5, \ param6) \ do { \ void* _ptr_; \ __LITL_READ_INIT_PTR(p_evt, _ptr_); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param1); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param2); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param3); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param4); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param5); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param6); \ __LITL_CHECK_EVENT_SIZE(p_evt, _ptr_); \ } while(0) /** * \ingroup litl_read_process * \brief Assigns the first 7 parameters of p_evt to param1, ..., param7 * \param p_evt A pointer to an event * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \param param4 4th parameter for this event * \param param5 5th parameter for this event * \param param6 6th parameter for this event * \param param7 7th parameter for this event */ #define litl_read_get_param_7(p_evt, \ param1, \ param2, \ param3, \ param4, \ param5, \ param6, \ param7) \ do { \ void* _ptr_; \ __LITL_READ_INIT_PTR(p_evt, _ptr_); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param1); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param2); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param3); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param4); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param5); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param6); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param7); \ __LITL_CHECK_EVENT_SIZE(p_evt, _ptr_); \ } while(0) /** * \ingroup litl_read_process * \brief Assigns the first 8 parameters of p_evt to param1, ..., param8 * \param p_evt A pointer to an event * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \param param4 4th parameter for this event * \param param5 5th parameter for this event * \param param6 6th parameter for this event * \param param7 7th parameter for this event * \param param8 8th parameter for this event */ #define litl_read_get_param_8(p_evt, \ param1, \ param2, \ param3, \ param4, \ param5, \ param6, \ param7, \ param8) \ do { \ void* _ptr_; \ __LITL_READ_INIT_PTR(p_evt, _ptr_); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param1); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param2); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param3); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param4); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param5); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param6); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param7); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param8); \ __LITL_CHECK_EVENT_SIZE(p_evt, _ptr_); \ } while(0) /** * \ingroup litl_read_process * \brief Assigns the first 9 parameters of p_evt to param1, ..., param9 * \param p_evt A pointer to an event * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \param param4 4th parameter for this event * \param param5 5th parameter for this event * \param param6 6th parameter for this event * \param param7 7th parameter for this event * \param param8 8th parameter for this event * \param param9 9th parameter for this event */ #define litl_read_get_param_9(p_evt, \ param1, \ param2, \ param3, \ param4, \ param5, \ param6, \ param7, \ param8, \ param9) \ do { \ void* _ptr_; \ __LITL_READ_INIT_PTR(p_evt, _ptr_); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param1); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param2); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param3); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param4); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param5); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param6); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param7); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param8); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param9); \ __LITL_CHECK_EVENT_SIZE(p_evt, _ptr_); \ } while(0) /** * \ingroup litl_read_process * \brief Assigns the first 10 parameters of p_evt to param1, ..., param10 * \param p_evt A pointer to an event * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \param param4 4th parameter for this event * \param param5 5th parameter for this event * \param param6 6th parameter for this event * \param param7 7th parameter for this event * \param param8 8th parameter for this event * \param param9 9th parameter for this event * \param param10 10th parameter for this event */ #define litl_read_get_param_10(p_evt, \ param1, \ param2, \ param3, \ param4, \ param5, \ param6, \ param7, \ param8, \ param9, \ param10) \ do { \ void* _ptr_; \ __LITL_READ_INIT_PTR(p_evt, _ptr_); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param1); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param2); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param3); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param4); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param5); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param6); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param7); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param8); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param9); \ __LITL_READ_GET_ARG(p_evt, _ptr_, param10); \ __LITL_CHECK_EVENT_SIZE(p_evt, _ptr_); \ } while(0) #endif /* LITL_READ_H_ */ eztrace-1.1-7/extlib/litl/src/PaxHeaders.7332/litl_write.h0000644000000000000000000000013213012560437020201 xustar0030 mtime=1479205151.272727014 30 atime=1508138852.907344296 30 ctime=1508162365.777736551 eztrace-1.1-7/extlib/litl/src/litl_write.h0000644000175000017500000006120113012560437021370 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ /** * \file litl_write.h * \brief litl_write Provides a set of functions for recording events in a * trace file * * \authors * Developers are : \n * Roman Iakymchuk -- roman.iakymchuk@telecom-sudparis.eu \n * Francois Trahay -- francois.trahay@telecom-sudparis.eu \n */ #ifndef LITL_WRITE_H_ #define LITL_WRITE_H_ #include "litl_types.h" /** * \defgroup litl_write LiTL Writing Functions */ /** * \defgroup litl_write_init Initialization Functions * \ingroup litl_write */ /** * \defgroup litl_write_reg Functions for Recording Regular Events * \ingroup litl_write */ /** * \defgroup litl_write_raw Functions for Recording Raw Events * \ingroup litl_write */ /** * \defgroup litl_write_pack Functions for Recording Packed Events * \ingroup litl_write */ /** * \ingroup litl_write_init * \brief Initializes the trace buffer * \param buf_size A buffer size (in Byte) * \return A pointer to the event recording object. * NULL in case of failure */ litl_write_trace_t* litl_write_init_trace(const uint32_t buf_size); /** * \ingroup litl_write_init * \brief Enable buffer flush. By default, it is disabled * \param trace A pointer to the event recording object */ void litl_write_buffer_flush_on(litl_write_trace_t* trace); /** * \ingroup litl_write_init * \brief Disable buffer flush. * \param trace A pointer to the event recording object */ void litl_write_buffer_flush_off(litl_write_trace_t* trace); /** * \ingroup litl_write_init * \brief Enable thread safety * \param trace A pointer to the event recording object */ void litl_write_thread_safety_on(litl_write_trace_t* trace); /** * \ingroup litl_write_init * \brief Disable thread safety. By default, it is enabled * \param trace A pointer to the event recording object */ void litl_write_thread_safety_off(litl_write_trace_t* trace); /** * \ingroup litl_write_init * \brief Enable recording tid */ void litl_write_tid_recording_on(litl_write_trace_t* trace); /** * \ingroup litl_write_init * \brief Disable recording tid. By default, it is enabled * \param trace A pointer to the event recording object */ void litl_write_tid_recording_off(litl_write_trace_t* trace); /** * \ingroup litl_write_init * \brief Pauses the event recording * \param trace A pointer to the event recording object */ void litl_write_pause_recording(litl_write_trace_t* trace); /** * \ingroup litl_write_init * \brief Resumes the event recording * \param trace A pointer to the event recording object */ void litl_write_resume_recording(litl_write_trace_t* trace); /** * \ingroup litl_write_init * \brief Sets a new name for the trace file * \param trace A pointer to the event recording object * \param filename A new file name */ void litl_write_set_filename(litl_write_trace_t* trace, char* filename); /*** Regular events ***/ /** * \ingroup litl_write_reg * \brief Records a regular event without parameters * \param trace A pointer to the event recording object * \param code An event code * \return a pointer to the event that was recorded or NULL in case of error */ litl_t* litl_write_probe_reg_0(litl_write_trace_t* trace, litl_code_t code); /** * \ingroup litl_write_reg * \brief Records a regular event with 1 parameter * \param trace A pointer to the event recording object * \param code An event code * \param param1 1st parameter for this event * \return a pointer to the event that was recorded or NULL in case of error */ litl_t* litl_write_probe_reg_1(litl_write_trace_t* trace, litl_code_t code, litl_param_t param1); /** * \ingroup litl_write_reg * \brief Records a regular event with 2 parameters * \param trace A pointer to the event recording object * \param code An event code * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \return a pointer to the event that was recorded or NULL in case of error */ litl_t* litl_write_probe_reg_2(litl_write_trace_t* trace, litl_code_t code, litl_param_t param1, litl_param_t param2); /** * \ingroup litl_write_reg * \brief Records a regular event with 3 parameters * \param trace A pointer to the event recording object * \param code An event code * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \return a pointer to the event that was recorded or NULL in case of error */ litl_t* litl_write_probe_reg_3(litl_write_trace_t* trace, litl_code_t code, litl_param_t param1, litl_param_t param2, litl_param_t param3); /** * \ingroup litl_write_reg * \brief Records a regular event with 4 parameters * \param trace A pointer to the event recording object * \param code An event code * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \param param4 4th parameter for this event * \return a pointer to the event that was recorded or NULL in case of error */ litl_t* litl_write_probe_reg_4(litl_write_trace_t* trace, litl_code_t code, litl_param_t param1, litl_param_t param2, litl_param_t param3, litl_param_t param4); /** * \ingroup litl_write_reg * \brief Records a regular event with 5 parameters * \param trace A pointer to the event recording object * \param code An event code * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \param param4 4th parameter for this event * \param param5 5th parameter for this event * \return a pointer to the event that was recorded or NULL in case of error */ litl_t* litl_write_probe_reg_5(litl_write_trace_t* trace, litl_code_t code, litl_param_t param1, litl_param_t param2, litl_param_t param3, litl_param_t param4, litl_param_t param5); /** * \ingroup litl_write_reg * \brief Records a regular event with 6 parameters * \param trace A pointer to the event recording object * \param code An event code * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \param param4 4th parameter for this event * \param param5 5th parameter for this event * \param param6 6th parameter for this event * \return a pointer to the event that was recorded or NULL in case of error */ litl_t* litl_write_probe_reg_6(litl_write_trace_t* trace, litl_code_t code, litl_param_t param1, litl_param_t param2, litl_param_t param3, litl_param_t param4, litl_param_t param5, litl_param_t param6); /** * \ingroup litl_write_reg * \brief Records a regular event with 7 parameters * \param trace A pointer to the event recording object * \param code An event code * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \param param4 4th parameter for this event * \param param5 5th parameter for this event * \param param6 6th parameter for this event * \param param7 7th parameter for this event * \return a pointer to the event that was recorded or NULL in case of error */ litl_t* litl_write_probe_reg_7(litl_write_trace_t* trace, litl_code_t code, litl_param_t param1, litl_param_t param2, litl_param_t param3, litl_param_t param4, litl_param_t param5, litl_param_t param6, litl_param_t param7); /** * \ingroup litl_write_reg * \brief Records a regular event with 8 parameters * \param trace A pointer to the event recording object * \param code An event code * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \param param4 4th parameter for this event * \param param5 5th parameter for this event * \param param6 6th parameter for this event * \param param7 7th parameter for this event * \param param8 8th parameter for this event * \return a pointer to the event that was recorded or NULL in case of error */ litl_t* litl_write_probe_reg_8(litl_write_trace_t* trace, litl_code_t code, litl_param_t param1, litl_param_t param2, litl_param_t param3, litl_param_t param4, litl_param_t param5, litl_param_t param6, litl_param_t param7, litl_param_t param8); /** * \ingroup litl_write_reg * \brief Records a regular event with 9 parameters * \param trace A pointer to the event recording object * \param code An event code * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \param param4 4th parameter for this event * \param param5 5th parameter for this event * \param param6 6th parameter for this event * \param param7 7th parameter for this event * \param param8 8th parameter for this event * \param param9 9th parameter for this event * \return a pointer to the event that was recorded or NULL in case of error */ litl_t* litl_write_probe_reg_9(litl_write_trace_t* trace, litl_code_t code, litl_param_t param1, litl_param_t param2, litl_param_t param3, litl_param_t param4, litl_param_t param5, litl_param_t param6, litl_param_t param7, litl_param_t param8, litl_param_t param9); /** * \ingroup litl_write_reg * \brief Records a regular event with 10 parameters * \param trace A pointer to the event recording object * \param code An event code * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \param param4 4th parameter for this event * \param param5 5th parameter for this event * \param param6 6th parameter for this event * \param param7 7th parameter for this event * \param param8 8th parameter for this event * \param param9 9th parameter for this event * \param param10 10th parameter for this event * \return a pointer to the event that was recorded or NULL in case of error */ litl_t* litl_write_probe_reg_10(litl_write_trace_t* trace, litl_code_t code, litl_param_t param1, litl_param_t param2, litl_param_t param3, litl_param_t param4, litl_param_t param5, litl_param_t param6, litl_param_t param7, litl_param_t param8, litl_param_t param9, litl_param_t param10); /*** Raw events ***/ /** * \ingroup litl_write_raw * \brief Records an event with data in a string format * \param trace A pointer to the event recording object * \param code An event code * \param size Size (in Bytes) of the data to store * \param data Data to store with this event * \return a pointer to the event that was recorded or NULL in case of error */ litl_t* litl_write_probe_raw(litl_write_trace_t* trace, litl_code_t code, litl_size_t size, litl_data_t data[]); /*** Internal-use macros ***/ /** * \ingroup litl_write_pack * \brief For internal use only. Allocates an event * \param trace A pointer to the event recording object * \param type An event type * \param code An event code * \param size Size of the event (in Bytes) * \return The allocated event or NULL in case of error */ litl_t* __litl_write_get_event(litl_write_trace_t* trace, litl_type_t type, litl_code_t code, int size); /** * \ingroup litl_write_pack * \brief For internal use only. Adds a parameter to a packed event * \param ptr A pointer to an event where the parameter should be stored * \param param A parameter to store */ #define __LITL_WRITE_ADD_ARG(ptr, param) do { \ typeof(param) _param = param; \ memcpy(ptr, &_param, sizeof(_param)); \ ptr = ((char*) ptr)+sizeof(_param); \ } while(0) /*** Packed events ***/ /** * \ingroup litl_write_pack * \brief Records a packed event without parameters * \param trace A pointer to the event recording object * \param code An event code */ #define litl_write_probe_pack_0(trace, \ code, \ retval) do { \ int total_size = 0; \ litl_t* p_evt = __litl_write_get_event(trace, \ LITL_TYPE_PACKED, \ code, total_size); \ retval = p_evt; \ } while(0) /** * \ingroup litl_write_pack * \brief Records a packed event with 1 parameter * \param trace A pointer to the event recording object * \param code An event code * \param param1 1st parameter for this event */ #define litl_write_probe_pack_1(trace, \ code, \ param1, \ retval) \ do { \ int total_size = sizeof(param1); \ litl_t* p_evt = __litl_write_get_event(trace, \ LITL_TYPE_PACKED, \ code, \ total_size); \ if(p_evt){ \ void* _ptr_ = &p_evt->parameters.packed.param[0]; \ __LITL_WRITE_ADD_ARG(_ptr_, param1); \ } \ retval = p_evt; \ } while(0) /** * \ingroup litl_write_pack * \brief Records a packed event with 2 parameters * \param trace A pointer to the event recording object * \param code An event code * \param param1 1st parameter for this event * \param param2 2nd parameter for this event */ #define litl_write_probe_pack_2(trace, \ code, \ param1, \ param2, \ retval) \ do { \ int total_size = sizeof(param1) + sizeof(param2); \ litl_t* p_evt = __litl_write_get_event(trace, \ LITL_TYPE_PACKED, \ code, \ total_size); \ if(p_evt){ \ void* _ptr_ = &p_evt->parameters.packed.param[0]; \ __LITL_WRITE_ADD_ARG(_ptr_, param1); \ __LITL_WRITE_ADD_ARG(_ptr_, param2); \ } \ retval = p_evt; \ } while(0) /** * \ingroup litl_write_pack * \brief Records a packed event with 3 parameters * \param trace A pointer to the event recording object * \param code An event code * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event */ #define litl_write_probe_pack_3(trace, \ code, \ param1, \ param2, \ param3, \ retval) do { \ int total_size = sizeof(param1) + sizeof(param2) + \ sizeof(param3); \ litl_t* p_evt = __litl_write_get_event(trace, \ LITL_TYPE_PACKED, \ code, \ total_size); \ if(p_evt){ \ void* _ptr_ = &p_evt->parameters.packed.param[0]; \ __LITL_WRITE_ADD_ARG(_ptr_, param1); \ __LITL_WRITE_ADD_ARG(_ptr_, param2); \ __LITL_WRITE_ADD_ARG(_ptr_, param3); \ } \ retval = p_evt; \ } while(0) /** * \ingroup litl_write_pack * \brief Records a packed event with 4 parameters * \param trace A pointer to the event recording object * \param code An event code * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \param param4 4th parameter for this event */ #define litl_write_probe_pack_4(trace, \ code, \ param1, \ param2, \ param3, \ param4, \ retval) do { \ int total_size = sizeof(param1) + sizeof(param2) + \ sizeof(param3) + sizeof(param4); \ litl_t* p_evt = __litl_write_get_event(trace, \ LITL_TYPE_PACKED, \ code, \ total_size); \ if(p_evt){ \ void* _ptr_ = &p_evt->parameters.packed.param[0]; \ __LITL_WRITE_ADD_ARG(_ptr_, param1); \ __LITL_WRITE_ADD_ARG(_ptr_, param2); \ __LITL_WRITE_ADD_ARG(_ptr_, param3); \ __LITL_WRITE_ADD_ARG(_ptr_, param4); \ } \ retval = p_evt; \ } while(0) /** * \ingroup litl_write_pack * \brief Records a packed event with 5 parameters * \param trace A pointer to the event recording object * \param code An event code * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \param param4 4th parameter for this event * \param param5 5th parameter for this event */ #define litl_write_probe_pack_5(trace, \ code, \ param1, \ param2, \ param3, \ param4, \ param5, \ retval) do { \ int total_size = sizeof(param1) + sizeof(param2) + \ sizeof(param3) + sizeof(param4) +sizeof(param5); \ litl_t* p_evt = __litl_write_get_event(trace, \ LITL_TYPE_PACKED, \ code, \ total_size); \ if(p_evt){ \ void* _ptr_ = &p_evt->parameters.packed.param[0]; \ __LITL_WRITE_ADD_ARG(_ptr_, param1); \ __LITL_WRITE_ADD_ARG(_ptr_, param2); \ __LITL_WRITE_ADD_ARG(_ptr_, param3); \ __LITL_WRITE_ADD_ARG(_ptr_, param4); \ __LITL_WRITE_ADD_ARG(_ptr_, param5); \ } \ retval = p_evt; \ } while(0) /** * \ingroup litl_write_pack * \brief Records a packed event with 6 parameters * \param trace A pointer to the event recording object * \param code An event code * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \param param4 4th parameter for this event * \param param5 5th parameter for this event * \param param6 6th parameter for this event */ #define litl_write_probe_pack_6(trace, \ code, \ param1, \ param2, \ param3, \ param4, \ param5, \ param6, \ retval) do { \ int total_size = sizeof(param1) + sizeof(param2) + \ sizeof(param3) + sizeof(param4) + sizeof(param5) + sizeof(param6); \ litl_t* p_evt = __litl_write_get_event(trace, \ LITL_TYPE_PACKED, \ code, \ total_size); \ if(p_evt){ \ void* _ptr_ = &p_evt->parameters.packed.param[0]; \ __LITL_WRITE_ADD_ARG(_ptr_, param1); \ __LITL_WRITE_ADD_ARG(_ptr_, param2); \ __LITL_WRITE_ADD_ARG(_ptr_, param3); \ __LITL_WRITE_ADD_ARG(_ptr_, param4); \ __LITL_WRITE_ADD_ARG(_ptr_, param5); \ __LITL_WRITE_ADD_ARG(_ptr_, param6); \ } \ retval = p_evt; \ } while(0) /** * \ingroup litl_write_pack * \brief Records a packed event with 7 parameters * \param trace A pointer to the event recording object * \param code An event code * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \param param4 4th parameter for this event * \param param5 5th parameter for this event * \param param6 6th parameter for this event * \param param7 7th parameter for this event */ #define litl_write_probe_pack_7(trace, \ code, \ param1, \ param2, \ param3, \ param4, \ param5, \ param6, \ param7, \ retval) do { \ int total_size = sizeof(param1) + sizeof(param2) + \ sizeof(param3) + sizeof(param4) + sizeof(param5) + sizeof(param6) \ + sizeof(param7); \ litl_t* p_evt = __litl_write_get_event(trace, \ LITL_TYPE_PACKED, \ code, \ total_size); \ if(p_evt){ \ void* _ptr_ = &p_evt->parameters.packed.param[0]; \ __LITL_WRITE_ADD_ARG(_ptr_, param1); \ __LITL_WRITE_ADD_ARG(_ptr_, param2); \ __LITL_WRITE_ADD_ARG(_ptr_, param3); \ __LITL_WRITE_ADD_ARG(_ptr_, param4); \ __LITL_WRITE_ADD_ARG(_ptr_, param5); \ __LITL_WRITE_ADD_ARG(_ptr_, param6); \ __LITL_WRITE_ADD_ARG(_ptr_, param7); \ } \ retval = p_evt; \ } while(0) /** * \ingroup litl_write_pack * \brief Records a packed event with 8 parameters * \param trace A pointer to the event recording object * \param code An event code * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \param param4 4th parameter for this event * \param param5 5th parameter for this event * \param param6 6th parameter for this event * \param param7 7th parameter for this event * \param param8 8th parameter for this event */ #define litl_write_probe_pack_8(trace, \ code, \ param1, \ param2, \ param3, \ param4, \ param5, \ param6, \ param7, \ param8, \ retval) do { \ int total_size = sizeof(param1) + sizeof(param2) + \ sizeof(param3) + sizeof(param4) + sizeof(param5) + sizeof(param6) \ + sizeof(param7) + sizeof(param8); \ litl_t* p_evt = __litl_write_get_event(trace, \ LITL_TYPE_PACKED, \ code, \ total_size); \ if(p_evt){ \ void* _ptr_ = &p_evt->parameters.packed.param[0]; \ __LITL_WRITE_ADD_ARG(_ptr_, param1); \ __LITL_WRITE_ADD_ARG(_ptr_, param2); \ __LITL_WRITE_ADD_ARG(_ptr_, param3); \ __LITL_WRITE_ADD_ARG(_ptr_, param4); \ __LITL_WRITE_ADD_ARG(_ptr_, param5); \ __LITL_WRITE_ADD_ARG(_ptr_, param6); \ __LITL_WRITE_ADD_ARG(_ptr_, param7); \ __LITL_WRITE_ADD_ARG(_ptr_, param8); \ } \ retval = p_evt; \ } while(0) /** * \ingroup litl_write_pack * \brief Records a packed event with 9 parameters * \param trace A pointer to the event recording object * \param code An event code * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \param param4 4th parameter for this event * \param param5 5th parameter for this event * \param param6 6th parameter for this event * \param param7 7th parameter for this event * \param param8 8th parameter for this event * \param param9 9th parameter for this event */ #define litl_write_probe_pack_9(trace, \ code, \ param1, \ param2, \ param3, \ param4, \ param5, \ param6, \ param7, \ param8, \ param9, \ retval) do { \ int total_size = sizeof(param1) + sizeof(param2) + \ sizeof(param3) + sizeof(param4) + sizeof(param5) + sizeof(param6) \ + sizeof(param7) + sizeof(param8) + sizeof(param9); \ litl_t* p_evt = __litl_write_get_event(trace, \ LITL_TYPE_PACKED, \ code, \ total_size); \ if(p_evt){ \ void* _ptr_ = &p_evt->parameters.packed.param[0]; \ __LITL_WRITE_ADD_ARG(_ptr_, param1); \ __LITL_WRITE_ADD_ARG(_ptr_, param2); \ __LITL_WRITE_ADD_ARG(_ptr_, param3); \ __LITL_WRITE_ADD_ARG(_ptr_, param4); \ __LITL_WRITE_ADD_ARG(_ptr_, param5); \ __LITL_WRITE_ADD_ARG(_ptr_, param6); \ __LITL_WRITE_ADD_ARG(_ptr_, param7); \ __LITL_WRITE_ADD_ARG(_ptr_, param8); \ __LITL_WRITE_ADD_ARG(_ptr_, param9); \ } \ retval = p_evt; \ } while(0) /** * \ingroup litl_write_pack * \brief Records a packed event with 10 parameters * \param trace A pointer to the event recording object * \param code An event code * \param param1 1st parameter for this event * \param param2 2nd parameter for this event * \param param3 3rd parameter for this event * \param param4 4th parameter for this event * \param param5 5th parameter for this event * \param param6 6th parameter for this event * \param param7 7th parameter for this event * \param param8 8th parameter for this event * \param param9 9th parameter for this event * \param param10 10th parameter for this event */ #define litl_write_probe_pack_10(trace, \ code, \ param1, \ param2, \ param3, \ param4, \ param5, \ param6, \ param7, \ param8, \ param9, \ param10, \ retval) do { \ int total_size = sizeof(param1) + sizeof(param2) + \ sizeof(param3) + sizeof(param4) + sizeof(param5) + sizeof(param6) + \ sizeof(param7) + sizeof(param8) + sizeof(param9) + sizeof(param10); \ litl_t* p_evt = __litl_write_get_event(trace, \ LITL_TYPE_PACKED, \ code, \ total_size); \ if(p_evt){ \ void* _ptr_ = &p_evt->parameters.packed.param[0]; \ __LITL_WRITE_ADD_ARG(_ptr_, param1); \ __LITL_WRITE_ADD_ARG(_ptr_, param2); \ __LITL_WRITE_ADD_ARG(_ptr_, param3); \ __LITL_WRITE_ADD_ARG(_ptr_, param4); \ __LITL_WRITE_ADD_ARG(_ptr_, param5); \ __LITL_WRITE_ADD_ARG(_ptr_, param6); \ __LITL_WRITE_ADD_ARG(_ptr_, param7); \ __LITL_WRITE_ADD_ARG(_ptr_, param8); \ __LITL_WRITE_ADD_ARG(_ptr_, param9); \ __LITL_WRITE_ADD_ARG(_ptr_, param10); \ } \ retval = p_evt; \ } while(0) /** * \ingroup litl_write_init * \brief Finalizes the trace * \param trace A pointer to the event recording object */ void litl_write_finalize_trace(litl_write_trace_t* trace); #endif /* LITL_WRITE_H_ */ eztrace-1.1-7/extlib/litl/src/PaxHeaders.7332/Makefile.am0000644000000000000000000000013213012560437017706 xustar0030 mtime=1479205151.268726939 30 atime=1508162189.123648153 30 ctime=1508162365.773736202 eztrace-1.1-7/extlib/litl/src/Makefile.am0000644000175000017500000000143313012560437021076 0ustar00trahaytrahay00000000000000# Copyright © Télécom SudParis. # See COPYING in top-level directory. AM_CFLAGS = -W -Wall -Wextra -I$(top_srcdir)/src -I$(top_builddir)/src lib_LTLIBRARIES = liblitl.la liblitl_la_CPPFLAGS = $(AM_CPPFLAGS) $(AM_CFLAGS) -g liblitl_la_LDFLAGS = $(AM_LDFLAGS) -lm -g -lpthread liblitl_la_SOURCES = litl_types.h litl_tools.h litl_tools.c \ litl_timer.h litl_timer.c \ litl_write.h litl_write.c \ litl_read.h litl_read.c \ litl_merge.h litl_merge.c \ litl_split.h litl_split.c include_HEADERS = litl_types.h litl_tools.h litl_timer.h \ litl_write.h litl_read.h \ litl_merge.h litl_split.h litl_config.h \ fxt.h fut.h clean-local: rm -rf Makefile.bk eztrace-1.1-7/extlib/litl/src/PaxHeaders.7332/litl_config.h0000644000000000000000000000013213171135367020322 xustar0030 mtime=1508162295.095723023 30 atime=1508162295.199731605 30 ctime=1508162365.781736901 eztrace-1.1-7/extlib/litl/src/litl_config.h0000644000175000017500000000072213171135367021512 0ustar00trahaytrahay00000000000000#ifndef LITL_CONFIG_H #define LITL_CONFIG_H #define USE_GETTID 0 #define FORCE_32BIT 0 #if FORCE_32_BIT /* compile for 32bit architecture */ #define HAVE_32BIT 1 #else /* FORCE_32_BIT */ /* detect 32/64 bit architecture */ #ifndef SIZEOF_SIZE_T #define SIZEOF_SIZE_T 8 #endif #if (SIZEOF_SIZE_T == 4) /* 32bit arch */ #define HAVE_32BIT 1 #else /* 64bit arch */ #define HAVE_32BIT 0 #endif #endif #define CLOCK_GETTIME_AVAIL 1 #endif /* LITL_CONFIG_H */ eztrace-1.1-7/extlib/litl/src/PaxHeaders.7332/litl_merge.h0000644000000000000000000000013212657116522020154 xustar0030 mtime=1455201618.044644717 30 atime=1508138852.963345695 30 ctime=1508162365.777736551 eztrace-1.1-7/extlib/litl/src/litl_merge.h0000644000175000017500000000203012657116522021336 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ #ifndef LITL_MERGE_H_ #define LITL_MERGE_H_ /** * \file litl_merge.h * \brief litl_merge Provides a set of functions for merging trace files into * an archive of traces * * \authors * Developers are : \n * Roman Iakymchuk -- roman.iakymchuk@telecom-sudparis.eu \n * Francois Trahay -- francois.trahay@telecom-sudparis.eu \n */ #include "litl_types.h" /** * \defgroup litl_merge LiTL Merging Functions */ /** * \ingroup litl_merge * \brief Merges trace files into an archive. This is a modified version of the * implementation of the cat function from the Kernighan & Ritchie book * \param arch_name A name of an archive * \param traces_names An array of traces names * \param nb_traces A number of trace files to be composed into an archive */ void litl_merge_traces(const char* arch_name, char** traces_names, const int nb_traces); #endif /* LITL_MERGE_H_ */ eztrace-1.1-7/extlib/litl/src/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135250017714 xustar0030 mtime=1508162216.717594367 30 atime=1508162273.565969017 30 ctime=1508162365.781736901 eztrace-1.1-7/extlib/litl/src/Makefile.in0000644000175000017500000007062613171135250021116 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright © Télécom SudParis. # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = litl_config.h CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" LTLIBRARIES = $(lib_LTLIBRARIES) liblitl_la_LIBADD = am_liblitl_la_OBJECTS = liblitl_la-litl_tools.lo \ liblitl_la-litl_timer.lo liblitl_la-litl_write.lo \ liblitl_la-litl_read.lo liblitl_la-litl_merge.lo \ liblitl_la-litl_split.lo liblitl_la_OBJECTS = $(am_liblitl_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = liblitl_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(liblitl_la_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(liblitl_la_SOURCES) DIST_SOURCES = $(liblitl_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(include_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/litl_config.h.in \ $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLOCK_GETTIME_AVAIL = @CLOCK_GETTIME_AVAIL@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOXYGEN = @DOXYGEN@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FORCE_32BIT = @FORCE_32BIT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIZEOF_SIZE_T = @SIZEOF_SIZE_T@ STRIP = @STRIP@ USE_GETTID = @USE_GETTID@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CFLAGS = -W -Wall -Wextra -I$(top_srcdir)/src -I$(top_builddir)/src lib_LTLIBRARIES = liblitl.la liblitl_la_CPPFLAGS = $(AM_CPPFLAGS) $(AM_CFLAGS) -g liblitl_la_LDFLAGS = $(AM_LDFLAGS) -lm -g -lpthread liblitl_la_SOURCES = litl_types.h litl_tools.h litl_tools.c \ litl_timer.h litl_timer.c \ litl_write.h litl_write.c \ litl_read.h litl_read.c \ litl_merge.h litl_merge.c \ litl_split.h litl_split.c include_HEADERS = litl_types.h litl_tools.h litl_timer.h \ litl_write.h litl_read.h \ litl_merge.h litl_split.h litl_config.h \ fxt.h fut.h all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): litl_config.h: $(top_builddir)/config.status $(srcdir)/litl_config.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } liblitl.la: $(liblitl_la_OBJECTS) $(liblitl_la_DEPENDENCIES) $(EXTRA_liblitl_la_DEPENDENCIES) $(AM_V_CCLD)$(liblitl_la_LINK) -rpath $(libdir) $(liblitl_la_OBJECTS) $(liblitl_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblitl_la-litl_merge.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblitl_la-litl_read.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblitl_la-litl_split.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblitl_la-litl_timer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblitl_la-litl_tools.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblitl_la-litl_write.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< liblitl_la-litl_tools.lo: litl_tools.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblitl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblitl_la-litl_tools.lo -MD -MP -MF $(DEPDIR)/liblitl_la-litl_tools.Tpo -c -o liblitl_la-litl_tools.lo `test -f 'litl_tools.c' || echo '$(srcdir)/'`litl_tools.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblitl_la-litl_tools.Tpo $(DEPDIR)/liblitl_la-litl_tools.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='litl_tools.c' object='liblitl_la-litl_tools.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblitl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblitl_la-litl_tools.lo `test -f 'litl_tools.c' || echo '$(srcdir)/'`litl_tools.c liblitl_la-litl_timer.lo: litl_timer.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblitl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblitl_la-litl_timer.lo -MD -MP -MF $(DEPDIR)/liblitl_la-litl_timer.Tpo -c -o liblitl_la-litl_timer.lo `test -f 'litl_timer.c' || echo '$(srcdir)/'`litl_timer.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblitl_la-litl_timer.Tpo $(DEPDIR)/liblitl_la-litl_timer.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='litl_timer.c' object='liblitl_la-litl_timer.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblitl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblitl_la-litl_timer.lo `test -f 'litl_timer.c' || echo '$(srcdir)/'`litl_timer.c liblitl_la-litl_write.lo: litl_write.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblitl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblitl_la-litl_write.lo -MD -MP -MF $(DEPDIR)/liblitl_la-litl_write.Tpo -c -o liblitl_la-litl_write.lo `test -f 'litl_write.c' || echo '$(srcdir)/'`litl_write.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblitl_la-litl_write.Tpo $(DEPDIR)/liblitl_la-litl_write.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='litl_write.c' object='liblitl_la-litl_write.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblitl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblitl_la-litl_write.lo `test -f 'litl_write.c' || echo '$(srcdir)/'`litl_write.c liblitl_la-litl_read.lo: litl_read.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblitl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblitl_la-litl_read.lo -MD -MP -MF $(DEPDIR)/liblitl_la-litl_read.Tpo -c -o liblitl_la-litl_read.lo `test -f 'litl_read.c' || echo '$(srcdir)/'`litl_read.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblitl_la-litl_read.Tpo $(DEPDIR)/liblitl_la-litl_read.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='litl_read.c' object='liblitl_la-litl_read.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblitl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblitl_la-litl_read.lo `test -f 'litl_read.c' || echo '$(srcdir)/'`litl_read.c liblitl_la-litl_merge.lo: litl_merge.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblitl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblitl_la-litl_merge.lo -MD -MP -MF $(DEPDIR)/liblitl_la-litl_merge.Tpo -c -o liblitl_la-litl_merge.lo `test -f 'litl_merge.c' || echo '$(srcdir)/'`litl_merge.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblitl_la-litl_merge.Tpo $(DEPDIR)/liblitl_la-litl_merge.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='litl_merge.c' object='liblitl_la-litl_merge.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblitl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblitl_la-litl_merge.lo `test -f 'litl_merge.c' || echo '$(srcdir)/'`litl_merge.c liblitl_la-litl_split.lo: litl_split.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblitl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblitl_la-litl_split.lo -MD -MP -MF $(DEPDIR)/liblitl_la-litl_split.Tpo -c -o liblitl_la-litl_split.lo `test -f 'litl_split.c' || echo '$(srcdir)/'`litl_split.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblitl_la-litl_split.Tpo $(DEPDIR)/liblitl_la-litl_split.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='litl_split.c' object='liblitl_la-litl_split.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblitl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblitl_la-litl_split.lo `test -f 'litl_split.c' || echo '$(srcdir)/'`litl_split.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool clean-local \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-includeHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool clean-local cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am \ install-includeHEADERS install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-includeHEADERS \ uninstall-libLTLIBRARIES .PRECIOUS: Makefile clean-local: rm -rf Makefile.bk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/litl/src/PaxHeaders.7332/litl_write.c0000644000000000000000000000013213045053145020173 xustar0030 mtime=1486116453.400402495 30 atime=1508138852.851342898 30 ctime=1508162365.785737249 eztrace-1.1-7/extlib/litl/src/litl_write.c0000644000175000017500000006773613045053145021405 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include "litl_timer.h" #include "litl_tools.h" #include "litl_write.h" /* * Adds a header to the trace file with the information regarding: * - OS * - Processor type * - Version of LiTL */ static void __litl_write_add_trace_header(litl_write_trace_t* trace) { struct utsname uts; // allocate memory for the trace header trace->header_ptr = (litl_buffer_t) malloc(trace->header_size); if (!trace->header_ptr) { perror("Could not allocate memory for the trace header!"); exit(EXIT_FAILURE); } trace->header = trace->header_ptr; memset(trace->header_ptr, 0, trace->header_size); if (uname(&uts) < 0) perror("Could not use uname()!"); // add a general header // version of LiTL sprintf((char*) ((litl_general_header_t *) trace->header)->litl_ver, "%s", VERSION); // system information sprintf((char*) ((litl_general_header_t *) trace->header)->sysinfo, "%s %s %s %s %s", uts.sysname, uts.nodename, uts.release, uts.version, uts.machine); // a number of processes ((litl_general_header_t *) trace->header)->nb_processes = 1; // move pointer trace->header += sizeof(litl_general_header_t); // add a process-specific header // by default one trace file contains events only of one process char* filename = strrchr(trace->filename, '/'); filename++; sprintf((char*) ((litl_process_header_t *) trace->header)->process_name, "%s", filename); ((litl_process_header_t *) trace->header)->nb_threads = trace->nb_threads; ((litl_process_header_t *) trace->header)->header_nb_threads = trace->nb_threads; ((litl_process_header_t *) trace->header)->buffer_size = trace->buffer_size; ((litl_process_header_t *) trace->header)->trace_size = 0; ((litl_process_header_t *) trace->header)->offset = sizeof(litl_general_header_t) + sizeof(litl_process_header_t); // header_size stores the position of nb_threads in the trace file trace->header_size = sizeof(litl_general_header_t) + 256 * sizeof(litl_data_t); // move pointer trace->header += sizeof(litl_process_header_t); } /* * Initializes the trace buffer */ litl_write_trace_t* litl_write_init_trace(const litl_size_t buf_size) { litl_med_size_t i; litl_write_trace_t* trace; trace = (litl_write_trace_t*) malloc(sizeof(litl_write_trace_t)); if (!trace) { perror("Could not allocate memory for the trace!"); exit(EXIT_FAILURE); } // set variables trace->filename = NULL; trace->general_offset = 0; trace->is_header_flushed = 0; // set the buffer size using the environment variable. // If the variable is not specified, use the provided value char* str = getenv("LITL_BUFFER_SIZE"); if (str != NULL ) trace->buffer_size = atoi(str); else trace->buffer_size = buf_size; trace->is_buffer_full = 0; trace->nb_allocated_buffers = 256; trace->buffers = malloc( sizeof(litl_write_buffer_t*) * trace->nb_allocated_buffers); if (!trace->buffers) { perror("Could not allocate memory for the threads!"); exit(EXIT_FAILURE); } for (i = 0; i < trace->nb_allocated_buffers; i++) { // initialize the array already_flushed trace->buffers[i] = malloc(sizeof(litl_write_buffer_t)); if (!trace->buffers[i]) { perror("Could not allocate memory for a thread\n"); exit(EXIT_FAILURE); } trace->buffers[i]->already_flushed = 0; // initialize tids by zeros; this is needed for __is_tid and __find_slot trace->buffers[i]->tid = 0; } trace->nb_threads = 0; // initialize the timing mechanism litl_time_initialize(); assert(pthread_key_create(&trace->index, NULL ) == 0); // set trace->allow_buffer_flush using the environment variable. // By default the buffer flushing is disabled litl_write_buffer_flush_off(trace); str = getenv("LITL_BUFFER_FLUSH"); if (str) { if(strcmp(str, "0") == 0) litl_write_buffer_flush_off(trace); else litl_write_buffer_flush_on(trace); } // set trace->allow_thread_safety using the environment variable. // By default thread safety is enabled litl_write_thread_safety_on(trace); str = getenv("LITL_THREAD_SAFETY"); if (str && (strcmp(str, "0") == 0)) litl_write_thread_safety_off(trace); if (trace->allow_thread_safety) pthread_mutex_init(&trace->lock_litl_flush, NULL ); pthread_mutex_init(&trace->lock_buffer_init, NULL ); // set trace->allow_tid_recording using the environment variable. // By default tid recording is enabled litl_write_tid_recording_on(trace); str = getenv("LITL_TID_RECORDING"); if (str && (strcmp(str, "0") == 0)) litl_write_tid_recording_off(trace); trace->is_recording_paused = 0; trace->is_litl_initialized = 1; return trace; } /* * Computes the size of data in the trace header */ static litl_size_t __litl_write_get_header_size(litl_write_trace_t* trace) { return (trace->header - trace->header_ptr); } /* * Computes the size of data in buffer */ static litl_size_t __litl_write_get_buffer_size(litl_write_trace_t* trace, litl_med_size_t pos) { return (trace->buffers[pos]->buffer - trace->buffers[pos]->buffer_ptr); } /* * Activates buffer flush */ void litl_write_buffer_flush_on(litl_write_trace_t* trace) { trace->allow_buffer_flush = 1; } /* * Deactivates buffer flush. By default, it is activated */ void litl_write_buffer_flush_off(litl_write_trace_t* trace) { trace->allow_buffer_flush = 0; } /* * Activate thread safety. By default it is deactivated */ void litl_write_thread_safety_on(litl_write_trace_t* trace) { trace->allow_thread_safety = 1; } /* * Deactivates thread safety */ void litl_write_thread_safety_off(litl_write_trace_t* trace) { trace->allow_thread_safety = 0; } /* * Activates recording tid. By default it is deactivated */ void litl_write_tid_recording_on(litl_write_trace_t* trace) { trace->allow_tid_recording = 1; } /* * Deactivates recording tid */ void litl_write_tid_recording_off(litl_write_trace_t* trace) { trace->allow_tid_recording = 0; } /* * Pauses the event recording */ void litl_write_pause_recording(litl_write_trace_t* trace) { if (trace) trace->is_recording_paused = 1; } /* * Resumes the event recording */ void litl_write_resume_recording(litl_write_trace_t* trace) { if (trace) trace->is_recording_paused = 0; } /* * Sets a new name for the trace file */ void litl_write_set_filename(litl_write_trace_t* trace, char* filename) { if (trace->filename) { if (trace->is_header_flushed) fprintf( stderr, "Warning: changing the trace file name to %s after some events have been saved in file %s\n", filename, trace->filename); free(trace->filename); } // check whether the file name was set. If no, set it by default trace name. if (filename == NULL ) sprintf(filename, "/tmp/%s_%s", getenv("USER"), "litl_log_1"); if (asprintf(&trace->filename, "%s", filename) == -1) { perror("Error: Cannot set the filename for recording events!\n"); exit(EXIT_FAILURE); } } /* * Records an event with offset only */ static void __litl_write_probe_offset(litl_write_trace_t* trace, litl_med_size_t index) { if (!trace->is_litl_initialized || trace->is_recording_paused) return; litl_t* cur_ptr = (litl_t *) trace->buffers[index]->buffer; cur_ptr->time = 0; cur_ptr->code = LITL_OFFSET_CODE; cur_ptr->type = LITL_TYPE_REGULAR; cur_ptr->parameters.offset.nb_params = 1; cur_ptr->parameters.offset.offset = 0; trace->buffers[index]->buffer += __litl_get_gen_event_size(cur_ptr); } /* Open the trace file. If the file already exists, delete it first */ static void __litl_open_new_file(litl_write_trace_t* trace) { /* if file exist. delete it first */ if ((trace->f_handle = open(trace->filename, O_WRONLY | O_CREAT | O_EXCL, 0644)) < 0) { if(errno == EEXIST) { /* file already exist. Delete it and open it */ if(unlink(trace->filename) < 0 ){ perror("Cannot delete trace file"); exit(EXIT_FAILURE); } if ((trace->f_handle = open(trace->filename, O_WRONLY | O_CREAT | O_EXCL, 0644)) < 0) { perror("Cannot open trace file"); exit(EXIT_FAILURE); } } else { fprintf(stderr, "Cannot open %s\n", trace->filename); exit(EXIT_FAILURE); } } } /* * Write the header on the disk */ static void __litl_write_update_header(litl_write_trace_t* trace) { // write the trace header to the trace file assert(trace->f_handle >= 0); lseek(trace->f_handle, 0, SEEK_SET); if (write(trace->f_handle, trace->header_ptr, __litl_write_get_header_size(trace)) == -1) { perror( "Flushing the buffer. Could not write measured data to the trace file!"); exit(EXIT_FAILURE); } } /* * Update the header and flush it to disk */ static void __litl_write_flush_header(litl_write_trace_t* trace) { if (!trace->is_header_flushed) { // open the trace file __litl_open_new_file(trace); // add a header to the trace file trace->header_size = sizeof(litl_general_header_t) + sizeof(litl_process_header_t) + (trace->nb_threads + 1) * sizeof(litl_thread_pair_t); __litl_write_add_trace_header(trace); // add information about each working thread: (tid, offset) litl_med_size_t i; for (i = 0; i < trace->nb_threads; i++) { ((litl_thread_pair_t *) trace->header)->tid = trace->buffers[i]->tid; ((litl_thread_pair_t *) trace->header)->offset = 0; trace->header += sizeof(litl_thread_pair_t); // save the position of offset inside the trace file trace->buffers[i]->offset = __litl_write_get_header_size(trace) - sizeof(litl_offset_t); trace->buffers[i]->already_flushed = 1; } // offset indicates the position of offset to the next slot of // pairs (tid, offset) within the trace file trace->header_offset = __litl_write_get_header_size(trace); // specify the last slot of pairs (offset == 0) litl_thread_pair_t *thread_pair = (litl_thread_pair_t *) trace->header; trace->header += sizeof(litl_thread_pair_t); thread_pair->tid = 0; thread_pair->offset = 0; // write the trace header to the trace file __litl_write_update_header(trace); trace->general_offset = __litl_write_get_header_size(trace); trace->header_nb_threads = trace->nb_threads; trace->threads_offset = 0; trace->nb_slots = 0; trace->is_header_flushed = 1; } } /* * Write the thread-specific header to disk */ static void __litl_write_flush_thread_header(litl_write_trace_t* trace, litl_med_size_t index, litl_offset_t header_size) { litl_offset_t offset; int res; // when more buffers to store threads information is required if (trace->nb_threads > (trace->header_nb_threads + NBTHREADS * trace->nb_slots)) { // updated the offset from the previous slot lseek(trace->f_handle, trace->header_offset + sizeof(litl_tid_t), SEEK_SET); offset = trace->general_offset - header_size; res = write(trace->f_handle, &offset, sizeof(litl_offset_t)); assert(res>=0); // reserve a new slot for pairs (tid, offset) trace->header_offset = trace->general_offset; trace->threads_offset = trace->header_offset; trace->general_offset += (NBTHREADS + 1) * sizeof(litl_thread_pair_t); trace->nb_slots++; } // add a new pair (tid, offset) lseek(trace->f_handle, trace->header_offset, SEEK_SET); res = write(trace->f_handle, &trace->buffers[index]->tid, sizeof(litl_tid_t)); assert(res >= 0); offset = trace->general_offset - header_size; res = write(trace->f_handle, &offset, sizeof(litl_offset_t)); assert(res >= 0); // add an indicator to specify the last slot of pairs (offset == 0) // TODO: how to optimize this and write only once at the end of the slot offset = 0; res = write(trace->f_handle, &offset, sizeof(litl_tid_t)); assert(res >= 0); res = write(trace->f_handle, &offset, sizeof(litl_offset_t)); assert(res >= 0); trace->header_offset += sizeof(litl_thread_pair_t); trace->buffers[index]->already_flushed = 1; // updated the number of threads // TODO: perform update only once 'cause there is duplication lseek(trace->f_handle, trace->header_size, SEEK_SET); res = write(trace->f_handle, &trace->nb_threads, sizeof(litl_med_size_t)); assert(res >= 0); } /* * Update the thread-specific header and write it to disk */ static void __litl_write_update_thread_header(litl_write_trace_t* trace, litl_med_size_t index, litl_offset_t header_size) { // update the previous offset of the current thread, // updating the location in the file lseek(trace->f_handle, trace->buffers[index]->offset, SEEK_SET); litl_offset_t offset = trace->general_offset - header_size; int res = write(trace->f_handle, &offset, sizeof(litl_offset_t)); assert(res >= 0); } /* * Writes the recorded events from the buffer to the trace file */ static void __litl_write_flush_buffer(litl_write_trace_t* trace, litl_med_size_t index) { int res __attribute__ ((__unused__)); litl_offset_t header_size; if (!trace->is_litl_initialized) return; if (trace->allow_thread_safety) pthread_mutex_lock(&trace->lock_litl_flush); if (!trace->is_header_flushed) { /* flush the header to disk */ __litl_write_flush_header(trace); } header_size = sizeof(litl_general_header_t) + sizeof(litl_process_header_t); // handle the situation when some threads start after the header was flushed if (!trace->buffers[index]->already_flushed) { __litl_write_flush_thread_header(trace, index, header_size); } else { __litl_write_update_thread_header(trace, index, header_size); } // add an event with offset __litl_write_probe_offset(trace, index); lseek(trace->f_handle, trace->general_offset, SEEK_SET); if (write(trace->f_handle, trace->buffers[index]->buffer_ptr, __litl_write_get_buffer_size(trace, index)) == -1) { perror( "Flushing the buffer. Could not write measured data to the trace file!"); exit(EXIT_FAILURE); } // update the general_offset trace->general_offset += __litl_write_get_buffer_size(trace, index); // update the current offset of the thread trace->buffers[index]->offset = trace->general_offset - sizeof(litl_offset_t); if (trace->allow_thread_safety) pthread_mutex_unlock(&trace->lock_litl_flush); trace->buffers[index]->buffer = trace->buffers[index]->buffer_ptr; } /* * Checks whether the trace buffer was allocated. If no, then allocate * the buffer and, for otherwise too, returns the position of * the thread buffer in the array buffer_ptr/buffer. */ static void __litl_write_allocate_buffer(litl_write_trace_t* trace) { litl_med_size_t* pos; // thread safe region pthread_mutex_lock(&trace->lock_buffer_init); pos = malloc(sizeof(litl_med_size_t)); *pos = trace->nb_threads; int thread_id = *pos; pthread_setspecific(trace->index, pos); trace->nb_threads++; if (*pos >= trace->nb_allocated_buffers) { // We need to allocate a bigger array of buffers void* ptr = realloc( trace->buffers, trace->nb_allocated_buffers * 2 * sizeof(litl_write_buffer_t*)); if (!ptr) { perror("LiTL failed to reallocate memory for threads!\n"); exit(EXIT_FAILURE); } trace->buffers = ptr; unsigned i; for (i = trace->nb_allocated_buffers; i < 2 * trace->nb_allocated_buffers; i++) { trace->buffers[i] = malloc(sizeof(litl_write_buffer_t)); if (!trace->buffers[i]) { perror("Could not allocate memory for a thread\n!"); exit(EXIT_FAILURE); } trace->buffers[i]->already_flushed = 0; trace->buffers[i]->initialized = 0; } trace->nb_allocated_buffers *= 2; } trace->buffers[thread_id]->tid = CUR_TID; trace->buffers[thread_id]->already_flushed = 0; pthread_mutex_unlock(&trace->lock_buffer_init); /* use mmap instead of malloc so that we can use the MAP_POPULATE option that makes sure the page table is populated. This way, the page faults caused by litl are sensibly reduced. */ #define USE_MMAP #ifdef USE_MMAP size_t length = trace->buffer_size + __litl_get_reg_event_size(LITL_MAX_PARAMS) + __litl_get_reg_event_size(1); trace->buffers[thread_id]->buffer_ptr = mmap(NULL, length, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS|MAP_POPULATE, -1, 0); if(trace->buffers[thread_id]->buffer_ptr == MAP_FAILED) { perror("mmap"); } /* touch the first pages */ if(length> 1024*1024) length=1024*1024; memset(trace->buffers[thread_id]->buffer_ptr, 0, length); #else size_t length = trace->buffer_size + __litl_get_reg_event_size(LITL_MAX_PARAMS) + __litl_get_reg_event_size(1); trace->buffers[thread_id]->buffer_ptr = malloc(length); #endif if (!trace->buffers[thread_id]->buffer_ptr) { perror("Could not allocate memory buffer for the thread\n!"); exit(EXIT_FAILURE); } // touch the memory so that it is allocated for real (otherwise, this may // cause performance issues on NUMA machines) memset(trace->buffers[thread_id]->buffer_ptr, 1, 1); trace->buffers[thread_id]->buffer = trace->buffers[thread_id]->buffer_ptr; trace->buffers[thread_id]->initialized = 1; } /* * For internal use only. * Allocates an event */ litl_t* __litl_write_get_event(litl_write_trace_t* trace, litl_type_t type, litl_code_t code, int param_size) { litl_med_size_t index = 0; litl_t*retval = NULL; litl_size_t event_size = __litl_get_event_size(type, param_size); if (trace && trace->is_litl_initialized && !trace->is_recording_paused && !trace->is_buffer_full) { // find the thread index litl_med_size_t *p_index = pthread_getspecific(trace->index); if (!p_index) { __litl_write_allocate_buffer(trace); p_index = pthread_getspecific(trace->index); if(!p_index) return NULL; } index = *(litl_med_size_t *) p_index; if(trace->buffers[index]->initialized == 0) return NULL; litl_write_buffer_t *p_buffer = trace->buffers[index]; // is there enough space in the buffer? litl_size_t used_memory= __litl_write_get_buffer_size(trace, index); if (used_memory+event_size < trace->buffer_size) { // there is enough space for this event litl_t* cur_ptr = (litl_t*) p_buffer->buffer; // fill the event cur_ptr->time = litl_get_time(); cur_ptr->code = code; cur_ptr->type = type; switch (type) { case LITL_TYPE_REGULAR: cur_ptr->parameters.regular.nb_params = (param_size) / sizeof(litl_param_t); break; case LITL_TYPE_RAW: cur_ptr->parameters.raw.size = param_size; break; case LITL_TYPE_PACKED: cur_ptr->parameters.packed.size = param_size; break; case LITL_TYPE_OFFSET: cur_ptr->parameters.offset.nb_params = param_size; break; default: fprintf(stderr, "Unknown event type %d\n", type); abort(); } p_buffer->buffer += __litl_get_gen_event_size(cur_ptr); retval = cur_ptr; goto out; } else if (trace->allow_buffer_flush) { // not enough space. flush the buffer and retry __litl_write_flush_buffer(trace, index); retval = __litl_write_get_event(trace, type, code, param_size); goto out; } else { // not enough space, but flushing is disabled so just stop recording trace->is_buffer_full = 1; retval = NULL ; goto out; } } out: return retval; } /* Common function for recording a regular event. * This function fills all the fiels except for the parameters */ static litl_t* __litl_write_probe_reg_common(litl_write_trace_t* trace, litl_code_t code, unsigned nb_params) { litl_t*retval = __litl_write_get_event(trace, LITL_TYPE_REGULAR, code, nb_params); return retval; } /* * Records a regular event without any arguments */ litl_t* litl_write_probe_reg_0(litl_write_trace_t* trace, litl_code_t code) { litl_t *cur_ptr = __litl_write_probe_reg_common(trace, code, 0); return cur_ptr; } /* * Records a regular event with one argument */ litl_t* litl_write_probe_reg_1(litl_write_trace_t* trace, litl_code_t code, litl_param_t param1) { litl_t *cur_ptr = __litl_write_probe_reg_common(trace, code, 1); if(cur_ptr) { cur_ptr->parameters.regular.param[0] = param1; } return cur_ptr; } /* * Records a regular event with two arguments */ litl_t* litl_write_probe_reg_2(litl_write_trace_t* trace, litl_code_t code, litl_param_t param1, litl_param_t param2) { litl_t *cur_ptr = __litl_write_probe_reg_common(trace, code, 2); if(cur_ptr) { cur_ptr->parameters.regular.param[0] = param1; cur_ptr->parameters.regular.param[1] = param2; } return cur_ptr; } /* * Records a regular event with three arguments */ litl_t* litl_write_probe_reg_3(litl_write_trace_t* trace, litl_code_t code, litl_param_t param1, litl_param_t param2, litl_param_t param3) { litl_t *cur_ptr = __litl_write_probe_reg_common(trace, code, 3); if(cur_ptr) { cur_ptr->parameters.regular.param[0] = param1; cur_ptr->parameters.regular.param[1] = param2; cur_ptr->parameters.regular.param[2] = param3; } return cur_ptr; } /* * Records a regular event with four arguments */ litl_t* litl_write_probe_reg_4(litl_write_trace_t* trace, litl_code_t code, litl_param_t param1, litl_param_t param2, litl_param_t param3, litl_param_t param4) { litl_t *cur_ptr = __litl_write_probe_reg_common(trace, code, 4); if(cur_ptr) { cur_ptr->parameters.regular.param[0] = param1; cur_ptr->parameters.regular.param[1] = param2; cur_ptr->parameters.regular.param[2] = param3; cur_ptr->parameters.regular.param[3] = param4; } return cur_ptr; } /* * Records a regular event with five arguments */ litl_t* litl_write_probe_reg_5(litl_write_trace_t* trace, litl_code_t code, litl_param_t param1, litl_param_t param2, litl_param_t param3, litl_param_t param4, litl_param_t param5) { litl_t *cur_ptr = __litl_write_probe_reg_common(trace, code, 5); if(cur_ptr) { cur_ptr->parameters.regular.param[0] = param1; cur_ptr->parameters.regular.param[1] = param2; cur_ptr->parameters.regular.param[2] = param3; cur_ptr->parameters.regular.param[3] = param4; cur_ptr->parameters.regular.param[4] = param5; } return cur_ptr; } /* * Records a regular event with six arguments */ litl_t* litl_write_probe_reg_6(litl_write_trace_t* trace, litl_code_t code, litl_param_t param1, litl_param_t param2, litl_param_t param3, litl_param_t param4, litl_param_t param5, litl_param_t param6) { litl_t *cur_ptr = __litl_write_probe_reg_common(trace, code, 6); if(cur_ptr) { cur_ptr->parameters.regular.param[0] = param1; cur_ptr->parameters.regular.param[1] = param2; cur_ptr->parameters.regular.param[2] = param3; cur_ptr->parameters.regular.param[3] = param4; cur_ptr->parameters.regular.param[4] = param5; cur_ptr->parameters.regular.param[5] = param6; } return cur_ptr; } /* * Records a regular event with seven arguments */ litl_t* litl_write_probe_reg_7(litl_write_trace_t* trace, litl_code_t code, litl_param_t param1, litl_param_t param2, litl_param_t param3, litl_param_t param4, litl_param_t param5, litl_param_t param6, litl_param_t param7) { litl_t *cur_ptr = __litl_write_probe_reg_common(trace, code, 7); if(cur_ptr) { cur_ptr->parameters.regular.param[0] = param1; cur_ptr->parameters.regular.param[1] = param2; cur_ptr->parameters.regular.param[2] = param3; cur_ptr->parameters.regular.param[3] = param4; cur_ptr->parameters.regular.param[4] = param5; cur_ptr->parameters.regular.param[5] = param6; cur_ptr->parameters.regular.param[6] = param7; } return cur_ptr; } /* * Records a regular event with eight arguments */ litl_t* litl_write_probe_reg_8(litl_write_trace_t* trace, litl_code_t code, litl_param_t param1, litl_param_t param2, litl_param_t param3, litl_param_t param4, litl_param_t param5, litl_param_t param6, litl_param_t param7, litl_param_t param8) { litl_t *cur_ptr = __litl_write_probe_reg_common(trace, code, 8); if(cur_ptr) { cur_ptr->parameters.regular.param[0] = param1; cur_ptr->parameters.regular.param[1] = param2; cur_ptr->parameters.regular.param[2] = param3; cur_ptr->parameters.regular.param[3] = param4; cur_ptr->parameters.regular.param[4] = param5; cur_ptr->parameters.regular.param[5] = param6; cur_ptr->parameters.regular.param[6] = param7; cur_ptr->parameters.regular.param[7] = param8; } return cur_ptr; } /* * Records a regular event with nine arguments */ litl_t* litl_write_probe_reg_9(litl_write_trace_t* trace, litl_code_t code, litl_param_t param1, litl_param_t param2, litl_param_t param3, litl_param_t param4, litl_param_t param5, litl_param_t param6, litl_param_t param7, litl_param_t param8, litl_param_t param9) { litl_t *cur_ptr = __litl_write_probe_reg_common(trace, code, 9); if(cur_ptr) { cur_ptr->parameters.regular.param[0] = param1; cur_ptr->parameters.regular.param[1] = param2; cur_ptr->parameters.regular.param[2] = param3; cur_ptr->parameters.regular.param[3] = param4; cur_ptr->parameters.regular.param[4] = param5; cur_ptr->parameters.regular.param[5] = param6; cur_ptr->parameters.regular.param[6] = param7; cur_ptr->parameters.regular.param[7] = param8; cur_ptr->parameters.regular.param[8] = param9; } return cur_ptr; } /* * Records a regular event with ten arguments */ litl_t* litl_write_probe_reg_10(litl_write_trace_t* trace, litl_code_t code, litl_param_t param1, litl_param_t param2, litl_param_t param3, litl_param_t param4, litl_param_t param5, litl_param_t param6, litl_param_t param7, litl_param_t param8, litl_param_t param9, litl_param_t param10) { litl_t *cur_ptr = __litl_write_probe_reg_common(trace, code, 10); if(cur_ptr) { cur_ptr->parameters.regular.param[0] = param1; cur_ptr->parameters.regular.param[1] = param2; cur_ptr->parameters.regular.param[2] = param3; cur_ptr->parameters.regular.param[3] = param4; cur_ptr->parameters.regular.param[4] = param5; cur_ptr->parameters.regular.param[5] = param6; cur_ptr->parameters.regular.param[6] = param7; cur_ptr->parameters.regular.param[7] = param8; cur_ptr->parameters.regular.param[8] = param9; cur_ptr->parameters.regular.param[9] = param10; } return cur_ptr; } /* * Records an event in a raw state, where the size is #args in the void* array. * That helps to discover places where the application has crashed */ litl_t* litl_write_probe_raw(litl_write_trace_t* trace, litl_code_t code, litl_size_t size, litl_data_t data[]) { litl_t* retval = __litl_write_get_event(trace, LITL_TYPE_RAW, code, size+1); if(retval) { litl_size_t i; for (i = 0; i < size; i++) { retval->parameters.raw.data[i] = data[i]; } retval->parameters.raw.data[size]='\0'; } return retval; } /* * This function finalizes the trace */ void litl_write_finalize_trace(litl_write_trace_t* trace) { litl_med_size_t i; if(!trace) return; for (i = 0; i < trace->nb_threads; i++) { __litl_write_flush_buffer(trace, i); } close(trace->f_handle); trace->f_handle = -1; for (i = 0; i < trace->nb_allocated_buffers; i++) { if (trace->buffers[i]->tid != 0) { size_t length = trace->buffer_size + __litl_get_reg_event_size(LITL_MAX_PARAMS) + __litl_get_reg_event_size(1); #ifdef USE_MMAP int ret = munmap(trace->buffers[i]->buffer_ptr, length); assert(ret==0); #else free(trace->buffers[i]->buffer_ptr); #endif trace->buffers[i]->buffer_ptr = NULL; } else { break; } } if (trace->allow_thread_safety) { pthread_mutex_destroy(&trace->lock_litl_flush); } pthread_mutex_destroy(&trace->lock_buffer_init); free(trace->filename); trace->filename = NULL; trace->is_litl_initialized = 0; trace->is_header_flushed = 0; free(trace); } eztrace-1.1-7/extlib/litl/PaxHeaders.7332/compile0000644000000000000000000000013213171135250016433 xustar0030 mtime=1508162216.637588533 30 atime=1508162216.637588533 30 ctime=1508162365.741733411 eztrace-1.1-7/extlib/litl/compile0000755000175000017500000001624513171135250017635 0ustar00trahaytrahay00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/extlib/litl/PaxHeaders.7332/tests0000644000000000000000000000013213171135475016156 xustar0030 mtime=1508162365.885745973 30 atime=1508162367.741908015 30 ctime=1508162365.885745973 eztrace-1.1-7/extlib/litl/tests/0000755000175000017500000000000013171135475017422 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/litl/tests/PaxHeaders.7332/test_litl_trace_size.c0000644000000000000000000000013212426414022022600 xustar0030 mtime=1415190546.314452975 30 atime=1507797544.002894639 30 ctime=1508162365.865744229 eztrace-1.1-7/extlib/litl/tests/test_litl_trace_size.c0000644000175000017500000000305512426414022023772 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ /* * This test is to show that LiTL uses the optimized event storage and occupies * the required space only. */ #define _GNU_SOURCE #include #include #include #include #include #include "litl_types.h" #include "litl_write.h" int main(int argc, char **argv) { int i, nb_iter; litl_write_trace_t* trace; char* filename = "trace"; const uint32_t buffer_size = 32 * 1024; // 32KB if ((argc == 3) && (strcmp(argv[1], "-f") == 0)) filename = argv[2]; else filename = "/tmp/test_litl_trace_size.trace"; printf("Recording events with six arguments of type uint8_t\n\n"); trace = litl_write_init_trace(buffer_size); litl_write_set_filename(trace, filename); litl_write_buffer_flush_on(trace); nb_iter = 1000; for (i = 0; i < nb_iter; i++) { litl_t *retval; litl_write_probe_pack_6(trace, 0x100 * (i + 1) + 6, (int32_t ) 1, (int32_t ) 3, (int32_t ) 5, (int32_t ) 7, (int32_t ) 11, (int32_t ) 13, retval); assert(retval != NULL); usleep(100); } litl_write_finalize_trace(trace); printf("Events are recorded and written in the %s file\n", filename); litl_param_t size; FILE* fp = fopen(filename, "r"); fseek(fp, 0L, SEEK_END); size = ftell(fp); fclose(fp); printf("\nThe size of the trace file with %d packed event6 is %ld bytes \n", nb_iter, size); return EXIT_SUCCESS; } eztrace-1.1-7/extlib/litl/tests/PaxHeaders.7332/test_litl_write_multiple_applications.c0000644000000000000000000000013212426414022026263 xustar0030 mtime=1415190546.314452975 30 atime=1507797544.002894639 30 ctime=1508162365.881745624 eztrace-1.1-7/extlib/litl/tests/test_litl_write_multiple_applications.c0000644000175000017500000000633312426414022027457 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ /* * This test simulates recording of events by multiple threads simultaneously. * This test ensures that LiTL can be used by many applications at the same time */ #define _GNU_SOURCE #include #include #include #include #include #include #include "litl_types.h" #include "litl_write.h" #define NBTHREAD 4 /* * Only used during thread creating to make sure that the thread * got the correct args. */ sem_t thread_ready; /* * Records several traces at the same time */ void* write_trace(void* arg) { int i, res __attribute__ ((__unused__)); char* filename; uint8_t my_id = *(uint8_t*) arg; // Notify the main thread that we got the args sem_post(&thread_ready); printf("Recording events on thread #%d\n", my_id); #ifdef LITL_TESTBUFFER_FLUSH res = asprintf(&filename, "/tmp/test_litl_write_%d_flush.trace", my_id); #else res = asprintf(&filename, "/tmp/test_litl_write_%d.trace", my_id); #endif litl_write_trace_t* trace; const uint32_t buffer_size = 512 * 1024; // 512KB trace = litl_write_init_trace(buffer_size); litl_write_set_filename(trace, filename); #ifdef LITL_TESTBUFFER_FLUSH litl_write_buffer_flush_on(trace); #else litl_write_buffer_flush_off(trace); #endif int nb_iter = 1000; litl_data_t val[] = "Well, that's Philosophy I've read, And Law and Medicine, and I fear Theology, too, from A to Z; Hard studies all, that have cost me dear. And so I sit, poor silly man No wiser now than when I began."; for (i = 0; i < nb_iter; i++) { litl_write_probe_reg_0(trace, 0x100 * (i + 1) + 1); usleep(100); litl_write_probe_reg_1(trace, 0x100 * (i + 1) + 2, 1); usleep(100); litl_write_probe_reg_2(trace, 0x100 * (i + 1) + 3, 1, 3); usleep(100); litl_write_probe_reg_3(trace, 0x100 * (i + 1) + 4, 1, 3, 5); usleep(100); litl_write_probe_reg_4(trace, 0x100 * (i + 1) + 5, 1, 3, 5, 7); usleep(100); litl_write_probe_reg_5(trace, 0x100 * (i + 1) + 6, 1, 3, 5, 7, 11); usleep(100); litl_write_probe_reg_6(trace, 0x100 * (i + 1) + 7, 1, 3, 5, 7, 11, 13); usleep(100); litl_write_probe_reg_7(trace, 0x100 * (i + 1) + 8, 1, 3, 5, 7, 11, 13, 17); usleep(100); litl_write_probe_reg_8(trace, 0x100 * (i + 1) + 9, 1, 3, 5, 7, 11, 13, 17, 19); usleep(100); litl_write_probe_reg_9(trace, 0x100 * (i + 1) + 10, 1, 3, 5, 7, 11, 13, 17, 19, 23); usleep(100); litl_write_probe_reg_10(trace, 0x100 * (i + 1) + 11, 1, 3, 5, 7, 11, 13, 17, 19, 23, 29); usleep(100); litl_write_probe_raw(trace, 0x100 * (i + 1) + 12, sizeof(val) - 1, val); usleep(100); } printf("Events for thread #%d are stored in %s\n", my_id, trace->filename); litl_write_finalize_trace(trace); return NULL ; } int main() { int i; pthread_t tid[NBTHREAD]; sem_init(&thread_ready, 0, 0); for (i = 0; i < NBTHREAD; i++) { pthread_create(&tid[i], NULL, write_trace, &i); sem_wait(&thread_ready); } for (i = 0; i < NBTHREAD; i++) pthread_join(tid[i], NULL ); return EXIT_SUCCESS; } eztrace-1.1-7/extlib/litl/tests/PaxHeaders.7332/test_litl_write_multiple_threads.c0000644000000000000000000000013212455547207025245 xustar0030 mtime=1421266567.115954631 30 atime=1507797544.002894639 30 ctime=1508162365.889746322 eztrace-1.1-7/extlib/litl/tests/test_litl_write_multiple_threads.c0000644000175000017500000001063212455547207026436 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ /* * This test is to simulate the situation when some threads start later than * the others while recording events of multi-threaded applications */ #define _GNU_SOURCE #include #include #include #include #include #include "litl_types.h" #include "litl_write.h" #include "litl_read.h" #define NBTHREAD 16 #define NBITER 100 #define NBEVENT (NBITER * 12) static litl_write_trace_t* __trace; int total_recorded_events = 0; /* * Records several traces at the same time */ void* write_trace(void *arg __attribute__ ((__unused__))) { int i; litl_data_t val[] = "Well, that's Philosophy I've read, And Law and Medicine, and I fear Theology, too, from A to Z; Hard studies all, that have cost me dear. And so I sit, poor silly man No wiser now than when I began."; int nb_recorded_events = 0; #define TEST_WRITE_CHECK_RETVAL(cmd) \ do { \ litl_t* retval = cmd; \ if(retval) nb_recorded_events++; \ }while(0) for (i = 0; i < NBITER; i++) { TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_0(__trace, 0x100 * (i + 1) + 1)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_1(__trace, 0x100 * (i + 1) + 2, 1)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_2(__trace, 0x100 * (i + 1) + 3, 1, 3)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_3(__trace, 0x100 * (i + 1) + 4, 1, 3, 5)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_4(__trace, 0x100 * (i + 1) + 5, 1, 3, 5, 7)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_5(__trace, 0x100 * (i + 1) + 6, 1, 3, 5, 7, 11)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_6(__trace, 0x100 * (i + 1) + 7, 1, 3, 5, 7, 11, 13)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_7(__trace, 0x100 * (i + 1) + 8, 1, 3, 5, 7, 11, 13, 17)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_8(__trace, 0x100 * (i + 1) + 9, 1, 3, 5, 7, 11, 13, 17, 19)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_9(__trace, 0x100 * (i + 1) + 10, 1, 3, 5, 7, 11, 13, 17, 19, 23)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_10(__trace, 0x100 * (i + 1) + 11, 1, 3, 5, 7, 11, 13, 17, 19, 23, 29)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_raw(__trace, 0x100 * (i + 1) + 12, sizeof(val), val)); usleep(100); } total_recorded_events += nb_recorded_events; return NULL ; } void read_trace(char* filename) { int nb_events = 0; litl_read_event_t* event; litl_read_trace_t *trace; trace = litl_read_open_trace(filename); litl_read_init_processes(trace); while (1) { event = litl_read_next_event(trace); if (event == NULL ) break; nb_events++; } litl_read_finalize_trace(trace); if (nb_events != total_recorded_events) { fprintf( stderr, "Some events were NOT recorded!\n Expected nb_events = %d \t Recorded nb_events = %d\n", total_recorded_events, nb_events); exit(EXIT_FAILURE); } } int main() { int i, res __attribute__ ((__unused__)); char* filename; pthread_t tid[NBTHREAD]; const uint32_t buffer_size = 1024; // 1KB printf("Recording events by %d threads\n\n", NBTHREAD); #ifdef LITL_TESTBUFFER_FLUSH res = asprintf(&filename, "/tmp/test_litl_write_multiple_threads_flush.trace"); #else res = asprintf(&filename, "/tmp/test_litl_write_multiple_threads.trace"); #endif __trace = litl_write_init_trace(buffer_size); litl_write_set_filename(__trace, filename); #ifdef LITL_TESTBUFFER_FLUSH litl_write_buffer_flush_on(__trace); #else litl_write_buffer_flush_off(__trace); #endif for (i = 0; i < NBTHREAD; i++) { pthread_create(&tid[i], NULL, write_trace, &i); if ((i + 1) % 4 == 0) { sleep(1); } } for (i = 0; i < NBTHREAD; i++) pthread_join(tid[i], NULL ); printf("All events are stored in %s\n\n", __trace->filename); litl_write_finalize_trace(__trace); printf("Checking the recording of events\n\n"); read_trace(filename); printf("Yes, the events were recorded successfully\n"); return EXIT_SUCCESS; } eztrace-1.1-7/extlib/litl/tests/PaxHeaders.7332/test_litl_write.c0000644000000000000000000000013212455547207021620 xustar0030 mtime=1421266567.115954631 30 atime=1507797544.002894639 30 ctime=1508162365.869744577 eztrace-1.1-7/extlib/litl/tests/test_litl_write.c0000644000175000017500000000502612455547207023012 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ /* * This test validates the event recording mechanism */ #define _GNU_SOURCE #include #include #include #include #include "litl_types.h" #include "litl_write.h" int main(int argc, char **argv) { int i, nb_iter; litl_write_trace_t* trace; char* filename = "trace"; const uint32_t buffer_size = 32 * 1024; // 32KB if ((argc == 3) && (strcmp(argv[1], "-f") == 0)) filename = argv[2]; else #ifdef LITL_TESTBUFFER_FLUSH filename = "/tmp/test_litl_write_flush.trace"; #else filename = "/tmp/test_litl_write.trace"; #endif printf("Recording events with various number of arguments\n\n"); trace = litl_write_init_trace(buffer_size); litl_write_set_filename(trace, filename); #ifdef LITL_TESTBUFFER_FLUSH litl_write_buffer_flush_on(trace); #else litl_write_buffer_flush_off(trace); #endif nb_iter = 1000; litl_data_t val[] = "Well, that's Philosophy I've read, And Law and Medicine, and I fear Theology, too, from A to Z; Hard studies all, that have cost me dear. And so I sit, poor silly man No wiser now than when I began."; for (i = 0; i < (nb_iter + 1) / 12; i++) { litl_write_probe_reg_0(trace, 0x100 * (i + 1) + 1); usleep(100); litl_write_probe_reg_1(trace, 0x100 * (i + 1) + 2, 1); usleep(100); litl_write_probe_reg_2(trace, 0x100 * (i + 1) + 3, 1, 3); usleep(100); litl_write_probe_reg_3(trace, 0x100 * (i + 1) + 4, 1, 3, 5); usleep(100); litl_write_probe_reg_4(trace, 0x100 * (i + 1) + 5, 1, 3, 5, 7); usleep(100); litl_write_probe_reg_5(trace, 0x100 * (i + 1) + 6, 1, 3, 5, 7, 11); usleep(100); litl_write_probe_reg_6(trace, 0x100 * (i + 1) + 7, 1, 3, 5, 7, 11, 13); usleep(100); litl_write_probe_reg_7(trace, 0x100 * (i + 1) + 8, 1, 3, 5, 7, 11, 13, 17); usleep(100); litl_write_probe_reg_8(trace, 0x100 * (i + 1) + 9, 1, 3, 5, 7, 11, 13, 17, 19); usleep(100); litl_write_probe_reg_9(trace, 0x100 * (i + 1) + 10, 1, 3, 5, 7, 11, 13, 17, 19, 23); usleep(100); litl_write_probe_reg_10(trace, 0x100 * (i + 1) + 11, 1, 3, 5, 7, 11, 13, 17, 19, 23, 29); usleep(100); litl_write_probe_raw(trace, 0x100 * (i + 1) + 12, sizeof(val), val); usleep(100); } litl_write_finalize_trace(trace); printf("Events are recorded and written in the %s file\n", filename); return EXIT_SUCCESS; } eztrace-1.1-7/extlib/litl/tests/PaxHeaders.7332/test_litl_read.c0000644000000000000000000000013212426414022021363 xustar0030 mtime=1415190546.314452975 30 atime=1507797544.002894639 30 ctime=1508162365.865744229 eztrace-1.1-7/extlib/litl/tests/test_litl_read.c0000644000175000017500000000600412426414022022552 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ /* * This test validates the event reading mechanism */ #define _GNU_SOURCE #include #include #include #include "litl_types.h" #include "litl_tools.h" #include "litl_read.h" int main(int argc, const char **argv) { litl_data_t i; const char* filename = "trace"; litl_read_event_t* event; litl_read_trace_t *trace; litl_general_header_t* trace_header; litl_process_header_t* process_header; if ((argc == 3) && (strcmp(argv[1], "-f") == 0)) filename = argv[2]; else #ifdef LITL_TESTBUFFER_FLUSH filename = "/tmp/test_litl_write_flush.trace"; #else filename = "/tmp/test_litl_write.trace"; #endif trace = litl_read_open_trace(filename); litl_read_init_processes(trace); trace_header = litl_read_get_trace_header(trace); process_header = litl_read_get_process_header(trace->processes[0]); // print the header printf(" LiTL v.%s\n", trace_header->litl_ver); printf(" %s\n", trace_header->sysinfo); printf(" nb_processes \t %d\n", trace_header->nb_processes); if (trace_header->nb_processes == 1) printf(" nb_threads \t %u\n", process_header->nb_threads); printf( " buffer_size \t %u\n", process_header->buffer_size - __litl_get_reg_event_size(LITL_MAX_PARAMS) - __litl_get_reg_event_size(0)); printf( "Thread ID\t Event Type & Code \t Time\t NB args\t Arguments[0-9]\n"); while (1) { event = litl_read_next_event(trace); if (event == NULL ) break; switch (LITL_READ_GET_TYPE(event)) { case LITL_TYPE_REGULAR: { // regular event printf("%"PRTIu64" \t Reg %"PRTIx32" \t %"PRTIu64" \t %"PRTIu32, LITL_READ_GET_TID(event), LITL_READ_GET_CODE(event), LITL_READ_GET_TIME(event), LITL_READ_REGULAR(event)->nb_params); for (i = 0; i < LITL_READ_REGULAR(event)->nb_params; i++) printf("\t %"PRTIx64, LITL_READ_REGULAR(event)->param[i]); break; } case LITL_TYPE_RAW: { // raw event printf("%"PRTIu64" \t Raw %"PRTIx32" \t %"PRTIu64" \t %"PRTIu32, LITL_READ_GET_TID(event), LITL_READ_GET_CODE(event), LITL_READ_GET_TIME(event), LITL_READ_RAW(event)->size); printf("\t %s", (litl_data_t *) LITL_READ_RAW(event)->data); break; } case LITL_TYPE_PACKED: { // packed event printf("%"PRTIu64" \t Packed %"PRTIx32" \t %"PRTIu64" \t %"PRTIu32, LITL_READ_GET_TID(event), LITL_READ_GET_CODE(event), LITL_READ_GET_TIME(event), LITL_READ_PACKED(event)->size); for (i = 0; i < LITL_READ_PACKED(event)->size; i++) { printf(" %x", LITL_READ_PACKED(event)->param[i]); } break; } case LITL_TYPE_OFFSET: { // offset event continue; } default: { fprintf(stderr, "Unknown event type %d\n", LITL_READ_GET_TYPE(event)); *(int*) 0 = 0; } } printf("\n"); } litl_read_finalize_trace(trace); return EXIT_SUCCESS; } eztrace-1.1-7/extlib/litl/tests/PaxHeaders.7332/test_litl_write_concurent.c0000644000000000000000000000013213012560437023666 xustar0030 mtime=1479205151.272727014 30 atime=1507797544.002894639 30 ctime=1508162365.873744926 eztrace-1.1-7/extlib/litl/tests/test_litl_write_concurent.c0000644000175000017500000001113213012560437025053 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ /* * This test simulates recording of events of multi-threaded applications. * The test ensures that LiTL solves the race conditions by recording events * into separate buffers: one per thread. * All the buffers are written to the same trace file */ #define _GNU_SOURCE #include #include #include #include #include #include "litl_types.h" #include "litl_write.h" #include "litl_read.h" #define NBTHREAD 16 #define NBITER 100 #define NBEVENT (NBITER * 12) litl_write_trace_t* __trace; int total_recorded_events = 0; pthread_mutex_t mutex; /* * This test records several traces at the same time */ void* write_trace(void *arg __attribute__ ((__unused__))) { int i; litl_data_t val[] = "Well, that's Philosophy I've read, And Law and Medicine, and I fear Theology, too, from A to Z; Hard studies all, that have cost me dear. And so I sit, poor silly man No wiser now than when I began."; int nb_recorded_events = 0; #define TEST_WRITE_CHECK_RETVAL(cmd) \ do { \ litl_t* retval = cmd; \ if(retval) { \ nb_recorded_events++; \ } \ }while(0) for (i = 0; i < NBITER; i++) { TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_0(__trace, 0x100 * (i + 1) + 1)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_1(__trace, 0x100 * (i + 1) + 2, 1)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_2(__trace, 0x100 * (i + 1) + 3, 1, 3)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_3(__trace, 0x100 * (i + 1) + 4, 1, 3, 5)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_4(__trace, 0x100 * (i + 1) + 5, 1, 3, 5, 7)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_5(__trace, 0x100 * (i + 1) + 6, 1, 3, 5, 7, 11)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_6(__trace, 0x100 * (i + 1) + 7, 1, 3, 5, 7, 11, 13)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_7(__trace, 0x100 * (i + 1) + 8, 1, 3, 5, 7, 11, 13, 17)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_8(__trace, 0x100 * (i + 1) + 9, 1, 3, 5, 7, 11, 13, 17, 19)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_9(__trace, 0x100 * (i + 1) + 10, 1, 3, 5, 7, 11, 13, 17, 19, 23)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_reg_10(__trace, 0x100 * (i + 1) + 11, 1, 3, 5, 7, 11, 13, 17, 19, 23, 29)); usleep(100); TEST_WRITE_CHECK_RETVAL(litl_write_probe_raw(__trace, 0x100 * (i + 1) + 12, sizeof(val), val)); usleep(100); } pthread_mutex_lock(&mutex); total_recorded_events += nb_recorded_events; pthread_mutex_unlock(&mutex); return NULL ; } void read_trace(char* filename) { int nb_events = 0; litl_read_event_t* event; litl_read_trace_t *trace; trace = litl_read_open_trace(filename); litl_read_init_processes(trace); while (1) { event = litl_read_next_event(trace); if (event == NULL ) break; nb_events++; } litl_read_finalize_trace(trace); if (nb_events != total_recorded_events) { fprintf( stderr, "Some events were NOT recorded!\n Expected nb_events = %d \t Recorded nb_events = %d\n", total_recorded_events, nb_events); exit(EXIT_FAILURE); } } int main() { int i, res __attribute__ ((__unused__)); char* filename; pthread_t tid[NBTHREAD]; const uint32_t buffer_size = 1024; // 1KB pthread_mutex_init(&mutex, NULL); printf("Recording events by %d threads\n\n", NBTHREAD); #ifdef LITL_TESTBUFFER_FLUSH res = asprintf(&filename, "/tmp/test_litl_write_concurent_flush.trace"); #else res = asprintf(&filename, "/tmp/test_litl_write_concurent.trace"); #endif __trace = litl_write_init_trace(buffer_size); litl_write_set_filename(__trace, filename); #ifdef LITL_TESTBUFFER_FLUSH litl_write_buffer_flush_on(__trace); #else litl_write_buffer_flush_off(__trace); #endif for (i = 0; i < NBTHREAD; i++) { pthread_create(&tid[i], NULL, write_trace, &i); } for (i = 0; i < NBTHREAD; i++) pthread_join(tid[i], NULL ); printf("All events are stored in %s\n\n", __trace->filename); litl_write_finalize_trace(__trace); printf("Checking the recording of events\n\n"); read_trace(filename); printf("Yes, the events were recorded successfully\n"); return EXIT_SUCCESS; } eztrace-1.1-7/extlib/litl/tests/PaxHeaders.7332/test_litl_buffer_size.c0000644000000000000000000000013212426414022022753 xustar0030 mtime=1415190546.314452975 30 atime=1507797544.002894639 30 ctime=1508162365.849742833 eztrace-1.1-7/extlib/litl/tests/test_litl_buffer_size.c0000644000175000017500000000521512426414022024145 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ /* * This test verifies the optimal buffer size for a single-threaded applications */ #define _GNU_SOURCE #include #include #include #include #include #include "litl_types.h" #include "litl_timer.h" #include "litl_write.h" #include "litl_read.h" #define MAX_BUFFER_SIZE 16 * 1024 * 1024 #define NB_EVENTS 1000000 int main(int argc, char **argv) { int i; char* filename = "trace.trace"; uint32_t buf_size; litl_time_t start, fin; litl_write_trace_t* trace; if ((argc == 3) && (strcmp(argv[1], "-f") == 0)) filename = argv[2]; else filename = "/tmp/test_litl_buffer_size.trace"; printf("What is the optimal buffer size for recording events?\n"); printf("Buffer size[KB] \t Time \n"); litl_data_t val[] = "Well, that's Philosophy I've read, And Law and Medicine, and I fear Theology, too, from A to Z; Hard studies all, that have cost me dear. And so I sit, poor silly man No wiser now than when I began."; buf_size = 1024; // 1KB while (buf_size <= MAX_BUFFER_SIZE) { trace = litl_write_init_trace(buf_size); litl_write_set_filename(trace, filename); start = litl_get_time(); for (i = 0; i < (NB_EVENTS + 1) / 12; i++) { litl_write_probe_reg_0(trace, 0x100 * (i + 1) + 1); litl_write_probe_reg_1(trace, 0x100 * (i + 1) + 2, 1); litl_write_probe_reg_2(trace, 0x100 * (i + 1) + 3, 1, 3); litl_write_probe_reg_3(trace, 0x100 * (i + 1) + 4, 1, 3, 5); litl_write_probe_reg_4(trace, 0x100 * (i + 1) + 5, 1, 3, 5, 7); litl_write_probe_reg_5(trace, 0x100 * (i + 1) + 6, 1, 3, 5, 7, 11); litl_write_probe_reg_6(trace, 0x100 * (i + 1) + 7, 1, 3, 5, 7, 11, 13); litl_write_probe_reg_7(trace, 0x100 * (i + 1) + 8, 1, 3, 5, 7, 11, 13, 17); litl_write_probe_reg_8(trace, 0x100 * (i + 1) + 9, 1, 3, 5, 7, 11, 13, 17, 19); litl_write_probe_reg_9(trace, 0x100 * (i + 1) + 10, 1, 3, 5, 7, 11, 13, 17, 19, 23); litl_write_probe_reg_10(trace, 0x100 * (i + 1) + 11, 1, 3, 5, 7, 11, 13, 17, 19, 23, 29); litl_write_probe_raw(trace, 0x100 * (i + 1) + 12, sizeof(val) - 1, val); } fin = litl_get_time(); litl_write_finalize_trace(trace); printf("\t%"PRTIu32"\t\t %"PRTIu64"\n", buf_size / 1024, fin - start); buf_size = 2 * buf_size; } printf( "NB: time was measured only once on writing %d events to the %s file.\n\n", NB_EVENTS, filename); return EXIT_SUCCESS; } eztrace-1.1-7/extlib/litl/tests/PaxHeaders.7332/test_litl_pause.c0000644000000000000000000000013112426414022021564 xustar0030 mtime=1415190546.314452975 30 atime=1507797544.002894639 29 ctime=1508162365.86174388 eztrace-1.1-7/extlib/litl/tests/test_litl_pause.c0000644000175000017500000001000312426414022022746 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ /* * This test simulates the situation when the event recoding is paused. */ #define _GNU_SOURCE #include #include #include #include #include "litl_types.h" #include "litl_tools.h" #include "litl_write.h" #include "litl_read.h" void write_trace(char* filename, int nb_iter, int skipped_iter) { int i; litl_write_trace_t* trace; const uint32_t buffer_size = 512 * 1024; // 512KB trace = litl_write_init_trace(buffer_size); litl_write_set_filename(trace, filename); #ifdef LITL_TESTBUFFER_FLUSH litl_write_buffer_flush_on(trace); #else litl_write_buffer_flush_off(trace); #endif litl_data_t val[] = "Well, that's Philosophy I've read, And Law and Medicine, and I fear Theology, too, from A to Z; Hard studies all, that have cost me dear. And so I sit, poor silly man No wiser now than when I began."; for (i = 0; i < nb_iter; i++) { if (i == skipped_iter - 1) { printf("Loop %d: stop recording\n", i); litl_write_pause_recording(trace); } litl_write_probe_reg_0(trace, 0x100 * (i + 1) + 1); usleep(100); litl_write_probe_reg_1(trace, 0x100 * (i + 1) + 2, 1); usleep(100); litl_write_probe_reg_2(trace, 0x100 * (i + 1) + 3, 1, 3); usleep(100); litl_write_probe_reg_3(trace, 0x100 * (i + 1) + 4, 1, 3, 5); usleep(100); litl_write_probe_reg_4(trace, 0x100 * (i + 1) + 5, 1, 3, 5, 7); usleep(100); litl_write_probe_reg_5(trace, 0x100 * (i + 1) + 6, 1, 3, 5, 7, 11); usleep(100); litl_write_probe_reg_6(trace, 0x100 * (i + 1) + 7, 1, 3, 5, 7, 11, 13); usleep(100); litl_write_probe_reg_7(trace, 0x100 * (i + 1) + 8, 1, 3, 5, 7, 11, 13, 17); usleep(100); litl_write_probe_reg_8(trace, 0x100 * (i + 1) + 9, 1, 3, 5, 7, 11, 13, 17, 19); usleep(100); litl_write_probe_reg_9(trace, 0x100 * (i + 1) + 10, 1, 3, 5, 7, 11, 13, 17, 19, 23); usleep(100); litl_write_probe_reg_10(trace, 0x100 * (i + 1) + 11, 1, 3, 5, 7, 11, 13, 17, 19, 23, 29); usleep(100); litl_write_probe_raw(trace, 0x100 * (i + 1) + 12, sizeof(val) - 1, val); usleep(100); if (i == skipped_iter - 1) { printf("Loop %d: resume recording\n", i); litl_write_resume_recording(trace); } } printf("\nEvents with code between %x and %x were not recorded\n", 0x100 * skipped_iter + 1, 0x100 * skipped_iter + 12); litl_write_finalize_trace(trace); } void read_trace(char* filename, uint32_t left_bound, uint32_t right_bound) { int nbevents = 0; litl_read_event_t* event; litl_read_trace_t *trace; trace = litl_read_open_trace(filename); litl_read_init_processes(trace); while (1) { event = litl_read_next_event(trace); if (event == NULL ) break; // check whether some events were skipped if ((left_bound < LITL_READ_GET_CODE(event))&& (LITL_READ_GET_CODE(event) < right_bound)){ nbevents++; break; } } // litl_read_finalize_trace(trace); if (nbevents > 0) { fprintf(stderr, "Some events were recorded when they supposed to be skipped"); exit(EXIT_FAILURE); } } int main(int argc, char **argv) { int nb_iter; int skipped_iter; char* filename = "trace"; nb_iter = 10; skipped_iter = nb_iter / 2; if ((argc == 3) && (strcmp(argv[1], "-f") == 0)) filename = argv[2]; else #ifdef LITL_TESTBUFFER_FLUSH filename = "/tmp/test_litl_pause_flush.trace"; #else filename = "/tmp/test_litl_pause.trace"; #endif printf("Recording events with various number of arguments\n\n"); write_trace(filename, nb_iter, skipped_iter); printf("Events are recorded and written in the %s file\n", filename); printf("\nChecking whether the recording of events was paused\n"); read_trace(filename, 0x100 * skipped_iter + 1, 0x100 * skipped_iter + 12); printf("Yes, the recording of events was paused\n"); return EXIT_SUCCESS; } eztrace-1.1-7/extlib/litl/tests/PaxHeaders.7332/Makefile.am0000644000000000000000000000013213053046544020264 xustar0030 mtime=1487687012.738056776 30 atime=1508162189.163650874 30 ctime=1508162365.841742134 eztrace-1.1-7/extlib/litl/tests/Makefile.am0000644000175000017500000000613413053046544021457 0ustar00trahaytrahay00000000000000# Copyright © Télécom SudParis. # See COPYING in top-level directory. AM_CFLAGS = -W -Wall -Wextra -I$(top_srcdir)/src -I$(top_builddir)/src -L$(top_srcdir)/src AM_LDFLAGS = $(top_builddir)/src/liblitl.la AM_LDADD = $(top_builddir)/src/liblitl.la #LITLDEPENDENCIES = $(AM_LDFLAGS) CTESTS = test_litl_write \ test_litl_read \ test_litl_write_concurent \ test_litl_write_multiple_threads \ test_litl_write_multiple_applications \ test_litl_pause \ test_litl_write_flush \ test_litl_read_flush \ test_litl_write_concurent_flush \ test_litl_write_multiple_threads_flush \ test_litl_write_multiple_applications_flush \ test_litl_pause_flush \ test_litl_buffer \ test_litl_trace_size \ test_litl_mapping_to_fxt check_PROGRAMS = $(CTESTS) TESTS = $(CTESTS) test_litl_write_SOURCES = test_litl_write.c test_litl_write_concurent_SOURCES = test_litl_write_concurent.c test_litl_write_concurent_LDFLAGS = -lpthread $(AM_LDFLAGS) test_litl_write_multiple_threads_SOURCES = test_litl_write_multiple_threads.c test_litl_write_multiple_threads_LDFLAGS = -lpthread $(AM_LDFLAGS) test_litl_write_multiple_applications_SOURCES = test_litl_write_multiple_applications.c test_litl_write_multiple_applications_LDFLAGS = -lpthread $(AM_LDFLAGS) test_litl_read_SOURCES = test_litl_read.c test_litl_pause_SOURCES = test_litl_pause.c test_litl_buffer_SOURCES = test_litl_buffer_size.c test_litl_trace_size_SOURCES = test_litl_trace_size.c test_litl_mapping_to_fxt_SOURCES = test_litl_mapping_to_fxt.c test_litl_mapping_to_fxt_LDFLAGS = -lpthread $(AM_LDFLAGS) test_litl_write_flush_SOURCES = $(test_litl_write_SOURCES) test_litl_read_flush_SOURCES = $(test_litl_read_SOURCES) test_litl_write_concurent_flush_SOURCES = $(test_litl_write_concurent_SOURCES) test_litl_write_multiple_threads_flush_SOURCES = $(test_litl_write_multiple_threads_SOURCES) test_litl_write_multiple_applications_flush_SOURCES = $(test_litl_write_multiple_applications_SOURCES) test_litl_pause_flush_SOURCES = $(test_litl_pause_SOURCES) test_litl_write_flush_CFLAGS = -DLITL_TESTBUFFER_FLUSH=1 $(AM_CFLAGS) test_litl_read_flush_CLFAGS = -DLITL_TESTBUFFER_FLUSH=1 $(AM_CFLAGS test_litl_write_concurent_flush_CFLAGS = -DLITL_TESTBUFFER_FLUSH=1 $(AM_CFLAGS) test_litl_write_multiple_threads_flush_CFLAGS = -DLITL_TESTBUFFER_FLUSH=1 $(AM_CFLAGS) test_litl_write_multiple_applications_flush_CFLAGS = -DLITL_TESTBUFFER_FLUSH=1 $(AM_CFLAGS) test_litl_pause_flush_CFLAGS = -DLITL_TESTBUFFER_FLUSH=1 $(AM_CFLAGS) test_litl_write_multiple_threads_flush_LDFLAGS = $(test_litl_write_multiple_threads_LDFLAGS) test_litl_write_multiple_applications_flush_LDFLAGS = $(test_litl_write_multiple_applications_LDFLAGS) test_litl_write_concurent_flush_LDFLAGS = $(test_litl_write_concurent_LDFLAGS) clean-local: rm -rf Makefile.in Makefile.bk rm -rf test_litl_write test_litl_write_concurent \ test_litl_write_multiple_threads test_litl_read test_litl_pause \ test_litl_write_multiple_applications test_litl_buffer \ test_litl_trace_size test_litl_mapping_to_fxt eztrace-1.1-7/extlib/litl/tests/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135250020267 xustar0030 mtime=1508162216.769598159 30 atime=1508162273.613972876 30 ctime=1508162365.845742484 eztrace-1.1-7/extlib/litl/tests/Makefile.in0000644000175000017500000020142613171135250021463 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright © Télécom SudParis. # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ check_PROGRAMS = $(am__EXEEXT_1) TESTS = $(am__EXEEXT_1) subdir = tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__EXEEXT_1 = test_litl_write$(EXEEXT) test_litl_read$(EXEEXT) \ test_litl_write_concurent$(EXEEXT) \ test_litl_write_multiple_threads$(EXEEXT) \ test_litl_write_multiple_applications$(EXEEXT) \ test_litl_pause$(EXEEXT) test_litl_write_flush$(EXEEXT) \ test_litl_read_flush$(EXEEXT) \ test_litl_write_concurent_flush$(EXEEXT) \ test_litl_write_multiple_threads_flush$(EXEEXT) \ test_litl_write_multiple_applications_flush$(EXEEXT) \ test_litl_pause_flush$(EXEEXT) test_litl_buffer$(EXEEXT) \ test_litl_trace_size$(EXEEXT) \ test_litl_mapping_to_fxt$(EXEEXT) am_test_litl_buffer_OBJECTS = test_litl_buffer_size.$(OBJEXT) test_litl_buffer_OBJECTS = $(am_test_litl_buffer_OBJECTS) test_litl_buffer_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = am_test_litl_mapping_to_fxt_OBJECTS = \ test_litl_mapping_to_fxt.$(OBJEXT) test_litl_mapping_to_fxt_OBJECTS = \ $(am_test_litl_mapping_to_fxt_OBJECTS) test_litl_mapping_to_fxt_LDADD = $(LDADD) test_litl_mapping_to_fxt_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(test_litl_mapping_to_fxt_LDFLAGS) \ $(LDFLAGS) -o $@ am_test_litl_pause_OBJECTS = test_litl_pause.$(OBJEXT) test_litl_pause_OBJECTS = $(am_test_litl_pause_OBJECTS) test_litl_pause_LDADD = $(LDADD) am__objects_1 = test_litl_pause_flush-test_litl_pause.$(OBJEXT) am_test_litl_pause_flush_OBJECTS = $(am__objects_1) test_litl_pause_flush_OBJECTS = $(am_test_litl_pause_flush_OBJECTS) test_litl_pause_flush_LDADD = $(LDADD) test_litl_pause_flush_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(test_litl_pause_flush_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ am_test_litl_read_OBJECTS = test_litl_read.$(OBJEXT) test_litl_read_OBJECTS = $(am_test_litl_read_OBJECTS) test_litl_read_LDADD = $(LDADD) am__objects_2 = test_litl_read.$(OBJEXT) am_test_litl_read_flush_OBJECTS = $(am__objects_2) test_litl_read_flush_OBJECTS = $(am_test_litl_read_flush_OBJECTS) test_litl_read_flush_LDADD = $(LDADD) am_test_litl_trace_size_OBJECTS = test_litl_trace_size.$(OBJEXT) test_litl_trace_size_OBJECTS = $(am_test_litl_trace_size_OBJECTS) test_litl_trace_size_LDADD = $(LDADD) am_test_litl_write_OBJECTS = test_litl_write.$(OBJEXT) test_litl_write_OBJECTS = $(am_test_litl_write_OBJECTS) test_litl_write_LDADD = $(LDADD) am_test_litl_write_concurent_OBJECTS = \ test_litl_write_concurent.$(OBJEXT) test_litl_write_concurent_OBJECTS = \ $(am_test_litl_write_concurent_OBJECTS) test_litl_write_concurent_LDADD = $(LDADD) test_litl_write_concurent_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(test_litl_write_concurent_LDFLAGS) \ $(LDFLAGS) -o $@ am__objects_3 = test_litl_write_concurent_flush-test_litl_write_concurent.$(OBJEXT) am_test_litl_write_concurent_flush_OBJECTS = $(am__objects_3) test_litl_write_concurent_flush_OBJECTS = \ $(am_test_litl_write_concurent_flush_OBJECTS) test_litl_write_concurent_flush_LDADD = $(LDADD) test_litl_write_concurent_flush_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(test_litl_write_concurent_flush_CFLAGS) $(CFLAGS) \ $(test_litl_write_concurent_flush_LDFLAGS) $(LDFLAGS) -o $@ am__objects_4 = test_litl_write_flush-test_litl_write.$(OBJEXT) am_test_litl_write_flush_OBJECTS = $(am__objects_4) test_litl_write_flush_OBJECTS = $(am_test_litl_write_flush_OBJECTS) test_litl_write_flush_LDADD = $(LDADD) test_litl_write_flush_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(test_litl_write_flush_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ am_test_litl_write_multiple_applications_OBJECTS = \ test_litl_write_multiple_applications.$(OBJEXT) test_litl_write_multiple_applications_OBJECTS = \ $(am_test_litl_write_multiple_applications_OBJECTS) test_litl_write_multiple_applications_LDADD = $(LDADD) test_litl_write_multiple_applications_LINK = $(LIBTOOL) $(AM_V_lt) \ --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(test_litl_write_multiple_applications_LDFLAGS) $(LDFLAGS) -o \ $@ am__objects_5 = test_litl_write_multiple_applications_flush-test_litl_write_multiple_applications.$(OBJEXT) am_test_litl_write_multiple_applications_flush_OBJECTS = \ $(am__objects_5) test_litl_write_multiple_applications_flush_OBJECTS = \ $(am_test_litl_write_multiple_applications_flush_OBJECTS) test_litl_write_multiple_applications_flush_LDADD = $(LDADD) test_litl_write_multiple_applications_flush_LINK = $(LIBTOOL) \ $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) \ $(test_litl_write_multiple_applications_flush_CFLAGS) \ $(CFLAGS) \ $(test_litl_write_multiple_applications_flush_LDFLAGS) \ $(LDFLAGS) -o $@ am_test_litl_write_multiple_threads_OBJECTS = \ test_litl_write_multiple_threads.$(OBJEXT) test_litl_write_multiple_threads_OBJECTS = \ $(am_test_litl_write_multiple_threads_OBJECTS) test_litl_write_multiple_threads_LDADD = $(LDADD) test_litl_write_multiple_threads_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) \ $(test_litl_write_multiple_threads_LDFLAGS) $(LDFLAGS) -o $@ am__objects_6 = test_litl_write_multiple_threads_flush-test_litl_write_multiple_threads.$(OBJEXT) am_test_litl_write_multiple_threads_flush_OBJECTS = $(am__objects_6) test_litl_write_multiple_threads_flush_OBJECTS = \ $(am_test_litl_write_multiple_threads_flush_OBJECTS) test_litl_write_multiple_threads_flush_LDADD = $(LDADD) test_litl_write_multiple_threads_flush_LINK = $(LIBTOOL) $(AM_V_lt) \ --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(test_litl_write_multiple_threads_flush_CFLAGS) \ $(CFLAGS) $(test_litl_write_multiple_threads_flush_LDFLAGS) \ $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(test_litl_buffer_SOURCES) \ $(test_litl_mapping_to_fxt_SOURCES) $(test_litl_pause_SOURCES) \ $(test_litl_pause_flush_SOURCES) $(test_litl_read_SOURCES) \ $(test_litl_read_flush_SOURCES) \ $(test_litl_trace_size_SOURCES) $(test_litl_write_SOURCES) \ $(test_litl_write_concurent_SOURCES) \ $(test_litl_write_concurent_flush_SOURCES) \ $(test_litl_write_flush_SOURCES) \ $(test_litl_write_multiple_applications_SOURCES) \ $(test_litl_write_multiple_applications_flush_SOURCES) \ $(test_litl_write_multiple_threads_SOURCES) \ $(test_litl_write_multiple_threads_flush_SOURCES) DIST_SOURCES = $(test_litl_buffer_SOURCES) \ $(test_litl_mapping_to_fxt_SOURCES) $(test_litl_pause_SOURCES) \ $(test_litl_pause_flush_SOURCES) $(test_litl_read_SOURCES) \ $(test_litl_read_flush_SOURCES) \ $(test_litl_trace_size_SOURCES) $(test_litl_write_SOURCES) \ $(test_litl_write_concurent_SOURCES) \ $(test_litl_write_concurent_flush_SOURCES) \ $(test_litl_write_flush_SOURCES) \ $(test_litl_write_multiple_applications_SOURCES) \ $(test_litl_write_multiple_applications_flush_SOURCES) \ $(test_litl_write_multiple_threads_SOURCES) \ $(test_litl_write_multiple_threads_flush_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) AM_RECURSIVE_TARGETS = check recheck TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ $(top_srcdir)/test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLOCK_GETTIME_AVAIL = @CLOCK_GETTIME_AVAIL@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOXYGEN = @DOXYGEN@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FORCE_32BIT = @FORCE_32BIT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIZEOF_SIZE_T = @SIZEOF_SIZE_T@ STRIP = @STRIP@ USE_GETTID = @USE_GETTID@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CFLAGS = -W -Wall -Wextra -I$(top_srcdir)/src -I$(top_builddir)/src -L$(top_srcdir)/src AM_LDFLAGS = $(top_builddir)/src/liblitl.la AM_LDADD = $(top_builddir)/src/liblitl.la #LITLDEPENDENCIES = $(AM_LDFLAGS) CTESTS = test_litl_write \ test_litl_read \ test_litl_write_concurent \ test_litl_write_multiple_threads \ test_litl_write_multiple_applications \ test_litl_pause \ test_litl_write_flush \ test_litl_read_flush \ test_litl_write_concurent_flush \ test_litl_write_multiple_threads_flush \ test_litl_write_multiple_applications_flush \ test_litl_pause_flush \ test_litl_buffer \ test_litl_trace_size \ test_litl_mapping_to_fxt test_litl_write_SOURCES = test_litl_write.c test_litl_write_concurent_SOURCES = test_litl_write_concurent.c test_litl_write_concurent_LDFLAGS = -lpthread $(AM_LDFLAGS) test_litl_write_multiple_threads_SOURCES = test_litl_write_multiple_threads.c test_litl_write_multiple_threads_LDFLAGS = -lpthread $(AM_LDFLAGS) test_litl_write_multiple_applications_SOURCES = test_litl_write_multiple_applications.c test_litl_write_multiple_applications_LDFLAGS = -lpthread $(AM_LDFLAGS) test_litl_read_SOURCES = test_litl_read.c test_litl_pause_SOURCES = test_litl_pause.c test_litl_buffer_SOURCES = test_litl_buffer_size.c test_litl_trace_size_SOURCES = test_litl_trace_size.c test_litl_mapping_to_fxt_SOURCES = test_litl_mapping_to_fxt.c test_litl_mapping_to_fxt_LDFLAGS = -lpthread $(AM_LDFLAGS) test_litl_write_flush_SOURCES = $(test_litl_write_SOURCES) test_litl_read_flush_SOURCES = $(test_litl_read_SOURCES) test_litl_write_concurent_flush_SOURCES = $(test_litl_write_concurent_SOURCES) test_litl_write_multiple_threads_flush_SOURCES = $(test_litl_write_multiple_threads_SOURCES) test_litl_write_multiple_applications_flush_SOURCES = $(test_litl_write_multiple_applications_SOURCES) test_litl_pause_flush_SOURCES = $(test_litl_pause_SOURCES) test_litl_write_flush_CFLAGS = -DLITL_TESTBUFFER_FLUSH=1 $(AM_CFLAGS) test_litl_read_flush_CLFAGS = -DLITL_TESTBUFFER_FLUSH=1 $(AM_CFLAGS test_litl_write_concurent_flush_CFLAGS = -DLITL_TESTBUFFER_FLUSH=1 $(AM_CFLAGS) test_litl_write_multiple_threads_flush_CFLAGS = -DLITL_TESTBUFFER_FLUSH=1 $(AM_CFLAGS) test_litl_write_multiple_applications_flush_CFLAGS = -DLITL_TESTBUFFER_FLUSH=1 $(AM_CFLAGS) test_litl_pause_flush_CFLAGS = -DLITL_TESTBUFFER_FLUSH=1 $(AM_CFLAGS) test_litl_write_multiple_threads_flush_LDFLAGS = $(test_litl_write_multiple_threads_LDFLAGS) test_litl_write_multiple_applications_flush_LDFLAGS = $(test_litl_write_multiple_applications_LDFLAGS) test_litl_write_concurent_flush_LDFLAGS = $(test_litl_write_concurent_LDFLAGS) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list test_litl_buffer$(EXEEXT): $(test_litl_buffer_OBJECTS) $(test_litl_buffer_DEPENDENCIES) $(EXTRA_test_litl_buffer_DEPENDENCIES) @rm -f test_litl_buffer$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_litl_buffer_OBJECTS) $(test_litl_buffer_LDADD) $(LIBS) test_litl_mapping_to_fxt$(EXEEXT): $(test_litl_mapping_to_fxt_OBJECTS) $(test_litl_mapping_to_fxt_DEPENDENCIES) $(EXTRA_test_litl_mapping_to_fxt_DEPENDENCIES) @rm -f test_litl_mapping_to_fxt$(EXEEXT) $(AM_V_CCLD)$(test_litl_mapping_to_fxt_LINK) $(test_litl_mapping_to_fxt_OBJECTS) $(test_litl_mapping_to_fxt_LDADD) $(LIBS) test_litl_pause$(EXEEXT): $(test_litl_pause_OBJECTS) $(test_litl_pause_DEPENDENCIES) $(EXTRA_test_litl_pause_DEPENDENCIES) @rm -f test_litl_pause$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_litl_pause_OBJECTS) $(test_litl_pause_LDADD) $(LIBS) test_litl_pause_flush$(EXEEXT): $(test_litl_pause_flush_OBJECTS) $(test_litl_pause_flush_DEPENDENCIES) $(EXTRA_test_litl_pause_flush_DEPENDENCIES) @rm -f test_litl_pause_flush$(EXEEXT) $(AM_V_CCLD)$(test_litl_pause_flush_LINK) $(test_litl_pause_flush_OBJECTS) $(test_litl_pause_flush_LDADD) $(LIBS) test_litl_read$(EXEEXT): $(test_litl_read_OBJECTS) $(test_litl_read_DEPENDENCIES) $(EXTRA_test_litl_read_DEPENDENCIES) @rm -f test_litl_read$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_litl_read_OBJECTS) $(test_litl_read_LDADD) $(LIBS) test_litl_read_flush$(EXEEXT): $(test_litl_read_flush_OBJECTS) $(test_litl_read_flush_DEPENDENCIES) $(EXTRA_test_litl_read_flush_DEPENDENCIES) @rm -f test_litl_read_flush$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_litl_read_flush_OBJECTS) $(test_litl_read_flush_LDADD) $(LIBS) test_litl_trace_size$(EXEEXT): $(test_litl_trace_size_OBJECTS) $(test_litl_trace_size_DEPENDENCIES) $(EXTRA_test_litl_trace_size_DEPENDENCIES) @rm -f test_litl_trace_size$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_litl_trace_size_OBJECTS) $(test_litl_trace_size_LDADD) $(LIBS) test_litl_write$(EXEEXT): $(test_litl_write_OBJECTS) $(test_litl_write_DEPENDENCIES) $(EXTRA_test_litl_write_DEPENDENCIES) @rm -f test_litl_write$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_litl_write_OBJECTS) $(test_litl_write_LDADD) $(LIBS) test_litl_write_concurent$(EXEEXT): $(test_litl_write_concurent_OBJECTS) $(test_litl_write_concurent_DEPENDENCIES) $(EXTRA_test_litl_write_concurent_DEPENDENCIES) @rm -f test_litl_write_concurent$(EXEEXT) $(AM_V_CCLD)$(test_litl_write_concurent_LINK) $(test_litl_write_concurent_OBJECTS) $(test_litl_write_concurent_LDADD) $(LIBS) test_litl_write_concurent_flush$(EXEEXT): $(test_litl_write_concurent_flush_OBJECTS) $(test_litl_write_concurent_flush_DEPENDENCIES) $(EXTRA_test_litl_write_concurent_flush_DEPENDENCIES) @rm -f test_litl_write_concurent_flush$(EXEEXT) $(AM_V_CCLD)$(test_litl_write_concurent_flush_LINK) $(test_litl_write_concurent_flush_OBJECTS) $(test_litl_write_concurent_flush_LDADD) $(LIBS) test_litl_write_flush$(EXEEXT): $(test_litl_write_flush_OBJECTS) $(test_litl_write_flush_DEPENDENCIES) $(EXTRA_test_litl_write_flush_DEPENDENCIES) @rm -f test_litl_write_flush$(EXEEXT) $(AM_V_CCLD)$(test_litl_write_flush_LINK) $(test_litl_write_flush_OBJECTS) $(test_litl_write_flush_LDADD) $(LIBS) test_litl_write_multiple_applications$(EXEEXT): $(test_litl_write_multiple_applications_OBJECTS) $(test_litl_write_multiple_applications_DEPENDENCIES) $(EXTRA_test_litl_write_multiple_applications_DEPENDENCIES) @rm -f test_litl_write_multiple_applications$(EXEEXT) $(AM_V_CCLD)$(test_litl_write_multiple_applications_LINK) $(test_litl_write_multiple_applications_OBJECTS) $(test_litl_write_multiple_applications_LDADD) $(LIBS) test_litl_write_multiple_applications_flush$(EXEEXT): $(test_litl_write_multiple_applications_flush_OBJECTS) $(test_litl_write_multiple_applications_flush_DEPENDENCIES) $(EXTRA_test_litl_write_multiple_applications_flush_DEPENDENCIES) @rm -f test_litl_write_multiple_applications_flush$(EXEEXT) $(AM_V_CCLD)$(test_litl_write_multiple_applications_flush_LINK) $(test_litl_write_multiple_applications_flush_OBJECTS) $(test_litl_write_multiple_applications_flush_LDADD) $(LIBS) test_litl_write_multiple_threads$(EXEEXT): $(test_litl_write_multiple_threads_OBJECTS) $(test_litl_write_multiple_threads_DEPENDENCIES) $(EXTRA_test_litl_write_multiple_threads_DEPENDENCIES) @rm -f test_litl_write_multiple_threads$(EXEEXT) $(AM_V_CCLD)$(test_litl_write_multiple_threads_LINK) $(test_litl_write_multiple_threads_OBJECTS) $(test_litl_write_multiple_threads_LDADD) $(LIBS) test_litl_write_multiple_threads_flush$(EXEEXT): $(test_litl_write_multiple_threads_flush_OBJECTS) $(test_litl_write_multiple_threads_flush_DEPENDENCIES) $(EXTRA_test_litl_write_multiple_threads_flush_DEPENDENCIES) @rm -f test_litl_write_multiple_threads_flush$(EXEEXT) $(AM_V_CCLD)$(test_litl_write_multiple_threads_flush_LINK) $(test_litl_write_multiple_threads_flush_OBJECTS) $(test_litl_write_multiple_threads_flush_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_litl_buffer_size.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_litl_mapping_to_fxt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_litl_pause.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_litl_pause_flush-test_litl_pause.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_litl_read.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_litl_trace_size.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_litl_write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_litl_write_concurent.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_litl_write_concurent_flush-test_litl_write_concurent.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_litl_write_flush-test_litl_write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_litl_write_multiple_applications.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_litl_write_multiple_applications_flush-test_litl_write_multiple_applications.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_litl_write_multiple_threads.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_litl_write_multiple_threads_flush-test_litl_write_multiple_threads.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< test_litl_pause_flush-test_litl_pause.o: test_litl_pause.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_litl_pause_flush_CFLAGS) $(CFLAGS) -MT test_litl_pause_flush-test_litl_pause.o -MD -MP -MF $(DEPDIR)/test_litl_pause_flush-test_litl_pause.Tpo -c -o test_litl_pause_flush-test_litl_pause.o `test -f 'test_litl_pause.c' || echo '$(srcdir)/'`test_litl_pause.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_litl_pause_flush-test_litl_pause.Tpo $(DEPDIR)/test_litl_pause_flush-test_litl_pause.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test_litl_pause.c' object='test_litl_pause_flush-test_litl_pause.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_litl_pause_flush_CFLAGS) $(CFLAGS) -c -o test_litl_pause_flush-test_litl_pause.o `test -f 'test_litl_pause.c' || echo '$(srcdir)/'`test_litl_pause.c test_litl_pause_flush-test_litl_pause.obj: test_litl_pause.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_litl_pause_flush_CFLAGS) $(CFLAGS) -MT test_litl_pause_flush-test_litl_pause.obj -MD -MP -MF $(DEPDIR)/test_litl_pause_flush-test_litl_pause.Tpo -c -o test_litl_pause_flush-test_litl_pause.obj `if test -f 'test_litl_pause.c'; then $(CYGPATH_W) 'test_litl_pause.c'; else $(CYGPATH_W) '$(srcdir)/test_litl_pause.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_litl_pause_flush-test_litl_pause.Tpo $(DEPDIR)/test_litl_pause_flush-test_litl_pause.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test_litl_pause.c' object='test_litl_pause_flush-test_litl_pause.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_litl_pause_flush_CFLAGS) $(CFLAGS) -c -o test_litl_pause_flush-test_litl_pause.obj `if test -f 'test_litl_pause.c'; then $(CYGPATH_W) 'test_litl_pause.c'; else $(CYGPATH_W) '$(srcdir)/test_litl_pause.c'; fi` test_litl_write_concurent_flush-test_litl_write_concurent.o: test_litl_write_concurent.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_litl_write_concurent_flush_CFLAGS) $(CFLAGS) -MT test_litl_write_concurent_flush-test_litl_write_concurent.o -MD -MP -MF $(DEPDIR)/test_litl_write_concurent_flush-test_litl_write_concurent.Tpo -c -o test_litl_write_concurent_flush-test_litl_write_concurent.o `test -f 'test_litl_write_concurent.c' || echo '$(srcdir)/'`test_litl_write_concurent.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_litl_write_concurent_flush-test_litl_write_concurent.Tpo $(DEPDIR)/test_litl_write_concurent_flush-test_litl_write_concurent.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test_litl_write_concurent.c' object='test_litl_write_concurent_flush-test_litl_write_concurent.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_litl_write_concurent_flush_CFLAGS) $(CFLAGS) -c -o test_litl_write_concurent_flush-test_litl_write_concurent.o `test -f 'test_litl_write_concurent.c' || echo '$(srcdir)/'`test_litl_write_concurent.c test_litl_write_concurent_flush-test_litl_write_concurent.obj: test_litl_write_concurent.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_litl_write_concurent_flush_CFLAGS) $(CFLAGS) -MT test_litl_write_concurent_flush-test_litl_write_concurent.obj -MD -MP -MF $(DEPDIR)/test_litl_write_concurent_flush-test_litl_write_concurent.Tpo -c -o test_litl_write_concurent_flush-test_litl_write_concurent.obj `if test -f 'test_litl_write_concurent.c'; then $(CYGPATH_W) 'test_litl_write_concurent.c'; else $(CYGPATH_W) '$(srcdir)/test_litl_write_concurent.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_litl_write_concurent_flush-test_litl_write_concurent.Tpo $(DEPDIR)/test_litl_write_concurent_flush-test_litl_write_concurent.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test_litl_write_concurent.c' object='test_litl_write_concurent_flush-test_litl_write_concurent.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_litl_write_concurent_flush_CFLAGS) $(CFLAGS) -c -o test_litl_write_concurent_flush-test_litl_write_concurent.obj `if test -f 'test_litl_write_concurent.c'; then $(CYGPATH_W) 'test_litl_write_concurent.c'; else $(CYGPATH_W) '$(srcdir)/test_litl_write_concurent.c'; fi` test_litl_write_flush-test_litl_write.o: test_litl_write.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_litl_write_flush_CFLAGS) $(CFLAGS) -MT test_litl_write_flush-test_litl_write.o -MD -MP -MF $(DEPDIR)/test_litl_write_flush-test_litl_write.Tpo -c -o test_litl_write_flush-test_litl_write.o `test -f 'test_litl_write.c' || echo '$(srcdir)/'`test_litl_write.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_litl_write_flush-test_litl_write.Tpo $(DEPDIR)/test_litl_write_flush-test_litl_write.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test_litl_write.c' object='test_litl_write_flush-test_litl_write.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_litl_write_flush_CFLAGS) $(CFLAGS) -c -o test_litl_write_flush-test_litl_write.o `test -f 'test_litl_write.c' || echo '$(srcdir)/'`test_litl_write.c test_litl_write_flush-test_litl_write.obj: test_litl_write.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_litl_write_flush_CFLAGS) $(CFLAGS) -MT test_litl_write_flush-test_litl_write.obj -MD -MP -MF $(DEPDIR)/test_litl_write_flush-test_litl_write.Tpo -c -o test_litl_write_flush-test_litl_write.obj `if test -f 'test_litl_write.c'; then $(CYGPATH_W) 'test_litl_write.c'; else $(CYGPATH_W) '$(srcdir)/test_litl_write.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_litl_write_flush-test_litl_write.Tpo $(DEPDIR)/test_litl_write_flush-test_litl_write.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test_litl_write.c' object='test_litl_write_flush-test_litl_write.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_litl_write_flush_CFLAGS) $(CFLAGS) -c -o test_litl_write_flush-test_litl_write.obj `if test -f 'test_litl_write.c'; then $(CYGPATH_W) 'test_litl_write.c'; else $(CYGPATH_W) '$(srcdir)/test_litl_write.c'; fi` test_litl_write_multiple_applications_flush-test_litl_write_multiple_applications.o: test_litl_write_multiple_applications.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_litl_write_multiple_applications_flush_CFLAGS) $(CFLAGS) -MT test_litl_write_multiple_applications_flush-test_litl_write_multiple_applications.o -MD -MP -MF $(DEPDIR)/test_litl_write_multiple_applications_flush-test_litl_write_multiple_applications.Tpo -c -o test_litl_write_multiple_applications_flush-test_litl_write_multiple_applications.o `test -f 'test_litl_write_multiple_applications.c' || echo '$(srcdir)/'`test_litl_write_multiple_applications.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_litl_write_multiple_applications_flush-test_litl_write_multiple_applications.Tpo $(DEPDIR)/test_litl_write_multiple_applications_flush-test_litl_write_multiple_applications.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test_litl_write_multiple_applications.c' object='test_litl_write_multiple_applications_flush-test_litl_write_multiple_applications.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_litl_write_multiple_applications_flush_CFLAGS) $(CFLAGS) -c -o test_litl_write_multiple_applications_flush-test_litl_write_multiple_applications.o `test -f 'test_litl_write_multiple_applications.c' || echo '$(srcdir)/'`test_litl_write_multiple_applications.c test_litl_write_multiple_applications_flush-test_litl_write_multiple_applications.obj: test_litl_write_multiple_applications.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_litl_write_multiple_applications_flush_CFLAGS) $(CFLAGS) -MT test_litl_write_multiple_applications_flush-test_litl_write_multiple_applications.obj -MD -MP -MF $(DEPDIR)/test_litl_write_multiple_applications_flush-test_litl_write_multiple_applications.Tpo -c -o test_litl_write_multiple_applications_flush-test_litl_write_multiple_applications.obj `if test -f 'test_litl_write_multiple_applications.c'; then $(CYGPATH_W) 'test_litl_write_multiple_applications.c'; else $(CYGPATH_W) '$(srcdir)/test_litl_write_multiple_applications.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_litl_write_multiple_applications_flush-test_litl_write_multiple_applications.Tpo $(DEPDIR)/test_litl_write_multiple_applications_flush-test_litl_write_multiple_applications.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test_litl_write_multiple_applications.c' object='test_litl_write_multiple_applications_flush-test_litl_write_multiple_applications.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_litl_write_multiple_applications_flush_CFLAGS) $(CFLAGS) -c -o test_litl_write_multiple_applications_flush-test_litl_write_multiple_applications.obj `if test -f 'test_litl_write_multiple_applications.c'; then $(CYGPATH_W) 'test_litl_write_multiple_applications.c'; else $(CYGPATH_W) '$(srcdir)/test_litl_write_multiple_applications.c'; fi` test_litl_write_multiple_threads_flush-test_litl_write_multiple_threads.o: test_litl_write_multiple_threads.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_litl_write_multiple_threads_flush_CFLAGS) $(CFLAGS) -MT test_litl_write_multiple_threads_flush-test_litl_write_multiple_threads.o -MD -MP -MF $(DEPDIR)/test_litl_write_multiple_threads_flush-test_litl_write_multiple_threads.Tpo -c -o test_litl_write_multiple_threads_flush-test_litl_write_multiple_threads.o `test -f 'test_litl_write_multiple_threads.c' || echo '$(srcdir)/'`test_litl_write_multiple_threads.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_litl_write_multiple_threads_flush-test_litl_write_multiple_threads.Tpo $(DEPDIR)/test_litl_write_multiple_threads_flush-test_litl_write_multiple_threads.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test_litl_write_multiple_threads.c' object='test_litl_write_multiple_threads_flush-test_litl_write_multiple_threads.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_litl_write_multiple_threads_flush_CFLAGS) $(CFLAGS) -c -o test_litl_write_multiple_threads_flush-test_litl_write_multiple_threads.o `test -f 'test_litl_write_multiple_threads.c' || echo '$(srcdir)/'`test_litl_write_multiple_threads.c test_litl_write_multiple_threads_flush-test_litl_write_multiple_threads.obj: test_litl_write_multiple_threads.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_litl_write_multiple_threads_flush_CFLAGS) $(CFLAGS) -MT test_litl_write_multiple_threads_flush-test_litl_write_multiple_threads.obj -MD -MP -MF $(DEPDIR)/test_litl_write_multiple_threads_flush-test_litl_write_multiple_threads.Tpo -c -o test_litl_write_multiple_threads_flush-test_litl_write_multiple_threads.obj `if test -f 'test_litl_write_multiple_threads.c'; then $(CYGPATH_W) 'test_litl_write_multiple_threads.c'; else $(CYGPATH_W) '$(srcdir)/test_litl_write_multiple_threads.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_litl_write_multiple_threads_flush-test_litl_write_multiple_threads.Tpo $(DEPDIR)/test_litl_write_multiple_threads_flush-test_litl_write_multiple_threads.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test_litl_write_multiple_threads.c' object='test_litl_write_multiple_threads_flush-test_litl_write_multiple_threads.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_litl_write_multiple_threads_flush_CFLAGS) $(CFLAGS) -c -o test_litl_write_multiple_threads_flush-test_litl_write_multiple_threads.obj `if test -f 'test_litl_write_multiple_threads.c'; then $(CYGPATH_W) 'test_litl_write_multiple_threads.c'; else $(CYGPATH_W) '$(srcdir)/test_litl_write_multiple_threads.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ if test -n "$(PACKAGE_BUGREPORT)"; then \ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all $(check_PROGRAMS) @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? test_litl_write.log: test_litl_write$(EXEEXT) @p='test_litl_write$(EXEEXT)'; \ b='test_litl_write'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_litl_read.log: test_litl_read$(EXEEXT) @p='test_litl_read$(EXEEXT)'; \ b='test_litl_read'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_litl_write_concurent.log: test_litl_write_concurent$(EXEEXT) @p='test_litl_write_concurent$(EXEEXT)'; \ b='test_litl_write_concurent'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_litl_write_multiple_threads.log: test_litl_write_multiple_threads$(EXEEXT) @p='test_litl_write_multiple_threads$(EXEEXT)'; \ b='test_litl_write_multiple_threads'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_litl_write_multiple_applications.log: test_litl_write_multiple_applications$(EXEEXT) @p='test_litl_write_multiple_applications$(EXEEXT)'; \ b='test_litl_write_multiple_applications'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_litl_pause.log: test_litl_pause$(EXEEXT) @p='test_litl_pause$(EXEEXT)'; \ b='test_litl_pause'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_litl_write_flush.log: test_litl_write_flush$(EXEEXT) @p='test_litl_write_flush$(EXEEXT)'; \ b='test_litl_write_flush'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_litl_read_flush.log: test_litl_read_flush$(EXEEXT) @p='test_litl_read_flush$(EXEEXT)'; \ b='test_litl_read_flush'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_litl_write_concurent_flush.log: test_litl_write_concurent_flush$(EXEEXT) @p='test_litl_write_concurent_flush$(EXEEXT)'; \ b='test_litl_write_concurent_flush'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_litl_write_multiple_threads_flush.log: test_litl_write_multiple_threads_flush$(EXEEXT) @p='test_litl_write_multiple_threads_flush$(EXEEXT)'; \ b='test_litl_write_multiple_threads_flush'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_litl_write_multiple_applications_flush.log: test_litl_write_multiple_applications_flush$(EXEEXT) @p='test_litl_write_multiple_applications_flush$(EXEEXT)'; \ b='test_litl_write_multiple_applications_flush'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_litl_pause_flush.log: test_litl_pause_flush$(EXEEXT) @p='test_litl_pause_flush$(EXEEXT)'; \ b='test_litl_pause_flush'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_litl_buffer.log: test_litl_buffer$(EXEEXT) @p='test_litl_buffer$(EXEEXT)'; \ b='test_litl_buffer'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_litl_trace_size.log: test_litl_trace_size$(EXEEXT) @p='test_litl_trace_size$(EXEEXT)'; \ b='test_litl_trace_size'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_litl_mapping_to_fxt.log: test_litl_mapping_to_fxt$(EXEEXT) @p='test_litl_mapping_to_fxt$(EXEEXT)'; \ b='test_litl_mapping_to_fxt'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool clean-local \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool clean-local \ cscopelist-am ctags ctags-am distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ recheck tags tags-am uninstall uninstall-am .PRECIOUS: Makefile clean-local: rm -rf Makefile.in Makefile.bk rm -rf test_litl_write test_litl_write_concurent \ test_litl_write_multiple_threads test_litl_read test_litl_pause \ test_litl_write_multiple_applications test_litl_buffer \ test_litl_trace_size test_litl_mapping_to_fxt # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/litl/tests/PaxHeaders.7332/test_litl_mapping_to_fxt.c0000644000000000000000000000013112426414022023465 xustar0030 mtime=1415190546.314452975 30 atime=1507797544.002894639 29 ctime=1508162365.85774353 eztrace-1.1-7/extlib/litl/tests/test_litl_mapping_to_fxt.c0000644000175000017500000000547212426414022024665 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ /* * This test validates the mapping between LiTL and FxT APIs */ #define _GNU_SOURCE #include #include #include #include #include #include "fxt.h" #include "fut.h" #define THREAD_ID pthread_self() int main() { int i, nb_iter; char* filename = "/tmp/test_litl_fxt_trace_size.trace"; const uint32_t buffer_size = 16 * 1024 * 1024; // 16MB nb_iter = 1000; fut_setup(buffer_size, FUT_KEYMASKALL, THREAD_ID); fut_set_filename(filename); enable_fut_flush() ; fut_enable_tid_logging() ; for (i = 0; i < nb_iter; i++) { // char events FUT_DO_PROBE0(0x100 * (i + 1) + 0); FUT_DO_PROBE1(0x100 * (i + 1) + 1, (uint8_t ) 1); FUT_DO_PROBE2(0x100 * (i + 1) + 2, (uint8_t ) 1, (uint8_t ) 3); FUT_DO_PROBE3(0x100 * (i + 1) + 3, (uint8_t ) 1, (uint8_t ) 3, (uint8_t ) 5); FUT_DO_PROBE4(0x100 * (i + 1) + 4, (uint8_t ) 1, (uint8_t ) 3, (uint8_t ) 5, (uint8_t ) 7); FUT_DO_PROBE5(0x100 * (i + 1) + 5, (uint8_t ) 1, (uint8_t ) 3, (uint8_t ) 5, (uint8_t ) 7, (uint8_t ) 11); FUT_DO_PROBE6(0x100 * (i + 1) + 6, (uint8_t ) 1, (uint8_t ) 3, (uint8_t ) 5, (uint8_t ) 7, (uint8_t ) 11, (uint8_t ) 13); usleep(10); // int events FUT_DO_PROBE0(0x100 * (i + 1) + 7); FUT_DO_PROBE1(0x100 * (i + 1) + 8, (int ) 1); FUT_DO_PROBE2(0x100 * (i + 1) + 9, (int ) 1, (int ) 3); FUT_DO_PROBE3(0x100 * (i + 1) + 10, (int ) 1, (int ) 3, (int ) 5); FUT_DO_PROBE4(0x100 * (i + 1) + 11, (int ) 1, (int ) 3, (int ) 5, (int ) 7); FUT_DO_PROBE5(0x100 * (i + 1) + 12, (int ) 1, (int ) 3, (int ) 5, (int ) 7, (int ) 11); FUT_DO_PROBE6(0x100 * (i + 1) + 13, (int ) 1, (int ) 3, (int ) 5, (int ) 7, (int ) 11, (int ) 13); usleep(10); // double events FUT_DO_PROBE0(0x100 * (i + 1) + 14); FUT_DO_PROBE1(0x100 * (i + 1) + 15, (double ) 1); FUT_DO_PROBE2(0x100 * (i + 1) + 16, (double ) 1, (double ) 3); FUT_DO_PROBE3(0x100 * (i + 1) + 17, (double ) 1, (double ) 3, (double ) 5); FUT_DO_PROBE4(0x100 * (i + 1) + 18, (double ) 1, (double ) 3, (double ) 5, (double ) 7); FUT_DO_PROBE5(0x100 * (i + 1) + 19, (double ) 1, (double ) 3, (double ) 5, (double ) 7, (double ) 11); FUT_DO_PROBE6(0x100 * (i + 1) + 20, (double ) 1, (double ) 3, (double ) 5, (double ) 7, (double ) 11, (double ) 13); usleep(10); } fut_endup(filename); fut_done(); uint64_t size; FILE* fp = fopen(filename, "r"); fseek(fp, 0L, SEEK_END); size = ftell(fp); fclose(fp); printf("Trace file size = %ld KB\n", size / 1024); // size in KB return EXIT_SUCCESS; } eztrace-1.1-7/extlib/litl/PaxHeaders.7332/NEWS0000644000000000000000000000013212426414022015556 xustar0030 mtime=1415190546.310452975 30 atime=1507797544.002894639 30 ctime=1508162365.741733411 eztrace-1.1-7/extlib/litl/NEWS0000644000175000017500000000000012426414022016733 0ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/litl/PaxHeaders.7332/utils0000644000000000000000000000013213171135475016154 xustar0030 mtime=1508162365.817740041 30 atime=1508162367.741908015 30 ctime=1508162365.817740041 eztrace-1.1-7/extlib/litl/utils/0000755000175000017500000000000013171135475017420 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/litl/utils/PaxHeaders.7332/litl_split.c0000644000000000000000000000013212426414022020542 xustar0030 mtime=1415190546.314452975 30 atime=1508138853.331354885 30 ctime=1508162365.817740041 eztrace-1.1-7/extlib/litl/utils/litl_split.c0000644000175000017500000000331012426414022021726 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ /** * \file utils/litl_split.c * \brief litl_split A utility for disassembling archives of traces into * separate regular trace files * * \authors * Developers are: \n * Roman Iakymchuk -- roman.iakymchuk@telecom-sudparis.eu \n * Francois Trahay -- francois.trahay@telecom-sudparis.eu \n */ #define _GNU_SOURCE #include #include #include #include #include "litl_split.h" static char *__archive_name = ""; static char *__output_dir = ""; static void __usage(int argc __attribute__((unused)), char **argv) { fprintf(stderr, "Usage: %s [-f archive_traces] [-d output_dir] \n", argv[0]); printf(" -?, -h: Display this help and exit\n"); } static void __parse_args(int argc, char **argv) { int i; for (i = 1; i < argc; i++) { if ((strcmp(argv[i], "-f") == 0)) { __archive_name = argv[++i]; } else if ((strcmp(argv[i], "-d") == 0)) { __output_dir = argv[++i]; } else if ((strcmp(argv[i], "-h") || strcmp(argv[i], "-?")) == 0) { __usage(argc, argv); exit(-1); } else if (argv[i][0] == '-') { fprintf(stderr, "Unknown option %s\n", argv[i]); __usage(argc, argv); exit(-1); } } if (strcmp(__archive_name, "") == 0) { __usage(argc, argv); exit(-1); } else if (strcmp(__output_dir, "") == 0) { __usage(argc, argv); exit(-1); } } int main(int argc, char **argv) { // parse the arguments passed to this program __parse_args(argc, argv); // split the archive litl_split_archive(__archive_name, __output_dir); return EXIT_SUCCESS; } eztrace-1.1-7/extlib/litl/utils/PaxHeaders.7332/litl_print.c0000644000000000000000000000013212632512235020547 xustar0030 mtime=1449825437.497059414 30 atime=1508138853.331354885 30 ctime=1508162365.817740041 eztrace-1.1-7/extlib/litl/utils/litl_print.c0000644000175000017500000000755612632512235021753 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ /** * \file utils/litl_print.c * \brief litl_print A utility for reading events from both regular trace * files and archives of traces * * \authors * Developers are: \n * Roman Iakymchuk -- roman.iakymchuk@telecom-sudparis.eu \n * Francois Trahay -- francois.trahay@telecom-sudparis.eu \n */ #include #include #include "litl_tools.h" #include "litl_read.h" static char* __input_filename = "trace"; static void __litl_read_usage(int argc __attribute__((unused)), char **argv) { fprintf(stderr, "Usage: %s [-f input_filename] \n", argv[0]); printf(" -?, -h: Display this help and exit\n"); } static void __litl_read_parse_args(int argc, char **argv) { int i; for (i = 1; i < argc; i++) { if ((strcmp(argv[i], "-f") == 0)) { __input_filename = argv[++i]; } else if ((strcmp(argv[i], "-h") || strcmp(argv[i], "-?")) == 0) { __litl_read_usage(argc, argv); exit(-1); } else if (argv[i][0] == '-') { fprintf(stderr, "Unknown option %s\n", argv[i]); __litl_read_usage(argc, argv); exit(-1); } } if (strcmp(__input_filename, "trace") == 0) { __litl_read_usage(argc, argv); exit(-1); } } int main(int argc, char **argv) { litl_med_size_t i; litl_read_event_t* event; litl_read_trace_t *trace; litl_general_header_t* trace_header; litl_process_header_t* process_header; // parse the arguments passed to this program __litl_read_parse_args(argc, argv); trace = litl_read_open_trace(__input_filename); litl_read_init_processes(trace); trace_header = litl_read_get_trace_header(trace); process_header = litl_read_get_process_header(trace->processes[0]); // print the header printf(" LiTL v.%s\n", trace_header->litl_ver); printf(" %s\n", trace_header->sysinfo); printf(" nb_processes \t %d\n", trace_header->nb_processes); if (trace_header->nb_processes == 1) printf(" nb_threads \t %d\n", process_header->nb_threads); printf( " buffer_size \t %d\n", trace->processes[0]->header->buffer_size - __litl_get_reg_event_size(LITL_MAX_PARAMS) - __litl_get_reg_event_size(0)); printf( "[Timestamp]\t[ThreadID]\t[EventType]\t[EventCode]\t[NbParam]\t[Parameters]\n"); while (1) { event = litl_read_next_event(trace); if (event == NULL ) break; switch (LITL_READ_GET_TYPE(event)) { case LITL_TYPE_REGULAR: { // regular event printf("%"PRTIu64" \t%"PRTIu64" \t Reg %"PRTIx32" \t %"PRTIu32, LITL_READ_GET_TIME(event), LITL_READ_GET_TID(event), LITL_READ_GET_CODE(event), LITL_READ_REGULAR(event)->nb_params); for (i = 0; i < LITL_READ_REGULAR(event)->nb_params; i++) printf("\t %"PRTIx64, LITL_READ_REGULAR(event)->param[i]); break; } case LITL_TYPE_RAW: { // raw event printf("%"PRTIu64"\t%"PRTIu64" \t Raw %"PRTIx32" \t %"PRTIu32, LITL_READ_GET_TIME(event), LITL_READ_GET_TID(event), LITL_READ_GET_CODE(event), LITL_READ_RAW(event)->size); printf("\t %s", (litl_data_t *) LITL_READ_RAW(event)->data); break; } case LITL_TYPE_PACKED: { // packed event printf("%"PRTIu64" \t%"PRTIu64" \t Packed %"PRTIx32" \t %"PRTIu32"\t", LITL_READ_GET_TIME(event), LITL_READ_GET_TID(event), LITL_READ_GET_CODE(event), LITL_READ_PACKED(event)->size); for (i = 0; i < LITL_READ_PACKED(event)->size; i++) { printf(" %x", LITL_READ_PACKED(event)->param[i]); } break; } case LITL_TYPE_OFFSET: { // offset event continue; } default: { fprintf(stderr, "Unknown event type %d\n", LITL_READ_GET_TYPE(event)); abort(); } } printf("\n"); } litl_read_finalize_trace(trace); return EXIT_SUCCESS; } eztrace-1.1-7/extlib/litl/utils/PaxHeaders.7332/litl_merge.c0000644000000000000000000000013212426414022020506 xustar0030 mtime=1415190546.314452975 30 atime=1508138853.331354885 30 ctime=1508162365.813739692 eztrace-1.1-7/extlib/litl/utils/litl_merge.c0000644000175000017500000000353112426414022021677 0ustar00trahaytrahay00000000000000/* -*- c-file-style: "GNU" -*- */ /* * Copyright © Télécom SudParis. * See COPYING in top-level directory. */ /** * \file utils/litl_merge.c * \brief litl_merge A utility for combining both regular trace files and * archives of traces into archives. The latter is the recursive inclusion * * \authors * Developers are: \n * Roman Iakymchuk -- roman.iakymchuk@telecom-sudparis.eu \n * Francois Trahay -- francois.trahay@telecom-sudparis.eu \n */ #define _GNU_SOURCE #include #include #include #include #include #include "litl_merge.h" static char* __arch_name; static char** __trace_names; static int __nb_traces; static void __usage(int argc __attribute__((unused)), char **argv) { fprintf(stderr, "Usage: %s [-o archive_name] input_filename input_filename ... \n", argv[0]); printf(" -?, -h: Display this help and exit\n"); } static void __parse_args(int argc, char **argv) { int i, res __attribute__ ((__unused__)); __trace_names = (char **) malloc((argc - 3) * sizeof(char *)); __nb_traces = 0; for (i = 1; i < argc; i++) { if ((strcmp(argv[i], "-o") == 0)) { res = asprintf(&__arch_name, "%s", argv[++i]); } else if ((strcmp(argv[i], "-h") || strcmp(argv[i], "-?")) == 0) { __usage(argc, argv); exit(-1); } else if (argv[i][0] == '-') { fprintf(stderr, "Unknown option %s\n", argv[i]); __usage(argc, argv); exit(-1); } else { res = asprintf(&__trace_names[__nb_traces], "%s", argv[i]); __nb_traces++; } } if (__arch_name == NULL ) __usage(argc, argv); } int main(int argc, char **argv) { // parse the arguments passed to this program __parse_args(argc, argv); litl_merge_traces(__arch_name, __trace_names, __nb_traces); return EXIT_SUCCESS; } eztrace-1.1-7/extlib/litl/utils/PaxHeaders.7332/Makefile.am0000644000000000000000000000013213012560437020257 xustar0030 mtime=1479205151.272727014 30 atime=1508162189.223654954 30 ctime=1508162365.809739342 eztrace-1.1-7/extlib/litl/utils/Makefile.am0000644000175000017500000000065213012560437021451 0ustar00trahaytrahay00000000000000# Copyright © Télécom SudParis. # See COPYING in top-level directory. AM_CFLAGS = -W -Wall -Wextra -I$(top_srcdir)/src -I$(top_builddir)/src AM_LDFLAGS = -L$(top_builddir)/src -llitl -lpthread bin_PROGRAMS = litl_print litl_merge litl_split litl_print_SOURCES = litl_print.c litl_merge_SOURCES = litl_merge.c litl_split_SOURCES = litl_split.c clean-local: rm -rf Makefile.bk rm -rf litl_print litl_merge litl_split eztrace-1.1-7/extlib/litl/utils/PaxHeaders.7332/Makefile.in0000644000000000000000000000013113171135250020264 xustar0030 mtime=1508162216.793599908 29 atime=1508162273.59797159 30 ctime=1508162365.813739692 eztrace-1.1-7/extlib/litl/utils/Makefile.in0000644000175000017500000005031313171135250021456 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright © Télécom SudParis. # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = litl_print$(EXEEXT) litl_merge$(EXEEXT) \ litl_split$(EXEEXT) subdir = utils ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_litl_merge_OBJECTS = litl_merge.$(OBJEXT) litl_merge_OBJECTS = $(am_litl_merge_OBJECTS) litl_merge_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = am_litl_print_OBJECTS = litl_print.$(OBJEXT) litl_print_OBJECTS = $(am_litl_print_OBJECTS) litl_print_LDADD = $(LDADD) am_litl_split_OBJECTS = litl_split.$(OBJEXT) litl_split_OBJECTS = $(am_litl_split_OBJECTS) litl_split_LDADD = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(litl_merge_SOURCES) $(litl_print_SOURCES) \ $(litl_split_SOURCES) DIST_SOURCES = $(litl_merge_SOURCES) $(litl_print_SOURCES) \ $(litl_split_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLOCK_GETTIME_AVAIL = @CLOCK_GETTIME_AVAIL@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOXYGEN = @DOXYGEN@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FORCE_32BIT = @FORCE_32BIT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIZEOF_SIZE_T = @SIZEOF_SIZE_T@ STRIP = @STRIP@ USE_GETTID = @USE_GETTID@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CFLAGS = -W -Wall -Wextra -I$(top_srcdir)/src -I$(top_builddir)/src AM_LDFLAGS = -L$(top_builddir)/src -llitl -lpthread litl_print_SOURCES = litl_print.c litl_merge_SOURCES = litl_merge.c litl_split_SOURCES = litl_split.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu utils/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu utils/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list litl_merge$(EXEEXT): $(litl_merge_OBJECTS) $(litl_merge_DEPENDENCIES) $(EXTRA_litl_merge_DEPENDENCIES) @rm -f litl_merge$(EXEEXT) $(AM_V_CCLD)$(LINK) $(litl_merge_OBJECTS) $(litl_merge_LDADD) $(LIBS) litl_print$(EXEEXT): $(litl_print_OBJECTS) $(litl_print_DEPENDENCIES) $(EXTRA_litl_print_DEPENDENCIES) @rm -f litl_print$(EXEEXT) $(AM_V_CCLD)$(LINK) $(litl_print_OBJECTS) $(litl_print_LDADD) $(LIBS) litl_split$(EXEEXT): $(litl_split_OBJECTS) $(litl_split_DEPENDENCIES) $(EXTRA_litl_split_DEPENDENCIES) @rm -f litl_split$(EXEEXT) $(AM_V_CCLD)$(LINK) $(litl_split_OBJECTS) $(litl_split_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/litl_merge.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/litl_print.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/litl_split.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool clean-local \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic clean-libtool clean-local \ cscopelist-am ctags ctags-am distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-binPROGRAMS install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-binPROGRAMS .PRECIOUS: Makefile clean-local: rm -rf Makefile.bk rm -rf litl_print litl_merge litl_split # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/litl/PaxHeaders.7332/config.sub0000644000000000000000000000013213171135250017040 xustar0030 mtime=1508162216.637588533 30 atime=1508162271.725821229 30 ctime=1508162365.745733759 eztrace-1.1-7/extlib/litl/config.sub0000755000175000017500000010676313171135250020247 0ustar00trahaytrahay00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2016 Free Software Foundation, Inc. timestamp='2016-11-04' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ kopensolaris*-gnu* | cloudabi*-eabi* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | e2k | epiphany \ | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pru \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pru-* \ | pyramid-* \ | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; asmjs) basic_machine=asmjs-unknown ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; e500v[12]) basic_machine=powerpc-unknown os=$os"spe" ;; e500v[12]-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` os=$os"spe" ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ | -onefs* | -tirtos* | -phoenix* | -fuchsia*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -ios) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: eztrace-1.1-7/extlib/litl/PaxHeaders.7332/AUTHORS0000644000000000000000000000013212426414022016127 xustar0030 mtime=1415190546.310452975 30 atime=1507797544.002894639 30 ctime=1508162365.733732713 eztrace-1.1-7/extlib/litl/AUTHORS0000644000175000017500000000023712426414022017320 0ustar00trahaytrahay00000000000000Main contributors: - François Trahay -- Project Leader - Roman Iakymchuk -- Developer eztrace-1.1-7/extlib/litl/PaxHeaders.7332/INSTALL0000644000000000000000000000013213171135250016111 xustar0030 mtime=1508162216.649589408 30 atime=1508162216.649589408 30 ctime=1508162365.741733411 eztrace-1.1-7/extlib/litl/INSTALL0000644000175000017500000003661413171135250017312 0ustar00trahaytrahay00000000000000Installation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell command './configure && make && make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the 'README' file for instructions specific to this package. Some packages provide this 'INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The 'configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a 'Makefile' in each directory of the package. It may also create one or more '.h' files containing system-dependent definitions. Finally, it creates a shell script 'config.status' that you can run in the future to recreate the current configuration, and a file 'config.log' containing compiler output (useful mainly for debugging 'configure'). It can also use an optional file (typically called 'config.cache' and enabled with '--cache-file=config.cache' or simply '-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how 'configure' could check whether to do them, and mail diffs or instructions to the address given in the 'README' so they can be considered for the next release. If you are using the cache, and at some point 'config.cache' contains results you don't want to keep, you may remove or edit it. The file 'configure.ac' (or 'configure.in') is used to create 'configure' by a program called 'autoconf'. You need 'configure.ac' if you want to change it or regenerate 'configure' using a newer version of 'autoconf'. The simplest way to compile this package is: 1. 'cd' to the directory containing the package's source code and type './configure' to configure the package for your system. Running 'configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type 'make' to compile the package. 3. Optionally, type 'make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type 'make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the 'make install' phase executed with root privileges. 5. Optionally, type 'make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior 'make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing 'make clean'. To also remove the files that 'configure' created (so you can compile the package for a different kind of computer), type 'make distclean'. There is also a 'make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type 'make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide 'make distcheck', which can by used by developers to test that all other targets like 'make install' and 'make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the 'configure' script does not know about. Run './configure --help' for details on some of the pertinent environment variables. You can give 'configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU 'make'. 'cd' to the directory where you want the object files and executables to go and run the 'configure' script. 'configure' automatically checks for the source code in the directory that 'configure' is in and in '..'. This is known as a "VPATH" build. With a non-GNU 'make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use 'make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple '-arch' options to the compiler but only a single '-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the 'lipo' tool if you have problems. Installation Names ================== By default, 'make install' installs the package's commands under '/usr/local/bin', include files under '/usr/local/include', etc. You can specify an installation prefix other than '/usr/local' by giving 'configure' the option '--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option '--exec-prefix=PREFIX' to 'configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like '--bindir=DIR' to specify different values for particular kinds of files. Run 'configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of '${prefix}', so that specifying just '--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to 'configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the 'make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, 'make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of '${prefix}'. Any directories that were specified during 'configure', but not in terms of '${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the 'DESTDIR' variable. For example, 'make install DESTDIR=/alternate/directory' will prepend '/alternate/directory' before all installation names. The approach of 'DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of '${prefix}' at 'configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving 'configure' the option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'. Some packages pay attention to '--enable-FEATURE' options to 'configure', where FEATURE indicates an optional part of the package. They may also pay attention to '--with-PACKAGE' options, where PACKAGE is something like 'gnu-as' or 'x' (for the X Window System). The 'README' should mention any '--enable-' and '--with-' options that the package recognizes. For packages that use the X Window System, 'configure' can usually find the X include and library files automatically, but if it doesn't, you can use the 'configure' options '--x-includes=DIR' and '--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of 'make' will be. For these packages, running './configure --enable-silent-rules' sets the default to minimal output, which can be overridden with 'make V=1'; while running './configure --disable-silent-rules' sets the default to verbose, which can be overridden with 'make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX 'make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as 'configure' are involved. Use GNU 'make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its '' header file. The option '-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put '/usr/ucb' early in your 'PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in '/usr/bin'. So, if you need '/usr/ucb' in your 'PATH', put it _after_ '/usr/bin'. On Haiku, software installed for all users goes in '/boot/common', not '/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features 'configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, 'configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the '--build=TYPE' option. TYPE can either be a short name for the system type, such as 'sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file 'config.sub' for the possible values of each field. If 'config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option '--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with '--host=TYPE'. Sharing Defaults ================ If you want to set default values for 'configure' scripts to share, you can create a site shell script called 'config.site' that gives default values for variables like 'CC', 'cache_file', and 'prefix'. 'configure' looks for 'PREFIX/share/config.site' if it exists, then 'PREFIX/etc/config.site' if it exists. Or, you can set the 'CONFIG_SITE' environment variable to the location of the site script. A warning: not all 'configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to 'configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the 'configure' command line, using 'VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified 'gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash 'configure' Invocation ====================== 'configure' recognizes the following options to control how it operates. '--help' '-h' Print a summary of all of the options to 'configure', and exit. '--help=short' '--help=recursive' Print a summary of the options unique to this package's 'configure', and exit. The 'short' variant lists options used only in the top level, while the 'recursive' variant lists options also present in any nested packages. '--version' '-V' Print the version of Autoconf used to generate the 'configure' script, and exit. '--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally 'config.cache'. FILE defaults to '/dev/null' to disable caching. '--config-cache' '-C' Alias for '--cache-file=config.cache'. '--quiet' '--silent' '-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to '/dev/null' (any error messages will still be shown). '--srcdir=DIR' Look for the package's source code in directory DIR. Usually 'configure' can determine that directory automatically. '--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. '--no-create' '-n' Run the configure checks, but stop before creating any output files. 'configure' also accepts some other, not widely useful, options. Run 'configure --help' for more details. eztrace-1.1-7/extlib/litl/PaxHeaders.7332/Makefile.am0000644000000000000000000000013212632273316017123 xustar0030 mtime=1449752270.432876297 30 atime=1508162184.175314504 30 ctime=1508162365.717731317 eztrace-1.1-7/extlib/litl/Makefile.am0000644000175000017500000000053712632273316020317 0ustar00trahaytrahay00000000000000# Copyright © Télécom SudParis. # See COPYING in top-level directory. ACLOCAL_AMFLAGS = -I m4 SUBDIRS = src \ utils \ tests if WITHDOC SUBDIRS += doc endif #WITHDOC pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = litl.pc EXTRA_DIST = ChangeLog clean-local: rm -rf aclocal.m4 autom4te.cache/ config.log litl.pc libtool eztrace-1.1-7/extlib/litl/PaxHeaders.7332/depcomp0000644000000000000000000000013213171135250016432 xustar0030 mtime=1508162216.777598742 30 atime=1508162271.697818983 30 ctime=1508162365.785737249 eztrace-1.1-7/extlib/litl/depcomp0000755000175000017500000005601713171135250017635 0ustar00trahaytrahay00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2016-01-11.22; # UTC # Copyright (C) 1999-2017 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/extlib/litl/PaxHeaders.7332/Makefile.in0000644000000000000000000000013213171135250017125 xustar0030 mtime=1508162216.669590866 30 atime=1508162273.537966765 30 ctime=1508162365.729732363 eztrace-1.1-7/extlib/litl/Makefile.in0000644000175000017500000006611513171135250020325 0ustar00trahaytrahay00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright © Télécom SudParis. # See COPYING in top-level directory. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @WITHDOC_TRUE@am__append_1 = doc subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = litl.pc CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkgconfigdir)" DATA = $(pkgconfig_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = src utils tests doc am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/litl.pc.in AUTHORS \ COPYING ChangeLog INSTALL NEWS README compile config.guess \ config.sub install-sh ltmain.sh missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLOCK_GETTIME_AVAIL = @CLOCK_GETTIME_AVAIL@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOXYGEN = @DOXYGEN@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FORCE_32BIT = @FORCE_32BIT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEXMK = @LATEXMK@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PDFLATEX = @PDFLATEX@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIZEOF_SIZE_T = @SIZEOF_SIZE_T@ STRIP = @STRIP@ USE_GETTID = @USE_GETTID@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I m4 SUBDIRS = src utils tests $(am__append_1) pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = litl.pc EXTRA_DIST = ChangeLog all: all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): litl.pc: $(top_builddir)/config.status $(srcdir)/litl.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-pkgconfigDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-pkgconfigDATA .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-libtool clean-local cscope cscopelist-am ctags ctags-am \ dist dist-all dist-bzip2 dist-gzip dist-lzip dist-shar \ dist-tarZ dist-xz dist-zip distcheck distclean \ distclean-generic distclean-libtool distclean-tags \ distcleancheck distdir distuninstallcheck dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkgconfigDATA install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-pkgconfigDATA .PRECIOUS: Makefile clean-local: rm -rf aclocal.m4 autom4te.cache/ config.log litl.pc libtool # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: eztrace-1.1-7/extlib/litl/PaxHeaders.7332/m40000644000000000000000000000013213171135475015334 xustar0030 mtime=1508162365.725732015 30 atime=1508162367.741908015 30 ctime=1508162365.725732015 eztrace-1.1-7/extlib/litl/m4/0000755000175000017500000000000013171135475016600 5ustar00trahaytrahay00000000000000eztrace-1.1-7/extlib/litl/m4/PaxHeaders.7332/lt~obsolete.m40000644000000000000000000000013113171135246020220 xustar0029 mtime=1508162214.83345721 30 atime=1508162214.845458081 30 ctime=1508162365.725732015 eztrace-1.1-7/extlib/litl/m4/lt~obsolete.m40000644000175000017500000001377413171135246021424 0ustar00trahaytrahay00000000000000# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software # Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) eztrace-1.1-7/extlib/litl/m4/PaxHeaders.7332/libtool.m40000644000000000000000000000013213171135246017313 xustar0030 mtime=1508162214.793454307 30 atime=1508162214.797454597 30 ctime=1508162365.721731666 eztrace-1.1-7/extlib/litl/m4/libtool.m40000644000175000017500000112617113171135246020513 0ustar00trahaytrahay00000000000000# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 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. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . ]) # serial 58 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_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. 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 ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from 'configure', and 'config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # 'config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain=$ac_aux_dir/ltmain.sh ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the 'libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to 'config.status' so that its # declaration there will have the same value as in 'configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags='_LT_TAGS'dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into 'config.status', and then the shell code to quote escape them in # for loops in 'config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # '#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test 0 = "$lt_write_fail" && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ '$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 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 != $[#] do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try '$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try '$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test yes = "$silent" && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # 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 _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 aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then 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 lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS=$save_LDFLAGS ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -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 lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[[012]][[,.]]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; 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' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test 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\"`' 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 case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], [ if test 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" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script that will find a shell with a builtin # printf (that we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case $ECHO in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [Search for dependent libraries within DIR (or the compiler's sysroot if not specified).])], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([$with_sysroot]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and where our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test no = "$enable_libtool_lock" || 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. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out 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 if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; 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*| \ 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. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) 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" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; 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 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test 0 -eq "$ac_status"; 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 lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test yes = "[$]$2"; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ]) if test yes = "[$]$2"; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n "$lt_cv_sys_max_cmd_len"; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes = "$cross_compiling"; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; 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], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen=dlopen], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) ]) ]) ]) ]) ]) ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links=nottested if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test no = "$hard_links"; then AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", [Define to the sub-directory where libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then # We can hardcode non-existent directories. if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && # 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 # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_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 m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...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 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 test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown 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' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # 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 # 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 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[)]' # 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 shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # 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 ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; 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' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; 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 ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # 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' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; 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*) 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # 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. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no 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' 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' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # 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=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; 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 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 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]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([sys_lib_dlsearch_path_spec], [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_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program that can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$1"; then lt_cv_path_MAGIC_CMD=$ac_dir/"$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac]) MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program that can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test no = "$withval" || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &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 # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # 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. case $host_os in aix[[4-9]]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[[45]]*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # 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'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi]) if test no != "$lt_cv_path_NM"; 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 *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test yes != "$lt_cv_path_mainfest_tool"; 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 AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM=-lm) ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test yes = "$GCC"; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac 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'" # 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'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported 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))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_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 # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; 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 # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test yes = "$GCC"; 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 # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; 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*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; 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) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*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' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to 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. 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' 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' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; 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' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, 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' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; 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' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; 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" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; 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(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in 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(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to 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. 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' 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' 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 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 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 exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' 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 if test yes = "$GCC"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; 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 # 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' else 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' # 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 # 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 else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _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' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-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=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test 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' 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' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; hpux10*) if test 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' 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' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test 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' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS=$save_LDFLAGS]) if test 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' 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' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; 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) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) 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 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' else _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' fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported 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 ;; 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' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test 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' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test 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' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test 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' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' if test 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' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test yes,yes = "$GCC,$enable_shared"; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting $shlibpath_var if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC=$CC AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report what 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 # 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 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 fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC=$lt_save_CC ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; 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 # 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' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # 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 case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done 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 exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' 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 if test yes = "$GXX"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; 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 # 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' else 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' # 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 # 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' # 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 else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _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' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; 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' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-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=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, 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' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _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++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test 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' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test 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' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd* | bitrig*) 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' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; 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_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' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $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' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(GCC, $1)=$GXX _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case @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\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)=$prev$p else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)=$p else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)=$p else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_F77"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && 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 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 fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$G77 _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_F77" AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_FC"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && 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 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 fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_FC" AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # 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'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code=$lt_simple_compile_test_code # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f "$lt_ac_sed" && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test 10 -lt "$lt_ac_count" && break lt_ac_count=`expr $lt_ac_count + 1` if test "$lt_ac_count" -gt "$lt_ac_max"; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine what file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS eztrace-1.1-7/extlib/litl/m4/PaxHeaders.7332/ltoptions.m40000644000000000000000000000013213171135246017702 xustar0030 mtime=1508162214.805455178 30 atime=1508162214.809455468 30 ctime=1508162365.721731666 eztrace-1.1-7/extlib/litl/m4/ltoptions.m40000644000175000017500000003426213171135246021100 0ustar00trahaytrahay00000000000000# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004-2005, 2007-2009, 2011-2015 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 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option '$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl 'shared' nor 'disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the 'shared' and # 'disable-shared' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the 'static' and # 'disable-static' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the 'fast-install' # and 'disable-fast-install' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_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' # LT_INIT options. # MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac], [pic_mode=m4_default([$1], [default])]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) eztrace-1.1-7/extlib/litl/m4/PaxHeaders.7332/ltsugar.m40000644000000000000000000000013213171135246017330 xustar0030 mtime=1508162214.813455758 30 atime=1508162214.821456339 30 ctime=1508162365.721731666 eztrace-1.1-7/extlib/litl/m4/ltsugar.m40000644000175000017500000001044013171135246020516 0ustar00trahaytrahay00000000000000# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59, which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) eztrace-1.1-7/extlib/litl/m4/PaxHeaders.7332/ltversion.m40000644000000000000000000000013113171135246017673 xustar0030 mtime=1508162214.825456629 29 atime=1508162214.82945692 30 ctime=1508162365.721731666 eztrace-1.1-7/extlib/litl/m4/ltversion.m40000644000175000017500000000127313171135246021066 0ustar00trahaytrahay00000000000000# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 4179 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]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.6' macro_revision='2.4.6' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) eztrace-1.1-7/extlib/litl/PaxHeaders.7332/test-driver0000644000000000000000000000013213171135250017253 xustar0030 mtime=1508162216.757597283 30 atime=1508162216.757597283 30 ctime=1508162365.845742484 eztrace-1.1-7/extlib/litl/test-driver0000755000175000017500000001104013171135250020441 0ustar00trahaytrahay00000000000000#! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2013-07-13.22; # UTC # Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <$log_file 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then tweaked_estatus=1 else tweaked_estatus=$estatus fi case $tweaked_estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report the test outcome and exit status in the logs, so that one can # know whether the test passed or failed simply by looking at the '.log' # file, without the need of also peaking into the corresponding '.trs' # file (automake bug#11814). echo "$res $test_name (exit status: $estatus)" >>$log_file # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: eztrace-1.1-7/extlib/litl/PaxHeaders.7332/configure0000644000000000000000000000013213171135250016764 xustar0030 mtime=1508162216.385570158 30 atime=1508162271.337790112 30 ctime=1508162365.717731317 eztrace-1.1-7/extlib/litl/configure0000755000175000017500000155623713171135250020201 0ustar00trahaytrahay00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for litl 0.1.8. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: litl-devel@fusionforge.int-evry.fr about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='litl' PACKAGE_TARNAME='litl' PACKAGE_VERSION='0.1.8' PACKAGE_STRING='litl 0.1.8' PACKAGE_BUGREPORT='litl-devel@fusionforge.int-evry.fr' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS HAVE_DOXYGEN_FALSE HAVE_DOXYGEN_TRUE HAVE_LATEXMK_FALSE HAVE_LATEXMK_TRUE HAVE_PDFLATEX_FALSE HAVE_PDFLATEX_TRUE WITHDOC_FALSE WITHDOC_TRUE DOXYGEN LATEXMK PDFLATEX FORCE_32BIT CLOCK_GETTIME_AVAIL USE_GETTID LIBOBJS SIZEOF_SIZE_T CPP LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBTOOL am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock enable_gettid enable_32bit with_doc ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS LT_SYS_LIBRARY_PATH CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures litl 0.1.8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/litl] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of litl 0.1.8:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-gettid Use syscall(SYS_gettid) to get the thread ID instead of pthread_self(). This however costs a system call for each trace entry --enable-32bit build 32-bit library Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-doc Generate documentation Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory LT_SYS_LIBRARY_PATH User-defined run-time library search path. CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF litl configure 0.1.8 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ------------------------------------------------- ## ## Report this to litl-devel@fusionforge.int-evry.fr ## ## ------------------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_find_uintX_t LINENO BITS VAR # ------------------------------------ # Finds an unsigned integer type with width BITS, setting cache variable VAR # accordingly. ac_fn_c_find_uintX_t () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5 $as_echo_n "checking for uint$2_t... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" # Order is important - never check a type that is potentially smaller # than half of the expected target width. for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \ 'unsigned long long int' 'unsigned short int' 'unsigned char'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : case $ac_type in #( uint$2_t) : eval "$3=yes" ;; #( *) : eval "$3=\$ac_type" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if eval test \"x\$"$3"\" = x"no"; then : else break fi done fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_find_uintX_t # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES # -------------------------------------------- # Tries to find the compile-time value of EXPR in a program that includes # INCLUDES, setting VAR accordingly. Returns whether the value could be # computed ac_fn_c_compute_int () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid; break else as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=$ac_mid; break else as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid else as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; '') ac_retval=1 ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 static long int longval () { return $2; } static unsigned long int ulongval () { return $2; } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (($2) < 0) { long int i = longval (); if (i != ($2)) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ($2)) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : echo >>conftest.val; read $3 config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by litl $as_me 0.1.8, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.15' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='litl' VERSION='0.1.8' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a pax tar archive" >&5 $as_echo_n "checking how to create a pax tar archive... " >&6; } # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_pax-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do { echo "$as_me:$LINENO: $_am_tar --version" >&5 ($_am_tar --version) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && break done am__tar="$_am_tar --format=posix -chf - "'"$$tardir"' am__tar_="$_am_tar --format=posix -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x pax -w "$$tardir"' am__tar_='pax -L -x pax -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H pax -L' am__tar_='find "$tardir" -print | cpio -o -H pax -L' am__untar='cpio -i -H pax -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_pax}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -rf conftest.dir if test -s conftest.tar; then { echo "$as_me:$LINENO: $am__untar &5 ($am__untar &5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 (cat conftest.dir/file) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } grep GrepMe conftest.dir/file >/dev/null 2>&1 && break fi done rm -rf conftest.dir if ${am_cv_prog_tar_pax+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_prog_tar_pax=$_am_tool fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_pax" >&5 $as_echo "$am_cv_prog_tar_pax" >&6; } # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # Checks for programs. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.6' macro_revision='2.4.6' ltmain=$ac_aux_dir/ltmain.sh # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # 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'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n "$lt_cv_sys_max_cmd_len"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # 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. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac 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'" # 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'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported 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))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 $as_echo "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 $as_echo_n "checking for a working dd... " >&6; } if ${ac_cv_path_lt_DD+:} false; then : $as_echo_n "(cached) " >&6 else printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in dd; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue 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 $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 $as_echo "$ac_cv_path_lt_DD" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 $as_echo_n "checking how to truncate binary pipes... " >&6; } if ${lt_cv_truncate_bin+:} false; then : $as_echo_n "(cached) " >&6 else 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" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 $as_echo "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; 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-%%"` } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || 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. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; 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 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then 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*| \ 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. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) 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" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; 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 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # 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 lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[012][,.]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; 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' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # 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$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else pic_mode=default fi # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac else enable_fast_install=yes fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 $as_echo_n "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. if test "${with_aix_soname+set}" = set; then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else if ${lt_cv_with_aix_soname+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 $as_echo "$with_aix_soname" >&6; } 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 # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o func_cc_basename $compiler cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/${ac_tool_prefix}file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-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). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test no = "$hard_links"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $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' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$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' archive_expsym_cmds='$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' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; 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" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; 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 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to 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. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`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' 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 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 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 exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='$wl-f,' 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. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; 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 # 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' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; 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 hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' $wl-bernotok' allow_undefined_flag=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$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. archive_expsym_cmds="$archive_expsym_cmds"'~$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 archive_expsym_cmds="$archive_expsym_cmds"'~$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 archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $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=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi link_all_deplibs=no else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' else archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$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' archive_expsym_cmds='$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' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='$wl-z,text' allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...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 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 test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # 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 # 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 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)' # 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 shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # 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 ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; 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' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; 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 ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # 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' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; 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. hardcode_libdir_flag_spec='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # 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. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos 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' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no 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' 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' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # 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=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # 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' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; 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' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; 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 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 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # 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, )" && test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; 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_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen=shl_load else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen=dlopen else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi fi fi fi fi fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report what library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && 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 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 fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC ac_config_commands="$ac_config_commands libtool" # Only expand once: # Checks for libraries. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ceil in -lm" >&5 $as_echo_n "checking for ceil in -lm... " >&6; } if ${ac_cv_lib_m_ceil+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ceil (); int main () { return ceil (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_m_ceil=yes else ac_cv_lib_m_ceil=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_ceil" >&5 $as_echo "$ac_cv_lib_m_ceil" >&6; } if test "x$ac_cv_lib_m_ceil" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBM 1 _ACEOF LIBS="-lm $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5 $as_echo_n "checking for clock_gettime in -lrt... " >&6; } if ${ac_cv_lib_rt_clock_gettime+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lrt $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char clock_gettime (); int main () { return clock_gettime (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_rt_clock_gettime=yes else ac_cv_lib_rt_clock_gettime=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5 $as_echo "$ac_cv_lib_rt_clock_gettime" >&6; } if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBRT 1 _ACEOF LIBS="-lrt $LIBS" fi # Checks for header files. for ac_header in stdint.h stdlib.h stdio.h string.h math.h time.h sys/stat.h \ unistd.h sys/syscall.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Checks for typedefs, structures, and compiler characteristics. ac_fn_c_find_uintX_t "$LINENO" "8" "ac_cv_c_uint8_t" case $ac_cv_c_uint8_t in #( no|yes) ;; #( *) $as_echo "#define _UINT8_T 1" >>confdefs.h cat >>confdefs.h <<_ACEOF #define uint8_t $ac_cv_c_uint8_t _ACEOF ;; esac ac_fn_c_find_uintX_t "$LINENO" "16" "ac_cv_c_uint16_t" case $ac_cv_c_uint16_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define uint16_t $ac_cv_c_uint16_t _ACEOF ;; esac ac_fn_c_find_uintX_t "$LINENO" "32" "ac_cv_c_uint32_t" case $ac_cv_c_uint32_t in #( no|yes) ;; #( *) $as_echo "#define _UINT32_T 1" >>confdefs.h cat >>confdefs.h <<_ACEOF #define uint32_t $ac_cv_c_uint32_t _ACEOF ;; esac ac_fn_c_find_uintX_t "$LINENO" "64" "ac_cv_c_uint64_t" case $ac_cv_c_uint64_t in #( no|yes) ;; #( *) $as_echo "#define _UINT64_T 1" >>confdefs.h cat >>confdefs.h <<_ACEOF #define uint64_t $ac_cv_c_uint64_t _ACEOF ;; esac # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 $as_echo_n "checking size of size_t... " >&6; } if ${ac_cv_sizeof_size_t+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"; then : else if test "$ac_cv_type_size_t" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (size_t) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_size_t=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 $as_echo "$ac_cv_sizeof_size_t" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_SIZE_T $ac_cv_sizeof_size_t _ACEOF SIZEOF_SIZE_T=$($AWK '/SIZEOF_SIZE_T/{print $3}' confdefs.h) #AC_MSG_ERROR(sizeof size_t: $sizeof_size_t / $SIZEOF_SIZE_T) #AC_SUBST(SIZEOF_SIZE_T) # Checks for library functions. for ac_header in stdlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STDLIB_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 $as_echo_n "checking for GNU libc compatible malloc... " >&6; } if ${ac_cv_func_malloc_0_nonnull+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_malloc_0_nonnull=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *malloc (); #endif int main () { return ! malloc (0); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_malloc_0_nonnull=yes else ac_cv_func_malloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 $as_echo "$ac_cv_func_malloc_0_nonnull" >&6; } if test $ac_cv_func_malloc_0_nonnull = yes; then : $as_echo "#define HAVE_MALLOC 1" >>confdefs.h else $as_echo "#define HAVE_MALLOC 0" >>confdefs.h case " $LIBOBJS " in *" malloc.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS malloc.$ac_objext" ;; esac $as_echo "#define malloc rpl_malloc" >>confdefs.h fi # Check whether --enable-gettid was given. if test "${enable_gettid+set}" = set; then : enableval=$enable_gettid; fi if test "x$enable_gettid" = xyes; then use_gettid=yes fi if test "x$use_gettid" = xyes ; then USE_GETTID=1 else USE_GETTID=0 fi # On many multicore CPUs, clock cycles are not synchronized. Therefore, we # prefer to use clock_gettime() instead of time stamp counter (clock cycles). { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime(CLOCK_REALTIME)" >&5 $as_echo_n "checking for clock_gettime(CLOCK_REALTIME)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include struct timespec tp; int main () { clock_gettime(CLOCK_REALTIME, &tp); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : have_clock_gettime=yes $as_echo "#define CLOCK_GETTIME_AVAIL 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test "x$have_clock_gettime" = xyes ; then CLOCK_GETTIME_AVAIL=1 else CLOCK_GETTIME_AVAIL=0 fi # Check the architecture type case "$host" in x86_64-*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ARCH: X86_64" >&5 $as_echo "$as_me: WARNING: ARCH: X86_64" >&2;} arch_str="X86_64" ;; arm*-*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ARCH: ARM" >&5 $as_echo "$as_me: WARNING: ARCH: ARM" >&2;} arch_str="ARM" ;; i686*-*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ARCH: i686" >&5 $as_echo "$as_me: WARNING: ARCH: i686" >&2;} arch_str="i686" ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unknown architecture: falling back to x86_64" >&5 $as_echo "$as_me: WARNING: unknown architecture: falling back to x86_64" >&2;} ;; esac # Check whether 32-bit library will be built # Check whether --enable-32bit was given. if test "${enable_32bit+set}" = set; then : enableval=$enable_32bit; fi if test "x$enable_32bit" = xyes; then FORCE_32BIT=1 else FORCE_32BIT=0 fi build_doc=no # Check whether --with-doc was given. if test "${with_doc+set}" = set; then : withval=$with_doc; if test x$withval != xno ; then build_doc=yes fi else build_doc=no fi if test "x$build_doc" = "xyes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: Documentation will be generated" >&5 $as_echo "Documentation will be generated" >&6; } # Check for presence of pdfLaTeX # Extract the first word of "pdflatex", so it can be a program name with args. set dummy pdflatex; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_PDFLATEX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$PDFLATEX"; then ac_cv_prog_PDFLATEX="$PDFLATEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_PDFLATEX="pdflatex" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi PDFLATEX=$ac_cv_prog_PDFLATEX if test -n "$PDFLATEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PDFLATEX" >&5 $as_echo "$PDFLATEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$PDFLATEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to create PDF version of the user manual -- pdflatex is missing!" >&5 $as_echo "$as_me: WARNING: Unable to create PDF version of the user manual -- pdflatex is missing!" >&2;} fi # Check for presence of latexmk # Extract the first word of "latexmk", so it can be a program name with args. set dummy latexmk; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LATEXMK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LATEXMK"; then ac_cv_prog_LATEXMK="$LATEXMK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LATEXMK="latexmk" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LATEXMK=$ac_cv_prog_LATEXMK if test -n "$LATEXMK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LATEXMK" >&5 $as_echo "$LATEXMK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$LATEXMK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to create PDF version of the user manual -- latemk is missing!" >&5 $as_echo "$as_me: WARNING: Unable to create PDF version of the user manual -- latemk is missing!" >&2;} fi # Check for presence of doxygen for ac_prog in doxygen do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DOXYGEN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DOXYGEN"; then ac_cv_prog_DOXYGEN="$DOXYGEN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DOXYGEN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DOXYGEN=$ac_cv_prog_DOXYGEN if test -n "$DOXYGEN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5 $as_echo "$DOXYGEN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DOXYGEN" && break done if test -z "$DOXYGEN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Doxygen not found - continuing without Doxygen support" >&5 $as_echo "$as_me: WARNING: Doxygen not found - continuing without Doxygen support" >&2;} fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: Documentation will not be generated" >&5 $as_echo "Documentation will not be generated" >&6; } fi if test "$with_doc" = "yes"; then WITHDOC_TRUE= WITHDOC_FALSE='#' else WITHDOC_TRUE='#' WITHDOC_FALSE= fi if test -n "$PDFLATEX"; then HAVE_PDFLATEX_TRUE= HAVE_PDFLATEX_FALSE='#' else HAVE_PDFLATEX_TRUE='#' HAVE_PDFLATEX_FALSE= fi if test -n "$LATEXMK"; then HAVE_LATEXMK_TRUE= HAVE_LATEXMK_FALSE='#' else HAVE_LATEXMK_TRUE='#' HAVE_LATEXMK_FALSE= fi if test -n "$DOXYGEN"; then HAVE_DOXYGEN_TRUE= HAVE_DOXYGEN_FALSE='#' else HAVE_DOXYGEN_TRUE='#' HAVE_DOXYGEN_FALSE= fi if test -z "$HAVE_DOXYGEN_TRUE"; then : ac_config_files="$ac_config_files doc/Doxyfile" fi ac_config_files="$ac_config_files Makefile litl.pc src/Makefile src/litl_config.h utils/Makefile tests/Makefile doc/Makefile doc/user_manual.tex doc/header.tex" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WITHDOC_TRUE}" && test -z "${WITHDOC_FALSE}"; then as_fn_error $? "conditional \"WITHDOC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_PDFLATEX_TRUE}" && test -z "${HAVE_PDFLATEX_FALSE}"; then as_fn_error $? "conditional \"HAVE_PDFLATEX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LATEXMK_TRUE}" && test -z "${HAVE_LATEXMK_FALSE}"; then as_fn_error $? "conditional \"HAVE_LATEXMK\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_DOXYGEN_TRUE}" && test -z "${HAVE_DOXYGEN_FALSE}"; then as_fn_error $? "conditional \"HAVE_DOXYGEN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by litl $as_me 0.1.8, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ litl config.status 0.1.8 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path; 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=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "doc/Doxyfile") CONFIG_FILES="$CONFIG_FILES doc/Doxyfile" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "litl.pc") CONFIG_FILES="$CONFIG_FILES litl.pc" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/litl_config.h") CONFIG_FILES="$CONFIG_FILES src/litl_config.h" ;; "utils/Makefile") CONFIG_FILES="$CONFIG_FILES utils/Makefile" ;; "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "doc/user_manual.tex") CONFIG_FILES="$CONFIG_FILES doc/user_manual.tex" ;; "doc/header.tex") CONFIG_FILES="$CONFIG_FILES doc/header.tex" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # 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 # 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. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # The names of the tagged configurations supported by this script. available_tags='' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # 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$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; 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-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi eztrace-1.1-7/extlib/litl/PaxHeaders.7332/COPYING0000644000000000000000000000013212426414022016112 xustar0030 mtime=1415190546.310452975 30 atime=1507797544.006894769 30 ctime=1508162365.733732713 eztrace-1.1-7/extlib/litl/COPYING0000644000175000017500000000242212426414022017301 0ustar00trahaytrahay00000000000000Copyright (c) 2013, Tlcom SudParis All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. eztrace-1.1-7/extlib/litl/PaxHeaders.7332/ChangeLog0000644000000000000000000000013212426414022016631 xustar0030 mtime=1415190546.310452975 30 atime=1507797544.006894769 30 ctime=1508162365.737733062 eztrace-1.1-7/extlib/litl/ChangeLog0000644000175000017500000000067112426414022020024 0ustar00trahaytrahay00000000000000Version 0.1 ---------- * The first release supports: * Recording events only on the user level; * Recording events with up to 10 parameters; * Recording events when parameters are saved as a string, e.g. for error msgs; * Thread-safety through pthread_mutex; * Analyzing the trace (evnt_read); * Testing libevnt through testing recording and analyzing; * The choice of the optimal buffer size for both recording and analyzing events. eztrace-1.1-7/extlib/litl/PaxHeaders.7332/ltmain.sh0000644000000000000000000000013213171135246016705 xustar0030 mtime=1508162214.773452855 30 atime=1508162273.773985742 30 ctime=1508162365.745733759 eztrace-1.1-7/extlib/litl/ltmain.sh0000644000175000017500000117147413171135246020113 0ustar00trahaytrahay00000000000000#! /bin/sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2014-01-03.01 # libtool (GNU libtool) 2.4.6 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . PROGRAM=libtool PACKAGE=libtool VERSION="2.4.6 Debian-2.4.6-2" package_revision=2.4.6 ## ------ ## ## Usage. ## ## ------ ## # Run './libtool --help' for help with using this script from the # command line. ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # After configure completes, it has a better idea of some of the # shell tools we need than the defaults used by the functions shared # with bootstrap, so set those here where they can still be over- # ridden by the user, but otherwise take precedence. : ${AUTOCONF="autoconf"} : ${AUTOMAKE="automake"} ## -------------------------- ## ## Source external libraries. ## ## -------------------------- ## # Much of our low-level functionality needs to be sourced from external # libraries, which are installed to $pkgauxdir. # Set a version string for this script. scriptversion=2015-01-20.17; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # Copyright (C) 2004-2015 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. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 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. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNES 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 . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some retarded systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo 'GREP' >> conftest.nl "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s|\([`"$\\]\)|\\\1|g' # Same as above, but do not quote variable references. sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' # Sed substitution that converts a w32 file name or path # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_double_quote_subst, that '$' was protected from # expansion. Since each input '\' is now two '\'s, look for any number # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath=$0 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # We should try to minimise forks, especially on Windows where they are # unreasonably slow, so skip the feature probes when bash or zsh are # being used: if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then : ${_G_HAVE_ARITH_OP="yes"} : ${_G_HAVE_XSI_OPS="yes"} # The += operator was introduced in bash 3.1 case $BASH_VERSION in [12].* | 3.0 | 3.0*) ;; *) : ${_G_HAVE_PLUSEQ_OP="yes"} ;; esac fi # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. test -z "$_G_HAVE_PLUSEQ_OP" \ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ && _G_HAVE_PLUSEQ_OP=yes if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1+=\\ \$func_quote_for_eval_result" }' else func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1=\$$1\\ \$func_quote_for_eval_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT # -------------------------------------------------------- # Perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_mkdir_p_IFS # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # func_normal_abspath PATH # ------------------------ # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` while :; do # Processed it all yet? if test / = "$func_normal_abspath_tpath"; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result"; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=$func_dirname_result if test -z "$func_relative_path_tlibdir"; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_for_eval ARG... # -------------------------- # Aesthetically quote ARGs to be evaled later. # This function returns two values: # i) func_quote_for_eval_result # double-quoted, suitable for a subsequent eval # ii) func_quote_for_eval_unquoted_result # has all characters that are still active within double # quotes backslashified. func_quote_for_eval () { $debug_cmd func_quote_for_eval_unquoted_result= func_quote_for_eval_result= while test 0 -lt $#; do case $1 in *[\\\`\"\$]*) _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; *) _G_unquoted_arg=$1 ;; esac if test -n "$func_quote_for_eval_unquoted_result"; then func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" else func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" fi case $_G_unquoted_arg in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_quoted_arg=\"$_G_unquoted_arg\" ;; *) _G_quoted_arg=$_G_unquoted_arg ;; esac if test -n "$func_quote_for_eval_result"; then func_append func_quote_for_eval_result " $_G_quoted_arg" else func_append func_quote_for_eval_result "$_G_quoted_arg" fi shift done } # func_quote_for_expand ARG # ------------------------- # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { $debug_cmd case $1 in *[\\\`\"]*) _G_arg=`$ECHO "$1" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; *) _G_arg=$1 ;; esac case $_G_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_arg=\"$_G_arg\" ;; esac func_quote_for_expand_result=$_G_arg } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_for_expand "$_G_cmd" eval "func_notquiet $func_quote_for_expand_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_for_expand "$_G_cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_tr_sh # ---------- # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: #! /bin/sh # Set a version string for this script. scriptversion=2014-01-07.03; # UTC # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # Copyright (C) 2010-2015 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. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# warranty; '. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # to the main code. A hook is just a named list of of function, that can # be run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of functions called by FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It is assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook funcions.n" ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do eval $_G_hook '"$@"' # store returned options list back into positional # parameters for next 'cmd' execution. eval _G_hook_result=\$${_G_hook}_result eval set dummy "$_G_hook_result"; shift done func_quote_for_eval ${1+"$@"} func_run_hooks_result=$func_quote_for_eval_result } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list in your hook function, remove any # options that you action, and then pass back the remaining unprocessed # options in '_result', escaped suitably for # 'eval'. Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # func_quote_for_eval ${1+"$@"} # my_options_prep_result=$func_quote_for_eval_result # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # # Note that for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # ;; # *) set dummy "$_G_opt" "$*"; shift; break ;; # esac # done # # func_quote_for_eval ${1+"$@"} # my_silent_option_result=$func_quote_for_eval_result # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # # func_quote_for_eval ${1+"$@"} # my_option_validation_result=$func_quote_for_eval_result # } # func_add_hook func_validate_options my_option_validation # # You'll alse need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd func_options_prep ${1+"$@"} eval func_parse_options \ ${func_options_prep_result+"$func_options_prep_result"} eval func_validate_options \ ${func_parse_options_result+"$func_parse_options_result"} eval func_run_hooks func_options \ ${func_validate_options_result+"$func_validate_options_result"} # save modified positional parameters for caller func_options_result=$func_run_hooks_result } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propogate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before # returning. func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= func_run_hooks func_options_prep ${1+"$@"} # save modified positional parameters for caller func_options_prep_result=$func_run_hooks_result } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd func_parse_options_result= # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. func_run_hooks func_parse_options ${1+"$@"} # Adjust func_parse_options positional parameters to match eval set dummy "$func_run_hooks_result"; shift # Break out of the loop if we already parsed every option. test $# -gt 0 || break _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) test $# = 0 && func_missing_arg $_G_opt && break case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} func_parse_options_result=$func_quote_for_eval_result } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" func_run_hooks func_validate_options ${1+"$@"} # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE # save modified positional parameters for caller func_validate_options_result=$func_run_hooks_result } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables after # splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} test "x$func_split_equals_lhs" = "x$1" \ && func_split_equals_rhs= }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # func_split_short_opt SHORTOPT # ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /(C)/!b go :more /\./!{ N s|\n# | | b more } :go /^# Written by /,/# warranty; / { s|^# || s|^# *$|| s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| p } /^# Written by / { s|^# || p } /^warranty; /q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. scriptversion='(GNU libtool) 2.4.6' # func_echo ARG... # ---------------- # Libtool also displays the current mode in messages, so override # funclib.sh func_echo with this custom definition. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" done IFS=$func_echo_IFS } # func_warning ARG... # ------------------- # Libtool warnings are not categorized, so override funclib.sh # func_warning with this simpler definition. func_warning () { $debug_cmd $warning_func ${1+"$@"} } ## ---------------- ## ## Options parsing. ## ## ---------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --mode=MODE use operation mode MODE --no-warnings equivalent to '-Wnone' --preserve-dup-deps don't remove duplicate dependency libraries --quiet, --silent don't print informational messages --tag=TAG use configuration variables from tag TAG -v, --verbose print more informational messages than default --version print version information -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. When passed as first option, '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. Try '$progname --help --mode=MODE' for a more detailed description of MODE. When reporting a bug, please describe a test case to reproduce it and include the following information: host-triplet: $host shell: $SHELL compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) version: $progname $scriptversion Debian-2.4.6-2 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . GNU libtool home page: . General help using GNU software: ." exit 0 } # func_lo2o OBJECT-NAME # --------------------- # Transform OBJECT-NAME from a '.lo' suffix to the platform specific # object suffix. lo2o=s/\\.lo\$/.$objext/ o2lo=s/\\.$objext\$/.lo/ if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_lo2o () { case $1 in *.lo) func_lo2o_result=${1%.lo}.$objext ;; * ) func_lo2o_result=$1 ;; esac }' # func_xform LIBOBJ-OR-SOURCE # --------------------------- # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) # suffix to a '.lo' libtool-object suffix. eval 'func_xform () { func_xform_result=${1%.*}.lo }' else # ...otherwise fall back to using sed. func_lo2o () { func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` } func_xform () { func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` } fi # func_fatal_configuration ARG... # ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func__fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } # func_config # ----------- # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # ------------- # Display the features supported by this script. func_features () { echo "host: $host" if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag TAGNAME # ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname=$1 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf=/$re_begincf/,/$re_endcf/p # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # libtool_options_prep [ARG]... # ----------------------------- # Preparation for options parsed by libtool. libtool_options_prep () { $debug_mode # Option defaults: opt_config=false opt_dlopen= opt_dry_run=false opt_help=false opt_mode= opt_preserve_dup_deps=false opt_quiet=false nonopt= preserve_args= # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Pass back the list of options. func_quote_for_eval ${1+"$@"} libtool_options_prep_result=$func_quote_for_eval_result } func_add_hook func_options_prep libtool_options_prep # libtool_parse_options [ARG]... # --------------------------------- # Provide handling for libtool specific options. libtool_parse_options () { $debug_cmd # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) func_config ;; --dlopen|-dlopen) opt_dlopen="${opt_dlopen+$opt_dlopen }$1" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) func_features ;; --finish) set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $_G_opt && break opt_mode=$1 case $1 in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $_G_opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" ;; --no-warnings|--no-warning|--no-warn) opt_warning=false func_append preserve_args " $_G_opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $_G_opt" ;; --silent|--quiet) opt_quiet=: opt_verbose=false func_append preserve_args " $_G_opt" ;; --tag) test $# = 0 && func_missing_arg $_G_opt && break opt_tag=$1 func_append preserve_args " $_G_opt $1" func_enable_tag "$1" shift ;; --verbose|-v) opt_quiet=false opt_verbose=: func_append preserve_args " $_G_opt" ;; # An option not handled by this hook function: *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} libtool_parse_options_result=$func_quote_for_eval_result } func_add_hook func_parse_options libtool_parse_options # libtool_validate_options [ARG]... # --------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. libtool_validate_options () { # save first non-option argument if test 0 -lt $#; then nonopt=$1 shift fi # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" case $host in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match test yes != "$build_libtool_libs" \ && test yes != "$build_old_libs" \ && func_fatal_configuration "not configured to build any kind of library" # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test execute != "$opt_mode"; then func_error "unrecognized option '-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help=$help help="Try '$progname --help --mode=$opt_mode' for more information." } # Pass back the unparsed argument list func_quote_for_eval ${1+"$@"} libtool_validate_options_result=$func_quote_for_eval_result } func_add_hook func_validate_options libtool_validate_options # Process options as early as possible so that --help and --version # can return quickly. func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## ----------- ## ## Main. ## ## ----------- ## magic='%%%MAGIC variable%%%' magic_exe='%%%MAGIC EXE variable%%%' # Global variables. extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # func_generated_by_libtool # True iff stdin has been generated by Libtool. This function is only # a basic sanity check; it will hardly flush out determined imposters. func_generated_by_libtool_p () { $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test yes = "$lalib_p" } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { test -f "$1" && $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $debug_cmd save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # 'FILE.' does not work on cygwin managed mounts. func_source () { $debug_cmd case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $debug_cmd if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=$1 if test yes = "$build_libtool_libs"; then write_lobj=\'$2\' else write_lobj=none fi if test yes = "$build_old_libs"; then write_oldobj=\'$3\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $debug_cmd # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $debug_cmd if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $debug_cmd # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $debug_cmd if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result=$1 fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $debug_cmd if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result=$3 fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $debug_cmd case $4 in $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $debug_cmd $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $debug_cmd case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result=$1 } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $debug_cmd if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd=func_convert_path_$func_stripname_result fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $debug_cmd func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result=$1 } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_dll_def_p FILE # True iff FILE is a Windows DLL '.def' file. # Keep in sync with _LT_DLL_DEF_P in libtool.m4 func_dll_def_p () { $debug_cmd func_dll_def_p_tmp=`$SED -n \ -e 's/^[ ]*//' \ -e '/^\(;.*\)*$/d' \ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ -e q \ "$1"` test DEF = "$func_dll_def_p_tmp" } # func_mode_compile arg... func_mode_compile () { $debug_cmd # Get the compilation command and the source file. base_compile= srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg=$arg arg_mode=normal ;; target ) libobj=$arg arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs=$IFS; IFS=, for arg in $args; do IFS=$save_ifs func_append_quoted lastarg "$arg" done IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg=$srcfile srcfile=$arg ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj=$func_basename_result } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test yes = "$build_libtool_libs" \ || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname=$func_basename_result xdir=$func_dirname_result lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test no = "$compiler_c_o"; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext lockfile=$output_obj.lock else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test yes = "$build_old_libs"; then if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix '.c' with the library object suffix, '.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the '--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE use a list of object files found in FILE to specify objects -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with '-') are ignored. Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in '.la', then a libtool library is created, only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created using 'ar' and 'ranlib', or on Windows using 'lib'. If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test : = "$opt_help"; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | $SED '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $debug_cmd # The first argument is the command name. cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "'$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir=$func_dirname_result ;; *) func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file=$progdir/$program fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if $opt_dry_run; then # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd=\$cmd$args fi } test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $debug_cmd libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "'$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument '$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $debug_cmd # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=false stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=: if $isdir; then destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." destdir=$func_dirname_result destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking '$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname=$1 shift srcname=$realname test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme=$stripme case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= ;; esac ;; os2*) case $realname in *_dll.a) tstripme= ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name=$func_basename_result instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest=$destfile destfile= ;; *) func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=.exe fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script '$wrapper'" finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then func_warning "'$lib' has not been installed in '$libdir'" finalize=false fi done relink_command= func_source "$wrapper" outputname= if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file=$func_basename_result outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file=$outputname else func_warning "cannot relink '$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name=$func_basename_result # Set up the ranlib parameters. oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $debug_cmd my_outputname=$1 my_originator=$2 my_pic_p=${3-false} my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* External symbol declarations for the compiler. */\ " if test yes = "$dlself"; then func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" name=$func_basename_result case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi func_show_eval '$RM "${nlist}I"' if test -n "$global_symbol_to_import"; then eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[];\ " if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ static void lt_syminit(void) { LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; for (; symbol->name; ++symbol) {" $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" echo >> "$output_objdir/$my_dlsyms" "\ } }" fi echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = { {\"$my_originator\", (void *) 0}," if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ {\"@INIT@\", (void *) <_syminit}," fi case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $debug_cmd win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || func_cygming_gnu_implib_p "$1" then win32_nmres=import else win32_nmres= fi ;; *) func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s|.*|import| p q } }'` ;; esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $debug_cmd sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $debug_cmd match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive that possess that section. Heuristic: eliminate # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $debug_cmd if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result= fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $debug_cmd f_ex_an_ar_dir=$1; shift f_ex_an_ar_oldlib=$1 if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $debug_cmd my_gentop=$1; shift my_oldlibs=${1+"$@"} my_oldobjs= my_xlib= my_xabs= my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` func_basename "$darwin_archive" darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches; do func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" cd "unfat-$$/$darwin_base_archive-$darwin_arch" func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result=$my_oldobjs } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ #if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC #elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined other platforms ... */ #endif #if defined PATH_MAX # define LT_PATHMAX PATH_MAX #elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free (stale); stale = 0; } \ } while (0) #if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; size_t tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined HAVE_DOS_BASED_FILE_SYSTEM if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined HAVE_DOS_BASED_FILE_SYSTEM } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = (size_t) (q - p); p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (STREQ (str, pat)) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else size_t len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { size_t orig_value_len = strlen (orig_value); size_t add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ size_t len = strlen (new_value); while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $debug_cmd case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_suncc_cstd_abi # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! # Several compiler flags select an ABI that is incompatible with the # Cstd library. Avoid specifying it if any are in CXXFLAGS. func_suncc_cstd_abi () { $debug_cmd case " $compile_command " in *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) suncc_use_cstd_abi=no ;; *) suncc_use_cstd_abi=yes ;; esac } # func_mode_link arg... func_mode_link () { $debug_cmd case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=false prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test yes != "$build_libtool_libs" \ && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg=$1 shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir=$arg prev= continue ;; dlfiles|dlprefiles) $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=: } case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test no = "$dlself"; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test dlprefiles = "$prev"; then dlself=yes elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols=$arg test -f "$arg" \ || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex=$arg prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir=$arg prev= continue ;; mllvm) # Clang does not use LLVM to link, so we can simply discard any # '-mllvm $arg' options when doing the link step. prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object fi # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; os2dllname) os2dllname=$arg prev= continue ;; precious_regex) precious_files_regex=$arg prev= continue ;; release) release=-$arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds=$arg prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg=$arg case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between '-L' and '$1'" else func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of '$dir'" dir=$absdir ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test X-lc = "X$arg" && continue ;; esac elif test X-lc_r = "X$arg"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -mllvm) prev=mllvm continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module=$wl-multi_module continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "'-no-install' is ignored for $host" func_warning "assuming '-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -os2dllname) prev=os2dllname continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization # -specs=* GCC specs files # -stdlib=* select c++ std lib with clang # -fsanitize=* Clang/GCC memory and address sanitizer -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ -specs=*|-fsanitize=*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; -Z*) if test os2 = "`expr $host : '.*\(os2\)'`"; then # OS/2 uses -Zxxx to specify OS/2-specific options compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case $arg in -Zlinker | -Zstack) prev=xcompiler ;; esac continue else # Otherwise treat like 'Some other compiler flag' below func_quote_for_eval "$arg" arg=$func_quote_for_eval_result fi ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result test none = "$pic_object" || { # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object } # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test dlfiles = "$prev"; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test dlprefiles = "$prev"; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the '$prevarg' option requires an argument" if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname=$func_basename_result libobjs_save=$libobjs if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" # Definition is injected by LT_CONFIG during libtool generation. func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" func_dirname "$output" "/" "" output_objdir=$func_dirname_result$objdir func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test lib = "$linkmode"; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=false newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test lib,link = "$linkmode,$pass"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs=$tmp_deplibs fi if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass"; then libs=$deplibs deplibs= fi if test prog = "$linkmode"; then case $pass in dlopen) libs=$dlfiles ;; dlpreopen) libs=$dlprefiles ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test lib,dlpreopen = "$linkmode,$pass"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs=$dlprefiles fi if test dlopen = "$pass"; then # Collect dlpreopened libraries save_deplibs=$deplibs deplibs= fi for deplib in $libs; do lib= found=false case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test lib != "$linkmode" && test prog != "$linkmode"; then func_warning "'-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test lib = "$linkmode"; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib=$searchdir/lib$name$search_ext if test -f "$lib"; then if test .la = "$search_ext"; then found=: else found=false fi break 2 fi done done if $found; then # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll=$l done if test "X$ll" = "X$old_library"; then # only static version available found=false func_dirname "$lib" "" "." ladir=$func_dirname_result lib=$ladir/$old_library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi else # deplib doesn't seem to be a libtool library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l *.ltframework) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test conv = "$pass" && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi if test scan = "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "'-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test link = "$pass"; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=false case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=: fi ;; pass_all) valid_a_lib=: ;; esac if $valid_a_lib; then echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" else echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." fi ;; esac continue ;; prog) if test link != "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test conv = "$pass"; then deplibs="$deplib $deplibs" elif test prog = "$linkmode"; then if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=: continue ;; esac # case $deplib $found || test -f "$lib" \ || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "'$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir=$func_dirname_result dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass" || { test prog != "$linkmode" && test lib != "$linkmode"; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test conv = "$pass"; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for '$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done elif test prog != "$linkmode" && test lib != "$linkmode"; then func_fatal_error "'$lib' is not a convenience library" fi continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test yes = "$prefer_static_libs" || test built,no = "$prefer_static_libs,$installed"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib=$l done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for '$lib'" fi # This library was specified with -dlopen. if test dlopen = "$pass"; then test -z "$libdir" \ && func_fatal_error "cannot -dlopen a convenience library: '$lib'" if test -z "$dlname" || test yes != "$dlopen_support" || test no = "$build_libtool_libs" then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of '$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir=$ladir fi ;; esac func_basename "$lib" laname=$func_basename_result # Find the relevant object directory and library name. if test yes = "$installed"; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library '$lib' was moved." dir=$ladir absdir=$abs_ladir libdir=$abs_ladir else dir=$lt_sysroot$libdir absdir=$lt_sysroot$libdir fi test yes = "$hardcode_automatic" && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir=$ladir absdir=$abs_ladir # Remove this search path later func_append notinst_path " $abs_ladir" else dir=$ladir/$objdir absdir=$abs_ladir/$objdir # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test dlpreopen = "$pass"; then if test -z "$libdir" && test prog = "$linkmode"; then func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" fi case $host in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test lib = "$linkmode"; then deplibs="$dir/$old_library $deplibs" elif test prog,link = "$linkmode,$pass"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test prog = "$linkmode" && test link != "$pass"; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=false if test no != "$link_all_deplibs" || test -z "$library_names" || test no = "$build_libtool_libs"; then linkalldeplibs=: fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if $linkalldeplibs; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test prog,link = "$linkmode,$pass"; then if test -n "$library_names" && { { test no = "$prefer_static_libs" || test built,yes = "$prefer_static_libs,$installed"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then # Make sure the rpath contains only unique directories. case $temp_rpath: in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if $alldeplibs && { test pass_all = "$deplibs_check_method" || { test yes = "$build_libtool_libs" && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test built = "$use_static_libs" && test yes = "$installed"; then use_static_libs=no fi if test -n "$library_names" && { test no = "$use_static_libs" || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc* | *os2*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test no = "$installed"; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule= for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule=$dlpremoduletest break fi done if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then echo if test prog = "$linkmode"; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test lib = "$linkmode" && test yes = "$hardcode_into_libs"; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname=$1 shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname=$dlname elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc* | *os2*) func_arith $current - $age major=$func_arith_result versuffix=-$major ;; esac eval soname=\"$soname_spec\" else soname=$realname fi # Make a new name for the extract_expsyms_cmds to use soroot=$soname func_basename "$soroot" soname=$func_basename_result func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from '$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for '$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test prog = "$linkmode" || test relink != "$opt_mode"; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test no = "$hardcode_direct"; then add=$dir/$linklib case $host in *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; *-*-sysv4*uw2*) add_dir=-L$dir ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir=-L$dir ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we cannot # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library"; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add=$dir/$old_library fi elif test -n "$old_library"; then add=$dir/$old_library fi fi esac elif test no = "$hardcode_minus_L"; then case $host in *-*-sunos*) add_shlibpath=$dir ;; esac add_dir=-L$dir add=-l$name elif test no = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; relink) if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$dir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$absdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name elif test yes = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; *) lib_linked=no ;; esac if test yes != "$lib_linked"; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test prog = "$linkmode"; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test yes != "$hardcode_direct" && test yes != "$hardcode_minus_L" && test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test prog = "$linkmode" || test relink = "$opt_mode"; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$libdir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$libdir add=-l$name elif test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add=-l$name elif test yes = "$hardcode_automatic"; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib"; then add=$inst_prefix_dir$libdir/$linklib else add=$libdir/$linklib fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir=-L$libdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name fi if test prog = "$linkmode"; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test prog = "$linkmode"; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test unsupported != "$hardcode_direct"; then test -n "$old_library" && linklib=$old_library compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test yes = "$build_libtool_libs"; then # Not a shared library if test pass_all != "$deplibs_check_method"; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system cannot link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test yes = "$module"; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test lib = "$linkmode"; then if test -n "$dependency_libs" && { test yes != "$hardcode_into_libs" || test yes = "$build_old_libs" || test yes = "$link_static"; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs=$temp_deplibs fi func_append newlib_search_path " $absdir" # Link against this library test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test no != "$link_all_deplibs"; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path=$deplib ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of '$dir'" absdir=$dir fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names"; then for tmp in $deplibrary_names; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl"; then depdepl=$absdir/$objdir/$depdepl darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" path= fi fi ;; *) path=-L$absdir/$objdir ;; esac else eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "'$deplib' seems to be moved" path=-L$absdir fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test link = "$pass"; then if test prog = "$linkmode"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs=$newdependency_libs if test dlpreopen = "$pass"; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test dlopen != "$pass"; then test conv = "$pass" || { # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= } if test prog,link = "$linkmode,$pass"; then vars="compile_deplibs finalize_deplibs" else vars=deplibs fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Add Sun CC postdeps if required: test CXX = "$tagname" && { case $host_os in linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; solaris*) func_cc_basename "$CC" case $func_cc_basename_result in CC* | sunCC*) func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; esac } # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i= ;; esac if test -n "$i"; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test prog = "$linkmode"; then dlfiles=$newdlfiles fi if test prog = "$linkmode" || test lib = "$linkmode"; then dlprefiles=$newdlprefiles fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "'-R' is ignored for archives" test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "'-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "'-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs=$output func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form 'libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test no = "$module" \ && func_fatal_help "libtool library '$output' must begin with 'lib'" if test no != "$need_lib_prefix"; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test pass_all != "$deplibs_check_method"; then func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test no = "$dlself" \ || func_warning "'-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test 1 -lt "$#" \ && func_warning "ignoring multiple '-rpath's for a libtool library" install_libdir=$1 oldlibs= if test -z "$rpath"; then if test yes = "$build_libtool_libs"; then # Building a libtool convenience library. # Some compilers have problems with a '.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "'-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs=$IFS; IFS=: set dummy $vinfo 0 0 0 shift IFS=$save_ifs test -n "$7" && \ func_fatal_help "too many parameters to '-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major=$1 number_minor=$2 number_revision=$3 # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # that has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|freebsd-elf|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_revision ;; freebsd-aout|qnx|sunos) current=$number_major revision=$number_minor age=0 ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_minor lt_irix_increment=no ;; *) func_fatal_configuration "$modename: unknown library version type '$version_type'" ;; esac ;; no) current=$1 revision=$2 age=$3 ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT '$current' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION '$revision' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE '$age' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE '$age' is greater than the current interface number '$current'" func_fatal_error "'$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" # On Darwin other compilers case $CC in nagfor*) verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" ;; *) verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; esac ;; freebsd-aout) major=.$current versuffix=.$current.$revision ;; freebsd-elf) func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; irix | nonstopux) if test no = "$lt_irix_increment"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring=$verstring_prefix$major.$revision # Add in all the interfaces that we are compatible with. loop=$revision while test 0 -ne "$loop"; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring_prefix$major.$iface:$verstring done # Before this point, $major must not contain '.'. major=.$major versuffix=$major.$revision ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=.$current.$age.$revision verstring=$current.$age.$revision # Add in all the interfaces that we are compatible with. loop=$age while test 0 -ne "$loop"; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring:$iface.0 done # Make executables depend on our current version. func_append verstring ":$current.0" ;; qnx) major=.$current versuffix=.$current ;; sco) major=.$current versuffix=.$current ;; sunos) major=.$current versuffix=.$current.$revision ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 file systems. func_arith $current - $age major=$func_arith_result versuffix=-$major ;; *) func_fatal_configuration "unknown library version type '$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring=0.0 ;; esac if test no = "$need_version"; then versuffix= else versuffix=.0.0 fi fi # Remove version info from name if versioning should be avoided if test yes,no = "$avoid_version,$need_version"; then major= versuffix= verstring= fi # Check to see if the archive will have undefined symbols. if test yes = "$allow_undefined"; then if test unsupported = "$allow_undefined_flag"; then if test yes = "$build_old_libs"; then func_warning "undefined symbols not allowed in $host shared libraries; building static only" build_libtool_libs=no else func_fatal_error "can't build $host shared library unless -no-undefined is specified" fi fi else # Don't allow undefined symbols. allow_undefined_flag=$no_undefined_flag fi fi func_generate_dlsyms "$libname" "$libname" : func_append libobjs " $symfileobj" test " " = "$libobjs" && libobjs= if test relink != "$opt_mode"; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) if test -n "$precious_files_regex"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles=$dlfiles dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles=$dlprefiles dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test yes = "$build_libtool_libs"; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test yes = "$build_libtool_need_lc"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release= versuffix= major= newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib=$potent_lib while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | $SED 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib= ;; esac fi if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib=$potent_lib # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs= tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test yes = "$allow_libtool_libs_with_static_runtimes"; then for i in $predeps $postdeps; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test none = "$deplibs_check_method"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test yes = "$droppeddeps"; then if test yes = "$module"; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test no = "$allow_undefined"; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs=$new_libs # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test yes = "$build_libtool_libs"; then # Remove $wl instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test yes = "$hardcode_into_libs"; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath=$finalize_rpath test relink = "$opt_mode" || rpath=$compile_rpath$rpath for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath=$finalize_shlibpath test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname=$1 shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname=$realname fi if test -z "$dlname"; then dlname=$soname fi lib=$output_objdir/$realname linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols=$output_objdir/$libname.uexp func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile func_dll_def_p "$export_symbols" || { # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols=$export_symbols export_symbols= always_export_symbols=yes } fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs=$IFS; IFS='~' for cmd1 in $cmds; do IFS=$save_ifs # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test yes = "$try_normal_branch" \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=$output_objdir/$output_la.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS=$save_ifs if test -n "$export_symbols_regex" && test : != "$skipped_export"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test : != "$skipped_export" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs=$tmp_deplibs if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test yes = "$compiler_needs_object" && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test : != "$skipped_export" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then output=$output_objdir/$output_la.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then output=$output_objdir/$output_la.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test yes = "$compiler_needs_object"; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-$k.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test -z "$objlist" || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test 1 -eq "$k"; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-$k.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-$k.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi ${skipped_export-false} && { func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi } test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs=$IFS; IFS='~' for cmd in $concat_cmds; do IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi ${skipped_export-false} && { if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi } libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs=$IFS; IFS='~' for cmd in $cmds; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs # Restore the uninstalled library and exit if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test yes = "$module" || test yes = "$export_dynamic"; then # On all known operating systems, these are identical. dlname=$soname fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "'-R' is ignored for objects" test -n "$vinfo" && \ func_warning "'-version-info' is ignored for objects" test -n "$release" && \ func_warning "'-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object '$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj=$output ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # if reload_cmds runs $LD directly, get rid of -Wl from # whole_archive_flag_spec and hope we can get by with turning comma # into space. case $reload_cmds in *\$LD[\ \$]*) wl= ;; esac if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags else gentop=$output_objdir/${obj}x func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test yes = "$build_libtool_libs" || libobjs=$non_pic_objects # Create the old-style object. reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs output=$obj func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi test yes = "$build_libtool_libs" || { if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS } if test -n "$pic_flag" || test default != "$pic_mode"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output=$libobj func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "'-version-info' is ignored for programs" test -n "$release" && \ func_warning "'-release' is ignored for programs" $preload \ && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test CXX = "$tagname"; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " $wl-bind_at_load" func_append finalize_command " $wl-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs=$new_libs func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath=$rpath rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath=$rpath if test -n "$libobjs" && test yes = "$build_old_libs"; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" false # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=: case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=false ;; *cygwin* | *mingw* ) test yes = "$build_libtool_libs" || wrappers_required=false ;; *) if test no = "$need_relink" || test yes != "$build_libtool_libs"; then wrappers_required=false fi ;; esac $wrappers_required || { # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command=$compile_command$compile_rpath # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.$objext"; then func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' fi exit $exit_status } if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test yes = "$no_install"; then # We don't need to create a wrapper script. link_command=$compile_var$compile_command$compile_rpath # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi case $hardcode_action,$fast_install in relink,*) # Fast installation is not supported link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath func_warning "this platform does not like uninstalled shared libraries" func_warning "'$output' will be relinked during installation" ;; *,yes) link_command=$finalize_var$compile_command$finalize_rpath relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` ;; *,no) link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath ;; *,needless) link_command=$finalize_var$compile_command$finalize_rpath relink_command= ;; esac # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource=$output_path/$objdir/lt-$output_name.c cwrapper=$output_path/$output_name.exe $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host"; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do case $build_libtool_libs in convenience) oldobjs="$libobjs_save $symfileobj" addlibs=$convenience build_libtool_libs=no ;; module) oldobjs=$libobjs_save addlibs=$old_convenience build_libtool_libs=no ;; *) oldobjs="$old_deplibs $non_pic_objects" $preload && test -f "$symfileobj" \ && func_append oldobjs " $symfileobj" addlibs=$old_convenience ;; esac if test -n "$addlibs"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase=$func_basename_result case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj"; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test -z "$oldobjs"; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test yes = "$build_old_libs" && old_library=$libname.$libext func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test yes = "$hardcode_automatic"; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test yes = "$installed"; then if test -z "$install_libdir"; then break fi output=$output_objdir/${outputname}i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name=$func_basename_result func_resolve_sysroot "$deplib" eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs=$newdependency_libs newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles=$newdlprefiles else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles=$newdlprefiles fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test -n "$bindir"; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result/$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that cannot go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test no,yes = "$installed,$need_relink"; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } if test link = "$opt_mode" || test relink = "$opt_mode"; then func_mode_link ${1+"$@"} fi # func_mode_uninstall arg... func_mode_uninstall () { $debug_cmd RM=$nonopt files= rmforce=false exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic for arg do case $arg in -f) func_append RM " $arg"; rmforce=: ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir=$func_dirname_result if test . = "$dir"; then odir=$objdir else odir=$dir/$objdir fi func_basename "$file" name=$func_basename_result test uninstall = "$opt_mode" && odir=$dir # Remember odir for removal later, being careful to avoid duplicates if test clean = "$opt_mode"; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif $rmforce; then continue fi rmfiles=$file case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case $opt_mode in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test none != "$pic_object"; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test none != "$non_pic_object"; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test clean = "$opt_mode"; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.$objext" if test yes = "$fast_install" && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name"; then func_append rmfiles " $odir/lt-$noexename.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the $objdir's in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then func_mode_uninstall ${1+"$@"} fi test -z "$opt_mode" && { help=$generic_help func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode '$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # where we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: eztrace-1.1-7/extlib/litl/PaxHeaders.7332/config.guess0000644000000000000000000000013113171135250017374 xustar0030 mtime=1508162216.637588533 29 atime=1508162271.73382187 30 ctime=1508162365.745733759 eztrace-1.1-7/extlib/litl/config.guess0000755000175000017500000012564413171135250020603 0ustar00trahaytrahay00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2016 Free Software Foundation, Inc. timestamp='2016-10-02' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || \ echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case "${UNAME_MACHINE_ARCH}" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case "${UNAME_MACHINE_ARCH}" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; *:Sortix:*:*) echo ${UNAME_MACHINE}-unknown-sortix exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; e2k:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; k1om:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; mips64el:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; riscv32:Linux:*:* | riscv64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; SX-ACE:SUPER-UX:*:*) echo sxace-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; amd64:Isilon\ OneFS:*:*) echo x86_64-unknown-onefs exit ;; esac cat >&2 </dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: eztrace-1.1-7/PaxHeaders.7332/COPYING0000644000000000000000000000013113045655477013701 xustar0030 mtime=1486314303.554725133 30 atime=1507797544.018895159 29 ctime=1508162365.47771038 eztrace-1.1-7/COPYING0000644000175000017500000000350713045655477015076 0ustar00trahaytrahay00000000000000Copyright CNRS, INRIA, Université Bordeaux 1, Télécom SudParis 2014 François Trahay Mathieu Faverge François Rue Damien Martin-Guillerez Roman Iakymchuk Matias Hastaran EZTrace is a computer program whose purpose is to analyze the performance of parallel applications. This software is governed by the CeCILL-B license under French law and abiding by the rules of distribution of free software. You can use, modify and/ or redistribute the software under the terms of the CeCILL-B license as circulated by CEA, CNRS and INRIA at the following URL "http://www.cecill.info". As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license, users are provided only with a limited warranty and the software's author, the holder of the economic rights, and the successive licensors have only limited liability. In this respect, the user's attention is drawn to the risks associated with loading, using, modifying and/or developing or reproducing the software by the user in light of its specific status of free software, that may mean that it is complicated to manipulate, and that also therefore means that it is reserved for developers and experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the software's suitability as regards their requirements in conditions enabling the security of their systems and/or data to be ensured and, more generally, to use and operate it in the same conditions as regards security. The fact that you are presently reading this means that you have had knowledge of the CeCILL-B license and that you accept its terms. eztrace-1.1-7/PaxHeaders.7332/ChangeLog0000644000000000000000000000013213045655477014421 xustar0030 mtime=1486314303.554725133 30 atime=1507797544.018895159 30 ctime=1508162365.481710728 eztrace-1.1-7/ChangeLog0000644000175000017500000000655513045655477015623 0ustar00trahaytrahay00000000000000Version 1.1 ----------- * Add a StarPU module Version 1.0 ----------- * Add support for CUDA applications * Add a script that generates an EZTrace plugin directly from an executable program * EZTrace now relies on LiTL (instead of FxT) for recording events * EZTrace can now track the CPU on which a thread run * Add a sampling interface that allows to call a function every x ms * EZTrace is now under the CeCILL-B license Version 0.9 ----------- * Add support for MPI Communicators in collective communications * Add support for non-blocking collective communications * Add options in eztrace and eztrace.old to manipulate various environment variable (EZTRACE_TRACE, EZTRACE_OUTPUT_DIR, etc.) Version 0.8 ----------- * EZTrace now relies on Opari2. Thus, OpenMP 3.0 programs can be analyzed * EZTrace provides two trace flush policies: the trace is written to disk only at the end of the program (thus, some events may be lost, but there is no overhead) or when the event buffer is full (thus, no event lost, but there's an overhead when the trace is being written to disk) * EZTrace now implements a trace synchronisation mechanism * EZTrace can now instrument functions located inside the application or in a statically-linked library(it does not require to be dynamically linked anymore) Version 0.7 ----------- * EZTrace can now use PAPI (Performance Application Programming Interface) for extracting hardware counters * Update the OpenMP module. It can now use Opari for instrumenting OpenMP program and extract precise informations * Fix the generation of OTF traces * Improve statistics on MPI messages Version 0.6 ----------- * Add a module for standard IO primitives (read, write, select, ...) * Add a module for tracking memory consumption (malloc, free, ...) * Add a source-to-source compiler (eztrace_create) for converting simple scripts into eztrace plugins * FxT and GTG (with OTF support) are now included in eztrace. Thus, you don't need to download/install them separately. Version 0.5 ----------- * EZTrace now relies on modules (plugins). * EZTrace now supports user-defined plugins. * EZTrace now works on Mac OS X. However, since mac os pthread interface is limited compared to the linux one, the pthread module is not available on macos. * The Coreblas module has been removed. It is now part of the Plasma project. * eztrace_stats is now available. Instead of merging traces, it computes statistics on the traces (number of events, average size of MPI messages, etc.) * Fix various bugs in PThread and MPI modules. Version 0.4 ----------- * EZTrace now uses GTG for converting traces. You can now generate OTF traces Version 0.3 ----------- * Add full support for MPI communication operations (for both C and Fortran bindings) * Add support for OpenMP scheduling strategies (static, dynamic, guided and runtime) * Fix various bugs in PThread, OpenMP and MPI modules Version 0.2 ----------- * Add support for Fortran MPI programs * Add support for MPI collective communications * Add support for non-blocking MPI communications Version 0.1.1 ----------- * Fix a bug regarding pthread_cond_signal and pthread_cond_broadcast Version 0.1 ----------- * This first release supports: * Threads state (blocked/working) * OpenMP parallel sections for C or Fortran programs (merely tested) * sem_post/sem_wait are shown as Events and Links in the Paje trace * Basic MPI support eztrace-1.1-7/PaxHeaders.7332/ltmain.sh0000644000000000000000000000013213171135250014445 xustar0030 mtime=1508162216.969612742 30 atime=1508162287.599107291 30 ctime=1508162365.493711775 eztrace-1.1-7/ltmain.sh0000644000175000017500000117147413171135250015653 0ustar00trahaytrahay00000000000000#! /bin/sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2014-01-03.01 # libtool (GNU libtool) 2.4.6 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . PROGRAM=libtool PACKAGE=libtool VERSION="2.4.6 Debian-2.4.6-2" package_revision=2.4.6 ## ------ ## ## Usage. ## ## ------ ## # Run './libtool --help' for help with using this script from the # command line. ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # After configure completes, it has a better idea of some of the # shell tools we need than the defaults used by the functions shared # with bootstrap, so set those here where they can still be over- # ridden by the user, but otherwise take precedence. : ${AUTOCONF="autoconf"} : ${AUTOMAKE="automake"} ## -------------------------- ## ## Source external libraries. ## ## -------------------------- ## # Much of our low-level functionality needs to be sourced from external # libraries, which are installed to $pkgauxdir. # Set a version string for this script. scriptversion=2015-01-20.17; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # Copyright (C) 2004-2015 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. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 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. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNES 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 . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some retarded systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo 'GREP' >> conftest.nl "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s|\([`"$\\]\)|\\\1|g' # Same as above, but do not quote variable references. sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' # Sed substitution that converts a w32 file name or path # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_double_quote_subst, that '$' was protected from # expansion. Since each input '\' is now two '\'s, look for any number # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath=$0 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # We should try to minimise forks, especially on Windows where they are # unreasonably slow, so skip the feature probes when bash or zsh are # being used: if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then : ${_G_HAVE_ARITH_OP="yes"} : ${_G_HAVE_XSI_OPS="yes"} # The += operator was introduced in bash 3.1 case $BASH_VERSION in [12].* | 3.0 | 3.0*) ;; *) : ${_G_HAVE_PLUSEQ_OP="yes"} ;; esac fi # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. test -z "$_G_HAVE_PLUSEQ_OP" \ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ && _G_HAVE_PLUSEQ_OP=yes if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1+=\\ \$func_quote_for_eval_result" }' else func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1=\$$1\\ \$func_quote_for_eval_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT # -------------------------------------------------------- # Perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_mkdir_p_IFS # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # func_normal_abspath PATH # ------------------------ # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` while :; do # Processed it all yet? if test / = "$func_normal_abspath_tpath"; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result"; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=$func_dirname_result if test -z "$func_relative_path_tlibdir"; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_for_eval ARG... # -------------------------- # Aesthetically quote ARGs to be evaled later. # This function returns two values: # i) func_quote_for_eval_result # double-quoted, suitable for a subsequent eval # ii) func_quote_for_eval_unquoted_result # has all characters that are still active within double # quotes backslashified. func_quote_for_eval () { $debug_cmd func_quote_for_eval_unquoted_result= func_quote_for_eval_result= while test 0 -lt $#; do case $1 in *[\\\`\"\$]*) _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; *) _G_unquoted_arg=$1 ;; esac if test -n "$func_quote_for_eval_unquoted_result"; then func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" else func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" fi case $_G_unquoted_arg in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_quoted_arg=\"$_G_unquoted_arg\" ;; *) _G_quoted_arg=$_G_unquoted_arg ;; esac if test -n "$func_quote_for_eval_result"; then func_append func_quote_for_eval_result " $_G_quoted_arg" else func_append func_quote_for_eval_result "$_G_quoted_arg" fi shift done } # func_quote_for_expand ARG # ------------------------- # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { $debug_cmd case $1 in *[\\\`\"]*) _G_arg=`$ECHO "$1" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; *) _G_arg=$1 ;; esac case $_G_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_arg=\"$_G_arg\" ;; esac func_quote_for_expand_result=$_G_arg } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_for_expand "$_G_cmd" eval "func_notquiet $func_quote_for_expand_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_for_expand "$_G_cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_tr_sh # ---------- # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: #! /bin/sh # Set a version string for this script. scriptversion=2014-01-07.03; # UTC # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # Copyright (C) 2010-2015 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. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# warranty; '. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # to the main code. A hook is just a named list of of function, that can # be run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of functions called by FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It is assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook funcions.n" ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do eval $_G_hook '"$@"' # store returned options list back into positional # parameters for next 'cmd' execution. eval _G_hook_result=\$${_G_hook}_result eval set dummy "$_G_hook_result"; shift done func_quote_for_eval ${1+"$@"} func_run_hooks_result=$func_quote_for_eval_result } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list in your hook function, remove any # options that you action, and then pass back the remaining unprocessed # options in '_result', escaped suitably for # 'eval'. Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # func_quote_for_eval ${1+"$@"} # my_options_prep_result=$func_quote_for_eval_result # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # # Note that for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # ;; # *) set dummy "$_G_opt" "$*"; shift; break ;; # esac # done # # func_quote_for_eval ${1+"$@"} # my_silent_option_result=$func_quote_for_eval_result # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # # func_quote_for_eval ${1+"$@"} # my_option_validation_result=$func_quote_for_eval_result # } # func_add_hook func_validate_options my_option_validation # # You'll alse need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd func_options_prep ${1+"$@"} eval func_parse_options \ ${func_options_prep_result+"$func_options_prep_result"} eval func_validate_options \ ${func_parse_options_result+"$func_parse_options_result"} eval func_run_hooks func_options \ ${func_validate_options_result+"$func_validate_options_result"} # save modified positional parameters for caller func_options_result=$func_run_hooks_result } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propogate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before # returning. func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= func_run_hooks func_options_prep ${1+"$@"} # save modified positional parameters for caller func_options_prep_result=$func_run_hooks_result } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd func_parse_options_result= # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. func_run_hooks func_parse_options ${1+"$@"} # Adjust func_parse_options positional parameters to match eval set dummy "$func_run_hooks_result"; shift # Break out of the loop if we already parsed every option. test $# -gt 0 || break _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) test $# = 0 && func_missing_arg $_G_opt && break case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} func_parse_options_result=$func_quote_for_eval_result } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" func_run_hooks func_validate_options ${1+"$@"} # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE # save modified positional parameters for caller func_validate_options_result=$func_run_hooks_result } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables after # splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} test "x$func_split_equals_lhs" = "x$1" \ && func_split_equals_rhs= }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # func_split_short_opt SHORTOPT # ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /(C)/!b go :more /\./!{ N s|\n# | | b more } :go /^# Written by /,/# warranty; / { s|^# || s|^# *$|| s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| p } /^# Written by / { s|^# || p } /^warranty; /q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. scriptversion='(GNU libtool) 2.4.6' # func_echo ARG... # ---------------- # Libtool also displays the current mode in messages, so override # funclib.sh func_echo with this custom definition. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" done IFS=$func_echo_IFS } # func_warning ARG... # ------------------- # Libtool warnings are not categorized, so override funclib.sh # func_warning with this simpler definition. func_warning () { $debug_cmd $warning_func ${1+"$@"} } ## ---------------- ## ## Options parsing. ## ## ---------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --mode=MODE use operation mode MODE --no-warnings equivalent to '-Wnone' --preserve-dup-deps don't remove duplicate dependency libraries --quiet, --silent don't print informational messages --tag=TAG use configuration variables from tag TAG -v, --verbose print more informational messages than default --version print version information -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. When passed as first option, '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. Try '$progname --help --mode=MODE' for a more detailed description of MODE. When reporting a bug, please describe a test case to reproduce it and include the following information: host-triplet: $host shell: $SHELL compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) version: $progname $scriptversion Debian-2.4.6-2 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . GNU libtool home page: . General help using GNU software: ." exit 0 } # func_lo2o OBJECT-NAME # --------------------- # Transform OBJECT-NAME from a '.lo' suffix to the platform specific # object suffix. lo2o=s/\\.lo\$/.$objext/ o2lo=s/\\.$objext\$/.lo/ if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_lo2o () { case $1 in *.lo) func_lo2o_result=${1%.lo}.$objext ;; * ) func_lo2o_result=$1 ;; esac }' # func_xform LIBOBJ-OR-SOURCE # --------------------------- # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) # suffix to a '.lo' libtool-object suffix. eval 'func_xform () { func_xform_result=${1%.*}.lo }' else # ...otherwise fall back to using sed. func_lo2o () { func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` } func_xform () { func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` } fi # func_fatal_configuration ARG... # ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func__fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } # func_config # ----------- # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # ------------- # Display the features supported by this script. func_features () { echo "host: $host" if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag TAGNAME # ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname=$1 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf=/$re_begincf/,/$re_endcf/p # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # libtool_options_prep [ARG]... # ----------------------------- # Preparation for options parsed by libtool. libtool_options_prep () { $debug_mode # Option defaults: opt_config=false opt_dlopen= opt_dry_run=false opt_help=false opt_mode= opt_preserve_dup_deps=false opt_quiet=false nonopt= preserve_args= # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Pass back the list of options. func_quote_for_eval ${1+"$@"} libtool_options_prep_result=$func_quote_for_eval_result } func_add_hook func_options_prep libtool_options_prep # libtool_parse_options [ARG]... # --------------------------------- # Provide handling for libtool specific options. libtool_parse_options () { $debug_cmd # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) func_config ;; --dlopen|-dlopen) opt_dlopen="${opt_dlopen+$opt_dlopen }$1" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) func_features ;; --finish) set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $_G_opt && break opt_mode=$1 case $1 in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $_G_opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" ;; --no-warnings|--no-warning|--no-warn) opt_warning=false func_append preserve_args " $_G_opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $_G_opt" ;; --silent|--quiet) opt_quiet=: opt_verbose=false func_append preserve_args " $_G_opt" ;; --tag) test $# = 0 && func_missing_arg $_G_opt && break opt_tag=$1 func_append preserve_args " $_G_opt $1" func_enable_tag "$1" shift ;; --verbose|-v) opt_quiet=false opt_verbose=: func_append preserve_args " $_G_opt" ;; # An option not handled by this hook function: *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} libtool_parse_options_result=$func_quote_for_eval_result } func_add_hook func_parse_options libtool_parse_options # libtool_validate_options [ARG]... # --------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. libtool_validate_options () { # save first non-option argument if test 0 -lt $#; then nonopt=$1 shift fi # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" case $host in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match test yes != "$build_libtool_libs" \ && test yes != "$build_old_libs" \ && func_fatal_configuration "not configured to build any kind of library" # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test execute != "$opt_mode"; then func_error "unrecognized option '-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help=$help help="Try '$progname --help --mode=$opt_mode' for more information." } # Pass back the unparsed argument list func_quote_for_eval ${1+"$@"} libtool_validate_options_result=$func_quote_for_eval_result } func_add_hook func_validate_options libtool_validate_options # Process options as early as possible so that --help and --version # can return quickly. func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## ----------- ## ## Main. ## ## ----------- ## magic='%%%MAGIC variable%%%' magic_exe='%%%MAGIC EXE variable%%%' # Global variables. extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # func_generated_by_libtool # True iff stdin has been generated by Libtool. This function is only # a basic sanity check; it will hardly flush out determined imposters. func_generated_by_libtool_p () { $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test yes = "$lalib_p" } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { test -f "$1" && $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $debug_cmd save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # 'FILE.' does not work on cygwin managed mounts. func_source () { $debug_cmd case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $debug_cmd if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=$1 if test yes = "$build_libtool_libs"; then write_lobj=\'$2\' else write_lobj=none fi if test yes = "$build_old_libs"; then write_oldobj=\'$3\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $debug_cmd # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $debug_cmd if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $debug_cmd # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $debug_cmd if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result=$1 fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $debug_cmd if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result=$3 fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $debug_cmd case $4 in $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $debug_cmd $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $debug_cmd case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result=$1 } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $debug_cmd if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd=func_convert_path_$func_stripname_result fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $debug_cmd func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result=$1 } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_dll_def_p FILE # True iff FILE is a Windows DLL '.def' file. # Keep in sync with _LT_DLL_DEF_P in libtool.m4 func_dll_def_p () { $debug_cmd func_dll_def_p_tmp=`$SED -n \ -e 's/^[ ]*//' \ -e '/^\(;.*\)*$/d' \ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ -e q \ "$1"` test DEF = "$func_dll_def_p_tmp" } # func_mode_compile arg... func_mode_compile () { $debug_cmd # Get the compilation command and the source file. base_compile= srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg=$arg arg_mode=normal ;; target ) libobj=$arg arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs=$IFS; IFS=, for arg in $args; do IFS=$save_ifs func_append_quoted lastarg "$arg" done IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg=$srcfile srcfile=$arg ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj=$func_basename_result } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test yes = "$build_libtool_libs" \ || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname=$func_basename_result xdir=$func_dirname_result lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test no = "$compiler_c_o"; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext lockfile=$output_obj.lock else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test yes = "$build_old_libs"; then if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix '.c' with the library object suffix, '.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the '--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE use a list of object files found in FILE to specify objects -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with '-') are ignored. Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in '.la', then a libtool library is created, only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created using 'ar' and 'ranlib', or on Windows using 'lib'. If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test : = "$opt_help"; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | $SED '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $debug_cmd # The first argument is the command name. cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "'$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir=$func_dirname_result ;; *) func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file=$progdir/$program fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if $opt_dry_run; then # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd=\$cmd$args fi } test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $debug_cmd libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "'$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument '$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $debug_cmd # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=false stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=: if $isdir; then destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." destdir=$func_dirname_result destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking '$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname=$1 shift srcname=$realname test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme=$stripme case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= ;; esac ;; os2*) case $realname in *_dll.a) tstripme= ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name=$func_basename_result instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest=$destfile destfile= ;; *) func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=.exe fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script '$wrapper'" finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then func_warning "'$lib' has not been installed in '$libdir'" finalize=false fi done relink_command= func_source "$wrapper" outputname= if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file=$func_basename_result outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file=$outputname else func_warning "cannot relink '$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name=$func_basename_result # Set up the ranlib parameters. oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $debug_cmd my_outputname=$1 my_originator=$2 my_pic_p=${3-false} my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* External symbol declarations for the compiler. */\ " if test yes = "$dlself"; then func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" name=$func_basename_result case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi func_show_eval '$RM "${nlist}I"' if test -n "$global_symbol_to_import"; then eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[];\ " if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ static void lt_syminit(void) { LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; for (; symbol->name; ++symbol) {" $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" echo >> "$output_objdir/$my_dlsyms" "\ } }" fi echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = { {\"$my_originator\", (void *) 0}," if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ {\"@INIT@\", (void *) <_syminit}," fi case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $debug_cmd win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || func_cygming_gnu_implib_p "$1" then win32_nmres=import else win32_nmres= fi ;; *) func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s|.*|import| p q } }'` ;; esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $debug_cmd sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $debug_cmd match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive that possess that section. Heuristic: eliminate # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $debug_cmd if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result= fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $debug_cmd f_ex_an_ar_dir=$1; shift f_ex_an_ar_oldlib=$1 if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $debug_cmd my_gentop=$1; shift my_oldlibs=${1+"$@"} my_oldobjs= my_xlib= my_xabs= my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` func_basename "$darwin_archive" darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches; do func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" cd "unfat-$$/$darwin_base_archive-$darwin_arch" func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result=$my_oldobjs } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ #if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC #elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined other platforms ... */ #endif #if defined PATH_MAX # define LT_PATHMAX PATH_MAX #elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free (stale); stale = 0; } \ } while (0) #if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; size_t tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined HAVE_DOS_BASED_FILE_SYSTEM if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined HAVE_DOS_BASED_FILE_SYSTEM } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = (size_t) (q - p); p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (STREQ (str, pat)) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else size_t len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { size_t orig_value_len = strlen (orig_value); size_t add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ size_t len = strlen (new_value); while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $debug_cmd case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_suncc_cstd_abi # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! # Several compiler flags select an ABI that is incompatible with the # Cstd library. Avoid specifying it if any are in CXXFLAGS. func_suncc_cstd_abi () { $debug_cmd case " $compile_command " in *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) suncc_use_cstd_abi=no ;; *) suncc_use_cstd_abi=yes ;; esac } # func_mode_link arg... func_mode_link () { $debug_cmd case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=false prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test yes != "$build_libtool_libs" \ && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg=$1 shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir=$arg prev= continue ;; dlfiles|dlprefiles) $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=: } case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test no = "$dlself"; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test dlprefiles = "$prev"; then dlself=yes elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols=$arg test -f "$arg" \ || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex=$arg prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir=$arg prev= continue ;; mllvm) # Clang does not use LLVM to link, so we can simply discard any # '-mllvm $arg' options when doing the link step. prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object fi # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; os2dllname) os2dllname=$arg prev= continue ;; precious_regex) precious_files_regex=$arg prev= continue ;; release) release=-$arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds=$arg prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg=$arg case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between '-L' and '$1'" else func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of '$dir'" dir=$absdir ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test X-lc = "X$arg" && continue ;; esac elif test X-lc_r = "X$arg"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -mllvm) prev=mllvm continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module=$wl-multi_module continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "'-no-install' is ignored for $host" func_warning "assuming '-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -os2dllname) prev=os2dllname continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization # -specs=* GCC specs files # -stdlib=* select c++ std lib with clang # -fsanitize=* Clang/GCC memory and address sanitizer -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ -specs=*|-fsanitize=*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; -Z*) if test os2 = "`expr $host : '.*\(os2\)'`"; then # OS/2 uses -Zxxx to specify OS/2-specific options compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case $arg in -Zlinker | -Zstack) prev=xcompiler ;; esac continue else # Otherwise treat like 'Some other compiler flag' below func_quote_for_eval "$arg" arg=$func_quote_for_eval_result fi ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result test none = "$pic_object" || { # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object } # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test dlfiles = "$prev"; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test dlprefiles = "$prev"; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the '$prevarg' option requires an argument" if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname=$func_basename_result libobjs_save=$libobjs if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" # Definition is injected by LT_CONFIG during libtool generation. func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" func_dirname "$output" "/" "" output_objdir=$func_dirname_result$objdir func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test lib = "$linkmode"; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=false newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test lib,link = "$linkmode,$pass"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs=$tmp_deplibs fi if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass"; then libs=$deplibs deplibs= fi if test prog = "$linkmode"; then case $pass in dlopen) libs=$dlfiles ;; dlpreopen) libs=$dlprefiles ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test lib,dlpreopen = "$linkmode,$pass"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs=$dlprefiles fi if test dlopen = "$pass"; then # Collect dlpreopened libraries save_deplibs=$deplibs deplibs= fi for deplib in $libs; do lib= found=false case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test lib != "$linkmode" && test prog != "$linkmode"; then func_warning "'-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test lib = "$linkmode"; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib=$searchdir/lib$name$search_ext if test -f "$lib"; then if test .la = "$search_ext"; then found=: else found=false fi break 2 fi done done if $found; then # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll=$l done if test "X$ll" = "X$old_library"; then # only static version available found=false func_dirname "$lib" "" "." ladir=$func_dirname_result lib=$ladir/$old_library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi else # deplib doesn't seem to be a libtool library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l *.ltframework) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test conv = "$pass" && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi if test scan = "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "'-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test link = "$pass"; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=false case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=: fi ;; pass_all) valid_a_lib=: ;; esac if $valid_a_lib; then echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" else echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." fi ;; esac continue ;; prog) if test link != "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test conv = "$pass"; then deplibs="$deplib $deplibs" elif test prog = "$linkmode"; then if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=: continue ;; esac # case $deplib $found || test -f "$lib" \ || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "'$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir=$func_dirname_result dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass" || { test prog != "$linkmode" && test lib != "$linkmode"; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test conv = "$pass"; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for '$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done elif test prog != "$linkmode" && test lib != "$linkmode"; then func_fatal_error "'$lib' is not a convenience library" fi continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test yes = "$prefer_static_libs" || test built,no = "$prefer_static_libs,$installed"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib=$l done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for '$lib'" fi # This library was specified with -dlopen. if test dlopen = "$pass"; then test -z "$libdir" \ && func_fatal_error "cannot -dlopen a convenience library: '$lib'" if test -z "$dlname" || test yes != "$dlopen_support" || test no = "$build_libtool_libs" then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of '$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir=$ladir fi ;; esac func_basename "$lib" laname=$func_basename_result # Find the relevant object directory and library name. if test yes = "$installed"; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library '$lib' was moved." dir=$ladir absdir=$abs_ladir libdir=$abs_ladir else dir=$lt_sysroot$libdir absdir=$lt_sysroot$libdir fi test yes = "$hardcode_automatic" && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir=$ladir absdir=$abs_ladir # Remove this search path later func_append notinst_path " $abs_ladir" else dir=$ladir/$objdir absdir=$abs_ladir/$objdir # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test dlpreopen = "$pass"; then if test -z "$libdir" && test prog = "$linkmode"; then func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" fi case $host in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test lib = "$linkmode"; then deplibs="$dir/$old_library $deplibs" elif test prog,link = "$linkmode,$pass"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test prog = "$linkmode" && test link != "$pass"; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=false if test no != "$link_all_deplibs" || test -z "$library_names" || test no = "$build_libtool_libs"; then linkalldeplibs=: fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if $linkalldeplibs; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test prog,link = "$linkmode,$pass"; then if test -n "$library_names" && { { test no = "$prefer_static_libs" || test built,yes = "$prefer_static_libs,$installed"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then # Make sure the rpath contains only unique directories. case $temp_rpath: in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if $alldeplibs && { test pass_all = "$deplibs_check_method" || { test yes = "$build_libtool_libs" && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test built = "$use_static_libs" && test yes = "$installed"; then use_static_libs=no fi if test -n "$library_names" && { test no = "$use_static_libs" || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc* | *os2*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test no = "$installed"; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule= for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule=$dlpremoduletest break fi done if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then echo if test prog = "$linkmode"; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test lib = "$linkmode" && test yes = "$hardcode_into_libs"; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname=$1 shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname=$dlname elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc* | *os2*) func_arith $current - $age major=$func_arith_result versuffix=-$major ;; esac eval soname=\"$soname_spec\" else soname=$realname fi # Make a new name for the extract_expsyms_cmds to use soroot=$soname func_basename "$soroot" soname=$func_basename_result func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from '$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for '$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test prog = "$linkmode" || test relink != "$opt_mode"; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test no = "$hardcode_direct"; then add=$dir/$linklib case $host in *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; *-*-sysv4*uw2*) add_dir=-L$dir ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir=-L$dir ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we cannot # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library"; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add=$dir/$old_library fi elif test -n "$old_library"; then add=$dir/$old_library fi fi esac elif test no = "$hardcode_minus_L"; then case $host in *-*-sunos*) add_shlibpath=$dir ;; esac add_dir=-L$dir add=-l$name elif test no = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; relink) if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$dir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$absdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name elif test yes = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; *) lib_linked=no ;; esac if test yes != "$lib_linked"; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test prog = "$linkmode"; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test yes != "$hardcode_direct" && test yes != "$hardcode_minus_L" && test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test prog = "$linkmode" || test relink = "$opt_mode"; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$libdir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$libdir add=-l$name elif test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add=-l$name elif test yes = "$hardcode_automatic"; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib"; then add=$inst_prefix_dir$libdir/$linklib else add=$libdir/$linklib fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir=-L$libdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name fi if test prog = "$linkmode"; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test prog = "$linkmode"; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test unsupported != "$hardcode_direct"; then test -n "$old_library" && linklib=$old_library compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test yes = "$build_libtool_libs"; then # Not a shared library if test pass_all != "$deplibs_check_method"; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system cannot link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test yes = "$module"; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test lib = "$linkmode"; then if test -n "$dependency_libs" && { test yes != "$hardcode_into_libs" || test yes = "$build_old_libs" || test yes = "$link_static"; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs=$temp_deplibs fi func_append newlib_search_path " $absdir" # Link against this library test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test no != "$link_all_deplibs"; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path=$deplib ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of '$dir'" absdir=$dir fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names"; then for tmp in $deplibrary_names; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl"; then depdepl=$absdir/$objdir/$depdepl darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" path= fi fi ;; *) path=-L$absdir/$objdir ;; esac else eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "'$deplib' seems to be moved" path=-L$absdir fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test link = "$pass"; then if test prog = "$linkmode"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs=$newdependency_libs if test dlpreopen = "$pass"; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test dlopen != "$pass"; then test conv = "$pass" || { # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= } if test prog,link = "$linkmode,$pass"; then vars="compile_deplibs finalize_deplibs" else vars=deplibs fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Add Sun CC postdeps if required: test CXX = "$tagname" && { case $host_os in linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; solaris*) func_cc_basename "$CC" case $func_cc_basename_result in CC* | sunCC*) func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; esac } # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i= ;; esac if test -n "$i"; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test prog = "$linkmode"; then dlfiles=$newdlfiles fi if test prog = "$linkmode" || test lib = "$linkmode"; then dlprefiles=$newdlprefiles fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "'-R' is ignored for archives" test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "'-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "'-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs=$output func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form 'libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test no = "$module" \ && func_fatal_help "libtool library '$output' must begin with 'lib'" if test no != "$need_lib_prefix"; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test pass_all != "$deplibs_check_method"; then func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test no = "$dlself" \ || func_warning "'-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test 1 -lt "$#" \ && func_warning "ignoring multiple '-rpath's for a libtool library" install_libdir=$1 oldlibs= if test -z "$rpath"; then if test yes = "$build_libtool_libs"; then # Building a libtool convenience library. # Some compilers have problems with a '.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "'-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs=$IFS; IFS=: set dummy $vinfo 0 0 0 shift IFS=$save_ifs test -n "$7" && \ func_fatal_help "too many parameters to '-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major=$1 number_minor=$2 number_revision=$3 # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # that has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|freebsd-elf|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_revision ;; freebsd-aout|qnx|sunos) current=$number_major revision=$number_minor age=0 ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_minor lt_irix_increment=no ;; *) func_fatal_configuration "$modename: unknown library version type '$version_type'" ;; esac ;; no) current=$1 revision=$2 age=$3 ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT '$current' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION '$revision' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE '$age' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE '$age' is greater than the current interface number '$current'" func_fatal_error "'$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" # On Darwin other compilers case $CC in nagfor*) verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" ;; *) verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; esac ;; freebsd-aout) major=.$current versuffix=.$current.$revision ;; freebsd-elf) func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; irix | nonstopux) if test no = "$lt_irix_increment"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring=$verstring_prefix$major.$revision # Add in all the interfaces that we are compatible with. loop=$revision while test 0 -ne "$loop"; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring_prefix$major.$iface:$verstring done # Before this point, $major must not contain '.'. major=.$major versuffix=$major.$revision ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=.$current.$age.$revision verstring=$current.$age.$revision # Add in all the interfaces that we are compatible with. loop=$age while test 0 -ne "$loop"; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring:$iface.0 done # Make executables depend on our current version. func_append verstring ":$current.0" ;; qnx) major=.$current versuffix=.$current ;; sco) major=.$current versuffix=.$current ;; sunos) major=.$current versuffix=.$current.$revision ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 file systems. func_arith $current - $age major=$func_arith_result versuffix=-$major ;; *) func_fatal_configuration "unknown library version type '$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring=0.0 ;; esac if test no = "$need_version"; then versuffix= else versuffix=.0.0 fi fi # Remove version info from name if versioning should be avoided if test yes,no = "$avoid_version,$need_version"; then major= versuffix= verstring= fi # Check to see if the archive will have undefined symbols. if test yes = "$allow_undefined"; then if test unsupported = "$allow_undefined_flag"; then if test yes = "$build_old_libs"; then func_warning "undefined symbols not allowed in $host shared libraries; building static only" build_libtool_libs=no else func_fatal_error "can't build $host shared library unless -no-undefined is specified" fi fi else # Don't allow undefined symbols. allow_undefined_flag=$no_undefined_flag fi fi func_generate_dlsyms "$libname" "$libname" : func_append libobjs " $symfileobj" test " " = "$libobjs" && libobjs= if test relink != "$opt_mode"; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) if test -n "$precious_files_regex"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles=$dlfiles dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles=$dlprefiles dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test yes = "$build_libtool_libs"; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test yes = "$build_libtool_need_lc"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release= versuffix= major= newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib=$potent_lib while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | $SED 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib= ;; esac fi if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib=$potent_lib # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs= tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test yes = "$allow_libtool_libs_with_static_runtimes"; then for i in $predeps $postdeps; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test none = "$deplibs_check_method"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test yes = "$droppeddeps"; then if test yes = "$module"; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test no = "$allow_undefined"; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs=$new_libs # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test yes = "$build_libtool_libs"; then # Remove $wl instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test yes = "$hardcode_into_libs"; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath=$finalize_rpath test relink = "$opt_mode" || rpath=$compile_rpath$rpath for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath=$finalize_shlibpath test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname=$1 shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname=$realname fi if test -z "$dlname"; then dlname=$soname fi lib=$output_objdir/$realname linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols=$output_objdir/$libname.uexp func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile func_dll_def_p "$export_symbols" || { # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols=$export_symbols export_symbols= always_export_symbols=yes } fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs=$IFS; IFS='~' for cmd1 in $cmds; do IFS=$save_ifs # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test yes = "$try_normal_branch" \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=$output_objdir/$output_la.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS=$save_ifs if test -n "$export_symbols_regex" && test : != "$skipped_export"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test : != "$skipped_export" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs=$tmp_deplibs if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test yes = "$compiler_needs_object" && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test : != "$skipped_export" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then output=$output_objdir/$output_la.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then output=$output_objdir/$output_la.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test yes = "$compiler_needs_object"; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-$k.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test -z "$objlist" || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test 1 -eq "$k"; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-$k.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-$k.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi ${skipped_export-false} && { func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi } test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs=$IFS; IFS='~' for cmd in $concat_cmds; do IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi ${skipped_export-false} && { if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi } libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs=$IFS; IFS='~' for cmd in $cmds; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs # Restore the uninstalled library and exit if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test yes = "$module" || test yes = "$export_dynamic"; then # On all known operating systems, these are identical. dlname=$soname fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "'-R' is ignored for objects" test -n "$vinfo" && \ func_warning "'-version-info' is ignored for objects" test -n "$release" && \ func_warning "'-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object '$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj=$output ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # if reload_cmds runs $LD directly, get rid of -Wl from # whole_archive_flag_spec and hope we can get by with turning comma # into space. case $reload_cmds in *\$LD[\ \$]*) wl= ;; esac if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags else gentop=$output_objdir/${obj}x func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test yes = "$build_libtool_libs" || libobjs=$non_pic_objects # Create the old-style object. reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs output=$obj func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi test yes = "$build_libtool_libs" || { if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS } if test -n "$pic_flag" || test default != "$pic_mode"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output=$libobj func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "'-version-info' is ignored for programs" test -n "$release" && \ func_warning "'-release' is ignored for programs" $preload \ && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test CXX = "$tagname"; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " $wl-bind_at_load" func_append finalize_command " $wl-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs=$new_libs func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath=$rpath rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath=$rpath if test -n "$libobjs" && test yes = "$build_old_libs"; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" false # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=: case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=false ;; *cygwin* | *mingw* ) test yes = "$build_libtool_libs" || wrappers_required=false ;; *) if test no = "$need_relink" || test yes != "$build_libtool_libs"; then wrappers_required=false fi ;; esac $wrappers_required || { # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command=$compile_command$compile_rpath # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.$objext"; then func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' fi exit $exit_status } if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test yes = "$no_install"; then # We don't need to create a wrapper script. link_command=$compile_var$compile_command$compile_rpath # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi case $hardcode_action,$fast_install in relink,*) # Fast installation is not supported link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath func_warning "this platform does not like uninstalled shared libraries" func_warning "'$output' will be relinked during installation" ;; *,yes) link_command=$finalize_var$compile_command$finalize_rpath relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` ;; *,no) link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath ;; *,needless) link_command=$finalize_var$compile_command$finalize_rpath relink_command= ;; esac # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource=$output_path/$objdir/lt-$output_name.c cwrapper=$output_path/$output_name.exe $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host"; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do case $build_libtool_libs in convenience) oldobjs="$libobjs_save $symfileobj" addlibs=$convenience build_libtool_libs=no ;; module) oldobjs=$libobjs_save addlibs=$old_convenience build_libtool_libs=no ;; *) oldobjs="$old_deplibs $non_pic_objects" $preload && test -f "$symfileobj" \ && func_append oldobjs " $symfileobj" addlibs=$old_convenience ;; esac if test -n "$addlibs"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase=$func_basename_result case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj"; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test -z "$oldobjs"; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test yes = "$build_old_libs" && old_library=$libname.$libext func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test yes = "$hardcode_automatic"; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test yes = "$installed"; then if test -z "$install_libdir"; then break fi output=$output_objdir/${outputname}i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name=$func_basename_result func_resolve_sysroot "$deplib" eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs=$newdependency_libs newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles=$newdlprefiles else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles=$newdlprefiles fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test -n "$bindir"; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result/$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that cannot go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test no,yes = "$installed,$need_relink"; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } if test link = "$opt_mode" || test relink = "$opt_mode"; then func_mode_link ${1+"$@"} fi # func_mode_uninstall arg... func_mode_uninstall () { $debug_cmd RM=$nonopt files= rmforce=false exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic for arg do case $arg in -f) func_append RM " $arg"; rmforce=: ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir=$func_dirname_result if test . = "$dir"; then odir=$objdir else odir=$dir/$objdir fi func_basename "$file" name=$func_basename_result test uninstall = "$opt_mode" && odir=$dir # Remember odir for removal later, being careful to avoid duplicates if test clean = "$opt_mode"; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif $rmforce; then continue fi rmfiles=$file case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case $opt_mode in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test none != "$pic_object"; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test none != "$non_pic_object"; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test clean = "$opt_mode"; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.$objext" if test yes = "$fast_install" && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name"; then func_append rmfiles " $odir/lt-$noexename.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the $objdir's in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then func_mode_uninstall ${1+"$@"} fi test -z "$opt_mode" && { help=$generic_help func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode '$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # where we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: eztrace-1.1-7/PaxHeaders.7332/config.guess0000644000000000000000000000013113171135253015144 xustar0029 mtime=1508162219.59780514 30 atime=1508162267.717500557 30 ctime=1508162365.489711426 eztrace-1.1-7/config.guess0000755000175000017500000012564413171135253016353 0ustar00trahaytrahay00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2016 Free Software Foundation, Inc. timestamp='2016-10-02' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || \ echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case "${UNAME_MACHINE_ARCH}" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case "${UNAME_MACHINE_ARCH}" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; *:Sortix:*:*) echo ${UNAME_MACHINE}-unknown-sortix exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; e2k:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; k1om:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; mips64el:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; riscv32:Linux:*:* | riscv64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; SX-ACE:SUPER-UX:*:*) echo sxace-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; amd64:Isilon\ OneFS:*:*) echo x86_64-unknown-onefs exit ;; esac cat >&2 </dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: